41#ifndef NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_AB_TIME_INTEGRATION_SCHEME
42#define NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_AB_TIME_INTEGRATION_SCHEME
44#define LUE LIB_UTILITIES_EXPORT
46#include <boost/core/ignore_unused.hpp>
61 std::vector<NekDouble> freeParams)
66 "AdamsBashforth Time integration scheme bad order (1-4): " +
67 std::to_string(order));
71 for (
size_t n = 0; n < order; ++n)
109 std::vector<NekDouble>());
113 std::vector<NekDouble>());
118 "AdamsBashforth Time integration scheme bad order: " +
119 std::to_string(order));
128 std::string variant,
size_t order, std::vector<NekDouble> freeParams)
145 { { 0., 0., 0., 0. },
149 { 3./ 2., -1./ 2., 0., 0. },
151 { 23./12., -16./12., 5./12., 0. },
153 { 55./24., -59./24., 37./24., -9./24.} };
157 phase->m_order = order;
159 std::string(
"AdamsBashforthOrder" + std::to_string(phase->m_order));
161 phase->m_numsteps = phase->m_order;
162 phase->m_numstages = 1;
179 phase->m_B[0][0][0] = coefficients[phase->m_order][0];
182 if (phase->m_order > 1)
184 phase->m_B[0][1][0] = 1.0;
188 phase->m_U[0][0] = 1.0;
189 phase->m_V[0][0] = 1.0;
192 for (
size_t n = 1; n < phase->m_order; ++n)
194 phase->m_V[0][n] = coefficients[phase->m_order][n];
198 for (
size_t n = 2; n < phase->m_order; ++n)
200 phase->m_V[n][n - 1] = 1.0;
203 phase->m_numMultiStepValues = 1;
204 phase->m_numMultiStepImplicitDerivs = 0;
205 phase->m_numMultiStepExplicitDerivs = phase->m_order - 1;
207 phase->m_timeLevelOffset[0] = 0;
210 for (
size_t n = 1; n < phase->m_order; ++n)
212 phase->m_timeLevelOffset[n] = n;
215 phase->CheckAndVerify();
221 return std::string(
"AdamsBashforth");
236 return 0.545454545454545;
257 std::vector<NekDouble> freeParams)
260 boost::ignore_unused(variant, order);
264 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
265 std::vector<NekDouble> freeParams)
285 std::vector<NekDouble> freeParams)
288 boost::ignore_unused(variant, order);
292 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
293 std::vector<NekDouble> freeParams)
313 std::vector<NekDouble> freeParams)
316 boost::ignore_unused(variant, order);
320 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
321 std::vector<NekDouble> freeParams)
341 std::vector<NekDouble> freeParams)
344 boost::ignore_unused(variant, order);
348 [[maybe_unused]] std::string variant, [[maybe_unused]]
size_t order,
349 std::vector<NekDouble> freeParams)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
AdamsBashforthOrder1TimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string TimeIntegrationMethodLookupId
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string TimeIntegrationMethodLookupId
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
AdamsBashforthOrder2TimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string className
static std::string TimeIntegrationMethodLookupId
AdamsBashforthOrder3TimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static std::string TimeIntegrationMethodLookupId
AdamsBashforthOrder4TimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, size_t order)
AdamsBashforthTimeIntegrationScheme(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
LUE std::string v_GetName() const override
~AdamsBashforthTimeIntegrationScheme() override
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant, size_t order, std::vector< NekDouble > freeParams)
Base class for GLM time integration schemes.
TimeIntegrationAlgorithmGLMVector m_integration_phases
LUE size_t GetOrder() const
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
@ eExplicit
Formally explicit scheme.
std::vector< TimeIntegrationAlgorithmGLMSharedPtr > TimeIntegrationAlgorithmGLMVector
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr