Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Nektar::LibUtilities::EulerTimeIntegrationScheme Class Reference

#include <EulerTimeIntegrationSchemes.h>

Inheritance diagram for Nektar::LibUtilities::EulerTimeIntegrationScheme:
[legend]

Public Member Functions

 EulerTimeIntegrationScheme (std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
virtual ~EulerTimeIntegrationScheme ()
 
- Public Member Functions inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM
LUE void InitializeSecondaryData (TimeIntegrationAlgorithmGLM *phase, NekDouble deltaT) const
 
- Public Member Functions inherited from Nektar::LibUtilities::TimeIntegrationScheme
LUE std::string GetFullName () const
 
LUE std::string GetName () const
 
LUE std::string GetVariant () const
 
LUE unsigned int GetOrder () const
 
LUE std::vector< NekDoubleGetFreeParams ()
 
LUE TimeIntegrationSchemeType GetIntegrationSchemeType ()
 
LUE NekDouble GetTimeStability () const
 
LUE unsigned int GetNumIntegrationPhases ()
 
const TripleArrayGetSolutionVector () const
 Gets the solution vector of the ODE. More...
 
void SetSolutionVector (const int Offset, const DoubleArray &y)
 Sets the solution vector of the ODE. More...
 
LUE void InitializeScheme (const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)
 Explicit integration of an ODE. More...
 
LUE ConstDoubleArrayTimeIntegrate (const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op)
 
LUE void print (std::ostream &os) const
 
LUE void printFull (std::ostream &os) const
 

Static Public Member Functions

static TimeIntegrationSchemeSharedPtr create (std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
static LUE void SetupSchemeData (TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant)
 

Static Public Attributes

static std::string className
 

Protected Member Functions

virtual LUE std::string v_GetFullName () const override
 
virtual LUE std::string v_GetName () const override
 
virtual LUE NekDouble v_GetTimeStability () const override
 
- Protected Member Functions inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM
virtual LUE std::string v_GetVariant () const override
 
virtual LUE unsigned int v_GetOrder () const override
 
virtual LUE std::vector< NekDoublev_GetFreeParams () const override
 
virtual LUE TimeIntegrationSchemeType v_GetIntegrationSchemeType () const override
 
virtual LUE unsigned int v_GetNumIntegrationPhases () const override
 
virtual const TripleArrayv_GetSolutionVector () const override
 
virtual void v_SetSolutionVector (const int Offset, const DoubleArray &y) override
 
virtual 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...
 
virtual LUE ConstDoubleArrayv_TimeIntegrate (const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op) override
 Worker method that actually does the time integration. More...
 
virtual LUE void v_InitializeSecondaryData (TimeIntegrationAlgorithmGLM *phase, NekDouble deltaT) const
 
virtual LUE void v_print (std::ostream &os) const override
 Worker method to print details on the integration scheme. More...
 
virtual LUE void v_printFull (std::ostream &os) const override
 
LUE TimeIntegrationSchemeGLM (std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
virtual ~TimeIntegrationSchemeGLM ()
 
- Protected Member Functions inherited from Nektar::LibUtilities::TimeIntegrationScheme
LUE TimeIntegrationScheme (std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
LUE TimeIntegrationScheme (const TimeIntegrationScheme &in)
 
virtual ~TimeIntegrationScheme ()
 

Additional Inherited Members

- Protected Attributes inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM
TimeIntegrationAlgorithmGLMVector m_integration_phases
 
TimeIntegrationSolutionGLMSharedPtr m_solVector
 

Detailed Description

Definition at line 57 of file EulerTimeIntegrationSchemes.h.

Constructor & Destructor Documentation

◆ EulerTimeIntegrationScheme()

Nektar::LibUtilities::EulerTimeIntegrationScheme::EulerTimeIntegrationScheme ( std::string  variant,
unsigned int  order,
std::vector< NekDouble freeParams 
)
inline

Definition at line 60 of file EulerTimeIntegrationSchemes.h.

62  : TimeIntegrationSchemeGLM(variant, 1, freeParams)
63  {
64  boost::ignore_unused(order);
65 
66  ASSERTL1(variant == "Backward" || variant == "Forward",
67  "Euler Time integration scheme unknown variant: " + variant +
68  ". Must be 'Backward' or 'Forward'");
69 
72  new TimeIntegrationAlgorithmGLM(this));
73 
75  variant);
76  }
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:249
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, std::string variant)
TimeIntegrationAlgorithmGLMVector m_integration_phases
LUE TimeIntegrationSchemeGLM(std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
std::shared_ptr< TimeIntegrationAlgorithmGLM > TimeIntegrationAlgorithmGLMSharedPtr
std::vector< TimeIntegrationAlgorithmGLMSharedPtr > TimeIntegrationAlgorithmGLMVector

References ASSERTL1, Nektar::LibUtilities::TimeIntegrationSchemeGLM::m_integration_phases, and SetupSchemeData().

◆ ~EulerTimeIntegrationScheme()

virtual Nektar::LibUtilities::EulerTimeIntegrationScheme::~EulerTimeIntegrationScheme ( )
inlinevirtual

Definition at line 78 of file EulerTimeIntegrationSchemes.h.

79  {
80  }

Member Function Documentation

◆ create()

static TimeIntegrationSchemeSharedPtr Nektar::LibUtilities::EulerTimeIntegrationScheme::create ( std::string  variant,
unsigned int  order,
std::vector< NekDouble freeParams 
)
inlinestatic

Definition at line 82 of file EulerTimeIntegrationSchemes.h.

85  {
86  boost::ignore_unused(order);
87 
90  variant, 1, freeParams);
91  return p;
92  }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< TimeIntegrationScheme > TimeIntegrationSchemeSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.

◆ SetupSchemeData()

static LUE void Nektar::LibUtilities::EulerTimeIntegrationScheme::SetupSchemeData ( TimeIntegrationAlgorithmGLMSharedPtr phase,
std::string  variant 
)
inlinestatic

Definition at line 96 of file EulerTimeIntegrationSchemes.h.

98  {
99  double A = 0;
100 
101  if (variant == "Backward")
102  {
103  phase->m_schemeType = eDiagonallyImplicit;
104 
105  A = 1;
106  }
107  else if (variant == "Forward")
108  {
109  phase->m_schemeType = eExplicit;
110 
111  A = 0;
112  }
113 
114  phase->m_variant = variant;
115  phase->m_order = 1;
116  phase->m_name = variant + std::string("EulerOrder") +
117  std::to_string(phase->m_order);
118 
119  phase->m_numsteps = 1;
120  phase->m_numstages = 1;
121 
122  phase->m_A = Array<OneD, Array<TwoD, NekDouble>>(1);
123  phase->m_B = Array<OneD, Array<TwoD, NekDouble>>(1);
124 
125  phase->m_A[0] =
126  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numstages, A);
127  phase->m_B[0] =
128  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numstages, 1.0);
129  phase->m_U =
130  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numsteps, 1.0);
131  phase->m_V =
132  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numsteps, 1.0);
133 
134  phase->m_numMultiStepValues = 1;
135  phase->m_numMultiStepImplicitDerivs = 0;
136  phase->m_numMultiStepDerivs = 0;
137  phase->m_timeLevelOffset = Array<OneD, unsigned int>(phase->m_numsteps);
138  phase->m_timeLevelOffset[0] = 0;
139 
140  phase->CheckAndVerify();
141  }
@ eExplicit
Formally explicit scheme.
@ eDiagonallyImplicit
Diagonally implicit scheme (e.g. the DIRK schemes)

References Nektar::LibUtilities::eDiagonallyImplicit, and Nektar::LibUtilities::eExplicit.

Referenced by Nektar::LibUtilities::AdamsMoultonTimeIntegrationScheme::AdamsMoultonTimeIntegrationScheme(), and EulerTimeIntegrationScheme().

◆ v_GetFullName()

virtual LUE std::string Nektar::LibUtilities::EulerTimeIntegrationScheme::v_GetFullName ( ) const
inlineoverrideprotectedvirtual

◆ v_GetName()

virtual LUE std::string Nektar::LibUtilities::EulerTimeIntegrationScheme::v_GetName ( ) const
inlineoverrideprotectedvirtual

Implements Nektar::LibUtilities::TimeIntegrationScheme.

Definition at line 149 of file EulerTimeIntegrationSchemes.h.

150  {
151  return std::string("Euler");
152  }

◆ v_GetTimeStability()

virtual LUE NekDouble Nektar::LibUtilities::EulerTimeIntegrationScheme::v_GetTimeStability ( ) const
inlineoverrideprotectedvirtual

Implements Nektar::LibUtilities::TimeIntegrationScheme.

Definition at line 154 of file EulerTimeIntegrationSchemes.h.

155  {
156  if (GetVariant() == "Backward")
157  {
158  return 1.0;
159  }
160  else
161  {
162  return 2.784;
163  }
164  }

References Nektar::LibUtilities::TimeIntegrationScheme::GetVariant().

Member Data Documentation

◆ className

std::string Nektar::LibUtilities::EulerTimeIntegrationScheme::className
static

Definition at line 94 of file EulerTimeIntegrationSchemes.h.