dune-fem 2.8.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
DuneODE::SemiImplicitOdeSolver< Destination > Class Template Referenceabstract

#include <dune/fem/solver/odesolver.hh>

Inheritance diagram for DuneODE::SemiImplicitOdeSolver< Destination >:
Inheritance graph

Public Types

typedef SpaceOperatorInterface< Destination > OperatorType
 
typedef ParDGHelmholtz< Destination > HelmholtzOperatorType
 
typedef SemiImplicitRungeKuttaSolver< OperatorType, HelmholtzOperatorType, ParDGNewtonInverse< Destination > > BaseType
 
typedef SpaceOperatorInterface< Destination > ExplicitOperatorType
 
typedef BaseType::TimeStepControlType TimeStepControlType
 
typedef BaseType::SourceTermType SourceTermType
 
typedef TimeStepControlType::TimeProviderType TimeProviderType
 
typedef BaseType::ParameterType ParameterType
 
typedef BaseType::NonlinearSolverParameterType NonlinearSolverParameterType
 
typedef BaseType::MonitorType MonitorType
 
typedef BaseType::DestinationType DestinationType
 
typedef NonlinearSolver NonlinearSolverType
 

Public Member Functions

 SemiImplicitOdeSolver (OperatorType &explOp, OperatorType &implOp, TimeProviderBase &tp, int order, const ParameterReader &parameter=Parameter::container())
 
template<class ButcherTable >
void setup (const ButcherTable &butcherTable)
 
void initialize (const DestinationType &U0)
 apply operator once to get dt estimate
 
virtual void initialize (const DestinationType &arg)=0
 initialize solver
 
void solve (DestinationType &U, MonitorType &monitor)
 solve the system
 
virtual void solve (DestinationType &u)
 solve $\partial_t u = L(u)$ where $L$ is the internal operator.
 
virtual void solve (DestinationType &u, MonitorType &monitor)=0
 solve $\partial_t u = L(u)$ where $L$ is the internal operator.
 
virtual void solve (DestinationType &u)
 solve $\partial_t u = L(u)$ where $L$ is the internal operator.
 
virtual void solve (DestinationType &u, MonitorType &monitor)=0
 solve $\partial_t u = L(u)$ where $L$ is the internal operator.
 
int stages () const
 
void description (std::ostream &out) const
 print description of ODE solver to out stream
 

Protected Member Functions

HelmholtzOperatorTypecreateHelmholtzOperator (OperatorType &op)
 
double infNorm (const DestinationType &U, const DestinationType &Uerr) const
 

Static Protected Member Functions

static SimpleButcherTable< double > defaultButcherTable (int order, bool expl)
 

Protected Attributes

std::unique_ptr< HelmholtzOperatorTypehelmOpPtr_
 
HelmholtzOperatorTypehelmholtzOp_
 
NonlinearSolverType nonlinearSolver_
 
TimeStepControl timeStepControl_
 
SourceTerm 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_
 

Member Typedef Documentation

◆ BaseType

template<class Destination >
typedef SemiImplicitRungeKuttaSolver< OperatorType, HelmholtzOperatorType, ParDGNewtonInverse< Destination > > DuneODE::SemiImplicitOdeSolver< Destination >::BaseType

◆ DestinationType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
typedef BaseType::DestinationType DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::DestinationType
inherited

◆ ExplicitOperatorType

typedef SpaceOperatorInterface< Destination > DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::ExplicitOperatorType
inherited

◆ HelmholtzOperatorType

template<class Destination >
typedef ParDGHelmholtz< Destination > DuneODE::SemiImplicitOdeSolver< Destination >::HelmholtzOperatorType

◆ MonitorType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
typedef BaseType::MonitorType DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::MonitorType
inherited

◆ NonlinearSolverParameterType

typedef BaseType::NonlinearSolverParameterType DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::NonlinearSolverParameterType
inherited

◆ NonlinearSolverType

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
typedef NonlinearSolver DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::NonlinearSolverType
inherited

◆ OperatorType

template<class Destination >
typedef SpaceOperatorInterface<Destination> DuneODE::SemiImplicitOdeSolver< Destination >::OperatorType

◆ ParameterType

typedef BaseType::ParameterType DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::ParameterType
inherited

◆ SourceTermType

typedef BaseType::SourceTermType DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::SourceTermType
inherited

◆ TimeProviderType

typedef TimeStepControlType::TimeProviderType DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::TimeProviderType
inherited

◆ TimeStepControlType

typedef BaseType::TimeStepControlType DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::TimeStepControlType
inherited

Constructor & Destructor Documentation

◆ SemiImplicitOdeSolver()

template<class Destination >
DuneODE::SemiImplicitOdeSolver< Destination >::SemiImplicitOdeSolver ( OperatorType explOp,
OperatorType implOp,
TimeProviderBase tp,
int  order,
const ParameterReader parameter = Parameter::container() 
)
inline

Member Function Documentation

◆ createHelmholtzOperator()

template<class Destination >
HelmholtzOperatorType * DuneODE::SemiImplicitOdeSolver< Destination >::createHelmholtzOperator ( OperatorType op)
inlineprotected

◆ defaultButcherTable()

static SimpleButcherTable< double > DuneODE::SemiImplicitRungeKuttaSolver< SpaceOperatorInterface< Destination > , ParDGHelmholtz< Destination > , ParDGNewtonInverse< Destination > >::defaultButcherTable ( int  order,
bool  expl 
)
inlinestaticprotectedinherited

◆ description()

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::description ( std::ostream &  ) const
inlinevirtualinherited

print description of ODE solver to out stream

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

◆ infNorm()

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
double DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::infNorm ( const DestinationType U,
const DestinationType Uerr 
) const
inlineprotectedinherited

◆ initialize() [1/2]

virtual void DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >::initialize ( const DestinationType arg)
pure virtualinherited

initialize solver

Parameters
[in]argargument to apply internal operator once for intial time step estimate

◆ initialize() [2/2]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::initialize ( const DestinationType U0)
inlineinherited

apply operator once to get dt estimate

◆ setup()

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
template<class ButcherTable >
void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::setup ( const ButcherTable &  butcherTable)
inlineinherited

◆ solve() [1/5]

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

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

Parameters
[in]uunknown to solve for

◆ solve() [2/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
virtual void DuneODE::OdeSolverInterface< DestinationImp >::solve ( DestinationType u)
inlineinherited

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

Parameters
[in]uunknown to solve for

◆ solve() [3/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
void DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::solve ( DestinationType U,
MonitorType monitor 
)
inlineinherited

solve the system

◆ solve() [4/5]

virtual void DuneODE::OdeSolverInterface< HelmholtzOperator::DomainFunctionType >::solve ( DestinationType u,
MonitorType monitor 
)
pure 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

◆ solve() [5/5]

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
virtual void DuneODE::OdeSolverInterface< DestinationImp >::solve ( DestinationType u,
MonitorType monitor 
)
inherited

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

◆ stages()

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
int DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::stages ( ) const
inlineinherited

Member Data Documentation

◆ alpha_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
Dune::DynamicMatrix< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::alpha_
protectedinherited

◆ beta_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::beta_
protectedinherited

◆ c_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::c_
protectedinherited

◆ delta_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
double DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::delta_
protectedinherited

◆ gamma_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
Dune::DynamicVector< double > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::gamma_
protectedinherited

◆ helmholtzOp_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
HelmholtzOperatorType& DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::helmholtzOp_
protectedinherited

◆ helmOpPtr_

template<class Destination >
std::unique_ptr< HelmholtzOperatorType > DuneODE::SemiImplicitOdeSolver< Destination >::helmOpPtr_
protected

◆ nonlinearSolver_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
NonlinearSolverType DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::nonlinearSolver_
protectedinherited

◆ rhs_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
DestinationType DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::rhs_
protectedinherited

◆ sourceTerm_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
SourceTerm DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::sourceTerm_
protectedinherited

◆ stages_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
int DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::stages_
protectedinherited

◆ timeStepControl_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
TimeStepControl DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::timeStepControl_
protectedinherited

◆ update_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
std::vector< DestinationType* > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::update_
protectedinherited

◆ updateStorage_

template<class HelmholtzOperator , class NonlinearSolver , class TimeStepControl , class SourceTerm = NoImplicitRungeKuttaSourceTerm>
std::vector< std::unique_ptr< DestinationType > > DuneODE::BasicImplicitRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl, SourceTerm >::updateStorage_
protectedinherited

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