Go to the documentation of this file.
7 #ifndef INCLUDE_JET_SCALAR_GRID3_H_
8 #define INCLUDE_JET_SCALAR_GRID3_H_
53 virtual std::shared_ptr<ScalarGrid3>
clone()
const = 0;
63 double gridSpacingX = 1.0,
64 double gridSpacingY = 1.0,
65 double gridSpacingZ = 1.0,
69 double initialValue = 0.0);
76 double initialValue = 0.0);
91 const double&
operator()(
size_t i,
size_t j,
size_t k)
const;
127 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
139 const std::function<
void(
size_t,
size_t,
size_t)>& func)
const;
166 void serialize(std::vector<uint8_t>* buffer)
const override;
179 void getData(std::vector<double>* data)
const override;
182 void setData(
const std::vector<double>& data)
override;
187 std::function<double(
const Vector3D&)> _sampler;
206 const Size3& resolution,
209 double initialVal)
const = 0;
217 #endif // INCLUDE_JET_SCALAR_GRID3_H_
3-D read-only array accessor class.
Definition: array_accessor3.h:270
ScalarGridBuilder3()
Creates a builder.
virtual ~ScalarGridBuilder3()
Default destructor.
ExecutionPolicy
Execution policy tag.
Definition: parallel.h:13
Abstract base class for 3-D scalar field.
Definition: scalar_field3.h:18
void resize(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 initialValue=0.0)
Resizes the grid using given parameters.
void serialize(std::vector< uint8_t > *buffer) const override
Serializes the grid instance to the output buffer.
DataPositionFunc dataPosition() const
Returns the function that maps data point to its position.
double sample(const Vector3D &x) const override
Returns the sampled value at given position x.
Vector3D gradientAtDataPoint(size_t i, size_t j, size_t k) const
Returns the gradient vector at given data point.
double laplacianAtDataPoint(size_t i, size_t j, size_t k) const
Returns the Laplacian at given data point.
Abstract base class for 3-D cartesian grid structure.
Definition: grid3.h:30
std::function< double(const Vector3D &)> sampler() const override
Returns the sampler function.
void fill(double value, ExecutionPolicy policy=ExecutionPolicy::kParallel)
Fills the grid with given value.
double & operator()(size_t i, size_t j, size_t k)
Returns the grid data at given data point.
ArrayAccessor3< double > ScalarDataAccessor
Read-write array accessor type.
Definition: scalar_grid3.h:24
std::shared_ptr< ScalarGrid3 > ScalarGrid3Ptr
Shared pointer for the ScalarGrid3 type.
Definition: scalar_grid3.h:193
virtual Size3 dataSize() const =0
Returns the size of the grid data.
Abstract base class for 3-D scalar grid builder.
Definition: scalar_grid3.h:196
void resize(double gridSpacingX, double gridSpacingY, double gridSpacingZ, double originX, double originY, double originZ)
Resizes the grid using given parameters.
void clear()
Clears the contents of the grid.
void forEachDataPointIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each data point.
Definition: advection_solver2.h:18
2-D linear array sampler class.
Definition: array_samplers3.h:77
std::shared_ptr< ScalarGridBuilder3 > ScalarGridBuilder3Ptr
Shared pointer for the ScalarGridBuilder3 type.
Definition: scalar_grid3.h:213
virtual ~ScalarGrid3()
Default destructor.
const Vector3D & origin() const
Returns the grid origin.
const Size3 & resolution() const
Returns the grid resolution.
ScalarGrid3()
Constructs an empty grid.
void swapScalarGrid(ScalarGrid3 *other)
Swaps the data storage and predefined samplers with given grid.
const double & operator()(size_t i, size_t j, size_t k) const
Returns the grid data at given data point.
void deserialize(const std::vector< uint8_t > &buffer) override
Deserializes the input buffer to the grid instance.
const Vector3D & gridSpacing() const
Returns the grid spacing.
ConstArrayAccessor3< double > ConstScalarDataAccessor
Read-only array accessor type.
Definition: scalar_grid3.h:27
3-D size class.
Definition: size3.h:19
double laplacian(const Vector3D &x) const override
Returns the Laplacian at given position x.
3-D array accessor class.
Definition: array_accessor3.h:31
void resize(const Size3 &resolution, const Vector3D &gridSpacing=Vector3D(1, 1, 1), const Vector3D &origin=Vector3D(), double initialValue=0.0)
Resizes the grid using given parameters.
virtual std::shared_ptr< ScalarGrid3 > clone() const =0
Returns the copy of the grid instance.
Vector3D gradient(const Vector3D &x) const override
Returns the gradient vector at given position x.
void parallelForEachDataPointIndex(const std::function< void(size_t, size_t, size_t)> &func) const
Invokes the given function func for each data point parallelly.
std::function< Vector3D(size_t, size_t, size_t)> DataPositionFunc
Function type for mapping data index to actual position.
Definition: grid3.h:33
Abstract base class for 3-D scalar grid structure.
Definition: scalar_grid3.h:21
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
void setData(const std::vector< double > &data) override
Sets the data from a continuous linear array.
void setScalarGrid(const ScalarGrid3 &other)
Sets the data storage and predefined samplers with given grid.
3-D vector class.
Definition: vector3.h:25
void resize(const Vector3D &gridSpacing, const Vector3D &origin)
Resizes the grid using given parameters.
void fill(const std::function< double(const Vector3D &)> &func, ExecutionPolicy policy=ExecutionPolicy::kParallel)
Fills the grid with given position-to-value mapping function.
virtual Vector3D dataOrigin() const =0
Returns the origin of the grid data.
3-D array class.
Definition: array3.h:43
void getData(std::vector< double > *data) const override
Fetches the data into a continuous linear array.
ConstScalarDataAccessor constDataAccessor() const
Returns the read-only data array accessor.
virtual ScalarGrid3Ptr build(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &gridOrigin, double initialVal) const =0
Returns 3-D scalar grid with given parameters.
ScalarDataAccessor dataAccessor()
Returns the read-write data array accessor.