Jet  v1.3.3
grid_forward_euler_diffusion_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_FORWARD_EULER_DIFFUSION_SOLVER3_H_
8 #define INCLUDE_JET_GRID_FORWARD_EULER_DIFFUSION_SOLVER3_H_
9 
12 #include <limits>
13 #include <memory>
14 
15 namespace jet {
16 
29  public:
32 
43  void solve(
44  const ScalarGrid3& source,
45  double diffusionCoefficient,
46  double timeIntervalInSeconds,
47  ScalarGrid3* dest,
48  const ScalarField3& boundarySdf
50  const ScalarField3& fluidSdf
51  = ConstantScalarField3(-kMaxD)) override;
52 
63  void solve(
64  const CollocatedVectorGrid3& source,
65  double diffusionCoefficient,
66  double timeIntervalInSeconds,
68  const ScalarField3& boundarySdf
70  const ScalarField3& fluidSdf
71  = ConstantScalarField3(-kMaxD)) override;
72 
83  void solve(
84  const FaceCenteredGrid3& source,
85  double diffusionCoefficient,
86  double timeIntervalInSeconds,
87  FaceCenteredGrid3* dest,
88  const ScalarField3& boundarySdf
90  const ScalarField3& fluidSdf
91  = ConstantScalarField3(-kMaxD)) override;
92 
93  private:
94  Array3<char> _markers;
95 
96  void buildMarkers(
97  const Size3& size,
98  const std::function<Vector3D(size_t, size_t, size_t)>& pos,
99  const ScalarField3& boundarySdf,
100  const ScalarField3& fluidSdf);
101 };
102 
104 typedef std::shared_ptr<GridForwardEulerDiffusionSolver3>
106 
107 } // namespace jet
108 
109 #endif // INCLUDE_JET_GRID_FORWARD_EULER_DIFFUSION_SOLVER3_H_
grid_diffusion_solver3.h
jet::ScalarField3
Abstract base class for 3-D scalar field.
Definition: scalar_field3.h:18
jet::GridForwardEulerDiffusionSolver3::GridForwardEulerDiffusionSolver3
GridForwardEulerDiffusionSolver3()
Default constructor.
jet::CollocatedVectorGrid3
Abstract base class for 3-D collocated vector grid structure.
Definition: collocated_vector_grid3.h:18
jet
Definition: advection_solver2.h:18
jet::GridDiffusionSolver3
Abstract base class for 3-D grid-based diffusion equation solver.
Definition: grid_diffusion_solver3.h:30
jet::GridForwardEulerDiffusionSolver3::solve
void solve(const CollocatedVectorGrid3 &source, double diffusionCoefficient, double timeIntervalInSeconds, CollocatedVectorGrid3 *dest, const ScalarField3 &boundarySdf=ConstantScalarField3(kMaxD), const ScalarField3 &fluidSdf=ConstantScalarField3(-kMaxD)) override
jet::FaceCenteredGrid3
3-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid3.h:26
jet::ConstantScalarField3
3-D constant scalar field.
Definition: constant_scalar_field3.h:15
jet::Size3
3-D size class.
Definition: size3.h:19
jet::kMaxD
constexpr double kMaxD
Max double.
Definition: constants.h:88
constant_scalar_field3.h
jet::ScalarGrid3
Abstract base class for 3-D scalar grid structure.
Definition: scalar_grid3.h:21
jet::Vector3D
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
jet::GridForwardEulerDiffusionSolver3Ptr
std::shared_ptr< GridForwardEulerDiffusionSolver3 > GridForwardEulerDiffusionSolver3Ptr
Shared pointer type for the GridForwardEulerDiffusionSolver3.
Definition: grid_forward_euler_diffusion_solver3.h:105
jet::GridForwardEulerDiffusionSolver3::solve
void solve(const ScalarGrid3 &source, double diffusionCoefficient, double timeIntervalInSeconds, ScalarGrid3 *dest, const ScalarField3 &boundarySdf=ConstantScalarField3(kMaxD), const ScalarField3 &fluidSdf=ConstantScalarField3(-kMaxD)) override
jet::GridForwardEulerDiffusionSolver3
3-D grid-based forward Euler diffusion solver.
Definition: grid_forward_euler_diffusion_solver3.h:28
jet::Array< T, 3 >
3-D array class.
Definition: array3.h:43
jet::GridForwardEulerDiffusionSolver3::solve
void solve(const FaceCenteredGrid3 &source, double diffusionCoefficient, double timeIntervalInSeconds, FaceCenteredGrid3 *dest, const ScalarField3 &boundarySdf=ConstantScalarField3(kMaxD), const ScalarField3 &fluidSdf=ConstantScalarField3(-kMaxD)) override