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
53 namespace LibUtilities
63 std::vector<NekDouble> freeParams)
68 "AdamsBashforth Time integration scheme bad order (1-4): " +
69 std::to_string(order));
73 for (
unsigned int 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,
unsigned int order,
129 std::vector<NekDouble> freeParams)
143 return std::string(
"AdamsBashforth");
156 { { 0., 0., 0., 0. },
160 { 3./ 2., -1./ 2., 0., 0. },
162 { 23./12., -16./12., 5./12., 0. },
164 { 55./24., -59./24., 37./24., -9./24.} };
168 phase->m_order = order;
170 std::string(
"AdamsBashforthOrder" + std::to_string(phase->m_order));
172 phase->m_numsteps = phase->m_order;
173 phase->m_numstages = 1;
193 phase->m_B[0][0][0] = coefficients[phase->m_order][0];
196 if (phase->m_order > 1)
198 phase->m_B[0][1][0] = 1.0;
202 phase->m_U[0][0] = 1.0;
203 phase->m_V[0][0] = 1.0;
206 for (
int n = 1; n < phase->m_order; ++n)
208 phase->m_V[0][n] = coefficients[phase->m_order][n];
212 for (
int n = 2; n < phase->m_order; ++n)
214 phase->m_V[n][n - 1] = 1.0;
217 phase->m_numMultiStepValues = 1;
218 phase->m_numMultiStepDerivs = phase->m_order - 1;
220 phase->m_timeLevelOffset[0] = 0;
223 for (
int n = 1; n < phase->m_order; ++n)
225 phase->m_timeLevelOffset[n] = n;
228 phase->CheckAndVerify();
241 std::vector<NekDouble> freeParams)
244 boost::ignore_unused(variant);
245 boost::ignore_unused(order);
249 std::string variant,
unsigned int order,
250 std::vector<NekDouble> freeParams)
252 boost::ignore_unused(variant);
253 boost::ignore_unused(order);
271 std::vector<NekDouble> freeParams)
274 boost::ignore_unused(variant);
275 boost::ignore_unused(order);
279 std::string variant,
unsigned int order,
280 std::vector<NekDouble> freeParams)
282 boost::ignore_unused(variant);
283 boost::ignore_unused(order);
301 std::vector<NekDouble> freeParams)
304 boost::ignore_unused(variant);
305 boost::ignore_unused(order);
309 std::string variant,
unsigned int order,
310 std::vector<NekDouble> freeParams)
312 boost::ignore_unused(variant);
313 boost::ignore_unused(order);
331 std::vector<NekDouble> freeParams)
334 boost::ignore_unused(variant);
335 boost::ignore_unused(order);
339 std::string variant,
unsigned int order,
340 std::vector<NekDouble> freeParams)
342 boost::ignore_unused(variant);
343 boost::ignore_unused(order);
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
AdamsBashforthOrder1TimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static std::string className
AdamsBashforthOrder2TimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static std::string className
AdamsBashforthOrder3TimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static std::string className
AdamsBashforthOrder4TimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
virtual LUE std::string GetName() const
virtual ~AdamsBashforthTimeIntegrationScheme()
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, int order)
AdamsBashforthTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
virtual LUE NekDouble GetTimeStability() const
static std::string className
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
Base class for GLM time integration schemes.
TimeIntegrationAlgorithmGLMVector m_integration_phases
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
The above copyright notice and this permission notice shall be included.