41#ifndef NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_EULER_TIME_INTEGRATION_SCHEME
42#define NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_EULER_TIME_INTEGRATION_SCHEME
44#define LUE LIB_UTILITIES_EXPORT
58 std::vector<NekDouble> freeParams)
61 boost::ignore_unused(variant, order);
63 ASSERTL1(variant ==
"Backward" || variant ==
"Forward",
64 "Euler Time integration scheme unknown variant: " + variant +
65 ". Must be 'Backward' or 'Forward'");
80 std::string variant, [[maybe_unused]]
size_t order,
81 std::vector<NekDouble> freeParams)
85 variant, 1, freeParams);
96 if (variant ==
"Backward")
102 else if (variant ==
"Forward")
109 phase->m_variant = variant;
111 phase->m_name = variant + std::string(
"EulerOrder") +
112 std::to_string(phase->m_order);
114 phase->m_numsteps = 1;
115 phase->m_numstages = 1;
129 phase->m_numMultiStepValues = 1;
130 phase->m_numMultiStepImplicitDerivs = 0;
131 phase->m_numMultiStepExplicitDerivs = 0;
133 phase->m_timeLevelOffset[0] = 0;
135 phase->CheckAndVerify();
146 return std::string(
"Euler");
169 std::vector<NekDouble> freeParams)
172 boost::ignore_unused(variant, order);
176 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
177 std::vector<NekDouble> freeParams)
181 "Backward", 1, freeParams);
196 std::vector<NekDouble> freeParams)
199 boost::ignore_unused(variant, order);
203 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
204 std::vector<NekDouble> freeParams)
208 "Forward", 1, freeParams);
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string className
BackwardEulerTimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string TimeIntegrationMethodLookupId
LUE std::string v_GetName() const override
~EulerTimeIntegrationScheme() override
LUE std::string v_GetFullName() const override
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant)
static std::string className
EulerTimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
LUE NekDouble v_GetTimeStability() const override
static std::string className
static std::string TimeIntegrationMethodLookupId
ForwardEulerTimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
Base class for GLM time integration schemes.
TimeIntegrationAlgorithmGLMVector m_integration_phases
LUE std::string GetVariant() const
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
@ eExplicit
Formally explicit scheme.
@ eDiagonallyImplicit
Diagonally implicit scheme (e.g. the DIRK schemes)
std::vector< TimeIntegrationAlgorithmGLMSharedPtr > TimeIntegrationAlgorithmGLMVector
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr