28#ifndef ELLIPTICAL_DOMAIN_H
29#define ELLIPTICAL_DOMAIN_H
48 bool isInside(
int x,
int y,
int z)
const override {
55 return (isInsideEllipse && z >= 0 && z <
nr_m[2]);
88 double &scaleFactor)
const override;
91 double &scaleFactor)
const override;
int coordAccess(int idx) const override
std::multimap< int, double > EllipticPointList_t
bool isInside(int x, int y, int z) const override
queries if a given (x,y,z) coordinate lies inside the domain
int indexAccess(int x, int y, int z) const override
conversion from (x,y,z) to index on the 3D grid
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
double getYRangeMax() const
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
Stencil< double > StencilValue_t
int getNumXY() const override