Jet  v1.3.3
grid_system_data2.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_DATA2_H_
8 #define INCLUDE_JET_GRID_SYSTEM_DATA2_H_
9 
11 #include <jet/scalar_grid2.h>
12 #include <jet/serialization.h>
13 #include <memory>
14 #include <vector>
15 
16 namespace jet {
17 
26 class GridSystemData2 : public Serializable {
27  public:
30 
47  const Size2& resolution,
48  const Vector2D& gridSpacing,
49  const Vector2D& origin);
50 
53 
55  virtual ~GridSystemData2();
56 
72  void resize(
73  const Size2& resolution,
74  const Vector2D& gridSpacing,
75  const Vector2D& origin);
76 
89  Size2 resolution() const;
90 
93 
95  Vector2D origin() const;
96 
99 
115  const ScalarGridBuilder2Ptr& builder,
116  double initialVal = 0.0);
117 
133  const VectorGridBuilder2Ptr& builder,
134  const Vector2D& initialVal = Vector2D());
135 
151  const ScalarGridBuilder2Ptr& builder,
152  double initialVal = 0.0);
153 
169  const VectorGridBuilder2Ptr& builder,
170  const Vector2D& initialVal = Vector2D());
171 
181 
191  size_t velocityIndex() const;
192 
194  const ScalarGrid2Ptr& scalarDataAt(size_t idx) const;
195 
197  const VectorGrid2Ptr& vectorDataAt(size_t idx) const;
198 
200  const ScalarGrid2Ptr& advectableScalarDataAt(size_t idx) const;
201 
203  const VectorGrid2Ptr& 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  Size2 _resolution;
225  Vector2D _gridSpacing;
226  Vector2D _origin;
227 
228  FaceCenteredGrid2Ptr _velocity;
229  size_t _velocityIdx;
230  std::vector<ScalarGrid2Ptr> _scalarDataList;
231  std::vector<VectorGrid2Ptr> _vectorDataList;
232  std::vector<ScalarGrid2Ptr> _advectableScalarDataList;
233  std::vector<VectorGrid2Ptr> _advectableVectorDataList;
234 };
235 
237 typedef std::shared_ptr<GridSystemData2> GridSystemData2Ptr;
238 
239 } // namespace jet
240 
241 #endif // INCLUDE_JET_GRID_SYSTEM_DATA2_H_
jet::GridSystemData2
2-D grid system data.
Definition: grid_system_data2.h:26
jet::VectorGridBuilder2Ptr
std::shared_ptr< VectorGridBuilder2 > VectorGridBuilder2Ptr
Shared pointer for the VectorGridBuilder2 type.
Definition: vector_grid2.h:107
jet::GridSystemData2::advectableVectorDataAt
const VectorGrid2Ptr & advectableVectorDataAt(size_t idx) const
Returns the advectable vector data at given index.
jet::GridSystemData2::numberOfAdvectableVectorData
size_t numberOfAdvectableVectorData() const
Returns the number of advectable vector data.
jet::GridSystemData2::resolution
Size2 resolution() const
Returns the resolution of the grid.
jet::GridSystemData2::addAdvectableScalarData
size_t addAdvectableScalarData(const ScalarGridBuilder2Ptr &builder, double initialVal=0.0)
Adds an advectable scalar data grid by passing its builder and initial value.
jet::Vector2D
Vector2< double > Vector2D
Double-type 2D vector.
Definition: vector2.h:340
jet::GridSystemData2::advectableScalarDataAt
const ScalarGrid2Ptr & advectableScalarDataAt(size_t idx) const
Returns the advectable scalar data at given index.
jet::GridSystemData2::boundingBox
BoundingBox2D boundingBox() const
Returns the bounding box of the grid.
jet::GridSystemData2::numberOfScalarData
size_t numberOfScalarData() const
Returns the number of non-advectable scalar data.
jet::GridSystemData2Ptr
std::shared_ptr< GridSystemData2 > GridSystemData2Ptr
Shared pointer type of GridSystemData2.
Definition: grid_system_data2.h:237
jet::GridSystemData2::addAdvectableVectorData
size_t addAdvectableVectorData(const VectorGridBuilder2Ptr &builder, const Vector2D &initialVal=Vector2D())
Adds an advectable vector data grid by passing its builder and initial value.
jet::GridSystemData2::addVectorData
size_t addVectorData(const VectorGridBuilder2Ptr &builder, const Vector2D &initialVal=Vector2D())
Adds a non-advectable vector data grid by passing its builder and initial value.
jet::GridSystemData2::numberOfVectorData
size_t numberOfVectorData() const
Returns the number of non-advectable vector data.
jet
Definition: advection_solver2.h:18
jet::GridSystemData2::gridSpacing
Vector2D gridSpacing() const
Return the grid spacing.
jet::GridSystemData2::scalarDataAt
const ScalarGrid2Ptr & scalarDataAt(size_t idx) const
Returns the non-advectable scalar data at given index.
jet::GridSystemData2::velocityIndex
size_t velocityIndex() const
Returns the index of the velocity field.
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::ScalarGridBuilder2Ptr
std::shared_ptr< ScalarGridBuilder2 > ScalarGridBuilder2Ptr
Shared pointer for the ScalarGridBuilder2 type.
Definition: scalar_grid2.h:208
jet::GridSystemData2::numberOfAdvectableScalarData
size_t numberOfAdvectableScalarData() const
Returns the number of advectable scalar data.
jet::FaceCenteredGrid2Ptr
std::shared_ptr< FaceCenteredGrid2 > FaceCenteredGrid2Ptr
Shared pointer type for the FaceCenteredGrid2.
Definition: face_centered_grid2.h:230
jet::GridSystemData2::~GridSystemData2
virtual ~GridSystemData2()
Destructor.
jet::GridSystemData2::resize
void resize(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin)
Resizes the whole system with given resolution, grid spacing, and origin.
jet::ScalarGrid2Ptr
std::shared_ptr< ScalarGrid2 > ScalarGrid2Ptr
Shared pointer for the ScalarGrid2 type.
Definition: scalar_grid2.h:188
jet::GridSystemData2::GridSystemData2
GridSystemData2(const GridSystemData2 &other)
Copy constructor.
jet::GridSystemData2::serialize
void serialize(std::vector< uint8_t > *buffer) const override
Serialize the data to the given buffer.
jet::GridSystemData2::origin
Vector2D origin() const
Returns the origin of the grid.
face_centered_grid2.h
jet::Serializable
Abstract base class for any serializable class.
Definition: serialization.h:17
jet::BoundingBox< T, 2 >
2-D axis-aligned bounding box class.
Definition: bounding_box2.h:41
jet::Size2
2-D size class.
Definition: size2.h:19
scalar_grid2.h
jet::GridSystemData2::addScalarData
size_t addScalarData(const ScalarGridBuilder2Ptr &builder, double initialVal=0.0)
Adds a non-advectable scalar data grid by passing its builder and initial value.
jet::GridSystemData2::vectorDataAt
const VectorGrid2Ptr & vectorDataAt(size_t idx) const
Returns the non-advectable vector data at given index.
serialization.h
jet::GridSystemData2::deserialize
void deserialize(const std::vector< uint8_t > &buffer) override
Serialize the data from the given buffer.
jet::GridSystemData2::GridSystemData2
GridSystemData2(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin)
Constructs a grid system with given resolution, grid spacing and origin.
jet::VectorGrid2Ptr
std::shared_ptr< VectorGrid2 > VectorGrid2Ptr
Shared pointer for the VectorGrid2 type.
Definition: vector_grid2.h:88
jet::GridSystemData2::GridSystemData2
GridSystemData2()
Constructs empty grid system.
jet::GridSystemData2::velocity
const FaceCenteredGrid2Ptr & velocity() const
Returns the velocity field.