57    if (hr[0] == 
getHr()[0] &&
 
   86    for (x = 0; x < 
nr_m[0]; ++x) {
 
   87        for (y = 0; y < 
nr_m[1]; ++y) {
 
  111            for (x = localId[0].first(); x <= localId[0].last(); x++) {
 
  125            for (y = localId[0].first(); y < localId[1].last(); y++) {
 
  141                                         double &scaleFactor)
 const 
  149    std::multimap<int, double>::const_iterator it = 
intersectXDir_m.find(y);
 
  170        value.
center += 1.0 / ((dx - cx) * de);
 
  173        value.
center += 1.0 / (de * de);
 
  174        value.
east = -1.0 / (de * de);
 
  182        value.
center += 1.0 / (dw * dw);
 
  183        value.
west = -1.0 / (dw * dw);
 
  188        value.
center += 1.0 / ((dy - cy) * dn);
 
  191        value.
center += 1.0 / (dn * dn);
 
  192        value.
north = -1.0 / (dn * dn);
 
  200        value.
center += 1.0 / (ds * ds);
 
  201        value.
south = -1.0 / (ds * ds);
 
  213                                            double &scaleFactor)
 const 
  217    double cx = (x - (
nr_m[0] - 1) / 2.0) * 
hr_m[0];
 
  218    double cy = (y - (
nr_m[1] - 1) / 2.0) * 
hr_m[1];
 
  223    std::multimap<int, double>::const_iterator it = 
intersectXDir_m.find(y);
 
  248        value.
center -= 2.0 * (s - 1.0) / (s * de);
 
  250        value.
west += (s - 1.0) / ((s + 1.0) * de);
 
  252        value.
center += 1.0 / (de * de);
 
  253        value.
east = -1.0 / (de * de);
 
  259        value.
center -= 2.0 * (s - 1.0) / (s * de);
 
  261        value.
east += (s - 1.0) / ((s + 1.0) * de);
 
  263        value.
center += 1.0 / (dw * dw);
 
  264        value.
west = -1.0 / (dw * dw);
 
  270        value.
center -= 2.0 * (s - 1.0) / (s * dn);
 
  272        value.
south += (s - 1.0) / ((s + 1.0) * dn);
 
  274        value.
center += 1.0 / (dn * dn);
 
  275        value.
north = -1.0 / (dn * dn);
 
  281        value.
center -= 2.0 * (s - 1.0) / (s * dn);
 
  283        value.
north += (s - 1.0) / ((s + 1.0) * dn);
 
  285        value.
center += 1.0 / (ds * ds);
 
  286        value.
south = -1.0 / (ds * ds);
 
Tps< T > sqrt(const Tps< T > &x)
Square root.
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
T::PETE_Expr_t::PETE_Return_t min(const PETE_Expr< T > &expr, NDIndex< D > &loc)
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
bool isInside(int x, int y, int z) const override
queries if a given (x,y,z) coordinate lies inside the domain
int toCoordIdx(int x, int y) const
conversion from (x,y) to index in xy plane
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
EllipticPointList_t intersectYDir_m
all intersection points with grid lines in Y direction
EllipticPointList_t intersectXDir_m
all intersection points with grid lines in X direction
EllipticDomain(BoundaryGeometry *bgeom, IntVector_t nr, Vector_t hr, std::string interpl)
void compute(Vector_t hr, NDIndex< 3 > localId) override
calculates intersection
IntVector_t nr_m
number of mesh points in each direction
std::map< int, int > coordMap_m
mapping idx -> (x,y,z)
double getXRangeMax() const
void setRangeMin(const Vector_t &min)
double getYRangeMax() const
int interpolationMethod_m
interpolation type
bool hasGeometryChanged_m
flag indicating if geometry has changed for the current time-step
void setMinMaxZ(double minz, double maxz)
double getXRangeMin() const
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)
void robinBoundaryStencil(int z, double &F, double &B, double &C) const
function to handle the open boundary condition in longitudinal direction