stepper.qbk 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. [/============================================================================
  2. Boost.odeint
  3. Copyright 2011-2012 Karsten Ahnert
  4. Copyright 2011 Mario Mulansky
  5. Copyright 2012 Sylwester Arabas
  6. Use, modification and distribution is subject to the Boost Software License,
  7. Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  8. http://www.boost.org/LICENSE_1_0.txt)
  9. =============================================================================/]
  10. [section Stepper]
  11. This concepts specifies the interface a simple stepper has to fulfill to be used within the __integrate_functions.
  12. [heading Description]
  13. The basic stepper concept.
  14. A basic stepper following this Stepper concept is able to perform a single step of the solution /x(t)/ of an ODE to obtain /x(t+dt)/ using a given step size /dt/.
  15. Basic steppers can be Runge-Kutta steppers, symplectic steppers as well as implicit steppers.
  16. Depending on the actual stepper, the ODE is defined as __system, __symplectic_system, __simple_symplectic_system or __implicit_system.
  17. Note that all error steppers are also basic steppers.
  18. [heading Refinement of]
  19. * DefaultConstructable
  20. * CopyConstructable
  21. [heading Associated types]
  22. * '''<para>'''[*state_type]'''</para>'''
  23. '''<para>'''`Stepper::state_type`'''</para>'''
  24. '''<para>'''The type characterizing the state of the ODE, hence ['x].'''</para>'''
  25. * '''<para>'''[*deriv_type]'''</para>'''
  26. '''<para>'''`Stepper::deriv_type`'''</para>'''
  27. '''<para>'''The type characterizing the derivative of the ODE, hence ['d x/dt].'''</para>'''
  28. * '''<para>'''[*time_type]'''</para>'''
  29. '''<para>'''`Stepper::time_type`'''</para>'''
  30. '''<para>'''The type characterizing the dependent variable of the ODE, hence the time ['t].'''</para>'''
  31. * '''<para>'''[*value_type]'''</para>'''
  32. '''<para>'''`Stepper::value_type`'''</para>'''
  33. '''<para>'''The numerical data type which is used within the stepper, something like `float`, `double`, `complex&lt; double &gt;`.'''</para>'''
  34. * '''<para>'''[*order_type]'''</para>'''
  35. '''<para>'''`Stepper::order_type`'''</para>'''
  36. '''<para>'''The type characterizing the order of the ODE, typically `unsigned short`.'''</para>'''
  37. * '''<para>'''[*stepper_category]'''</para>'''
  38. '''<para>'''`Stepper::stepper_category`'''</para>'''
  39. '''<para>'''A tag type characterizing the category of the stepper. This type must be convertible to `stepper_tag`.'''</para>'''
  40. [heading Notation]
  41. [variablelist
  42. [[`Stepper`] [A type that is a model of Stepper]]
  43. [[`State`] [A type representing the state /x/ of the ODE]]
  44. [[`Time`] [A type representing the time /t/ of the ODE]]
  45. [[`stepper`] [An object of type `Stepper`]]
  46. [[`x`] [Object of type `State`]]
  47. [[`t`, `dt`] [Objects of type `Time`]]
  48. [[`sys`] [An object defining the ODE. Depending on the Stepper this might be a model of __system, __symplectic_system, __simple_symplectic_system or __implicit_system ]]
  49. ]
  50. [heading Valid Expressions]
  51. [table
  52. [[Name] [Expression] [Type] [Semantics]]
  53. [[Get the order] [`stepper.order()`] [`order_type`] [Returns the order of the stepper.]]
  54. [[Do step] [`stepper.do_step( sys , x , t , dt )`] [`void`] [Performs one step of step size `dt`. The newly obtained state is written in place in `x`.] ]
  55. [/ [Do step with reference] [`stepper.do_step( boost::ref(sys) , x , t , dt )`] [`void`] [Performs one step of step size `dt`. The newly obtained state is written in place in `x`.] ]
  56. [/ [Do step out-of-place] [`stepper.do_step( sys , in , t , out , dt )`] [`void`] [Performs one step. The newly obtained state is written to `out`] ]
  57. ]
  58. [heading Models]
  59. * `runge_kutta4`
  60. * `euler`
  61. * `runge_kutta_cash_karp54`
  62. * `runge_kutta_dopri5`
  63. * `runge_kutta_fehlberg78`
  64. * `modified_midpoint`
  65. * `rosenbrock4`
  66. [endsect]