2-D face-centered (a.k.a MAC or staggered) grid. More...
#include <Core/Grid/FaceCenteredGrid2.h>
Classes | |
class | Builder |
Front-end to create FaceCenteredGrid2 objects step by step. More... | |
Public Types | |
using | ScalarDataAccessor = ArrayAccessor2< double > |
Read-write scalar data accessor type. More... | |
using | ConstScalarDataAccessor = ConstArrayAccessor2< double > |
Read-only scalar data accessor type. More... | |
Public Types inherited from CubbyFlow::VectorGrid2 | |
using | VectorDataAccessor = ArrayAccessor2< Vector2D > |
Read-write array accessor type. More... | |
using | ConstVectorDataAccessor = ConstArrayAccessor2< Vector2D > |
Read-only array accessor type. More... | |
Public Types inherited from CubbyFlow::Grid2 | |
using | DataPositionFunc = std::function< Vector2D(size_t, size_t)> |
Function type for mapping data index to actual position. More... | |
Public Member Functions | |
FaceCenteredGrid2 () | |
Constructs empty grid. More... | |
FaceCenteredGrid2 (size_t resolutionX, size_t resolutionY, double gridSpacingX=1.0, double gridSpacingY=1.0, double originX=0.0, double originY=0.0, double initialValueU=0.0, double initialValueV=0.0) | |
Resizes the grid using given parameters. More... | |
FaceCenteredGrid2 (const Size2 &resolution, const Vector2D &gridSpacing=Vector2D(1.0, 1.0), const Vector2D &origin=Vector2D(), const Vector2D &initialValue=Vector2D()) | |
Resizes the grid using given parameters. More... | |
FaceCenteredGrid2 (const FaceCenteredGrid2 &other) | |
Copy constructor. More... | |
void | Swap (Grid2 *other) override |
Swaps the contents with the given other grid. More... | |
void | Set (const FaceCenteredGrid2 &other) |
Sets the contents with the given other grid. More... | |
FaceCenteredGrid2 & | operator= (const FaceCenteredGrid2 &other) |
Sets the contents with the given other grid. More... | |
double & | GetU (size_t i, size_t j) |
Returns u-value at given data point. More... | |
const double & | GetU (size_t i, size_t j) const |
Returns u-value at given data point. More... | |
double & | GetV (size_t i, size_t j) |
Returns v-value at given data point. More... | |
const double & | GetV (size_t i, size_t j) const |
Returns v-value at given data point. More... | |
Vector2D | ValueAtCellCenter (size_t i, size_t j) const |
Returns interpolated value at cell center. More... | |
double | DivergenceAtCellCenter (size_t i, size_t j) const |
Returns divergence at cell-center location. More... | |
double | CurlAtCellCenter (size_t i, size_t j) const |
Returns curl at cell-center location. More... | |
ScalarDataAccessor | GetUAccessor () |
Returns u data accessor. More... | |
ConstScalarDataAccessor | GetUConstAccessor () const |
Returns read-only u data accessor. More... | |
ScalarDataAccessor | GetVAccessor () |
Returns v data accessor. More... | |
ConstScalarDataAccessor | GetVConstAccessor () const |
Returns read-only v data accessor. More... | |
DataPositionFunc | GetUPosition () const |
Returns function object that maps u data point to its actual position. More... | |
DataPositionFunc | GetVPosition () const |
Returns function object that maps v data point to its actual position. More... | |
Size2 | GetUSize () const |
Returns data size of the u component. More... | |
Size2 | GetVSize () const |
Returns data size of the v component. More... | |
Vector2D | GetUOrigin () const |
Returns u-data position for the grid point at (0, 0). More... | |
Vector2D | GetVOrigin () const |
Returns v-data position for the grid point at (0, 0). More... | |
void | Fill (const Vector2D &value, ExecutionPolicy policy=ExecutionPolicy::Parallel) override |
Fills the grid with given value. More... | |
void | Fill (const std::function< Vector2D(const Vector2D &)> &func, ExecutionPolicy policy=ExecutionPolicy::Parallel) override |
Fills the grid with given function. More... | |
std::shared_ptr< VectorGrid2 > | Clone () const override |
Returns the copy of the grid instance. More... | |
void | ForEachUIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each u-data point. More... | |
void | ParallelForEachUIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each u-data point in parallel. More... | |
void | ForEachVIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each v-data point. More... | |
void | ParallelForEachVIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each v-data point in parallel. More... | |
Vector2D | Sample (const Vector2D &x) const override |
Returns sampled value at given position x . More... | |
double | Divergence (const Vector2D &x) const override |
Returns divergence at given position x . More... | |
double | Curl (const Vector2D &x) const override |
Returns curl at given position x . More... | |
std::function< Vector2D(const Vector2D &)> | Sampler () const override |
Returns the sampler function. More... | |
Public Member Functions inherited from CubbyFlow::VectorGrid2 | |
VectorGrid2 () | |
Constructs an empty grid. More... | |
virtual | ~VectorGrid2 () |
Default destructor. More... | |
void | Clear () |
Clears the contents of the grid. More... | |
void | Resize (size_t resolutionX, size_t resolutionY, double gridSpacingX=1.0, double gridSpacingY=1.0, double originX=0.0, double originY=0.0, double initialValueX=0.0, double initialValueY=0.0) |
Resizes the grid using given parameters. More... | |
void | Resize (const Size2 &resolution, const Vector2D &gridSpacing=Vector2D(1, 1), const Vector2D &origin=Vector2D(), const Vector2D &initialValue=Vector2D()) |
Resizes the grid using given parameters. More... | |
void | Resize (double gridSpacingX, double gridSpacingY, double originX, double originY) |
Resizes the grid using given parameters. More... | |
void | Resize (const Vector2D &gridSpacing, const Vector2D &origin) |
Resizes the grid using given parameters. 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::VectorField2 | |
VectorField2 () | |
Default constructor. More... | |
virtual | ~VectorField2 () |
Default destructor. More... | |
Public Member Functions inherited from CubbyFlow::Field2 | |
Field2 () | |
virtual | ~Field2 () |
Public Member Functions inherited from CubbyFlow::Grid2 | |
Grid2 () | |
Constructs an empty grid. More... | |
virtual | ~Grid2 () |
Default destructor. More... | |
virtual std::string | TypeName () const =0 |
Returns the type name of derived grid. More... | |
const Size2 & | Resolution () const |
Returns the grid resolution. More... | |
const Vector2D & | Origin () const |
Returns the grid origin. More... | |
const Vector2D & | GridSpacing () const |
Returns the grid spacing. More... | |
const BoundingBox2D & | BoundingBox () const |
Returns the bounding box of the grid. More... | |
DataPositionFunc | CellCenterPosition () const |
Returns the function that maps grid index to the cell-center position. More... | |
void | ForEachCellIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each grid cell. More... | |
void | ParallelForEachCellIndex (const std::function< void(size_t, size_t)> &func) const |
Invokes the given function func for each grid cell in parallel. More... | |
bool | HasSameShape (const Grid2 &other) const |
Returns true if resolution, grid-spacing and origin are same. More... | |
Static Public Member Functions | |
static Builder | GetBuilder () |
Returns builder fox FaceCenteredGrid2. More... | |
Protected Member Functions | |
void | OnResize (const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin, const Vector2D &initialValue) final |
Invoked when the resizing happens. More... | |
void | GetData (std::vector< double > *data) const override |
Fetches the data into a continuous linear array. More... | |
void | SetData (const std::vector< double > &data) override |
Sets the data from a continuous linear array. More... | |
Protected Member Functions inherited from CubbyFlow::Grid2 | |
void | SetSizeParameters (const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin) |
Sets the size parameters including the resolution, grid spacing, and origin. More... | |
void | SwapGrid (Grid2 *other) |
Swaps the size parameters with given grid other . More... | |
void | SetGrid (const Grid2 &other) |
Sets the size parameters with given grid other . More... | |
Detailed Description
2-D face-centered (a.k.a MAC or staggered) grid.
This class implements face-centered grid which is also known as marker-and-cell (MAC) or staggered grid. This vector grid stores each vector component at face center. Thus, u and v components are not collocated.
Member Typedef Documentation
◆ ConstScalarDataAccessor
Read-only scalar data accessor type.
◆ ScalarDataAccessor
using CubbyFlow::FaceCenteredGrid2::ScalarDataAccessor = ArrayAccessor2<double> |
Read-write scalar data accessor type.
Constructor & Destructor Documentation
◆ FaceCenteredGrid2() [1/4]
CubbyFlow::FaceCenteredGrid2::FaceCenteredGrid2 | ( | ) |
Constructs empty grid.
◆ FaceCenteredGrid2() [2/4]
CubbyFlow::FaceCenteredGrid2::FaceCenteredGrid2 | ( | size_t | resolutionX, |
size_t | resolutionY, | ||
double | gridSpacingX = 1.0 , |
||
double | gridSpacingY = 1.0 , |
||
double | originX = 0.0 , |
||
double | originY = 0.0 , |
||
double | initialValueU = 0.0 , |
||
double | initialValueV = 0.0 |
||
) |
Resizes the grid using given parameters.
◆ FaceCenteredGrid2() [3/4]
CubbyFlow::FaceCenteredGrid2::FaceCenteredGrid2 | ( | const Size2 & | resolution, |
const Vector2D & | gridSpacing = Vector2D(1.0, 1.0) , |
||
const Vector2D & | origin = Vector2D() , |
||
const Vector2D & | initialValue = Vector2D() |
||
) |
Resizes the grid using given parameters.
◆ FaceCenteredGrid2() [4/4]
CubbyFlow::FaceCenteredGrid2::FaceCenteredGrid2 | ( | const FaceCenteredGrid2 & | other | ) |
Copy constructor.
Member Function Documentation
◆ Clone()
|
overridevirtual |
Returns the copy of the grid instance.
Implements CubbyFlow::VectorGrid2.
◆ Curl()
|
overridevirtual |
Returns curl at given position x
.
Reimplemented from CubbyFlow::VectorField2.
◆ CurlAtCellCenter()
double CubbyFlow::FaceCenteredGrid2::CurlAtCellCenter | ( | size_t | i, |
size_t | j | ||
) | const |
Returns curl at cell-center location.
◆ Divergence()
|
overridevirtual |
Returns divergence at given position x
.
Reimplemented from CubbyFlow::VectorField2.
◆ DivergenceAtCellCenter()
double CubbyFlow::FaceCenteredGrid2::DivergenceAtCellCenter | ( | size_t | i, |
size_t | j | ||
) | const |
Returns divergence at cell-center location.
◆ Fill() [1/2]
|
overridevirtual |
Fills the grid with given value.
Implements CubbyFlow::VectorGrid2.
◆ Fill() [2/2]
|
overridevirtual |
Fills the grid with given function.
Implements CubbyFlow::VectorGrid2.
◆ ForEachUIndex()
void CubbyFlow::FaceCenteredGrid2::ForEachUIndex | ( | const std::function< void(size_t, size_t)> & | func | ) | const |
Invokes the given function func
for each u-data point.
This function invokes the given function object func
for each u-data point in serial manner. The input parameters are i and j indices of a u-data point. The order of execution is i-first, j-last.
◆ ForEachVIndex()
void CubbyFlow::FaceCenteredGrid2::ForEachVIndex | ( | const std::function< void(size_t, size_t)> & | func | ) | const |
Invokes the given function func
for each v-data point.
This function invokes the given function object func
for each v-data point in serial manner. The input parameters are i and j indices of a v-data point. The order of execution is i-first, j-last.
◆ GetBuilder()
|
static |
Returns builder fox FaceCenteredGrid2.
◆ GetData()
|
overrideprotectedvirtual |
Fetches the data into a continuous linear array.
Implements CubbyFlow::Grid2.
◆ GetU() [1/2]
double& CubbyFlow::FaceCenteredGrid2::GetU | ( | size_t | i, |
size_t | j | ||
) |
Returns u-value at given data point.
◆ GetU() [2/2]
const double& CubbyFlow::FaceCenteredGrid2::GetU | ( | size_t | i, |
size_t | j | ||
) | const |
Returns u-value at given data point.
◆ GetUAccessor()
ScalarDataAccessor CubbyFlow::FaceCenteredGrid2::GetUAccessor | ( | ) |
Returns u data accessor.
◆ GetUConstAccessor()
ConstScalarDataAccessor CubbyFlow::FaceCenteredGrid2::GetUConstAccessor | ( | ) | const |
Returns read-only u data accessor.
◆ GetUOrigin()
Vector2D CubbyFlow::FaceCenteredGrid2::GetUOrigin | ( | ) | const |
Returns u-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.
◆ GetUPosition()
DataPositionFunc CubbyFlow::FaceCenteredGrid2::GetUPosition | ( | ) | const |
Returns function object that maps u data point to its actual position.
◆ GetUSize()
Size2 CubbyFlow::FaceCenteredGrid2::GetUSize | ( | ) | const |
Returns data size of the u component.
◆ GetV() [1/2]
double& CubbyFlow::FaceCenteredGrid2::GetV | ( | size_t | i, |
size_t | j | ||
) |
Returns v-value at given data point.
◆ GetV() [2/2]
const double& CubbyFlow::FaceCenteredGrid2::GetV | ( | size_t | i, |
size_t | j | ||
) | const |
Returns v-value at given data point.
◆ GetVAccessor()
ScalarDataAccessor CubbyFlow::FaceCenteredGrid2::GetVAccessor | ( | ) |
Returns v data accessor.
◆ GetVConstAccessor()
ConstScalarDataAccessor CubbyFlow::FaceCenteredGrid2::GetVConstAccessor | ( | ) | const |
Returns read-only v data accessor.
◆ GetVOrigin()
Vector2D CubbyFlow::FaceCenteredGrid2::GetVOrigin | ( | ) | const |
Returns v-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.
◆ GetVPosition()
DataPositionFunc CubbyFlow::FaceCenteredGrid2::GetVPosition | ( | ) | const |
Returns function object that maps v data point to its actual position.
◆ GetVSize()
Size2 CubbyFlow::FaceCenteredGrid2::GetVSize | ( | ) | const |
Returns data size of the v component.
◆ OnResize()
|
finalprotectedvirtual |
Invoked when the resizing happens.
This callback function is called when the grid gets resized. The overriding class should allocate the internal storage based on its data layout scheme.
Implements CubbyFlow::VectorGrid2.
◆ operator=()
FaceCenteredGrid2& CubbyFlow::FaceCenteredGrid2::operator= | ( | const FaceCenteredGrid2 & | other | ) |
Sets the contents with the given other
grid.
◆ ParallelForEachUIndex()
void CubbyFlow::FaceCenteredGrid2::ParallelForEachUIndex | ( | const std::function< void(size_t, size_t)> & | func | ) | const |
Invokes the given function func
for each u-data point in parallel.
This function invokes the given function object func
for each u-data point in parallel manner. The input parameters are i and j indices of a u-data point. The order of execution can be arbitrary since it's multi-threaded.
◆ ParallelForEachVIndex()
void CubbyFlow::FaceCenteredGrid2::ParallelForEachVIndex | ( | const std::function< void(size_t, size_t)> & | func | ) | const |
Invokes the given function func
for each v-data point in parallel.
This function invokes the given function object func
for each v-data point in parallel manner. The input parameters are i and j indices of a v-data point. The order of execution can be arbitrary since it's multi-threaded.
◆ Sample()
Returns sampled value at given position x
.
Implements CubbyFlow::VectorField2.
◆ Sampler()
|
overridevirtual |
Returns the sampler function.
This function returns the data sampler function object. The sampling function is linear.
Reimplemented from CubbyFlow::VectorField2.
◆ Set()
void CubbyFlow::FaceCenteredGrid2::Set | ( | const FaceCenteredGrid2 & | other | ) |
Sets the contents with the given other
grid.
◆ SetData()
|
overrideprotectedvirtual |
Sets the data from a continuous linear array.
Implements CubbyFlow::Grid2.
◆ Swap()
|
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::Grid2.
◆ ValueAtCellCenter()
Vector2D CubbyFlow::FaceCenteredGrid2::ValueAtCellCenter | ( | size_t | i, |
size_t | j | ||
) | const |
Returns interpolated value at cell center.
The documentation for this class was generated from the following file:
- Core/Grid/FaceCenteredGrid2.h