Loading...
Searching...
No Matches
GridBoundaryConditionSolver2.hpp
Go to the documentation of this file.
1// This code is based on Jet framework.
2// Copyright (c) 2018 Doyub Kim
3// CubbyFlow is voxel-based fluid simulation engine for computer games.
4// Copyright (c) 2020 CubbyFlow Team
5// Core Part: Chris Ohk, Junwoo Hwang, Jihong Sin, Seungwoo Yoo
6// AI Part: Dongheon Cho, Minseo Kim
7// We are making my contributions/submissions to this project solely in our
8// personal capacity and are not conveying any rights to any intellectual
9// property of any third parties.
10
11#ifndef CUBBYFLOW_GRID_BOUNDARY_CONDITION_SOLVER2_HPP
12#define CUBBYFLOW_GRID_BOUNDARY_CONDITION_SOLVER2_HPP
13
17
18namespace CubbyFlow
19{
28{
29 public:
32
35
38 delete;
39
42
46
50
53
69
72
75
84 unsigned int extrapolationDepth = 5) = 0;
85
88
91
97
100
103
106
107 private:
108 Collider2Ptr m_collider;
109 Vector2UZ m_gridSize;
110 Vector2D m_gridSpacing;
111 Vector2D m_gridOrigin;
112 int m_closedDomainBoundaryFlag = DIRECTION_ALL;
113};
114
118} // namespace CubbyFlow
119
120#endif
N-D face-centered (a.k.a MAC or staggered) grid.
Definition FaceCenteredGrid.hpp:32
Abstract base class for 2-D boundary condition solver for grids.
Definition GridBoundaryConditionSolver2.hpp:28
virtual VectorField2Ptr GetColliderVelocityField() const =0
Returns the velocity field of the collider.
GridBoundaryConditionSolver2(const GridBoundaryConditionSolver2 &)=delete
Deleted copy constructor.
virtual void ConstrainVelocity(FaceCenteredGrid2 *velocity, unsigned int extrapolationDepth=5)=0
GridBoundaryConditionSolver2()=default
Default constructor.
GridBoundaryConditionSolver2(GridBoundaryConditionSolver2 &&) noexcept=delete
Deleted move constructor.
const Vector2D & GetGridOrigin() const
Returns the origin of the velocity grid to be constrained.
virtual void OnColliderUpdated(const Vector2UZ &gridSize, const Vector2D &gridSpacing, const Vector2D &gridOrigin)=0
Invoked when a new collider is set.
const Vector2UZ & GetGridSize() const
Returns the size of the velocity grid to be constrained.
void UpdateCollider(const Collider2Ptr &newCollider, const Vector2UZ &gridSize, const Vector2D &gridSpacing, const Vector2D &gridOrigin)
Applies new collider and build the internals.
int GetClosedDomainBoundaryFlag() const
Returns the closed domain boundary flag.
void SetClosedDomainBoundaryFlag(int flag)
Sets the closed domain boundary flag.
const Vector2D & GetGridSpacing() const
Returns the spacing of the velocity grid to be constrained.
const Collider2Ptr & GetCollider() const
Returns associated collider.
virtual ScalarField2Ptr GetColliderSDF() const =0
Returns the signed distance field of the collider.
Definition Matrix.hpp:30
Definition pybind11Utils.hpp:21
std::shared_ptr< Collider2 > Collider2Ptr
Shared pointer type for the Collider2.
Definition Collider.hpp:141
std::shared_ptr< ScalarField2 > ScalarField2Ptr
Shared pointer for the ScalarField2 type.
Definition ScalarField.hpp:67
std::shared_ptr< VectorField2 > VectorField2Ptr
Shared pointer for the VectorField2 type.
Definition VectorField.hpp:87
constexpr int DIRECTION_ALL
All direction.
Definition Constants.hpp:332
std::shared_ptr< GridBoundaryConditionSolver2 > GridBoundaryConditionSolver2Ptr
Shared pointer type for the GridBoundaryConditionSolver2.
Definition GridBoundaryConditionSolver2.hpp:117