28 #ifndef ARBITRARY_DOMAIN_H
29 #define ARBITRARY_DOMAIN_H
52 bool isInside(
int idx,
int idy,
int idz)
const {
65 typedef std::multimap< std::tuple<int, int, int>,
double >
PointList_t;
86 return (idz *
nr_m[1] + idy) *
nr_m[0] + idx;
100 double &scaleFactor)
const override;
103 double &scaleFactor)
const override;
int indexAccess(int x, int y, int z) const
PointList_t intersectHiY_m
all intersection points with gridlines in Y direction
std::map< int, bool > isInsideMap_m
void linearInterpolation(int idx, int idy, int idz, StencilValue_t &value, double &scaleFactor) const override
PointList_t intersectLoZ_m
BoundaryGeometry * bgeom_m
int coordAccess(int idx) const
Vector_t globalInsideP0_m
int toCoordIdx(int idx, int idy, int idz) const
PointList_t intersectHiZ_m
all intersection points with gridlines in Z direction
std::map< int, int > numXY_m
PointList_t intersectHiX_m
all intersection points with gridlines in X direction
PointList_t intersectLoX_m
ArbitraryDomain(BoundaryGeometry *bgeom, IntVector_t nr, Vector_t hr, std::string interpl)
void constantInterpolation(int idx, int idy, int idz, StencilValue_t &value, double &scaleFactor) const override
different interpolation methods for boundary points
std::multimap< std::tuple< int, int, int >, double > PointList_t
void compute(Vector_t hr, NDIndex< 3 > localId)
PointList_t intersectLoY_m
bool isInside(int idx, int idy, int idz) const
queries if a given (x,y,z) coordinate lies inside the domain
IntVector_t nr_m
number of mesh points in each direction
std::map< int, int > coordMap_m
mapping idx -> (x,y,z)
std::map< int, int > idxMap_m
mapping (x,y,z) -> idx
Stencil< double > StencilValue_t