walberla::field::GhostLayerField< T, fSize_ > Class Template Reference

Detailed Description

template<typename T, uint_t fSize_>
class walberla::field::GhostLayerField< T, fSize_ >

Extends the Field with ghost-layer information.

All variants of the begin() function exist also in the "WithGhostLayer" variant which iterate over the field including the ghost layers. There are also iterators that go only over the ghost layer or, only over the last inner slice, which is useful when doing ghost layer based communication.

See also Overview of Field Module

#include <GhostLayerField.h>

+ Inheritance diagram for walberla::field::GhostLayerField< T, fSize_ >:

Public Types

Type Definitions
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
 
- Public Types inherited from walberla::field::Field< T, fSize_ >
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 &)>
 

Public Member Functions

Construction & Destruction
 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
 
FlattenedFieldflattenedShallowCopy () const
 
Size Information
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...
 
Element Access
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...
 
Iterators
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 Iterators
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
 
Slicing
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
 
- Public Member Functions inherited from walberla::field::Field< T, fSize_ >
 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...
 
FlattenedFieldflattenedShallowCopy () 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 iteratorend ()
 
const const_iteratorend () 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_iteratorrend ()
 
const const_reverse_iteratorrend () 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...
 

TimestepCounter

uint_t gl_
 Number of ghost layers. More...
 
uint8_t advanceTimestep ()
 
uint8_t getTimestep () const
 
uint8_t getTimestepPlusOne () const
 
bool isEvenTimeStep () const
 
 GhostLayerField ()
 Creates a field of zero size. More...
 

Shallow Copy

uint8_t timestepCounter_
 
template<typename T2 , uint_t fSize2>
class GhostLayerField
 
Field< T, fSize_ > * cloneShallowCopyInternal () const override
 See Field::cloneShallowCopyInternal() Has to be re-implemented because a new GhostLayerField is created. More...
 
Field< T, fSize_ >::FlattenedFieldflattenedShallowCopyInternal () 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...
 

Additional Inherited Members

- Static Public Attributes inherited from walberla::field::Field< T, fSize_ >
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...
 
- Protected Member Functions inherited from walberla::field::Field< T, fSize_ >
 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
 

Member Typedef Documentation

◆ base_iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::base_iterator = typename Field<T, fSize_>::base_iterator

◆ const_base_iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::const_base_iterator = typename Field<T, fSize_>::const_base_iterator

◆ const_iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::const_iterator = typename Field<T, fSize_>::const_iterator

◆ const_reverse_iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::const_reverse_iterator = typename Field<T, fSize_>::const_reverse_iterator

◆ ConstPtr

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::ConstPtr = typename Field<T, fSize_>::ConstPtr

◆ FlattenedField

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::FlattenedField = typename std::conditional<VectorTrait<T>::F_SIZE != 0, GhostLayerField<typename VectorTrait<T>::OutputType, VectorTrait<T>::F_SIZE * fSize_>, GhostLayerField<T, fSize_> >::type

◆ iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::iterator = typename Field<T, fSize_>::iterator

◆ Ptr

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::Ptr = typename Field<T, fSize_>::Ptr

◆ reverse_iterator

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::reverse_iterator = typename Field<T, fSize_>::reverse_iterator

◆ value_type

template<typename T , uint_t fSize_>
using walberla::field::GhostLayerField< T, fSize_ >::value_type = typename Field<T, fSize_>::value_type

Constructor & Destructor Documentation

◆ GhostLayerField() [1/6]

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize,
uint_t  gl,
const Layout l = fzyx,
const shared_ptr< FieldAllocator< T > > &  alloc = shared_ptr<FieldAllocator<T> >() 
)

Creates an uninitialized field of given size.

Parameters
_xSizesize of x dimension without ghost layers
_ySizesize of y dimension without ghost layers
_zSizesize of z dimension without ghost layers
glnumber of ghost layers
lmemory layout of the field (see Layout)
allocclass that describes how to allocate memory for the field, see FieldAllocator

◆ GhostLayerField() [2/6]

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize,
uint_t  gl,
const T &  initVal,
const Layout l = fzyx,
const shared_ptr< FieldAllocator< T > > &  alloc = shared_ptr<FieldAllocator<T> >() 
)

Creates a field and initializes it with constant value.

Parameters
_xSizesize of x dimension without ghost layers
_ySizesize of y dimension without ghost layers
_zSizesize of z dimension without ghost layers
glnumber of ghost layers
initValevery element of the field is set to initVal (also ghost layers)
lmemory layout of the field (see Layout)
allocclass that describes how to allocate memory for the field, see FieldAllocator

◆ GhostLayerField() [3/6]

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize,
uint_t  gl,
const std::vector< T > &  fValues,
const Layout l = fzyx,
const shared_ptr< FieldAllocator< T > > &  alloc = shared_ptr<FieldAllocator<T> >() 
)

Creates a field and initializes f coordinate with vector values.

Parameters
_xSizesize of x dimension
_ySizesize of y dimension
_zSizesize of z dimension
glnumber of ghost layers
fValuesinitializes f coordinate with values from vector (see set(std::vector&) ) also ghost layers
lmemory layout of the field (see Layout)
allocclass that describes how to allocate memory for the field, see FieldAllocator

◆ ~GhostLayerField()

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::~GhostLayerField ( )
overridedefault

◆ GhostLayerField() [4/6]

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField
protected

Creates a field of zero size.

To use this field call the init function

◆ GhostLayerField() [5/6]

template<typename T , uint_t fSize_>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField ( const GhostLayerField< T, fSize_ > &  other)
protected

Private copy constructor, which does a shallow copy.

◆ GhostLayerField() [6/6]

template<typename T , uint_t fSize_>
template<typename T2 , uint_t fSize2>
walberla::field::GhostLayerField< T, fSize_ >::GhostLayerField ( const GhostLayerField< T2, fSize2 > &  other)
protected

Private copy constructor, which does a flattened shallow copy.

Member Function Documentation

◆ advanceTimestep()

template<typename T , uint_t fSize_>
uint8_t walberla::field::GhostLayerField< T, fSize_ >::advanceTimestep ( )
inline

◆ beginGhostLayerOnly() [1/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnly ( stencil::Direction  dir,
bool  fullSlice = false 
)
inline

Iterates only over ghost layers of a given direction.

◆ beginGhostLayerOnly() [2/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnly ( stencil::Direction  dir,
bool  fullSlice = false 
) const
inline

Const version of beginGhostLayersOnly()

◆ beginGhostLayerOnly() [3/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnly ( uint_t  thickness,
stencil::Direction  dir,
bool  fullSlice = false 
)
inline

Iterates only over specified number of ghost layers of a given direction.

◆ beginGhostLayerOnly() [4/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnly ( uint_t  thickness,
stencil::Direction  dir,
bool  fullSlice = false 
) const
inline

Const version of beginGhostLayersOnly(uint_t thickness, stencil::Direction)

◆ beginGhostLayerOnlyXYZ() [1/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnlyXYZ ( stencil::Direction  dir,
cell_idx_t  f = 0,
bool  fullSlice = false 
)
inline

Iterates only over ghost layers of a given direction, only over xyz coordinates, f is fixed.

◆ beginGhostLayerOnlyXYZ() [2/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnlyXYZ ( stencil::Direction  dir,
cell_idx_t  f = 0,
bool  fullSlice = false 
) const
inline

Const version of beginGhostLayersOnlyXYZ()

◆ beginGhostLayerOnlyXYZ() [3/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnlyXYZ ( uint_t  thickness,
stencil::Direction  dir,
cell_idx_t  f = 0,
bool  fullSlice = false 
)
inline

Iterates only over ghost layers of a given direction, only over xyz coordinates, f is fixed.

◆ beginGhostLayerOnlyXYZ() [4/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginGhostLayerOnlyXYZ ( uint_t  thickness,
stencil::Direction  dir,
cell_idx_t  f = 0,
bool  fullSlice = false 
) const
inline

Const version of beginGhostLayersOnlyXYZ()

◆ beginSliceBeforeGhostLayer() [1/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginSliceBeforeGhostLayer ( stencil::Direction  dir,
cell_idx_t  thickness = 1,
bool  fullSlice = false 
)
inline

Iterates only over the last slice before ghost layer.

◆ beginSliceBeforeGhostLayer() [2/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginSliceBeforeGhostLayer ( stencil::Direction  dir,
cell_idx_t  thickness = 1,
bool  fullSlice = false 
) const
inline

Const version of beginSliceBeforeGhostLayer()

◆ beginSliceBeforeGhostLayerXYZ() [1/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginSliceBeforeGhostLayerXYZ ( stencil::Direction  dir,
cell_idx_t  thickness = 1,
cell_idx_t  f = 0,
bool  fullSlice = false 
)
inline

Iterates only over the last slice before ghost layer, only in XYZ direction, f is fixed.

◆ beginSliceBeforeGhostLayerXYZ() [2/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginSliceBeforeGhostLayerXYZ ( stencil::Direction  dir,
cell_idx_t  thickness = 1,
cell_idx_t  f = 0,
bool  fullSlice = false 
) const
inline

◆ beginWithGhostLayer() [1/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayer
inline

Iterator over all cells, including the ghost layers.

Returns const_iterator, see beginWithGhostLayer()

same as begin() , but with ghost layer

◆ beginWithGhostLayer() [2/4]

template<typename T , uint_t fSize_>
const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayer ( ) const

◆ beginWithGhostLayer() [3/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayer ( cell_idx_t  numGhostLayers)
inline

◆ beginWithGhostLayer() [4/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayer ( cell_idx_t  numGhostLayers) const
inline

◆ beginWithGhostLayerXYZ() [1/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayerXYZ
inline

Iterates only over all cells including ghost layers of XYZ coordinate, f is always 0.

Const version of beginWithGhostLayerXYZ()

◆ beginWithGhostLayerXYZ() [2/4]

template<typename T , uint_t fSize_>
const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayerXYZ ( ) const

◆ beginWithGhostLayerXYZ() [3/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayerXYZ ( cell_idx_t  numGhostLayers)
inline

◆ beginWithGhostLayerXYZ() [4/4]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_iterator walberla::field::GhostLayerField< T, fSize_ >::beginWithGhostLayerXYZ ( cell_idx_t  numGhostLayers) const
inline

◆ clone()

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ > * walberla::field::GhostLayerField< T, fSize_ >::clone
inline

◆ cloneShallowCopy()

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ > * walberla::field::GhostLayerField< T, fSize_ >::cloneShallowCopy
inline

◆ cloneShallowCopyInternal()

template<typename T , uint_t fSize_>
Field< T, fSize_ > * walberla::field::GhostLayerField< T, fSize_ >::cloneShallowCopyInternal
overrideprotectedvirtual

◆ cloneUninitialized()

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ > * walberla::field::GhostLayerField< T, fSize_ >::cloneUninitialized
inline

◆ flattenedShallowCopy()

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::FlattenedField * walberla::field::GhostLayerField< T, fSize_ >::flattenedShallowCopy
inline

◆ flattenedShallowCopyInternal()

template<typename T , uint_t fSize_>
Field< T, fSize_ >::FlattenedField * walberla::field::GhostLayerField< T, fSize_ >::flattenedShallowCopyInternal
overrideprotectedvirtual

See Field::flattenedShallowCopyInternal() Has to be re-implemented because a new GhostLayerField is created.

Reimplemented from walberla::field::Field< T, fSize_ >.

◆ getGhostRegion()

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::getGhostRegion ( stencil::Direction  dir,
CellInterval ghostAreaOut,
cell_idx_t  thickness,
bool  fullSlice = false 
) const

◆ getSliceBeforeGhostLayer()

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::getSliceBeforeGhostLayer ( stencil::Direction  d,
CellInterval ci,
cell_idx_t  thickness = 1,
bool  fullSlice = false 
) const

◆ getSlicedField()

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ > * walberla::field::GhostLayerField< T, fSize_ >::getSlicedField ( const CellInterval interval) const

◆ getTimestep()

template<typename T , uint_t fSize_>
uint8_t walberla::field::GhostLayerField< T, fSize_ >::getTimestep ( ) const
inline

◆ getTimestepPlusOne()

template<typename T , uint_t fSize_>
uint8_t walberla::field::GhostLayerField< T, fSize_ >::getTimestepPlusOne ( ) const
inline

◆ init()

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::init ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize,
uint_t  gl,
const Layout l = fzyx,
const shared_ptr< FieldAllocator< T > > &  alloc = shared_ptr<FieldAllocator<T> >() 
)

Initializes a field, must be called exactly once.

Is automatically called by constructors that take at least one argument

Parameters
_xSizesize of x dimension without ghost layers
_ySizesize of y dimension without ghost layers
_zSizesize of z dimension without ghost layers
glnumber of ghost layers
lmemory layout of the field (see Layout)
allocclass that describes how to allocate memory for the field, see FieldAllocator

◆ isEvenTimeStep()

template<typename T , uint_t fSize_>
bool walberla::field::GhostLayerField< T, fSize_ >::isEvenTimeStep ( ) const
inline

◆ isInInnerPart()

template<typename T , uint_t fSize_>
bool walberla::field::GhostLayerField< T, fSize_ >::isInInnerPart ( const Cell cell) const

Checks if a given cell is in the inner part of the field ( not in ghost region or outside )

◆ nrOfGhostLayers()

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::nrOfGhostLayers ( ) const
inline

◆ rbeginWithGhostLayer() [1/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_reverse_iterator walberla::field::GhostLayerField< T, fSize_ >::rbeginWithGhostLayer
inline

Reverse Iterator over all cells, including the ghost layers.

Returns const_iterator, see beginWithGhostLayer()

same as rbegin() , but with ghost layer

◆ rbeginWithGhostLayer() [2/2]

template<typename T , uint_t fSize_>
const_reverse_iterator walberla::field::GhostLayerField< T, fSize_ >::rbeginWithGhostLayer ( ) const

◆ rbeginWithGhostLayerXYZ() [1/2]

template<typename T , uint_t fSize_>
GhostLayerField< T, fSize_ >::const_reverse_iterator walberla::field::GhostLayerField< T, fSize_ >::rbeginWithGhostLayerXYZ
inline

Iterates only over all cells including ghost layers of XYZ coordinate, f is always 0.

Const version of beginWithGhostLayerXYZ()

◆ rbeginWithGhostLayerXYZ() [2/2]

template<typename T , uint_t fSize_>
const_reverse_iterator walberla::field::GhostLayerField< T, fSize_ >::rbeginWithGhostLayerXYZ ( ) const

◆ resize() [1/2]

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::resize ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize 
)
overridevirtual

Deletes all stored data, and resizes the field.

The resized field is uninitialized.

Reimplemented from walberla::field::Field< T, fSize_ >.

◆ resize() [2/2]

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::resize ( uint_t  _xSize,
uint_t  _ySize,
uint_t  _zSize,
uint_t  _gl 
)

Deletes all stored data, and resizes the field.

The resized field is uninitialized.

◆ setWithGhostLayer() [1/2]

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::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].

◆ setWithGhostLayer() [2/2]

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::setWithGhostLayer ( const T &  value)

Sets all entries (including the ghost layer) of the field to given value.

◆ shiftCoordinates()

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::shiftCoordinates ( cell_idx_t  cx,
cell_idx_t  cy,
cell_idx_t  cz 
)
overridevirtual

◆ sizeWithGhostLayer()

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::sizeWithGhostLayer ( uint_t  i) const
inline

◆ slice()

template<typename T , uint_t fSize_>
void walberla::field::GhostLayerField< T, fSize_ >::slice ( const CellInterval interval)
overridevirtual

Changes the coordinate system of the field.

The origin of the new coordinates is at the cell given by min() of the CellInterval. The new size of the field, is the size of the the CellInterval, however the alloc size does not change. Cells that are not in this cell interval can still be accessed ( by coordinates smaller 0, or bigger than [xyz]Size)

Reimplemented from walberla::field::Field< T, fSize_ >.

◆ xSizeWithGhostLayer()

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::xSizeWithGhostLayer ( ) const
inline

◆ xyzSizeWithGhostLayer()

template<typename T , uint_t fSize_>
CellInterval walberla::field::GhostLayerField< T, fSize_ >::xyzSizeWithGhostLayer
inline

Returns the x/y/z Size of the field with ghost layers.

◆ ySizeWithGhostLayer()

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::ySizeWithGhostLayer ( ) const
inline

◆ zSizeWithGhostLayer()

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::zSizeWithGhostLayer ( ) const
inline

Friends And Related Function Documentation

◆ GhostLayerField

template<typename T , uint_t fSize_>
template<typename T2 , uint_t fSize2>
friend class GhostLayerField
friend

Member Data Documentation

◆ gl_

template<typename T , uint_t fSize_>
uint_t walberla::field::GhostLayerField< T, fSize_ >::gl_
protected

Number of ghost layers.

◆ timestepCounter_

template<typename T , uint_t fSize_>
uint8_t walberla::field::GhostLayerField< T, fSize_ >::timestepCounter_
protected

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