Jet  v1.3.3
grid_system_data3.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_GRID_SYSTEM_DATA3_H_
8 #define INCLUDE_JET_GRID_SYSTEM_DATA3_H_
9 
11 #include <jet/scalar_grid3.h>
12 #include <jet/serialization.h>
13 #include <memory>
14 #include <vector>
15 
16 namespace jet {
17 
26 class GridSystemData3 : public Serializable {
27  public:
30 
47  const Size3& resolution,
48  const Vector3D& gridSpacing,
49  const Vector3D& origin);
50 
53 
55  virtual ~GridSystemData3();
56 
72  void resize(
73  const Size3& resolution,
74  const Vector3D& gridSpacing,
75  const Vector3D& origin);
76 
89  Size3 resolution() const;
90 
93 
95  Vector3D origin() const;
96 
99 
115  const ScalarGridBuilder3Ptr& builder,
116  double initialVal = 0.0);
117 
133  const VectorGridBuilder3Ptr& builder,
134  const Vector3D& initialVal = Vector3D());
135 
151  const ScalarGridBuilder3Ptr& builder,
152  double initialVal = 0.0);
153 
169  const VectorGridBuilder3Ptr& builder,
170  const Vector3D& initialVal = Vector3D());
171 
181 
191  size_t velocityIndex() const;
192 
194  const ScalarGrid3Ptr& scalarDataAt(size_t idx) const;
195 
197  const VectorGrid3Ptr& vectorDataAt(size_t idx) const;
198 
200  const ScalarGrid3Ptr& advectableScalarDataAt(size_t idx) const;
201 
203  const VectorGrid3Ptr& advectableVectorDataAt(size_t idx) const;
204 
206  size_t numberOfScalarData() const;
207 
209  size_t numberOfVectorData() const;
210 
213 
216 
218  void serialize(std::vector<uint8_t>* buffer) const override;
219 
221  void deserialize(const std::vector<uint8_t>& buffer) override;
222 
223  private:
224  Size3 _resolution;
225  Vector3D _gridSpacing;
226  Vector3D _origin;
227 
228  FaceCenteredGrid3Ptr _velocity;
229  size_t _velocityIdx;
230  std::vector<ScalarGrid3Ptr> _scalarDataList;
231  std::vector<VectorGrid3Ptr> _vectorDataList;
232  std::vector<ScalarGrid3Ptr> _advectableScalarDataList;
233  std::vector<VectorGrid3Ptr> _advectableVectorDataList;
234 };
235 
237 typedef std::shared_ptr<GridSystemData3> GridSystemData3Ptr;
238 
239 } // namespace jet
240 
241 #endif // INCLUDE_JET_GRID_SYSTEM_DATA3_H_
jet::FaceCenteredGrid3Ptr
std::shared_ptr< FaceCenteredGrid3 > FaceCenteredGrid3Ptr
Shared pointer type for the FaceCenteredGrid3.
Definition: face_centered_grid3.h:285
scalar_grid3.h
jet::GridSystemData3::advectableVectorDataAt
const VectorGrid3Ptr & advectableVectorDataAt(size_t idx) const
Returns the advectable vector data at given index.
jet::GridSystemData3::numberOfScalarData
size_t numberOfScalarData() const
Returns the number of non-advectable scalar data.
jet::GridSystemData3::numberOfAdvectableVectorData
size_t numberOfAdvectableVectorData() const
Returns the number of advectable vector data.
jet::GridSystemData3::numberOfAdvectableScalarData
size_t numberOfAdvectableScalarData() const
Returns the number of advectable scalar data.
jet::GridSystemData3::scalarDataAt
const ScalarGrid3Ptr & scalarDataAt(size_t idx) const
Returns the non-advectable scalar data at given index.
jet::GridSystemData3::GridSystemData3
GridSystemData3(const GridSystemData3 &other)
Copy constructor.
jet::GridSystemData3::resolution
Size3 resolution() const
Returns the resolution of the grid.
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::GridSystemData3::velocityIndex
size_t velocityIndex() const
Returns the index of the velocity field.
jet::GridSystemData3::addScalarData
size_t addScalarData(const ScalarGridBuilder3Ptr &builder, double initialVal=0.0)
Adds a non-advectable scalar data grid by passing its builder and initial value.
jet::GridSystemData3::deserialize
void deserialize(const std::vector< uint8_t > &buffer) override
Serialize the data from the given buffer.
jet::BoundingBox< T, 3 >
3-D axis-aligned bounding box class.
Definition: bounding_box3.h:41
jet::GridSystemData3::~GridSystemData3
virtual ~GridSystemData3()
Destructor.
jet::GridSystemData3::GridSystemData3
GridSystemData3()
Constructs empty grid system.
jet::ScalarGrid3Ptr
std::shared_ptr< ScalarGrid3 > ScalarGrid3Ptr
Shared pointer for the ScalarGrid3 type.
Definition: scalar_grid3.h:193
jet::GridSystemData3::boundingBox
BoundingBox3D boundingBox() const
Returns the bounding box of the grid.
jet::GridSystemData3::addAdvectableScalarData
size_t addAdvectableScalarData(const ScalarGridBuilder3Ptr &builder, double initialVal=0.0)
Adds an advectable scalar data grid by passing its builder and initial value.
jet::GridSystemData3::resize
void resize(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &origin)
Resizes the whole system with given resolution, grid spacing, and origin.
jet
Definition: advection_solver2.h:18
jet::GridSystemData3Ptr
std::shared_ptr< GridSystemData3 > GridSystemData3Ptr
Shared pointer type of GridSystemData3.
Definition: grid_system_data3.h:237
jet::ScalarGridBuilder3Ptr
std::shared_ptr< ScalarGridBuilder3 > ScalarGridBuilder3Ptr
Shared pointer for the ScalarGridBuilder3 type.
Definition: scalar_grid3.h:213
jet::GridSystemData3::addAdvectableVectorData
size_t addAdvectableVectorData(const VectorGridBuilder3Ptr &builder, const Vector3D &initialVal=Vector3D())
Adds an advectable vector data grid by passing its builder and initial value.
jet::GridSystemData3::vectorDataAt
const VectorGrid3Ptr & vectorDataAt(size_t idx) const
Returns the non-advectable vector data at given index.
jet::GridSystemData3::origin
Vector3D origin() const
Returns the origin of the grid.
jet::Size3
3-D size class.
Definition: size3.h:19
jet::Serializable
Abstract base class for any serializable class.
Definition: serialization.h:17
jet::Vector3D
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
face_centered_grid3.h
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25
jet::GridSystemData3
3-D grid system data.
Definition: grid_system_data3.h:26
jet::GridSystemData3::GridSystemData3
GridSystemData3(const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &origin)
Constructs a grid system with given resolution, grid spacing and origin.
jet::GridSystemData3::numberOfVectorData
size_t numberOfVectorData() const
Returns the number of non-advectable vector data.
jet::GridSystemData3::addVectorData
size_t addVectorData(const VectorGridBuilder3Ptr &builder, const Vector3D &initialVal=Vector3D())
Adds a non-advectable vector data grid by passing its builder and initial value.
serialization.h
jet::GridSystemData3::serialize
void serialize(std::vector< uint8_t > *buffer) const override
Serialize the data to the given buffer.
jet::GridSystemData3::velocity
const FaceCenteredGrid3Ptr & velocity() const
Returns the velocity field.
jet::GridSystemData3::gridSpacing
Vector3D gridSpacing() const
Return the grid spacing.
jet::GridSystemData3::advectableScalarDataAt
const ScalarGrid3Ptr & advectableScalarDataAt(size_t idx) const
Returns the advectable scalar data at given index.