Nektar++
Public Member Functions | Protected Member Functions | Friends | List of all members
Nektar::LibUtilities::TimeIntegrationScheme Class Referenceabstract

Base class for time integration schemes. More...

#include <TimeIntegrationScheme.h>

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

Public Member Functions

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
 

Protected Member Functions

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 unsigned int v_GetOrder () const =0
 
virtual LUE std::vector< NekDoublev_GetFreeParams () const =0
 
virtual LUE TimeIntegrationSchemeType v_GetIntegrationSchemeType () const =0
 
virtual LUE NekDouble v_GetTimeStability () const =0
 
virtual LUE unsigned int v_GetNumIntegrationPhases () const =0
 
virtual const TripleArrayv_GetSolutionVector () const =0
 
virtual void v_SetSolutionVector (const int 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 ConstDoubleArrayv_TimeIntegrate (const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op)=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, unsigned int order, std::vector< NekDouble > freeParams)
 
LUE TimeIntegrationScheme (const TimeIntegrationScheme &in)
 
virtual ~TimeIntegrationScheme ()
 

Friends

LUE friend std::ostream & operator<< (std::ostream &os, const TimeIntegrationScheme &rhs)
 
LUE friend std::ostream & operator<< (std::ostream &os, const TimeIntegrationSchemeSharedPtr &rhs)
 

Detailed Description

Base class for time integration schemes.

Definition at line 77 of file TimeIntegrationScheme.h.

Constructor & Destructor Documentation

◆ TimeIntegrationScheme() [1/2]

LUE Nektar::LibUtilities::TimeIntegrationScheme::TimeIntegrationScheme ( std::string  variant,
unsigned int  order,
std::vector< NekDouble freeParams 
)
inlineprotected

Definition at line 207 of file TimeIntegrationScheme.h.

209  {
210  boost::ignore_unused(variant, order, freeParams);
211  }

◆ TimeIntegrationScheme() [2/2]

LUE Nektar::LibUtilities::TimeIntegrationScheme::TimeIntegrationScheme ( const TimeIntegrationScheme in)
inlineprotected

Definition at line 213 of file TimeIntegrationScheme.h.

214  {
215  boost::ignore_unused(in);
216 
217  NEKERROR(ErrorUtil::efatal, "Copy Constructor for the "
218  "TimeIntegrationScheme class should not be "
219  "called");
220  }
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
Definition: ErrorUtil.hpp:209

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ ~TimeIntegrationScheme()

virtual Nektar::LibUtilities::TimeIntegrationScheme::~TimeIntegrationScheme ( )
inlineprotectedvirtual

Definition at line 222 of file TimeIntegrationScheme.h.

223  {
224  }

Member Function Documentation

◆ GetFreeParams()

LUE std::vector<NekDouble> Nektar::LibUtilities::TimeIntegrationScheme::GetFreeParams ( )
inline

Definition at line 97 of file TimeIntegrationScheme.h.

98  {
99  return v_GetFreeParams();
100  }
virtual LUE std::vector< NekDouble > v_GetFreeParams() const =0

References v_GetFreeParams().

◆ GetFullName()

LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::GetFullName ( ) const
inline

◆ GetIntegrationSchemeType()

LUE TimeIntegrationSchemeType Nektar::LibUtilities::TimeIntegrationScheme::GetIntegrationSchemeType ( )
inline

Definition at line 101 of file TimeIntegrationScheme.h.

102  {
104  }
virtual LUE TimeIntegrationSchemeType v_GetIntegrationSchemeType() const =0

References v_GetIntegrationSchemeType().

◆ GetName()

LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::GetName ( ) const
inline

Definition at line 85 of file TimeIntegrationScheme.h.

86  {
87  return v_GetName();
88  }
virtual LUE std::string v_GetName() const =0

References v_GetName().

Referenced by v_GetFullName().

◆ GetNumIntegrationPhases()

LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::GetNumIntegrationPhases ( )
inline

Definition at line 109 of file TimeIntegrationScheme.h.

110  {
111  return v_GetNumIntegrationPhases();
112  }
virtual LUE unsigned int v_GetNumIntegrationPhases() const =0

References v_GetNumIntegrationPhases().

◆ GetOrder()

LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::GetOrder ( ) const
inline

Definition at line 93 of file TimeIntegrationScheme.h.

94  {
95  return v_GetOrder();
96  }
virtual LUE unsigned int v_GetOrder() const =0

References v_GetOrder().

Referenced by v_GetFullName(), and Nektar::LibUtilities::RungeKuttaTimeIntegrationScheme::v_GetTimeStability().

◆ GetSolutionVector()

const TripleArray& Nektar::LibUtilities::TimeIntegrationScheme::GetSolutionVector ( ) const
inline

Gets the solution vector of the ODE.

Definition at line 117 of file TimeIntegrationScheme.h.

118  {
119  return v_GetSolutionVector();
120  }
virtual const TripleArray & v_GetSolutionVector() const =0

References v_GetSolutionVector().

◆ GetTimeStability()

LUE NekDouble Nektar::LibUtilities::TimeIntegrationScheme::GetTimeStability ( ) const
inline

Definition at line 105 of file TimeIntegrationScheme.h.

106  {
107  return v_GetTimeStability();
108  }
virtual LUE NekDouble v_GetTimeStability() const =0

References v_GetTimeStability().

◆ GetVariant()

LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::GetVariant ( ) const
inline

Definition at line 89 of file TimeIntegrationScheme.h.

90  {
91  return v_GetVariant();
92  }
virtual LUE std::string v_GetVariant() const =0

References v_GetVariant().

Referenced by v_GetFullName(), and Nektar::LibUtilities::EulerTimeIntegrationScheme::v_GetTimeStability().

◆ InitializeScheme()

LUE void Nektar::LibUtilities::TimeIntegrationScheme::InitializeScheme ( const NekDouble  deltaT,
ConstDoubleArray y_0,
const NekDouble  time,
const TimeIntegrationSchemeOperators op 
)
inline

Explicit integration of an ODE.

This function explicitely perfroms a single integration step of the ODE system:

\[ \frac{d\boldsymbol{y}}{dt}=\boldsymbol{f}(t,\boldsymbol{y}) \]

Parameters
timestepThe size of the timestep, i.e. \(\Delta t\).
fan object of the class FuncType, where FuncType should have a method FuncType::ODEforcing to evaluate the right hand side \(f(t,\boldsymbol{y})\) of the ODE.
yon input: the vectors \(\boldsymbol{y}^{[n-1]}\) and \(t^{[n-1]}\) (which corresponds to the solution at the old time level)
yon output: the vectors \(\boldsymbol{y}^{[n]}\) and \(t^{[n]}\) (which corresponds to the solution at the old new level)
Returns
The actual solution \(\boldsymbol{y}^{n}\) at the new time level (which in fact is also embedded in the argument y).

Definition at line 155 of file TimeIntegrationScheme.h.

158  {
159  v_InitializeScheme(deltaT, y_0, time, op);
160  }
virtual LUE void v_InitializeScheme(const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)=0

References v_InitializeScheme().

◆ print()

LUE void Nektar::LibUtilities::TimeIntegrationScheme::print ( std::ostream &  os) const
inline

Definition at line 169 of file TimeIntegrationScheme.h.

170  {
171  v_print(os);
172  }
virtual LUE void v_print(std::ostream &os) const =0

References v_print().

Referenced by Nektar::LibUtilities::operator<<().

◆ printFull()

LUE void Nektar::LibUtilities::TimeIntegrationScheme::printFull ( std::ostream &  os) const
inline

Definition at line 173 of file TimeIntegrationScheme.h.

174  {
175  v_printFull(os);
176  }
virtual LUE void v_printFull(std::ostream &os) const =0

References v_printFull().

◆ SetSolutionVector()

void Nektar::LibUtilities::TimeIntegrationScheme::SetSolutionVector ( const int  Offset,
const DoubleArray y 
)
inline

Sets the solution vector of the ODE.

Definition at line 125 of file TimeIntegrationScheme.h.

126  {
127  v_SetSolutionVector(Offset, y);
128  }
virtual void v_SetSolutionVector(const int Offset, const DoubleArray &y)=0

References v_SetSolutionVector().

◆ TimeIntegrate()

LUE ConstDoubleArray& Nektar::LibUtilities::TimeIntegrationScheme::TimeIntegrate ( const int  timestep,
const NekDouble  delta_t,
const TimeIntegrationSchemeOperators op 
)
inline

Definition at line 162 of file TimeIntegrationScheme.h.

165  {
166  return v_TimeIntegrate(timestep, delta_t, op);
167  }
virtual LUE ConstDoubleArray & v_TimeIntegrate(const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op)=0

References v_TimeIntegrate().

◆ v_GetFreeParams()

virtual LUE std::vector<NekDouble> Nektar::LibUtilities::TimeIntegrationScheme::v_GetFreeParams ( ) const
protectedpure virtual

◆ v_GetFullName()

std::string Nektar::LibUtilities::TimeIntegrationScheme::v_GetFullName ( ) const
protectedvirtual

◆ v_GetIntegrationSchemeType()

virtual LUE TimeIntegrationSchemeType Nektar::LibUtilities::TimeIntegrationScheme::v_GetIntegrationSchemeType ( ) const
protectedpure virtual

◆ v_GetName()

virtual LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::v_GetName ( ) const
protectedpure virtual

◆ v_GetNumIntegrationPhases()

virtual LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::v_GetNumIntegrationPhases ( ) const
protectedpure virtual

◆ v_GetOrder()

virtual LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::v_GetOrder ( ) const
protectedpure virtual

◆ v_GetSolutionVector()

virtual const TripleArray& Nektar::LibUtilities::TimeIntegrationScheme::v_GetSolutionVector ( ) const
protectedpure virtual

◆ v_GetTimeStability()

virtual LUE NekDouble Nektar::LibUtilities::TimeIntegrationScheme::v_GetTimeStability ( ) const
protectedpure virtual

◆ v_GetVariant()

virtual LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::v_GetVariant ( ) const
protectedpure virtual

◆ v_InitializeScheme()

virtual LUE void Nektar::LibUtilities::TimeIntegrationScheme::v_InitializeScheme ( const NekDouble  deltaT,
ConstDoubleArray y_0,
const NekDouble  time,
const TimeIntegrationSchemeOperators op 
)
protectedpure virtual

◆ v_print()

virtual LUE void Nektar::LibUtilities::TimeIntegrationScheme::v_print ( std::ostream &  os) const
protectedpure virtual

◆ v_printFull()

virtual LUE void Nektar::LibUtilities::TimeIntegrationScheme::v_printFull ( std::ostream &  os) const
protectedpure virtual

◆ v_SetSolutionVector()

virtual void Nektar::LibUtilities::TimeIntegrationScheme::v_SetSolutionVector ( const int  Offset,
const DoubleArray y 
)
protectedpure virtual

◆ v_TimeIntegrate()

virtual LUE ConstDoubleArray& Nektar::LibUtilities::TimeIntegrationScheme::v_TimeIntegrate ( const int  timestep,
const NekDouble  delta_t,
const TimeIntegrationSchemeOperators op 
)
protectedpure virtual

Friends And Related Function Documentation

◆ operator<< [1/2]

LUE friend std::ostream& operator<< ( std::ostream &  os,
const TimeIntegrationScheme rhs 
)
friend

Definition at line 60 of file TimeIntegrationScheme.cpp.

61 {
62  rhs.print(os);
63 
64  return os;
65 }

◆ operator<< [2/2]

LUE friend std::ostream& operator<< ( std::ostream &  os,
const TimeIntegrationSchemeSharedPtr rhs 
)
friend

Definition at line 67 of file TimeIntegrationScheme.cpp.

69 {
70  os << *rhs.get();
71 
72  return os;
73 }