Loading...
Searching...
No Matches
SemiLagrangian3.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_SEMI_LAGRANGIAN3_HPP
12#define CUBBYFLOW_SEMI_LAGRANGIAN3_HPP
13
15
16namespace CubbyFlow
17{
30{
31 public:
33 SemiLagrangian3() = default;
34
37
40
43
46
49
72 std::numeric_limits<double>::max())) final;
73
96 std::numeric_limits<double>::max())) final;
97
118 double dt, FaceCenteredGrid3* output,
120 std::numeric_limits<double>::max())) final;
121
122 protected:
134
146
158
159 private:
160 [[nodiscard]] Vector3D BackTrace(const VectorField3& flow, double dt,
161 double h, const Vector3D& startPt,
163};
164
166} // namespace CubbyFlow
167
168#endif
Abstract based class for 3-D grid-based advection solver.
Definition AdvectionSolver3.hpp:29
Abstract base class for N-D collocated vector grid structure.
Definition CollocatedVectorGrid.hpp:23
N-D constant scalar field.
Definition ConstantScalarField.hpp:21
N-D face-centered (a.k.a MAC or staggered) grid.
Definition FaceCenteredGrid.hpp:32
Definition Matrix.hpp:30
Abstract base class for N-D scalar field.
Definition ScalarField.hpp:25
Abstract base class for N-D scalar grid structure.
Definition ScalarGrid.hpp:25
Implementation of 3-D semi-Lagrangian advection solver.
Definition SemiLagrangian3.hpp:30
virtual std::function< Vector3D(const Vector3D &)> GetVectorSamplerFunc(const CollocatedVectorGrid3 &input) const
Returns spatial interpolation function object for given collocated vector grid.
SemiLagrangian3(SemiLagrangian3 &&) noexcept=default
Default move constructor.
SemiLagrangian3()=default
Default constructor.
void Advect(const ScalarGrid3 &input, const VectorField3 &flow, double dt, ScalarGrid3 *output, const ScalarField3 &boundarySDF=ConstantScalarField3(std::numeric_limits< double >::max())) final
Computes semi-Lagrangian for given scalar grid.
SemiLagrangian3(const SemiLagrangian3 &)=default
Default copy constructor.
virtual std::function< double(const Vector3D &)> GetScalarSamplerFunc(const ScalarGrid3 &input) const
Returns spatial interpolation function object for given scalar grid.
Abstract base class for N-D vector field.
Definition VectorField.hpp:43
Definition pybind11Utils.hpp:21
std::shared_ptr< SemiLagrangian3 > SemiLagrangian3Ptr
Definition SemiLagrangian3.hpp:165