dune-fem  2.8-git
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 
13 namespace DuneODE
14 {
15  using namespace Dune;
16  using namespace Fem;
17 
19  template <class DestinationImp>
21  {
22  protected:
25 
26  struct Monitor
27  {
28  double odeSolveTime_;
29  double operatorTime_;
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;
48  numberOfElements_ = 0;
49  newtonIterations_ = 0;
50  linearSolverIterations_ = 0;
51  maxNewtonIterations_ = 0;
52  maxLinearSolverIterations_ = 0;
53  spaceOperatorCalls_ = 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