dune-fem 2.8.0
Loading...
Searching...
No Matches
odesolver.hh
Go to the documentation of this file.
1#ifndef RUNGEKUTTA_ODE_SOLVER_HH
2#define RUNGEKUTTA_ODE_SOLVER_HH
3
4//- system includes
5#include <iostream>
6#include <cmath>
7#include <vector>
8#include <pthread.h>
9#include <cassert>
10#include <sys/times.h>
11
12//- dune-fem includes
17
20
23
28
29namespace DuneODE
30{
31 using namespace Dune;
32 using namespace Fem;
33 using namespace std;
34
36
43 //
44 // --ExplicitOdeSolver
45 //
47 template< class Destination >
49
51 //
52 // --ImplicitOdeSolver
53 //
55 template <class Destination>
57
58 template <class Destination>
60 typename ParDGHelmholtz< Destination > :: JacobianOperatorType,
62
63 template<class Destination>
66 ParDGHelmholtz< Destination >, ParDGNewtonInverse< Destination > >
67 {
68 public:
72
73 protected:
75 std::unique_ptr< HelmholtzOperatorType > helmOpPtr_;
76
78 {
79 return new HelmholtzOperatorType( op ) ;
80 }
81
82 public:
84 const ParameterReader &parameter = Parameter::container() )
85 : BaseType( *createHelmholtzOperator( op ), tp, order, parameter )
86 {
87 // store pointer for later removal
88 helmOpPtr_.reset( &helmholtzOp_ );
89 }
90 };
91
93 //
94 // --SemiImplicitOdeSolver
95 //
97 template<class Destination>
100 SpaceOperatorInterface<Destination>,
101 ParDGHelmholtz< Destination >, ParDGNewtonInverse< Destination > >
102 {
103 public:
107
108 protected:
110 std::unique_ptr< HelmholtzOperatorType > helmOpPtr_;
111
113 {
114 return new HelmholtzOperatorType( op ) ;
115 }
116
117 public:
119 const ParameterReader &parameter = Parameter::container() )
120 : BaseType( explOp, *createHelmholtzOperator( implOp ), tp, order, parameter )
121 {
122 // store pointer for later removal
123 helmOpPtr_.reset( &helmholtzOp_ );
124 }
125 };
126
131} // namespace DuneODE
132
133#endif // #ifndef RUNGEKUTTA_ODE_SOLVER_HH
STL namespace.
Definition: bindguard.hh:11
Definition: multistep.hh:17
static ParameterContainer & container()
Definition: io/parameter.hh:193
interface for time evolution operators
Definition: spaceoperatorif.hh:38
Definition: dghelmholtz.hh:62
Definition: krylovinverseoperators.hh:48
inverse operator based on a newton scheme
Definition: newtoninverseoperator.hh:209
Definition: odesolver.hh:67
ImplicitRungeKuttaSolver< HelmholtzOperatorType, ParDGNewtonInverse< Destination > > BaseType
Definition: odesolver.hh:71
SpaceOperatorInterface< Destination > OperatorType
Definition: odesolver.hh:69
HelmholtzOperatorType * createHelmholtzOperator(OperatorType &op)
Definition: odesolver.hh:77
ParDGHelmholtz< Destination > HelmholtzOperatorType
Definition: odesolver.hh:70
ImplicitOdeSolver(OperatorType &op, TimeProviderBase &tp, int order, const ParameterReader &parameter=Parameter::container())
Definition: odesolver.hh:83
std::unique_ptr< HelmholtzOperatorType > helmOpPtr_
Definition: odesolver.hh:75
Definition: odesolver.hh:102
SemiImplicitRungeKuttaSolver< OperatorType, HelmholtzOperatorType, ParDGNewtonInverse< Destination > > BaseType
Definition: odesolver.hh:106
SemiImplicitOdeSolver(OperatorType &explOp, OperatorType &implOp, TimeProviderBase &tp, int order, const ParameterReader &parameter=Parameter::container())
Definition: odesolver.hh:118
ParDGHelmholtz< Destination > HelmholtzOperatorType
Definition: odesolver.hh:105
std::unique_ptr< HelmholtzOperatorType > helmOpPtr_
Definition: odesolver.hh:110
SpaceOperatorInterface< Destination > OperatorType
Definition: odesolver.hh:104
HelmholtzOperatorType * createHelmholtzOperator(OperatorType &op)
Definition: odesolver.hh:112
HelmholtzOperatorType & helmholtzOp_
Definition: basicimplicit.hh:319
Exlicit RungeKutta ODE solver.
Definition: explicit.hh:65
Implicit RungeKutta ODE solver.
Definition: implicit.hh:26
Implicit RungeKutta ODE solver.
Definition: semiimplicit.hh:112
Definition: timestepcontrol.hh:23
general base for time providers
Definition: timeprovider.hh:36