• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Dense Output Stepper</title>
5<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Chapter 1. Boost.Numeric.Odeint">
8<link rel="up" href="../concepts.html" title="Concepts">
9<link rel="prev" href="controlled_stepper.html" title="Controlled Stepper">
10<link rel="next" href="state_algebra_operations.html" title="State Algebra Operations">
11</head>
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>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="controlled_stepper.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.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_algebra_operations.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="boost_numeric_odeint.concepts.dense_output_stepper"></a><a class="link" href="dense_output_stepper.html" title="Dense Output Stepper">Dense
28      Output Stepper</a>
29</h3></div></div></div>
30<p>
31        This concept specifies the interface a dense output stepper has to fulfill
32        to be used within <a class="link" href="../odeint_in_detail/integrate_functions.html" title="Integrate functions">integrate
33        functions</a>.
34      </p>
35<h5>
36<a name="boost_numeric_odeint.concepts.dense_output_stepper.h0"></a>
37        <span class="phrase"><a name="boost_numeric_odeint.concepts.dense_output_stepper.description"></a></span><a class="link" href="dense_output_stepper.html#boost_numeric_odeint.concepts.dense_output_stepper.description">Description</a>
38      </h5>
39<p>
40        A dense output stepper following this Dense Output Stepper concept provides
41        the possibility to perform a single step of the solution <span class="emphasis"><em>x(t)</em></span>
42        of an ODE to obtain <span class="emphasis"><em>x(t+dt)</em></span>. The step-size <code class="computeroutput"><span class="identifier">dt</span></code> might be adjusted automatically due
43        to error control. Dense output steppers also can interpolate the solution
44        to calculate the state <span class="emphasis"><em>x(t')</em></span> at any point <span class="emphasis"><em>t
45        &lt;= t' &lt;= t+dt</em></span>.
46      </p>
47<h5>
48<a name="boost_numeric_odeint.concepts.dense_output_stepper.h1"></a>
49        <span class="phrase"><a name="boost_numeric_odeint.concepts.dense_output_stepper.associated_types"></a></span><a class="link" href="dense_output_stepper.html#boost_numeric_odeint.concepts.dense_output_stepper.associated_types">Associated
50        types</a>
51      </h5>
52<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
53<li class="listitem">
54            <p><span class="bold"><strong>state_type</strong></span></p>
55<p><code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">state_type</span></code></p>
56<p>The
57            type characterizing the state of the ODE, hence <span class="emphasis"><em>x</em></span>.</p>
58          </li>
59<li class="listitem">
60            <p><span class="bold"><strong>deriv_type</strong></span></p>
61<p><code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">deriv_type</span></code></p>
62<p>The
63            type characterizing the derivative of the ODE, hence <span class="emphasis"><em>d x/dt</em></span>.</p>
64          </li>
65<li class="listitem">
66            <p><span class="bold"><strong>time_type</strong></span></p>
67<p><code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span></code></p>
68<p>The
69            type characterizing the dependent variable of the ODE, hence the time
70            <span class="emphasis"><em>t</em></span>.</p>
71          </li>
72<li class="listitem">
73            <p><span class="bold"><strong>value_type</strong></span></p>
74<p><code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">value_type</span></code></p>
75<p>The
76            numerical data type which is used within the stepper, something like
77            <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code>,
78            <code class="computeroutput"><span class="identifier">complex</span><span class="special">&amp;</span><span class="identifier">lt</span><span class="special">;</span> <span class="keyword">double</span> <span class="special">&amp;</span><span class="identifier">gt</span><span class="special">;</span></code>.</p>
79          </li>
80<li class="listitem">
81            <p><span class="bold"><strong>stepper_category</strong></span></p>
82<p><code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">stepper_category</span></code></p>
83<p>A
84            tag type characterizing the category of the stepper. This type must be
85            convertible to <code class="computeroutput"><span class="identifier">dense_output_stepper_tag</span></code>.</p>
86          </li>
87</ul></div>
88<h5>
89<a name="boost_numeric_odeint.concepts.dense_output_stepper.h2"></a>
90        <span class="phrase"><a name="boost_numeric_odeint.concepts.dense_output_stepper.notation"></a></span><a class="link" href="dense_output_stepper.html#boost_numeric_odeint.concepts.dense_output_stepper.notation">Notation</a>
91      </h5>
92<div class="variablelist">
93<p class="title"><b></b></p>
94<dl class="variablelist">
95<dt><span class="term"><code class="computeroutput"><span class="identifier">Stepper</span></code></span></dt>
96<dd><p>
97              A type that is a model of Dense Output Stepper
98            </p></dd>
99<dt><span class="term"><code class="computeroutput"><span class="identifier">State</span></code></span></dt>
100<dd><p>
101              A type representing the state <span class="emphasis"><em>x</em></span> of the ODE
102            </p></dd>
103<dt><span class="term"><code class="computeroutput"><span class="identifier">stepper</span></code></span></dt>
104<dd><p>
105              An object of type <code class="computeroutput"><span class="identifier">Stepper</span></code>
106            </p></dd>
107<dt><span class="term"><code class="computeroutput"><span class="identifier">x0</span></code>, <code class="computeroutput"><span class="identifier">x</span></code></span></dt>
108<dd><p>
109              Object of type <code class="computeroutput"><span class="identifier">State</span></code>
110            </p></dd>
111<dt><span class="term"><code class="computeroutput"><span class="identifier">t0</span></code>, <code class="computeroutput"><span class="identifier">dt0</span></code>, <code class="computeroutput"><span class="identifier">t</span></code></span></dt>
112<dd><p>
113              Objects of type <code class="computeroutput"><span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span></code>
114            </p></dd>
115<dt><span class="term"><code class="computeroutput"><span class="identifier">sys</span></code></span></dt>
116<dd><p>
117              An object defining the ODE, should be a model of <a class="link" href="system.html" title="System">System</a>,
118              <a class="link" href="symplectic_system.html" title="Symplectic System">Symplectic
119              System</a>, <a class="link" href="simple_symplectic_system.html" title="Simple Symplectic System">Simple
120              Symplectic System</a> or <a class="link" href="implicit_system.html" title="Implicit System">Implicit
121              System</a>.
122            </p></dd>
123</dl>
124</div>
125<h5>
126<a name="boost_numeric_odeint.concepts.dense_output_stepper.h3"></a>
127        <span class="phrase"><a name="boost_numeric_odeint.concepts.dense_output_stepper.valid_expressions"></a></span><a class="link" href="dense_output_stepper.html#boost_numeric_odeint.concepts.dense_output_stepper.valid_expressions">Valid
128        Expressions</a>
129      </h5>
130<div class="informaltable"><table class="table">
131<colgroup>
132<col>
133<col>
134<col>
135<col>
136</colgroup>
137<thead><tr>
138<th>
139                <p>
140                  Name
141                </p>
142              </th>
143<th>
144                <p>
145                  Expression
146                </p>
147              </th>
148<th>
149                <p>
150                  Type
151                </p>
152              </th>
153<th>
154                <p>
155                  Semantics
156                </p>
157              </th>
158</tr></thead>
159<tbody>
160<tr>
161<td>
162                <p>
163                  Initialize integration
164                </p>
165              </td>
166<td>
167                <p>
168                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">initialize</span><span class="special">(</span>
169                  <span class="identifier">x0</span> <span class="special">,</span>
170                  <span class="identifier">t0</span> <span class="special">,</span>
171                  <span class="identifier">dt0</span> <span class="special">)</span></code>
172                </p>
173              </td>
174<td>
175                <p>
176                  void
177                </p>
178              </td>
179<td>
180                <p>
181                  Initializes the stepper with initial values <code class="computeroutput"><span class="identifier">x0</span></code>,
182                  <code class="computeroutput"><span class="identifier">t0</span></code> and <code class="computeroutput"><span class="identifier">dt0</span></code>.
183                </p>
184              </td>
185</tr>
186<tr>
187<td>
188                <p>
189                  Do step
190                </p>
191              </td>
192<td>
193                <p>
194                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">do_step</span><span class="special">(</span>
195                  <span class="identifier">sys</span> <span class="special">)</span></code>
196                </p>
197              </td>
198<td>
199                <p>
200                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span>
201                  <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">,</span>
202                  <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span> <span class="special">&gt;</span></code>
203                </p>
204              </td>
205<td>
206                <p>
207                  Performs one step using the ODE defined by <code class="computeroutput"><span class="identifier">sys</span></code>.
208                  The step-size might be changed internally due to error control.
209                  This function returns a pair containing <code class="computeroutput"><span class="identifier">t</span></code>
210                  and <code class="computeroutput"><span class="identifier">t</span><span class="special">+</span><span class="identifier">dt</span></code> representing the interval
211                  for which interpolation can be performed.
212                </p>
213              </td>
214</tr>
215<tr>
216<td>
217                <p>
218                  Do interpolation
219                </p>
220              </td>
221<td>
222                <p>
223                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">calc_state</span><span class="special">(</span>
224                  <span class="identifier">t_inter</span> <span class="special">,</span>
225                  <span class="identifier">x</span> <span class="special">)</span></code>
226                </p>
227              </td>
228<td>
229                <p>
230                  <code class="computeroutput"><span class="keyword">void</span></code>
231                </p>
232              </td>
233<td>
234                <p>
235                  Performs the interpolation to calculate /x(t<sub>inter</sub>/) where /t &lt;=
236                  t<sub>inter</sub> &lt;= t+dt/.
237                </p>
238              </td>
239</tr>
240<tr>
241<td>
242                <p>
243                  Get current time
244                </p>
245              </td>
246<td>
247                <p>
248                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">current_time</span><span class="special">()</span></code>
249                </p>
250              </td>
251<td>
252                <p>
253                  <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span><span class="special">&amp;</span></code>
254                </p>
255              </td>
256<td>
257                <p>
258                  Returns the current time <span class="emphasis"><em>t+dt</em></span> of the stepper,
259                  that is the end time of the last step and the starting time for
260                  the next call of <code class="computeroutput"><span class="identifier">do_step</span></code>
261                </p>
262              </td>
263</tr>
264<tr>
265<td>
266                <p>
267                  Get current state
268                </p>
269              </td>
270<td>
271                <p>
272                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">current_state</span><span class="special">()</span></code>
273                </p>
274              </td>
275<td>
276                <p>
277                  <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">state_type</span><span class="special">&amp;</span></code>
278                </p>
279              </td>
280<td>
281                <p>
282                  Returns the current state of the stepper, that is <span class="emphasis"><em>x(t+dt)</em></span>,
283                  the state at the time returned by <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">current_time</span><span class="special">()</span></code>
284                </p>
285              </td>
286</tr>
287<tr>
288<td>
289                <p>
290                  Get current time step
291                </p>
292              </td>
293<td>
294                <p>
295                  <code class="computeroutput"><span class="identifier">stepper</span><span class="special">.</span><span class="identifier">current_time_step</span><span class="special">()</span></code>
296                </p>
297              </td>
298<td>
299                <p>
300                  <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">Stepper</span><span class="special">::</span><span class="identifier">time_type</span><span class="special">&amp;</span></code>
301                </p>
302              </td>
303<td>
304                <p>
305                  Returns the current step size of the stepper, that is <span class="emphasis"><em>dt</em></span>
306                </p>
307              </td>
308</tr>
309</tbody>
310</table></div>
311<h5>
312<a name="boost_numeric_odeint.concepts.dense_output_stepper.h4"></a>
313        <span class="phrase"><a name="boost_numeric_odeint.concepts.dense_output_stepper.models"></a></span><a class="link" href="dense_output_stepper.html#boost_numeric_odeint.concepts.dense_output_stepper.models">Models</a>
314      </h5>
315<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
316<li class="listitem">
317            <code class="computeroutput"><span class="identifier">dense_output_controlled_explicit_fsal</span><span class="special">&lt;</span> <span class="identifier">controlled_error_stepper_fsal</span><span class="special">&lt;</span> <span class="identifier">runge_kutta_dopri5</span>
318            <span class="special">&gt;</span></code>
319          </li>
320<li class="listitem">
321            <code class="computeroutput"><span class="identifier">bulirsch_stoer_dense_out</span></code>
322          </li>
323<li class="listitem">
324            <code class="computeroutput"><span class="identifier">rosenbrock4_dense_output</span></code>
325          </li>
326</ul></div>
327</div>
328<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
329<td align="left"></td>
330<td align="right"><div class="copyright-footer">Copyright © 2009-2015 Karsten Ahnert and Mario Mulansky<p>
331        Distributed under the Boost Software License, Version 1.0. (See accompanying
332        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>)
333      </p>
334</div></td>
335</tr></table>
336<hr>
337<div class="spirit-nav">
338<a accesskey="p" href="controlled_stepper.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.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_algebra_operations.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
339</div>
340</body>
341</html>
342