26using IntegrationSchemeEnum [[deprecated(
"Use SpatialSchemeEnum instead")]] =
38template <
class T,
int D>
class Advect;
47 if (kernel.currentTimeStep < 0. || kernel.storedRates.empty())
48 kernel.computeRates(maxTimeStep);
50 kernel.updateLevelSet(kernel.currentTimeStep);
54 kernel.adjustLowerLayers();
56 return kernel.currentTimeStep;
62 kernel.computeRates(maxTimeStep);
66 if (kernel.originalLevelSet ==
nullptr) {
67 kernel.originalLevelSet =
70 kernel.originalLevelSet->deepCopy(kernel.levelSets.back());
76 kernel.updateLevelSet(dt);
78 if (kernel.velocityUpdateCallback)
79 kernel.velocityUpdateCallback(kernel.levelSets.back());
83 kernel.computeRates(dt);
85 kernel.updateLevelSet(dt);
87 kernel.combineLevelSets(0.5, 0.5);
91 if (kernel.velocityUpdateCallback && !kernel.performOnlySingleStep)
92 kernel.velocityUpdateCallback(kernel.levelSets.back());
97 kernel.adjustLowerLayers();
104 kernel.computeRates(maxTimeStep);
108 if (kernel.originalLevelSet ==
nullptr) {
109 kernel.originalLevelSet =
112 kernel.originalLevelSet->deepCopy(kernel.levelSets.back());
119 kernel.updateLevelSet(dt);
121 if (kernel.velocityUpdateCallback)
122 kernel.velocityUpdateCallback(kernel.levelSets.back());
125 kernel.computeRates(dt);
126 kernel.updateLevelSet(dt);
128 kernel.combineLevelSets(0.75, 0.25);
130 if (kernel.velocityUpdateCallback)
131 kernel.velocityUpdateCallback(kernel.levelSets.back());
134 kernel.computeRates(dt);
135 kernel.updateLevelSet(dt);
137 kernel.combineLevelSets(1.0 / 3.0, 2.0 / 3.0);
141 if (kernel.velocityUpdateCallback && !kernel.performOnlySingleStep)
142 kernel.velocityUpdateCallback(kernel.levelSets.back());
147 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:54
double getCurrentTimeStep() const
Return the last applied time step.
Definition lsAdvect.hpp:921
static auto New(Args &&...args)
Definition lsDomain.hpp:112
Definition lsAdvectIntegrationSchemes.hpp:41
Definition lsAdvect.hpp:41
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
@ WENO_3RD_ORDER
Definition lsAdvectIntegrationSchemes.hpp:21
@ ENGQUIST_OSHER_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:11
@ LOCAL_LAX_FRIEDRICHS_ANALYTICAL_1ST_ORDER
Definition lsAdvectIntegrationSchemes.hpp:15
@ WENO_5TH_ORDER
Definition lsAdvectIntegrationSchemes.hpp:22
TemporalSchemeEnum
Enumeration for the different time integration schemes used to select the advection kernel.
Definition lsAdvectIntegrationSchemes.hpp:31
@ RUNGE_KUTTA_2ND_ORDER
Definition lsAdvectIntegrationSchemes.hpp:33
@ RUNGE_KUTTA_3RD_ORDER
Definition lsAdvectIntegrationSchemes.hpp:34
@ FORWARD_EULER
Definition lsAdvectIntegrationSchemes.hpp:32
Definition lsAdvectIntegrationSchemes.hpp:43
viennals::Advect< T, D > AdvectType
Definition lsAdvectIntegrationSchemes.hpp:44
static double evolveRungeKutta3(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:102
static double evolveForwardEuler(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:46
static double evolveRungeKutta2(AdvectType &kernel, double maxTimeStep)
Definition lsAdvectIntegrationSchemes.hpp:59