File: Evolution.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (170 lines) | stat: -rw-r--r-- 9,440 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".

(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Evolution</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Evolution">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Evolution">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Ordinary-Differential-Equations.html#Ordinary-Differential-Equations" rel="up" title="Ordinary Differential Equations">
<link href="Driver.html#Driver" rel="next" title="Driver">
<link href="Adaptive-Step_002dsize-Control.html#Adaptive-Step_002dsize-Control" rel="previous" title="Adaptive Step-size Control">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Evolution"></a>
<div class="header">
<p>
Next: <a href="Driver.html#Driver" accesskey="n" rel="next">Driver</a>, Previous: <a href="Adaptive-Step_002dsize-Control.html#Adaptive-Step_002dsize-Control" accesskey="p" rel="previous">Adaptive Step-size Control</a>, Up: <a href="Ordinary-Differential-Equations.html#Ordinary-Differential-Equations" accesskey="u" rel="up">Ordinary Differential Equations</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Evolution-1"></a>
<h3 class="section">27.4 Evolution</h3>

<p>The evolution function combines the results of a stepping function and
control function to reliably advance the solution forward one step
using an acceptable step-size.
</p>
<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005falloc"></a>Function: <em>gsl_odeiv2_evolve *</em> <strong>gsl_odeiv2_evolve_alloc</strong> <em>(size_t <var>dim</var>)</em></dt>
<dd><a name="index-gsl_005fodeiv2_005fevolve"></a>
<p>This function returns a pointer to a newly allocated instance of an
evolution function for a system of <var>dim</var> dimensions.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005fapply"></a>Function: <em>int</em> <strong>gsl_odeiv2_evolve_apply</strong> <em>(gsl_odeiv2_evolve * <var>e</var>, gsl_odeiv2_control * <var>con</var>, gsl_odeiv2_step * <var>step</var>, const gsl_odeiv2_system * <var>sys</var>, double * <var>t</var>, double <var>t1</var>, double * <var>h</var>, double <var>y</var>[])</em></dt>
<dd><p>This function advances the system (<var>e</var>, <var>sys</var>) from time
<var>t</var> and position <var>y</var> using the stepping function <var>step</var>.
The new time and position are stored in <var>t</var> and <var>y</var> on output.
</p>
<p>The initial step-size is taken as <var>h</var>. The control function
<var>con</var> is applied to check whether the local error estimated by the
stepping function <var>step</var> using step-size <var>h</var> exceeds the
required error tolerance. If the error is too high, the step is
retried by calling <var>step</var> with a decreased step-size. This process
is continued until an acceptable step-size is found. An estimate of
the local error for the step can be obtained from the components of
the array <code><var>e</var>-&gt;yerr[]</code>.
</p>
<p>If the user-supplied functions defined in the system <var>sys</var> returns
<code>GSL_EBADFUNC</code>, the function returns immediately with the same
return code. In this case the user must call
<code>gsl_odeiv2_step_reset</code> and
<code>gsl_odeiv2_evolve_reset</code> before calling this function again.
</p>
<p>Otherwise, if the user-supplied functions defined in the system
<var>sys</var> or the stepping function <var>step</var> return a status other
than <code>GSL_SUCCESS</code>, the step is retried with a decreased
step-size. If the step-size decreases below machine precision, a
status of <code>GSL_FAILURE</code> is returned if the user functions
returned <code>GSL_SUCCESS</code>. Otherwise the value returned by user
function is returned. If no acceptable step can be made, <var>t</var> and
<var>y</var> will be restored to their pre-step values and <var>h</var> contains
the final attempted step-size.
</p>
<p>If the step is successful the function returns a suggested step-size
for the next step in <var>h</var>. The maximum time <var>t1</var> is guaranteed
not to be exceeded by the time-step. On the final time-step the value
of <var>t</var> will be set to <var>t1</var> exactly.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005fapply_005ffixed_005fstep"></a>Function: <em>int</em> <strong>gsl_odeiv2_evolve_apply_fixed_step</strong> <em>(gsl_odeiv2_evolve * <var>e</var>, gsl_odeiv2_control * <var>con</var>, gsl_odeiv2_step * <var>step</var>, const gsl_odeiv2_system * <var>sys</var>, double * <var>t</var>, const double <var>h</var>, double <var>y</var>[])</em></dt>
<dd><p>This function advances the ODE-system (<var>e</var>, <var>sys</var>, <var>con</var>)
from time <var>t</var> and position <var>y</var> using the stepping function
<var>step</var> by a specified step size <var>h</var>. If the local error
estimated by the stepping function exceeds the desired error level,
the step is not taken and the function returns
<code>GSL_FAILURE</code>. Otherwise the value returned by user function is
returned.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005freset"></a>Function: <em>int</em> <strong>gsl_odeiv2_evolve_reset</strong> <em>(gsl_odeiv2_evolve * <var>e</var>)</em></dt>
<dd><p>This function resets the evolution function <var>e</var>.  It should be used
whenever the next use of <var>e</var> will not be a continuation of a
previous step.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005ffree"></a>Function: <em>void</em> <strong>gsl_odeiv2_evolve_free</strong> <em>(gsl_odeiv2_evolve * <var>e</var>)</em></dt>
<dd><p>This function frees all the memory associated with the evolution function
<var>e</var>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fodeiv2_005fevolve_005fset_005fdriver"></a>Function: <em>int</em> <strong>gsl_odeiv2_evolve_set_driver</strong> <em>(gsl_odeiv2_evolve * <var>e</var>, const gsl_odeiv2_driver * <var>d</var>)</em></dt>
<dd><p>This function sets a pointer of the driver object <var>d</var> for evolve
object <var>e</var>.
</p></dd></dl>


<a name="index-discontinuities_002c-in-ODE-systems"></a>
<p>If a system has discontinuous changes in the derivatives at known
points, it is advisable to evolve the system between each discontinuity
in sequence.  For example, if a step-change in an external driving
force occurs at times <em>t_a, t_b</em> and <em>t_c</em> then evolution
should be carried out over the ranges <em>(t_0,t_a)</em>,
<em>(t_a,t_b)</em>, <em>(t_b,t_c)</em>, and <em>(t_c,t_1)</em> separately
and not directly over the range <em>(t_0,t_1)</em>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Driver.html#Driver" accesskey="n" rel="next">Driver</a>, Previous: <a href="Adaptive-Step_002dsize-Control.html#Adaptive-Step_002dsize-Control" accesskey="p" rel="previous">Adaptive Step-size Control</a>, Up: <a href="Ordinary-Differential-Equations.html#Ordinary-Differential-Equations" accesskey="u" rel="up">Ordinary Differential Equations</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>