Go to the documentation of this file.
7 #ifndef INCLUDE_JET_FACE_CENTERED_GRID3_H_
8 #define INCLUDE_JET_FACE_CENTERED_GRID3_H_
43 size_t resolutionZ,
double gridSpacingX = 1.0,
44 double gridSpacingY = 1.0,
double gridSpacingZ = 1.0,
45 double originX = 0.0,
double originY = 0.0,
46 double originZ = 0.0,
double initialValueU = 0.0,
47 double initialValueV = 0.0,
double initialValueW = 0.0);
73 double&
u(
size_t i,
size_t j,
size_t k);
76 const double&
u(
size_t i,
size_t j,
size_t k)
const;
79 double&
v(
size_t i,
size_t j,
size_t k);
82 const double&
v(
size_t i,
size_t j,
size_t k)
const;
85 double&
w(
size_t i,
size_t j,
size_t k);
88 const double&
w(
size_t i,
size_t j,
size_t k)
const;
168 std::shared_ptr<VectorGrid3>
clone()
const override;
178 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
190 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
200 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
212 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
222 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
234 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
264 void getData(std::vector<double>* data)
const override;
267 void setData(
const std::vector<double>& data)
override;
304 double gridSpacingZ);
333 const Vector3D& initialVal)
const override;
336 Size3 _resolution{1, 1, 1};
344 #endif // INCLUDE_JET_FACE_CENTERED_GRID3_H_
3-D read-only array accessor class.
Definition: array_accessor3.h:270
std::shared_ptr< FaceCenteredGrid3 > FaceCenteredGrid3Ptr
Shared pointer type for the FaceCenteredGrid3.
Definition: face_centered_grid3.h:285
ArrayAccessor3< double > ScalarDataAccessor
Read-write scalar data accessor type.
Definition: face_centered_grid3.h:30
void swap(Grid3 *other) override
Swaps the contents with the given other grid.
Vector3D vOrigin() const
Returns v-data position for the grid point at (0, 0, 0).
void setData(const std::vector< double > &data) override
Sets the data from a continuous linear array.
Size3 wSize() const
Returns data size of the w component.
ExecutionPolicy
Execution policy tag.
Definition: parallel.h:13
DataPositionFunc vPosition() const
Returns function object that maps v data point to its actual position.
DataPositionFunc uPosition() const
Returns function object that maps u data point to its actual position.
double & w(size_t i, size_t j, size_t k)
Returns w-value at given data point.
void fill(const Vector3D &value, ExecutionPolicy policy=ExecutionPolicy::kParallel) override
Fills the grid with given value.
ScalarDataAccessor uAccessor()
Returns u data accessor.
Size3 vSize() const
Returns data size of the v component.
ConstArrayAccessor3< double > ConstScalarDataAccessor
Read-only scalar data accessor type.
Definition: face_centered_grid3.h:36
std::shared_ptr< VectorGrid3 > VectorGrid3Ptr
Shared pointer for the VectorGrid3 type.
Definition: vector_grid3.h:103
Builder & withResolution(const Size3 &resolution)
Returns builder with resolution.
ScalarDataAccessor vAccessor()
Returns v data accessor.
Abstract base class for 3-D cartesian grid structure.
Definition: grid3.h:30
void set(const FaceCenteredGrid3 &other)
Sets the contents with the given other grid.
FaceCenteredGrid3 build() const
Builds CellCenteredScalarGrid3 instance.
void parallelForEachUIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each u-data point parallelly.
Vector3D valueAtCellCenter(size_t i, size_t j, size_t k) const
Returns interpolated value at cell center.
Builder & withInitialValue(const Vector3D &initialVal)
Returns builder with initial value.
Builder & withGridSpacing(const Vector3D &gridSpacing)
Returns builder with grid spacing.
std::function< Vector3D(const Vector3D &)> sampler() const override
Returns the sampler function.
void forEachWIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each w-data point.
void getData(std::vector< double > *data) const override
Fetches the data into a continuous linear array.
void onResize(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &origin, const Vector3D &initialValue) final
Invoked when the resizing happens.
const double & w(size_t i, size_t j, size_t k) const
Returns w-value at given data point.
VectorGrid3Ptr build(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &gridOrigin, const Vector3D &initialVal) const override
Builds shared pointer of FaceCenteredGrid3 instance.
void forEachUIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each u-data point.
double divergenceAtCellCenter(size_t i, size_t j, size_t k) const
Returns divergence at cell-center location.
Definition: advection_solver2.h:18
Builder & withInitialValue(double initialValX, double initialValY, double initialValZ)
Returns builder with initial value.
2-D linear array sampler class.
Definition: array_samplers3.h:77
Builder & withResolution(size_t resolutionX, size_t resolutionY, size_t resolutionZ)
Returns builder with resolution.
const Vector3D & origin() const
Returns the grid origin.
const Size3 & resolution() const
Returns the grid resolution.
std::shared_ptr< VectorGrid3 > clone() const override
Returns the copy of the grid instance.
FaceCenteredGrid3 & operator=(const FaceCenteredGrid3 &other)
Sets the contents with the given other grid.
void forEachVIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each v-data point.
Builder & withOrigin(const Vector3D &gridOrigin)
Returns builder with grid origin.
ScalarDataAccessor wAccessor()
Returns w data accessor.
void fill(const std::function< Vector3D(const Vector3D &)> &func, ExecutionPolicy policy=ExecutionPolicy::kParallel) override
Fills the grid with given function.
FaceCenteredGrid3(const Size3 &resolution, const Vector3D &gridSpacing=Vector3D(1.0, 1.0, 1.0), const Vector3D &origin=Vector3D(), const Vector3D &initialValue=Vector3D())
Resizes the grid using given parameters.
Vector3D wOrigin() const
Returns w-data position for the grid point at (0, 0, 0).
3-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid3.h:26
Abstract base class for 3-D vector grid builder.
Definition: vector_grid3.h:106
const Vector3D & gridSpacing() const
Returns the grid spacing.
Vector3D sample(const Vector3D &x) const override
Returns sampled value at given position x.
static Builder builder()
Returns builder fox FaceCenteredGrid3.
3-D size class.
Definition: size3.h:19
Front-end to create CellCenteredScalarGrid3 objects step by step.
Definition: face_centered_grid3.h:290
Builder & withOrigin(double gridOriginX, double gridOriginY, double gridOriginZ)
Returns builder with grid origin.
Abstract base class for 3-D vector grid structure.
Definition: vector_grid3.h:19
FaceCenteredGrid3()
Constructs empty grid.
FaceCenteredGrid3(size_t resolutionX, size_t resolutionY, size_t resolutionZ, double gridSpacingX=1.0, double gridSpacingY=1.0, double gridSpacingZ=1.0, double originX=0.0, double originY=0.0, double originZ=0.0, double initialValueU=0.0, double initialValueV=0.0, double initialValueW=0.0)
Resizes the grid using given parameters.
ConstScalarDataAccessor uConstAccessor() const
Returns read-only u data accessor.
3-D array accessor class.
Definition: array_accessor3.h:31
double & u(size_t i, size_t j, size_t k)
Returns u-value at given data point.
ConstScalarDataAccessor vConstAccessor() const
Returns read-only v data accessor.
std::function< Vector3D(size_t, size_t, size_t)> DataPositionFunc
Function type for mapping data index to actual position.
Definition: grid3.h:33
double divergence(const Vector3D &x) const override
Returns divergence at given position x.
const double & v(size_t i, size_t j, size_t k) const
Returns v-value at given data point.
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
double & v(size_t i, size_t j, size_t k)
Returns v-value at given data point.
3-D vector class.
Definition: vector3.h:25
Vector3D uOrigin() const
Returns u-data position for the grid point at (0, 0, 0).
FaceCenteredGrid3Ptr makeShared() const
Builds shared pointer of FaceCenteredGrid3 instance.
void parallelForEachWIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each w-data point parallelly.
Size3 uSize() const
Returns data size of the u component.
Vector3D curlAtCellCenter(size_t i, size_t j, size_t k) const
Returns curl at cell-center location.
void parallelForEachVIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each v-data point parallelly.
Builder & withGridSpacing(double gridSpacingX, double gridSpacingY, double gridSpacingZ)
Returns builder with grid spacing.
3-D array class.
Definition: array3.h:43
#define JET_GRID3_TYPE_NAME(DerivedClassName)
Definition: grid3.h:119
Vector3D curl(const Vector3D &x) const override
Returns curl at given position x.
const double & u(size_t i, size_t j, size_t k) const
Returns u-value at given data point.
FaceCenteredGrid3(const FaceCenteredGrid3 &other)
Copy constructor.
DataPositionFunc wPosition() const
Returns function object that maps w data point to its actual position.
ConstScalarDataAccessor wConstAccessor() const
Returns read-only w data accessor.