Jet  v1.3.3
grid_boundary_condition_solver3.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_BOUNDARY_CONDITION_SOLVER3_H_
8 #define INCLUDE_JET_GRID_BOUNDARY_CONDITION_SOLVER3_H_
9 
10 #include <jet/collider3.h>
11 #include <jet/constants.h>
13 #include <jet/scalar_field3.h>
14 
15 #include <memory>
16 
17 namespace jet {
18 
27  public:
30 
33 
35  const Collider3Ptr& collider() const;
36 
50  const Collider3Ptr& newCollider,
51  const Size3& gridSize,
52  const Vector3D& gridSpacing,
53  const Vector3D& gridOrigin);
54 
57 
60 
68  virtual void constrainVelocity(
69  FaceCenteredGrid3* velocity,
70  unsigned int extrapolationDepth = 5) = 0;
71 
73  virtual ScalarField3Ptr colliderSdf() const = 0;
74 
77 
78  protected:
80  virtual void onColliderUpdated(
81  const Size3& gridSize,
82  const Vector3D& gridSpacing,
83  const Vector3D& gridOrigin) = 0;
84 
86  const Size3& gridSize() const;
87 
89  const Vector3D& gridSpacing() const;
90 
92  const Vector3D& gridOrigin() const;
93 
94  private:
95  Collider3Ptr _collider;
96  Size3 _gridSize;
97  Vector3D _gridSpacing;
98  Vector3D _gridOrigin;
99  int _closedDomainBoundaryFlag = kDirectionAll;
100 };
101 
103 typedef std::shared_ptr<GridBoundaryConditionSolver3>
105 
106 } // namespace jet
107 
108 #endif // INCLUDE_JET_GRID_BOUNDARY_CONDITION_SOLVER3_H_
jet::GridBoundaryConditionSolver3::onColliderUpdated
virtual void onColliderUpdated(const Size3 &gridSize, const Vector3D &gridSpacing, const Vector3D &gridOrigin)=0
Invoked when a new collider is set.
jet::GridBoundaryConditionSolver3::gridOrigin
const Vector3D & gridOrigin() const
Returns the origin of the velocity grid to be constrained.
jet::kDirectionAll
constexpr int kDirectionAll
All direction.
Definition: constants.h:333
collider3.h
scalar_field3.h
jet::GridBoundaryConditionSolver3::setClosedDomainBoundaryFlag
void setClosedDomainBoundaryFlag(int flag)
Sets the closed domain boundary flag.
jet
Definition: advection_solver2.h:18
jet::GridBoundaryConditionSolver3::constrainVelocity
virtual void constrainVelocity(FaceCenteredGrid3 *velocity, unsigned int extrapolationDepth=5)=0
jet::GridBoundaryConditionSolver3::collider
const Collider3Ptr & collider() const
Returns associated collider.
jet::GridBoundaryConditionSolver3::closedDomainBoundaryFlag
int closedDomainBoundaryFlag() const
Returns the closed domain boundary flag.
jet::FaceCenteredGrid3
3-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid3.h:26
jet::GridBoundaryConditionSolver3
Abstract base class for 3-D boundary condition solver for grids.
Definition: grid_boundary_condition_solver3.h:26
jet::ScalarField3Ptr
std::shared_ptr< ScalarField3 > ScalarField3Ptr
Shared pointer for the ScalarField3 type.
Definition: scalar_field3.h:40
jet::GridBoundaryConditionSolver3::gridSize
const Size3 & gridSize() const
Returns the size of the velocity grid to be constrained.
jet::Size3
3-D size class.
Definition: size3.h:19
jet::GridBoundaryConditionSolver3Ptr
std::shared_ptr< GridBoundaryConditionSolver3 > GridBoundaryConditionSolver3Ptr
Shared pointer type for the GridBoundaryConditionSolver3.
Definition: grid_boundary_condition_solver3.h:104
jet::GridBoundaryConditionSolver3::colliderSdf
virtual ScalarField3Ptr colliderSdf() const =0
Returns the signed distance field of the collider.
jet::GridBoundaryConditionSolver3::~GridBoundaryConditionSolver3
virtual ~GridBoundaryConditionSolver3()
Default destructor.
constants.h
face_centered_grid3.h
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25
jet::GridBoundaryConditionSolver3::GridBoundaryConditionSolver3
GridBoundaryConditionSolver3()
Default constructor.
jet::GridBoundaryConditionSolver3::updateCollider
void updateCollider(const Collider3Ptr &newCollider, const Size3 &gridSize, const Vector3D &gridSpacing, const Vector3D &gridOrigin)
Applies new collider and build the internals.
jet::Collider3Ptr
std::shared_ptr< Collider3 > Collider3Ptr
Shared pointer type for the Collider2.
Definition: collider3.h:118
jet::GridBoundaryConditionSolver3::gridSpacing
const Vector3D & gridSpacing() const
Returns the spacing of the velocity grid to be constrained.
jet::VectorField3Ptr
std::shared_ptr< VectorField3 > VectorField3Ptr
Shared pointer for the VectorField3 type.
Definition: vector_field3.h:40
jet::GridBoundaryConditionSolver3::colliderVelocityField
virtual VectorField3Ptr colliderVelocityField() const =0
Returns the velocity field of the collider.