| Home | Libraries | People | FAQ | More

## Class template symplectic_rkn_sb3a_m4_mclachlan

boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan — Implementation of the symmetric B3A Runge-Kutta Nystroem method of fifth order.

## Synopsis

    // In header: <boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp>

    template<typename Coor, typename Momentum = Coor, typename Value = double,
             typename CoorDeriv = Coor, typename MomentumDeriv = Coor,
             typename Time = Value,
             typename Algebra = typename algebra_dispatcher< Coor >::algebra_type,
             typename Operations = typename operations_dispatcher< Coor >::operations_type,
             typename Resizer = initially_resizer>
    class symplectic_rkn_sb3a_m4_mclachlan :
      public symplectic_nystroem_stepper_base
    {
    public:
      // types
      typedef stepper_base_type::algebra_type algebra_type;
      typedef stepper_base_type::value_type   value_type;

      // construct/copy/destruct
      symplectic_rkn_sb3a_m4_mclachlan(const algebra_type & = algebra_type());
    };

## Description

The method is of fourth order and has five stages. It is described HERE. This method can be used with multiprecision types since the coefficients are defined analytically.

ToDo: add reference to paper.

### Template Parameters

1.     typename Coor

   The type representing the coordinates q.

2.     typename Momentum = Coor

   The type representing the coordinates p.

3.     typename Value = double

   The basic value type. Should be something like float, double or a high-precision type.

4.     typename CoorDeriv = Coor

   The type representing the time derivative of the coordinate dq/dt.

5.     typename MomentumDeriv = Coor

6.     typename Time = Value

   The type representing the time t.

7.     typename Algebra = typename algebra_dispatcher< Coor >::algebra_type

   The algebra.

8.     typename Operations = typename operations_dispatcher< Coor >::operations_type

   The operations.

9.     typename Resizer = initially_resizer

   The resizer policy.

### `symplectic_rkn_sb3a_m4_mclachlan` public construct/copy/destruct

1.     symplectic_rkn_sb3a_m4_mclachlan(const algebra_type & algebra = algebra_type());

   Constructs the `symplectic_rkn_sb3a_m4_mclachlan`. This constructor can be used as a default constructor if the algebra has a default constructor.

   Parameters:

   `algebra` | A copy of algebra is made and stored inside explicit_stepper_base.