3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Iterators and Ranges</title>
5 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="../../index.html" title="Chapter 1. Boost.Numeric.Odeint">
8 <link rel="up" href="../odeint_in_detail.html" title="odeint in detail">
9 <link rel="prev" href="integrate_functions.html" title="Integrate functions">
10 <link rel="next" href="state_types__algebras_and_operations.html" title="State types, algebras and operations">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../logo.jpg"></td>
15 <td align="center"><a href="../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="integrate_functions.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../odeint_in_detail.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="state_types__algebras_and_operations.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges"></a><a class="link" href="iterators_and_ranges.html" title="Iterators and Ranges">Iterators
29 </h3></div></div></div>
30 <div class="toc"><dl class="toc">
31 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.examples">Examples</a></span></dt>
32 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_iterator">const_step_iterator</a></span></dt>
33 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_time_iterator">const_step_time_iterator</a></span></dt>
34 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_iterator">adaptive_step_iterator</a></span></dt>
35 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_time_iterator">adaptive_step_time_iterator</a></span></dt>
36 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_iterator">n_step_iterator</a></span></dt>
37 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_time_iterator">n_step_time_iterator</a></span></dt>
38 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_iterator">times_iterator</a></span></dt>
39 <dt><span class="section"><a href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_time_iterator">times_time_iterator</a></span></dt>
42 <div class="titlepage"><div><div><h4 class="title">
43 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.examples"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.examples" title="Examples">Examples</a>
44 </h4></div></div></div>
46 odeint supports iterators that iterate along an approximate solution of
47 an ordinary differential equation. Iterators offer you an alternative to
48 the integrate functions. Furthermore, many of the standard algorithms in
49 the C++ standard library and Boost.Range can be used with the odeint's
53 Several iterator types are provided, in consistence with the <a class="link" href="integrate_functions.html" title="Integrate functions">integrate
54 functions</a>. Hence there are <code class="computeroutput"><span class="identifier">const_step_iterator</span></code>,
55 <code class="computeroutput"><span class="identifier">adaptive_step_iterator</span></code>,
56 <code class="computeroutput"><span class="identifier">n_step_iterator</span></code> and <code class="computeroutput"><span class="identifier">times_iterator</span></code> -- each of them in two
57 versions: either with only the <code class="computeroutput"><span class="identifier">state</span></code>
58 or with a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">state</span><span class="special">,</span><span class="identifier">time</span><span class="special">></span></code>
59 as value type. They are all single pass iterators. In the following, we
60 show a few examples of how to use those iterators together with std algorithms.
64 <pre class="programlisting"><span class="identifier">runge_kutta4</span><span class="special"><</span> <span class="identifier">state_type</span> <span class="special">></span> <span class="identifier">stepper</span><span class="special">;</span>
65 <span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">}};</span>
66 <span class="keyword">double</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span> <span class="identifier">make_const_step_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</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="number">1.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">)</span> <span class="special">,</span>
67 <span class="identifier">make_const_step_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</span><span class="special">()</span> <span class="special">,</span> <span class="identifier">x</span> <span class="special">)</span> <span class="special">,</span>
68 <span class="number">0.0</span> <span class="special">,</span>
69 <span class="special">[](</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&</span><span class="identifier">x</span> <span class="special">)</span> <span class="special">{</span>
70 <span class="keyword">return</span> <span class="identifier">sum</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="special">);</span>
71 <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">res</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
76 In this example all x-values of the solution are accumulated. Note, how
77 dereferencing the iterator gives the current state <code class="computeroutput"><span class="identifier">x</span></code>
78 of the ODE (the second argument of the accumulate lambda). The iterator
79 itself does not occur directly in this example but it is generated by the
80 factory functions <code class="computeroutput"><span class="identifier">make_const_step_iterator_begin</span></code>
81 and <code class="computeroutput"><span class="identifier">make_const_step_iterator_end</span></code>.
82 odeint also supports Boost.Range, that allows to write the above example
83 in a more compact form with the factory function <code class="computeroutput"><span class="identifier">make_const_step_range</span></code>,
84 but now using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span></code> from __bost_range:
88 <pre class="programlisting"><span class="identifier">runge_kutta4</span><span class="special"><</span> <span class="identifier">state_type</span> <span class="special">></span> <span class="identifier">stepper</span><span class="special">;</span>
89 <span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">}};</span>
90 <span class="keyword">double</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span> <span class="identifier">make_const_step_range</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</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="number">1.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">)</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span>
91 <span class="special">[](</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&</span><span class="identifier">x</span> <span class="special">)</span> <span class="special">{</span>
92 <span class="keyword">return</span> <span class="identifier">sum</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="special">);</span>
93 <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">res</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
98 The second iterator type is also a iterator with const step size. But the
99 value type of this iterator consists here of a pair of the time and the
100 state of the solution of the ODE. An example is
104 <pre class="programlisting"><span class="identifier">runge_kutta4</span><span class="special"><</span> <span class="identifier">state_type</span> <span class="special">></span> <span class="identifier">stepper</span><span class="special">;</span>
105 <span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">}};</span>
106 <span class="keyword">double</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span> <span class="identifier">make_const_step_time_range</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</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="number">1.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">)</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span>
107 <span class="special">[](</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span> <span class="keyword">const</span> <span class="identifier">state_type</span> <span class="special">&,</span> <span class="keyword">double</span> <span class="special">></span> <span class="special">&</span><span class="identifier">x</span> <span class="special">)</span> <span class="special">{</span>
108 <span class="keyword">return</span> <span class="identifier">sum</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="special">);</span>
109 <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">res</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
114 The factory functions are now <code class="computeroutput"><span class="identifier">make_const_step_time_iterator_begin</span></code>,
115 <code class="computeroutput"><span class="identifier">make_const_step_time_iterator_end</span></code>
116 and <code class="computeroutput"><span class="identifier">make_const_step_time_range</span></code>.
117 Note, how the lambda now expects a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>
118 as this is the value type of the <code class="computeroutput"><span class="identifier">const_step_time_iterator</span></code>'s.
121 Next, we discuss the adaptive iterators which are completely analogous
122 to the const step iterators, but are based on adaptive stepper routines
123 and thus adjust the step size during the iteration. Examples are
127 <pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">stepper</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">runge_kutta_cash_karp54</span><span class="special"><</span> <span class="identifier">state_type</span> <span class="special">>()</span> <span class="special">);</span>
128 <span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">}};</span>
129 <span class="keyword">double</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span> <span class="identifier">make_adaptive_range</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</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="number">1.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">)</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span>
130 <span class="special">[](</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">state_type</span><span class="special">&</span> <span class="identifier">x</span> <span class="special">)</span> <span class="special">{</span>
131 <span class="keyword">return</span> <span class="identifier">sum</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="special">);</span>
132 <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">res</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
138 <pre class="programlisting"><span class="keyword">auto</span> <span class="identifier">stepper</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">runge_kutta_cash_karp54</span><span class="special"><</span> <span class="identifier">state_type</span> <span class="special">>()</span> <span class="special">);</span>
139 <span class="identifier">state_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="special">{{</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">,</span> <span class="number">10.0</span> <span class="special">}};</span>
140 <span class="keyword">double</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span> <span class="identifier">make_adaptive_time_range</span><span class="special">(</span> <span class="identifier">stepper</span> <span class="special">,</span> <span class="identifier">lorenz</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="number">1.0</span> <span class="special">,</span> <span class="number">0.01</span> <span class="special">)</span> <span class="special">,</span> <span class="number">0.0</span> <span class="special">,</span>
141 <span class="special">[](</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">,</span> <span class="keyword">const</span> <span class="identifier">pair</span><span class="special"><</span> <span class="keyword">const</span> <span class="identifier">state_type</span><span class="special">&</span> <span class="special">,</span> <span class="keyword">double</span> <span class="special">></span> <span class="special">&</span><span class="identifier">x</span> <span class="special">)</span> <span class="special">{</span>
142 <span class="keyword">return</span> <span class="identifier">sum</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="special">);</span>
143 <span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">res</span> <span class="special"><<</span> <span class="identifier">endl</span><span class="special">;</span>
147 <div class="note"><table border="0" summary="Note">
149 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
150 <th align="left">Note</th>
152 <tr><td align="left" valign="top"><p>
153 'adaptive_iterator<code class="computeroutput"> <span class="keyword">and</span> </code>adaptive_time_iterator'
154 can only be used with <a class="link" href="../concepts/controlled_stepper.html" title="Controlled Stepper">Controlled
155 Stepper</a> or <a class="link" href="../concepts/dense_output_stepper.html" title="Dense Output Stepper">Dense
160 In general one can say that iterating over a range of a <code class="computeroutput"><span class="identifier">const_step_iterator</span></code>
161 behaves like an <code class="computeroutput"><span class="identifier">integrate_const</span></code>
162 function call, and similarly for <code class="computeroutput"><span class="identifier">adaptive_iterator</span></code>
163 and <code class="computeroutput"><span class="identifier">integrate_adaptive</span></code>,
164 <code class="computeroutput"><span class="identifier">n_step_iterator</span></code> and <code class="computeroutput"><span class="identifier">integrate_n_steps</span></code>, and finally <code class="computeroutput"><span class="identifier">times_iterator</span></code> and <code class="computeroutput"><span class="identifier">integrate_times</span></code>.
167 Below we list the most important properties of the exisiting iterators:
170 <div class="section">
171 <div class="titlepage"><div><div><h4 class="title">
172 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_iterator" title="const_step_iterator">const_step_iterator</a>
173 </h4></div></div></div>
174 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
175 <li class="listitem">
176 Definition: <code class="computeroutput"><span class="identifier">const_step_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
177 <span class="special">,</span> <span class="identifier">System</span>
178 <span class="special">,</span> <span class="identifier">State</span>
179 <span class="special">></span></code>
181 <li class="listitem">
182 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">State</span></code>
184 <li class="listitem">
185 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
186 <code class="computeroutput"><span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span></code>
188 <li class="listitem">
190 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
191 <li class="listitem">
192 <code class="computeroutput"><span class="identifier">make_const_step_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
193 <span class="special">,</span> <span class="identifier">system</span>
194 <span class="special">,</span> <span class="identifier">state</span>
195 <span class="special">,</span> <span class="identifier">t_start</span>
196 <span class="special">,</span> <span class="identifier">t_end</span>
197 <span class="special">,</span> <span class="identifier">dt</span>
198 <span class="special">)</span></code>
200 <li class="listitem">
201 <code class="computeroutput"><span class="identifier">make_const_step_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
202 <span class="special">,</span> <span class="identifier">system</span>
203 <span class="special">,</span> <span class="identifier">state</span>
204 <span class="special">)</span></code>
206 <li class="listitem">
207 <code class="computeroutput"><span class="identifier">make_const_step_range</span><span class="special">(</span> <span class="identifier">stepper</span>
208 <span class="special">,</span> <span class="identifier">system</span>
209 <span class="special">,</span> <span class="identifier">state</span>
210 <span class="special">,</span> <span class="identifier">t_start</span>
211 <span class="special">,</span> <span class="identifier">t_end</span>
212 <span class="special">,</span> <span class="identifier">dt</span>
213 <span class="special">)</span></code>
217 <li class="listitem">
218 This stepper works with all steppers fulfilling the Stepper concept
219 or the DenseOutputStepper concept.
221 <li class="listitem">
222 The value of <code class="computeroutput"><span class="identifier">state</span></code>
223 is the current state of the ODE during the iteration.
227 <div class="section">
228 <div class="titlepage"><div><div><h4 class="title">
229 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_time_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.const_step_time_iterator" title="const_step_time_iterator">const_step_time_iterator</a>
230 </h4></div></div></div>
231 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
232 <li class="listitem">
233 Definition: <code class="computeroutput"><span class="identifier">const_step_time_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
234 <span class="special">,</span> <span class="identifier">System</span>
235 <span class="special">,</span> <span class="identifier">State</span>
236 <span class="special">></span></code>
238 <li class="listitem">
239 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
240 <span class="identifier">State</span> <span class="special">,</span>
241 <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span></code>
243 <li class="listitem">
244 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
245 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
246 <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">,</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span>
247 <span class="keyword">const</span><span class="special">&</span></code>
249 <li class="listitem">
251 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
252 <li class="listitem">
253 <code class="computeroutput"><span class="identifier">make_const_step_time_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
254 <span class="special">,</span> <span class="identifier">system</span>
255 <span class="special">,</span> <span class="identifier">state</span>
256 <span class="special">,</span> <span class="identifier">t_start</span>
257 <span class="special">,</span> <span class="identifier">t_end</span>
258 <span class="special">,</span> <span class="identifier">dt</span>
259 <span class="special">)</span></code>
261 <li class="listitem">
262 <code class="computeroutput"><span class="identifier">make_const_step_time_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
263 <span class="special">,</span> <span class="identifier">system</span>
264 <span class="special">,</span> <span class="identifier">state</span>
265 <span class="special">)</span></code>
267 <li class="listitem">
268 <code class="computeroutput"><span class="identifier">make_const_step_time_range</span><span class="special">(</span> <span class="identifier">stepper</span>
269 <span class="special">,</span> <span class="identifier">system</span>
270 <span class="special">,</span> <span class="identifier">state</span>
271 <span class="special">,</span> <span class="identifier">t_start</span>
272 <span class="special">,</span> <span class="identifier">t_end</span>
273 <span class="special">,</span> <span class="identifier">dt</span>
274 <span class="special">)</span></code>
278 <li class="listitem">
279 This stepper works with all steppers fulfilling the Stepper concept
280 or the DenseOutputStepper concept.
282 <li class="listitem">
283 This stepper updates the value of <code class="computeroutput"><span class="identifier">state</span></code>.
284 The value of <code class="computeroutput"><span class="identifier">state</span></code>
285 is the current state of the ODE during the iteration.
289 <div class="section">
290 <div class="titlepage"><div><div><h4 class="title">
291 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_iterator" title="adaptive_step_iterator">adaptive_step_iterator</a>
292 </h4></div></div></div>
293 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
294 <li class="listitem">
295 Definition: <code class="computeroutput"><span class="identifier">adaptive_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
296 <span class="special">,</span> <span class="identifier">System</span>
297 <span class="special">,</span> <span class="identifier">State</span>
298 <span class="special">></span></code>
300 <li class="listitem">
301 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">State</span></code>
303 <li class="listitem">
304 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
305 <code class="computeroutput"><span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span></code>
307 <li class="listitem">
309 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
310 <li class="listitem">
311 <code class="computeroutput"><span class="identifier">make_adaptive_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
312 <span class="special">,</span> <span class="identifier">system</span>
313 <span class="special">,</span> <span class="identifier">state</span>
314 <span class="special">,</span> <span class="identifier">t_start</span>
315 <span class="special">,</span> <span class="identifier">t_end</span>
316 <span class="special">,</span> <span class="identifier">dt</span>
317 <span class="special">)</span></code>
319 <li class="listitem">
320 <code class="computeroutput"><span class="identifier">make_adaptive_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
321 <span class="special">,</span> <span class="identifier">system</span>
322 <span class="special">,</span> <span class="identifier">state</span>
323 <span class="special">)</span></code>
325 <li class="listitem">
326 <code class="computeroutput"><span class="identifier">make_adaptive_range</span><span class="special">(</span> <span class="identifier">stepper</span>
327 <span class="special">,</span> <span class="identifier">system</span>
328 <span class="special">,</span> <span class="identifier">state</span>
329 <span class="special">,</span> <span class="identifier">t_start</span>
330 <span class="special">,</span> <span class="identifier">t_end</span>
331 <span class="special">,</span> <span class="identifier">dt</span>
332 <span class="special">)</span></code>
336 <li class="listitem">
337 This stepper works with all steppers fulfilling the ControlledStepper
338 concept or the DenseOutputStepper concept.
340 <li class="listitem">
341 For steppers fulfilling the ControlledStepper concept <code class="computeroutput"><span class="identifier">state</span></code> is modified according to the
342 current state of the ODE. For DenseOutputStepper the state is not modified
343 due to performance optimizations, but the steppers itself.
347 <div class="section">
348 <div class="titlepage"><div><div><h4 class="title">
349 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_time_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.adaptive_step_time_iterator" title="adaptive_step_time_iterator">adaptive_step_time_iterator</a>
350 </h4></div></div></div>
351 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
352 <li class="listitem">
353 Definition: <code class="computeroutput"><span class="identifier">adaptive_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
354 <span class="special">,</span> <span class="identifier">System</span>
355 <span class="special">,</span> <span class="identifier">State</span>
356 <span class="special">></span></code>
358 <li class="listitem">
359 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
360 <span class="identifier">State</span> <span class="special">,</span>
361 <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span></code>
363 <li class="listitem">
364 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
365 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
366 <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">,</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span>
367 <span class="keyword">const</span><span class="special">&</span></code>
369 <li class="listitem">
371 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
372 <li class="listitem">
373 <code class="computeroutput"><span class="identifier">make_adaptive_time_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
374 <span class="special">,</span> <span class="identifier">system</span>
375 <span class="special">,</span> <span class="identifier">state</span>
376 <span class="special">,</span> <span class="identifier">t_start</span>
377 <span class="special">,</span> <span class="identifier">t_end</span>
378 <span class="special">,</span> <span class="identifier">dt</span>
379 <span class="special">)</span></code>
381 <li class="listitem">
382 <code class="computeroutput"><span class="identifier">make_adaptive_time_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
383 <span class="special">,</span> <span class="identifier">system</span>
384 <span class="special">,</span> <span class="identifier">state</span>
385 <span class="special">)</span></code>
387 <li class="listitem">
388 <code class="computeroutput"><span class="identifier">make_adaptive_time_range</span><span class="special">(</span> <span class="identifier">stepper</span>
389 <span class="special">,</span> <span class="identifier">system</span>
390 <span class="special">,</span> <span class="identifier">state</span>
391 <span class="special">,</span> <span class="identifier">t_start</span>
392 <span class="special">,</span> <span class="identifier">t_end</span>
393 <span class="special">,</span> <span class="identifier">dt</span>
394 <span class="special">)</span></code>
398 <li class="listitem">
399 This stepper works with all steppers fulfilling the ControlledStepper
400 concept or the DenseOutputStepper concept.
402 <li class="listitem">
403 For steppers fulfilling the ControlledStepper concept <code class="computeroutput"><span class="identifier">state</span></code> is modified according to the
404 current state of the ODE. For DenseOutputStepper the state is not modified
405 due to performance optimizations, but the stepper itself.
409 <div class="section">
410 <div class="titlepage"><div><div><h4 class="title">
411 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_iterator" title="n_step_iterator">n_step_iterator</a>
412 </h4></div></div></div>
413 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
414 <li class="listitem">
415 Definition: <code class="computeroutput"><span class="identifier">n_step_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
416 <span class="special">,</span> <span class="identifier">System</span>
417 <span class="special">,</span> <span class="identifier">State</span>
418 <span class="special">></span></code>
420 <li class="listitem">
421 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">State</span></code>
423 <li class="listitem">
424 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
425 <code class="computeroutput"><span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span></code>
427 <li class="listitem">
429 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
430 <li class="listitem">
431 <code class="computeroutput"><span class="identifier">make_n_step_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
432 <span class="special">,</span> <span class="identifier">system</span>
433 <span class="special">,</span> <span class="identifier">state</span>
434 <span class="special">,</span> <span class="identifier">t_start</span>
435 <span class="special">,</span> <span class="identifier">dt</span>
436 <span class="special">,</span> <span class="identifier">num_of_steps</span>
437 <span class="special">)</span></code>
439 <li class="listitem">
440 <code class="computeroutput"><span class="identifier">make_n_step_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
441 <span class="special">,</span> <span class="identifier">system</span>
442 <span class="special">,</span> <span class="identifier">state</span>
443 <span class="special">)</span></code>
445 <li class="listitem">
446 <code class="computeroutput"><span class="identifier">make_n_step_range</span><span class="special">(</span> <span class="identifier">stepper</span>
447 <span class="special">,</span> <span class="identifier">system</span>
448 <span class="special">,</span> <span class="identifier">state</span>
449 <span class="special">,</span> <span class="identifier">t_start</span>
450 <span class="special">,</span> <span class="identifier">dt</span>
451 <span class="special">,</span> <span class="identifier">num_of_steps</span>
452 <span class="special">)</span></code>
456 <li class="listitem">
457 This stepper works with all steppers fulfilling the Stepper concept
458 or the DenseOutputStepper concept.
460 <li class="listitem">
461 The value of <code class="computeroutput"><span class="identifier">state</span></code>
462 is the current state of the ODE during the iteration.
466 <div class="section">
467 <div class="titlepage"><div><div><h4 class="title">
468 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_time_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.n_step_time_iterator" title="n_step_time_iterator">n_step_time_iterator</a>
469 </h4></div></div></div>
470 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
471 <li class="listitem">
472 Definition: <code class="computeroutput"><span class="identifier">n_step_time_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
473 <span class="special">,</span> <span class="identifier">System</span>
474 <span class="special">,</span> <span class="identifier">State</span>
475 <span class="special">></span></code>
477 <li class="listitem">
478 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
479 <span class="identifier">State</span> <span class="special">,</span>
480 <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span></code>
482 <li class="listitem">
483 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
484 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
485 <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">,</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span>
486 <span class="keyword">const</span><span class="special">&</span></code>
488 <li class="listitem">
490 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
491 <li class="listitem">
492 <code class="computeroutput"><span class="identifier">make_n_step_time_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
493 <span class="special">,</span> <span class="identifier">system</span>
494 <span class="special">,</span> <span class="identifier">state</span>
495 <span class="special">,</span> <span class="identifier">t_start</span>
496 <span class="special">,</span> <span class="identifier">dt</span>
497 <span class="special">,</span> <span class="identifier">num_of_steps</span>
498 <span class="special">)</span></code>
500 <li class="listitem">
501 <code class="computeroutput"><span class="identifier">make_n_step_time_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
502 <span class="special">,</span> <span class="identifier">system</span>
503 <span class="special">,</span> <span class="identifier">state</span>
504 <span class="special">)</span></code>
506 <li class="listitem">
507 <code class="computeroutput"><span class="identifier">make_n_step_time_range</span><span class="special">(</span> <span class="identifier">stepper</span>
508 <span class="special">,</span> <span class="identifier">system</span>
509 <span class="special">,</span> <span class="identifier">state</span>
510 <span class="special">,</span> <span class="identifier">t_start</span>
511 <span class="special">,</span> <span class="identifier">dt</span>
512 <span class="special">,</span> <span class="identifier">num_of_steps</span>
513 <span class="special">)</span></code>
517 <li class="listitem">
518 This stepper works with all steppers fulfilling the Stepper concept
519 or the DenseOutputStepper concept.
521 <li class="listitem">
522 This stepper updates the value of <code class="computeroutput"><span class="identifier">state</span></code>.
523 The value of <code class="computeroutput"><span class="identifier">state</span></code>
524 is the current state of the ODE during the iteration.
528 <div class="section">
529 <div class="titlepage"><div><div><h4 class="title">
530 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_iterator" title="times_iterator">times_iterator</a>
531 </h4></div></div></div>
532 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
533 <li class="listitem">
534 Definition: <code class="computeroutput"><span class="identifier">times_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
535 <span class="special">,</span> <span class="identifier">System</span>
536 <span class="special">,</span> <span class="identifier">State</span>
537 <span class="special">,</span> <span class="identifier">TimeIterator</span>
538 <span class="special">></span></code>
540 <li class="listitem">
541 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">State</span></code>
543 <li class="listitem">
544 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
545 <code class="computeroutput"><span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span></code>
547 <li class="listitem">
549 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
550 <li class="listitem">
551 <code class="computeroutput"><span class="identifier">make_times_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
552 <span class="special">,</span> <span class="identifier">system</span>
553 <span class="special">,</span> <span class="identifier">state</span>
554 <span class="special">,</span> <span class="identifier">t_start</span>
555 <span class="special">,</span> <span class="identifier">t_end</span>
556 <span class="special">,</span> <span class="identifier">dt</span>
557 <span class="special">)</span></code>
559 <li class="listitem">
560 <code class="computeroutput"><span class="identifier">make_times_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
561 <span class="special">,</span> <span class="identifier">system</span>
562 <span class="special">,</span> <span class="identifier">state</span>
563 <span class="special">)</span></code>
565 <li class="listitem">
566 <code class="computeroutput"><span class="identifier">make_times_range</span><span class="special">(</span> <span class="identifier">stepper</span>
567 <span class="special">,</span> <span class="identifier">system</span>
568 <span class="special">,</span> <span class="identifier">state</span>
569 <span class="special">,</span> <span class="identifier">t_start</span>
570 <span class="special">,</span> <span class="identifier">t_end</span>
571 <span class="special">,</span> <span class="identifier">dt</span>
572 <span class="special">)</span></code>
576 <li class="listitem">
577 This stepper works with all steppers fulfilling the Stepper concept,
578 the ControlledStepper concept or the DenseOutputStepper concept.
580 <li class="listitem">
581 The value of <code class="computeroutput"><span class="identifier">state</span></code>
582 is the current state of the ODE during the iteration.
586 <div class="section">
587 <div class="titlepage"><div><div><h4 class="title">
588 <a name="boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_time_iterator"></a><a class="link" href="iterators_and_ranges.html#boost_numeric_odeint.odeint_in_detail.iterators_and_ranges.times_time_iterator" title="times_time_iterator">times_time_iterator</a>
589 </h4></div></div></div>
590 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
591 <li class="listitem">
592 Definition: <code class="computeroutput"><span class="identifier">times_time_iterator</span><span class="special"><</span> <span class="identifier">Stepper</span>
593 <span class="special">,</span> <span class="identifier">System</span>
594 <span class="special">,</span> <span class="identifier">State</span>
595 <span class="special">,</span> <span class="identifier">TimeIterator</span><span class="special">></span></code>
597 <li class="listitem">
598 <code class="computeroutput"><span class="identifier">value_type</span></code> is <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
599 <span class="identifier">State</span> <span class="special">,</span>
600 <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span></code>
602 <li class="listitem">
603 <code class="computeroutput"><span class="identifier">reference_type</span></code> is
604 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span>
605 <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">,</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">></span>
606 <span class="keyword">const</span><span class="special">&</span></code>
608 <li class="listitem">
610 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
611 <li class="listitem">
612 <code class="computeroutput"><span class="identifier">make_times_time_iterator_begin</span><span class="special">(</span> <span class="identifier">stepper</span>
613 <span class="special">,</span> <span class="identifier">system</span>
614 <span class="special">,</span> <span class="identifier">state</span>
615 <span class="special">,</span> <span class="identifier">t_start</span>
616 <span class="special">,</span> <span class="identifier">t_end</span>
617 <span class="special">,</span> <span class="identifier">dt</span>
618 <span class="special">)</span></code>
620 <li class="listitem">
621 <code class="computeroutput"><span class="identifier">make_times_time_step_iterator_end</span><span class="special">(</span> <span class="identifier">stepper</span>
622 <span class="special">,</span> <span class="identifier">system</span>
623 <span class="special">,</span> <span class="identifier">state</span>
624 <span class="special">)</span></code>
626 <li class="listitem">
627 <code class="computeroutput"><span class="identifier">make_times_time_range</span><span class="special">(</span> <span class="identifier">stepper</span>
628 <span class="special">,</span> <span class="identifier">system</span>
629 <span class="special">,</span> <span class="identifier">state</span>
630 <span class="special">,</span> <span class="identifier">t_start</span>
631 <span class="special">,</span> <span class="identifier">t_end</span>
632 <span class="special">,</span> <span class="identifier">dt</span>
633 <span class="special">)</span></code>
637 <li class="listitem">
638 This stepper works with all steppers fulfilling the Stepper concept,
639 the ControlledStepper concept or the DenseOutputStepper concept.
641 <li class="listitem">
642 This stepper updates the value of <code class="computeroutput"><span class="identifier">state</span></code>.
643 The value of <code class="computeroutput"><span class="identifier">state</span></code>
644 is the current state of the ODE during the iteration.
649 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
650 <td align="left"></td>
651 <td align="right"><div class="copyright-footer">Copyright © 2009-2012 Karsten
652 Ahnert and Mario Mulansky<p>
653 Distributed under the Boost Software License, Version 1.0. (See accompanying
654 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>)
659 <div class="spirit-nav">
660 <a accesskey="p" href="integrate_functions.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../odeint_in_detail.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="state_types__algebras_and_operations.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>