aboutsummaryrefslogtreecommitdiff
path: root/src/AmrFileReader.hh
diff options
context:
space:
mode:
authortradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef>2000-09-13 13:49:13 +0000
committertradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef>2000-09-13 13:49:13 +0000
commit8fe367ecf2cbda79960a68a052fdb84916427c0e (patch)
tree45c017765ab7f0eb6caf97540fc76ffd3bffba59 /src/AmrFileReader.hh
parentc490022d592551af7c29bc960cbbc09daf45972d (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.hh69
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