39#ifndef NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_TIME_INTEGRATION_ALGORITHM_GLM
40#define NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_TIME_INTEGRATION_ALGORITHM_GLM
42#define LUE LIB_UTILITIES_EXPORT
274 inline NekDouble A(
const size_t k,
const size_t i,
const size_t j)
const
295 inline NekDouble B(
const size_t k,
const size_t i,
const size_t j)
const
316 inline NekDouble U(
const size_t k,
const size_t i,
const size_t j)
const
337 inline NekDouble V(
const size_t k,
const size_t i,
const size_t j)
const
378 return y[0][0].size();
void CheckIfLastStageEqualsNewSolution()
size_t GetFirstDim(ConstTripleArray &y) const
TimeIntegrationSchemeType m_schemeType
NekDouble V(const size_t k, const size_t i, const size_t j) const
Array< TwoD, NekDouble > m_U
size_t GetNsteps(void) const
void VerifyIntegrationSchemeType()
TimeIntegrationSchemeOperators m_op
Array< OneD, std::complex< NekDouble > > m_L
TimeIntegrationAlgorithmGLM(const TimeIntegrationSchemeGLM *parent)
Array< OneD, Array< TwoD, NekDouble > > m_A_phi
NekDouble U(const size_t k, const size_t i, const size_t j) const
NekDouble A(const size_t k, const size_t i, const size_t j) const
size_t m_nvars
Last number of vars.
~TimeIntegrationAlgorithmGLM()
NekDouble B(const size_t k, const size_t i, const size_t j) const
std::vector< NekDouble > m_freeParams
Array< TwoD, NekDouble > m_V
NekDouble V(const size_t i, const size_t j) const
LUE friend std::ostream & operator<<(std::ostream &os, const TimeIntegrationScheme &rhs)
The size of inner data which is stored for reuse.
NekDouble m_lastNVars
Last delta T.
const TimeIntegrationSchemeGLM * m_parent
Parent scheme object.
TripleArray m_F
Explicit RHS of each stage equation.
void CheckIfFirstStageEqualsOldSolution()
Optimisation-flag.
Array< OneD, Array< TwoD, NekDouble > > m_B_phi
size_t m_numMultiStepExplicitDerivs
DoubleArray m_tmp
Array containing the stage values.
NekDouble A(const size_t i, const size_t j) const
size_t GetSecondDim(ConstTripleArray &y) const
NekDouble B_IMEX(const size_t i, const size_t j) const
size_t GetNmultiStepExplicitDerivs() const
Array< OneD, Array< TwoD, NekDouble > > m_B
size_t m_numMultiStepValues
bool CheckTimeIntegrateArguments(ConstTripleArray &y_old, ConstSingleArray &t_old, TripleArray &y_new, SingleArray &t_new) const
bool m_lastStageEqualsNewSolution
Optimisation-flag.
NekDouble A_IMEX(const size_t i, const size_t j) const
NekDouble B(const size_t i, const size_t j) const
Array< OneD, Array< TwoD, NekDouble > > m_A
size_t GetNmultiStepImplicitDerivs() const
Array< OneD, Array< TwoD, NekDouble > > m_V_phi
NekDouble U(const size_t i, const size_t j) const
NekDouble m_T
Used to store the Explicit stage derivative of IMEX schemes.
bool m_firstStageEqualsOldSolution
ime at the different stages
size_t GetNmultiStepValues() const
const Array< OneD, const size_t > & GetTimeLevelOffset() const
size_t m_npoints
The number of variables in integration scheme.
void InitializeScheme(const TimeIntegrationSchemeOperators &op)
LUE ConstDoubleArray & TimeIntegrate(const NekDouble deltaT, TimeIntegrationSolutionGLMSharedPtr &y)
Explicit integration of an ODE.
Array< OneD, size_t > m_timeLevelOffset
size_t m_numMultiStepImplicitDerivs
LUE TimeIntegrationSolutionGLMSharedPtr InitializeData(const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time)
This function initialises the time integration scheme.
LUE void CheckAndVerify()
TimeIntegrationSchemeType GetIntegrationSchemeType() const
TripleArray m_F_IMEX
Array corresponding to the stage Derivatives.
size_t GetNstages(void) const
Array< OneD, Array< TwoD, NekDouble > > m_U_phi
Base class for GLM time integration schemes.
Base class for time integration schemes.
Binds a set of functions for use by time integration schemes.
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
TimeIntegrationSchemeType
@ eExponential
Exponential scheme.
@ eNoTimeIntegrationSchemeType
std::shared_ptr< TimeIntegrationSolutionGLM > TimeIntegrationSolutionGLMSharedPtr
std::ostream & operator<<(std::ostream &os, const BasisKey &rhs)
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr