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
51 namespace LibUtilities
61 std::vector<NekDouble> freeParams)
64 boost::ignore_unused(order);
66 ASSERTL1(variant ==
"Backward" || variant ==
"Forward",
67 "Euler Time integration scheme unknown variant: " + variant +
68 ". Must be 'Backward' or 'Forward'");
83 std::string variant,
unsigned int order,
84 std::vector<NekDouble> freeParams)
86 boost::ignore_unused(order);
90 variant, 1, freeParams);
103 return std::string(
"Euler");
123 if (variant ==
"Backward")
129 else if (variant ==
"Forward")
136 phase->m_variant = variant;
138 phase->m_name = variant + std::string(
"EulerOrder") +
139 std::to_string(phase->m_order);
141 phase->m_numsteps = 1;
142 phase->m_numstages = 1;
156 phase->m_numMultiStepValues = 1;
157 phase->m_numMultiStepDerivs = 0;
159 phase->m_timeLevelOffset[0] = 0;
161 phase->CheckAndVerify();
172 std::vector<NekDouble> freeParams)
175 boost::ignore_unused(variant);
176 boost::ignore_unused(order);
180 std::string variant,
unsigned int order,
181 std::vector<NekDouble> freeParams)
183 boost::ignore_unused(variant);
184 boost::ignore_unused(order);
188 "Backward", 1, freeParams);
200 std::vector<NekDouble> freeParams)
203 boost::ignore_unused(variant);
204 boost::ignore_unused(order);
208 std::string variant,
unsigned int order,
209 std::vector<NekDouble> freeParams)
211 boost::ignore_unused(variant);
212 boost::ignore_unused(order);
216 "Forward", 1, freeParams);
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
BackwardEulerTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
EulerTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
virtual LUE std::string GetName() const
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant)
virtual LUE std::string GetFullName() const
virtual LUE NekDouble GetTimeStability() const
static std::string className
virtual ~EulerTimeIntegrationScheme()
static std::string className
ForwardEulerTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
Base class for GLM time integration schemes.
TimeIntegrationAlgorithmGLMVector m_integration_phases
virtual 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
The above copyright notice and this permission notice shall be included.