diff options
author | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2000-09-13 13:49:13 +0000 |
---|---|---|
committer | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2000-09-13 13:49:13 +0000 |
commit | 8fe367ecf2cbda79960a68a052fdb84916427c0e (patch) | |
tree | 45c017765ab7f0eb6caf97540fc76ffd3bffba59 /src/AmrFileReader.hh | |
parent | c490022d592551af7c29bc960cbbc09daf45972d (diff) |
Importing latest stuff from development repository
git-svn-id: http://svn.cactuscode.org/arrangements/CactusExternal/FlexIO/trunk@2 21a6bef8-4479-4f54-8f8d-0db94a2919ef
Diffstat (limited to 'src/AmrFileReader.hh')
-rw-r--r-- | src/AmrFileReader.hh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/AmrFileReader.hh b/src/AmrFileReader.hh new file mode 100644 index 0000000..a771ca7 --- /dev/null +++ b/src/AmrFileReader.hh @@ -0,0 +1,69 @@ +// AmrFileReader +#ifndef __AMRFILEREADER_HH_ +#define __AMRFILEREADER_HH_ +#include <stdio.h> +#include <IO.hh> +#include "AmrGridReader.hh" +#include "FlexArrayTmpl.H" + +class AmrFileReader { +protected: + int gridloading; + AmrGridReader gridreader; + FlexArray<int> activeGrids; + FlexArray<AmrGrid> grids; // perhaps use a hashtable to find grids? + // Change to AmrGridFile structures + FlexArray<int> levelmask; + IObase::DataType datatype; + int maxlevel,maxtimeres,mintime,maxtime; + int current_time; + // Internal Utility methods + void buildInfoTable(); + void loadGrids(); + void reclaimGrids(); + void purgeGrids(); + void printGridInfo(AmrGrid &g); +public: + int debug; + void printGridInfo(); + void printActiveGrids(); + AmrFileReader(IObase &f); + int getActiveIndex(int ii){ return activeGrids[ii];} + int getNumLevels(){ return maxlevel+1; } + void getTimeRange(int &min,int &max){ + min=mintime; + max=maxtime; + } + void setTime(int timestep); + // starts out with all selected + void showLevel(int level=-1){ // default is all (-1) + if(level>=levelmask.getSize() || level<0){ + printf("AmrConvert::showLevel(%u) : Level out of range 0:%u\n", + level,levelmask.getSize()-1); + } + else + levelmask[level]=1; + } + void showAllLevels(); + void hideLevel(int level=-1){ // default is all (-1) + if(level>=levelmask.getSize() || level<0){ + printf("AmrConvert::showLevel(%u) : Level out of range 0:%u\n", + level,levelmask.getSize()-1); + } + else + levelmask[level]=0; + } + int nLevels(){ return maxlevel+1; } + IObase::DataType getDataType(){return datatype;} + // For C interface + int getNumGrids(){ // number of active grids + return activeGrids.getSize(); + } + int getGrids(AmrGrid *g); + // For C++ interface + int getGrids(FlexArray<AmrGrid> &g); + void setDataLoadingOff(){ gridloading=0; purgeGrids();} + void setDataLoadingOn(){ gridloading=1; loadGrids();} +}; + +#endif |