26 #ifndef BOXCORNER_DOMAIN_H
27 #define BOXCORNER_DOMAIN_H
88 inline double getB(
double z)
const {
96 inline bool isInside(
int x,
int y,
int z)
const override {
97 const double xx = (x - (
nr_m[0] - 1) / 2.0) *
hr_m[0];
98 const double yy = (y - (
nr_m[1] - 1) / 2.0) *
hr_m[1];
138 return (z *
nr_m[1] + y) *
nr_m[0] + x;
152 double &scaleFactor)
const override;
155 double &scaleFactor)
const override;
int indexAccess(int x, int y, int z) const override
conversion from (x,y,z) to index on the 3D grid
double C_m
height of the corner
double getYRangeMax() const
double getXIntersection(double cx, int) const
bool isInside(int x, int y, int z) const override
queries if a given (x,y,z) coordinate lies inside the domain
double getXRangeMax() const
IntVector_t nr_m
number of mesh points in each direction
BoxCornerDomain(double A, double B, double C, double L1, double L2, IntVector_t nr, Vector_t hr, std::string interpl)
std::map< int, int > idxMap_m
mapping (x,y,z) -> idx
std::multimap< std::pair< int, int >, double > BoxCornerPointList
int coordAccess(int idx) const override
Stencil< double > StencilValue_t
double getB(double z) const
as a function of z, determine the height (B) of the geometry
BoxCornerPointList IntersectXDir
all intersection points with grid lines in X direction
int toCoordIdx(int x, int y, int z) const
conversion from (x,y,z) to index in xyz plane
void linearInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const override
different interpolation methods for boundary points
BoxCornerPointList IntersectYDir
all intersection points with grid lines in Y direction
double getYRangeMin() const
double actBMin_m
because the geometry can change in the y direction
double getXRangeMin() const
void compute(Vector_t hr, NDIndex< 3 > localId) override
Vector_t hr_m
mesh-spacings in each direction
std::map< int, int > coordMap_m
mapping idx -> (x,y,z)
double getZRangeMax() const
double getZRangeMin() const
void quadraticInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const override
double getYIntersection(double cy, int z) const