Changeset 961 for trunk


Ignore:
Timestamp:
Mar 24, 2008, 1:04:03 PM (17 years ago)
Author:
gah
Message:

added type checking to dx objects

Location:
trunk/vizservers/nanovis
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/vizservers/nanovis/RpDX.cpp

    r956 r961  
    1818#include <stdio.h>
    1919#include <stdlib.h>
     20#include <float.h>
    2021
    2122using namespace Rappture;
    2223
    2324DX::DX(const char* filename) :
    24     _dataMin(1e21),
    25     _dataMax(1e-21),
    26     _nzero_min(1e21),
     25    _dataMin(FLT_MAX),
     26    _dataMax(-FLT_MAX),
     27    _nzero_min(FLT_MAX),
    2728    _numAxis(0),
    2829    _axisLen(NULL),
     
    6566
    6667    fprintf(stdout, "_n = %d\n",_n);
     68    if (type != 7) {
     69        fprintf(stderr, "WARNING: positions is not type float (type=%d)\n"
     70                type);
     71        fflush(stderr);
     72    }
    6773    fprintf(stdout, "_rank = %d\n",_rank);
    6874    fprintf(stdout, "_shape = %d\n",_shape);
     
    138144
    139145    // grab the data array from the dx object and store it in _data
    140     float *data = NULL;
    141146    dxdata = (Array) DXGetComponentValue((Field) _dxobj, (char *)"data");
    142     data = (float*) DXGetArrayData(dxdata);
     147    DXGetArrayInfo(dxdata, NULL, &type, NULL, NULL, NULL);
    143148    _data = new float[_n];
    144149    if (_data == NULL) {
     
    147152        fflush(stdout);
    148153    }
    149     memcpy(_data,data,sizeof(float)*_n);
     154
     155    switch (type) {
     156    case TYPE_FLOAT:
     157        float *float_data;
     158
     159        float_data = (float*) DXGetArrayData(dxdata);
     160        memcpy(_data, float_data, sizeof(float)*_n);
     161        break;
     162    case TYPE_DOUBLE:
     163        double *double_data;
     164        double_data = (double*) DXGetArrayData(dxdata);
     165        for (i = 0; i < _n; i++) {
     166            fprintf(stderr, "data[%d]=%g\n", i, double_data[i]);
     167            _data[i] = double_data[i];
     168        }
     169    default:
     170        fprintf(stdout, "don't know how to handle data of type %d\n", type);
     171        fflush(stdout);
     172    }
    150173
    151174    // print debug info
    152     for (int lcv = 0, pt = 0; lcv < _n; lcv+=3,pt+=9) {
     175    for (int lcv = 0, pt = 0; lcv < _n; lcv +=3, pt+=9) {
    153176        fprintf(stdout,
    154177            "(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n(%f,%f,%f)|->% 8e\n",
     
    158181        fflush(stdout);
    159182    }
    160 
    161183    __collectDataStats();
    162 
    163184}
    164185
     
    195216DX::__collectDataStats()
    196217{
    197     _dataMin = 1e21;
    198     _dataMax = 1e-21;
    199     _nzero_min = 1e21;
     218    _dataMin = FLT_MAX;
     219    _dataMax = -FLT_MAX;
     220    _nzero_min = FLT_MAX;
    200221
    201222    // populate _dataMin, _dataMax, _nzero_min
    202     for (int lcv = 0; lcv < _n; lcv=lcv+3) {
     223    for (int lcv = 0; lcv < _n; lcv++) {
    203224        if (_data[lcv] < _dataMin) {
    204225            _dataMin = _data[lcv];
     
    207228            _dataMax = _data[lcv];
    208229        }
    209         if ((_data[lcv] != 0) && (_data[lcv] < _nzero_min)) {
     230        if ((_data[lcv] > 0.0f) && (_data[lcv] < _nzero_min)) {
    210231            _nzero_min = _data[lcv];
    211232        }
     233    }
     234    if (_nzero_min == FLT_MAX) {
     235        fprintf(stderr, "could not find a positive minimum value\n");
     236        fflush(stderr);
    212237    }
    213238}
  • trunk/vizservers/nanovis/dxReader.cpp

    r959 r961  
    199199        volPtr->yAxis.SetRange(y0, y0 + (ny * dy));
    200200        volPtr->zAxis.SetRange(z0, z0 + (nz * dz));
    201         volPtr->wAxis.SetRange(y0, y0 + (ny * dy));
     201        volPtr->wAxis.SetRange(vmin, vmax);
    202202        volPtr->update_pending = true;
    203203        delete [] data;
     
    416416            volPtr->yAxis.SetRange(y0, y0 + (ny * dy));
    417417            volPtr->zAxis.SetRange(z0, z0 + (nz * dz));
    418             volPtr->wAxis.SetRange(z0, z0 + (nz * dz));
     418            volPtr->wAxis.SetRange(vmin, vmax);
    419419            volPtr->update_pending = true;
    420420            delete [] data;
     
    560560            volPtr->zAxis.SetRange(field.rangeMin(Rappture::zaxis),
    561561                   field.rangeMax(Rappture::zaxis));
    562             volPtr->wAxis.SetRange(field.rangeMin(Rappture::zaxis),
    563                    field.rangeMax(Rappture::zaxis));
     562            volPtr->wAxis.SetRange(field.valueMin(), field.valueMax());
    564563            volPtr->update_pending = true;
    565564            delete [] data;
     
    801800            volPtr->zAxis.SetRange(field.rangeMin(Rappture::zaxis),
    802801                   field.rangeMax(Rappture::zaxis));
    803             volPtr->wAxis.SetRange(field.rangeMin(Rappture::zaxis),
    804                    field.rangeMax(Rappture::zaxis));
     802            volPtr->wAxis.SetRange(field.valueMin(), field.valueMax());
    805803            volPtr->update_pending = true;
    806804            // TBD..
     
    950948            volPtr->zAxis.SetRange(field.rangeMin(Rappture::zaxis),
    951949                   field.rangeMax(Rappture::zaxis));
    952             volPtr->wAxis.SetRange(field.rangeMin(Rappture::zaxis),
    953                    field.rangeMax(Rappture::zaxis));
     950            volPtr->wAxis.SetRange(field.valueMin(), field.valueMax());
    954951            volPtr->update_pending = true;
    955952            // TBD..
  • trunk/vizservers/nanovis/dxReader2.cpp

    r959 r961  
    9595    volPtr->yAxis.SetRange(origin[1], max[1]);
    9696    volPtr->zAxis.SetRange(origin[2], max[2]);
    97     volPtr->wAxis.SetRange(origin[2], max[2]);
     97    volPtr->wAxis.SetRange(dxObj.dataMin(), dxObj.dataMax());
    9898    volPtr->update_pending = true;
    9999
    100     delete [] data;
     100    delete [] data; 
    101101
    102102    //
Note: See TracChangeset for help on using the changeset viewer.