25using IntegrationSchemeEnum [[deprecated(
"Use SpatialSchemeEnum instead")]] =
37template <
class T,
int D>
class Advect;
46 if (kernel.currentTimeStep < 0. || kernel.storedRates.empty())
47 kernel.computeRates(maxTimeStep);
49 kernel.updateLevelSet(kernel.currentTimeStep);
53 kernel.adjustLowerLayers();
55 return kernel.currentTimeStep;
61 kernel.computeRates(maxTimeStep);
65 if (kernel.originalLevelSet ==
nullptr) {
66 kernel.originalLevelSet =
69 kernel.originalLevelSet->deepCopy(kernel.levelSets.back());
75 kernel.updateLevelSet(dt);
79 kernel.computeRates(dt);
81 kernel.updateLevelSet(dt);
83 kernel.combineLevelSets(0.5, 0.5);
88 kernel.adjustLowerLayers();
95 kernel.computeRates(maxTimeStep);
99 if (kernel.originalLevelSet ==
nullptr) {
100 kernel.originalLevelSet =
103 kernel.originalLevelSet->deepCopy(kernel.levelSets.back());
110 kernel.updateLevelSet(dt);
113 kernel.computeRates(dt);
114 kernel.updateLevelSet(dt);
116 kernel.combineLevelSets(0.75, 0.25);
119 kernel.computeRates(dt);
120 kernel.updateLevelSet(dt);
122 kernel.combineLevelSets(1.0 / 3.0, 2.0 / 3.0);
127 kernel.adjustLowerLayers();
This class is used to advance level sets over time. Level sets are passed to the constructor in a std...
Definition lsAdvect.hpp:53
double getCurrentTimeStep() const
Return the last applied time step.
Definition lsAdvect.hpp:913
static auto New(Args &&...args)
Definition lsDomain.hpp:111
Definition lsAdvectIntegrationSchemes.hpp:40
Definition lsAdvect.hpp:40
SpatialSchemeEnum
Enumeration for the different spatial discretization schemes used by the advection kernel.
Definition lsAdvectIntegrationSchemes.hpp:10
@ LOCAL_LOCAL_LAX_FRIEDRICHS_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:17
@ STENCIL_LOCAL_LAX_FRIEDRICHS_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:20
@ LOCAL_LOCAL_LAX_FRIEDRICHS_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:16
@ LAX_FRIEDRICHS_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:14
@ LOCAL_LAX_FRIEDRICHS_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:18
@ ENGQUIST_OSHER_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:12
@ LAX_FRIEDRICHS_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:13
@ LOCAL_LAX_FRIEDRICHS_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:19
@ ENGQUIST_OSHER_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:11
@ LOCAL_LAX_FRIEDRICHS_ANALYTICAL_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:15
@ WENO_5TH_ORDER
Definition lsAdvectIntegrationSchemes.hpp:21
TemporalSchemeEnum
Enumeration for the different time integration schemes used to select the advection kernel.
Definition lsAdvectIntegrationSchemes.hpp:30
@ RUNGE_KUTTA_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:32
@ RUNGE_KUTTA_3RD_ORDER
Definition lsAdvectIntegrationSchemes.hpp:33
@ FORWARD_EULER
Definition lsAdvectIntegrationSchemes.hpp:31
Definition lsAdvectIntegrationSchemes.hpp:42
viennals::Advect< T, D > AdvectType
Definition lsAdvectIntegrationSchemes.hpp:43
static double evolveRungeKutta3(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:93
static double evolveForwardEuler(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:45
static double evolveRungeKutta2(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:58