diff options
Diffstat (limited to 'src/AMRPlus/AMRgridreaderPlus.C')
-rw-r--r-- | src/AMRPlus/AMRgridreaderPlus.C | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/src/AMRPlus/AMRgridreaderPlus.C b/src/AMRPlus/AMRgridreaderPlus.C index de131d3..f2e6437 100644 --- a/src/AMRPlus/AMRgridreaderPlus.C +++ b/src/AMRPlus/AMRgridreaderPlus.C @@ -69,9 +69,41 @@ AMRgridPlus *AMRgridreaderPlus::getGridInfo(AMRgridPlus &g,int index){ g.scalarmin=range[0]; g.scalarmax=range[1]; } else { - cout<<"Please convert this file with AMRPlusConv"<<endl; - exit(0); - } + g.data=malloc(g.nbytes); + file.read(g.data); + double range[2]; + + switch (dt){ + case IObase::Float32:{ + long nscal=g.nbytes/sizeof(float); + float *scalars=(float *)g.data; + + range[0]=range[1]=scalars[0]; + for (int ii=1;ii<nscal;ii++){ + float scal=scalars[ii]; + range[0]=(range[0]<scal)?range[0]:scal; + range[1]=(range[1]>scal)?range[1]:scal; + } + } break; + case IObase::Float64:{ + long nscal=g.nbytes/sizeof(double); + double *scalars=(double *)g.data; + + range[0]=range[1]=scalars[0]; + for (int ii=1;ii<nscal;ii++){ + double scal=scalars[ii]; + range[0]=(range[0]<scal)?range[0]:scal; + range[1]=(range[1]>scal)?range[1]:scal; + } + } break; + default: + cout<<"Data type is not float or double."<<endl; + range[0]=0;range[1]=1; + } + g.scalarmin=range[0]; + g.scalarmax=range[1]; + free(g.data); + } g.data=0; return &g; |