Custom type requirements in boost.odeint

There are several examples of using arbitrary precision and matrices in boost.odeint (an ordinary differential equation accelerator).

I would like to use odeint atoms in different types of coordinates (Cartesian, polar or angle of action).

What operations should be overloaded for atoms? +, -, min, max, pow?

In which file can I see what operations odeint uses?

Update (1) from the default algebra , it looks like it needs "+", "*" and abs (), max ()

+3
source share
1 answer

, , - :

odeint.

- , , , , , std::vector, std::array, ublas::matrix .. odeint :

  • range_algebra, , boost.range
  • fusion_algebra
  • vector_space_algebra, .
  • thrust_algebra - STL- CUDA

- , , , , .

  • default_operations, double, float, std::complex<>,... default_operations, , +, -, *,/, abs, max.
  • thrust_operation

, , , odeint. range_algebra "default_operations": , point_type, , . "default_operations",

  • point_type operator+( point_type , double );
  • point_type operator+( double , point_type );
  • point_type operator+( point_type , point_type );
  • point_type operator*( point_type , double );
  • point_type operator*( double , point_type );
  • point_type operator/( point_type , double );
  • double abs( point_type );

, , . point_type , vector, array .. odeint , , : . , Boost.Operators.

: .

+5

All Articles