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
50 namespace LibUtilities
57 std::vector<NekDouble> freeParams)
60 boost::ignore_unused(variant);
61 boost::ignore_unused(order);
83 std::string variant,
unsigned int order,
84 std::vector<NekDouble> freeParams)
86 boost::ignore_unused(variant);
87 boost::ignore_unused(order);
100 return std::string(
"MCNAB");
110 phase->m_schemeType =
eIMEX;
113 std::string(
"MCNABOrder" + std::to_string(phase->m_order));
115 phase->m_numsteps = 5;
116 phase->m_numstages = 1;
134 phase->m_A[0][0][0] = 9.0 / 16.0;
135 phase->m_B[0][0][0] = 9.0 / 16.0;
136 phase->m_B[0][1][0] = 1.0;
138 phase->m_B[1][3][0] = 1.0;
140 phase->m_U[0][0] = 1.0;
141 phase->m_U[0][1] = 6.0 / 16.0;
142 phase->m_U[0][2] = 1.0 / 16.0;
143 phase->m_U[0][3] = 24.0 / 16.0;
144 phase->m_U[0][4] = -8.0 / 16.0;
146 phase->m_V[0][0] = 1.0;
147 phase->m_V[0][1] = 6.0 / 16.0;
148 phase->m_V[0][2] = 1.0 / 16.0;
149 phase->m_V[0][3] = 24.0 / 16.0;
150 phase->m_V[0][4] = -8.0 / 16.0;
152 phase->m_V[2][1] = 1.0;
153 phase->m_V[4][3] = 1.0;
155 phase->m_numMultiStepValues = 1;
156 phase->m_numMultiStepDerivs = 4;
158 phase->m_timeLevelOffset[0] = 0;
159 phase->m_timeLevelOffset[1] = 0;
160 phase->m_timeLevelOffset[2] = 1;
161 phase->m_timeLevelOffset[3] = 0;
162 phase->m_timeLevelOffset[4] = 1;
164 phase->CheckAndVerify();
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, unsigned int order, std::vector< NekDouble > freeParams)
virtual LUE NekDouble GetTimeStability() const
static std::string className
virtual ~MCNABTimeIntegrationScheme()
static TimeIntegrationSchemeSharedPtr create(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
MCNABTimeIntegrationScheme(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase)
virtual LUE std::string GetName() const
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
The above copyright notice and this permission notice shall be included.