OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
RectangularDomain Class Reference

#include <RectangularDomain.h>

Inheritance diagram for RectangularDomain:
Inheritance graph
Collaboration diagram for RectangularDomain:
Collaboration graph

Public Types

typedef Stencil< int > StencilIndex_t
 
typedef Stencil< double > StencilValue_t
 
typedef Vektor< int, 3 > IntVector_t
 

Public Member Functions

 RectangularDomain (double a, double b, IntVector_t nr, Vector_t hr)
 
void compute (Vector_t hr, NDIndex< 3 >)
 calculates intersection with the beam pipe More...
 
bool isInside (int x, int y, int) const
 queries if a given (x,y,z) coordinate lies inside the domain More...
 
int getNumXY () const override
 
void setNumXY (int nxy)
 
void resizeMesh (Vector_t &origin, Vector_t &hr, const Vector_t &rmin, const Vector_t &rmax, double dh) override
 
void getBoundaryStencil (int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
 method to calculate the stencil at a boundary points More...
 
void getBoundaryStencil (int id, StencilValue_t &value, double &scaleFactor) const
 method to calculate the stencil at a boundary points More...
 
void getNeighbours (int x, int y, int z, StencilIndex_t &index) const
 method to calculate the neighbours in the matrix of the current index (x,y,z) More...
 
void getNeighbours (int idx, StencilIndex_t &index) const
 
virtual void getCoord (int idx, int &x, int &y, int &z) const
 Conversion from a 3D index to (x,y,z) More...
 
int getIdx (int x, int y, int z) const
 Conversion from (x,y,z) to index on the 3D grid. More...
 
IntVector_t getNr () const
 
Vector_t getHr () const
 
void setNr (IntVector_t nr)
 
void setHr (Vector_t hr)
 
void setMinMaxZ (double minz, double maxz)
 
double getMinZ () const
 
double getMaxZ () const
 
double getXRangeMin () const
 
double getXRangeMax () const
 
double getYRangeMin () const
 
double getYRangeMax () const
 
double getZRangeMin () const
 
double getZRangeMax () const
 
void setRangeMin (const Vector_t &min)
 
void setRangeMax (const Vector_t &max)
 
bool hasGeometryChanged () const
 

Protected Member Functions

void robinBoundaryStencil (int z, double &F, double &B, double &C) const
 function to handle the open boundary condition in longitudinal direction More...
 
virtual void linearInterpolation (int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
 
virtual void quadraticInterpolation (int x, int y, int z, StencilValue_t &value, double &scaleFactor) const
 

Protected Attributes

IntVector_t nr_m
 number of mesh points in each direction More...
 
Vector_t hr_m
 mesh-spacings in each direction More...
 
double zMin_m
 min/max of bunch in floor coordinates More...
 
double zMax_m
 
Vector_t min_m
 
Vector_t max_m
 
bool hasGeometryChanged_m
 flag indicating if geometry has changed for the current time-step More...
 
int interpolationMethod_m
 interpolation type More...
 
std::map< int, int > idxMap_m
 mapping (x,y,z) -> idx More...
 
std::map< int, int > coordMap_m
 mapping idx -> (x,y,z) More...
 

Private Member Functions

int indexAccess (int x, int y, int z) const
 conversion from (x,y,z) to index on the 3D grid More...
 
int coordAccess (int idx) const
 
void constantInterpolation (int x, int y, int z, StencilValue_t &value, double &scaleFactor) const override
 different interpolation methods for boundary points More...
 

Private Attributes

int nxy_m
 number of nodes in the xy plane (for this case: independent of the z coordinate) More...
 

Detailed Description

Definition at line 34 of file RectangularDomain.h.

Member Typedef Documentation

◆ IntVector_t

typedef Vektor<int, 3> IrregularDomain::IntVector_t
inherited

Definition at line 60 of file IrregularDomain.h.

◆ StencilIndex_t

typedef Stencil<int> IrregularDomain::StencilIndex_t
inherited

Definition at line 58 of file IrregularDomain.h.

◆ StencilValue_t

typedef Stencil<double> IrregularDomain::StencilValue_t
inherited

Definition at line 59 of file IrregularDomain.h.

Constructor & Destructor Documentation

◆ RectangularDomain()

RectangularDomain::RectangularDomain ( double  a,
double  b,
IntVector_t  nr,
Vector_t  hr 
)
Parameters
ais the longer side a of the rectangle
bis the shorter side b of the rectangle

Member Function Documentation

◆ compute()

void RectangularDomain::compute ( Vector_t  hr,
NDIndex< 3 >   
)
virtual

calculates intersection with the beam pipe

Implements IrregularDomain.

◆ constantInterpolation()

void RegularDomain::constantInterpolation ( int  x,
int  y,
int  z,
StencilValue_t value,
double &  scaleFactor 
) const
overrideprivatevirtualinherited

◆ coordAccess()

int RectangularDomain::coordAccess ( int  idx) const
inlineprivatevirtual

Implements IrregularDomain.

Definition at line 60 of file RectangularDomain.h.

References RegularDomain::getNumXY().

Here is the call graph for this function:

◆ getBoundaryStencil() [1/2]

void IrregularDomain::getBoundaryStencil ( int  id,
StencilValue_t value,
double &  scaleFactor 
) const
inherited

method to calculate the stencil at a boundary points

Parameters
idindex of the current element in the matrix
scaleFactorof stencil values

Definition at line 118 of file IrregularDomain.cpp.

References IrregularDomain::getBoundaryStencil(), and IrregularDomain::getCoord().

Here is the call graph for this function:

◆ getBoundaryStencil() [2/2]

void IrregularDomain::getBoundaryStencil ( int  x,
int  y,
int  z,
StencilValue_t value,
double &  scaleFactor 
) const
inherited

method to calculate the stencil at a boundary points

Parameters
xindex of the current element in the matrix
yindex of the current element in the matrix
zindex of the current element in the matrix
valuesof stencil element
scaleFactorof stencil values

Definition at line 95 of file IrregularDomain.cpp.

References IrregularDomain::Stencil< T >::center, CONSTANT, IrregularDomain::constantInterpolation(), IrregularDomain::interpolationMethod_m, LINEAR, IrregularDomain::linearInterpolation(), PAssert, QUADRATIC, and IrregularDomain::quadraticInterpolation().

Referenced by IrregularDomain::getBoundaryStencil().

Here is the call graph for this function:

◆ getCoord()

void IrregularDomain::getCoord ( int  idx,
int &  x,
int &  y,
int &  z 
) const
virtualinherited

Conversion from a 3D index to (x,y,z)

Definition at line 82 of file IrregularDomain.cpp.

References IrregularDomain::coordAccess(), IrregularDomain::getNumXY(), and IrregularDomain::nr_m.

Referenced by IrregularDomain::getBoundaryStencil(), and IrregularDomain::getNeighbours().

Here is the call graph for this function:

◆ getHr()

Vector_t IrregularDomain::getHr ( ) const
inlineinherited

Definition at line 115 of file IrregularDomain.h.

References IrregularDomain::hr_m.

Referenced by EllipticDomain::compute().

◆ getIdx()

int IrregularDomain::getIdx ( int  x,
int  y,
int  z 
) const
inherited

Conversion from (x,y,z) to index on the 3D grid.

Definition at line 89 of file IrregularDomain.cpp.

References IrregularDomain::indexAccess(), and IrregularDomain::isInside().

Referenced by IrregularDomain::getNeighbours().

Here is the call graph for this function:

◆ getMaxZ()

double IrregularDomain::getMaxZ ( ) const
inlineinherited

Definition at line 126 of file IrregularDomain.h.

References IrregularDomain::zMax_m.

Referenced by BoxCornerDomain::compute(), and RegularDomain::resizeMesh().

◆ getMinZ()

double IrregularDomain::getMinZ ( ) const
inlineinherited

Definition at line 125 of file IrregularDomain.h.

References IrregularDomain::zMin_m.

Referenced by BoxCornerDomain::compute(), and RegularDomain::resizeMesh().

◆ getNeighbours() [1/2]

void IrregularDomain::getNeighbours ( int  idx,
StencilIndex_t index 
) const
inherited

Definition at line 75 of file IrregularDomain.cpp.

References IrregularDomain::getCoord(), and IrregularDomain::getNeighbours().

Here is the call graph for this function:

◆ getNeighbours() [2/2]

void IrregularDomain::getNeighbours ( int  x,
int  y,
int  z,
StencilIndex_t index 
) const
inherited

method to calculate the neighbours in the matrix of the current index (x,y,z)

Parameters
xindex of the current element in the matrix
yindex of the current element in the matrix
zindex of the current element in the matrix
indexstencil indices of an element

Definition at line 46 of file IrregularDomain.cpp.

References IrregularDomain::Stencil< T >::back, IrregularDomain::Stencil< T >::east, IrregularDomain::Stencil< T >::front, IrregularDomain::getIdx(), IrregularDomain::isInside(), IrregularDomain::Stencil< T >::north, IrregularDomain::nr_m, IrregularDomain::Stencil< T >::south, and IrregularDomain::Stencil< T >::west.

Referenced by IrregularDomain::getNeighbours().

Here is the call graph for this function:

◆ getNr()

IntVector_t IrregularDomain::getNr ( ) const
inlineinherited

Definition at line 114 of file IrregularDomain.h.

References IrregularDomain::nr_m.

◆ getNumXY()

int RegularDomain::getNumXY ( ) const
inlineoverridevirtualinherited

Reimplemented from IrregularDomain.

Definition at line 32 of file RegularDomain.h.

References RegularDomain::nxy_m.

Referenced by coordAccess(), EllipticDomain::coordAccess(), indexAccess(), and EllipticDomain::indexAccess().

◆ getXRangeMax()

double IrregularDomain::getXRangeMax ( ) const
inlineinherited

◆ getXRangeMin()

◆ getYRangeMax()

double IrregularDomain::getYRangeMax ( ) const
inlineinherited

◆ getYRangeMin()

◆ getZRangeMax()

double IrregularDomain::getZRangeMax ( ) const
inlineinherited

Definition at line 133 of file IrregularDomain.h.

References IrregularDomain::max_m.

Referenced by BoxCornerDomain::getB().

◆ getZRangeMin()

double IrregularDomain::getZRangeMin ( ) const
inlineinherited

Definition at line 132 of file IrregularDomain.h.

References IrregularDomain::min_m.

Referenced by ArbitraryDomain::compute(), and BoxCornerDomain::getB().

◆ hasGeometryChanged()

bool IrregularDomain::hasGeometryChanged ( ) const
inlineinherited

Definition at line 138 of file IrregularDomain.h.

References IrregularDomain::hasGeometryChanged_m.

◆ indexAccess()

int RectangularDomain::indexAccess ( int  x,
int  y,
int  z 
) const
inlineprivatevirtual

conversion from (x,y,z) to index on the 3D grid

Implements IrregularDomain.

Definition at line 56 of file RectangularDomain.h.

References RegularDomain::getNumXY(), and IrregularDomain::nr_m.

Here is the call graph for this function:

◆ isInside()

bool RectangularDomain::isInside ( int  x,
int  y,
int   
) const
inlinevirtual

queries if a given (x,y,z) coordinate lies inside the domain

Implements IrregularDomain.

Definition at line 48 of file RectangularDomain.h.

References IrregularDomain::getXRangeMax(), IrregularDomain::getYRangeMax(), IrregularDomain::hr_m, and IrregularDomain::nr_m.

Here is the call graph for this function:

◆ linearInterpolation()

void IrregularDomain::linearInterpolation ( int  x,
int  y,
int  z,
StencilValue_t value,
double &  scaleFactor 
) const
protectedvirtualinherited

Reimplemented in ArbitraryDomain, BoxCornerDomain, and EllipticDomain.

Definition at line 145 of file IrregularDomain.cpp.

Referenced by IrregularDomain::getBoundaryStencil().

◆ quadraticInterpolation()

void IrregularDomain::quadraticInterpolation ( int  x,
int  y,
int  z,
StencilValue_t value,
double &  scaleFactor 
) const
protectedvirtualinherited

Reimplemented in BoxCornerDomain, and EllipticDomain.

Definition at line 153 of file IrregularDomain.cpp.

Referenced by IrregularDomain::getBoundaryStencil().

◆ resizeMesh()

void RegularDomain::resizeMesh ( Vector_t origin,
Vector_t hr,
const Vector_t rmin,
const Vector_t rmax,
double  dh 
)
overridevirtualinherited

◆ robinBoundaryStencil()

void RegularDomain::robinBoundaryStencil ( int  z,
double &  F,
double &  B,
double &  C 
) const
protectedinherited

function to handle the open boundary condition in longitudinal direction

Definition at line 84 of file RegularDomain.cpp.

References IrregularDomain::hr_m, and IrregularDomain::nr_m.

Referenced by RegularDomain::constantInterpolation(), EllipticDomain::linearInterpolation(), and EllipticDomain::quadraticInterpolation().

◆ setHr()

void IrregularDomain::setHr ( Vector_t  hr)
inlineinherited

◆ setMinMaxZ()

void IrregularDomain::setMinMaxZ ( double  minz,
double  maxz 
)
inlineinherited

◆ setNr()

void IrregularDomain::setNr ( IntVector_t  nr)
inlineinherited

Definition at line 117 of file IrregularDomain.h.

References nr, and IrregularDomain::nr_m.

◆ setNumXY()

void RegularDomain::setNumXY ( int  nxy)
inlineinherited

Definition at line 36 of file RegularDomain.h.

References RegularDomain::nxy_m.

Referenced by EllipticDomain::compute().

◆ setRangeMax()

void IrregularDomain::setRangeMax ( const Vector_t max)
inlineinherited

Definition at line 136 of file IrregularDomain.h.

References max(), and IrregularDomain::max_m.

Referenced by ArbitraryDomain::ArbitraryDomain(), BoxCornerDomain::BoxCornerDomain(), and EllipticDomain::EllipticDomain().

Here is the call graph for this function:

◆ setRangeMin()

void IrregularDomain::setRangeMin ( const Vector_t min)
inlineinherited

Definition at line 135 of file IrregularDomain.h.

References min(), and IrregularDomain::min_m.

Referenced by ArbitraryDomain::ArbitraryDomain(), BoxCornerDomain::BoxCornerDomain(), and EllipticDomain::EllipticDomain().

Here is the call graph for this function:

Member Data Documentation

◆ coordMap_m

std::map<int, int> IrregularDomain::coordMap_m
protectedinherited

◆ hasGeometryChanged_m

bool IrregularDomain::hasGeometryChanged_m
protectedinherited

flag indicating if geometry has changed for the current time-step

Definition at line 177 of file IrregularDomain.h.

Referenced by ArbitraryDomain::compute(), BoxCornerDomain::compute(), EllipticDomain::compute(), and IrregularDomain::hasGeometryChanged().

◆ hr_m

◆ idxMap_m

std::map<int, int> IrregularDomain::idxMap_m
protectedinherited

◆ interpolationMethod_m

int IrregularDomain::interpolationMethod_m
protectedinherited

◆ max_m

◆ min_m

◆ nr_m

◆ nxy_m

int RegularDomain::nxy_m
privateinherited

number of nodes in the xy plane (for this case: independent of the z coordinate)

Definition at line 50 of file RegularDomain.h.

Referenced by RegularDomain::getNumXY(), and RegularDomain::setNumXY().

◆ zMax_m

double IrregularDomain::zMax_m
protectedinherited

Definition at line 171 of file IrregularDomain.h.

Referenced by IrregularDomain::getMaxZ(), and IrregularDomain::setMinMaxZ().

◆ zMin_m

double IrregularDomain::zMin_m
protectedinherited

min/max of bunch in floor coordinates

Definition at line 170 of file IrregularDomain.h.

Referenced by IrregularDomain::getMinZ(), and IrregularDomain::setMinMaxZ().


The documentation for this class was generated from the following file: