Jet  v1.3.3
grid_forward_euler_diffusion_solver2.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_FORWARD_EULER_DIFFUSION_SOLVER2_H_
8 #define INCLUDE_JET_GRID_FORWARD_EULER_DIFFUSION_SOLVER2_H_
9 
12 #include <limits>
13 #include <memory>
14 
15 namespace jet {
16 
29  public:
32 
43  void solve(
44  const ScalarGrid2& source,
45  double diffusionCoefficient,
46  double timeIntervalInSeconds,
47  ScalarGrid2* dest,
48  const ScalarField2& boundarySdf
50  const ScalarField2& fluidSdf
51  = ConstantScalarField2(-kMaxD)) override;
52 
63  void solve(
64  const CollocatedVectorGrid2& source,
65  double diffusionCoefficient,
66  double timeIntervalInSeconds,
68  const ScalarField2& boundarySdf
70  const ScalarField2& fluidSdf
71  = ConstantScalarField2(-kMaxD)) override;
72 
83  void solve(
84  const FaceCenteredGrid2& source,
85  double diffusionCoefficient,
86  double timeIntervalInSeconds,
87  FaceCenteredGrid2* dest,
88  const ScalarField2& boundarySdf
90  const ScalarField2& fluidSdf
91  = ConstantScalarField2(-kMaxD)) override;
92 
93  private:
94  Array2<char> _markers;
95 
96  void buildMarkers(
97  const Size2& size,
98  const std::function<Vector2D(size_t, size_t)>& pos,
99  const ScalarField2& boundarySdf,
100  const ScalarField2& fluidSdf);
101 };
102 
104 typedef std::shared_ptr<GridForwardEulerDiffusionSolver2>
106 
107 } // namespace jet
108 
109 #endif // INCLUDE_JET_GRID_FORWARD_EULER_DIFFUSION_SOLVER2_H_
jet::GridDiffusionSolver2
Abstract base class for 2-D grid-based diffusion equation solver.
Definition: grid_diffusion_solver2.h:29
jet::GridForwardEulerDiffusionSolver2::solve
void solve(const FaceCenteredGrid2 &source, double diffusionCoefficient, double timeIntervalInSeconds, FaceCenteredGrid2 *dest, const ScalarField2 &boundarySdf=ConstantScalarField2(kMaxD), const ScalarField2 &fluidSdf=ConstantScalarField2(-kMaxD)) override
jet::Vector2D
Vector2< double > Vector2D
Double-type 2D vector.
Definition: vector2.h:340
grid_diffusion_solver2.h
jet::GridForwardEulerDiffusionSolver2Ptr
std::shared_ptr< GridForwardEulerDiffusionSolver2 > GridForwardEulerDiffusionSolver2Ptr
Shared pointer type for the GridForwardEulerDiffusionSolver2.
Definition: grid_forward_euler_diffusion_solver2.h:105
jet::ScalarField2
Abstract base class for 2-D scalar field.
Definition: scalar_field2.h:18
constant_scalar_field2.h
jet::FaceCenteredGrid2
2-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid2.h:26
jet::Array< T, 2 >
2-D array class.
Definition: array2.h:42
jet::GridForwardEulerDiffusionSolver2::solve
void solve(const ScalarGrid2 &source, double diffusionCoefficient, double timeIntervalInSeconds, ScalarGrid2 *dest, const ScalarField2 &boundarySdf=ConstantScalarField2(kMaxD), const ScalarField2 &fluidSdf=ConstantScalarField2(-kMaxD)) override
jet::GridForwardEulerDiffusionSolver2
2-D grid-based forward Euler diffusion solver.
Definition: grid_forward_euler_diffusion_solver2.h:28
jet
Definition: advection_solver2.h:18
jet::ScalarGrid2
Abstract base class for 2-D scalar grid structure.
Definition: scalar_grid2.h:21
jet::ConstantScalarField2
2-D constant scalar field.
Definition: constant_scalar_field2.h:15
jet::GridForwardEulerDiffusionSolver2::solve
void solve(const CollocatedVectorGrid2 &source, double diffusionCoefficient, double timeIntervalInSeconds, CollocatedVectorGrid2 *dest, const ScalarField2 &boundarySdf=ConstantScalarField2(kMaxD), const ScalarField2 &fluidSdf=ConstantScalarField2(-kMaxD)) override
jet::CollocatedVectorGrid2
Abstract base class for 2-D collocated vector grid structure.
Definition: collocated_vector_grid2.h:18
jet::kMaxD
constexpr double kMaxD
Max double.
Definition: constants.h:88
jet::Size2
2-D size class.
Definition: size2.h:19
jet::GridForwardEulerDiffusionSolver2::GridForwardEulerDiffusionSolver2
GridForwardEulerDiffusionSolver2()
Default constructor.