Jet  v1.3.3
iterative_level_set_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_ITERATIVE_LEVEL_SET_SOLVER2_H_
8 #define INCLUDE_JET_ITERATIVE_LEVEL_SET_SOLVER2_H_
9 
10 #include <jet/level_set_solver2.h>
11 
12 namespace jet {
13 
26  public:
29 
32 
40  void reinitialize(const ScalarGrid2& inputSdf, double maxDistance,
41  ScalarGrid2* outputSdf) override;
42 
51  void extrapolate(const ScalarGrid2& input, const ScalarField2& sdf,
52  double maxDistance, ScalarGrid2* output) override;
53 
64  const ScalarField2& sdf, double maxDistance,
65  CollocatedVectorGrid2* output) override;
66 
76  void extrapolate(const FaceCenteredGrid2& input, const ScalarField2& sdf,
77  double maxDistance, FaceCenteredGrid2* output) override;
78 
80  double maxCfl() const;
81 
88  void setMaxCfl(double newMaxCfl);
89 
90  protected:
93  const Vector2D& gridSpacing, size_t i, size_t j,
94  std::array<double, 2>* dx,
95  std::array<double, 2>* dy) const = 0;
96 
97  private:
98  double _maxCfl = 0.5;
99 
100  void extrapolate(const ConstArrayAccessor2<double>& input,
101  const ConstArrayAccessor2<double>& sdf,
102  const Vector2D& gridSpacing, double maxDistance,
103  ArrayAccessor2<double> output);
104 
105  static unsigned int distanceToNumberOfIterations(double distance,
106  double dtau);
107 
108  static double sign(const ConstArrayAccessor2<double>& sdf,
109  const Vector2D& gridSpacing, size_t i, size_t j);
110 
111  double pseudoTimeStep(ConstArrayAccessor2<double> sdf,
112  const Vector2D& gridSpacing);
113 };
114 
115 typedef std::shared_ptr<IterativeLevelSetSolver2> IterativeLevelSetSolver2Ptr;
116 
117 } // namespace jet
118 
119 #endif // INCLUDE_JET_ITERATIVE_LEVEL_SET_SOLVER2_H_
level_set_solver2.h
jet::IterativeLevelSetSolver2::getDerivatives
virtual void getDerivatives(ConstArrayAccessor2< double > grid, const Vector2D &gridSpacing, size_t i, size_t j, std::array< double, 2 > *dx, std::array< double, 2 > *dy) const =0
Computes the derivatives for given grid point.
jet::IterativeLevelSetSolver2::extrapolate
void extrapolate(const FaceCenteredGrid2 &input, const ScalarField2 &sdf, double maxDistance, FaceCenteredGrid2 *output) override
jet::IterativeLevelSetSolver2::IterativeLevelSetSolver2
IterativeLevelSetSolver2()
Default constructor.
jet::ScalarField2
Abstract base class for 2-D scalar field.
Definition: scalar_field2.h:18
jet::FaceCenteredGrid2
2-D face-centered (a.k.a MAC or staggered) grid.
Definition: face_centered_grid2.h:26
jet
Definition: advection_solver2.h:18
jet::ConstArrayAccessor< T, 2 >
2-D read-only array accessor class.
Definition: array_accessor2.h:261
jet::ScalarGrid2
Abstract base class for 2-D scalar grid structure.
Definition: scalar_grid2.h:21
jet::IterativeLevelSetSolver2::extrapolate
void extrapolate(const CollocatedVectorGrid2 &input, const ScalarField2 &sdf, double maxDistance, CollocatedVectorGrid2 *output) override
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::IterativeLevelSetSolver2::setMaxCfl
void setMaxCfl(double newMaxCfl)
Sets the maximum CFL limit.
jet::IterativeLevelSetSolver2::reinitialize
void reinitialize(const ScalarGrid2 &inputSdf, double maxDistance, ScalarGrid2 *outputSdf) override
jet::CollocatedVectorGrid2
Abstract base class for 2-D collocated vector grid structure.
Definition: collocated_vector_grid2.h:18
jet::IterativeLevelSetSolver2::extrapolate
void extrapolate(const ScalarGrid2 &input, const ScalarField2 &sdf, double maxDistance, ScalarGrid2 *output) override
jet::ArrayAccessor< T, 2 >
2-D array accessor class.
Definition: array_accessor2.h:31
jet::IterativeLevelSetSolver2
Abstract base class for 2-D PDE-based iterative level set solver.
Definition: iterative_level_set_solver2.h:25
jet::LevelSetSolver2
Abstract base class for 2-D level set solver.
Definition: level_set_solver2.h:18
jet::IterativeLevelSetSolver2Ptr
std::shared_ptr< IterativeLevelSetSolver2 > IterativeLevelSetSolver2Ptr
Definition: iterative_level_set_solver2.h:115
jet::IterativeLevelSetSolver2::~IterativeLevelSetSolver2
virtual ~IterativeLevelSetSolver2()
Default destructor.
jet::IterativeLevelSetSolver2::maxCfl
double maxCfl() const
Returns the maximum CFL limit.