Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer > Class Template Reference

Implementation of the symmetric B3A Runge-Kutta Nystroem method of fifth order. More...

#include <symplectic_rkn_sb3a_m4_mclachlan.hpp>

Inheritance diagram for boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >:
Collaboration diagram for boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >:

Public Types

typedef
symplectic_nystroem_stepper_base
< 5, 4, Coor, Momentum, Value,
CoorDeriv, MomentumDeriv, Time,
Algebra, Operations, Resizer > 
stepper_base_type
 
typedef
stepper_base_type::algebra_type 
algebra_type
 
typedef
stepper_base_type::value_type 
value_type
 
typedef algebra_stepper_base
< Algebra, Operations > 
algebra_stepper_base_type
 
typedef
algebra_stepper_base_type::operations_type 
operations_type
 
typedef Coor coor_type
 
typedef Momentum momentum_type
 
typedef std::pair< coor_type,
momentum_type
state_type
 
typedef CoorDeriv coor_deriv_type
 
typedef state_wrapper
< coor_deriv_type
wrapped_coor_deriv_type
 
typedef MomentumDeriv momentum_deriv_type
 
typedef state_wrapper
< momentum_deriv_type
wrapped_momentum_deriv_type
 
typedef std::pair
< coor_deriv_type,
momentum_deriv_type
deriv_type
 
typedef Time time_type
 
typedef Resizer resizer_type
 
typedef stepper_tag stepper_category
 
typedef
symplectic_nystroem_stepper_base
< NumOfStages, Order, Coor,
Momentum, Value, CoorDeriv,
MomentumDeriv, Time, Algebra,
Operations, Resizer > 
internal_stepper_base_type
 
typedef unsigned short order_type
 
typedef boost::array
< value_type, num_of_stages
coef_type
 

Public Member Functions

 symplectic_rkn_sb3a_m4_mclachlan (const algebra_type &algebra=algebra_type())
 Constructs the symplectic_rkn_sb3a_m4_mclachlan. More...
 
order_type order (void) const
 
void do_step (System system, const StateInOut &state, time_type t, time_type dt)
 This method performs one step. More...
 
void do_step (System system, StateInOut &state, time_type t, time_type dt)
 Same function as above. More...
 
void do_step (System system, CoorInOut &q, MomentumInOut &p, time_type t, time_type dt)
 This method performs one step. More...
 
void do_step (System system, const CoorInOut &q, const MomentumInOut &p, time_type t, time_type dt)
 Same function as do_step( system , q , p , t , dt ). More...
 
void do_step (System system, const StateIn &in, time_type t, StateOut &out, time_type dt)
 This method performs one step. More...
 
void adjust_size (const StateType &x)
 Adjust the size of all temporaries in the stepper manually. More...
 
const coef_typecoef_a (void) const
 Returns the coefficients a. More...
 
const coef_typecoef_b (void) const
 Returns the coefficients b. More...
 
algebra_typealgebra ()
 
const algebra_typealgebra () const
 

Static Public Attributes

static const size_t num_of_stages
 
static const order_type order_value
 

Protected Attributes

algebra_type m_algebra
 

Detailed Description

template<class Coor, class Momentum = Coor, class Value = double, class CoorDeriv = Coor, class MomentumDeriv = Coor, class Time = Value, class Algebra = typename algebra_dispatcher< Coor >::algebra_type, class Operations = typename operations_dispatcher< Coor >::operations_type, class Resizer = initially_resizer>
class boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >

Implementation of the symmetric B3A Runge-Kutta Nystroem method of fifth order.

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
OrderThe order of the stepper.
CoorThe type representing the coordinates q.
MomentumThe type representing the coordinates p.
ValueThe basic value type. Should be something like float, double or a high-precision type.
CoorDerivThe type representing the time derivative of the coordinate dq/dt.
MomemtnumDerivThe type representing the time derivative of the momentum dp/dt.
TimeThe type representing the time t.
AlgebraThe algebra.
OperationsThe operations.
ResizerThe resizer policy.

Member Typedef Documentation

typedef algebra_stepper_base< Algebra , Operations > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::algebra_stepper_base_type
inherited
template<class Coor , class Momentum = Coor, class Value = double, class CoorDeriv = Coor, class MomentumDeriv = Coor, class Time = Value, class Algebra = typename algebra_dispatcher< Coor >::algebra_type, class Operations = typename operations_dispatcher< Coor >::operations_type, class Resizer = initially_resizer>
typedef stepper_base_type::algebra_type boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::algebra_type
typedef boost::array< value_type , num_of_stages > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::coef_type
inherited
typedef CoorDeriv boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::coor_deriv_type
inherited
typedef Coor boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::coor_type
inherited
typedef std::pair< coor_deriv_type , momentum_deriv_type > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::deriv_type
inherited
typedef symplectic_nystroem_stepper_base< NumOfStages , Order , Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::internal_stepper_base_type
inherited
typedef MomentumDeriv boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::momentum_deriv_type
inherited
typedef Momentum boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::momentum_type
inherited
typedef algebra_stepper_base_type::operations_type boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::operations_type
inherited
typedef unsigned short boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::order_type
inherited
typedef Resizer boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::resizer_type
inherited
typedef std::pair< coor_type , momentum_type > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::state_type
inherited
template<class Coor , class Momentum = Coor, class Value = double, class CoorDeriv = Coor, class MomentumDeriv = Coor, class Time = Value, class Algebra = typename algebra_dispatcher< Coor >::algebra_type, class Operations = typename operations_dispatcher< Coor >::operations_type, class Resizer = initially_resizer>
typedef symplectic_nystroem_stepper_base< 5 , 4 , Coor , Momentum , Value , CoorDeriv , MomentumDeriv , Time , Algebra , Operations , Resizer > boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::stepper_base_type
typedef stepper_tag boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::stepper_category
inherited
typedef Time boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::time_type
inherited
template<class Coor , class Momentum = Coor, class Value = double, class CoorDeriv = Coor, class MomentumDeriv = Coor, class Time = Value, class Algebra = typename algebra_dispatcher< Coor >::algebra_type, class Operations = typename operations_dispatcher< Coor >::operations_type, class Resizer = initially_resizer>
typedef stepper_base_type::value_type boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::value_type
typedef state_wrapper< coor_deriv_type> boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::wrapped_coor_deriv_type
inherited
typedef state_wrapper< momentum_deriv_type > boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::wrapped_momentum_deriv_type
inherited

Constructor & Destructor Documentation

template<class Coor , class Momentum = Coor, class Value = double, class CoorDeriv = Coor, class MomentumDeriv = Coor, class Time = Value, class Algebra = typename algebra_dispatcher< Coor >::algebra_type, class Operations = typename operations_dispatcher< Coor >::operations_type, class Resizer = initially_resizer>
boost::numeric::odeint::symplectic_rkn_sb3a_m4_mclachlan< Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::symplectic_rkn_sb3a_m4_mclachlan ( const algebra_type algebra = algebra_type())
inline

Constructs the symplectic_rkn_sb3a_m4_mclachlan.

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

Parameters
algebraA copy of algebra is made and stored inside explicit_stepper_base.

Member Function Documentation

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::adjust_size ( const StateType &  x)
inlineinherited

Adjust the size of all temporaries in the stepper manually.

Parameters
xA state from which the size of the temporaries to be resized is deduced.
template<class Algebra, class Operations>
algebra_type & boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::algebra ( )
inlineinherited
Returns
A reference to the algebra which is held by this class.
template<class Algebra, class Operations>
const algebra_type & boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::algebra ( ) const
inlineinherited
Returns
A const reference to the algebra which is held by this class.
const coef_type& boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::coef_a ( void  ) const
inlineinherited

Returns the coefficients a.

const coef_type& boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::coef_b ( void  ) const
inlineinherited

Returns the coefficients b.

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step ( System  system,
const StateInOut &  state,
time_type  t,
time_type  dt 
)
inlineinherited

This method performs one step.

The system can be either a pair of two function object describing the momentum part and the coordinate part or one function object describing only the momentum part. In this case the coordinate is assumed to be trivial dq/dt = p. The state is updated in-place.

Note
boost::ref or std::ref can be used for the system as well as for the state. So, it is correct to write stepper.do_step( make_pair( std::ref( fq ) , std::ref( fp ) ) , make_pair( std::ref( q ) , std::ref( p ) ) , t , dt ).
This method solves the forwarding problem.
Parameters
systemThe system, can be represented as a pair of two function object or one function object. See above.
stateThe state of the ODE. It is a pair of Coor and Momentum. The state is updated in-place, therefore, the new value of the state will be written into this variable.
tThe time of the ODE. It is not advanced by this method.
dtThe time step.

References boost::detail::type.

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step ( System  system,
StateInOut &  state,
time_type  t,
time_type  dt 
)
inlineinherited

Same function as above.

It differs only in a different const specifier in order to solve the forwarding problem, can be used with Boost.Range.

References boost::detail::type.

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step ( System  system,
CoorInOut &  q,
MomentumInOut &  p,
time_type  t,
time_type  dt 
)
inlineinherited

This method performs one step.

The system can be either a pair of two function object describing the momentum part and the coordinate part or one function object describing only the momentum part. In this case the coordinate is assumed to be trivial dq/dt = p. The state is updated in-place.

Note
boost::ref or std::ref can be used for the system. So, it is correct to write stepper.do_step( make_pair( std::ref( fq ) , std::ref( fp ) ) , q , p , t , dt ).
This method solves the forwarding problem.
Parameters
systemThe system, can be represented as a pair of two function object or one function object. See above.
qThe coordinate of the ODE. It is updated in-place. Therefore, the new value of the coordinate will be written into this variable.
pThe momentum of the ODE. It is updated in-place. Therefore, the new value of the momentum will be written info this variable.
tThe time of the ODE. It is not advanced by this method.
dtThe time step.

References boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step(), boost::xpressive::make_pair, and boost::ref().

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step ( System  system,
const CoorInOut &  q,
const MomentumInOut &  p,
time_type  t,
time_type  dt 
)
inlineinherited

Same function as do_step( system , q , p , t , dt ).

It differs only in a different const specifier in order to solve the forwarding problem, can be called with Boost.Range.

References boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step(), boost::xpressive::make_pair, and boost::ref().

void boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::do_step ( System  system,
const StateIn &  in,
time_type  t,
StateOut &  out,
time_type  dt 
)
inlineinherited

This method performs one step.

The system can be either a pair of two function object describing the momentum part and the coordinate part or one function object describing only the momentum part. In this case the coordinate is assumed to be trivial dq/dt = p. The state is updated out-of-place.

Note
boost::ref or std::ref can be used for the system. So, it is correct to write stepper.do_step( make_pair( std::ref( fq ) , std::ref( fp ) ) , x_in , t , x_out , dt ).
This method NOT solve the forwarding problem.
Parameters
systemThe system, can be represented as a pair of two function object or one function object. See above.
inThe state of the ODE, which is a pair of coordinate and momentum. The state is updated out-of-place, therefore the new value is written into out
tThe time of the ODE. It is not advanced by this method.
outThe new state of the ODE.
dtThe time step.

References boost::detail::type.

order_type boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::order ( void  ) const
inlineinherited

Member Data Documentation

template<class Algebra, class Operations>
algebra_type boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::m_algebra
protectedinherited
const size_t boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::num_of_stages
staticinherited
const order_type boost::numeric::odeint::symplectic_nystroem_stepper_base< NumOfStages, Order, Coor, Momentum, Value, CoorDeriv, MomentumDeriv, Time, Algebra, Operations, Resizer >::order_value
staticinherited

The documentation for this class was generated from the following file: