Jet  v1.3.3
vector_grid2.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_GRID2_H_
8 #define INCLUDE_JET_VECTOR_GRID2_H_
9 
10 #include <jet/array_accessor2.h>
11 #include <jet/grid2.h>
12 #include <jet/parallel.h>
13 #include <jet/vector_field2.h>
14 
15 #include <memory>
16 #include <vector>
17 
18 namespace jet {
19 
21 class VectorGrid2 : public VectorField2, public Grid2 {
22  public:
25 
28 
31 
33  virtual ~VectorGrid2();
34 
36  void clear();
37 
39  void resize(size_t resolutionX, size_t resolutionY,
40  double gridSpacingX = 1.0, double gridSpacingY = 1.0,
41  double originX = 0.0, double originY = 0.0,
42  double initialValueX = 0.0, double initialValueY = 0.0);
43 
45  void resize(const Size2& resolution,
46  const Vector2D& gridSpacing = Vector2D(1, 1),
47  const Vector2D& origin = Vector2D(),
48  const Vector2D& initialValue = Vector2D());
49 
51  void resize(double gridSpacingX, double gridSpacingY, double originX,
52  double originY);
53 
55  void resize(const Vector2D& gridSpacing, const Vector2D& origin);
56 
58  virtual void fill(const Vector2D& value,
60 
62  virtual void fill(const std::function<Vector2D(const Vector2D&)>& func,
64 
66  virtual std::shared_ptr<VectorGrid2> clone() const = 0;
67 
69  void serialize(std::vector<uint8_t>* buffer) const override;
70 
72  void deserialize(const std::vector<uint8_t>& buffer) override;
73 
74  protected:
82  virtual void onResize(const Size2& resolution, const Vector2D& gridSpacing,
83  const Vector2D& origin,
84  const Vector2D& initialValue) = 0;
85 };
86 
88 typedef std::shared_ptr<VectorGrid2> VectorGrid2Ptr;
89 
92  public:
95 
98 
100  virtual VectorGrid2Ptr build(const Size2& resolution,
101  const Vector2D& gridSpacing,
102  const Vector2D& gridOrigin,
103  const Vector2D& initialVal) const = 0;
104 };
105 
107 typedef std::shared_ptr<VectorGridBuilder2> VectorGridBuilder2Ptr;
108 
109 } // namespace jet
110 
111 #endif // INCLUDE_JET_VECTOR_GRID2_H_
jet::VectorGridBuilder2Ptr
std::shared_ptr< VectorGridBuilder2 > VectorGridBuilder2Ptr
Shared pointer for the VectorGridBuilder2 type.
Definition: vector_grid2.h:107
parallel.h
jet::ExecutionPolicy
ExecutionPolicy
Execution policy tag.
Definition: parallel.h:13
array_accessor2.h
jet::VectorGrid2::resize
void resize(const Size2 &resolution, const Vector2D &gridSpacing=Vector2D(1, 1), const Vector2D &origin=Vector2D(), const Vector2D &initialValue=Vector2D())
Resizes the grid using given parameters.
jet::Grid2::origin
const Vector2D & origin() const
Returns the grid origin.
jet::Vector2D
Vector2< double > Vector2D
Double-type 2D vector.
Definition: vector2.h:340
jet::VectorGrid2::ConstVectorDataAccessor
ConstArrayAccessor2< Vector2D > ConstVectorDataAccessor
Read-only array accessor type.
Definition: vector_grid2.h:27
jet::VectorGrid2::deserialize
void deserialize(const std::vector< uint8_t > &buffer) override
Deserializes the input buffer to the grid instance.
vector_field2.h
jet::VectorGrid2::serialize
void serialize(std::vector< uint8_t > *buffer) const override
Serializes the grid instance to the output buffer.
jet::Grid2
Abstract base class for 2-D cartesian grid structure.
Definition: grid2.h:30
jet::VectorGrid2
Abstract base class for 2-D vector grid structure.
Definition: vector_grid2.h:21
jet
Definition: advection_solver2.h:18
jet::ConstArrayAccessor< T, 2 >
2-D read-only array accessor class.
Definition: array_accessor2.h:261
jet::VectorGrid2::resize
void resize(size_t resolutionX, size_t resolutionY, double gridSpacingX=1.0, double gridSpacingY=1.0, double originX=0.0, double originY=0.0, double initialValueX=0.0, double initialValueY=0.0)
Resizes the grid using given parameters.
jet::VectorGridBuilder2
Abstract base class for 2-D vector grid builder.
Definition: vector_grid2.h:91
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::VectorGrid2::resize
void resize(const Vector2D &gridSpacing, const Vector2D &origin)
Resizes the grid using given parameters.
jet::VectorGrid2::~VectorGrid2
virtual ~VectorGrid2()
Default destructor.
jet::VectorGrid2::clone
virtual std::shared_ptr< VectorGrid2 > clone() const =0
Returns the copy of the grid instance.
jet::VectorGridBuilder2::~VectorGridBuilder2
virtual ~VectorGridBuilder2()
Default destructor.
jet::VectorGrid2::VectorDataAccessor
ArrayAccessor2< Vector2D > VectorDataAccessor
Read-write array accessor type.
Definition: vector_grid2.h:24
jet::VectorGrid2::fill
virtual void fill(const std::function< Vector2D(const Vector2D &)> &func, ExecutionPolicy policy=ExecutionPolicy::kParallel)=0
Fills the grid with given position-to-value mapping function.
jet::VectorGrid2::onResize
virtual void onResize(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &origin, const Vector2D &initialValue)=0
Invoked when the resizing happens.
jet::VectorGridBuilder2::VectorGridBuilder2
VectorGridBuilder2()
Creates a builder.
jet::Size2
2-D size class.
Definition: size2.h:19
jet::ArrayAccessor< T, 2 >
2-D array accessor class.
Definition: array_accessor2.h:31
grid2.h
jet::VectorGrid2::clear
void clear()
Clears the contents of the grid.
jet::VectorGridBuilder2::build
virtual VectorGrid2Ptr build(const Size2 &resolution, const Vector2D &gridSpacing, const Vector2D &gridOrigin, const Vector2D &initialVal) const =0
Returns 2-D vector grid with given parameters.
jet::VectorGrid2::resize
void resize(double gridSpacingX, double gridSpacingY, double originX, double originY)
Resizes the grid using given parameters.
jet::ExecutionPolicy::kParallel
@ kParallel
jet::Grid2::resolution
const Size2 & resolution() const
Returns the grid resolution.
jet::VectorGrid2::VectorGrid2
VectorGrid2()
Constructs an empty grid.
jet::Grid2::gridSpacing
const Vector2D & gridSpacing() const
Returns the grid spacing.
jet::VectorField2
Abstract base class for 2-D vector field.
Definition: vector_field2.h:18
jet::VectorGrid2Ptr
std::shared_ptr< VectorGrid2 > VectorGrid2Ptr
Shared pointer for the VectorGrid2 type.
Definition: vector_grid2.h:88
jet::VectorGrid2::fill
virtual void fill(const Vector2D &value, ExecutionPolicy policy=ExecutionPolicy::kParallel)=0
Fills the grid with given value.