Jet  v1.3.3
vector_grid3.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_VECTOR_GRID3_H_
8 #define INCLUDE_JET_VECTOR_GRID3_H_
9 
10 #include <jet/array_accessor3.h>
11 #include <jet/grid3.h>
12 #include <jet/vector_field3.h>
13 #include <memory>
14 #include <vector>
15 
16 namespace jet {
17 
19 class VectorGrid3 : public VectorField3, public Grid3 {
20  public:
23 
26 
29 
31  virtual ~VectorGrid3();
32 
34  void clear();
35 
37  void resize(
38  size_t resolutionX,
39  size_t resolutionY,
40  size_t resolutionZ,
41  double gridSpacingX = 1.0,
42  double gridSpacingY = 1.0,
43  double gridSpacingZ = 1.0,
44  double originX = 0.0,
45  double originY = 0.0,
46  double originZ = 0.0,
47  double initialValueX = 0.0,
48  double initialValueY = 0.0,
49  double initialValueZ = 0.0);
50 
52  void resize(
53  const Size3& resolution,
54  const Vector3D& gridSpacing = Vector3D(1, 1, 1),
55  const Vector3D& origin = Vector3D(),
56  const Vector3D& initialValue = Vector3D());
57 
59  void resize(
60  double gridSpacingX,
61  double gridSpacingY,
62  double gridSpacingZ,
63  double originX,
64  double originY,
65  double originZ);
66 
68  void resize(const Vector3D& gridSpacing, const Vector3D& origin);
69 
71  virtual void fill(const Vector3D& value,
73 
75  virtual void fill(const std::function<Vector3D(const Vector3D&)>& func,
77 
79  virtual std::shared_ptr<VectorGrid3> clone() const = 0;
80 
82  void serialize(std::vector<uint8_t>* buffer) const override;
83 
85  void deserialize(const std::vector<uint8_t>& buffer) override;
86 
87  protected:
95  virtual void onResize(
96  const Size3& resolution,
97  const Vector3D& gridSpacing,
98  const Vector3D& origin,
99  const Vector3D& initialValue) = 0;
100 };
101 
103 typedef std::shared_ptr<VectorGrid3> VectorGrid3Ptr;
104 
107  public:
110 
113 
116  const Size3& resolution,
117  const Vector3D& gridSpacing,
118  const Vector3D& gridOrigin,
119  const Vector3D& initialVal) const = 0;
120 };
121 
123 typedef std::shared_ptr<VectorGridBuilder3> VectorGridBuilder3Ptr;
124 
125 } // namespace jet
126 
127 #endif // INCLUDE_JET_VECTOR_GRID3_H_
jet::ConstArrayAccessor< T, 3 >
3-D read-only array accessor class.
Definition: array_accessor3.h:270
jet::VectorGrid3::fill
virtual void fill(const std::function< Vector3D(const Vector3D &)> &func, ExecutionPolicy policy=ExecutionPolicy::kParallel)=0
Fills the grid with given position-to-value mapping function.
jet::ExecutionPolicy
ExecutionPolicy
Execution policy tag.
Definition: parallel.h:13
jet::VectorGrid3::resize
void resize(double gridSpacingX, double gridSpacingY, double gridSpacingZ, double originX, double originY, double originZ)
Resizes the grid using given parameters.
jet::VectorGrid3::clear
void clear()
Clears the contents of the grid.
jet::VectorGridBuilder3::VectorGridBuilder3
VectorGridBuilder3()
Creates a builder.
jet::VectorGridBuilder3Ptr
std::shared_ptr< VectorGridBuilder3 > VectorGridBuilder3Ptr
Shared pointer for the VectorGridBuilder3 type.
Definition: vector_grid3.h:123
jet::VectorGrid3Ptr
std::shared_ptr< VectorGrid3 > VectorGrid3Ptr
Shared pointer for the VectorGrid3 type.
Definition: vector_grid3.h:103
jet::VectorGrid3::VectorGrid3
VectorGrid3()
Constructs an empty grid.
jet::Grid3
Abstract base class for 3-D cartesian grid structure.
Definition: grid3.h:30
jet::VectorGrid3::serialize
void serialize(std::vector< uint8_t > *buffer) const override
Serializes the grid instance to the output buffer.
jet::VectorGrid3::resize
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 initialValueX=0.0, double initialValueY=0.0, double initialValueZ=0.0)
Resizes the grid using given parameters.
jet::VectorGrid3::~VectorGrid3
virtual ~VectorGrid3()
Default destructor.
jet::VectorGrid3::resize
void resize(const Size3 &resolution, const Vector3D &gridSpacing=Vector3D(1, 1, 1), const Vector3D &origin=Vector3D(), const Vector3D &initialValue=Vector3D())
Resizes the grid using given parameters.
jet::VectorGrid3::ConstVectorDataAccessor
ConstArrayAccessor3< Vector3D > ConstVectorDataAccessor
Read-only array accessor type.
Definition: vector_grid3.h:25
jet::VectorGrid3::VectorDataAccessor
ArrayAccessor3< Vector3D > VectorDataAccessor
Read-write array accessor type.
Definition: vector_grid3.h:22
jet::VectorGrid3::onResize
virtual void onResize(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &origin, const Vector3D &initialValue)=0
Invoked when the resizing happens.
jet
Definition: advection_solver2.h:18
jet::Grid3::origin
const Vector3D & origin() const
Returns the grid origin.
jet::VectorField3
Abstract base class for 3-D vector field.
Definition: vector_field3.h:18
jet::Grid3::resolution
const Size3 & resolution() const
Returns the grid resolution.
jet::VectorGridBuilder3::~VectorGridBuilder3
virtual ~VectorGridBuilder3()
Default destructor.
jet::VectorGridBuilder3
Abstract base class for 3-D vector grid builder.
Definition: vector_grid3.h:106
jet::Grid3::gridSpacing
const Vector3D & gridSpacing() const
Returns the grid spacing.
vector_field3.h
jet::Size3
3-D size class.
Definition: size3.h:19
jet::VectorGrid3
Abstract base class for 3-D vector grid structure.
Definition: vector_grid3.h:19
grid3.h
jet::ArrayAccessor< T, 3 >
3-D array accessor class.
Definition: array_accessor3.h:31
jet::Vector3D
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
array_accessor3.h
jet::VectorGrid3::fill
virtual void fill(const Vector3D &value, ExecutionPolicy policy=ExecutionPolicy::kParallel)=0
Fills the grid with given value.
jet::VectorGrid3::resize
void resize(const Vector3D &gridSpacing, const Vector3D &origin)
Resizes the grid using given parameters.
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25
jet::ExecutionPolicy::kParallel
@ kParallel
jet::VectorGrid3::deserialize
void deserialize(const std::vector< uint8_t > &buffer) override
Deserializes the input buffer to the grid instance.
jet::VectorGrid3::clone
virtual std::shared_ptr< VectorGrid3 > clone() const =0
Returns the copy of the grid instance.
jet::VectorGridBuilder3::build
virtual VectorGrid3Ptr build(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &gridOrigin, const Vector3D &initialVal) const =0
Returns 3-D vector grid with given parameters.