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

virtual LUE std::string GetFullName () const
 
virtual LUE std::string GetName () const =0
 
virtual LUE std::string GetVariant () const =0
 
virtual LUE unsigned int GetOrder () const =0
 
virtual LUE std::vector< NekDoubleGetFreeParams () const =0
 
virtual LUE TimeIntegrationSchemeType GetIntegrationSchemeType () const =0
 
virtual LUE NekDouble GetTimeStability () const =0
 
virtual LUE unsigned int GetNumIntegrationPhases () const =0
 
virtual const TripleArrayGetSolutionVector () const =0
 Gets the solution vector of the ODE. More...
 
virtual void SetSolutionVector (const int Offset, const DoubleArray &y)=0
 Sets the solution vector of the ODE. More...
 
virtual LUE void InitializeScheme (const NekDouble deltaT, ConstDoubleArray &y_0, const NekDouble time, const TimeIntegrationSchemeOperators &op)=0
 Explicit integration of an ODE. More...
 
virtual LUE ConstDoubleArrayTimeIntegrate (const int timestep, const NekDouble delta_t, const TimeIntegrationSchemeOperators &op)=0
 
virtual LUE void print (std::ostream &os) const =0
 
virtual LUE void printFull (std::ostream &os) const =0
 

Protected Member Functions

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 76 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 146 of file TimeIntegrationScheme.h.

148  {
149  boost::ignore_unused(variant, order, freeParams);
150  }

◆ TimeIntegrationScheme() [2/2]

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

Definition at line 152 of file TimeIntegrationScheme.h.

153  {
154  boost::ignore_unused(in);
155 
156  NEKERROR(ErrorUtil::efatal, "Copy Constructor for the "
157  "TimeIntegrationScheme class should not be "
158  "called");
159  }
#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 161 of file TimeIntegrationScheme.h.

162  {
163  }

Member Function Documentation

◆ GetFreeParams()

virtual LUE std::vector< NekDouble > Nektar::LibUtilities::TimeIntegrationScheme::GetFreeParams ( ) const
pure virtual

◆ GetFullName()

std::string Nektar::LibUtilities::TimeIntegrationScheme::GetFullName ( ) const
virtual

◆ GetIntegrationSchemeType()

virtual LUE TimeIntegrationSchemeType Nektar::LibUtilities::TimeIntegrationScheme::GetIntegrationSchemeType ( ) const
pure virtual

◆ GetName()

virtual LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::GetName ( ) const
pure virtual

◆ GetNumIntegrationPhases()

virtual LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::GetNumIntegrationPhases ( ) const
pure virtual

◆ GetOrder()

virtual LUE unsigned int Nektar::LibUtilities::TimeIntegrationScheme::GetOrder ( ) const
pure virtual

◆ GetSolutionVector()

virtual const TripleArray& Nektar::LibUtilities::TimeIntegrationScheme::GetSolutionVector ( ) const
pure virtual

◆ GetTimeStability()

virtual LUE NekDouble Nektar::LibUtilities::TimeIntegrationScheme::GetTimeStability ( ) const
pure virtual

◆ GetVariant()

virtual LUE std::string Nektar::LibUtilities::TimeIntegrationScheme::GetVariant ( ) const
pure virtual

◆ InitializeScheme()

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

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).

Implemented in Nektar::LibUtilities::TimeIntegrationSchemeGLM, and Nektar::LibUtilities::FractionalInTimeIntegrationScheme.

◆ print()

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

◆ printFull()

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

◆ SetSolutionVector()

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

◆ TimeIntegrate()

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

Friends And Related Function Documentation

◆ operator<< [1/2]

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

Definition at line 59 of file TimeIntegrationScheme.cpp.

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

◆ operator<< [2/2]

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

Definition at line 66 of file TimeIntegrationScheme.cpp.

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