libode
Easy to compile, fast ODE integrators as C++ classes
Loading...
Searching...
No Matches
ode_gauss_6.h
Go to the documentation of this file.
1#ifndef ODE_GAUSS_6_H_
2#define ODE_GAUSS_6_H_
3
5
6#include "ode_adaptive.h"
7#include "ode_irk.h"
8#include "ode_newton_bridge.h"
9
10namespace ode {
11
12//forward declaration to set up Newton class
13class OdeGauss6;
14
16class NewtonGauss6 : public OdeNewtonIRK<OdeGauss6> {
17 public:
19
24 NewtonGauss6 (unsigned long neq, unsigned long nnew, OdeGauss6 *integrator) : OdeNewtonIRK (neq, nnew, integrator) {};
25 private:
26 void f_Newton (double *x, double *y);
27 void J_Newton (double *x, double **J);
28};
29
31
34class OdeGauss6 : public OdeAdaptive, private OdeIRK {
35 //friends!
36 friend class OdeNewtonBridge<OdeGauss6>;
37 friend class OdeNewtonIRK<OdeGauss6>;
38
39 public:
40
42
45 OdeGauss6 (unsigned long neq);
46
48 ~OdeGauss6 ();
49
51 NewtonGauss6 *get_newton () { return(newton_); }
52
53 private:
54 double **a;
55 double *b;
56 NewtonGauss6 *newton_;
57 void step_ (double dt);
58};
59
60} // namespace ode
61
62#endif
Nonlinear system solver for OdeGauss6.
Definition ode_gauss_6.h:16
NewtonGauss6(unsigned long neq, unsigned long nnew, OdeGauss6 *integrator)
constructs
Definition ode_gauss_6.h:24
Base class implementing solver functions with adaptive time steps.
The sixth-order, A-stable, fully-implicit Gauss-Legendre method with 3 stages.
Definition ode_gauss_6.h:34
NewtonGauss6 * get_newton()
returns a pointer to the solver's Newton system object
Definition ode_gauss_6.h:51
OdeGauss6(unsigned long neq)
constructs
~OdeGauss6()
destructs
Provides a large vector containing the slope values of all stages with pointers to each of the indivi...
Definition ode_irk.h:9
Templated base class connecting solver objects and OdeNewton objects.
Extension of OdeNewtonBridge class for fully implicit methods.