26#ifndef IRREGULAR_DOMAIN_H
27#define IRREGULAR_DOMAIN_H
64 const std::string& interpl);
81 double &scaleFactor)
const;
88 double &scaleFactor)
const;
100 virtual void getCoord(
int idx,
int &x,
int &y,
int &z)
const;
103 int getIdx(
int x,
int y,
int z)
const;
112 virtual bool isInside(
int x,
int y,
int z)
const = 0;
154 double &scaleFactor)
const;
157 double &scaleFactor)
const;
160 double &scaleFactor)
const;
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)
IntVector_t nr_m
number of mesh points in each direction
std::map< int, int > coordMap_m
mapping idx -> (x,y,z)
virtual ~IrregularDomain()
bool hasGeometryChanged() const
virtual int coordAccess(int idx) const =0
void getBoundaryStencil(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
double getXRangeMax() const
virtual int getNumXY() const
void setRangeMin(const Vector_t &min)
double getYRangeMax() const
int interpolationMethod_m
interpolation type
int getIdx(int x, int y, int z) const
Conversion from (x,y,z) to index on the 3D grid.
virtual void resizeMesh(Vector_t &origin, Vector_t &hr, const Vector_t &, const Vector_t &, double)
bool hasGeometryChanged_m
flag indicating if geometry has changed for the current time-step
void setMinMaxZ(double minz, double maxz)
double getZRangeMin() const
virtual void quadraticInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
Vektor< int, 3 > IntVector_t
void getNeighbours(int x, int y, int z, StencilIndex_t &index) const
IntVector_t getNr() const
double getXRangeMin() const
virtual bool isInside(int x, int y, int z) const =0
virtual void constantInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
different interpolation methods for boundary points
std::map< int, int > idxMap_m
mapping (x,y,z) -> idx
double getYRangeMin() const
void setNr(IntVector_t nr)
Stencil< int > StencilIndex_t
IrregularDomain(const IntVector_t &nr, const Vector_t &hr, const std::string &interpl)
virtual void linearInterpolation(int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
Vector_t hr_m
mesh-spacings in each direction
virtual int indexAccess(int x, int y, int z) const =0
Stencil< double > StencilValue_t
void setRangeMax(const Vector_t &max)
double zMin_m
min/max of bunch in floor coordinates
double getZRangeMax() const
virtual void getCoord(int idx, int &x, int &y, int &z) const
Conversion from a 3D index to (x,y,z)
virtual void compute(Vector_t hr, NDIndex< 3 > localId)=0