rewritten doc: details / state_types, algebras, operations

This commit is contained in:
Mario Mulansky 2012-04-04 20:15:35 +02:00
parent fc3c7a682e
commit 9f684ab983
26 changed files with 990 additions and 865 deletions

View File

@ -25,9 +25,9 @@
to be used within <a class="link" href="../odeint_in_detail/integrate_functions.html" title="Integrate functions">integrate
functions</a>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.description"></a></span><a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.description-heading"></a>
<a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.description">Description</a>
</h5>
<p>
A controlled stepper following this Controlled Stepper concept provides the
@ -36,9 +36,9 @@
with a given step-size <span class="emphasis"><em>dt</em></span>. Depending on an error estimate
of the solution the step might be rejected and a smaller step-size is suggested.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.notation"></a></span><a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.notation-heading"></a>
<a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -77,9 +77,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.valid_expressions"></a></span><a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.valid_expressions-heading"></a>
<a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">
@ -178,9 +178,9 @@
</tr>
</tbody>
</table></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.h3"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.models"></a></span><a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.models">Models</a>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.models"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.controlled_stepper.models-heading"></a>
<a class="link" href="controlled_stepper.html#boost_sandbox_numeric_odeint.concepts.controlled_stepper.models">Models</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">

View File

@ -25,9 +25,9 @@
to be used within <a class="link" href="../odeint_in_detail/integrate_functions.html" title="Integrate functions">integrate
functions</a>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.description"></a></span><a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.description-heading"></a>
<a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.description">Description</a>
</h5>
<p>
A dense ouput stepper following this Dense Output Stepper concept provides
@ -37,9 +37,9 @@
to calculate the state <span class="emphasis"><em>x(t')</em></span> at any point <span class="emphasis"><em>t
&lt;= t' &lt;= t+dt</em></span>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.associated_types"></a></span><a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.associated_types">Associated
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.associated_types"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.associated_types-heading"></a>
<a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.associated_types">Associated
types</a>
</h5>
<div class="variablelist">
@ -55,9 +55,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.notation"></a></span><a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.notation-heading"></a>
<a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -92,9 +92,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.h3"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.valid_expressions"></a></span><a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.valid_expressions-heading"></a>
<a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">
@ -284,9 +284,9 @@
</tr>
</tbody>
</table></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.h4"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.models"></a></span><a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.models">Models</a>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.models"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.dense_output_stepper.models-heading"></a>
<a class="link" href="dense_output_stepper.html#boost_sandbox_numeric_odeint.concepts.dense_output_stepper.models">Models</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">

View File

@ -24,9 +24,9 @@
This concepts specifies the interface an error stepper has to fulfill to
be used within a ControlledErrorStepper.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.error_stepper.description"></a></span><a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.description-heading"></a>
<a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.description">Description</a>
</h5>
<p>
An error stepper following this Error Stepper concept is capable of doing
@ -40,9 +40,9 @@
Symplectic System</a> or <a class="link" href="implicit_system.html" title="Implicit System">Implicit
System</a>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.error_stepper.notation"></a></span><a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.notation-heading"></a>
<a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -90,9 +90,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.error_stepper.valid_expressions"></a></span><a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.valid_expressions-heading"></a>
<a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">
@ -187,9 +187,9 @@
</tr>
</tbody>
</table></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.h3"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.error_stepper.models"></a></span><a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.models">Models</a>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.models"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.error_stepper.models-heading"></a>
<a class="link" href="error_stepper.html#boost_sandbox_numeric_odeint.concepts.error_stepper.models">Models</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">

View File

@ -20,9 +20,9 @@
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system"></a><a class="link" href="implicit_system.html" title="Implicit System">Implicit
System</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.implicit_system.description"></a></span><a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.description-heading"></a>
<a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.description">Description</a>
</h5>
<p>
This concept describes how to define a ODE that can be solved by an implicit
@ -33,9 +33,9 @@
therefore, the <span class="emphasis"><em>state_type</em></span> implicit routines is <span class="emphasis"><em>ublas::vector</em></span>
and the matrix is defined as <span class="emphasis"><em>ublas::matrix</em></span>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.implicit_system.notation"></a></span><a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.notation-heading"></a>
<a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -70,9 +70,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.implicit_system.valid_expressions"></a></span><a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.implicit_system.valid_expressions-heading"></a>
<a class="link" href="implicit_system.html#boost_sandbox_numeric_odeint.concepts.implicit_system.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -19,9 +19,9 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_sandbox_numeric_odeint.concepts.observer"></a><a class="link" href="observer.html" title="Observer">Observer</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.observer.description"></a></span><a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.observer.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.description-heading"></a>
<a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.description">Description</a>
</h5>
<p>
The Observer concept is used in <code class="computeroutput"><span class="identifier">integrate</span></code>
@ -32,9 +32,9 @@
or at user defined time points depending on which <code class="computeroutput"><span class="identifier">integrate</span></code>
function is used.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.observer.notation"></a></span><a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.observer.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.notation-heading"></a>
<a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -65,9 +65,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.observer.valid_expressions"></a></span><a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.observer.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.observer.valid_expressions-heading"></a>
<a class="link" href="observer.html#boost_sandbox_numeric_odeint.concepts.observer.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -20,9 +20,9 @@
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system"></a><a class="link" href="simple_symplectic_system.html" title="Simple Symplectic System">Simple
Symplectic System</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.description"></a></span><a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.description-heading"></a>
<a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.description">Description</a>
</h5>
<p>
In most Hamiltonian systems the kinetic term is a quadratic term in the momentum
@ -44,9 +44,9 @@
equation for <span class="emphasis"><em>p'</em></span> has to be provided to the symplectic
stepper. We call this concept <span class="emphasis"><em>Simple_Symplectic_System</em></span>
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.notation"></a></span><a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.notation-heading"></a>
<a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -77,9 +77,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.valid_expressions"></a></span><a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.valid_expressions-heading"></a>
<a class="link" href="simple_symplectic_system.html#boost_sandbox_numeric_odeint.concepts.simple_symplectic_system.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -40,9 +40,9 @@
and no algebra/operations are used.
</p></td></tr>
</table></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.description"></a></span><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.description-heading"></a>
<a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.description">Description</a>
</h5>
<p>
The <code class="computeroutput"><span class="identifier">State</span></code>, <code class="computeroutput"><span class="identifier">Algebra</span></code> and <code class="computeroutput"><span class="identifier">Operations</span></code>
@ -82,9 +82,9 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations"></a><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations" title="Operations">Operations</a>
</h4></div></div></div>
<h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.notation"></a></span><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.notation"></a><h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.notation-heading"></a>
<a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.notation">Notation</a>
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
@ -142,9 +142,9 @@
</p></dd>
</dl>
</div>
<h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.valid_expressions"></a></span><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.valid_expressions"></a><h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.valid_expressions-heading"></a>
<a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.operations.valid_expressions">Valid
Expressions</a>
</h6>
<div class="informaltable"><table class="table">
@ -414,9 +414,9 @@
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra"></a><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra" title="Algebra">Algebra</a>
</h4></div></div></div>
<h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.notation"></a></span><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.notation"></a><h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.notation-heading"></a>
<a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.notation">Notation</a>
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
@ -452,9 +452,9 @@
</p></dd>
</dl>
</div>
<h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.valid_expressions"></a></span><a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.valid_expressions"></a><h6>
<a name="boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.valid_expressions-heading"></a>
<a class="link" href="state_algebra_operations.html#boost_sandbox_numeric_odeint.concepts.state_algebra_operations.algebra.valid_expressions">Valid
Expressions</a>
</h6>
<div class="informaltable"><table class="table">

View File

@ -20,9 +20,9 @@
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper"></a><a class="link" href="state_wrapper.html" title="State Wrapper">State
Wrapper</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.description"></a></span><a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.description-heading"></a>
<a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.description">Description</a>
</h5>
<p>
The <code class="computeroutput"><span class="identifier">State</span> <span class="identifier">Wrapper</span></code>
@ -30,9 +30,9 @@
intermediate results within the stepper's <code class="computeroutput"><span class="identifier">do_step</span></code>
methods.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.notation"></a></span><a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.notation-heading"></a>
<a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -56,9 +56,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.valid_expressions"></a></span><a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.state_wrapper.valid_expressions-heading"></a>
<a class="link" href="state_wrapper.html#boost_sandbox_numeric_odeint.concepts.state_wrapper.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -24,9 +24,9 @@
be used within the <a class="link" href="../odeint_in_detail/integrate_functions.html" title="Integrate functions">integrate
functions</a>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.stepper.description"></a></span><a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.description-heading"></a>
<a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.description">Description</a>
</h5>
<p>
The basic stepper concept. A basic stepper following this Stepper concept
@ -40,9 +40,9 @@
Symplectic System</a> or <a class="link" href="implicit_system.html" title="Implicit System">Implicit
System</a>. Note that all error steppers are also basic steppers.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.stepper.refinement_of"></a></span><a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.refinement_of">Refinement
<a name="boost_sandbox_numeric_odeint.concepts.stepper.refinement_of"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.refinement_of-heading"></a>
<a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.refinement_of">Refinement
of</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
@ -53,9 +53,9 @@
CopyConstructable
</li>
</ul></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.stepper.notation"></a></span><a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.notation-heading"></a>
<a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -95,9 +95,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.h3"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.stepper.valid_expressions"></a></span><a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.stepper.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.valid_expressions-heading"></a>
<a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.valid_expressions">Valid
Expressions</a>
</h5>
<div class="informaltable"><table class="table">
@ -187,9 +187,9 @@
</tr>
</tbody>
</table></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.h4"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.stepper.models"></a></span><a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.models">Models</a>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.models"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.stepper.models-heading"></a>
<a class="link" href="stepper.html#boost_sandbox_numeric_odeint.concepts.stepper.models">Models</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">

View File

@ -20,9 +20,9 @@
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system"></a><a class="link" href="symplectic_system.html" title="Symplectic System">Symplectic
System</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.description"></a></span><a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.description-heading"></a>
<a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.description">Description</a>
</h5>
<p>
This concept describes how to define a symplectic system written with generalized
@ -58,9 +58,9 @@
std::pair of functions or a functors. Symplectic systems are used in symplectic
steppers like <code class="computeroutput"><span class="identifier">symplectic_rkn_sb3a_mclachlan</span></code>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.notation"></a></span><a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.notation-heading"></a>
<a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -107,9 +107,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.valid_expressions"></a></span><a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.symplectic_system.valid_expressions-heading"></a>
<a class="link" href="symplectic_system.html#boost_sandbox_numeric_odeint.concepts.symplectic_system.valid_expressions">Valid
expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -19,9 +19,9 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_sandbox_numeric_odeint.concepts.system"></a><a class="link" href="system.html" title="System">System</a>
</h3></div></div></div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.system.description"></a></span><a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.description">Description</a>
<a name="boost_sandbox_numeric_odeint.concepts.system.description"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.description-heading"></a>
<a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.description">Description</a>
</h5>
<p>
The System concept models the algorithmic implementation of the rhs. of the
@ -34,9 +34,9 @@
System</a> and <a class="link" href="implicit_system.html" title="Implicit System">Implicit
System</a>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.system.notation"></a></span><a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.notation">Notation</a>
<a name="boost_sandbox_numeric_odeint.concepts.system.notation"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.notation-heading"></a>
<a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.notation">Notation</a>
</h5>
<div class="variablelist">
<p class="title"><b></b></p>
@ -75,9 +75,9 @@
</p></dd>
</dl>
</div>
<h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.concepts.system.valid_expressions"></a></span><a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.valid_expressions">Valid
<a name="boost_sandbox_numeric_odeint.concepts.system.valid_expressions"></a><h5>
<a name="boost_sandbox_numeric_odeint.concepts.system.valid_expressions-heading"></a>
<a class="link" href="system.html#boost_sandbox_numeric_odeint.concepts.system.valid_expressions">Valid
expressions</a>
</h5>
<div class="informaltable"><table class="table">

View File

@ -30,6 +30,7 @@
= (p,-q+&#947; 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>
@ -59,6 +60,7 @@
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>
@ -73,6 +75,7 @@
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>
@ -93,6 +96,7 @@
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>
@ -115,6 +119,7 @@
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>
@ -129,6 +134,7 @@
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>
@ -152,6 +158,7 @@
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>

View File

@ -25,12 +25,13 @@
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
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>

View File

@ -35,9 +35,9 @@
Output Stepper</a>. Depending on the abilities of the stepper, the integrate
functions make use of step-size control or dense output.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.h0"></a>
<span><a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.equidistant_observer_calls"></a></span><a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.equidistant_observer_calls">Equidistant
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.equidistant_observer_calls"></a><h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.equidistant_observer_calls-heading"></a>
<a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.equidistant_observer_calls">Equidistant
observer calls</a>
</h5>
<p>
@ -109,9 +109,9 @@
dt</em></span>.
</li>
</ul></div>
<h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.h1"></a>
<span><a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_each_step"></a></span><a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_each_step">Observer
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_each_step"></a><h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_each_step-heading"></a>
<a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_each_step">Observer
calls at each step</a>
</h5>
<p>
@ -179,9 +179,9 @@
Stepper</a> above. No dense output is used.
</li>
</ul></div>
<h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.h2"></a>
<span><a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_given_time_points"></a></span><a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_given_time_points">Observer
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_given_time_points"></a><h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_given_time_points-heading"></a>
<a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.observer_calls_at_given_time_points">Observer
calls at given time points</a>
</h5>
<p>
@ -254,9 +254,9 @@
<span class="emphasis"><em>x(t)</em></span> at the time points from the sequence.
</li>
</ul></div>
<h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.h3"></a>
<span><a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.integrate_a_given_number_of_steps"></a></span><a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.integrate_a_given_number_of_steps">Integrate
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.integrate_a_given_number_of_steps"></a><h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.integrate_a_given_number_of_steps-heading"></a>
<a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.integrate_a_given_number_of_steps">Integrate
a given number of steps</a>
</h5>
<p>
@ -311,9 +311,9 @@
This function returns the end time <code class="computeroutput"><span class="identifier">t0</span>
<span class="special">+</span> <span class="identifier">n</span><span class="special">*</span><span class="identifier">dt</span></code>.
</p>
<h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.h4"></a>
<span><a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.convenience_integrate_function"></a></span><a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.convenience_integrate_function">Convenience
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.convenience_integrate_function"></a><h5>
<a name="boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.convenience_integrate_function-heading"></a>
<a class="link" href="integrate_functions.html#boost_sandbox_numeric_odeint.odeint_in_detail.integrate_functions.convenience_integrate_function">Convenience
integrate function</a>
</h5>
<p>

View File

@ -132,6 +132,7 @@
is the Runge Kutta stepper of fourth order:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">runge_kutta4</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">rk</span><span class="special">;</span>
<span class="identifier">rk</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">sys1</span> <span class="special">,</span> <span class="identifier">inout</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="comment">// In-place transformation of inout</span>
@ -176,6 +177,7 @@
how the FSAL steppers can be used is
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">rk</span><span class="special">;</span>
<span class="identifier">rk</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">sys1</span> <span class="special">,</span> <span class="identifier">in</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">out</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
@ -241,6 +243,7 @@
again simple C-functions of functors. An example is the harmonic oscillator:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</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">1</span> <span class="special">&gt;</span> <span class="identifier">vector_type</span><span class="special">;</span>
@ -269,6 +272,7 @@
example for the harmonic oscillator is now:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">pair</span><span class="special">&lt;</span> <span class="identifier">vector_type</span> <span class="special">,</span> <span class="identifier">vector_type</span> <span class="special">&gt;</span> <span class="identifier">x</span><span class="special">;</span>
<span class="identifier">x</span><span class="special">.</span><span class="identifier">first</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="identifier">x</span><span class="special">.</span><span class="identifier">second</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
@ -282,6 +286,7 @@
two public method:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">harm_osc</span>
<span class="special">{</span>
@ -299,6 +304,7 @@
<p>
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">harm_osc</span> <span class="identifier">h</span><span class="special">;</span>
<span class="identifier">rkn</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span> <span class="special">&amp;</span><span class="identifier">harm_osc</span><span class="special">::</span><span class="identifier">f1</span> <span class="special">,</span> <span class="identifier">h</span> <span class="special">,</span> <span class="identifier">_1</span> <span class="special">,</span> <span class="identifier">_2</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span> <span class="special">&amp;</span><span class="identifier">harm_osc</span><span class="special">::</span><span class="identifier">f2</span> <span class="special">,</span> <span class="identifier">h</span> <span class="special">,</span> <span class="identifier">_1</span> <span class="special">,</span> <span class="identifier">_2</span> <span class="special">)</span> <span class="special">)</span> <span class="special">,</span>
@ -318,6 +324,7 @@
can be written as
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">pair</span><span class="special">&lt;</span> <span class="identifier">vector_type</span> <span class="special">,</span> <span class="identifier">vector_type</span> <span class="special">&gt;</span> <span class="identifier">x</span><span class="special">;</span>
<span class="identifier">x</span><span class="special">.</span><span class="identifier">first</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="identifier">x</span><span class="special">.</span><span class="identifier">second</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
@ -341,6 +348,7 @@
takes q and p without combining them into a pair:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">rkn</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">harm_osc_f1</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span> <span class="identifier">q</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span> <span class="identifier">p</span> <span class="special">)</span> <span class="special">)</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">rkn</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">harm_osc_f1</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">q</span> <span class="special">,</span> <span class="identifier">p</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
@ -406,6 +414,7 @@
steps is instantiated and initialized;
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">adams_bashforth_moulton</span><span class="special">&lt;</span> <span class="number">5</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">abm</span><span class="special">;</span>
<span class="identifier">abm</span><span class="special">.</span><span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">sys</span> <span class="special">,</span> <span class="identifier">inout</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
@ -423,6 +432,7 @@
state of the Adams-Bashforth-Stepper:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">abm</span><span class="special">.</span><span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">runge_kutta_fehlberg78</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;()</span> <span class="special">,</span> <span class="identifier">sys</span> <span class="special">,</span> <span class="identifier">inout</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
</pre>
@ -685,6 +695,7 @@
An example is
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">dense_output_runge_kutta</span><span class="special">&lt;</span> <span class="identifier">controlled_runge_kutta</span><span class="special">&lt;</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">dense</span><span class="special">;</span>
<span class="identifier">dense</span><span class="special">.</span><span class="identifier">initialize</span><span class="special">(</span> <span class="identifier">in</span> <span class="special">,</span> <span class="identifier">t</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
@ -710,6 +721,7 @@
exist:
</p>
<p>
</p>
<pre class="programlisting"><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">result_of</span><span class="special">::</span><span class="identifier">make_dense_output</span><span class="special">&lt;</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">dense2</span> <span class="special">=</span> <span class="identifier">make_dense_output</span><span class="special">(</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;()</span> <span class="special">);</span>
</pre>
@ -727,6 +739,7 @@
for easy use with the integrate functions:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">integrate_const</span><span class="special">(</span> <span class="identifier">make_dense_output</span><span class="special">(</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">&gt;()</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">sys</span> <span class="special">,</span> <span class="identifier">inout</span> <span class="special">,</span> <span class="identifier">t_start</span> <span class="special">,</span> <span class="identifier">t_end</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
</pre>
@ -795,6 +808,7 @@
4 internal derivatives of the solution at times <code class="computeroutput"><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">t</span><span class="special">-</span><span class="number">2d</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">t</span><span class="special">-</span><span class="number">3d</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">t</span><span class="special">-</span><span class="number">4d</span><span class="identifier">t</span><span class="special">)</span></code>.
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">adams_bashforth_moulton</span><span class="special">&lt;</span> <span class="number">4</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">&gt;</span> <span class="identifier">stepper</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">sys</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> <span class="comment">// make one step with the classical Runge-Kutta stepper and initialize the first internal state at time t-4dt</span>
@ -1932,6 +1946,7 @@
The class definition looks like
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">stochastic_euler</span>
<span class="special">{</span>
@ -1967,6 +1982,7 @@
order to simulate the stochastic process. We can now implement the <code class="computeroutput"><span class="identifier">do_step</span></code> method
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">&gt;</span> <span class="keyword">class</span> <span class="identifier">stochastic_euler</span>
<span class="special">{</span>
@ -2022,6 +2038,7 @@
part:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">static</span> <span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">std</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> <span class="identifier">state_type</span><span class="special">;</span>
@ -2056,6 +2073,7 @@
Euler stepper with the integrate functions:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">dt</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span>
<span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">1.0</span> <span class="special">}};</span>

View File

@ -27,6 +27,7 @@
stepper will be passed by value:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">rk4</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">sys</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> <span class="comment">// pass sys by value</span>
</pre>
@ -45,6 +46,7 @@
all of you system will take place:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">rk4</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span> <span class="identifier">sys</span> <span class="special">)</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> <span class="comment">// pass sys as references</span>
</pre>

View File

@ -61,6 +61,7 @@
The implementation of the Lorenz system is
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">sigma</span> <span class="special">=</span> <span class="number">10.0</span><span class="special">;</span>
<span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">R</span> <span class="special">=</span> <span class="number">28.0</span><span class="special">;</span>
@ -83,6 +84,7 @@
the perturbation could look like:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span>
<span class="keyword">const</span> <span class="identifier">size_t</span> <span class="identifier">num_of_lyap</span> <span class="special">=</span> <span class="number">3</span><span class="special">;</span>
@ -114,6 +116,7 @@
inside a functor with templatized arguments:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">lorenz</span>
<span class="special">{</span>
@ -135,7 +138,7 @@
</pre>
<p>
This works fine and <code class="computeroutput"><span class="identifier">lorenz_with_lyap</span></code>
can be used for example via
can be used for example via
</p>
<pre class="programlisting"><span class="identifier">state_type</span> <span class="identifier">x</span><span class="special">;</span>
<span class="comment">// initialize x</span>
@ -151,6 +154,7 @@
current state lies on the attractor, hence it would look like
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">state_type</span> <span class="identifier">x</span><span class="special">;</span>
<span class="comment">// initialize x</span>
@ -166,6 +170,7 @@
by pointer to the state and an appropriate length, something similar to
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">lorenz</span><span class="special">(</span> <span class="keyword">double</span><span class="special">*</span> <span class="identifier">x</span> <span class="special">,</span> <span class="keyword">double</span> <span class="special">*</span><span class="identifier">dxdt</span> <span class="special">,</span> <span class="keyword">double</span> <span class="identifier">t</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*</span> <span class="identifier">params</span> <span class="special">)</span>
<span class="special">{</span>
@ -183,6 +188,7 @@
the system has to by changed:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">lorenz</span>
<span class="special">{</span>
@ -205,6 +211,7 @@
with an suited range:
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">// perform 10000 transient steps</span>
<span class="identifier">integrate_n_steps</span><span class="special">(</span> <span class="identifier">rk4</span> <span class="special">,</span> <span class="identifier">lorenz</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">n</span> <span class="special">)</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">,</span> <span class="number">10000</span> <span class="special">);</span>
@ -235,6 +242,7 @@
</li>
</ol></div>
<p>
</p>
<pre class="programlisting"><span class="identifier">fill</span><span class="special">(</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()+</span><span class="identifier">n</span> <span class="special">,</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">);</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">num_of_lyap</span> <span class="special">;</span> <span class="special">++</span><span class="identifier">i</span> <span class="special">)</span> <span class="identifier">x</span><span class="special">[</span><span class="identifier">n</span><span class="special">+</span><span class="identifier">n</span><span class="special">*</span><span class="identifier">i</span><span class="special">+</span><span class="identifier">i</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>

View File

@ -52,6 +52,7 @@
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>
@ -78,6 +79,7 @@
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>
@ -1136,6 +1138,7 @@
<span class="special">)</span></code> function from odeint:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">runge_kutta4</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>
@ -1152,6 +1155,7 @@
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>
@ -1175,6 +1179,7 @@
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">runge_kutta_cash_karp54</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>
</pre>
@ -1187,6 +1192,7 @@
stepper exists which can be used via
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">controlled_runge_kutta</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>
@ -1213,6 +1219,7 @@
by using <code class="computeroutput"><span class="identifier">make_controlled</span></code>:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">integrate_adaptive</span><span class="special">(</span> <span class="identifier">make_controlled</span><span class="special">&lt;</span> <span class="identifier">error_stepper_type</span> <span class="special">&gt;(</span> <span class="number">1.0e-10</span> <span class="special">,</span> <span class="number">1.0e-6</span> <span class="special">)</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>
@ -1228,6 +1235,7 @@
is
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">integrate_adaptive</span><span class="special">(</span> <span class="identifier">make_controlled</span><span class="special">(</span> <span class="number">1.0e-10</span> <span class="special">,</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="identifier">error_stepper_type</span><span class="special">()</span> <span class="special">)</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>
@ -1243,6 +1251,7 @@
with all parameters is therefore
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">abs_err</span> <span class="special">=</span> <span class="number">1.0e-10</span> <span class="special">,</span> <span class="identifier">rel_err</span> <span class="special">=</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="identifier">a_x</span> <span class="special">=</span> <span class="number">1.0</span> <span class="special">,</span> <span class="identifier">a_dxdt</span> <span class="special">=</span> <span class="number">1.0</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">default_error_checker</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;(</span> <span class="identifier">abs_err</span> <span class="special">,</span> <span class="identifier">rel_err</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> <span class="special">);</span>

View File

@ -98,6 +98,7 @@
space as well as the velocity. Therefore, we use the operators from <a href="http://www.boost.org/doc/libs/release/doc/html/operators.html" target="_top">Boost.Operators</a>:
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">/*the point type */</span>
<span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">,</span> <span class="identifier">size_t</span> <span class="identifier">Dim</span> <span class="special">&gt;</span>
@ -135,6 +136,7 @@
type we use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">array</span></code>
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">// we simulate 5 planets and the sun</span>
<span class="keyword">const</span> <span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">6</span><span class="special">;</span>
@ -157,6 +159,7 @@
As system function we have to provide <span class="emphasis"><em>f(p)</em></span> and <span class="emphasis"><em>f(q)</em></span>:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">gravitational_constant</span> <span class="special">=</span> <span class="number">2.95912208286e-4</span><span class="special">;</span>
@ -176,6 +179,7 @@
<p>
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">solar_system_momentum</span>
<span class="special">{</span>
@ -217,6 +221,7 @@
apply here:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">symplectic_rkn_sb3a_mclachlan</span><span class="special">&lt;</span> <span class="identifier">container_type</span> <span class="special">&gt;</span> <span class="identifier">stepper_type</span><span class="special">;</span>
<span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">dt</span> <span class="special">=</span> <span class="number">100.0</span><span class="special">;</span>
@ -241,6 +246,7 @@
The reference wrapper is also passed, but this is not a problem at all:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">streaming_observer</span>
<span class="special">{</span>

View File

@ -63,6 +63,7 @@
code is very simple
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</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">,</span> <span class="number">1</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
@ -88,6 +89,7 @@
function. In this cast the Stuart-Landau oscillator looks like
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">eta</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">alpha</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
@ -109,6 +111,7 @@
Integration is also very easy:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="identifier">complex</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;(</span> <span class="number">1.0</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">)</span> <span class="special">}};</span>
@ -153,6 +156,7 @@
components. Here, is how this function looks like
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">container_type</span><span class="special">;</span>
@ -204,6 +208,7 @@
All this can be easily done with the following piece of code:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">64</span><span class="special">;</span>
<span class="identifier">container_type</span> <span class="identifier">q</span><span class="special">(</span> <span class="identifier">n</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">p</span><span class="special">(</span> <span class="identifier">n</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">);</span>
@ -230,6 +235,7 @@
The observer is more or less trivial
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">streaming_observer</span>
<span class="special">{</span>
@ -298,6 +304,7 @@
also need to store the individual frequencies of each oscillator.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">container_type</span><span class="special">;</span>
@ -360,6 +367,7 @@
and we record <span class="emphasis"><em>Z</em></span> for different values of <span class="emphasis"><em>&#949;</em></span>.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">statistics_observer</span>
<span class="special">{</span>
@ -392,6 +400,7 @@
2</em></span>.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">size_t</span> <span class="identifier">n</span> <span class="special">=</span> <span class="number">16384</span><span class="special">;</span>
<span class="keyword">const</span> <span class="keyword">double</span> <span class="identifier">dt</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span>
@ -449,6 +458,7 @@
all quantities
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">// first increase fusion macro variables</span>
<span class="preprocessor">#define</span> <span class="identifier">BOOST_FUSION_INVOKE_MAX_ARITY</span> <span class="number">15</span>
@ -490,6 +500,7 @@
equivalent to the example in the first section of this tutorial
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">oscillator</span>
<span class="special">{</span>
@ -513,6 +524,7 @@
Furthermore, the basic calculations are now performed by the <code class="computeroutput"><span class="identifier">fusion_algebra</span></code> which must also be given.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">,</span> <span class="keyword">double</span> <span class="special">,</span> <span class="identifier">deriv_type</span> <span class="special">,</span> <span class="identifier">time_type</span> <span class="special">,</span> <span class="identifier">fusion_algebra</span> <span class="special">&gt;</span> <span class="identifier">stepper_type</span><span class="special">;</span>
@ -527,6 +539,7 @@
the observer is defined a bit different
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">streaming_observer</span>
<span class="special">{</span>
@ -566,7 +579,7 @@
Using <a href="http://www.boost.org/doc/libs/release/libs/units/index.html" target="_top">Boost.Units</a>
works nicely but compilation can be very time and memory consuming. For
example the unit test for <a href="http://www.boost.org/doc/libs/release/libs/units/index.html" target="_top">Boost.Units</a>
take up to 4 GB of memory.
take up to 4 GB of memory at compilation.
</p></td></tr>
</table></div>
<p>
@ -598,6 +611,7 @@
The definition of the system is
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">ublas</span><span class="special">::</span><span class="identifier">matrix</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>
@ -691,6 +705,7 @@
Here is a simple example:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">mpf_class</span> <span class="identifier">value_type</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span> <span class="identifier">value_type</span> <span class="special">,</span> <span class="number">3</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
@ -715,6 +730,7 @@
which can be used
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">precision</span> <span class="special">=</span> <span class="number">1024</span><span class="special">;</span>
<span class="identifier">mpf_set_default_prec</span><span class="special">(</span> <span class="identifier">precision</span> <span class="special">);</span>
@ -776,6 +792,7 @@
is kept which should be changed whenever the states' size change.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">vector</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">coord_type</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">pair</span><span class="special">&lt;</span> <span class="identifier">coord_type</span> <span class="special">,</span> <span class="identifier">coord_type</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
@ -861,6 +878,7 @@
of 60.
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">//start with 60 sites</span>
<span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">N_start</span> <span class="special">=</span> <span class="number">60</span><span class="special">;</span>
@ -896,6 +914,7 @@
the start index of the potential changes in this case.
</p>
<p>
</p>
<pre class="programlisting"><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="keyword">const</span> <span class="keyword">double</span> <span class="identifier">dt</span> <span class="special">=</span> <span class="number">0.1</span><span class="special">;</span>
@ -928,6 +947,7 @@
, <code class="computeroutput"><span class="identifier">p</span></code> and <code class="computeroutput"><span class="identifier">distr</span></code>.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">do_resize</span><span class="special">(</span> <span class="identifier">coord_type</span> <span class="special">&amp;</span><span class="identifier">q</span> <span class="special">,</span> <span class="identifier">coord_type</span> <span class="special">&amp;</span><span class="identifier">p</span> <span class="special">,</span> <span class="identifier">coord_type</span> <span class="special">&amp;</span><span class="identifier">distr</span> <span class="special">,</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">N</span> <span class="special">)</span>
<span class="special">{</span>

View File

@ -45,6 +45,7 @@
is needed. Here is the definition of the above example
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">ublas</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">vector_type</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">ublas</span><span class="special">::</span><span class="identifier">matrix</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">matrix_type</span><span class="special">;</span>
@ -81,6 +82,7 @@
just templatize the <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">ublas</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">vector_type</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">ublas</span><span class="special">::</span><span class="identifier">matrix</span><span class="special">&lt;</span> <span class="keyword">double</span> <span class="special">&gt;</span> <span class="identifier">matrix_type</span><span class="special">;</span>
@ -116,6 +118,7 @@
all the other stepper:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">vector_type</span> <span class="identifier">x</span><span class="special">(</span> <span class="number">3</span> <span class="special">,</span> <span class="number">1.0</span> <span class="special">);</span>
@ -132,6 +135,7 @@
5 method with step size control and dense output yields 1531 steps.
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">vector_type</span> <span class="identifier">x2</span><span class="special">(</span> <span class="number">3</span> <span class="special">,</span> <span class="number">1.0</span> <span class="special">);</span>

View File

@ -87,6 +87,7 @@
website.
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">//change this to float if your device does not support double computation</span>
<span class="keyword">typedef</span> <span class="keyword">double</span> <span class="identifier">value_type</span><span class="special">;</span>
@ -102,7 +103,7 @@
a calculation on the GPU you usually have to call a global function like
<code class="computeroutput"><span class="identifier">thrust</span><span class="special">::</span><span class="identifier">for_each</span></code>, <code class="computeroutput"><span class="identifier">thrust</span><span class="special">::</span><span class="identifier">reduce</span></code>,
... with an appropriate local functor which performs the basic operation.
An example is
An example is
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">add_two</span>
<span class="special">{</span>
@ -137,6 +138,7 @@
The mean field is calculated in a class <code class="computeroutput"><span class="identifier">mean_field_calculator</span></code>
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">mean_field_calculator</span>
<span class="special">{</span>
@ -190,6 +192,7 @@
GPU as well as on the CPU. The line
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">value_type</span> <span class="identifier">sin_sum</span> <span class="special">=</span> <span class="identifier">thrust</span><span class="special">::</span><span class="identifier">reduce</span><span class="special">(</span>
<span class="identifier">thrust</span><span class="special">::</span><span class="identifier">make_transform_iterator</span><span class="special">(</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">sin_functor</span><span class="special">()</span> <span class="special">)</span> <span class="special">,</span>
@ -205,6 +208,7 @@
The system function is defined via
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">phase_oscillator_ensemble</span>
<span class="special">{</span>
@ -260,6 +264,7 @@
thrust algebra:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">runge_kutta4</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">,</span> <span class="identifier">value_type</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">,</span> <span class="identifier">value_type</span> <span class="special">,</span> <span class="identifier">thrust_algebra</span> <span class="special">,</span> <span class="identifier">thrust_operations</span> <span class="special">&gt;</span> <span class="identifier">stepper_type</span><span class="special">;</span>
</pre>
@ -269,6 +274,7 @@
Of course, you can also use a controlled or dense output stepper, e.g.
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">runge_kutta_dopri5</span><span class="special">&lt;</span> <span class="identifier">state_type</span> <span class="special">,</span> <span class="identifier">value_type</span> <span class="special">,</span> <span class="identifier">state_type</span> <span class="special">,</span> <span class="identifier">value_type</span> <span class="special">,</span> <span class="identifier">thrust_algebra</span> <span class="special">,</span> <span class="identifier">thrust_operations</span> <span class="special">&gt;</span> <span class="identifier">stepper_type</span><span class="special">;</span>
</pre>
@ -279,12 +285,14 @@
an instance of the rhs class and using an integration function:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">phase_oscillator_ensemble</span> <span class="identifier">ensemble</span><span class="special">(</span> <span class="identifier">N</span> <span class="special">,</span> <span class="number">1.0</span> <span class="special">);</span>
</pre>
<p>
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">size_t</span> <span class="identifier">steps1</span> <span class="special">=</span> <span class="identifier">integrate_const</span><span class="special">(</span> <span class="identifier">make_controlled</span><span class="special">(</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="number">1.0e-6</span> <span class="special">,</span> <span class="identifier">stepper_type</span><span class="special">()</span> <span class="special">)</span> <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span> <span class="identifier">ensemble</span> <span class="special">)</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="identifier">t_transients</span> <span class="special">,</span> <span class="identifier">dt</span> <span class="special">);</span>
</pre>
@ -326,6 +334,7 @@
in front. The full system class is:
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">//change this to host_vector&lt; ... &gt; of you want to run on CPU</span>
<span class="keyword">typedef</span> <span class="identifier">thrust</span><span class="special">::</span><span class="identifier">device_vector</span><span class="special">&lt;</span> <span class="identifier">value_type</span> <span class="special">&gt;</span> <span class="identifier">state_type</span><span class="special">;</span>
@ -414,6 +423,7 @@
current state, hence the phase of each oscillator.
</p>
<p>
</p>
<pre class="programlisting"><span class="comment">// create initial conditions and omegas on host:</span>
<span class="identifier">vector</span><span class="special">&lt;</span> <span class="identifier">value_type</span> <span class="special">&gt;</span> <span class="identifier">x_host</span><span class="special">(</span> <span class="identifier">N</span> <span class="special">);</span>
@ -476,6 +486,7 @@
<span class="special">&gt;</span></code>.
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">vector</span><span class="special">&lt;</span> <span class="identifier">value_type</span> <span class="special">&gt;</span> <span class="identifier">beta_host</span><span class="special">(</span> <span class="identifier">N</span> <span class="special">);</span>
<span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">beta_min</span> <span class="special">=</span> <span class="number">0.0</span> <span class="special">,</span> <span class="identifier">beta_max</span> <span class="special">=</span> <span class="number">56.0</span><span class="special">;</span>
@ -493,6 +504,7 @@
calculates one particular realization of the Lorenz ensemble
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">lorenz_system</span>
<span class="special">{</span>
@ -574,6 +586,7 @@
which is used within this observer is defined
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">lyap_functor</span>
<span class="special">{</span>
@ -613,6 +626,7 @@
and written to <code class="computeroutput"><span class="identifier">stdout</span></code>.
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">state_type</span> <span class="identifier">x</span><span class="special">(</span> <span class="number">6</span> <span class="special">*</span> <span class="identifier">N</span> <span class="special">);</span>

View File

@ -24,7 +24,7 @@
<div><p class="copyright">Copyright &#169; 2009-2011 Karsten Ahnert
and Mario Mulansky</p></div>
<div><div class="legalnotice">
<a name="odeint.legal"></a><p>
<a name="id546634"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -125,7 +125,7 @@
</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: April 02, 2012 at 16:04:40 GMT</small></p></td>
<td align="left"><p><small>Last revised: April 04, 2012 at 17:13:01 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

View File

@ -1,43 +1,38 @@
[section State types, algebras and operations]
In odeint the integration algorithms are implemented independently of the
underlying fundamental mathematical operations.
This is realized by giving the user full control over the state type and the
mathematical operations for this state type.
Technically, this is done by introducing three concepts: StateType, Algebra,
Operations.
Most of the steppers in odeint expect three classes types fullfilling these
concepts as template parameters.
Note that these concepts are not fully independent of each other but rather a
valid combination must be provided in order to make the steppers work.
In the following we will give some examples on reasonable
state_type-algebra-operations combinations.
For the most common state types, like `vector<double>` or `array<double,N>`
the default values range_algebra and default_operations are perfectly fine and
odeint can be used as is without worrying about algebra/operations at all.
[important state_type, algebra and operations are not independent, a valid
combination must be provided to make odeint work properly]
[section Algebras and operations]
which steppers support algebras
[endsect]
[section Adapt your own state types]
One of the main goals of odeint is to provide algorithms independent from the underlying state type.
The state type is a type representing the state of the ODE, that is the
variable x.
As we usually deal with systems of ODEs, the state type is represented by some
sort of container.
Most often, the value type of the container is simply `double`, as usually
ODEs are defined as systems of real variables.
However, it is also possible to use complex types (`complex<double>`) as
underlying value type.
Moreover, you can even adopt odeint to work with _any_ value type as long as
the required operations are defined.
However, in the following I will describe how your own state types can be used
to run with odeint.
I will assume that the state type is some sort of container aggregating a
number of values representing state of the ODE.
As odeint also takes care for the memory management of where intermediate results are stored,
it first of all needs to know how to construct/destruct and possibly resize the state type.
Additionally, it requires to be told how basic algebraic operations are to be performed on state
types. So when introducing new state types to odeint, the following points have to be considered:
Moreover, as odeint handles the memory required for intermediate temporary
objects itself, it also needs knowledge about how to create state_type objects
and maybe how to allocate memory (resizing).
All in all, the following things have to be taken care of when odeint is used
with non-standard state types:
* construction/destruction
* resizing (if possible/required)
* algebraic operations
Of course, odeint already provides basic interfaces for most of the usual state types.
So if you use a `std::vector`, or a `boost::array` as state type no additional work is required,
they just work out of the box.
Again, odeint already provides basic interfaces for most of the usual state
types.
So if you use a `std::vector`, or a `boost::array` as state type no additional
work is required, they just work out of the box.
[section Construction/Resizing]
@ -62,7 +57,7 @@ following functionality:
pointing to the end of the sequence]]
]
[caution If your state type does not allocate memory by default construction,
[warning If your state type does not allocate memory by default construction,
you [*must define it as resizeable] and provide resize functionality (see
below). Otherwise segmentation faults will occur.]
@ -145,31 +140,47 @@ A complete example can be found in [github_link libs/numeric/odeint/examples/lis
[endsect]
[section Algebraic operations]
[section Algebras and Operations]
If your state type is not supported by Boost.Range there are several
To provide maximum flexibility odeint is implemented in a highly modularized
way. This means it is possible to change the underlying mathematical
operations without touching the integration algorithms.
The fundamental mathematical operations are those of a vector space, that is
addition of `state_types` and multiplication of `state_type`s with a scalar
(`time_type`). In odeint this is realized in two concepts: _Algebra_ and
_Operations_.
The standard way how this works is by the range algebra which provides
functions that apply a specific operation to each of the individual elements
of a container based on the __boost_range library.
If your state type is not supported by __boost_range there are several
possibilities to tell odeint how to do algebraic operations:
* Implement `boost::begin` and `boost::end` for your state type so it works
with Boost.Range.
with __boost_range.
* Implement vector-vector addition operator `+` and scalar-vector
multiplication operator `*` and use the non-standard `vector_space_algebra`.
* Implement your own algebra that defines the required operations.
* Implement your own algebra that implements the required functions.
[section GSL Vector]
All the above examples use __boost_range to iterate through the elements of the
state type and perform the algebraic operation for each element.
This is the most natural way when dealing with state types which are some kind
of container.
But what to do if your state type does not support iterators at all?
In the following example we will try to use the `gsl_vector` type from __gsl (GNU
Scientific Library) as state type in odeint.
We will realize this by implementing a wrapper around the gsl_vector that
takes care of construction/destruction.
Also, __boost_range is extended such that it works with `gsl_vector`s as well
which required also the implementation of a new `gsl_iterator`.
[note odeint already includes all the code presented here, see [github_link
boost/numeric/odeint/external/gsl/gsl_wrapper.hpp gsl_wrapper.hpp], so `gsl_vector`s
can be used straight out-of-box.
The following description is just for educational purpose.]
The GSL is a C library, so `gsl_vector` has neither constructor, nor
destructor or any `begin` or `end` function, no iterators at all.
So to make it work with odeint plenty of things have to be implemented.
Note that all of the work shown here is already included in odeint, so using
gls_vectors in odeint doesn't require any further adjustments.
`gsl_vector`s in odeint doesn't require any further adjustments.
We present it here just as an educational example.
We start with defining appropriate constructors and destructors.
This is done by specializing the `state_wrapper` for `gsl_vector`.
State wrappers are used by the steppers internally to create and manage
@ -182,7 +193,6 @@ struct state_wrapper< gsl_vector* >
typedef double value_type;
typedef gsl_vector* state_type;
typedef state_wrapper< gsl_vector* > state_wrapper_type;
typedef boost::true_type is_resizeable;
state_type m_v;
@ -238,8 +248,8 @@ struct resize_impl< gsl_vector* , gsl_vector* >
};
``
Up to now, we defined creation and resizing, but gsl_vectors also don't
support iterators, so we first implement a gsl iterator:
Up to now, we defined creation/destruction and resizing, but gsl_vectors also
don't support iterators, so we first implement a gsl iterator:
``
/*
@ -430,8 +440,6 @@ libs/numeric/odeint/examples/lorenz_point.cpp lorenz_point.cpp]
[endsect]
[endsect]
gsl_vector, gsl_matrix, ublas::matrix, blitz::matrix, thrust
[section Adapt your own operations]
@ -444,4 +452,4 @@ min, max, pow
[endsect]
[endsect]

View File

@ -107,7 +107,9 @@ It is quite easy but the compilation time might take very long. Furthermore, the
[units_observer]
[caution Using __boost_units works nicely but compilation can be very time and memory consuming. For example the unit test for __boost_units take up to 4 GB of memory.]
[caution Using __boost_units works nicely but compilation can be very time and
memory consuming. For example the unit test for __boost_units take up to 4 GB
of memory at compilation.]
The full cpp file for this example can be found here [github_link libs/numeric/odeint/examples/harmonic_oscillator_units.cpp harmonic_oscillator_units.cpp].
@ -205,4 +207,4 @@ The full example can be found in [github_link libs/numeric/odeint/examples/resiz
[endsect]
[endsect]
[endsect]