Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | 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 ()
 
virtual LUE std::string GetFullName () const
 
virtual LUE std::string GetName () const
 
virtual LUE NekDouble GetTimeStability () const
 
- Public Member Functions inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM
virtual LUE std::string GetVariant () const
 
virtual LUE unsigned int GetOrder () const
 
virtual LUE std::vector< NekDoubleGetFreeParams () const
 
virtual LUE TimeIntegrationSchemeType GetIntegrationSchemeType () const
 
LUE unsigned int GetNumIntegrationPhases () const
 
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...
 
virtual LUE void InitializeScheme (const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)
 Worker method to initialize the integration scheme. More...
 
virtual LUE ConstDoubleArrayTimeIntegrate (const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op)
 Worker method that actually does the time integration. More...
 
virtual LUE void InitializeSecondaryData (TimeIntegrationAlgorithmGLM *phase, NekDouble deltaT) const
 
virtual LUE void print (std::ostream &os) const
 Worker method to print details on the integration scheme. More...
 
virtual 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
 

Additional Inherited Members

- Protected Member Functions inherited from Nektar::LibUtilities::TimeIntegrationSchemeGLM
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 ()
 
- 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:250
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.

◆ GetFullName()

virtual LUE std::string Nektar::LibUtilities::EulerTimeIntegrationScheme::GetFullName ( ) const
inlinevirtual

◆ GetName()

virtual LUE std::string Nektar::LibUtilities::EulerTimeIntegrationScheme::GetName ( ) const
inlinevirtual

Implements Nektar::LibUtilities::TimeIntegrationSchemeGLM.

Definition at line 101 of file EulerTimeIntegrationSchemes.h.

102  {
103  return std::string("Euler");
104  }

◆ GetTimeStability()

virtual LUE NekDouble Nektar::LibUtilities::EulerTimeIntegrationScheme::GetTimeStability ( ) const
inlinevirtual

Implements Nektar::LibUtilities::TimeIntegrationSchemeGLM.

Definition at line 106 of file EulerTimeIntegrationSchemes.h.

107  {
108  if (GetVariant() == "Backward")
109  {
110  return 1.0;
111  }
112  else
113  {
114  return 2.784;
115  }
116  }

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

◆ SetupSchemeData()

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

Definition at line 118 of file EulerTimeIntegrationSchemes.h.

120  {
121  double A = 0;
122 
123  if (variant == "Backward")
124  {
125  phase->m_schemeType = eDiagonallyImplicit;
126 
127  A = 1;
128  }
129  else if (variant == "Forward")
130  {
131  phase->m_schemeType = eExplicit;
132 
133  A = 0;
134  }
135 
136  phase->m_variant = variant;
137  phase->m_order = 1;
138  phase->m_name = variant + std::string("EulerOrder") +
139  std::to_string(phase->m_order);
140 
141  phase->m_numsteps = 1;
142  phase->m_numstages = 1;
143 
144  phase->m_A = Array<OneD, Array<TwoD, NekDouble>>(1);
145  phase->m_B = Array<OneD, Array<TwoD, NekDouble>>(1);
146 
147  phase->m_A[0] =
148  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numstages, A);
149  phase->m_B[0] =
150  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numstages, 1.0);
151  phase->m_U =
152  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numsteps, 1.0);
153  phase->m_V =
154  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numsteps, 1.0);
155 
156  phase->m_numMultiStepValues = 1;
157  phase->m_numMultiStepDerivs = 0;
158  phase->m_timeLevelOffset = Array<OneD, unsigned int>(phase->m_numsteps);
159  phase->m_timeLevelOffset[0] = 0;
160 
161  phase->CheckAndVerify();
162  }
@ 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().

Member Data Documentation

◆ className

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

Definition at line 94 of file EulerTimeIntegrationSchemes.h.