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
49 namespace LibUtilities
252 inline NekDouble A(
const unsigned int i,
const unsigned int j)
const
256 inline NekDouble B(
const unsigned int i,
const unsigned int j)
const
260 inline NekDouble U(
const unsigned int i,
const unsigned int j)
const
264 inline NekDouble V(
const unsigned int i,
const unsigned int j)
const
294 return y[0][0].size();
void CheckIfLastStageEqualsNewSolution()
TimeIntegrationSchemeType m_schemeType
Array< TwoD, NekDouble > m_U
int GetFirstDim(ConstTripleArray &y) const
void VerifyIntegrationSchemeType()
int GetSecondDim(ConstTripleArray &y) const
NekDouble A(const unsigned int i, const unsigned int j) const
Array< OneD, std::complex< NekDouble > > m_L
Array< OneD, Array< TwoD, NekDouble > > m_A_phi
unsigned int m_numMultiStepValues
~TimeIntegrationAlgorithmGLM()
std::vector< NekDouble > m_freeParams
Array< TwoD, NekDouble > m_V
NekDouble m_lastNVars
Last delta T.
TripleArray m_F
Explicit RHS of each stage equation.
bool CheckTimeIntegrateArguments(ConstTripleArray &y_old, ConstSingleArray &t_old, TripleArray &y_new, SingleArray &t_new, const TimeIntegrationSchemeOperators &op) const
void CheckIfFirstStageEqualsOldSolution()
unsigned int GetNsteps(void) const
Array< OneD, Array< TwoD, NekDouble > > m_B_phi
int m_npoints
The size of inner data which is stored for reuse.
LUE friend std::ostream & operator<<(std::ostream &os, const TimeIntegrationScheme &rhs)
DoubleArray m_tmp
Array containing the stage values.
NekDouble B_IMEX(const unsigned int i, const unsigned int j) const
NekDouble V(const unsigned int i, const unsigned int j) const
Array< OneD, Array< TwoD, NekDouble > > m_B
bool m_lastStageEqualsNewSolution
const TimeIntegrationScheme * m_parent
Parent scheme object.
Array< OneD, Array< TwoD, NekDouble > > m_A
unsigned int GetNmultiStepValues() const
Array< OneD, Array< TwoD, NekDouble > > m_V_phi
NekDouble m_T
Used to store the Explicit stage derivative of IMEX schemes.
const Array< OneD, const unsigned int > & GetTimeLevelOffset() const
bool m_firstStageEqualsOldSolution
Time at the different stages.
unsigned int GetNstages(void) const
unsigned int GetNmultiStepDerivs() const
NekDouble A_IMEX(const unsigned int i, const unsigned int j) const
NekDouble B(const unsigned int i, const unsigned int j) const
TimeIntegrationAlgorithmGLM(const TimeIntegrationScheme *parent)
LUE ConstDoubleArray & TimeIntegrate(const NekDouble deltaT, TimeIntegrationSolutionGLMSharedPtr &y, const TimeIntegrationSchemeOperators &op)
Explicit integration of an ODE.
LUE void CheckAndVerify()
LUE TimeIntegrationSolutionGLMSharedPtr InitializeData(const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)
This function initialises the time integration scheme.
int m_nvars
Last number of vars.
unsigned int m_numMultiStepDerivs
NekDouble m_lastDeltaT
bool to identify array initialization
NekDouble U(const unsigned int i, const unsigned int j) const
TimeIntegrationSchemeType GetIntegrationSchemeType() const
TripleArray m_F_IMEX
Array corresponding to the stage Derivatives.
Array< OneD, unsigned int > m_timeLevelOffset
Array< OneD, Array< TwoD, NekDouble > > m_U_phi
Base class for time integration schemes.
Binds a set of functions for use by time integration schemes.
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
TimeIntegrationSchemeType
@ eNoTimeIntegrationSchemeType
std::shared_ptr< TimeIntegrationSolutionGLM > TimeIntegrationSolutionGLMSharedPtr
std::ostream & operator<<(std::ostream &os, const BasisKey &rhs)
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr
The above copyright notice and this permission notice shall be included.