1 #ifdef HAVE_SAAMG_SOLVER
11 nxy_m = nr[0] * nr[1];
19 nxy_m = nr[0] * nr[1];
22 void RectangularDomain::compute(
Vector_t hr){
24 nxy_m =
nr[0] *
nr[1];
27 int RectangularDomain::getNumXY(
int z) {
31 void RectangularDomain::getBoundaryStencil(
int x,
int y,
int z,
double &
W,
double &E,
double &S,
double &N,
double &F,
double &B,
double &C,
double &scaleFactor) {
43 scaleFactor = hr[0] * hr[1] * hr[2];
44 W = -hr[1] * hr[2] / hr[0];
45 E = -hr[1] * hr[2] / hr[0];
46 N = -hr[0] * hr[2] / hr[1];
47 S = -hr[0] * hr[2] / hr[1];
48 F = -hr[0] * hr[1] / hr[2];
49 B = -hr[0] * hr[1] / hr[2];
50 C = 2 * hr[1] * hr[2] / hr[0] + 2 * hr[0] * hr[2] / hr[1] + 2 * hr[0] * hr[1] / hr[2];
52 if(!isInside(x + 1, y, z))
55 if(!isInside(x - 1, y, z))
58 if(!isInside(x, y + 1, z))
61 if(!isInside(x, y - 1, z))
87 double d = hr[2] * (
nr[2] - 1) / 2;
106 "Stencil C is <= 0! This case should never occure!");
110 void RectangularDomain::getBoundaryStencil(
int idx,
double &W,
double &E,
double &S,
double &N,
double &F,
double &B,
double &C,
double &scaleFactor) {
112 int x = 0, y = 0, z = 0;
114 getCoord(idx, x, y, z);
115 getBoundaryStencil(x, y, z, W, E, S, N, F, B, C, scaleFactor);
119 void RectangularDomain::getNeighbours(
int idx,
double &W,
double &E,
double &S,
double &N,
double &F,
double &B) {
121 int x = 0, y = 0, z = 0;
123 getCoord(idx, x, y, z);
124 getNeighbours(x, y, z, W, E, S, N, F, B);
128 void RectangularDomain::getNeighbours(
int x,
int y,
int z,
double &W,
double &E,
double &S,
double &N,
double &F,
double &B) {
131 W = getIdx(x - 1, y, z);
135 E = getIdx(x + 1, y, z);
140 N = getIdx(x, y + 1, z);
144 S = getIdx(x, y - 1, z);
149 F = getIdx(x, y, z - 1);
153 B = getIdx(x, y, z + 1);
746 #endif //#ifdef HAVE_SAAMG_SOLVER
The base class for all OPAL exceptions.