CubbyFlow::CollocatedVectorGrid< N > Class Template Referenceabstract

Abstract base class for N-D collocated vector grid structure. More...

#include <Core/Grid/CollocatedVectorGrid.hpp>

Inheritance diagram for CubbyFlow::CollocatedVectorGrid< N >:
CubbyFlow::VectorGrid< N > CubbyFlow::VectorField< N > CubbyFlow::Grid< N > CubbyFlow::Field< N > CubbyFlow::Serializable CubbyFlow::CellCenteredVectorGrid< N > CubbyFlow::VertexCenteredVectorGrid< N >

Public Member Functions

 CollocatedVectorGrid ()
 Constructs an empty grid. More...
 
 ~CollocatedVectorGrid () override=default
 Default virtual destructor. More...
 
 CollocatedVectorGrid (const CollocatedVectorGrid &other)=default
 Default copy constructor. More...
 
 CollocatedVectorGrid (CollocatedVectorGrid &&other) noexcept=default
 Default move constructor. More...
 
CollocatedVectorGridoperator= (const CollocatedVectorGrid &other)=default
 Default copy assignment operator. More...
 
CollocatedVectorGridoperator= (CollocatedVectorGrid &&other) noexcept=default
 Default move assignment operator. More...
 
virtual Vector< size_t, N > DataSize () const =0
 Returns the actual data point size. More...
 
virtual Vector< double, N > DataOrigin () const =0
 Returns data position for the grid point at (0, 0, ...). More...
 
const Vector< double, N > & operator() (const Vector< size_t, N > &idx) const
 Returns the grid data at given data point. More...
 
Vector< double, N > & operator() (const Vector< size_t, N > &idx)
 Returns the grid data at given data point. More...
 
template<typename... Indices>
const Vector< double, N > & operator() (size_t i, Indices... indices) const
 Returns the grid data at given data point. More...
 
template<typename... Indices>
Vector< double, N > & operator() (size_t i, Indices... indices)
 Returns the grid data at given data point. More...
 
double DivergenceAtDataPoint (const Vector< size_t, N > &idx) const
 Returns divergence at data point location. More...
 
template<typename... Indices>
double DivergenceAtDataPoint (size_t i, Indices... indices) const
 Returns divergence at data point location. More...
 
GetCurl< N >::Type CurlAtDataPoint (const Vector< size_t, N > &idx) const
 Returns curl at data point location. More...
 
template<typename... Indices>
GetCurl< N >::Type CurlAtDataPoint (size_t i, Indices... indices) const
 Returns curl at data point location. More...
 
VectorDataView DataView ()
 Returns the read-write data array view. More...
 
ConstVectorDataView DataView () const
 Returns the read-only data array view. More...
 
GridDataPositionFunc< N > DataPosition () const
 Returns the function that maps data point to its position. 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
 
Vector< double, N > Sample (const Vector< double, N > &x) const override
 Returns sampled value at given position x. More...
 
double Divergence (const Vector< double, N > &x) const override
 Returns divergence at given position x. More...
 
GetCurl< N >::Type Curl (const Vector< double, N > &x) const override
 Returns curl at given position x. More...
 
std::function< Vector< double, N >const Vector< double, N > &)> Sampler () const override
 Returns the sampler function. More...
 
- Public Member Functions inherited from CubbyFlow::VectorGrid< N >
 VectorGrid ()=default
 Constructs an empty grid. More...
 
 ~VectorGrid () override=default
 Default virtual destructor. More...
 
 VectorGrid (const VectorGrid &other)
 Copy constructor. More...
 
 VectorGrid (VectorGrid &&other) noexcept
 Move constructor. More...
 
VectorGridoperator= (const VectorGrid &other)
 Copy assignment operator. More...
 
VectorGridoperator= (VectorGrid &&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.0), const Vector< double, N > &origin=Vector< double, N >{}, const Vector< double, N > &initialValue=Vector< double, N >{})
 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...
 
virtual void Fill (const Vector< double, N > &value, ExecutionPolicy policy=ExecutionPolicy::Parallel)=0
 Fills the grid with given value. More...
 
virtual void Fill (const std::function< Vector< double, N >(const Vector< double, N > &)> &func, ExecutionPolicy policy=ExecutionPolicy::Parallel)=0
 Fills the grid with given position-to-value mapping function. More...
 
virtual std::shared_ptr< VectorGrid< N > > Clone () const =0
 Returns the copy of the grid instance. 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::VectorField< N >
 VectorField ()=default
 Default constructor. More...
 
 ~VectorField () override=default
 Default destructor. More...
 
 VectorField (const VectorField &)=default
 Default copy constructor. More...
 
 VectorField (VectorField &&) noexcept=default
 Default move constructor. More...
 
VectorFieldoperator= (const VectorField &)=default
 Default copy assignment operator. More...
 
VectorFieldoperator= (VectorField &&) 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...
 
virtual void Swap (Grid *other)=0
 Swaps the data with other grid. 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...
 

Protected Member Functions

void SwapCollocatedVectorGrid (CollocatedVectorGrid *other)
 Swaps the data storage and predefined samplers with given grid. More...
 
void SetCollocatedVectorGrid (const CollocatedVectorGrid &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...
 

Additional Inherited Members

- Public Types inherited from CubbyFlow::VectorGrid< N >
using VectorDataView = ArrayView< Vector< double, N >, N >
 Read-write array view type. More...
 
using ConstVectorDataView = ArrayView< const Vector< double, N >, N >
 Read-only array view type. More...
 

Detailed Description

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

Abstract base class for N-D collocated vector grid structure.

Constructor & Destructor Documentation

◆ CollocatedVectorGrid() [1/3]

Constructs an empty grid.

◆ ~CollocatedVectorGrid()

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

Default virtual destructor.

◆ CollocatedVectorGrid() [2/3]

template<size_t N>
CubbyFlow::CollocatedVectorGrid< N >::CollocatedVectorGrid ( const CollocatedVectorGrid< N > &  other)
default

Default copy constructor.

◆ CollocatedVectorGrid() [3/3]

template<size_t N>
CubbyFlow::CollocatedVectorGrid< N >::CollocatedVectorGrid ( CollocatedVectorGrid< N > &&  other)
defaultnoexcept

Default move constructor.

Member Function Documentation

◆ Curl()

template<size_t N>
GetCurl<N>::Type CubbyFlow::CollocatedVectorGrid< N >::Curl ( const Vector< double, N > &  x) const
overridevirtual

Returns curl at given position x.

Reimplemented from CubbyFlow::VectorField< N >.

◆ CurlAtDataPoint() [1/2]

template<size_t N>
GetCurl<N>::Type CubbyFlow::CollocatedVectorGrid< N >::CurlAtDataPoint ( const Vector< size_t, N > &  idx) const

Returns curl at data point location.

◆ CurlAtDataPoint() [2/2]

template<size_t N>
template<typename... Indices>
GetCurl<N>::Type CubbyFlow::CollocatedVectorGrid< N >::CurlAtDataPoint ( size_t  i,
Indices...  indices 
) const
inline

Returns curl at data point location.

◆ DataOrigin()

template<size_t N>
virtual Vector<double, N> CubbyFlow::CollocatedVectorGrid< N >::DataOrigin ( ) const
pure virtual

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.

Implemented in CubbyFlow::VertexCenteredVectorGrid< N >, and CubbyFlow::CellCenteredVectorGrid< N >.

◆ DataPosition()

template<size_t N>
GridDataPositionFunc<N> CubbyFlow::CollocatedVectorGrid< N >::DataPosition ( ) const

Returns the function that maps data point to its position.

◆ DataSize()

template<size_t N>
virtual Vector<size_t, N> CubbyFlow::CollocatedVectorGrid< N >::DataSize ( ) const
pure virtual

Returns the actual data point size.

Implemented in CubbyFlow::VertexCenteredVectorGrid< N >, and CubbyFlow::CellCenteredVectorGrid< N >.

◆ DataView() [1/2]

template<size_t N>
VectorDataView CubbyFlow::CollocatedVectorGrid< N >::DataView ( )

Returns the read-write data array view.

◆ DataView() [2/2]

template<size_t N>
ConstVectorDataView CubbyFlow::CollocatedVectorGrid< N >::DataView ( ) const

Returns the read-only data array view.

◆ Divergence()

template<size_t N>
double CubbyFlow::CollocatedVectorGrid< N >::Divergence ( const Vector< double, N > &  x) const
overridevirtual

Returns divergence at given position x.

Reimplemented from CubbyFlow::VectorField< N >.

◆ DivergenceAtDataPoint() [1/2]

template<size_t N>
double CubbyFlow::CollocatedVectorGrid< N >::DivergenceAtDataPoint ( const Vector< size_t, N > &  idx) const

Returns divergence at data point location.

◆ DivergenceAtDataPoint() [2/2]

template<size_t N>
template<typename... Indices>
double CubbyFlow::CollocatedVectorGrid< N >::DivergenceAtDataPoint ( size_t  i,
Indices...  indices 
) const
inline

Returns divergence at data point location.

◆ ForEachDataPointIndex() [1/3]

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::ForEachDataPointIndex ( const std::function< void(const Vector< size_t, N > &)> &  func) const

Invokes the given function func for each data point.

This function invokes the given function object func for each data point in serial manner. The input parameters are i and j indices of a data point. The order of execution is i-first, j-last.

◆ ForEachDataPointIndex() [2/3]

template<size_t N>
template<size_t M = N>
std::enable_if_t<M == 2, void> CubbyFlow::CollocatedVectorGrid< N >::ForEachDataPointIndex ( const std::function< void(size_t, size_t)> &  func) const
inline

◆ ForEachDataPointIndex() [3/3]

template<size_t N>
template<size_t M = N>
std::enable_if_t<M == 3, void> CubbyFlow::CollocatedVectorGrid< N >::ForEachDataPointIndex ( const std::function< void(size_t, size_t, size_t)> &  func) const
inline

◆ GetData()

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::GetData ( Array1< double > &  data) const
overrideprotectedvirtual

Fetches the data into a continuous linear array.

Implements CubbyFlow::Grid< N >.

◆ operator()() [1/4]

template<size_t N>
const Vector<double, N>& CubbyFlow::CollocatedVectorGrid< N >::operator() ( const Vector< size_t, N > &  idx) const

Returns the grid data at given data point.

◆ operator()() [2/4]

template<size_t N>
Vector<double, N>& CubbyFlow::CollocatedVectorGrid< N >::operator() ( const Vector< size_t, N > &  idx)

Returns the grid data at given data point.

◆ operator()() [3/4]

template<size_t N>
template<typename... Indices>
const Vector<double, N>& CubbyFlow::CollocatedVectorGrid< N >::operator() ( size_t  i,
Indices...  indices 
) const
inline

Returns the grid data at given data point.

◆ operator()() [4/4]

template<size_t N>
template<typename... Indices>
Vector<double, N>& CubbyFlow::CollocatedVectorGrid< N >::operator() ( size_t  i,
Indices...  indices 
)
inline

Returns the grid data at given data point.

◆ operator=() [1/2]

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

Default copy assignment operator.

◆ operator=() [2/2]

template<size_t N>
CollocatedVectorGrid& CubbyFlow::CollocatedVectorGrid< N >::operator= ( CollocatedVectorGrid< N > &&  other)
defaultnoexcept

Default move assignment operator.

◆ ParallelForEachDataPointIndex() [1/3]

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::ParallelForEachDataPointIndex ( const std::function< void(const Vector< size_t, N > &)> &  func) const

Invokes the given function func for each data point in parallel.

This function invokes the given function object func for each data point in parallel manner. The input parameters are i and j indices of a data point. The order of execution can be arbitrary since it's multi-threaded.

◆ ParallelForEachDataPointIndex() [2/3]

template<size_t N>
template<size_t M = N>
std::enable_if_t<M == 2, void> CubbyFlow::CollocatedVectorGrid< N >::ParallelForEachDataPointIndex ( const std::function< void(size_t, size_t)> &  func) const
inline

◆ ParallelForEachDataPointIndex() [3/3]

template<size_t N>
template<size_t M = N>
std::enable_if_t<M == 3, void> CubbyFlow::CollocatedVectorGrid< N >::ParallelForEachDataPointIndex ( const std::function< void(size_t, size_t, size_t)> &  func) const
inline

◆ Sample()

template<size_t N>
Vector<double, N> CubbyFlow::CollocatedVectorGrid< N >::Sample ( const Vector< double, N > &  x) const
overridevirtual

Returns sampled value at given position x.

Implements CubbyFlow::VectorField< N >.

◆ Sampler()

template<size_t N>
std::function<Vector<double, N>const Vector<double, N>&)> CubbyFlow::CollocatedVectorGrid< N >::Sampler ( ) const
overridevirtual

Returns the sampler function.

This function returns the data sampler function object. The sampling function is linear.

Reimplemented from CubbyFlow::VectorField< N >.

◆ SetCollocatedVectorGrid()

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::SetCollocatedVectorGrid ( const CollocatedVectorGrid< N > &  other)
protected

Sets the data storage and predefined samplers with given grid.

◆ SetData()

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::SetData ( const ConstArrayView1< double > &  data)
overrideprotectedvirtual

Sets the data from a continuous linear array.

Implements CubbyFlow::Grid< N >.

◆ SwapCollocatedVectorGrid()

template<size_t N>
void CubbyFlow::CollocatedVectorGrid< N >::SwapCollocatedVectorGrid ( CollocatedVectorGrid< N > *  other)
protected

Swaps the data storage and predefined samplers with given grid.


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