40#ifndef NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_MCNAB_TIME_INTEGRATION_SCHEME 
   41#define NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_MCNAB_TIME_INTEGRATION_SCHEME 
   43#define LUE LIB_UTILITIES_EXPORT 
   54                               std::vector<NekDouble> freeParams)
 
   57        boost::ignore_unused(variant, order);
 
   79        [[maybe_unused]] std::string variant, [[maybe_unused]] 
size_t order,
 
   80        std::vector<NekDouble> freeParams)
 
   93        phase->m_schemeType = 
eIMEX;
 
   96            std::string(
"MCNABOrder" + std::to_string(phase->m_order));
 
   98        phase->m_numsteps  = 5;
 
   99        phase->m_numstages = 1;
 
  117        phase->m_A[0][0][0] = 9.0 / 16.0;
 
  118        phase->m_B[0][0][0] = 9.0 / 16.0;
 
  119        phase->m_B[0][1][0] = 1.0;
 
  121        phase->m_B[1][3][0] = 1.0;
 
  123        phase->m_U[0][0] = 1.0;
 
  124        phase->m_U[0][1] = 6.0 / 16.0;
 
  125        phase->m_U[0][2] = 1.0 / 16.0;
 
  126        phase->m_U[0][3] = 24.0 / 16.0;
 
  127        phase->m_U[0][4] = -8.0 / 16.0;
 
  129        phase->m_V[0][0] = 1.0;
 
  130        phase->m_V[0][1] = 6.0 / 16.0;
 
  131        phase->m_V[0][2] = 1.0 / 16.0;
 
  132        phase->m_V[0][3] = 24.0 / 16.0;
 
  133        phase->m_V[0][4] = -8.0 / 16.0;
 
  135        phase->m_V[2][1] = 1.0;
 
  136        phase->m_V[4][3] = 1.0;
 
  138        phase->m_numMultiStepValues         = 1;
 
  139        phase->m_numMultiStepImplicitDerivs = 2;
 
  140        phase->m_numMultiStepExplicitDerivs = 2;
 
  142        phase->m_timeLevelOffset[0] = 0;
 
  143        phase->m_timeLevelOffset[1] = 0;
 
  144        phase->m_timeLevelOffset[2] = 1;
 
  145        phase->m_timeLevelOffset[3] = 0;
 
  146        phase->m_timeLevelOffset[4] = 1;
 
  148        phase->CheckAndVerify();
 
  154        return std::string(
"MCNAB");
 
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, size_t order, std::vector< NekDouble > freeParams)
 
static std::string className
 
MCNABTimeIntegrationScheme(std::string variant, size_t order, std::vector< NekDouble > freeParams)
 
LUE std::string v_GetName() const override
 
LUE NekDouble v_GetTimeStability() const override
 
~MCNABTimeIntegrationScheme() override
 
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase)
 
static std::string TimeIntegrationMethodLookupId
 
static TimeIntegrationSchemeSharedPtr create(std::string variant, size_t order, std::vector< NekDouble > freeParams)
 
Base class for GLM time integration schemes.
 
TimeIntegrationAlgorithmGLMVector m_integration_phases
 
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
 
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
 
@ eIMEX
Implicit Explicit General Linear Method.
 
std::vector< TimeIntegrationAlgorithmGLMSharedPtr > TimeIntegrationAlgorithmGLMVector
 
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr