dune-fem 2.8-git
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl > Class Template Reference

Implicit RungeKutta ODE solver. More...

#include <dune/fem/solver/rungekutta/implicit.hh>

Inheritance diagram for DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >:
Inheritance graph

Public Types

typedef HelmholtzOperator HelmholtzOperatorType
 
typedef BaseType::TimeStepControlType TimeStepControlType
 
typedef TimeStepControlType::TimeProviderType TimeProviderType
 
typedef BaseType::ParameterType ParameterType
 
typedef BaseType::NonlinearSolverParameterType NonlinearSolverParameterType
 
typedef BaseType::MonitorType MonitorType
 
typedef BaseType::DestinationType DestinationType
 
typedef NonlinearSolver NonlinearSolverType
 
typedef NoImplicitRungeKuttaSourceTerm SourceTermType
 

Public Member Functions

 ImplicitRungeKuttaSolver (HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, const SimpleButcherTable< double > &butcherTable, const Dune::Fem::ParameterReader &parameter=Dune::Fem::Parameter::container())
 constructor More...
 
 ImplicitRungeKuttaSolver (HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, int order, const ParameterType &tscParam, const NonlinearSolverParameterType &nlsParam)
 constructor More...
 
 ImplicitRungeKuttaSolver (HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, int order, const Dune::Fem::ParameterReader &parameter=Dune::Fem::Parameter::container())
 constructor More...
 
 ImplicitRungeKuttaSolver (HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, const ParameterType &tscParam, const NonlinearSolverParameterType &nlsParam)
 constructor More...
 
 ImplicitRungeKuttaSolver (HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, const Dune::Fem::ParameterReader &parameter=Dune::Fem::Parameter::container())
 constructor More...
 
void setup (const ButcherTable &butcherTable)
 
void initialize (const DestinationType &U0)
 apply operator once to get dt estimate More...
 
void solve (DestinationType &U, MonitorType &monitor)
 solve the system More...
 
virtual void solve (DestinationType &u)
 solve $\partial_t u = L(u)$ where $L$ is the internal operator. More...
 
virtual void solve (DestinationType &u, MonitorType &monitor)=0
 solve $\partial_t u = L(u)$ where $L$ is the internal operator. More...
 
int stages () const
 
void description (std::ostream &out) const
 print description of ODE solver to out stream More...
 

Protected Member Functions

double infNorm (const DestinationType &U, const DestinationType &Uerr) const
 

Static Protected Member Functions

static SimpleButcherTable< double > defaultButcherTables (const int solverId)
 

Protected Attributes

HelmholtzOperatorTypehelmholtzOp_
 
NonlinearSolverType nonlinearSolver_
 
ImplicitRungeKuttaTimeStepControl timeStepControl_
 
NoImplicitRungeKuttaSourceTerm sourceTerm_
 
int stages_
 
double delta_
 
Dune::DynamicMatrix< double > alpha_
 
Dune::DynamicVector< double > gamma_
 
Dune::DynamicVector< double > beta_
 
Dune::DynamicVector< double > c_
 
DestinationType rhs_
 
std::vector< std::unique_ptr< DestinationType > > updateStorage_
 
std::vector< DestinationType * > update_
 

Detailed Description

template<class HelmholtzOperator, class NonlinearSolver, class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
class DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >

Implicit RungeKutta ODE solver.

Member Typedef Documentation

◆ DestinationType

◆ HelmholtzOperatorType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
typedef HelmholtzOperator DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::HelmholtzOperatorType

◆ MonitorType

◆ NonlinearSolverParameterType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
typedef BaseType::NonlinearSolverParameterType DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::NonlinearSolverParameterType

◆ NonlinearSolverType

typedef NonlinearSolver DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::NonlinearSolverType
inherited

◆ ParameterType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
typedef BaseType::ParameterType DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ParameterType

◆ SourceTermType

◆ TimeProviderType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
typedef TimeStepControlType::TimeProviderType DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::TimeProviderType

◆ TimeStepControlType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
typedef BaseType::TimeStepControlType DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::TimeStepControlType

Constructor & Destructor Documentation

◆ ImplicitRungeKuttaSolver() [1/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ImplicitRungeKuttaSolver ( HelmholtzOperatorType helmholtzOp,
TimeProviderType timeProvider,
const SimpleButcherTable< double > &  butcherTable,
const Dune::Fem::ParameterReader parameter = Dune::Fem::Parameter::container() 
)
inline

constructor

Parameters
[in]helmholtzOpHelmholtz operator $L$
[in]timeProvidertime provider
[in]butcherTableButcher table defining the scheme
[in]parameterParameterReader for reading parameters

◆ ImplicitRungeKuttaSolver() [2/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ImplicitRungeKuttaSolver ( HelmholtzOperatorType helmholtzOp,
TimeProviderType timeProvider,
int  order,
const ParameterType tscParam,
const NonlinearSolverParameterType nlsParam 
)
inline

constructor

Parameters
[in]helmholtzOpHelmholtz operator $L$
[in]timeProvidertime provider
[in]orderorder of butcher table to use
[in]tscParamparameters for implicit time step control
[in]nlsParamparameters for non linear solver control

◆ ImplicitRungeKuttaSolver() [3/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ImplicitRungeKuttaSolver ( HelmholtzOperatorType helmholtzOp,
TimeProviderType timeProvider,
int  order,
const Dune::Fem::ParameterReader parameter = Dune::Fem::Parameter::container() 
)
inline

constructor

Parameters
[in]helmholtzOpHelmholtz operator $L$
[in]timeProvidertime provider
[in]orderorder of butcher table to use
[in]tscParamparameters for implicit time step control
[in]nlsParamparameters for non linear solver control

◆ ImplicitRungeKuttaSolver() [4/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ImplicitRungeKuttaSolver ( HelmholtzOperatorType helmholtzOp,
TimeProviderType timeProvider,
const ParameterType tscParam,
const NonlinearSolverParameterType nlsParam 
)
inline

constructor

Parameters
[in]helmholtzOpHelmholtz operator $L$
[in]timeProvidertime provider
[in]tscParamparameters for implicit time step control
[in]nlsParamparameters for non linear solver control

◆ ImplicitRungeKuttaSolver() [5/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::ImplicitRungeKuttaSolver ( HelmholtzOperatorType helmholtzOp,
TimeProviderType timeProvider,
const Dune::Fem::ParameterReader parameter = Dune::Fem::Parameter::container() 
)
inline

constructor

Parameters
[in]helmholtzOpHelmholtz operator $L$
[in]timeProvidertime provider
[in]parameterParameterReader for reading parameters

Member Function Documentation

◆ defaultButcherTables()

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl = ImplicitRungeKuttaTimeStepControl>
static SimpleButcherTable< double > DuneODE::ImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >::defaultButcherTables ( const int  solverId)
inlinestaticprotected

◆ description()

void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::description ( std::ostream &  out) const
inlinevirtualinherited

print description of ODE solver to out stream

Implements DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >.

◆ infNorm()

double DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::infNorm ( const DestinationType U,
const DestinationType Uerr 
) const
inlineprotectedinherited

◆ initialize()

void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::initialize ( const DestinationType U0)
inlinevirtualinherited

apply operator once to get dt estimate

Implements DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >.

◆ setup()

void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::setup ( const ButcherTable &  butcherTable)
inlineinherited

◆ solve() [1/3]

virtual void DuneODE::OdeSolverInterface< DestinationImp >::solve ( DestinationType u)
inlinevirtualinherited

solve $\partial_t u = L(u)$ where $L$ is the internal operator.

Parameters
[in]uunknown to solve for

Reimplemented from DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >.

◆ solve() [2/3]

void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::solve ( DestinationType U,
MonitorType monitor 
)
inlinevirtualinherited

◆ solve() [3/3]

virtual void DuneODE::OdeSolverInterface< DestinationImp >::solve ( DestinationType u,
MonitorType monitor 
)
virtualinherited

solve $\partial_t u = L(u)$ where $L$ is the internal operator.

Parameters
[in]uunknown to solve for
[in]monitorMonitor to get some inside information

Implements DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >.

◆ stages()

int DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::stages ( ) const
inlineinherited

Member Data Documentation

◆ alpha_

Dune::DynamicMatrix< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::alpha_
protectedinherited

◆ beta_

Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::beta_
protectedinherited

◆ c_

Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::c_
protectedinherited

◆ delta_

double DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::delta_
protectedinherited

◆ gamma_

Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::gamma_
protectedinherited

◆ helmholtzOp_

◆ nonlinearSolver_

NonlinearSolverType DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::nonlinearSolver_
protectedinherited

◆ rhs_

◆ sourceTerm_

◆ stages_

int DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::stages_
protectedinherited

◆ timeStepControl_

◆ update_

std::vector< DestinationType* > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::update_
protectedinherited

◆ updateStorage_

std::vector< std::unique_ptr< DestinationType > > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, ImplicitRungeKuttaTimeStepControl , NoImplicitRungeKuttaSourceTerm >::updateStorage_
protectedinherited

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