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)
 
  146             { {      0.,       0.,      0.,      0. },
 
  150               {  3./ 2.,  -1./ 2.,      0.,      0. },
 
  152               { 23./12., -16./12.,  5./12.,      0. },
 
  154               { 55./24., -59./24., 37./24., -9./24.} };
 
  158         phase->m_order      = order;
 
  160             std::string(
"AdamsBashforthOrder" + std::to_string(phase->m_order));
 
  162         phase->m_numsteps  = phase->m_order;
 
  163         phase->m_numstages = 1;
 
  183         phase->m_B[0][0][0] = coefficients[phase->m_order][0];
 
  186         if (phase->m_order > 1)
 
  188             phase->m_B[0][1][0] = 1.0; 
 
  192         phase->m_U[0][0] = 1.0;
 
  193         phase->m_V[0][0] = 1.0;
 
  196         for (
int n = 1; n < phase->m_order; ++n)
 
  198             phase->m_V[0][n] = coefficients[phase->m_order][n];
 
  202         for (
int n = 2; n < phase->m_order; ++n)
 
  204             phase->m_V[n][n - 1] = 1.0;
 
  207         phase->m_numMultiStepValues         = 1;
 
  208         phase->m_numMultiStepImplicitDerivs = 0;
 
  209         phase->m_numMultiStepDerivs         = phase->m_order - 1;
 
  211         phase->m_timeLevelOffset[0] = 0;
 
  214         for (
int n = 1; n < phase->m_order; ++n)
 
  216             phase->m_timeLevelOffset[n] = n;
 
  219         phase->CheckAndVerify();
 
  225         return std::string(
"AdamsBashforth");
 
  243                                               std::vector<NekDouble> freeParams)
 
  246         boost::ignore_unused(variant);
 
  247         boost::ignore_unused(order);
 
  251         std::string variant, 
unsigned int order,
 
  252         std::vector<NekDouble> freeParams)
 
  254         boost::ignore_unused(variant);
 
  255         boost::ignore_unused(order);
 
  273                                               std::vector<NekDouble> freeParams)
 
  276         boost::ignore_unused(variant);
 
  277         boost::ignore_unused(order);
 
  281         std::string variant, 
unsigned int order,
 
  282         std::vector<NekDouble> freeParams)
 
  284         boost::ignore_unused(variant);
 
  285         boost::ignore_unused(order);
 
  303                                               std::vector<NekDouble> freeParams)
 
  306         boost::ignore_unused(variant);
 
  307         boost::ignore_unused(order);
 
  311         std::string variant, 
unsigned int order,
 
  312         std::vector<NekDouble> freeParams)
 
  314         boost::ignore_unused(variant);
 
  315         boost::ignore_unused(order);
 
  333                                               std::vector<NekDouble> freeParams)
 
  336         boost::ignore_unused(variant);
 
  337         boost::ignore_unused(order);
 
  341         std::string variant, 
unsigned int order,
 
  342         std::vector<NekDouble> freeParams)
 
  344         boost::ignore_unused(variant);
 
  345         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 ~AdamsBashforthTimeIntegrationScheme()
 
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, int order)
 
AdamsBashforthTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
virtual LUE NekDouble v_GetTimeStability() const override
 
static std::string className
 
virtual LUE std::string v_GetName() const override
 
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.