dune-fem 2.8.0
Loading...
Searching...
No Matches
odesolverinterface.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_SOLVER_ODESOLVERINTERFACE_HH
2#define DUNE_FEM_SOLVER_ODESOLVERINTERFACE_HH
3
4#include <iostream>
5
6//- dune-common includes
7#include <dune/common/exceptions.hh>
8
12
13namespace DuneODE
14{
15 using namespace Dune;
16 using namespace Fem;
17
19 template <class DestinationImp>
21 {
22 protected:
25
26 struct Monitor
27 {
30 double error_;
31
32 std::size_t numberOfElements_;
33
39
40 Monitor() { reset(); }
41
42 // reset all counters
43 void reset()
44 {
45 odeSolveTime_ = 0;
46 operatorTime_ = 0;
47 error_ = 0;
54 }
55 };
56
57 public:
60
62 typedef DestinationImp DestinationType;
63
65 virtual ~OdeSolverInterface () {}
66
70 virtual void initialize(const DestinationType& arg) = 0;
71
75 virtual void solve(DestinationType& u)
76 {
77 MonitorType monitor;
78 solve( u, monitor );
79 }
80
85 virtual void solve ( DestinationType &u, MonitorType &monitor ) = 0;
86
88 virtual void description(std::ostream&) const = 0;
89 };
90
91
92} // namespace DuneODE
93
94#endif // #ifndef DUNE_FEM_SOLVER_ODESOLVERINTERFACE_HH
Definition: bindguard.hh:11
Definition: multistep.hh:17
Interface class for ODE Solver.
Definition: odesolverinterface.hh:21
virtual ~OdeSolverInterface()
destructor
Definition: odesolverinterface.hh:65
Monitor MonitorType
monitor type
Definition: odesolverinterface.hh:59
OdeSolverInterface()
constructor
Definition: odesolverinterface.hh:24
virtual void description(std::ostream &) const =0
print description of ODE solver to out stream
virtual void solve(DestinationType &u, MonitorType &monitor)=0
solve where is the internal operator.
virtual void solve(DestinationType &u)
solve where is the internal operator.
Definition: odesolverinterface.hh:75
DestinationImp DestinationType
type of destination
Definition: odesolverinterface.hh:62
virtual void initialize(const DestinationType &arg)=0
initialize solver
Definition: odesolverinterface.hh:27
int newtonIterations_
Definition: odesolverinterface.hh:34
double error_
Definition: odesolverinterface.hh:30
Monitor()
Definition: odesolverinterface.hh:40
int spaceOperatorCalls_
Definition: odesolverinterface.hh:38
int maxNewtonIterations_
Definition: odesolverinterface.hh:36
int maxLinearSolverIterations_
Definition: odesolverinterface.hh:37
void reset()
Definition: odesolverinterface.hh:43
int linearSolverIterations_
Definition: odesolverinterface.hh:35
double operatorTime_
Definition: odesolverinterface.hh:29
std::size_t numberOfElements_
Definition: odesolverinterface.hh:32
double odeSolveTime_
Definition: odesolverinterface.hh:28