Go to the documentation of this file.
7 #ifndef INCLUDE_JET_FACE_CENTERED_GRID2_H_
8 #define INCLUDE_JET_FACE_CENTERED_GRID2_H_
43 double gridSpacingX = 1.0,
double gridSpacingY = 1.0,
44 double originX = 0.0,
double originY = 0.0,
45 double initialValueU = 0.0,
double initialValueV = 0.0);
71 double&
u(
size_t i,
size_t j);
74 const double&
u(
size_t i,
size_t j)
const;
77 double&
v(
size_t i,
size_t j);
80 const double&
v(
size_t i,
size_t j)
const;
140 std::shared_ptr<VectorGrid2>
clone()
const override;
161 const std::function<
void(
size_t,
size_t)>& func)
const;
182 const std::function<
void(
size_t,
size_t)>& func)
const;
212 void getData(std::vector<double>* data)
const override;
215 void setData(
const std::vector<double>& data)
override;
274 const Vector2D& initialVal)
const override;
277 Size2 _resolution{1, 1};
285 #endif // INCLUDE_JET_FACE_CENTERED_GRID2_H_
double divergence(const Vector2D &x) const override
Returns divergence at given position x.
void fill(const std::function< Vector2D(const Vector2D &)> &func, ExecutionPolicy policy=ExecutionPolicy::kParallel) override
Fills the grid with given function.
std::shared_ptr< VectorGrid2 > clone() const override
Returns the copy of the grid instance.
FaceCenteredGrid2 & operator=(const FaceCenteredGrid2 &other)
Sets the contents with the given other grid.
ExecutionPolicy
Execution policy tag.
Definition: parallel.h:13
ConstScalarDataAccessor uConstAccessor() const
Returns read-only u data accessor.
Builder & withOrigin(double gridOriginX, double gridOriginY)
Returns builder with grid origin.
void parallelForEachVIndex(const std::function< void(size_t, size_t)> &func) const
Invokes the given function func for each v-data point parallelly.
void fill(const Vector2D &value, ExecutionPolicy policy=ExecutionPolicy::kParallel) override
Fills the grid with given value.
double divergenceAtCellCenter(size_t i, size_t j) const
Returns divergence at cell-center location.
const Vector2D & origin() const
Returns the grid origin.
ScalarDataAccessor vAccessor()
Returns v data accessor.
void forEachVIndex(const std::function< void(size_t, size_t)> &func) const
Invokes the given function func for each v-data point.
void swap(Grid2 *other) override
Swaps the contents with the given other grid.
FaceCenteredGrid2Ptr makeShared() const
Builds shared pointer of FaceCenteredGrid2 instance.
Vector2< double > Vector2D
Double-type 2D vector.
Definition: vector2.h:340
const double & u(size_t i, size_t j) const
Returns u-value at given data point.
Front-end to create FaceCenteredGrid2 objects step by step.
Definition: face_centered_grid2.h:235
Builder & withInitialValue(const Vector2D &initialVal)
Returns builder with initial value.
Abstract base class for 2-D cartesian grid structure.
Definition: grid2.h:30
double & v(size_t i, size_t j)
Returns v-value at given data point.
std::function< Vector2D(size_t, size_t)> DataPositionFunc
Function type for mapping data index to actual position.
Definition: grid2.h:33
ConstArrayAccessor2< double > ConstScalarDataAccessor
Read-only scalar data accessor type.
Definition: face_centered_grid2.h:36
Builder & withGridSpacing(double gridSpacingX, double gridSpacingY)
Returns builder with grid spacing.
2-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid2.h:26
2-D array class.
Definition: array2.h:42
Abstract base class for 2-D vector grid structure.
Definition: vector_grid2.h:21
FaceCenteredGrid2()
Constructs empty grid.
Vector2D vOrigin() const
Returns v-data position for the grid point at (0, 0).
2-D linear array sampler class.
Definition: array_samplers2.h:77
void onResize(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin, const Vector2D &initialValue) final
Invoked when the resizing happens.
Builder & withOrigin(const Vector2D &gridOrigin)
Returns builder with grid origin.
Definition: advection_solver2.h:18
ArrayAccessor2< double > ScalarDataAccessor
Read-write scalar data accessor type.
Definition: face_centered_grid2.h:30
const double & v(size_t i, size_t j) const
Returns v-value at given data point.
ScalarDataAccessor uAccessor()
Returns u data accessor.
Builder & withGridSpacing(const Vector2D &gridSpacing)
Returns builder with grid spacing.
2-D read-only array accessor class.
Definition: array_accessor2.h:261
Abstract base class for 2-D vector grid builder.
Definition: vector_grid2.h:91
2-D vector class.
Definition: vector2.h:24
std::shared_ptr< FaceCenteredGrid2 > FaceCenteredGrid2Ptr
Shared pointer type for the FaceCenteredGrid2.
Definition: face_centered_grid2.h:230
Builder & withResolution(size_t resolutionX, size_t resolutionY)
Returns builder with resolution.
Vector2D valueAtCellCenter(size_t i, size_t j) const
Returns interpolated value at cell center.
double & u(size_t i, size_t j)
Returns u-value at given data point.
void forEachUIndex(const std::function< void(size_t, size_t)> &func) const
Invokes the given function func for each u-data point.
FaceCenteredGrid2(const FaceCenteredGrid2 &other)
Copy constructor.
static Builder builder()
Returns builder fox FaceCenteredGrid2.
DataPositionFunc uPosition() const
Returns function object that maps u data point to its actual position.
2-D size class.
Definition: size2.h:19
double curlAtCellCenter(size_t i, size_t j) const
Returns curl at cell-center location.
Builder & withResolution(const Size2 &resolution)
Returns builder with resolution.
Vector2D sample(const Vector2D &x) const override
Returns sampled value at given position x.
2-D array accessor class.
Definition: array_accessor2.h:31
ConstScalarDataAccessor vConstAccessor() const
Returns read-only v data accessor.
Size2 uSize() const
Returns data size of the u component.
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.
Size2 vSize() const
Returns data size of the v component.
#define JET_GRID2_TYPE_NAME(DerivedClassName)
Definition: grid2.h:113
Builder & withInitialValue(double initialValX, double initialValY)
Returns builder with initial value.
const Size2 & resolution() const
Returns the grid resolution.
void set(const FaceCenteredGrid2 &other)
Sets the contents with the given other grid.
void getData(std::vector< double > *data) const override
Fetches the data into a continuous linear array.
void parallelForEachUIndex(const std::function< void(size_t, size_t)> &func) const
Invokes the given function func for each u-data point parallelly.
Vector2D uOrigin() const
Returns u-data position for the grid point at (0, 0).
std::function< Vector2D(const Vector2D &)> sampler() const override
Returns the sampler function.
const Vector2D & gridSpacing() const
Returns the grid spacing.
DataPositionFunc vPosition() const
Returns function object that maps v data point to its actual position.
double curl(const Vector2D &x) const override
Returns curl at given position x.
std::shared_ptr< VectorGrid2 > VectorGrid2Ptr
Shared pointer for the VectorGrid2 type.
Definition: vector_grid2.h:88
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 build() const
Builds FaceCenteredGrid2 instance.
void setData(const std::vector< double > &data) override
Sets the data from a continuous linear array.
VectorGrid2Ptr build(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &gridOrigin, const Vector2D &initialVal) const override
Builds shared pointer of FaceCenteredGrid2 instance.