comparison libs/commons-math-2.1/docs/apidocs/src-html/org/apache/commons/math/ode/ODEIntegrator.html @ 13:cbf34dd4d7e6

commons-math-2.1 added
author dwinter
date Tue, 04 Jan 2011 10:02:07 +0100
parents
children
comparison
equal deleted inserted replaced
12:970d26a94fb7 13:cbf34dd4d7e6
1 <HTML>
2 <BODY BGCOLOR="white">
3 <PRE>
4 <FONT color="green">001</FONT> /*<a name="line.1"></a>
5 <FONT color="green">002</FONT> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
6 <FONT color="green">003</FONT> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a>
7 <FONT color="green">004</FONT> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
8 <FONT color="green">005</FONT> * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
9 <FONT color="green">006</FONT> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
10 <FONT color="green">007</FONT> * the License. You may obtain a copy of the License at<a name="line.7"></a>
11 <FONT color="green">008</FONT> *<a name="line.8"></a>
12 <FONT color="green">009</FONT> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
13 <FONT color="green">010</FONT> *<a name="line.10"></a>
14 <FONT color="green">011</FONT> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
15 <FONT color="green">012</FONT> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
16 <FONT color="green">013</FONT> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
17 <FONT color="green">014</FONT> * See the License for the specific language governing permissions and<a name="line.14"></a>
18 <FONT color="green">015</FONT> * limitations under the License.<a name="line.15"></a>
19 <FONT color="green">016</FONT> */<a name="line.16"></a>
20 <FONT color="green">017</FONT> <a name="line.17"></a>
21 <FONT color="green">018</FONT> package org.apache.commons.math.ode;<a name="line.18"></a>
22 <FONT color="green">019</FONT> <a name="line.19"></a>
23 <FONT color="green">020</FONT> import java.util.Collection;<a name="line.20"></a>
24 <FONT color="green">021</FONT> <a name="line.21"></a>
25 <FONT color="green">022</FONT> import org.apache.commons.math.ode.events.EventHandler;<a name="line.22"></a>
26 <FONT color="green">023</FONT> import org.apache.commons.math.ode.sampling.StepHandler;<a name="line.23"></a>
27 <FONT color="green">024</FONT> <a name="line.24"></a>
28 <FONT color="green">025</FONT> /**<a name="line.25"></a>
29 <FONT color="green">026</FONT> * This interface defines the common parts shared by integrators<a name="line.26"></a>
30 <FONT color="green">027</FONT> * for first and second order differential equations.<a name="line.27"></a>
31 <FONT color="green">028</FONT> * @see FirstOrderIntegrator<a name="line.28"></a>
32 <FONT color="green">029</FONT> * @see SecondOrderIntegrator<a name="line.29"></a>
33 <FONT color="green">030</FONT> * @version $Revision: 785473 $ $Date: 2009-06-17 00:02:35 -0400 (Wed, 17 Jun 2009) $<a name="line.30"></a>
34 <FONT color="green">031</FONT> * @since 2.0<a name="line.31"></a>
35 <FONT color="green">032</FONT> */<a name="line.32"></a>
36 <FONT color="green">033</FONT> public interface ODEIntegrator {<a name="line.33"></a>
37 <FONT color="green">034</FONT> <a name="line.34"></a>
38 <FONT color="green">035</FONT> /** Get the name of the method.<a name="line.35"></a>
39 <FONT color="green">036</FONT> * @return name of the method<a name="line.36"></a>
40 <FONT color="green">037</FONT> */<a name="line.37"></a>
41 <FONT color="green">038</FONT> String getName();<a name="line.38"></a>
42 <FONT color="green">039</FONT> <a name="line.39"></a>
43 <FONT color="green">040</FONT> /** Add a step handler to this integrator.<a name="line.40"></a>
44 <FONT color="green">041</FONT> * &lt;p&gt;The handler will be called by the integrator for each accepted<a name="line.41"></a>
45 <FONT color="green">042</FONT> * step.&lt;/p&gt;<a name="line.42"></a>
46 <FONT color="green">043</FONT> * @param handler handler for the accepted steps<a name="line.43"></a>
47 <FONT color="green">044</FONT> * @see #getStepHandlers()<a name="line.44"></a>
48 <FONT color="green">045</FONT> * @see #clearStepHandlers()<a name="line.45"></a>
49 <FONT color="green">046</FONT> * @since 2.0<a name="line.46"></a>
50 <FONT color="green">047</FONT> */<a name="line.47"></a>
51 <FONT color="green">048</FONT> void addStepHandler(StepHandler handler);<a name="line.48"></a>
52 <FONT color="green">049</FONT> <a name="line.49"></a>
53 <FONT color="green">050</FONT> /** Get all the step handlers that have been added to the integrator.<a name="line.50"></a>
54 <FONT color="green">051</FONT> * @return an unmodifiable collection of the added events handlers<a name="line.51"></a>
55 <FONT color="green">052</FONT> * @see #addStepHandler(StepHandler)<a name="line.52"></a>
56 <FONT color="green">053</FONT> * @see #clearStepHandlers()<a name="line.53"></a>
57 <FONT color="green">054</FONT> * @since 2.0<a name="line.54"></a>
58 <FONT color="green">055</FONT> */<a name="line.55"></a>
59 <FONT color="green">056</FONT> Collection&lt;StepHandler&gt; getStepHandlers();<a name="line.56"></a>
60 <FONT color="green">057</FONT> <a name="line.57"></a>
61 <FONT color="green">058</FONT> /** Remove all the step handlers that have been added to the integrator.<a name="line.58"></a>
62 <FONT color="green">059</FONT> * @see #addStepHandler(StepHandler)<a name="line.59"></a>
63 <FONT color="green">060</FONT> * @see #getStepHandlers()<a name="line.60"></a>
64 <FONT color="green">061</FONT> * @since 2.0<a name="line.61"></a>
65 <FONT color="green">062</FONT> */<a name="line.62"></a>
66 <FONT color="green">063</FONT> void clearStepHandlers();<a name="line.63"></a>
67 <FONT color="green">064</FONT> <a name="line.64"></a>
68 <FONT color="green">065</FONT> /** Add an event handler to the integrator.<a name="line.65"></a>
69 <FONT color="green">066</FONT> * @param handler event handler<a name="line.66"></a>
70 <FONT color="green">067</FONT> * @param maxCheckInterval maximal time interval between switching<a name="line.67"></a>
71 <FONT color="green">068</FONT> * function checks (this interval prevents missing sign changes in<a name="line.68"></a>
72 <FONT color="green">069</FONT> * case the integration steps becomes very large)<a name="line.69"></a>
73 <FONT color="green">070</FONT> * @param convergence convergence threshold in the event time search<a name="line.70"></a>
74 <FONT color="green">071</FONT> * @param maxIterationCount upper limit of the iteration count in<a name="line.71"></a>
75 <FONT color="green">072</FONT> * the event time search<a name="line.72"></a>
76 <FONT color="green">073</FONT> * @see #getEventHandlers()<a name="line.73"></a>
77 <FONT color="green">074</FONT> * @see #clearEventHandlers()<a name="line.74"></a>
78 <FONT color="green">075</FONT> */<a name="line.75"></a>
79 <FONT color="green">076</FONT> void addEventHandler(EventHandler handler,<a name="line.76"></a>
80 <FONT color="green">077</FONT> double maxCheckInterval,<a name="line.77"></a>
81 <FONT color="green">078</FONT> double convergence,<a name="line.78"></a>
82 <FONT color="green">079</FONT> int maxIterationCount);<a name="line.79"></a>
83 <FONT color="green">080</FONT> <a name="line.80"></a>
84 <FONT color="green">081</FONT> /** Get all the event handlers that have been added to the integrator.<a name="line.81"></a>
85 <FONT color="green">082</FONT> * @return an unmodifiable collection of the added events handlers<a name="line.82"></a>
86 <FONT color="green">083</FONT> * @see #addEventHandler(EventHandler, double, double, int)<a name="line.83"></a>
87 <FONT color="green">084</FONT> * @see #clearEventHandlers()<a name="line.84"></a>
88 <FONT color="green">085</FONT> */<a name="line.85"></a>
89 <FONT color="green">086</FONT> Collection&lt;EventHandler&gt; getEventHandlers();<a name="line.86"></a>
90 <FONT color="green">087</FONT> <a name="line.87"></a>
91 <FONT color="green">088</FONT> /** Remove all the event handlers that have been added to the integrator.<a name="line.88"></a>
92 <FONT color="green">089</FONT> * @see #addEventHandler(EventHandler, double, double, int)<a name="line.89"></a>
93 <FONT color="green">090</FONT> * @see #getEventHandlers()<a name="line.90"></a>
94 <FONT color="green">091</FONT> */<a name="line.91"></a>
95 <FONT color="green">092</FONT> void clearEventHandlers();<a name="line.92"></a>
96 <FONT color="green">093</FONT> <a name="line.93"></a>
97 <FONT color="green">094</FONT> /** Get the current value of the step start time t&lt;sub&gt;i&lt;/sub&gt;.<a name="line.94"></a>
98 <FONT color="green">095</FONT> * &lt;p&gt;This method can be called during integration (typically by<a name="line.95"></a>
99 <FONT color="green">096</FONT> * the object implementing the {@link FirstOrderDifferentialEquations<a name="line.96"></a>
100 <FONT color="green">097</FONT> * differential equations} problem) if the value of the current step that<a name="line.97"></a>
101 <FONT color="green">098</FONT> * is attempted is needed.&lt;/p&gt;<a name="line.98"></a>
102 <FONT color="green">099</FONT> * &lt;p&gt;The result is undefined if the method is called outside of<a name="line.99"></a>
103 <FONT color="green">100</FONT> * calls to &lt;code&gt;integrate&lt;/code&gt;.&lt;/p&gt;<a name="line.100"></a>
104 <FONT color="green">101</FONT> * @return current value of the step start time t&lt;sub&gt;i&lt;/sub&gt;<a name="line.101"></a>
105 <FONT color="green">102</FONT> */<a name="line.102"></a>
106 <FONT color="green">103</FONT> double getCurrentStepStart();<a name="line.103"></a>
107 <FONT color="green">104</FONT> <a name="line.104"></a>
108 <FONT color="green">105</FONT> /** Get the current signed value of the integration stepsize.<a name="line.105"></a>
109 <FONT color="green">106</FONT> * &lt;p&gt;This method can be called during integration (typically by<a name="line.106"></a>
110 <FONT color="green">107</FONT> * the object implementing the {@link FirstOrderDifferentialEquations<a name="line.107"></a>
111 <FONT color="green">108</FONT> * differential equations} problem) if the signed value of the current stepsize<a name="line.108"></a>
112 <FONT color="green">109</FONT> * that is tried is needed.&lt;/p&gt;<a name="line.109"></a>
113 <FONT color="green">110</FONT> * &lt;p&gt;The result is undefined if the method is called outside of<a name="line.110"></a>
114 <FONT color="green">111</FONT> * calls to &lt;code&gt;integrate&lt;/code&gt;.&lt;/p&gt;<a name="line.111"></a>
115 <FONT color="green">112</FONT> * @return current signed value of the stepsize<a name="line.112"></a>
116 <FONT color="green">113</FONT> */<a name="line.113"></a>
117 <FONT color="green">114</FONT> double getCurrentSignedStepsize();<a name="line.114"></a>
118 <FONT color="green">115</FONT> <a name="line.115"></a>
119 <FONT color="green">116</FONT> /** Set the maximal number of differential equations function evaluations.<a name="line.116"></a>
120 <FONT color="green">117</FONT> * &lt;p&gt;The purpose of this method is to avoid infinite loops which can occur<a name="line.117"></a>
121 <FONT color="green">118</FONT> * for example when stringent error constraints are set or when lots of<a name="line.118"></a>
122 <FONT color="green">119</FONT> * discrete events are triggered, thus leading to many rejected steps.&lt;/p&gt;<a name="line.119"></a>
123 <FONT color="green">120</FONT> * @param maxEvaluations maximal number of function evaluations (negative<a name="line.120"></a>
124 <FONT color="green">121</FONT> * values are silently converted to maximal integer value, thus representing<a name="line.121"></a>
125 <FONT color="green">122</FONT> * almost unlimited evaluations)<a name="line.122"></a>
126 <FONT color="green">123</FONT> */<a name="line.123"></a>
127 <FONT color="green">124</FONT> void setMaxEvaluations(int maxEvaluations);<a name="line.124"></a>
128 <FONT color="green">125</FONT> <a name="line.125"></a>
129 <FONT color="green">126</FONT> /** Get the maximal number of functions evaluations.<a name="line.126"></a>
130 <FONT color="green">127</FONT> * @return maximal number of functions evaluations<a name="line.127"></a>
131 <FONT color="green">128</FONT> */<a name="line.128"></a>
132 <FONT color="green">129</FONT> int getMaxEvaluations();<a name="line.129"></a>
133 <FONT color="green">130</FONT> <a name="line.130"></a>
134 <FONT color="green">131</FONT> /** Get the number of evaluations of the differential equations function.<a name="line.131"></a>
135 <FONT color="green">132</FONT> * &lt;p&gt;<a name="line.132"></a>
136 <FONT color="green">133</FONT> * The number of evaluations corresponds to the last call to the<a name="line.133"></a>
137 <FONT color="green">134</FONT> * &lt;code&gt;integrate&lt;/code&gt; method. It is 0 if the method has not been called yet.<a name="line.134"></a>
138 <FONT color="green">135</FONT> * &lt;/p&gt;<a name="line.135"></a>
139 <FONT color="green">136</FONT> * @return number of evaluations of the differential equations function<a name="line.136"></a>
140 <FONT color="green">137</FONT> */<a name="line.137"></a>
141 <FONT color="green">138</FONT> int getEvaluations();<a name="line.138"></a>
142 <FONT color="green">139</FONT> <a name="line.139"></a>
143 <FONT color="green">140</FONT> }<a name="line.140"></a>
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204 </PRE>
205 </BODY>
206 </HTML>