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