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

#include <CNABTimeIntegrationScheme.h>

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

Public Member Functions

 CNABTimeIntegrationScheme (std::string variant, unsigned int order, std::vector< NekDouble > freeParams)
 
virtual ~CNABTimeIntegrationScheme ()
 
- 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)
 

Static Public Attributes

static std::string className
 

Protected Member Functions

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
virtual LUE std::string v_GetFullName () const
 
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 54 of file CNABTimeIntegrationScheme.h.

Constructor & Destructor Documentation

◆ CNABTimeIntegrationScheme()

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

Definition at line 57 of file CNABTimeIntegrationScheme.h.

59  : TimeIntegrationSchemeGLM("", 2, freeParams)
60  {
61  boost::ignore_unused(variant);
62  boost::ignore_unused(order);
63 
66  new TimeIntegrationAlgorithmGLM(this));
68  new TimeIntegrationAlgorithmGLM(this));
69 
71  2, {2, 2}); // dirk 2 2 2
73  m_integration_phases[1]); // CNAB
74  }
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase)
static LUE void SetupSchemeData(TimeIntegrationAlgorithmGLMSharedPtr &phase, unsigned int order, std::vector< NekDouble > freeParams)
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 Nektar::LibUtilities::TimeIntegrationSchemeGLM::m_integration_phases, SetupSchemeData(), and Nektar::LibUtilities::IMEXdirkTimeIntegrationScheme::SetupSchemeData().

◆ ~CNABTimeIntegrationScheme()

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

Definition at line 76 of file CNABTimeIntegrationScheme.h.

77  {
78  }

Member Function Documentation

◆ create()

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

Definition at line 80 of file CNABTimeIntegrationScheme.h.

83  {
84  boost::ignore_unused(variant);
85  boost::ignore_unused(order);
86 
89  "", 2, freeParams);
90 
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::CNABTimeIntegrationScheme::SetupSchemeData ( TimeIntegrationAlgorithmGLMSharedPtr phase)
inlinestatic

Definition at line 96 of file CNABTimeIntegrationScheme.h.

97  {
98  phase->m_schemeType = eIMEX;
99  phase->m_order = 2;
100  phase->m_name =
101  std::string("CNABOrder" + std::to_string(phase->m_order));
102 
103  phase->m_numsteps = 4;
104  phase->m_numstages = 1;
105 
106  phase->m_A = Array<OneD, Array<TwoD, NekDouble>>(2);
107  phase->m_B = Array<OneD, Array<TwoD, NekDouble>>(2);
108 
109  phase->m_A[0] =
110  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numstages, 0.0);
111  phase->m_B[0] =
112  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numstages, 0.0);
113  phase->m_A[1] =
114  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numstages, 0.0);
115  phase->m_B[1] =
116  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numstages, 0.0);
117 
118  phase->m_U =
119  Array<TwoD, NekDouble>(phase->m_numstages, phase->m_numsteps, 0.0);
120  phase->m_V =
121  Array<TwoD, NekDouble>(phase->m_numsteps, phase->m_numsteps, 0.0);
122 
123  phase->m_A[0][0][0] = 1.0 / 2.0;
124  phase->m_B[0][0][0] = 1.0 / 2.0;
125  phase->m_B[0][1][0] = 1.0;
126 
127  phase->m_B[1][2][0] = 1.0;
128 
129  phase->m_U[0][0] = 2.0 / 2.0;
130  phase->m_U[0][1] = 1.0 / 2.0;
131  phase->m_U[0][2] = 3.0 / 2.0;
132  phase->m_U[0][3] = -1.0 / 2.0;
133 
134  phase->m_V[0][0] = 2.0 / 2.0;
135  phase->m_V[0][1] = 1.0 / 2.0;
136  phase->m_V[0][2] = 3.0 / 2.0;
137  phase->m_V[0][3] = -1.0 / 2.0;
138 
139  phase->m_V[3][2] = 1.0;
140 
141  phase->m_numMultiStepValues = 1;
142  phase->m_numMultiStepImplicitDerivs = 1;
143  phase->m_numMultiStepDerivs = 2;
144  phase->m_timeLevelOffset = Array<OneD, unsigned int>(phase->m_numsteps);
145  phase->m_timeLevelOffset[0] = 0;
146  phase->m_timeLevelOffset[1] = 0;
147  phase->m_timeLevelOffset[2] = 0;
148  phase->m_timeLevelOffset[3] = 1;
149 
150  phase->CheckAndVerify();
151  }
@ eIMEX
Implicit Explicit General Linear Method.

References Nektar::LibUtilities::eIMEX.

Referenced by CNABTimeIntegrationScheme().

◆ v_GetName()

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

Implements Nektar::LibUtilities::TimeIntegrationScheme.

Definition at line 154 of file CNABTimeIntegrationScheme.h.

155  {
156  return std::string("CNAB");
157  }

◆ v_GetTimeStability()

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

Implements Nektar::LibUtilities::TimeIntegrationScheme.

Definition at line 159 of file CNABTimeIntegrationScheme.h.

160  {
161  return 1.0;
162  }

Member Data Documentation

◆ className

std::string Nektar::LibUtilities::CNABTimeIntegrationScheme::className
static

Definition at line 94 of file CNABTimeIntegrationScheme.h.