template<typename LatticeModel_T>
class walberla::lbm::PdfField< LatticeModel_T >
Specialized field class for PDF fields (fields containing multiple particle distribution functions per cell)
In addition to a generic GhostLayerField, each PdfField contains a lattice model which - among other things - determines how macroscopic values like density and velocity have to be calculated. For this purpose, a set of member functions exist that can be used to set single cells (or the whole field) to equilibrium or to evaluate the density and/or velocity for specific positions. If you happen to have an iterator to a PdfField, you should use the free functions located in "MacroscopicValueCalculation.h" - you do not have to convert your iterator into x-, y-, and z-coordinates! Also, particle distribution functions (i.e., the values stored in the field) can be accessed using stencil directions, e.g. "pdfField( x, y, z, stencil::NE )".
Note that the behavior is different for compressible and incompressible lattice models. In the compressible case, the behavior and formulas are as expected from common LBM literature and the density is taken as the 0-th order moment of the PDFs and this value is used. In order to make LBM quasi-incompressible, it was suggested, e.g. in Q. Zou, S. Hou, S. Chen, G.D. Doolen, J. Stat. Phys. 81(1–2), 35 (1995) X. He, L.S. Luo, J. Stat. Phys. 88(3–4), 927 (1997) that the density is implicitly assumed to have a constant value of 1 in many cases (e.g. in getVelocity()), and only the deviation from this value enters some of the formulas, like the equilibrium distribution functions. Additionally, the PDFs are normalized around 0 in the incompressible case to increase the numerical accuracy, i.e. only the deviation of the PDF values from their respective lattice weight is stored. As a result, manually summing of the PDF values will yield the density deviation in this case. But the getDensity() function reverts this normalization (by adding 1) and will yield the physical density. This normalization, however, usually doesn't affect the implementation of functions like LBM sweeps.
|
using | LatticeModel = LatticeModel_T |
|
using | Stencil = typename LatticeModel_T::Stencil |
|
using | value_type = typename GhostLayerField< real_t, Stencil::Size >::value_type |
|
using | iterator = typename GhostLayerField< real_t, Stencil::Size >::iterator |
|
using | const_iterator = typename GhostLayerField< real_t, Stencil::Size >::const_iterator |
|
using | reverse_iterator = typename GhostLayerField< real_t, Stencil::Size >::reverse_iterator |
|
using | const_reverse_iterator = typename GhostLayerField< real_t, Stencil::Size >::const_reverse_iterator |
|
using | base_iterator = typename GhostLayerField< real_t, Stencil::Size >::base_iterator |
|
using | const_base_iterator = typename GhostLayerField< real_t, Stencil::Size >::const_base_iterator |
|
using | Ptr = typename GhostLayerField< real_t, Stencil::Size >::Ptr |
|
using | ConstPtr = typename GhostLayerField< real_t, Stencil::Size >::ConstPtr |
|
| PdfField (const uint_t _xSize, const uint_t _ySize, const uint_t _zSize, const LatticeModel_T &_latticeModel, const bool initialize=true, const Vector3< real_t > &initialVelocity=Vector3< real_t >(real_t(0.0)), const real_t initialDensity=real_t(1.0), const uint_t ghostLayers=uint_t(1), const field::Layout &_layout=field::fzyx, const shared_ptr< field::FieldAllocator< real_t > > &alloc=shared_ptr< field::FieldAllocator< real_t > >()) |
|
| ~PdfField () override=default |
|
PdfField * | clone () const |
|
PdfField * | cloneUninitialized () const |
|
PdfField * | cloneShallowCopy () const |
|
const LatticeModel_T & | latticeModel () const |
|
LatticeModel_T & | latticeModel () |
|
void | resetLatticeModel (const LatticeModel_T &lm) |
|
real_t & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) |
|
const real_t & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) const |
|
real_t & | get (const Cell &c, stencil::Direction d) |
|
const real_t & | get (const Cell &c, stencil::Direction d) const |
|
real_t & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) |
|
const real_t & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) const |
|
real_t & | operator() (const Cell &c, stencil::Direction d) |
|
const real_t & | operator() (const Cell &c, stencil::Direction d) const |
|
void | setDensityAndVelocity (const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
void | setDensityAndVelocity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
void | setDensityAndVelocity (const Cell &cell, const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
void | setToEquilibrium (const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
void | setToEquilibrium (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
void | setToEquilibrium (const Cell &cell, const Vector3< real_t > &velocity=Vector3< real_t >(real_t(0.0)), const real_t rho=real_t(1.0)) |
|
real_t | getDensity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getDensity (const Cell &cell) const |
|
real_t | getDensitySI (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t rho_SI) const |
|
real_t | getDensitySI (const Cell &cell, const real_t rho_SI) const |
|
Vector3< real_t > | getMomentumDensity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
Vector3< real_t > | getMomentumDensity (const Cell &cell) const |
|
void | getMomentumDensity (Vector3< real_t > &momentumDensity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | getMomentumDensity (Vector3< real_t > &momentumDensity, const Cell &cell) const |
|
Vector3< real_t > | getEquilibriumMomentumDensity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
Vector3< real_t > | getEquilibriumMomentumDensity (const Cell &cell) const |
|
void | getEquilibriumMomentumDensity (Vector3< real_t > &momentumDensity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | getEquilibriumMomentumDensity (Vector3< real_t > &momentumDensity, const Cell &cell) const |
|
Vector3< real_t > | getVelocity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
Vector3< real_t > | getVelocity (const Cell &cell) const |
|
void | getVelocity (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | getVelocity (Vector3< real_t > &velocity, const Cell &cell) const |
|
Vector3< real_t > | getEquilibriumVelocity (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
Vector3< real_t > | getEquilibriumVelocity (const Cell &cell) const |
|
void | getEquilibriumVelocity (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | getEquilibriumVelocity (Vector3< real_t > &velocity, const Cell &cell) const |
|
Vector3< real_t > | getVelocitySI (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t dx_SI, const real_t dt_SI) const |
|
Vector3< real_t > | getVelocitySI (const Cell &cell, const real_t dx_SI, const real_t dt_SI) const |
|
void | getVelocitySI (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t dx_SI, const real_t dt_SI) const |
|
void | getVelocitySI (Vector3< real_t > &velocity, const Cell &cell, const real_t dx_SI, const real_t dt_SI) const |
|
Vector3< real_t > | getVelocitySI (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t dxDividedByDt_SI) const |
|
Vector3< real_t > | getVelocitySI (const Cell &cell, const real_t dxDividedByDt_SI) const |
|
void | getVelocitySI (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t dxDividedByDt_SI) const |
|
void | getVelocitySI (Vector3< real_t > &velocity, const Cell &cell, const real_t dxDividedByDt_SI) const |
|
real_t | getDensityAndMomentumDensity (Vector3< real_t > &momentumDensity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getDensityAndMomentumDensity (Vector3< real_t > &momentumDensity, const Cell &cell) const |
|
real_t | getDensityAndEquilibriumMomentumDensity (Vector3< real_t > &momentumDensity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getDensityAndEquilibriumMomentumDensity (Vector3< real_t > &momentumDensity, const Cell &cell) const |
|
real_t | getDensityAndVelocity (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getDensityAndVelocity (Vector3< real_t > &velocity, const Cell &cell) const |
|
real_t | getDensityAndEquilibriumVelocity (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getDensityAndEquilibriumVelocity (Vector3< real_t > &velocity, const Cell &cell) const |
|
real_t | getDensityAndVelocitySI (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t rho_SI, const real_t dx_SI, const real_t dt_SI) const |
|
real_t | getDensityAndVelocitySI (Vector3< real_t > &velocity, const Cell &cell, const real_t rho_SI, const real_t dx_SI, const real_t dt_SI) const |
|
real_t | getDensityAndVelocitySI (Vector3< real_t > &velocity, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z, const real_t rho_SI, const real_t dxDividedByDt_SI) const |
|
real_t | getDensityAndVelocitySI (Vector3< real_t > &velocity, const Cell &cell, const real_t rho_SI, const real_t dxDividedByDt_SI) const |
|
real_t | getShearRate (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
real_t | getShearRate (const Cell &cell) const |
|
Matrix3< real_t > | getPressureTensor (const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
Matrix3< real_t > | getPressureTensor (const Cell &cell) const |
|
void | getPressureTensor (Matrix3< real_t > &pressureTensor, const cell_idx_t x, const cell_idx_t y, const cell_idx_t z) const |
|
void | getPressureTensor (Matrix3< real_t > &pressureTensor, const Cell &cell) const |
|
|
using | value_type = typename Field< T, fSize_ >::value_type |
|
using | iterator = typename Field< T, fSize_ >::iterator |
|
using | const_iterator = typename Field< T, fSize_ >::const_iterator |
|
using | reverse_iterator = typename Field< T, fSize_ >::reverse_iterator |
|
using | const_reverse_iterator = typename Field< T, fSize_ >::const_reverse_iterator |
|
using | base_iterator = typename Field< T, fSize_ >::base_iterator |
|
using | const_base_iterator = typename Field< T, fSize_ >::const_base_iterator |
|
using | Ptr = typename Field< T, fSize_ >::Ptr |
|
using | ConstPtr = typename Field< T, fSize_ >::ConstPtr |
|
using | FlattenedField = typename std::conditional< VectorTrait< T >::F_SIZE !=0, GhostLayerField< typename VectorTrait< T >::OutputType, VectorTrait< T >::F_SIZE *fSize_ >, GhostLayerField< T, fSize_ > >::type |
|
using | value_type = T |
|
using | iterator = ForwardFieldIterator< T, fSize_ > |
|
using | const_iterator = ForwardFieldIterator< const T, fSize_ > |
|
using | reverse_iterator = ReverseFieldIterator< T, fSize_ > |
|
using | const_reverse_iterator = ReverseFieldIterator< const T, fSize_ > |
|
using | base_iterator = FieldIterator< T, fSize_ > |
|
using | const_base_iterator = FieldIterator< const T, fSize_ > |
|
using | Ptr = FieldPointer< Field< T, fSize_ >, Field< T, fSize_ >, T > |
|
using | ConstPtr = FieldPointer< Field< T, fSize_ >, const Field< T, fSize_ >, const T > |
|
using | FlattenedField = typename std::conditional< VectorTrait< T >::F_SIZE !=0, Field< typename VectorTrait< T >::OutputType, VectorTrait< T >::F_SIZE *fSize_ >, Field< T, fSize_ > >::type |
|
using | MonitorFunction = std::function< void(cell_idx_t, cell_idx_t, cell_idx_t, cell_idx_t, const T &)> |
|
| GhostLayerField (uint_t xSize, uint_t ySize, uint_t zSize, uint_t gl, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates an uninitialized field of given size. More...
|
|
| GhostLayerField (uint_t xSize, uint_t ySize, uint_t zSize, uint_t gl, const T &initValue, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates a field and initializes it with constant value. More...
|
|
| GhostLayerField (uint_t xSize, uint_t ySize, uint_t zSize, uint_t gl, const std::vector< T > &fValues, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates a field and initializes f coordinate with vector values. More...
|
|
| ~GhostLayerField () override=default |
|
void | init (uint_t xSizeWithoutGhostLayer, uint_t ySizeWithoutGhostLayer, uint_t zSizeWithoutGhostLayer, uint_t nrGhostLayers, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Initializes a field, must be called exactly once. More...
|
|
void | resize (uint_t xSize, uint_t ySize, uint_t zSize) override |
| Deletes all stored data, and resizes the field. More...
|
|
void | resize (uint_t xSize, uint_t ySize, uint_t zSize, uint_t gl) |
| Deletes all stored data, and resizes the field. More...
|
|
GhostLayerField< T, fSize_ > * | clone () const |
|
GhostLayerField< T, fSize_ > * | cloneUninitialized () const |
|
GhostLayerField< T, fSize_ > * | cloneShallowCopy () const |
|
FlattenedField * | flattenedShallowCopy () const |
|
uint_t | xSizeWithGhostLayer () const |
|
uint_t | ySizeWithGhostLayer () const |
|
uint_t | zSizeWithGhostLayer () const |
|
uint_t | sizeWithGhostLayer (uint_t i) const |
|
uint_t | nrOfGhostLayers () const |
|
CellInterval | xyzSizeWithGhostLayer () const |
| Returns the x/y/z Size of the field with ghost layers. More...
|
|
void | setWithGhostLayer (const T &value) |
| Sets all entries (including the ghost layer) of the field to given value. More...
|
|
void | setWithGhostLayer (const std::vector< T > &fValues) |
| Initializes the f coordinate to values from vector, in all cells including the ghost layers Sets the entry (x,y,z,f) to fValues[f]. More...
|
|
iterator | beginWithGhostLayer () |
| Iterator over all cells, including the ghost layers. More...
|
|
const_iterator | beginWithGhostLayer () const |
|
iterator | beginWithGhostLayer (cell_idx_t numGhostLayers) |
|
const_iterator | beginWithGhostLayer (cell_idx_t numGhostLayers) const |
|
iterator | beginWithGhostLayerXYZ () |
| Iterates only over all cells including ghost layers of XYZ coordinate, f is always 0. More...
|
|
const_iterator | beginWithGhostLayerXYZ () const |
|
iterator | beginWithGhostLayerXYZ (cell_idx_t numGhostLayers) |
|
const_iterator | beginWithGhostLayerXYZ (cell_idx_t numGhostLayers) const |
|
iterator | beginGhostLayerOnly (stencil::Direction dir, bool fullSlice=false) |
| Iterates only over ghost layers of a given direction. More...
|
|
const_iterator | beginGhostLayerOnly (stencil::Direction dir, bool fullSlice=false) const |
| Const version of beginGhostLayersOnly() More...
|
|
iterator | beginGhostLayerOnly (uint_t thickness, stencil::Direction dir, bool fullSlice=false) |
| Iterates only over specified number of ghost layers of a given direction. More...
|
|
const_iterator | beginGhostLayerOnly (uint_t thickness, stencil::Direction dir, bool fullSlice=false) const |
| Const version of beginGhostLayersOnly(uint_t thickness, stencil::Direction) More...
|
|
iterator | beginGhostLayerOnlyXYZ (stencil::Direction dir, cell_idx_t f=0, bool fullSlice=false) |
| Iterates only over ghost layers of a given direction, only over xyz coordinates, f is fixed. More...
|
|
const_iterator | beginGhostLayerOnlyXYZ (stencil::Direction dir, cell_idx_t f=0, bool fullSlice=false) const |
| Const version of beginGhostLayersOnlyXYZ() More...
|
|
iterator | beginGhostLayerOnlyXYZ (uint_t thickness, stencil::Direction dir, cell_idx_t f=0, bool fullSlice=false) |
| Iterates only over ghost layers of a given direction, only over xyz coordinates, f is fixed. More...
|
|
const_iterator | beginGhostLayerOnlyXYZ (uint_t thickness, stencil::Direction dir, cell_idx_t f=0, bool fullSlice=false) const |
| Const version of beginGhostLayersOnlyXYZ() More...
|
|
iterator | beginSliceBeforeGhostLayer (stencil::Direction dir, cell_idx_t thickness=1, bool fullSlice=false) |
| Iterates only over the last slice before ghost layer. More...
|
|
const_iterator | beginSliceBeforeGhostLayer (stencil::Direction dir, cell_idx_t thickness=1, bool fullSlice=false) const |
| Const version of beginSliceBeforeGhostLayer() More...
|
|
iterator | beginSliceBeforeGhostLayerXYZ (stencil::Direction dir, cell_idx_t thickness=1, cell_idx_t f=0, bool fullSlice=false) |
| Iterates only over the last slice before ghost layer, only in XYZ direction, f is fixed. More...
|
|
const_iterator | beginSliceBeforeGhostLayerXYZ (stencil::Direction dir, cell_idx_t thickness=1, cell_idx_t f=0, bool fullSlice=false) const |
| Const version of beginSliceBeforeGhostLayerXYZ() More...
|
|
void | getGhostRegion (stencil::Direction dir, CellInterval &ghostAreaOut, cell_idx_t thickness, bool fullSlice=false) const |
|
void | getSliceBeforeGhostLayer (stencil::Direction d, CellInterval &ci, cell_idx_t thickness=1, bool fullSlice=false) const |
|
bool | isInInnerPart (const Cell &cell) const |
| Checks if a given cell is in the inner part of the field ( not in ghost region or outside ) More...
|
|
reverse_iterator | rbeginWithGhostLayer () |
| Reverse Iterator over all cells, including the ghost layers. More...
|
|
const_reverse_iterator | rbeginWithGhostLayer () const |
|
reverse_iterator | rbeginWithGhostLayerXYZ () |
| Iterates only over all cells including ghost layers of XYZ coordinate, f is always 0. More...
|
|
const_reverse_iterator | rbeginWithGhostLayerXYZ () const |
|
GhostLayerField< T, fSize_ > * | getSlicedField (const CellInterval &interval) const |
|
void | slice (const CellInterval &interval) override |
| Changes the coordinate system of the field. More...
|
|
void | shiftCoordinates (cell_idx_t cx, cell_idx_t cy, cell_idx_t cz) override |
|
uint8_t | advanceTimestep () |
|
uint8_t | getTimestep () const |
|
uint8_t | getTimestepPlusOne () const |
|
bool | isEvenTimeStep () const |
|
| Field (uint_t xSize, uint_t ySize, uint_t zSize, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates an uninitialized field of given size. More...
|
|
| Field (uint_t xSize, uint_t ySize, uint_t zSize, const T &initValue, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates a field and initializes it with constant. More...
|
|
| Field (uint_t xSize, uint_t ySize, uint_t zSize, const std::vector< T > &fValues, const Layout &layout=fzyx, const shared_ptr< FieldAllocator< T > > &alloc=shared_ptr< FieldAllocator< T > >()) |
| Creates a field and initializes f coordinate with vector values. More...
|
|
virtual | ~Field () |
| Destructor, using Allocator template parameter. More...
|
|
void | init (uint_t xSize, uint_t ySize, uint_t zSize, const Layout &layout=fzyx, shared_ptr< FieldAllocator< T > > alloc=shared_ptr< FieldAllocator< T > >(), uint_t innerGhostLayerSizeForAlignedAlloc=0) |
| Initializes the field with a given size, in a given layout. More...
|
|
Field< T, fSize_ > * | clone () const |
| Returns a deep copy of the current field. More...
|
|
Field< T, fSize_ > * | cloneUninitialized () const |
| Creates a new field that has equal size and layout as this field. More...
|
|
Field< T, fSize_ > * | cloneShallowCopy () const |
| Returns a shallow copy of the current field. More...
|
|
FlattenedField * | flattenedShallowCopy () const |
| Returns a flattened shallow copy of the current field. More...
|
|
T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z) |
| get function with only (x,y,z) coordinates, assumes fSize=1 More...
|
|
const T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z) const |
| get function with only (x,y,z) coordinates, assumes fSize=1 More...
|
|
T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) |
| Non-Const variant of get() More...
|
|
const T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const |
| Accesses the value at given coordinate. More...
|
|
T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f) |
| get() variant which takes a uint_t as last coordinate, as for example Stencil::toIdx() returns More...
|
|
const T & | get (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f) const |
| get() variant which takes a uint_t as last coordinate, as for example Stencil::toIdx() returns More...
|
|
T & | get (const Cell &cell) |
| get overload using a cell as input, only possible if fSize=1 More...
|
|
const T & | get (const Cell &cell) const |
| get overload using a cell as input, only possible if fSize=1 More...
|
|
T & | get (const Cell &c, cell_idx_t f) |
|
const T & | get (const Cell &c, cell_idx_t f) const |
|
T & | get (const Cell &c, uint_t f) |
|
const T & | get (const Cell &c, uint_t f) const |
|
T & | get (const base_iterator &iter) |
| get overload, where position is specified using an iterator of another field with equal size More...
|
|
const T & | get (const base_iterator &iter) const |
| get overload, where position is specified using an iterator of another field with equal size More...
|
|
T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z) |
|
const T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z) const |
|
T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) |
|
const T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const |
|
T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f) |
|
const T & | operator() (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f) const |
|
T & | operator() (const Cell &cell) |
|
const T & | operator() (const Cell &cell) const |
|
T & | operator() (const Cell &cell, cell_idx_t f) |
|
const T & | operator() (const Cell &cell, cell_idx_t f) const |
|
T & | operator() (const Cell &cell, uint_t f) |
|
const T & | operator() (const Cell &cell, uint_t f) const |
|
T & | operator() (const base_iterator &iter) |
|
const T & | operator() (const base_iterator &iter) const |
|
T & | getNeighbor (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) |
| returns neighboring value of cell in the given direction More...
|
|
const T & | getNeighbor (cell_idx_t x, cell_idx_t y, cell_idx_t z, stencil::Direction d) const |
| returns neighboring value of cell in the given direction More...
|
|
T & | getNeighbor (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f, stencil::Direction d) |
| returns neighboring value of cell in the given direction More...
|
|
const T & | getNeighbor (cell_idx_t x, cell_idx_t y, cell_idx_t z, uint_t f, stencil::Direction d) const |
| returns neighboring value of cell in the given direction More...
|
|
T & | getNeighbor (const Cell &cell, stencil::Direction d) |
| get overload using a cell as input, only possible if fSize=1, with neighbor access More...
|
|
const T & | getNeighbor (const Cell &cell, stencil::Direction d) const |
| get overload using a cell as input, only possible if fSize=1, with neighbor access More...
|
|
T & | getF (T *const xyz0, const cell_idx_t f) |
|
const T & | getF (const T *const xyz0, const cell_idx_t f) const |
|
T & | getF (T *const xyz0, const uint_t f) |
|
const T & | getF (const T *const xyz0, const uint_t f) const |
|
void | set (const T &value) |
| Sets all entries of the field to given value. More...
|
|
void | set (const std::vector< T > &fValues) |
| Initializes the f coordinate to values from vector Sets the entry (x,y,z,f) to fValues[f]. More...
|
|
void | set (const Field< T, fSize_ > &other) |
| Copies all entries of the given field to this field. More...
|
|
void | set (const Field< T, fSize_ > *other) |
|
void | swapDataPointers (Field< T, fSize_ > &other) |
| Swap two fields efficiently by exchanging only values_ pointer The two fields have to have identical sizes and same layout. More...
|
|
void | swapDataPointers (Field< T, fSize_ > *other) |
|
bool | operator== (const Field< T, fSize_ > &other) const |
| Equality operator compares element-wise. More...
|
|
bool | operator!= (const Field< T, fSize_ > &other) const |
| Inequality operator compares element-wise. More...
|
|
bool | hasSameAllocSize (const Field< T, fSize_ > &other) const |
| True if allocation sizes of all dimensions match. More...
|
|
bool | hasSameSize (const Field< T, fSize_ > &other) const |
| True if sizes of all dimensions match. More...
|
|
iterator | begin () |
| Returns iterator, which can iterate over complete field in a suitable order depending on layout. More...
|
|
const_iterator | begin () const |
|
iterator | beginXYZ () |
| Iterates only over XYZ coordinate, f is always 0. More...
|
|
const_iterator | beginXYZ () const |
|
iterator | beginSlice (cell_idx_t xBeg, cell_idx_t yBeg, cell_idx_t zBeg, cell_idx_t fBeg, cell_idx_t xEnd, cell_idx_t yEnd, cell_idx_t zEnd, cell_idx_t fEnd) |
| Returns iterator which iterates over a sub-block of the field. More...
|
|
const_iterator | beginSlice (cell_idx_t xBeg, cell_idx_t yBeg, cell_idx_t zBeg, cell_idx_t fBeg, cell_idx_t xEnd, cell_idx_t yEnd, cell_idx_t zEnd, cell_idx_t fEnd) const |
| Const variant of beginSlice() More...
|
|
iterator | beginSliceXYZ (const CellInterval &interval, cell_idx_t f=0) |
| Returns iterator which iterates over a slice, but only in x,y,z coordinates. More...
|
|
const_iterator | beginSliceXYZ (const CellInterval &interval, cell_idx_t f=0) const |
| Const variant of beginSliceXYZ() More...
|
|
const iterator & | end () |
|
const const_iterator & | end () const |
|
reverse_iterator | rbegin () |
| Returns reverse iterator, which can iterate over complete field in a suitable order depending on layout. More...
|
|
const_reverse_iterator | rbegin () const |
|
reverse_iterator | rbeginXYZ () |
| Iterates only over XYZ coordinate, f is always 0. More...
|
|
const_reverse_iterator | rbeginXYZ () const |
|
const reverse_iterator & | rend () |
|
const const_reverse_iterator & | rend () const |
|
uint_t | xSize () const |
|
uint_t | ySize () const |
|
uint_t | zSize () const |
|
uint_t | fSize () const |
|
uint_t | size (uint_t coord) const |
|
uint_t | xAllocSize () const |
|
uint_t | yAllocSize () const |
|
uint_t | zAllocSize () const |
|
uint_t | fAllocSize () const |
|
uint_t | allocSize () const |
|
CellInterval | xyzSize () const |
|
CellInterval | xyzAllocSize () const |
|
Layout | layout () const |
|
int64_t | xStride () const |
|
int64_t | yStride () const |
|
int64_t | zStride () const |
|
int64_t | fStride () const |
|
cell_idx_t | xOff () const |
|
cell_idx_t | yOff () const |
|
cell_idx_t | zOff () const |
|
bool | coordinatesValid (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const |
|
Field< T, fSize_ > * | getSlicedField (const CellInterval &interval) const |
| Create a different "view" of the field, where the created field has the size of the given sliceInterval. More...
|
|
T * | data () |
|
const T * | data () const |
|
T * | dataAt (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) |
|
const T * | dataAt (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const |
|
T * | dataInner () |
|
const T * | dataInner () const |
|
shared_ptr< FieldAllocator< T > > | getAllocator () const |
| Returns internal data allocator. More...
|
|
void | addMonitoringFunction (const MonitorFunction &func) |
| Registers a monitoring function. More...
|
|
static const uint_t | F_SIZE = fSize_ |
|
static const const_iterator | staticConstEnd = ForwardFieldIterator<const T,fSize_>() |
| Const end iterator, see end() More...
|
|
static const iterator | staticEnd = ForwardFieldIterator<T,fSize_>() |
| End iterator, can be used with begin() and beginBlock() More...
|
|
static const const_reverse_iterator | staticConstREnd = ReverseFieldIterator<const T,fSize_>() |
| Const end iterator, see end() More...
|
|
static const reverse_iterator | staticREnd = ReverseFieldIterator<T,fSize_>() |
| End iterator, can be used with begin() and beginBlock() More...
|
|
| GhostLayerField () |
| Creates a field of zero size. More...
|
|
Field< T, fSize_ >::FlattenedField * | flattenedShallowCopyInternal () const override |
| See Field::flattenedShallowCopyInternal() Has to be re-implemented because a new GhostLayerField is created. More...
|
|
| GhostLayerField (const GhostLayerField< T, fSize_ > &other) |
| Private copy constructor, which does a shallow copy. More...
|
|
template<typename T2 , uint_t fSize2> |
| GhostLayerField (const GhostLayerField< T2, fSize2 > &other) |
| Private copy constructor, which does a flattened shallow copy. More...
|
|
| Field (const Field &other) |
| Private copy constructor that creates a shallow copy i.e. More...
|
|
template<typename T2 , uint_t fSize2> |
| Field (const Field< T2, fSize2 > &other) |
| Private copy constructor that creates a flattened shallow copy i.e. More...
|
|
virtual uint_t | referenceCount () const |
| Returns the number of objects that internally use the same data. More...
|
|
| Field () |
| Creates an uninitialized field of size zero (no allocated memory) More...
|
|
void | setOffsets (uint_t xOffset, uint_t xSize, uint_t yOffset, uint_t ySize, uint_t zOffset, uint_t zSizes) |
| Moves the coordinate system of the field. More...
|
|
shared_ptr< FieldAllocator< T > > | allocator () const |
|
bool | addressInsideAllocedSpace (const T *const value) const |
|
void | assertValidCoordinates (cell_idx_t x, cell_idx_t y, cell_idx_t z, cell_idx_t f) const |
|
uint_t | gl_ |
| Number of ghost layers. More...
|
|
uint8_t | timestepCounter_ |
|