1 #ifndef IRREGULAR_DOMAIN_H
2 #define IRREGULAR_DOMAIN_H
3 #ifdef HAVE_SAAMG_SOLVER
18 class IrregularDomain {
25 virtual void compute(
Vector_t hr) = 0;
31 virtual int getNumXY(
int z) = 0;
44 virtual void getBoundaryStencil(
int x,
int y,
int z,
double &
W,
double &E,
double &S,
double &N,
double &F,
double &B,
double &C,
double &scaleFactor) = 0;
55 virtual void getBoundaryStencil(
int idx,
double &
W,
double &E,
double &S,
double &N,
double &F,
double &B,
double &C,
double &scaleFactor) = 0;
67 virtual void getNeighbours(
int x,
int y,
int z,
int &
W,
int &E,
int &S,
int &N,
int &F,
int &B) = 0;
68 virtual void getNeighbours(
int idx,
int &
W,
int &E,
int &S,
int &N,
int &F,
int &B) = 0;
72 virtual std::string getType() = 0;
79 virtual bool isInside(
int x,
int y,
int z) = 0;
84 void setHr(
Vector_t hri) { hr = hri; }
86 void setMinMaxZ(
double minz,
double maxz) { zMin_m=minz; zMax_m=maxz; }
87 double getMinZ() {
return zMin_m; }
88 double getMaxZ() {
return zMax_m; }
90 void setGlobalMeanR(
Vector_t rmean) { rMean_m = rmean;}
91 Vector_t getGlobalMeanR() {
return rMean_m; }
93 void setGlobalToLocalQuaternion(
Quaternion_t globalToLocalQuaternion){
94 globalToLocalQuaternion_m = globalToLocalQuaternion;}
95 Quaternion_t getGlobalToLocalQuaternion() {
return globalToLocalQuaternion_m;}
97 virtual double getXRangeMin() = 0;
98 virtual double getXRangeMax() = 0;
99 virtual double getYRangeMin() = 0;
100 virtual double getYRangeMax() = 0;
101 virtual double getZRangeMin() = 0;
102 virtual double getZRangeMax() = 0;
104 virtual int getIdx(
int x,
int y,
int z) = 0;
105 virtual bool hasGeometryChanged() = 0;
124 #endif //#ifdef HAVE_SAAMG_SOLVER
125 #endif //#ifndef IRREGULAR_DOMAIN_H