diff options
Diffstat (limited to 'src/AMRwriter.cc')
-rw-r--r-- | src/AMRwriter.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/AMRwriter.cc b/src/AMRwriter.cc index d46b57a..3f76648 100644 --- a/src/AMRwriter.cc +++ b/src/AMRwriter.cc @@ -20,6 +20,7 @@ void AMRwriter::writeAMRattributes(){ // compute persistence persistence = levels[levels.getSize()-currentlevel-1].trefine; + if(persistence<=0) { fprintf(stderr,"Refinement *must* be >1... this isn't right!!!\n"); persistence=1;} level_timestep = currentstep/persistence; // compute from min-ext... // y-know... there is more point density near 0 in the float @@ -36,7 +37,7 @@ void AMRwriter::writeAMRattributes(){ for(int i=0;i<drank;i++) { currentdelta[i] = ddelta[i]/(levels[currentlevel]).srefine[i]; ext[i] = currentorigin[i] + - (double)((ddims[i]+1) * currentdelta[i]); + (double)((ddims[i]) * currentdelta[i]); } file.writeAttribute("level",IObase::Int32,1,¤tlevel); @@ -100,8 +101,9 @@ void AMRwriter::setRefinement(int timerefinement, int spatialrefinement, int gridplacementrefinement){ int tref=1,sref=1,gref=gridplacementrefinement; - int maxdepth=levels.getSize()+1; + int maxdepth=levels.getSize(); // if gref==-1, then we need to multiply by maxdepth + /* printf("maxdepth***********=%u\n",maxdepth); */ for(int level=0;level<maxdepth;level++){ setLevelRefinement(level,tref,sref,gref); tref*=timerefinement; @@ -117,13 +119,13 @@ void AMRwriter::setRefinement(int timerefinement, void AMRwriter::setRefinement(int timerefinement, int *spatialrefinement, int *gridplacementrefinement){ - int maxdepth = 1+levels.getSize(); + int maxdepth = levels.getSize(); int tref = 1; int *sref = new int[drank]; int *gref = new int[drank]; for(int i=0;i<drank;i++) { sref[i]=gref[i]=1; - if(gridplacementrefinement) gref[i]+=gridplacementrefinement[i]; + if(gridplacementrefinement) gref[i]*=gridplacementrefinement[i]; } for(int level=0;level<maxdepth;level++){ setLevelRefinement(level,tref,sref,gref); @@ -264,7 +266,7 @@ void AMRsetType(AMRFile afile,int numbertype){ w->setType(IObase::Int2DataType(numbertype)); } -void AMRsetToplevelParameters(AMRFile afile,int rank, double *origin, +void AMRsetTopLevelParameters(AMRFile afile,int rank, double *origin, double *delta, double timestep,int maxdepth){ AMRwriter *w = (AMRwriter*)afile; w->setTopLevelParameters(rank,origin,delta,timestep,maxdepth); @@ -302,12 +304,12 @@ void AMRsetScalarLevelRefinement(AMRFile afile,int level, w->setLevelRefinement(level,timerefinement,spatialrefinement,gridplacementrefinement); } -void AMRlevel(AMRFile afile,int level){ +void AMRsetLevel(AMRFile afile,int level){ AMRwriter *w = (AMRwriter*)afile; w->setLevel(level); } -void AMRtime(AMRFile afile,int time){ +void AMRsetTime(AMRFile afile,int time){ AMRwriter *w = (AMRwriter*)afile; w->setTime(time); } |