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
261 inline NekDouble A(
const unsigned int i,
const unsigned int j)
const
267 inline NekDouble A(
const unsigned int k,
const unsigned int i,
268 const unsigned int j)
const
281 inline NekDouble B(
const unsigned int i,
const unsigned int j)
const
287 inline NekDouble B(
const unsigned int k,
const unsigned int i,
288 const unsigned int j)
const
301 inline NekDouble U(
const unsigned int i,
const unsigned int j)
const
307 inline NekDouble U(
const unsigned int k,
const unsigned int i,
308 const unsigned int j)
const
321 inline NekDouble V(
const unsigned int i,
const unsigned int j)
const
327 inline NekDouble V(
const unsigned int k,
const unsigned int i,
328 const unsigned int j)
const
367 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
NekDouble U(const unsigned int k, const unsigned int i, const unsigned int j) const
NekDouble A(const unsigned int k, const unsigned int i, const unsigned int j) const
Array< OneD, Array< TwoD, NekDouble > > m_A_phi
NekDouble B(const unsigned int k, const unsigned int i, const unsigned int j) const
unsigned int m_numMultiStepValues
~TimeIntegrationAlgorithmGLM()
std::vector< NekDouble > m_freeParams
Array< TwoD, NekDouble > m_V
unsigned int m_numMultiStepImplicitDerivs
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
NekDouble V(const unsigned int k, const unsigned int i, const unsigned int j) const
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
unsigned int GetNmultiStepImplicitDerivs() 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
@ eExponential
Exponential scheme.
@ 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.