Nektar++
|
#include <EulerExponentialTimeIntegrationSchemes.h>
Static Public Member Functions | |
static TimeIntegrationSchemeSharedPtr | create (std::string variant, size_t order, std::vector< NekDouble > freeParams) |
static LUE void | SetupSchemeData (TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant, size_t order) |
Static Public Attributes | |
static std::string | className |
Protected Member Functions | |
LUE std::string | v_GetName () const override |
LUE std::string | v_GetFullName () const override |
LUE NekDouble | v_GetTimeStability () const override |
void | v_InitializeSecondaryData (TimeIntegrationAlgorithmGLM *phase, NekDouble deltaT) const override |
Protected Member Functions inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM | |
LUE std::string | v_GetVariant () const override |
LUE size_t | v_GetOrder () const override |
LUE std::vector< NekDouble > | v_GetFreeParams () const override |
LUE TimeIntegrationSchemeType | v_GetIntegrationSchemeType () const override |
LUE size_t | v_GetNumIntegrationPhases () const override |
LUE const TripleArray & | v_GetSolutionVector () const override |
LUE TripleArray & | v_UpdateSolutionVector () override |
LUE void | v_SetSolutionVector (const size_t Offset, const DoubleArray &y) override |
LUE void | v_InitializeScheme (const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op) override |
Worker method to initialize the integration scheme. More... | |
LUE ConstDoubleArray & | v_TimeIntegrate (const size_t timestep, const NekDouble delta_t) override |
Worker method that actually does the time integration. More... | |
virtual LUE void | v_InitializeSecondaryData (TimeIntegrationAlgorithmGLM *phase, NekDouble deltaT) const |
LUE void | v_print (std::ostream &os) const override |
Worker method to print details on the integration scheme. More... | |
LUE void | v_printFull (std::ostream &os) const override |
LUE | TimeIntegrationSchemeGLM (std::string variant, size_t order, std::vector< NekDouble > freeParams) |
~TimeIntegrationSchemeGLM () override | |
Protected Member Functions inherited from Nektar::LibUtilities::TimeIntegrationScheme | |
virtual LUE std::string | v_GetFullName () const |
virtual LUE std::string | v_GetName () const =0 |
virtual LUE std::string | v_GetVariant () const =0 |
virtual LUE size_t | v_GetOrder () const =0 |
virtual LUE std::vector< NekDouble > | v_GetFreeParams () const =0 |
virtual LUE TimeIntegrationSchemeType | v_GetIntegrationSchemeType () const =0 |
virtual LUE NekDouble | v_GetTimeStability () const =0 |
virtual LUE size_t | v_GetNumIntegrationPhases () const =0 |
virtual LUE const TripleArray & | v_GetSolutionVector () const =0 |
virtual LUE TripleArray & | v_UpdateSolutionVector ()=0 |
virtual LUE void | v_SetSolutionVector (const size_t Offset, const DoubleArray &y)=0 |
virtual LUE void | v_InitializeScheme (const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)=0 |
virtual LUE ConstDoubleArray & | v_TimeIntegrate (const size_t timestep, const NekDouble delta_t)=0 |
virtual LUE void | v_print (std::ostream &os) const =0 |
virtual LUE void | v_printFull (std::ostream &os) const =0 |
LUE | TimeIntegrationScheme (std::string variant, size_t order, std::vector< NekDouble > freeParams) |
LUE | TimeIntegrationScheme (const TimeIntegrationScheme &in)=delete |
virtual | ~TimeIntegrationScheme ()=default |
Private Member Functions | |
NekDouble | factorial (size_t n) const |
std::complex< NekDouble > | phi_function (const size_t order, const std::complex< NekDouble > z) const |
Additional Inherited Members | |
Protected Attributes inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM | |
TimeIntegrationAlgorithmGLMVector | m_integration_phases |
TimeIntegrationSolutionGLMSharedPtr | m_solVector |
Definition at line 61 of file EulerExponentialTimeIntegrationSchemes.h.
|
inline |
Definition at line 64 of file EulerExponentialTimeIntegrationSchemes.h.
References ASSERTL1, Nektar::LibUtilities::TimeIntegrationSchemeGLM::m_integration_phases, and SetupSchemeData().
|
inlineoverride |
Definition at line 94 of file EulerExponentialTimeIntegrationSchemes.h.
|
inlinestatic |
Definition at line 98 of file EulerExponentialTimeIntegrationSchemes.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.
|
inlineprivate |
Definition at line 425 of file EulerExponentialTimeIntegrationSchemes.h.
References factorial().
Referenced by factorial(), and phi_function().
|
inlineprivate |
Phi function
Central to the implementation of exponential integrators is the evaluation of exponential-like functions, commonly denoted by phi (φ) functions. It is convenient to define then as φ0(z) = e^z, in which case the functions obey the recurrence relation.
0: exp(z); 1: (exp(z) - 1.0) / (z); 2: (exp(z) - z - 1.0) / (z * z);
Definition at line 430 of file EulerExponentialTimeIntegrationSchemes.h.
References factorial(), phi_function(), and Nektar::UnitTests::z().
Referenced by phi_function(), and v_InitializeSecondaryData().
|
inline |
Lambda Matrix Assumption, parameter Lambda.
The one-dimensional Lambda matrix is a diagonal matrix thus values are non zero if and only i=j. As such, the diagonal Lambda values are stored in an array of complex numbers.
Definition at line 180 of file EulerExponentialTimeIntegrationSchemes.h.
References ASSERTL0, and Nektar::LibUtilities::TimeIntegrationSchemeGLM::m_integration_phases.
|
inlinestatic |
Definition at line 110 of file EulerExponentialTimeIntegrationSchemes.h.
References Nektar::LibUtilities::eExponential.
Referenced by EulerExponentialTimeIntegrationScheme().
|
inlineoverrideprotectedvirtual |
Reimplemented from Nektar::LibUtilities::TimeIntegrationScheme.
Definition at line 213 of file EulerExponentialTimeIntegrationSchemes.h.
References Nektar::LibUtilities::TimeIntegrationScheme::GetName(), Nektar::LibUtilities::TimeIntegrationScheme::GetOrder(), and Nektar::LibUtilities::TimeIntegrationScheme::GetVariant().
|
inlineoverrideprotectedvirtual |
Implements Nektar::LibUtilities::TimeIntegrationScheme.
Definition at line 208 of file EulerExponentialTimeIntegrationSchemes.h.
|
inlineoverrideprotectedvirtual |
Implements Nektar::LibUtilities::TimeIntegrationScheme.
Definition at line 218 of file EulerExponentialTimeIntegrationSchemes.h.
|
inlineoverrideprotectedvirtual |
Lambda Matrix Assumption, member variable phase->m_L
The one-dimensional Lambda matrix is a diagonal matrix thus values are non zero if and only i=j. As such, the diagonal Lambda values are stored in an array of complex numbers.
Reimplemented from Nektar::LibUtilities::TimeIntegrationSchemeGLM.
Definition at line 223 of file EulerExponentialTimeIntegrationSchemes.h.
References ASSERTL1, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_A_phi, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_B_phi, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_L, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_numstages, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_numsteps, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_nvars, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_order, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_U_phi, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_V_phi, Nektar::LibUtilities::TimeIntegrationAlgorithmGLM::m_variant, and phi_function().
|
static |
Definition at line 108 of file EulerExponentialTimeIntegrationSchemes.h.