46 "This domain is currently not supported!");
88 for(x = 0; x <
nr_m[0]; x++) {
89 for(y = 0; y <
nr_m[1]; y++) {
90 for(z = 0; z <
nr_m[2]; z++) {
132 double &scaleFactor)
const
136 double cx = x *
hr_m[0] - (
nr_m[0] - 1) *
hr_m[0] / 2.0;
137 double cy = y *
hr_m[1] - (
nr_m[1] - 1) *
hr_m[1] / 2.0;
168 value.
center += 1 / ((dx - cx) * de);
171 value.
center += 1 / (de * de);
172 value.
east = -1 / (de * de);
181 value.
center += 1 / (dw * dw);
182 value.
west = -1 / (dw * dw);
188 value.
center += 1 / ((dy - cy) * dn);
191 value.
center += 1 / (dn * dn);
192 value.
north = -1 / (dn * dn);
201 value.
center += 1 / (ds * ds);
202 value.
south = -1 / (ds * ds);
210 if(z == 0 || z ==
nr_m[2] - 1) {
220 double d =
hr_m[2] * (
nr_m[2] - 1) / 2;
236 double &scaleFactor)
const
238 double cx = (x - (
nr_m[0] - 1) / 2.0) *
hr_m[0];
239 double cy = (y - (
nr_m[1] - 1) / 2.0) *
hr_m[1];
331 value.
west *= -1.0 / (dw * (dw + de));
332 value.
east *= -1.0 / (de * (dw + de));
333 value.
north *= -1.0 / (dn * (dn + ds));
334 value.
south *= -1.0 / (ds * (dn + ds));
340 value.
center += 1 / de * 1 / dw;
341 value.
center += 1 / dn * 1 / ds;
438 if(z == 0 || z ==
nr_m[2] - 1) {
449 double d =
hr_m[2] * (
nr_m[2] - 1) / 2;
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
BoxCornerPointList IntersectYDir
all intersection points with grid lines in Y direction
double C_m
height of the corner
BoxCornerPointList IntersectXDir
all intersection points with grid lines in X direction
void compute(Vector_t hr, NDIndex< 3 > localId)
void linearInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const override
different interpolation methods for boundary points
void quadraticInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const override
BoxCornerDomain(double A, double B, double C, double L1, double L2, IntVector_t nr, Vector_t hr, std::string interpl)
bool isInside(int x, int y, int z) const
queries if a given (x,y,z) coordinate lies inside the domain
double actBMin_m
because the geometry can change in the y direction
double getB(double z) const
as a function of z, determine the height (B) of the geometry
double getXIntersection(double cx, int) const
double getYIntersection(double cy, int z) const
int toCoordIdx(int x, int y, int z) const
conversion from (x,y,z) to index in xyz plane
IntVector_t nr_m
number of mesh points in each direction
std::map< int, int > coordMap_m
mapping idx -> (x,y,z)
void setRangeMin(const Vector_t &min)
bool hasGeometryChanged_m
flag indicating if geometry has changed for the current time-step
std::map< int, int > idxMap_m
mapping (x,y,z) -> idx
double getYRangeMin() const
Vector_t hr_m
mesh-spacings in each direction
void setRangeMax(const Vector_t &max)
The base class for all OPAL exceptions.
Vektor< double, 3 > Vector_t