CubbyFlow::VertexCenteredScalarGrid< N > Class Template Referencefinal

N-D Vertex-centered scalar grid structure. More...

#include <Core/Grid/VertexCenteredScalarGrid.hpp>

Inheritance diagram for CubbyFlow::VertexCenteredScalarGrid< N >:
CubbyFlow::ScalarGrid< N > CubbyFlow::ScalarField< N > CubbyFlow::Grid< N > CubbyFlow::Field< N > CubbyFlow::Serializable

Classes

class  Builder
 Front-end to create VertexCenteredScalarGrid objects step by step. More...
 

Public Member Functions

 VertexCenteredScalarGrid ()=default
 Constructs zero-sized grid. More...
 
 VertexCenteredScalarGrid (const Vector< size_t, N > &resolution, const Vector< double, N > &gridSpacing=Vector< double, N >::MakeConstant(1), const Vector< double, N > &origin=Vector< double, N >{}, double initialValue=0.0)
 
 ~VertexCenteredScalarGrid () override=default
 Default virtual destructor. More...
 
 VertexCenteredScalarGrid (const VertexCenteredScalarGrid &other)
 Copy constructor. More...
 
 VertexCenteredScalarGrid (VertexCenteredScalarGrid &&other) noexcept
 Move constructor. More...
 
VertexCenteredScalarGrid< N > & operator= (const VertexCenteredScalarGrid &other)
 Copy assignment operator. More...
 
VertexCenteredScalarGrid< N > & operator= (VertexCenteredScalarGrid &&other) noexcept
 Move assignment operator. More...
 
Vector< size_t, N > DataSize () const override
 Returns the actual data point size. More...
 
Vector< double, N > DataOrigin () const override
 
std::shared_ptr< ScalarGrid< N > > Clone () const override
 Returns the copy of the grid instance. More...
 
void Swap (Grid< N > *other) override
 Swaps the contents with the given other grid. More...
 
void Set (const VertexCenteredScalarGrid< N > &other)
 Sets the contents with the given other grid. More...
 
- Public Member Functions inherited from CubbyFlow::ScalarGrid< N >
 ScalarGrid ()
 Constructs an empty grid. More...
 
 ~ScalarGrid () override=default
 Default virtual destructor. More...
 
 ScalarGrid (const ScalarGrid &other)
 Copy constructor. More...
 
 ScalarGrid (ScalarGrid &&other) noexcept
 Move constructor. More...
 
ScalarGridoperator= (const ScalarGrid &other)
 Copy assignment operator. More...
 
ScalarGridoperator= (ScalarGrid &&other) noexcept
 Move assignment operator. More...
 
void Clear ()
 Clears the contents of the grid. More...
 
void Resize (const Vector< size_t, N > &resolution, const Vector< double, N > &gridSpacing=Vector< double, N >::MakeConstant(1), const Vector< double, N > &origin=Vector< double, N >{}, double initialValue=0.0)
 Resizes the grid using given parameters. More...
 
void Resize (const Vector< double, N > &gridSpacing, const Vector< double, N > &origin)
 Resizes the grid using given parameters. More...
 
const double & operator() (const Vector< size_t, N > &idx) const
 Returns the grid data at given data point. More...
 
double & operator() (const Vector< size_t, N > &idx)
 Returns the grid data at given data point. More...
 
template<typename... Indices>
const double & operator() (size_t i, Indices... indices) const
 Returns the grid data at given data point. More...
 
template<typename... Indices>
double & operator() (size_t i, Indices... indices)
 Returns the grid data at given data point. More...
 
Vector< double, N > GradientAtDataPoint (const Vector< size_t, N > &idx) const
 Returns the gradient vector at given data point. More...
 
template<typename... Indices>
Vector< double, N > GradientAtDataPoint (size_t i, Indices... indices) const
 Returns the gradient vector at given data point. More...
 
double LaplacianAtDataPoint (const Vector< size_t, N > &idx) const
 Returns the Laplacian at given data point. More...
 
template<typename... Indices>
double LaplacianAtDataPoint (size_t i, Indices... indices) const
 Returns the Laplacian at given data point. More...
 
ScalarDataView DataView ()
 Returns the read-write data array accessor. More...
 
ConstScalarDataView DataView () const
 Returns the read-only data array accessor. More...
 
GridDataPositionFunc< N > DataPosition () const
 Returns the function that maps data point to its position. More...
 
void Fill (double value, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Fills the grid with given value. More...
 
void Fill (const std::function< double(const Vector< double, N > &)> &func, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Fills the grid with given position-to-value mapping function. More...
 
void ForEachDataPointIndex (const std::function< void(const Vector< size_t, N > &)> &func) const
 Invokes the given function func for each data point. More...
 
template<size_t M = N>
std::enable_if_t< M==2, void > ForEachDataPointIndex (const std::function< void(size_t, size_t)> &func) const
 
template<size_t M = N>
std::enable_if_t< M==3, void > ForEachDataPointIndex (const std::function< void(size_t, size_t, size_t)> &func) const
 
void ParallelForEachDataPointIndex (const std::function< void(const Vector< size_t, N > &)> &func) const
 Invokes the given function func for each data point in parallel. More...
 
template<size_t M = N>
std::enable_if_t< M==2, void > ParallelForEachDataPointIndex (const std::function< void(size_t, size_t)> &func) const
 
template<size_t M = N>
std::enable_if_t< M==3, void > ParallelForEachDataPointIndex (const std::function< void(size_t, size_t, size_t)> &func) const
 
double Sample (const Vector< double, N > &x) const override
 Returns the sampled value at given position x. More...
 
std::function< double(const Vector< double, N > &)> Sampler () const override
 Returns the sampler function. More...
 
Vector< double, N > Gradient (const Vector< double, N > &x) const override
 Returns the gradient vector at given position x. More...
 
double Laplacian (const Vector< double, N > &x) const override
 Returns the Laplacian at given position x. More...
 
void Serialize (std::vector< uint8_t > *buffer) const override
 Serializes the grid instance to the output buffer. More...
 
void Deserialize (const std::vector< uint8_t > &buffer) override
 Deserializes the input buffer to the grid instance. More...
 
- Public Member Functions inherited from CubbyFlow::ScalarField< N >
 ScalarField ()=default
 Default constructor. More...
 
 ~ScalarField () override=default
 Default destructor. More...
 
 ScalarField (const ScalarField &)=default
 Default copy constructor. More...
 
 ScalarField (ScalarField &&) noexcept=default
 Default move constructor. More...
 
ScalarFieldoperator= (const ScalarField &)=default
 Default copy assignment operator. More...
 
ScalarFieldoperator= (ScalarField &&) noexcept=default
 Default move assignment operator. More...
 
- Public Member Functions inherited from CubbyFlow::Field< N >
 Field ()=default
 Default constructor. More...
 
virtual ~Field ()=default
 Default virtual destructor. More...
 
 Field (const Field &)=default
 Default copy constructor. More...
 
 Field (Field &&) noexcept=default
 Default move constructor. More...
 
Fieldoperator= (const Field &)=default
 Default copy assignment operator. More...
 
Fieldoperator= (Field &&) noexcept=default
 Default move assignment operator. More...
 
- Public Member Functions inherited from CubbyFlow::Grid< N >
 Grid ()=default
 Constructs an empty grid. More...
 
 ~Grid () override=default
 Default virtual destructor. More...
 
 Grid (const Grid &other)
 Copy constructor. More...
 
 Grid (Grid &&other) noexcept
 Move constructor. More...
 
Gridoperator= (const Grid &other)
 Copy assignment operator. More...
 
Gridoperator= (Grid &&other) noexcept
 Move assignment operator. More...
 
virtual std::string TypeName () const =0
 Returns the type name of derived grid. More...
 
const Vector< size_t, N > & Resolution () const
 Returns the grid resolution. More...
 
const Vector< double, N > & Origin () const
 Returns the grid origin. More...
 
const Vector< double, N > & GridSpacing () const
 Returns the grid spacing. More...
 
const BoundingBox< double, N > & GetBoundingBox () const
 Returns the bounding box of the grid. More...
 
GridDataPositionFunc< N > CellCenterPosition () const
 Returns the function that maps grid index to the cell-center position. More...
 
void ForEachCellIndex (const std::function< void(const Vector< size_t, N > &)> &func) const
 Invokes the given function func for each grid cell. More...
 
template<size_t M = N>
std::enable_if_t< M==2, void > ForEachCellIndex (const std::function< void(size_t, size_t)> &func) const
 
template<size_t M = N>
std::enable_if_t< M==3, void > ForEachCellIndex (const std::function< void(size_t, size_t, size_t)> &func) const
 
void ParallelForEachCellIndex (const std::function< void(const Vector< size_t, N > &)> &func) const
 Invokes the given function func for each grid cell in parallel. More...
 
template<size_t M = N>
std::enable_if_t< M==2, void > ParallelForEachCellIndex (const std::function< void(size_t, size_t)> &func) const
 
template<size_t M = N>
std::enable_if_t< M==3, void > ParallelForEachCellIndex (const std::function< void(size_t, size_t, size_t)> &func) const
 
bool HasSameShape (const Grid &other) const
 Returns true if resolution, grid-spacing and origin are same. More...
 
- Public Member Functions inherited from CubbyFlow::Serializable
 Serializable ()=default
 Default constructor. More...
 
 Serializable (const Serializable &)=default
 Default copy constructor. More...
 
 Serializable (Serializable &&) noexcept=default
 Default move constructor. More...
 
virtual ~Serializable ()=default
 Default virtual destructor. More...
 
Serializableoperator= (const Serializable &)=default
 Default copy assignment operator. More...
 
Serializableoperator= (Serializable &&) noexcept=default
 Default move assignment operator. More...
 

Static Public Member Functions

static Builder GetBuilder ()
 Returns builder fox VertexCenteredScalarGrid<N>. More...
 

Additional Inherited Members

- Public Types inherited from CubbyFlow::ScalarGrid< N >
using ScalarDataView = ArrayView< double, N >
 Read-write array view type. More...
 
using ConstScalarDataView = ArrayView< const double, N >
 Read-only array view type. More...
 
- Protected Member Functions inherited from CubbyFlow::ScalarGrid< N >
void SwapScalarGrid (ScalarGrid *other)
 Swaps the data storage and predefined samplers with given grid. More...
 
void SetScalarGrid (const ScalarGrid &other)
 Sets the data storage and predefined samplers with given grid. More...
 
void GetData (Array1< double > &data) const override
 Fetches the data into a continuous linear array. More...
 
void SetData (const ConstArrayView1< double > &data) override
 Sets the data from a continuous linear array. More...
 
- Protected Member Functions inherited from CubbyFlow::Grid< N >
void SetSizeParameters (const Vector< size_t, N > &resolution, const Vector< double, N > &gridSpacing, const Vector< double, N > &origin)
 
void SwapGrid (Grid *other)
 Swaps the size parameters with given grid other. More...
 
void SetGrid (const Grid &other)
 Sets the size parameters with given grid other. More...
 

Detailed Description

template<size_t N>
class CubbyFlow::VertexCenteredScalarGrid< N >

N-D Vertex-centered scalar grid structure.

This class represents N-D vertex-centered scalar grid which extends ScalarGrid. As its name suggests, the class defines the data point at the grid vertices (corners). Thus, A x B x ... grid resolution will have (A+1) x (B+1) x ... data points.

Constructor & Destructor Documentation

◆ VertexCenteredScalarGrid() [1/4]

template<size_t N>
CubbyFlow::VertexCenteredScalarGrid< N >::VertexCenteredScalarGrid ( )
default

Constructs zero-sized grid.

◆ VertexCenteredScalarGrid() [2/4]

template<size_t N>
CubbyFlow::VertexCenteredScalarGrid< N >::VertexCenteredScalarGrid ( const Vector< size_t, N > &  resolution,
const Vector< double, N > &  gridSpacing = Vector< double, N >::MakeConstant(1),
const Vector< double, N > &  origin = Vector< double, N >{},
double  initialValue = 0.0 
)

Constructs a grid with given resolution, grid spacing, origin and initial value.

◆ ~VertexCenteredScalarGrid()

template<size_t N>
CubbyFlow::VertexCenteredScalarGrid< N >::~VertexCenteredScalarGrid ( )
overridedefault

Default virtual destructor.

◆ VertexCenteredScalarGrid() [3/4]

Copy constructor.

◆ VertexCenteredScalarGrid() [4/4]

template<size_t N>
CubbyFlow::VertexCenteredScalarGrid< N >::VertexCenteredScalarGrid ( VertexCenteredScalarGrid< N > &&  other)
noexcept

Move constructor.

Member Function Documentation

◆ Clone()

template<size_t N>
std::shared_ptr<ScalarGrid<N> > CubbyFlow::VertexCenteredScalarGrid< N >::Clone ( ) const
overridevirtual

Returns the copy of the grid instance.

Implements CubbyFlow::ScalarGrid< N >.

◆ DataOrigin()

template<size_t N>
Vector<double, N> CubbyFlow::VertexCenteredScalarGrid< N >::DataOrigin ( ) const
overridevirtual

Returns data position for the grid point at (0, 0, ...). Note that this is different from origin() since origin() returns the lower corner point of the bounding box.

Implements CubbyFlow::ScalarGrid< N >.

◆ DataSize()

template<size_t N>
Vector<size_t, N> CubbyFlow::VertexCenteredScalarGrid< N >::DataSize ( ) const
overridevirtual

Returns the actual data point size.

Implements CubbyFlow::ScalarGrid< N >.

◆ GetBuilder()

template<size_t N>
static Builder CubbyFlow::VertexCenteredScalarGrid< N >::GetBuilder ( )
static

Returns builder fox VertexCenteredScalarGrid<N>.

◆ operator=() [1/2]

template<size_t N>
VertexCenteredScalarGrid<N>& CubbyFlow::VertexCenteredScalarGrid< N >::operator= ( const VertexCenteredScalarGrid< N > &  other)

Copy assignment operator.

◆ operator=() [2/2]

template<size_t N>
VertexCenteredScalarGrid<N>& CubbyFlow::VertexCenteredScalarGrid< N >::operator= ( VertexCenteredScalarGrid< N > &&  other)
noexcept

Move assignment operator.

◆ Set()

template<size_t N>
void CubbyFlow::VertexCenteredScalarGrid< N >::Set ( const VertexCenteredScalarGrid< N > &  other)

Sets the contents with the given other grid.

◆ Swap()

template<size_t N>
void CubbyFlow::VertexCenteredScalarGrid< N >::Swap ( Grid< N > *  other)
overridevirtual

Swaps the contents with the given other grid.

This function swaps the contents of the grid instance with the given grid object other only if other has the same type with this grid.

Implements CubbyFlow::Grid< N >.


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