dune-fem  2.4.1-rc
row.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SOLVER_RUNGEKUTTA_ROW_HH
2 #define DUNE_FEM_SOLVER_RUNGEKUTTA_ROW_HH
3 
4 //- system includes
5 #include <sstream>
6 #include <vector>
7 
8 //- dune-common includes
9 #include <dune/common/exceptions.hh>
10 
11 //- dune-fem includes
15 
16 namespace DuneODE
17 {
18 
19  // ROWRungeKuttaSolver
20  // ------------------------
21 
23  template< class HelmholtzOperator, class NonlinearSolver, class TimeStepControl = ImplicitRungeKuttaTimeStepControl >
25  : public BasicROWRungeKuttaSolver< HelmholtzOperator, NonlinearSolver, TimeStepControl >
26  {
29 
30  public:
31  typedef HelmholtzOperator HelmholtzOperatorType;
33 
34  typedef typename TimeStepControlType::TimeProviderType TimeProviderType;
36  typedef typename TimeStepControlType::ParametersType TimeStepControlParametersType;
38 
47  ROWRungeKuttaSolver ( HelmholtzOperatorType &helmholtzOp,
48  TimeProviderType &timeProvider,
49  int order = 3,
50  const ParametersType& param = ParametersType(),
51  const TimeStepControlParametersType& tscParam = TimeStepControlParametersType(),
52  const NonlinearSolverParametersType& nlsParam = NonlinearSolverParametersType() )
53  : BaseType( helmholtzOp, timeProvider, butcherTable( order ), TimeStepControlType( timeProvider, tscParam ), param, nlsParam )
54  {}
55 
63  ROWRungeKuttaSolver ( HelmholtzOperatorType &helmholtzOp,
64  TimeProviderType &timeProvider,
65  const ParametersType& param = ParametersType(),
66  const TimeStepControlParametersType& tscParam = TimeStepControlParametersType(),
67  const NonlinearSolverParametersType& nlsParam = NonlinearSolverParametersType() )
68  : BaseType( helmholtzOp, timeProvider, butcherTable( -3 ), TimeStepControlType( timeProvider, tscParam ), param, nlsParam )
69  {}
70 
71 
72  protected:
74  {
75  switch( order )
76  {
77  case 2:
78  return row2ButcherTable();
79  case 3:
80  return row3ButcherTable();
81  default:
82  DUNE_THROW( NotImplemented, "ROW Runge-Kutta method of order " << order << " not implemented." );
83  }
84  }
85  };
86 
87 } // namespace DuneODE
88 
89 #endif // #ifndef DUNE_FEM_SOLVER_RUNGEKUTTA_ROW_HH
BaseType::TimeStepControlType TimeStepControlType
Definition: row.hh:32
BaseType::ParametersType ParametersType
Definition: row.hh:35
TimeStepControlType::TimeProviderType TimeProviderType
Definition: row.hh:34
HelmholtzOperator HelmholtzOperatorType
Definition: row.hh:31
Definition: basicrow.hh:50
Definition: multistep.hh:16
ROWRungeKuttaSolver(HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, const ParametersType &param=ParametersType(), const TimeStepControlParametersType &tscParam=TimeStepControlParametersType(), const NonlinearSolverParametersType &nlsParam=NonlinearSolverParametersType())
constructor
Definition: row.hh:63
ROWSimpleButcherTable< double > row3ButcherTable()
Definition: butchertable.cc:362
TimeStepControlType::ParametersType TimeStepControlParametersType
Definition: row.hh:36
ROW RungeKutta ODE solver.
Definition: basicrow.hh:97
Definition: butchertable.hh:81
ROWRungeKuttaSolver(HelmholtzOperatorType &helmholtzOp, TimeProviderType &timeProvider, int order=3, const ParametersType &param=ParametersType(), const TimeStepControlParametersType &tscParam=TimeStepControlParametersType(), const NonlinearSolverParametersType &nlsParam=NonlinearSolverParametersType())
constructor
Definition: row.hh:47
NonlinearSolver::ParametersType NonlinearSolverParametersType
Definition: basicrow.hh:113
ROW RungeKutta ODE solver.
Definition: row.hh:24
static ROWSimpleButcherTable< double > butcherTable(int order)
Definition: row.hh:73
BaseType::NonlinearSolverParametersType NonlinearSolverParametersType
Definition: row.hh:37
ROWSimpleButcherTable< double > row2ButcherTable()
Definition: butchertable.cc:341