blob: a771ca7b69125438bf456dffbdde748cbacbe6c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
|