aboutsummaryrefslogtreecommitdiff
path: root/src/AMRPlus/AMRgridreaderPlus.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/AMRPlus/AMRgridreaderPlus.C')
-rw-r--r--src/AMRPlus/AMRgridreaderPlus.C38
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;