KASKADE 7 development version
Public Types | Public Member Functions | Public Attributes | List of all members
Kaskade::Limex< Eq > Class Template Reference

Extrapolated linearly implicit Euler method. More...

#include <limex.hh>

Detailed Description

template<class Eq>
class Kaskade::Limex< Eq >

Extrapolated linearly implicit Euler method.

This class implements the extrapolated linearly implicit Euler method for integrating time-dependent evolution problems. The implementation follows Deuflhard/Bornemann Chapter 6.4.3.

Todo:
Currently the matrix \( B \) has to be constant.

This class implements the extrapolated linearly implicit Euler method for integrating time-dependent evolution problems. The implementation follows Deuflhard/Bornemann Chapter 6.4.3.

Template Parameters
Eqa parabolic equation, a model of the ParabolicEquation interface.

This class implements the extrapolated linearly implicit Euler method for integrating time-dependent evolution problems. The implementation follows Deuflhard/Bornemann Chapter 6.4.3.

Definition at line 32 of file limex.hh.

Public Types

typedef Eq EvolutionEquation
 
typedef EvolutionEquation::AnsatzVars::VariableSet State
 
typedef Eq EvolutionEquation
 
typedef EvolutionEquation::AnsatzVars::VariableSet State
 
typedef Eq EvolutionEquation
 
typedef EvolutionEquation::AnsatzVars::VariableSet State
 

Public Member Functions

 Limex (GridManager< typename EvolutionEquation::AnsatzVars::Grid > &gridManager, EvolutionEquation &eq_, typename EvolutionEquation::AnsatzVars const &ansatzVars_, std::vector< std::pair< double, double > > const &tolX)
 
State const & step (State const &x, double dt, int order)
 
double estimateError (State const &x, int i, int j) const
 
template<class OutStream >
void reportTime (OutStream &out) const
 
void advanceTime (double dt)
 
 Limex (GridManager< typename EvolutionEquation::AnsatzVars::Grid > &gridManager_, EvolutionEquation &eq_, typename EvolutionEquation::AnsatzVars const &ansatzVars_, DirectType st=DirectType::MUMPS, PrecondType precondType_=PrecondType::ILUK, int verbosity_=1)
 
State const & step (State const &x, double dt, int order, std::vector< std::pair< double, double > > const &tolX)
 Computes a state increment that advances the given state in time. The time in the given evolution equation is increased by dt. More...
 
std::vector< std::pair< double, double > > estimateError (State const &x, int i, int j) const
 
template<class OutStream >
void reportTime (OutStream &out) const
 
void advanceTime (double dt)
 
 Limex (GridManager< typename EvolutionEquation::AnsatzVars::Grid > &gridManager_, EvolutionEquation &eq_, typename EvolutionEquation::AnsatzVars const &ansatzVars_, DirectType st=DirectType::UMFPACK)
 
State const & step (State const &x, double dt, int order, std::vector< std::pair< double, double > > const &tolX)
 
State const & step (State const &x, double dt, int order, std::vector< std::pair< double, double > > const &tolX, std::vector< std::vector< bool > > &refinements)
 
std::vector< std::pair< double, double > > estimateError (State const &x, int i, int j) const
 
template<class OutStream >
void reportTime (OutStream &out) const
 
void advanceTime (double dt)
 

Public Attributes

ExtrapolationTableau< Stateextrap
 
double rhsAssemblyTime
 
double matrixAssemblyTime
 
double factorizationTime
 
double solutionTime
 
double precAssemblyTime
 
double elapsedTimeSinceReset
 
double initSolutionTime
 
double estimateTime
 
DirectType directType
 
PrecondType precondType
 
int verbosity
 
double adaptivityTime
 
DirectType solverType
 

Member Typedef Documentation

◆ EvolutionEquation [1/3]

template<class Eq >
typedef Eq Kaskade::Limex< Eq >::EvolutionEquation

Definition at line 35 of file limex.hh.

◆ EvolutionEquation [2/3]

template<class Eq >
typedef Eq Kaskade::Limex< Eq >::EvolutionEquation

Definition at line 58 of file limexWithoutJens.hh.

◆ EvolutionEquation [3/3]

template<class Eq >
typedef Eq Kaskade::Limex< Eq >::EvolutionEquation

Definition at line 73 of file limexWithoutJensHierarchicEst.hh.

◆ State [1/3]

template<class Eq >
typedef EvolutionEquation::AnsatzVars::VariableSet Kaskade::Limex< Eq >::State

Definition at line 36 of file limex.hh.

◆ State [2/3]

template<class Eq >
typedef EvolutionEquation::AnsatzVars::VariableSet Kaskade::Limex< Eq >::State

Definition at line 59 of file limexWithoutJens.hh.

◆ State [3/3]

template<class Eq >
typedef EvolutionEquation::AnsatzVars::VariableSet Kaskade::Limex< Eq >::State

Definition at line 74 of file limexWithoutJensHierarchicEst.hh.

Constructor & Destructor Documentation

◆ Limex() [1/3]

template<class Eq >
Kaskade::Limex< Eq >::Limex ( GridManager< typename EvolutionEquation::AnsatzVars::Grid > &  gridManager,
EvolutionEquation eq_,
typename EvolutionEquation::AnsatzVars const &  ansatzVars_,
std::vector< std::pair< double, double > > const &  tolX 
)
inline

Constructs an ODE integrator. The arguments eq and ansatzVars have to exist during the lifetime of the integrator.

Definition at line 47 of file limex.hh.

◆ Limex() [2/3]

template<class Eq >
Kaskade::Limex< Eq >::Limex ( GridManager< typename EvolutionEquation::AnsatzVars::Grid > &  gridManager_,
EvolutionEquation eq_,
typename EvolutionEquation::AnsatzVars const &  ansatzVars_,
DirectType  st = DirectType::MUMPS,
PrecondType  precondType_ = PrecondType::ILUK,
int  verbosity_ = 1 
)
inline

Constructs an ODE integrator. The arguments eq and ansatzVars have to exist during the lifetime of the integrator.

Definition at line 70 of file limexWithoutJens.hh.

◆ Limex() [3/3]

template<class Eq >
Kaskade::Limex< Eq >::Limex ( GridManager< typename EvolutionEquation::AnsatzVars::Grid > &  gridManager_,
EvolutionEquation eq_,
typename EvolutionEquation::AnsatzVars const &  ansatzVars_,
DirectType  st = DirectType::UMFPACK 
)
inline

Constructs an ODE integrator. The arguments eq and ansatzVars have to exist during the lifetime of the integrator.

Definition at line 106 of file limexWithoutJensHierarchicEst.hh.

Member Function Documentation

◆ advanceTime() [1/3]

template<class Eq >
void Kaskade::Limex< Eq >::advanceTime ( double  dt)
inline

Definition at line 162 of file limex.hh.

◆ advanceTime() [2/3]

template<class Eq >
void Kaskade::Limex< Eq >::advanceTime ( double  dt)
inline

Definition at line 424 of file limexWithoutJens.hh.

◆ advanceTime() [3/3]

template<class Eq >
void Kaskade::Limex< Eq >::advanceTime ( double  dt)
inline

Definition at line 705 of file limexWithoutJensHierarchicEst.hh.

◆ estimateError() [1/3]

template<class Eq >
double Kaskade::Limex< Eq >::estimateError ( State const &  x,
int  i,
int  j 
) const
inline

Definition at line 141 of file limex.hh.

◆ estimateError() [2/3]

template<class Eq >
std::vector< std::pair< double, double > > Kaskade::Limex< Eq >::estimateError ( State const &  x,
int  i,
int  j 
) const
inline

Estimates the time discretization error of the previously computed step by taking the difference between the diagonal and subdiagonal extrapolation values of maximal order. This requires that order>1 has been given for the last step.

Definition at line 399 of file limexWithoutJens.hh.

◆ estimateError() [3/3]

template<class Eq >
std::vector< std::pair< double, double > > Kaskade::Limex< Eq >::estimateError ( State const &  x,
int  i,
int  j 
) const
inline

Estimates the time discretization error of the previously computed step by taking the difference between the diagonal and subdiagonal extrapolation values of maximal order. This requires that order>1 has been given for the last step.

Definition at line 683 of file limexWithoutJensHierarchicEst.hh.

◆ reportTime() [1/3]

template<class Eq >
template<class OutStream >
void Kaskade::Limex< Eq >::reportTime ( OutStream &  out) const
inline

Definition at line 155 of file limex.hh.

◆ reportTime() [2/3]

template<class Eq >
template<class OutStream >
void Kaskade::Limex< Eq >::reportTime ( OutStream &  out) const
inline

Definition at line 413 of file limexWithoutJens.hh.

◆ reportTime() [3/3]

template<class Eq >
template<class OutStream >
void Kaskade::Limex< Eq >::reportTime ( OutStream &  out) const
inline

Definition at line 697 of file limexWithoutJensHierarchicEst.hh.

◆ step() [1/4]

template<class Eq >
State const & Kaskade::Limex< Eq >::step ( State const &  x,
double  dt,
int  order 
)
inline

Computes a state increment that advances the given state in time. The time in the given evolution equation is increased by dt.

Parameters
xthe initial state to be evolved
dtthe time step
orderthe extrapolation order
Returns
the state increment (references an internal variable that will be invalidated by a subsequent call of step)
Todo:
(i) check for B constant, do not reassemble matrix in this case (ii) implement fixed point iteration instead of new factorization in case B is not constant

Definition at line 66 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::step().

◆ step() [2/4]

template<class Eq >
State const & Kaskade::Limex< Eq >::step ( State const &  x,
double  dt,
int  order,
std::vector< std::pair< double, double > > const &  tolX 
)
inline

Computes a state increment that advances the given state in time. The time in the given evolution equation is increased by dt.

Parameters
xthe initial state to be evolved
dtthe time step
orderthe extrapolation order >= 0 (0 corresponds to the linearly implicit Euler)
tolX
Returns
the state increment (references an internal variable that will be invalidated by a subsequent call of step)
Todo:
(i) check for B constant, do not reassemble matrix in this case (ii) implement fixed point iteration instead of new factorization in case B is not constant

Definition at line 98 of file limexWithoutJens.hh.

◆ step() [3/4]

template<class Eq >
State const & Kaskade::Limex< Eq >::step ( State const &  x,
double  dt,
int  order,
std::vector< std::pair< double, double > > const &  tolX 
)
inline

In order to maintain compatibility with existing code, this overload is needed, as non const reference parameters (refinements) can not have default values. All ist does is call the original method with a temporary parameter.

Definition at line 122 of file limexWithoutJensHierarchicEst.hh.

◆ step() [4/4]

template<class Eq >
State const & Kaskade::Limex< Eq >::step ( State const &  x,
double  dt,
int  order,
std::vector< std::pair< double, double > > const &  tolX,
std::vector< std::vector< bool > > &  refinements 
)
inline

Computes a state increment that advances the given state in time. The time in the given evolution equation is increased by dt.

Parameters
xthe initial state to be evolved
dtthe time step
orderthe extrapolation order >= 0 (0 corresponds to the linearly implicit Euler)
tolX
refinementskeep track of the cells marked for refinement
Returns
the state increment (references an internal variable that will be invalidated by a subsequent call of step)
Todo:
(i) check for B constant, do not reassemble matrix in this case (ii) implement fixed point iteration instead of new factorization in case B is not constant

Definition at line 146 of file limexWithoutJensHierarchicEst.hh.

Member Data Documentation

◆ adaptivityTime

template<class Eq >
double Kaskade::Limex< Eq >::adaptivityTime

◆ directType

template<class Eq >
DirectType Kaskade::Limex< Eq >::directType

Definition at line 440 of file limexWithoutJens.hh.

Referenced by Kaskade::Limex< Eq >::step().

◆ elapsedTimeSinceReset

template<class Eq >
double Kaskade::Limex< Eq >::elapsedTimeSinceReset

Definition at line 439 of file limexWithoutJens.hh.

Referenced by Kaskade::Limex< Eq >::step().

◆ estimateTime

template<class Eq >
double Kaskade::Limex< Eq >::estimateTime

◆ extrap

template<class Eq >
ExtrapolationTableau< State > Kaskade::Limex< Eq >::extrap

Definition at line 171 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::estimateError(), and Kaskade::Limex< Eq >::step().

◆ factorizationTime

template<class Eq >
double Kaskade::Limex< Eq >::factorizationTime

Definition at line 172 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::reportTime(), and Kaskade::Limex< Eq >::step().

◆ initSolutionTime

template<class Eq >
double Kaskade::Limex< Eq >::initSolutionTime

◆ matrixAssemblyTime

template<class Eq >
double Kaskade::Limex< Eq >::matrixAssemblyTime

Definition at line 172 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::reportTime(), and Kaskade::Limex< Eq >::step().

◆ precAssemblyTime

template<class Eq >
double Kaskade::Limex< Eq >::precAssemblyTime

◆ precondType

template<class Eq >
PrecondType Kaskade::Limex< Eq >::precondType

Definition at line 441 of file limexWithoutJens.hh.

Referenced by Kaskade::Limex< Eq >::step().

◆ rhsAssemblyTime

template<class Eq >
double Kaskade::Limex< Eq >::rhsAssemblyTime

Definition at line 172 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::reportTime(), and Kaskade::Limex< Eq >::step().

◆ solutionTime

template<class Eq >
double Kaskade::Limex< Eq >::solutionTime

Definition at line 172 of file limex.hh.

Referenced by Kaskade::Limex< Eq >::reportTime(), and Kaskade::Limex< Eq >::step().

◆ solverType

template<class Eq >
DirectType Kaskade::Limex< Eq >::solverType

Definition at line 719 of file limexWithoutJensHierarchicEst.hh.

Referenced by Kaskade::Limex< Eq >::step().

◆ verbosity

template<class Eq >
int Kaskade::Limex< Eq >::verbosity

Definition at line 442 of file limexWithoutJens.hh.

Referenced by Kaskade::Limex< Eq >::step().


The documentation for this class was generated from the following files: