Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r71939 - in sandbox/odeint/branches/karsten/libs/numeric/odeint/doc: . concepts html html/boost_sandbox_numeric_odeint
From: karsten.ahnert_at_[hidden]
Date: 2011-05-14 11:13:42


Author: karsten
Date: 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
New Revision: 71939
URL: http://svn.boost.org/trac/boost/changeset/71939

Log:
introducing the concepts in the docs
Added:
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/controlled_stepper.qbk (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/dense_output_stepper.qbk (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/error_stepper.qbk (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/stepper.qbk (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts_old.qbk (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.xml (contents, props changed)
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference_old.qbk (contents, props changed)
Removed:
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.qbk
Text files modified:
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/Jamfile | 8
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts.qbk | 271 ------------------
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/concepts.html | 298 --------------------
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/extend_odeint.html | 12
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/reference.html | 8
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/tutorial.html | 509 -----------------------------------
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/index.html | 572 ++-------------------------------------
   sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/odeint.qbk | 6
   8 files changed, 68 insertions(+), 1616 deletions(-)

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/Jamfile
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/Jamfile (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/Jamfile 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -11,15 +11,19 @@
     ;
 
 
+xml odeint_xml
+ :
+ odeint.qbk
+ ;
 
 boostbook odeint
         :
- odeint.qbk
+ odeint_xml
         :
           <xsl:param>navig.graphics=1
           <xsl:param>boost.root=../../../..
           <xsl:param>chunk.section.depth=2
- <xsl:param>chunk.first.sections=0
+ <xsl:param>chunk.first.sections=1
           <xsl:param>toc.section.depth=2
           <xsl:param>toc.max.depth=2
           <xsl:param>generate.section.toc.level=3

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts.qbk
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts.qbk (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -1,270 +1,9 @@
 [section Concepts]
 
-The odeint library defines three concepts for stepping objects.
+[include concepts/stepper.qbk]
+[include concepts/error_stepper.qbk]
+[include concepts/controlled_stepper.qbk]
+[include concepts/dense_output_stepper.qbk]
 
-[/
 
-[section Dynamical system]
-
-The dynamical system represents the right hand side of the differential equation:
-
-[* x'(t) = f(x(t) , t)]
-
-In this odeint library the dynamical system is realized by a callable object,
-e.g. a function pointer, a functor or an instance of an object with an
-appropriate `()`-operator.
-The parameter structure has to be the following:
-
-`(const container_type &x, container_type &dxdt, const time_type t)`
-
-`x` is the current state of the system and `t` is the current time.
-The result *x' = f(x,t)* is then returned in `dxdt`.
-See the tutorial for examples on how to define the dynamical system.
-
-[endsect]
-
-]
-
-
-
-[section Basic stepper]
-
-Basic steppers execute one timestep of a specific order with a given stepsize.
-They usually allocate internal memory to store intermediate function call
-results.
-If state types with variable size are used (e.g. `vector`), it has to be assured
-that the stepper gets informed about any change of the state size by calling its
-`adjust_size` method.
-
-[*Associated Types]
-[table
- [[] [] [Description]]
- [[Time] [Stepper::time_type] [Type of the time variable, e.g. `double`]]
- [[Container] [Stepper::container_type] [Type of the system state, e.g. `vector<double>`]]
- [[Value] [Stepper::value_type] [Value type of the state, e.g. `double`]]
- [[Order Type] [Stepper::order_type] [Type of the order parameter, usually `unsigned short`]]
-]
-
-[*Methods]
-
-*`Stepper()` Constructor.
-
-*`Stepper( container_type &x )` Constructor that allocates internal memory to
-store intermediate results of the same size as `x`.
-
-*`void do_step( DynamicalSystem &system ,
- container_type &x ,
- time_type t ,
- time_type dt )`
-
-Executes one timestep with the given parameters:
-[table
- [[Parameter] [Type] [Description]]
- [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
- [[x] [container_type] [The current state of the system *x(t)*]]
- [[t] [time_type] [The current time *t*]]
- [[dt] [time_type] [Length of the timestep to be executed]]
-]
-The result of this method is the (approximate) state of the system *x(t+dt)* and
-is stored in the variable `x` (in-place).
-Note, that the time `t` is not automatically increased by this method.
-
-*`void do_step( DynamicalSystem &system ,
- container_type &x ,
- const container_type &dxdt ,
- time_type t ,
- time_type dt )`
-
-The same as above but with the additional parameter `dxdt` that represents the
-derivative [*x'(t) = f(x,t)] at the time *t*.
-
-*`void adjust_size( const container_type &x )`
-Adjusts the internal memory to store intermediate results of the same size as
-`x`.
-This function /must/ be called whenever the system size changes during the
-integration.
-
-*`order_type order_step()`
-Returns the order of the algorithm. If *n* is the order of a method, then the
-result of one iteration with the timestep *dt* is accurate up to *dt^n*. That
-means the error made by the time discretization is of order *dt^(n+1)*.
-
-[*Stepper that model this concept]
-
-*`stepper_euler`
-*`stepper_rk4`
-*`stepper_rk78_fehlberg`
-
-[endsect]
-
-[section Error stepper]
-
-Error steppers execute one timestep of a specific order with a given stepsize.
-Additionally, an error estimation of the obtained result is computed that can
-be used to control the error introduced by the time discretization.
-Like the basic steppers, error steppers usually allocate internal memory to store
-intermediate function call results. If state types with variable size are used
-(e.g. `vector`), it has to be assured that the stepper gets informed about any
-change of the state size by calling its `adjust_size` method.
-
-[*Associated Types]
-
-Same as for /basic steppers/ above.
-
-[*Methods]
-
-*`Error_Stepper()` Constructor.
-
-*`Error_Stepper( container_type &x )` Constructor that allocates internal memory to
-store intermediate results of the same size as `x`.
-
-*`void do_step( DynamicalSystem &system ,
- container_type &x ,
- time_type t ,
- time_type dt ,
- container_type &xerr)`
-
-Executes one timestep with the given parameters:
-[table
- [[Parameter] [Type] [Description]]
- [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
- [[x] [container_type] [The current state of the system *x(t)*]]
- [[t] [time_type] [The current time *t*]]
- [[dt] [time_type] [Length of the timestep to be executed]]
- [[xerr] [container_type] [Used by the method to return the error estimation of this computation]]
-]
-The result of this method is the (approximate) state of the system *x(t+dt)*,
-which is returned in the variable `x` (in-place), and the corresponding error
-estimation returned in `xerr`.
-Note, that the time `t` is not automatically increased by this method.
-
-*`void do_step( DynamicalSystem &system ,
- container_type &x ,
- const container_type &dxdt ,
- time_type t ,
- time_type dt ,
- container_type &xerr)`
-
-The same as above but with the additional parameter `dxdt` that represents the
-derivative [*x'(t) = f(x,t)] at the time *t*.
-
-*`void adjust_size( const container_type &x )`
-Adjusts the internal memory to store intermediate results of the same size as
-`x`.
-This function /must/ be called whenever the system size changes during the
-integration.
-
-*`order_type order_error_step()`
-Returns the order of the result *x(t+dt)* of the algorithm.
-
-*`order_type order_error()`
-Returns the order of the error estimation of the algorithm.
-
-[*Stepper that model this concept]
-
-*`stepper_rk5_ck`
-*`stepper_rk78_fehlberg`
-*`stepper_half_step`
-
-[endsect]
-
-[section Controlled stepper]
-
-Controlled steppers try to execute a timestep with a given error threshold.
-If the estimated error of the obtained solution is too big, the result is
-rejected and a new stepsize is proposed.
-If the error is small enough the timestep is accepted and possibly an increased
-stepsize is proposed.
-
-[*Associated Types]
-
-Same as for /basic steppers/ above.
-
-[*Methods]
-
-*`Controlled_Stepper( time_type abs_err, time_type rel_err,
- time_type factor_x, time_type factor_dxdt )`
-
-Constructor that initializes the controlled stepper with several parameters of
-the error control. The controlled stepper assures that the error done by each
-individual timestep yields:
-
-[* xerr < 1.1 ( eps_abs + eps_rel * (factor_x |x| + factor_dxdt h |x'|) ) ]
-
-The factor 1.1 is for safety to avoid unnecessary many stepsize adjustings.
-The above inequality should be understand to hold for /all/ components of the
-possibly more dimensional vectors *x*, *x'* and *xerr*.
-If the estimated error is too large, a reduced stepsize will be suggested.
-If the estimated error is less than half of the desired error, an increased
-stepsize will be suggested.
-
-*`Controlled_Stepper( container_type &x, time_type abs_err, time_type rel_err,
- time_type factor_x, time_type factor_dxdt )`
-Same as above, but with additional allocation of the internal memory to store
-intermediate results of the same size as `x`.
-
-*`controlled_step_result try_step(
- DynamicalSystem &system,
- container_type &x,
- time_type &t,
- time_type &dt )`
-
-Tries one timestep with the given parameters
-[table
- [[Parameter] [Type] [Description]]
- [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
- [[x] [container_type] [The current state of the system *x(t)*]]
- [[t] [time_type] [The current time *t*]]
- [[dt] [time_type] [Length of the timestep to be executed]]
-]
-This method has three possible outcomes represented by the returned value `result`:
-If `result = success` the step has been applied and x contains the new state
-*x(t)* where the time has also been increased *t += dt*.
-If `result = step_size_increased` the step has also been accomplished, but the
-estimated error was so small that a new stepsize is proposed in the variable
-`dt`.
-If `result = step_size_decreased` the step has been rejected due to a too big
-error. `x` and `t` remain unchanged and `dt` now containes the suggested reduced
-stepsize that should give an error below the desired level.
-
-*`controlled_step_result try_step(
- DynamicalSystem &system,
- container_type &x,
- const container_type &dxdt,
- time_type &t,
- time_type &dt )`
-Same as above but with the additional parameter `dxdt` that that represents the
-derivative *x'(t) = f(x,t)* at the time *t*.
-
-*`void adjust_size( const container_type &x )`
-Adjusts the internal memory to store intermediate results of the same size as
-`x`.
-This function /must/ be called whenever the system size changes during the
-integration.
-
-*`order_type order_error_step()`
-Returns the order of the result *x(t+dt)* of the algorithm.
-
-[*Stepper that model this concept]
-
-*`controlled_stepper_standard`
-*`controlled_stepper_bs`
-
-[endsect]
-
-
-[section Dense ouput stepper]
-
-[endsect]
-
-[section Size adjusting stepper]
-
-[endsect]
-
-[section CompositeStepper]
-
-[endsect]
-
-see the wiki
-
-[endsect]
+[endsect]
\ No newline at end of file

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/controlled_stepper.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/controlled_stepper.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,5 @@
+[section Controlled stepper]
+
+Controlled stepper concept
+
+[endsect]
\ No newline at end of file

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/dense_output_stepper.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/dense_output_stepper.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,5 @@
+[section Dense output stepper]
+
+Dense output stepper concept
+
+[endsect]
\ No newline at end of file

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/error_stepper.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/error_stepper.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,5 @@
+[section Error stepper]
+
+Error stepper concept
+
+[endsect]
\ No newline at end of file

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/stepper.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts/stepper.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,82 @@
+[section Concept stepper]
+
+Concept Stepper
+
+[section Description]
+
+The basic stepper concept.
+
+tba.
+
+[endsect]
+
+[section Refinement of]
+
+* DefaultConstructable
+* CopyConstructable
+
+[endsect]
+
+[section Associated types]
+
+* '''<para>'''[*state_type]'''</para>'''
+'''<para>'''`Stepper::state_type`'''</para>'''
+'''<para>'''The type characterizing the state of the ODE, hence ['x].'''</para>'''
+
+* '''<para>'''[*deriv_type]'''</para>'''
+'''<para>'''`Stepper::deriv_type`'''</para>'''
+'''<para>'''The type characterizing the derivative of the ODE, hence ['d x/dt].'''</para>'''
+
+* '''<para>'''[*time_type]'''</para>'''
+'''<para>'''`Stepper::time_type`'''</para>'''
+'''<para>'''The type characterizing the dependent variable of the ODE, hence the time ['t].'''</para>'''
+
+* '''<para>'''[*value_type]'''</para>'''
+'''<para>'''`Stepper::value_type`'''</para>'''
+'''<para>'''The numerical data type which is used within the stepper, something like `float`, `double`, `complex&lt; double &gt;`.'''</para>'''
+
+* '''<para>'''[*order_type]'''</para>'''
+'''<para>'''`Stepper::order_type`'''</para>'''
+'''<para>'''The type characterizing the order of the ODE, typically something like `unsigned short`.'''</para>'''
+
+[endsect]
+
+[section Notation]
+
+[variablelist
+ [[Stepper] [A type that is a model of Stepper]]
+ [[State] [A type that is the `state_type` of Stepper]]
+ [[Time] [A type that is the `time_type` of Stepper]]
+ [[Order] [A type that is the `order_type` of Stepper]]
+ [[stepper] [An object of type Stepper]]
+ [[x,in,out] [Objects of type State]]
+ [[t,dt] [Objects of type Time]]
+ [[sys] [An object defining the ODE. Depends on the context of the stepper]]
+]
+
+[endsect]
+
+[section Valid expressions]
+
+[table
+ [[Name] [Expression] [Type] [Semantics]]
+ [[Get the order] [`stepper.order()`] [`Order`] [Returns the order of the stepper which is used for error calculation.] ]
+ [[Do step in-place] [`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`.] ]
+ [[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`] ]
+]
+
+[endsect]
+
+[section Models]
+
+* explicit_rk4
+* explicit_euler
+* explicit_error_rk54_ck
+* explicit_error_dopri5
+
+[endsect]
+
+
+
+
+[endsect]
\ No newline at end of file

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts_old.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/concepts_old.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,270 @@
+[section Old Concepts]
+
+The odeint library defines three concepts for stepping objects.
+
+[/
+
+[section Dynamical system]
+
+The dynamical system represents the right hand side of the differential equation:
+
+[* x'(t) = f(x(t) , t)]
+
+In this odeint library the dynamical system is realized by a callable object,
+e.g. a function pointer, a functor or an instance of an object with an
+appropriate `()`-operator.
+The parameter structure has to be the following:
+
+`(const container_type &x, container_type &dxdt, const time_type t)`
+
+`x` is the current state of the system and `t` is the current time.
+The result *x' = f(x,t)* is then returned in `dxdt`.
+See the tutorial for examples on how to define the dynamical system.
+
+[endsect]
+
+]
+
+
+
+[section Basic stepper]
+
+Basic steppers execute one timestep of a specific order with a given stepsize.
+They usually allocate internal memory to store intermediate function call
+results.
+If state types with variable size are used (e.g. `vector`), it has to be assured
+that the stepper gets informed about any change of the state size by calling its
+`adjust_size` method.
+
+[*Associated Types]
+[table
+ [[] [] [Description]]
+ [[Time] [Stepper::time_type] [Type of the time variable, e.g. `double`]]
+ [[Container] [Stepper::container_type] [Type of the system state, e.g. `vector<double>`]]
+ [[Value] [Stepper::value_type] [Value type of the state, e.g. `double`]]
+ [[Order Type] [Stepper::order_type] [Type of the order parameter, usually `unsigned short`]]
+]
+
+[*Methods]
+
+*`Stepper()` Constructor.
+
+*`Stepper( container_type &x )` Constructor that allocates internal memory to
+store intermediate results of the same size as `x`.
+
+*`void do_step( DynamicalSystem &system ,
+ container_type &x ,
+ time_type t ,
+ time_type dt )`
+
+Executes one timestep with the given parameters:
+[table
+ [[Parameter] [Type] [Description]]
+ [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
+ [[x] [container_type] [The current state of the system *x(t)*]]
+ [[t] [time_type] [The current time *t*]]
+ [[dt] [time_type] [Length of the timestep to be executed]]
+]
+The result of this method is the (approximate) state of the system *x(t+dt)* and
+is stored in the variable `x` (in-place).
+Note, that the time `t` is not automatically increased by this method.
+
+*`void do_step( DynamicalSystem &system ,
+ container_type &x ,
+ const container_type &dxdt ,
+ time_type t ,
+ time_type dt )`
+
+The same as above but with the additional parameter `dxdt` that represents the
+derivative [*x'(t) = f(x,t)] at the time *t*.
+
+*`void adjust_size( const container_type &x )`
+Adjusts the internal memory to store intermediate results of the same size as
+`x`.
+This function /must/ be called whenever the system size changes during the
+integration.
+
+*`order_type order_step()`
+Returns the order of the algorithm. If *n* is the order of a method, then the
+result of one iteration with the timestep *dt* is accurate up to *dt^n*. That
+means the error made by the time discretization is of order *dt^(n+1)*.
+
+[*Stepper that model this concept]
+
+*`stepper_euler`
+*`stepper_rk4`
+*`stepper_rk78_fehlberg`
+
+[endsect]
+
+[section Error stepper]
+
+Error steppers execute one timestep of a specific order with a given stepsize.
+Additionally, an error estimation of the obtained result is computed that can
+be used to control the error introduced by the time discretization.
+Like the basic steppers, error steppers usually allocate internal memory to store
+intermediate function call results. If state types with variable size are used
+(e.g. `vector`), it has to be assured that the stepper gets informed about any
+change of the state size by calling its `adjust_size` method.
+
+[*Associated Types]
+
+Same as for /basic steppers/ above.
+
+[*Methods]
+
+*`Error_Stepper()` Constructor.
+
+*`Error_Stepper( container_type &x )` Constructor that allocates internal memory to
+store intermediate results of the same size as `x`.
+
+*`void do_step( DynamicalSystem &system ,
+ container_type &x ,
+ time_type t ,
+ time_type dt ,
+ container_type &xerr)`
+
+Executes one timestep with the given parameters:
+[table
+ [[Parameter] [Type] [Description]]
+ [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
+ [[x] [container_type] [The current state of the system *x(t)*]]
+ [[t] [time_type] [The current time *t*]]
+ [[dt] [time_type] [Length of the timestep to be executed]]
+ [[xerr] [container_type] [Used by the method to return the error estimation of this computation]]
+]
+The result of this method is the (approximate) state of the system *x(t+dt)*,
+which is returned in the variable `x` (in-place), and the corresponding error
+estimation returned in `xerr`.
+Note, that the time `t` is not automatically increased by this method.
+
+*`void do_step( DynamicalSystem &system ,
+ container_type &x ,
+ const container_type &dxdt ,
+ time_type t ,
+ time_type dt ,
+ container_type &xerr)`
+
+The same as above but with the additional parameter `dxdt` that represents the
+derivative [*x'(t) = f(x,t)] at the time *t*.
+
+*`void adjust_size( const container_type &x )`
+Adjusts the internal memory to store intermediate results of the same size as
+`x`.
+This function /must/ be called whenever the system size changes during the
+integration.
+
+*`order_type order_error_step()`
+Returns the order of the result *x(t+dt)* of the algorithm.
+
+*`order_type order_error()`
+Returns the order of the error estimation of the algorithm.
+
+[*Stepper that model this concept]
+
+*`stepper_rk5_ck`
+*`stepper_rk78_fehlberg`
+*`stepper_half_step`
+
+[endsect]
+
+[section Controlled stepper]
+
+Controlled steppers try to execute a timestep with a given error threshold.
+If the estimated error of the obtained solution is too big, the result is
+rejected and a new stepsize is proposed.
+If the error is small enough the timestep is accepted and possibly an increased
+stepsize is proposed.
+
+[*Associated Types]
+
+Same as for /basic steppers/ above.
+
+[*Methods]
+
+*`Controlled_Stepper( time_type abs_err, time_type rel_err,
+ time_type factor_x, time_type factor_dxdt )`
+
+Constructor that initializes the controlled stepper with several parameters of
+the error control. The controlled stepper assures that the error done by each
+individual timestep yields:
+
+[* xerr < 1.1 ( eps_abs + eps_rel * (factor_x |x| + factor_dxdt h |x'|) ) ]
+
+The factor 1.1 is for safety to avoid unnecessary many stepsize adjustings.
+The above inequality should be understand to hold for /all/ components of the
+possibly more dimensional vectors *x*, *x'* and *xerr*.
+If the estimated error is too large, a reduced stepsize will be suggested.
+If the estimated error is less than half of the desired error, an increased
+stepsize will be suggested.
+
+*`Controlled_Stepper( container_type &x, time_type abs_err, time_type rel_err,
+ time_type factor_x, time_type factor_dxdt )`
+Same as above, but with additional allocation of the internal memory to store
+intermediate results of the same size as `x`.
+
+*`controlled_step_result try_step(
+ DynamicalSystem &system,
+ container_type &x,
+ time_type &t,
+ time_type &dt )`
+
+Tries one timestep with the given parameters
+[table
+ [[Parameter] [Type] [Description]]
+ [[system] [DynamicalSystem] [Function (callable object) that computes the rhs of the ode]]
+ [[x] [container_type] [The current state of the system *x(t)*]]
+ [[t] [time_type] [The current time *t*]]
+ [[dt] [time_type] [Length of the timestep to be executed]]
+]
+This method has three possible outcomes represented by the returned value `result`:
+If `result = success` the step has been applied and x contains the new state
+*x(t)* where the time has also been increased *t += dt*.
+If `result = step_size_increased` the step has also been accomplished, but the
+estimated error was so small that a new stepsize is proposed in the variable
+`dt`.
+If `result = step_size_decreased` the step has been rejected due to a too big
+error. `x` and `t` remain unchanged and `dt` now containes the suggested reduced
+stepsize that should give an error below the desired level.
+
+*`controlled_step_result try_step(
+ DynamicalSystem &system,
+ container_type &x,
+ const container_type &dxdt,
+ time_type &t,
+ time_type &dt )`
+Same as above but with the additional parameter `dxdt` that that represents the
+derivative *x'(t) = f(x,t)* at the time *t*.
+
+*`void adjust_size( const container_type &x )`
+Adjusts the internal memory to store intermediate results of the same size as
+`x`.
+This function /must/ be called whenever the system size changes during the
+integration.
+
+*`order_type order_error_step()`
+Returns the order of the result *x(t+dt)* of the algorithm.
+
+[*Stepper that model this concept]
+
+*`controlled_stepper_standard`
+*`controlled_stepper_bs`
+
+[endsect]
+
+
+[section Dense ouput stepper]
+
+[endsect]
+
+[section Size adjusting stepper]
+
+[endsect]
+
+[section CompositeStepper]
+
+[endsect]
+
+see the wiki
+
+[endsect]

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/concepts.html
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/concepts.html (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/concepts.html 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -7,314 +7,28 @@
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="prev" href="extend_odeint/adapt_your_own_operations.html" title="Adapt your own operations">
-<link rel="next" href="concepts/error_stepper.html" title="Error stepper">
+<link rel="next" href="concepts/concept_stepper.html" title="Concept stepper">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="extend_odeint/adapt_your_own_operations.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/error_stepper.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="extend_odeint/adapt_your_own_operations.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/concept_stepper.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_sandbox_numeric_odeint.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="concepts.html#boost_sandbox_numeric_odeint.concepts.basic_stepper">Basic
+<dt><span class="section"><a href="concepts/concept_stepper.html">Concept
       stepper</a></span></dt>
 <dt><span class="section"><a href="concepts/error_stepper.html">Error
       stepper</a></span></dt>
 <dt><span class="section"><a href="concepts/controlled_stepper.html">Controlled
       stepper</a></span></dt>
-<dt><span class="section"><a href="concepts/dense_ouput_stepper.html">Dense
- ouput stepper</a></span></dt>
-<dt><span class="section"><a href="concepts/size_adjusting_stepper.html">Size
- adjusting stepper</a></span></dt>
-<dt><span class="section">CompositeStepper</span></dt>
+<dt><span class="section"><a href="concepts/dense_output_stepper.html">Dense
+ output stepper</a></span></dt>
 </dl></div>
-<p>
- The odeint library defines three concepts for stepping objects.
- </p>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.concepts.basic_stepper"></a><a class="link" href="concepts.html#boost_sandbox_numeric_odeint.concepts.basic_stepper" title="Basic stepper">Basic
- stepper</a>
-</h3></div></div></div>
-<p>
- Basic steppers execute one timestep of a specific order with a given stepsize.
- They usually allocate internal memory to store intermediate function call
- results. If state types with variable size are used (e.g. <code class="computeroutput"><span class="identifier">vector</span></code>),
- it has to be assured that the stepper gets informed about any change of the
- state size by calling its <code class="computeroutput"><span class="identifier">adjust_size</span></code>
- method.
- </p>
-<p>
- <span class="bold"><strong>Associated Types</strong></span>
- </p>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- </th>
-<th>
- </th>
-<th>
- <p>
- Description
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Time
- </p>
- </td>
-<td>
- <p>
- Stepper::time_type
- </p>
- </td>
-<td>
- <p>
- Type of the time variable, e.g. <code class="computeroutput"><span class="keyword">double</span></code>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Container
- </p>
- </td>
-<td>
- <p>
- Stepper::container_type
- </p>
- </td>
-<td>
- <p>
- Type of the system state, e.g. <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span></code>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Value
- </p>
- </td>
-<td>
- <p>
- Stepper::value_type
- </p>
- </td>
-<td>
- <p>
- Value type of the state, e.g. <code class="computeroutput"><span class="keyword">double</span></code>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Order Type
- </p>
- </td>
-<td>
- <p>
- Stepper::order_type
- </p>
- </td>
-<td>
- <p>
- Type of the order parameter, usually <code class="computeroutput"><span class="keyword">unsigned</span>
- <span class="keyword">short</span></code>
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<p>
- <span class="bold"><strong>Methods</strong></span>
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">Stepper</span><span class="special">()</span></code>
- Constructor.
- </li>
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">Stepper</span><span class="special">(</span>
- <span class="identifier">container_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">)</span></code>
- Constructor that allocates internal memory to store intermediate results
- of the same size as <code class="computeroutput"><span class="identifier">x</span></code>.
- </li>
-<li class="listitem">
- <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">DynamicalSystem</span>
- <span class="special">&amp;</span><span class="identifier">system</span>
- <span class="special">,</span> <span class="identifier">container_type</span>
- <span class="special">&amp;</span><span class="identifier">x</span>
- <span class="special">,</span> <span class="identifier">time_type</span>
- <span class="identifier">t</span> <span class="special">,</span>
- <span class="identifier">time_type</span> <span class="identifier">dt</span>
- <span class="special">)</span></code>
- </li>
-</ul></div>
-<p>
- Executes one timestep with the given parameters:
- </p>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Parameter
- </p>
- </th>
-<th>
- <p>
- Type
- </p>
- </th>
-<th>
- <p>
- Description
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- system
- </p>
- </td>
-<td>
- <p>
- DynamicalSystem
- </p>
- </td>
-<td>
- <p>
- Function (callable object) that computes the rhs of the ode
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- x
- </p>
- </td>
-<td>
- <p>
- container_type
- </p>
- </td>
-<td>
- <p>
- The current state of the system <span class="bold"><strong>x(t)</strong></span>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- t
- </p>
- </td>
-<td>
- <p>
- time_type
- </p>
- </td>
-<td>
- <p>
- The current time <span class="bold"><strong>t</strong></span>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- dt
- </p>
- </td>
-<td>
- <p>
- time_type
- </p>
- </td>
-<td>
- <p>
- Length of the timestep to be executed
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<p>
- The result of this method is the (approximate) state of the system <span class="bold"><strong>x(t+dt)</strong></span> and is stored in the variable <code class="computeroutput"><span class="identifier">x</span></code> (in-place). Note, that the time <code class="computeroutput"><span class="identifier">t</span></code> is not automatically increased by this
- method.
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
- <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">DynamicalSystem</span>
- <span class="special">&amp;</span><span class="identifier">system</span>
- <span class="special">,</span> <span class="identifier">container_type</span>
- <span class="special">&amp;</span><span class="identifier">x</span>
- <span class="special">,</span> <span class="keyword">const</span>
- <span class="identifier">container_type</span> <span class="special">&amp;</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="identifier">time_type</span> <span class="identifier">t</span>
- <span class="special">,</span> <span class="identifier">time_type</span>
- <span class="identifier">dt</span> <span class="special">)</span></code>
- </li></ul></div>
-<p>
- The same as above but with the additional parameter <code class="computeroutput"><span class="identifier">dxdt</span></code>
- that represents the derivative <span class="bold"><strong>x'(t) = f(x,t)</strong></span>
- at the time <span class="bold"><strong>t</strong></span>.
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">adjust_size</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">container_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">)</span></code>
- Adjusts the internal memory to store intermediate results of the same
- size as <code class="computeroutput"><span class="identifier">x</span></code>. This function
- <span class="emphasis"><em>must</em></span> be called whenever the system size changes
- during the integration.
- </li>
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">order_type</span> <span class="identifier">order_step</span><span class="special">()</span></code> Returns the order of the algorithm.
- If <span class="bold"><strong>n</strong></span> is the order of a method, then
- the result of one iteration with the timestep <span class="bold"><strong>dt</strong></span>
- is accurate up to <span class="bold"><strong>dt^n</strong></span>. That means the
- error made by the time discretization is of order <span class="bold"><strong>dt^(n+1)</strong></span>.
- </li>
-</ul></div>
-<p>
- <span class="bold"><strong>Stepper that model this concept</strong></span>
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">stepper_euler</span></code>
- </li>
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">stepper_rk4</span></code>
- </li>
-<li class="listitem">
- <code class="computeroutput"><span class="identifier">stepper_rk78_fehlberg</span></code>
- </li>
-</ul></div>
-</div>
-<p>
- see the wiki
- </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
@@ -326,7 +40,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="extend_odeint/adapt_your_own_operations.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/error_stepper.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="extend_odeint/adapt_your_own_operations.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/concept_stepper.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/extend_odeint.html
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/extend_odeint.html (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/extend_odeint.html 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -7,30 +7,26 @@
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="prev" href="tutorial/references.html" title="References">
-<link rel="next" href="extend_odeint/adapt_your_own_containers.html" title="Adapt your own containers">
+<link rel="next" href="extend_odeint/write_own_steppers.html" title="Write own steppers">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="tutorial/references.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="extend_odeint/adapt_your_own_containers.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="tutorial/references.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="extend_odeint/write_own_steppers.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_sandbox_numeric_odeint.extend_odeint"></a><a class="link" href="extend_odeint.html" title="Extend odeint">Extend odeint</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="extend_odeint.html#boost_sandbox_numeric_odeint.extend_odeint.write_own_steppers">Write
+<dt><span class="section"><a href="extend_odeint/write_own_steppers.html">Write
       own steppers</a></span></dt>
 <dt><span class="section"><a href="extend_odeint/adapt_your_own_containers.html">Adapt
       your own containers</a></span></dt>
 <dt><span class="section"><a href="extend_odeint/adapt_your_own_operations.html">Adapt
       your own operations</a></span></dt>
 </dl></div>
-<div class="section"><div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.extend_odeint.write_own_steppers"></a><a class="link" href="extend_odeint.html#boost_sandbox_numeric_odeint.extend_odeint.write_own_steppers" title="Write own steppers">Write
- own steppers</a>
-</h3></div></div></div></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
@@ -42,7 +38,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="tutorial/references.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="extend_odeint/adapt_your_own_containers.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="tutorial/references.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="extend_odeint/write_own_steppers.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/reference.html
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/reference.html (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/reference.html 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -6,14 +6,14 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
-<link rel="prev" href="concepts/compositestepper.html" title="CompositeStepper">
+<link rel="prev" href="../Transform.html" title="Concept Transform">
 <link rel="next" href="reference/integration_functions.html" title="Integration functions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="concepts/compositestepper.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/integration_functions.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../Transform.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/integration_functions.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -34,7 +34,7 @@
       classes</a>
 </h3></div></div></div>
 <div class="table">
-<a name="id589799"></a><p class="title"><b>Table&#160;1.4.&#160;Stepper Algorithms</b></p>
+<a name="id588844"></a><p class="title"><b>Table&#160;1.4.&#160;Stepper Algorithms</b></p>
 <div class="table-contents"><table class="table" summary="Stepper Algorithms">
 <colgroup>
 <col>
@@ -213,7 +213,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="concepts/compositestepper.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/integration_functions.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../Transform.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/integration_functions.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/tutorial.html
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/tutorial.html (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/boost_sandbox_numeric_odeint/tutorial.html 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -6,21 +6,21 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
-<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
-<link rel="next" href="tutorial/solar_system.html" title="Solar system">
+<link rel="prev" href="getting_started/short_example.html" title="Short Example">
+<link rel="next" href="tutorial/harmonic_oscillator.html" title="Harmonic oscillator">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/solar_system.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="getting_started/short_example.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/harmonic_oscillator.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="boost_sandbox_numeric_odeint.tutorial"></a><a class="link" href="tutorial.html" title="Tutorial">Tutorial</a>
 </h2></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator">Harmonic
+<dt><span class="section"><a href="tutorial/harmonic_oscillator.html">Harmonic
       oscillator</a></span></dt>
 <dt><span class="section"><a href="tutorial/solar_system.html">Solar
       system</a></span></dt>
@@ -36,505 +36,6 @@
       examples</a></span></dt>
 <dt><span class="section">References</span></dt>
 </dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator"></a><a class="link" href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator" title="Harmonic oscillator">Harmonic
- oscillator</a>
-</h3></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section"><a href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.define_the_ode">Define
- the ODE</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.stepper_types">Stepper
- Types</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_constant_step_size">Integration
- with Constant Step Size</a></span></dt>
-<dt><span class="section"><a href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_adaptive_step_size">Integration
- with Adaptive Step Size</a></span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.define_the_ode"></a><a class="link" href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.define_the_ode" title="Define the ODE">Define
- the ODE</a>
-</h4></div></div></div>
-<p>
- First of all, you have to specify the datatype that represents a state
- of your system <span class="emphasis"><em>x</em></span>. Mathematically, this usually is
- an n-dimensional vector with real numbers or complex numbers as scalar
- objects. For odeint the most natural way is to use <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span></code> or <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span> <span class="identifier">complex</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="special">&gt;</span></code>
- to represent the system state. However, odeint can deal with other container
- types as well, e.g. <code class="computeroutput"><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">,</span> <span class="identifier">N</span> <span class="special">&gt;</span></code> as long as it is fullfils some requirements
- defined below.
- </p>
-<p>
- To integrate a differential equation numerically, one has to define the
- rhs of the equation <span class="emphasis"><em>x' = f(x)</em></span>. In odeint you supply
- this function in terms of an object that implements the ()-operator with
- a certain parameter structure. Hence, the straight forward way would be
- to just define a function, e.g:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="comment">/* The type of container used to hold the state vector */</span>
-<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
-
-<span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">gam</span> <span class="special">=</span> <span class="number">0.15</span><span class="special">;</span>
-
-<span class="comment">/* The rhs of x' = f(x) */</span>
-<span class="keyword">void</span> <span class="identifier">harmonic_oscillator</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">)</span>
-<span class="special">{</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">x</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">-</span> <span class="identifier">gam</span><span class="special">*</span><span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
-<span class="special">}</span>
-</pre>
-<p>
- </p>
-<p>
- The parameters of the function must follow the example above where <code class="computeroutput"><span class="identifier">x</span></code> is the current state, <code class="computeroutput"><span class="identifier">dxdt</span></code> is the derivative <span class="emphasis"><em>x'</em></span>
- and should be filled by the function with <span class="emphasis"><em>f(x)</em></span> and
- <code class="computeroutput"><span class="identifier">t</span></code> is the current time.
- </p>
-<p>
- A more sophisticated approach is to implement the system as a class where
- the rhs function is defined as the ()-operator of the class with the same
- parameter structure as above:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="comment">/* The rhs of x' = f(x) defined as a class */</span>
-<span class="keyword">class</span> <span class="identifier">harm_osc</span> <span class="special">{</span>
-
- <span class="keyword">double</span> <span class="identifier">m_gam</span><span class="special">;</span>
-
-<span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">harm_osc</span><span class="special">(</span> <span class="keyword">double</span> <span class="identifier">gam</span> <span class="special">)</span> <span class="special">:</span> <span class="identifier">m_gam</span><span class="special">(</span><span class="identifier">gam</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
-
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">)</span>
- <span class="special">{</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">x</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">-</span> <span class="identifier">m_gam</span><span class="special">*</span><span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="special">}</span>
-<span class="special">};</span>
-</pre>
-<p>
- </p>
-<p>
- odeint can deal with instances of such classes instead of pure functions
- which allows for cleaner code.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.stepper_types"></a><a class="link" href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.stepper_types" title="Stepper Types">Stepper
- Types</a>
-</h4></div></div></div>
-<p>
- Numerical integration works iteratively, that means you start at a state
- <span class="emphasis"><em>x(t)</em></span> and perform a timestep of length <span class="emphasis"><em>dt</em></span>
- to obtain the approximate state <span class="emphasis"><em>x(t+dt)</em></span>. There exist
- many different methods to perform such a timestep each of which has a certain
- order <span class="emphasis"><em>q</em></span>. If the order of a method is <span class="emphasis"><em>q</em></span>
- than it is accurate up to term <span class="emphasis"><em>~dt<sup>q</sup></em></span> that means the
- error in <span class="emphasis"><em>x</em></span> made by such a step is <span class="emphasis"><em>~dt<sup>q+1</sup></em></span>.
- odeint provides several steppers of different orders from which you can
- choose:
- </p>
-<div class="table">
-<a name="id575777"></a><p class="title"><b>Table&#160;1.2.&#160;Stepper Algorithms</b></p>
-<div class="table-contents"><table class="table" summary="Stepper Algorithms">
-<colgroup>
-<col>
-<col>
-<col>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Method
- </p>
- </th>
-<th>
- <p>
- Class
- </p>
- </th>
-<th>
- <p>
- Order
- </p>
- </th>
-<th>
- <p>
- Error Estimation
- </p>
- </th>
-<th>
- <p>
- Dense Output
- </p>
- </th>
-<th>
- <p>
- Remarks
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Explicit Euler
- </p>
- </td>
-<td>
- <p>
- explicit_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Very simple, only for demonstrating purposes
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Runge-Kutta 4
- </p>
- </td>
-<td>
- <p>
- explicit_rkrk4
- </p>
- </td>
-<td>
- <p>
- 4
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Good default method
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Runge-Kutta Cash-Karp
- </p>
- </td>
-<td>
- <p>
- explicit_error_rk54_ck
- </p>
- </td>
-<td>
- <p>
- 5
- </p>
- </td>
-<td>
- <p>
- Yes (Order 4)
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- ...
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Dormand-Prince 5
- </p>
- </td>
-<td>
- <p>
- explicit_error_dopri5
- </p>
- </td>
-<td>
- <p>
- 5
- </p>
- </td>
-<td>
- <p>
- Yes (Order 4)
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- ...
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Implicit Euler
- </p>
- </td>
-<td>
- <p>
- implicit_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Needs the Jacobian
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Rosenbrock 4
- </p>
- </td>
-<td>
- <p>
- rosenbrock4
- </p>
- </td>
-<td>
- <p>
- 4
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Good for stiff systems
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Symplectic Euler
- </p>
- </td>
-<td>
- <p>
- symplectic_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Symplectic solver for separable Hamiltonian system
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<br class="table-break"><p>
- Some of steppers in the table above are special: Some need the Jacobian
- of the ODE, others are constructed for special ODE-systems like Hamiltonian
- systems. We will show typical examples and use cases in this tutorial and
- which kind of steppers should be applied.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_constant_step_size"></a><a class="link" href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_constant_step_size" title="Integration with Constant Step Size">Integration
- with Constant Step Size</a>
-</h4></div></div></div>
-<p>
- The basic stepper just performs one timestep and doesn't give you any information
- about the error that was made (except that you know it is of order <span class="emphasis"><em>q+1</em></span>).
- Such steppers are used with constant step size that should be chosen small
- enough to have reasonable small errors. However, you should apply some
- sort of validity check of your results (such as observing conserved quantities)
- becasue you have no other control of the error. The following example defines
- a basic stepper based on the classical Runge-Kutta scheme of 4th order.
- The declaration of the stepper requires the state type as template parameter.
- The integration can now be done by using the <code class="computeroutput"><span class="identifier">integrate_const</span><span class="special">(</span> <span class="identifier">Stepper</span><span class="special">,</span> <span class="identifier">System</span><span class="special">,</span> <span class="identifier">state</span><span class="special">,</span> <span class="identifier">start_time</span><span class="special">,</span> <span class="identifier">end_time</span><span class="special">,</span> <span class="identifier">step_size</span>
- <span class="special">)</span></code> function from odeint:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="identifier">explicit_rk4</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">stepper</span><span class="special">;</span>
-<span class="identifier">integrate_const</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">harmonic_oscillator</span> <span class="special">,</span> <span class="identifier">x</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">);</span>
-</pre>
-<p>
- </p>
-<p>
- This call integrates the system defined by <code class="computeroutput"><span class="identifier">harmonic_oscillator</span></code>
- using the RK4 method from <span class="emphasis"><em>t=0</em></span> to <span class="emphasis"><em>10</em></span>
- with a stepsize <span class="emphasis"><em>dt=0.01</em></span> and the initial condition
- given in <code class="computeroutput"><span class="identifier">x</span></code>. The result,
- <span class="emphasis"><em>x(t=10)</em></span> is stored in <code class="computeroutput"><span class="identifier">x</span></code>
- (in-place). Each stepper defines a <code class="computeroutput"><span class="identifier">do_step</span></code>
- method which can used directly. So, you write down the above example as
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">dt</span> <span class="special">=</span> <span class="number">0.01</span><span class="special">;</span>
-<span class="keyword">for</span><span class="special">(</span> <span class="keyword">double</span> <span class="identifier">t</span><span class="special">=</span><span class="number">0.0</span> <span class="special">;</span> <span class="identifier">t</span><span class="special">&lt;</span><span class="number">10.0</span> <span class="special">;</span> <span class="identifier">t</span><span class="special">+=</span> <span class="identifier">dt</span> <span class="special">)</span>
- <span class="identifier">stepper</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">harmonic_oscillator</span> <span class="special">,</span> <span class="identifier">x</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
-</pre>
-<p>
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_adaptive_step_size"></a><a class="link" href="tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator.integration_with_adaptive_step_size" title="Integration with Adaptive Step Size">Integration
- with Adaptive Step Size</a>
-</h4></div></div></div>
-<p>
- To improve the numerical results and additionally minimize the computational
- effort, the application of a step size control is advisable. Step size
- control is realized via stepper algorithms that additionally provide an
- error estimation of the applied step. Odeint provides a number of such
- <span class="bold"><strong>ErrorSteppers</strong></span> and we will show their usage
- on the example of `explicit_error_rk54_ck? -- a 5th order Runge-Kutta method
- with 4th order error estimation and coefficients introduced by Cash-Karp.
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">explicit_error_rk54_ck</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">error_stepper_type</span><span class="special">;</span>
-<span class="identifier">error_stepper_type</span> <span class="identifier">rk54</span><span class="special">;</span>
-</pre>
-<p>
- </p>
-<p>
- Given the error stepper, one still needs an instance that checks the error
- and adjusts the step size accordingly. In odeint, this is done by <span class="bold"><strong>ControlledSteppers</strong></span>. The usual way to create a controlled
- stepper is via the <code class="computeroutput"><span class="identifier">make_controlled_stepper_standard</span><span class="special">(</span> <span class="identifier">ErrorStepper</span>
- <span class="special">,</span> <span class="identifier">eps_abs</span>
- <span class="special">,</span> <span class="identifier">eps_rel</span>
- <span class="special">,</span> <span class="identifier">a_x</span>
- <span class="special">,</span> <span class="identifier">a_dxdt</span>
- <span class="special">)</span></code> function that takes an error stepper
- as parameter and four values defining the maximal absolute and relative
- error allowed for one integration step. The standard controlled stepper
- created by this method ensures that the error <span class="emphasis"><em>err</em></span>
- of the solution fulfills <span class="emphasis"><em>err &lt; eps_abs + eps_rel * ( a<sub>x</sub> * |x|
- + a<sub>dxdt</sub> * dt * |dxdt| ) </em></span> by decreasesing the step size. Note,
- that the stepsize is also increased if the error gets too small compared
- to the rhs of the above relation. Now we have everything needed to integrate
- the harmonic oscillator using an adaptive step size method. Similar to
- the case with constant step size above, there exists a <code class="computeroutput"><span class="identifier">integrate_adaptive</span></code>
- function with a similar parameter structure, but it requires the controlled
- stepper create by <code class="computeroutput"><span class="identifier">make_controlled_stepper_standard</span></code>.
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">controlled_error_stepper</span><span class="special">&lt;</span> <span class="identifier">error_stepper_type</span> <span class="special">&gt;</span> <span class="identifier">controlled_stepper_type</span><span class="special">;</span>
-<span class="identifier">controlled_stepper_type</span> <span class="identifier">controlled_stepper</span><span class="special">;</span>
-<span class="identifier">integrate_adaptive</span><span class="special">(</span> <span class="identifier">controlled_stepper</span> <span class="special">,</span> <span class="identifier">harmonic_oscillator</span> <span class="special">,</span> <span class="identifier">x</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">);</span>
-</pre>
-<p>
- </p>
-<p>
- As above, this integrates the system defined by <code class="computeroutput"><span class="identifier">harmonic_oscillator</span></code>
- using an adaptive step size method based on the rk5_ck scheme from <span class="emphasis"><em>t=0</em></span>
- to <span class="emphasis"><em>10</em></span> with an initial step size of <span class="emphasis"><em>dt=0.01</em></span>
- (will be adjusted) and the initial condition given in x. The result, [x(t=10)'],
- will also be stored in x (in-place).
- </p>
-</div>
-<p>
- Some details
- </p>
-<p>
- Observers
- </p>
-<p>
- Default construction
- </p>
-<p>
- The full cpp file for this example can be found here: ../../examples/harmonic_oscillator.cpp
- </p>
-</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
@@ -546,7 +47,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/solar_system.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="getting_started/short_example.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="tutorial/harmonic_oscillator.html"><img src="../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/index.html
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/index.html (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/html/index.html 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -5,12 +5,12 @@
 <link rel="stylesheet" href="boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 <link rel="home" href="index.html" title="Chapter&#160;1.&#160;boost.sandbox.numeric.odeint">
-<link rel="next" href="boost_sandbox_numeric_odeint/tutorial.html" title="Tutorial">
+<link rel="next" href="boost_sandbox_numeric_odeint/getting_started.html" title="Getting started">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_sandbox_numeric_odeint/tutorial.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_sandbox_numeric_odeint/getting_started.html"><img src="images/next.png" alt="Next"></a></div>
 <div class="chapter">
 <div class="titlepage"><div>
 <div><h2 class="title">
@@ -23,7 +23,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright &#169; 2009 -2011 Karsten Ahnert and Mario Mulansky</p></div>
 <div><div class="legalnotice">
-<a name="id563828"></a><p>
+<a name="id563836"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -32,17 +32,17 @@
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="section">Getting started</span></dt>
+<dt><span class="section">Getting started</span></dt>
 <dd><dl>
-<dt><span class="section">Overview</span></dt>
-<dt><span class="section"><a href="index.html#boost_sandbox_numeric_odeint.getting_started.usage__compilation__headers">Usage,
+<dt><span class="section">Overview</span></dt>
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/getting_started/usage__compilation__headers.html">Usage,
       Compilation, Headers</a></span></dt>
-<dt><span class="section"><a href="index.html#boost_sandbox_numeric_odeint.getting_started.short_example">Short
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/getting_started/short_example.html">Short
       Example</a></span></dt>
 </dl></dd>
 <dt><span class="section">Tutorial</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/tutorial.html#boost_sandbox_numeric_odeint.tutorial.harmonic_oscillator">Harmonic
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/tutorial/harmonic_oscillator.html">Harmonic
       oscillator</a></span></dt>
 <dt><span class="section"><a href="boost_sandbox_numeric_odeint/tutorial/solar_system.html">Solar
       system</a></span></dt>
@@ -60,7 +60,7 @@
 </dl></dd>
 <dt><span class="section">Extend odeint</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/extend_odeint.html#boost_sandbox_numeric_odeint.extend_odeint.write_own_steppers">Write
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/extend_odeint/write_own_steppers.html">Write
       own steppers</a></span></dt>
 <dt><span class="section"><a href="boost_sandbox_numeric_odeint/extend_odeint/adapt_your_own_containers.html">Adapt
       your own containers</a></span></dt>
@@ -69,554 +69,48 @@
 </dl></dd>
 <dt><span class="section">Concepts</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts.html#boost_sandbox_numeric_odeint.concepts.basic_stepper">Basic
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/concept_stepper.html">Concept
       stepper</a></span></dt>
 <dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/error_stepper.html">Error
       stepper</a></span></dt>
 <dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/controlled_stepper.html">Controlled
       stepper</a></span></dt>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/dense_ouput_stepper.html">Dense
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/dense_output_stepper.html">Dense
+ output stepper</a></span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Old Concepts</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_concepts/basic_stepper.html">Basic
+ stepper</a></span></dt>
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_concepts/error_stepper.html">Error
+ stepper</a></span></dt>
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_concepts/controlled_stepper.html">Controlled
+ stepper</a></span></dt>
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_concepts/dense_ouput_stepper.html">Dense
       ouput stepper</a></span></dt>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/concepts/size_adjusting_stepper.html">Size
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_concepts/size_adjusting_stepper.html">Size
       adjusting stepper</a></span></dt>
-<dt><span class="section">CompositeStepper</span></dt>
+<dt><span class="section">CompositeStepper</span></dt>
 </dl></dd>
-<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Old Reference</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/reference.html#boost_sandbox_numeric_odeint.reference.stepper_classes">Stepper
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_reference/stepper_classes.html">Stepper
       classes</a></span></dt>
-<dt><span class="section"><a href="boost_sandbox_numeric_odeint/reference/integration_functions.html">Integration
+<dt><span class="section"><a href="boost_sandbox_numeric_odeint/old_reference/integration_functions.html">Integration
       functions</a></span></dt>
-<dt><span class="section">Algebras</span></dt>
-<dt><span class="section">Operations</span></dt>
-<dt><span class="section">Resizing</span></dt>
+<dt><span class="section">Algebras</span></dt>
+<dt><span class="section">Operations</span></dt>
+<dt><span class="section">Resizing</span></dt>
 </dl></dd>
 </dl>
 </div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_sandbox_numeric_odeint.getting_started"></a><a class="link" href="index.html#boost_sandbox_numeric_odeint.getting_started" title="Getting started">Getting started</a>
-</h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">Overview</span></dt>
-<dt><span class="section"><a href="index.html#boost_sandbox_numeric_odeint.getting_started.usage__compilation__headers">Usage,
- Compilation, Headers</a></span></dt>
-<dt><span class="section"><a href="index.html#boost_sandbox_numeric_odeint.getting_started.short_example">Short
- Example</a></span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.getting_started.overview"></a><a class="link" href="index.html#boost_sandbox_numeric_odeint.getting_started.overview" title="Overview">Overview</a>
-</h3></div></div></div>
-<div class="caution"><table border="0" summary="Caution">
-<tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="images/caution.png"></td>
-<th align="left">Caution</th>
-</tr>
-<tr><td align="left" valign="top"><p>
- Boost.Odeint is not an official boost library!
- </p></td></tr>
-</table></div>
-<p>
- Odeint is a library for solving initial value problems (IVP) of ordinary
- differential equations. Mathematically, these problems are formulated as
- follows: <span class="emphasis"><em>x'(t) = f(x,t)</em></span>, <span class="emphasis"><em>x(0) = x0</em></span>.
- <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>f</em></span> can be vectors and the
- solution is some function <span class="emphasis"><em>x(t)</em></span> fullfilling both equations
- above. In the following we will refer to <span class="emphasis"><em>x'(t)</em></span> also
- <code class="computeroutput"><span class="identifier">dxdt</span></code> which is also our notation
- for the derivative in the source code.
- </p>
-<p>
- Numerical approximations for the solution <span class="emphasis"><em>x(t)</em></span> are calculated
- iteratively. The easiest algorithm is the Euler-Scheme, where starting at
- <span class="emphasis"><em>x(0)</em></span> one finds <span class="emphasis"><em>x(dt) = x(0) + dt f(x(0),0)</em></span>.
- Now one can use <span class="emphasis"><em>x(dt)</em></span> and obtain <span class="emphasis"><em>x(2dt)</em></span>
- in a similar way and so on. The Euler method is of order 1, that means the
- error at each step is <span class="emphasis"><em>~ dt<sup>2</sup></em></span>. This is, of course, not
- very satisfying, which is why the Euler method is merely used for real life
- problems and serves just as illustrative example. In odeint, the following
- algorithms are implemented:
- </p>
-<div class="table">
-<a name="id533122"></a><p class="title"><b>Table&#160;1.1.&#160;Stepper Algorithms</b></p>
-<div class="table-contents"><table class="table" summary="Stepper Algorithms">
-<colgroup>
-<col>
-<col>
-<col>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Method
- </p>
- </th>
-<th>
- <p>
- Class
- </p>
- </th>
-<th>
- <p>
- Order
- </p>
- </th>
-<th>
- <p>
- Error Estimation
- </p>
- </th>
-<th>
- <p>
- Dense Output
- </p>
- </th>
-<th>
- <p>
- Remarks
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- Explicit Euler
- </p>
- </td>
-<td>
- <p>
- explicit_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Very simple, only for demonstrating purposes
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Runge-Kutta 4
- </p>
- </td>
-<td>
- <p>
- explicit_rkrk4
- </p>
- </td>
-<td>
- <p>
- 4
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Good default method
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Runge-Kutta Cash-Karp
- </p>
- </td>
-<td>
- <p>
- explicit_error_rk54_ck
- </p>
- </td>
-<td>
- <p>
- 5
- </p>
- </td>
-<td>
- <p>
- Yes (Order 4)
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- ...
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Dormand-Prince 5
- </p>
- </td>
-<td>
- <p>
- explicit_error_dopri5
- </p>
- </td>
-<td>
- <p>
- 5
- </p>
- </td>
-<td>
- <p>
- Yes (Order 4)
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- ...
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Implicit Euler
- </p>
- </td>
-<td>
- <p>
- implicit_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Needs the Jacobian
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Rosenbrock 4
- </p>
- </td>
-<td>
- <p>
- rosenbrock4
- </p>
- </td>
-<td>
- <p>
- 4
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Yes
- </p>
- </td>
-<td>
- <p>
- Good for stiff systems
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- Symplectic Euler
- </p>
- </td>
-<td>
- <p>
- symplectic_euler
- </p>
- </td>
-<td>
- <p>
- 1
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- No
- </p>
- </td>
-<td>
- <p>
- Symplectic solver for separable Hamiltonian system
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<br class="table-break"><p>
- Ordinary differential equations occur nearly everywhere in natural sciences.
- For example, the whole Newtonian mechanics are described by second order
- differential equations. Be sure, you will find them in every discipline.
- They also occur if partial differential equations (PDEs) are discretized
- in one coordinate. Then, a system of coupled ordinary differential occurs,
- sometimes also refered as lattices ODEs.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.getting_started.usage__compilation__headers"></a><a class="link" href="index.html#boost_sandbox_numeric_odeint.getting_started.usage__compilation__headers" title="Usage, Compilation, Headers">Usage,
- Compilation, Headers</a>
-</h3></div></div></div>
-<p>
- Odeint is completely header-only, meaning that you do not link against any
- library. It can be include by
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">odeint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
-<p>
- which includes all headers in the library. All functions and classes from
- odeint live in the namespace
-</p>
-<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">odeint</span><span class="special">;</span>
-</pre>
-<p>
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_sandbox_numeric_odeint.getting_started.short_example"></a><a class="link" href="index.html#boost_sandbox_numeric_odeint.getting_started.short_example" title="Short Example">Short
- Example</a>
-</h3></div></div></div>
-<p>
- Image, you want to numerically integrate a harmonic oscillator with friction.
- The equations of motion are given by <span class="emphasis"><em>x'' = -x + gamma x'</em></span>.
- This can be transformed to a system of two coupled first-order differential
- equations with new variables <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>p=x'</em></span>.
- To apply numerical integration one first has to design the right hand side
- of the equation <span class="emphasis"><em>w' = f(w)</em></span> where in this case <span class="emphasis"><em>w
- = (x,p)</em></span>:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="comment">/* The type of container used to hold the state vector */</span>
-<span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
-
-<span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">gam</span> <span class="special">=</span> <span class="number">0.15</span><span class="special">;</span>
-
-<span class="comment">/* The rhs of x' = f(x) */</span>
-<span class="keyword">void</span> <span class="identifier">harmonic_oscillator</span><span class="special">(</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">)</span>
-<span class="special">{</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">x</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">-</span> <span class="identifier">gam</span><span class="special">*</span><span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
-<span class="special">}</span>
-</pre>
-<p>
- </p>
-<p>
- Here we chose <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span></code>
- as the state type, but others are also possible, for example <code class="computeroutput"><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span><span class="number">2</span><span class="special">&gt;</span></code>.
- Odeint is designed in such a way that you can easily use your own state types.
- Next, we define the ODE which is in this case a simple function. The parameter
- signature of this function is crucial: the integration methods will always
- call them in the form <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">dxdt</span><span class="special">,</span> <span class="identifier">t</span><span class="special">)</span></code>.
- So, even if there is no explicit time dependence, one has to define <code class="computeroutput"><span class="identifier">t</span></code> as a function parameter.
- </p>
-<p>
- Now, we have to define the initial state from which the integration should
- start:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="identifier">state_type</span> <span class="identifier">x</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
-<span class="identifier">x</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="comment">// start at x=1.0, p=0.0
-</span><span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
-</pre>
-<p>
- </p>
-<p>
- For the integration itself we'll use the <code class="computeroutput">integrate</code>
- function, which is a convenient way to get quick results. It is based on
- the error-controlled <code class="computeroutput">runge_kutta_rk5_ck</code>
- stepper (5th order) and uses adaptive stepsize.
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="identifier">size_t</span> <span class="identifier">steps</span> <span class="special">=</span> <span class="identifier">integrate</span><span class="special">(</span> <span class="identifier">harmonic_oscillator</span> <span class="special">,</span>
- <span class="identifier">x</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">0.1</span> <span class="special">);</span>
-</pre>
-<p>
- </p>
-<p>
- The integrate function expects as parameters the rhs of the ode as defined
- above, the initial state <code class="computeroutput"><span class="identifier">x</span></code>,
- the start-and end-time of the integration as well as the initial time step.
- Note, that <code class="computeroutput">integrate</code>
- uses an adaptive stepsize during the integration steps so the time points
- will not be equally spaced. The integration returns the number of steps that
- were applied.
- </p>
-<p>
- It is, of course, also possible to implement the ode system as a class. The
- rhs must then be implemented as a functor having defined the ()-operator:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="comment">/* The rhs of x' = f(x) defined as a class */</span>
-<span class="keyword">class</span> <span class="identifier">harm_osc</span> <span class="special">{</span>
-
- <span class="keyword">double</span> <span class="identifier">m_gam</span><span class="special">;</span>
-
-<span class="keyword">public</span><span class="special">:</span>
- <span class="identifier">harm_osc</span><span class="special">(</span> <span class="keyword">double</span> <span class="identifier">gam</span> <span class="special">)</span> <span class="special">:</span> <span class="identifier">m_gam</span><span class="special">(</span><span class="identifier">gam</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
-
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()</span> <span class="special">(</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">)</span>
- <span class="special">{</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="identifier">dxdt</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="special">-</span><span class="identifier">x</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">-</span> <span class="identifier">m_gam</span><span class="special">*</span><span class="identifier">x</span><span class="special">[</span><span class="number">1</span><span class="special">];</span>
- <span class="special">}</span>
-<span class="special">};</span>
-</pre>
-<p>
- </p>
-<p>
- which can be used via
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="identifier">harm_osc</span> <span class="identifier">ho</span><span class="special">(</span><span class="number">0.15</span><span class="special">);</span>
-<span class="identifier">steps</span> <span class="special">=</span> <span class="identifier">integrate</span><span class="special">(</span> <span class="identifier">ho</span> <span class="special">,</span>
- <span class="identifier">x</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">0.1</span> <span class="special">);</span>
-</pre>
-<p>
- </p>
-<p>
- You surely have already noticed that during the integration a lot of steps
- have been done. You might wonder if you could access them do observe the
- solution during the iteration. Yes, you can do that. All you have to do is
- to provide a reasonable observer. An example is
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">push_back_state_and_time</span>
-<span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;&amp;</span> <span class="identifier">m_states</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;&amp;</span> <span class="identifier">m_times</span><span class="special">;</span>
-
- <span class="identifier">push_back_state_and_time</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="identifier">states</span> <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="identifier">times</span> <span class="special">)</span>
- <span class="special">:</span> <span class="identifier">m_states</span><span class="special">(</span> <span class="identifier">states</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">m_times</span><span class="special">(</span> <span class="identifier">times</span> <span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
-
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&amp;</span><span class="identifier">x</span> <span class="special">,</span> <span class="keyword">double</span> <span class="identifier">t</span> <span class="special">)</span>
- <span class="special">{</span>
- <span class="identifier">m_states</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="identifier">x</span> <span class="special">);</span>
- <span class="identifier">m_times</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span> <span class="identifier">t</span> <span class="special">);</span>
- <span class="special">}</span>
-<span class="special">};</span>
-</pre>
-<p>
- </p>
-<p>
- which stores the intermediate steps in a container. Now, you only have to
- pass this container to the integration function:
- </p>
-<p>
-
-</p>
-<pre class="programlisting"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">state_type</span><span class="special">&gt;</span> <span class="identifier">x_vec</span><span class="special">;</span>
-<span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">times</span><span class="special">;</span>
-
-<span class="identifier">steps</span> <span class="special">=</span> <span class="identifier">integrate</span><span class="special">(</span> <span class="identifier">harmonic_oscillator</span> <span class="special">,</span>
- <span class="identifier">x</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">0.1</span> <span class="special">,</span>
- <span class="identifier">push_back_state_and_time</span><span class="special">(</span> <span class="identifier">x_vec</span> <span class="special">,</span> <span class="identifier">times</span> <span class="special">)</span> <span class="special">);</span>
-
-<span class="comment">/* output */</span>
-<span class="keyword">for</span><span class="special">(</span> <span class="identifier">size_t</span> <span class="identifier">i</span><span class="special">=</span><span class="number">0</span><span class="special">;</span> <span class="identifier">i</span><span class="special">&lt;=</span><span class="identifier">steps</span><span class="special">;</span> <span class="identifier">i</span><span class="special">++</span> <span class="special">)</span>
-<span class="special">{</span>
- <span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">times</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">'\t'</span> <span class="special">&lt;&lt;</span> <span class="identifier">x_vec</span><span class="special">[</span><span class="identifier">i</span><span class="special">][</span><span class="number">0</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">'\t'</span> <span class="special">&lt;&lt;</span> <span class="identifier">x_vec</span><span class="special">[</span><span class="identifier">i</span><span class="special">][</span><span class="number">1</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">'\n'</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<p>
- </p>
-<p>
- That is all. Of course, you can use functional libraries like Boost.Lambda
- or Boost.Phoenix
- to ease the creation of observer functions.
- </p>
-<p>
- The full cpp file for this example can be found here: ../../examples/harmonic_oscillator.cpp
- </p>
-</div>
-</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: May 13, 2011 at 11:19:54 GMT</small></p></td>
+<td align="left"><p><small>Last revised: May 14, 2011 at 16:09:52 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="boost_sandbox_numeric_odeint/tutorial.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="boost_sandbox_numeric_odeint/getting_started.html"><img src="images/next.png" alt="Next"></a></div>
 </body>
 </html>

Modified: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/odeint.qbk
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/odeint.qbk (original)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/odeint.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -52,5 +52,9 @@
 
 [include concepts.qbk]
 
-[include reference.qbk]
+[xinclude reference.xml]
+
+[include concepts_old.qbk]
+
+[include reference_old.qbk]
 

Deleted: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.qbk
==============================================================================
--- sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
+++ (empty file)
@@ -1,31 +0,0 @@
-[section Reference]
-
-[include reference_steppers.qbk]
-
-[include reference_integrate_functions.qbk]
-
-[section Algebras]
-
-[endsect]
-
-[section Operations]
-
-[endsect]
-
-[section Resizing]
-
-[endsect]
-
-
-
-
-
-
-
-
-
-
-
-
-
-[endsect]

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.xml
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference.xml 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<library-reference xmlns:xi="http://www.w3.org/2001/XInclude">
+
+</library-reference>

Added: sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference_old.qbk
==============================================================================
--- (empty file)
+++ sandbox/odeint/branches/karsten/libs/numeric/odeint/doc/reference_old.qbk 2011-05-14 11:13:39 EDT (Sat, 14 May 2011)
@@ -0,0 +1,31 @@
+[section Old Reference]
+
+[include reference_steppers.qbk]
+
+[include reference_integrate_functions.qbk]
+
+[section Algebras]
+
+[endsect]
+
+[section Operations]
+
+[endsect]
+
+[section Resizing]
+
+[endsect]
+
+
+
+
+
+
+
+
+
+
+
+
+
+[endsect]


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk