Commit Graph

6312 Commits

Author SHA1 Message Date
Luc Maisonobe ba1ce9b9aa Fixed Butcher arrays constants for Luther integrator. 2016-01-06 12:41:02 +01:00
Luc Maisonobe 85b941ea1f Factor test code. 2016-01-06 12:40:58 +01:00
Luc Maisonobe d53a6f834b Fixed comment. 2016-01-06 12:40:56 +01:00
Luc Maisonobe 1f14ff6ce8 Added test and fixed step interpolator for field version of Gill method. 2016-01-06 12:40:54 +01:00
Luc Maisonobe c4a093c1f2 Added test for field version of classical Runge-Kutta method. 2016-01-06 12:40:49 +01:00
Luc Maisonobe 91b931f79f Reactivated test. 2016-01-06 12:40:49 +01:00
Luc Maisonobe 1077ae03c0 Reduced coupling between integrators and step interpolators. 2016-01-06 12:40:38 +01:00
Luc Maisonobe 41bbbd468a Starting tests on field ODE!
At least we can now run some code ...
2016-01-06 12:40:37 +01:00
Luc Maisonobe 6d1fb4dc3e One step towards immutable step interpolators.
The interpolators do not expect anymore the y and yDot arrays to
be shared with integrator and be updated by it.
2016-01-06 12:40:23 +01:00
Luc Maisonobe aab178594f Fixed wrong state reset in field ode. 2016-01-06 12:40:22 +01:00
Luc Maisonobe c053a327f9 Cehck array dimensions in equations mapper. 2016-01-06 12:40:20 +01:00
Luc Maisonobe c4dd533843 The step interpolator should refer to the integrator array.
This behavior will be changed later on to get immutable objects.
For now, we still rely on arrays being shared between the integrator and
the interpolator.
2016-01-06 12:40:18 +01:00
Luc Maisonobe 335e9df408 Prevent null pointer exception at integration start. 2016-01-06 12:40:16 +01:00
Luc Maisonobe e10c80fa72 Converted constants for step interpolators. 2016-01-06 12:40:14 +01:00
Luc Maisonobe 93d4d37c5f Converted constants for embedded Runge-Kutta integrators. 2016-01-06 12:40:12 +01:00
Luc Maisonobe 3d93574d2c Converted constants for Runge-Kutta integrators. 2016-01-06 12:40:10 +01:00
Luc Maisonobe d4b56e80b4 Removed step interpolator prototyping.
We can just use a factory method in the integrator for building an
interpolator each time we integrate.

In the long term, we will even recreate it at each step so the
interpolator can be immutable.
2016-01-06 12:40:08 +01:00
Luc Maisonobe 40faa3ef12 Replaced static double array constants with field constants.
This will allow for example setting up ode integrators using Dfp
instances with increased accuracy, including for the ode coefficients
themselves.
2016-01-06 12:40:05 +01:00
Luc Maisonobe 35c99d4dea Prepared tests for field-based ODE. 2016-01-06 12:40:03 +01:00
Luc Maisonobe 121c6b6892 Restrictied fields visibility in tests. 2016-01-06 12:39:46 +01:00
Luc Maisonobe 87d71e9d46 Simplified ODE test harness. 2016-01-06 12:39:35 +01:00
Luc Maisonobe 79c4719396 Use a top level interface for bracketed real field solver. 2016-01-06 12:38:03 +01:00
Luc Maisonobe e7a46ac6ca Field-based version of Dormand-Prince 5(4) method for solving ODE. 2016-01-06 12:24:44 +01:00
Luc Maisonobe 301b0a8110 Field-based version of Higham-Hall 5(4) method for solving ODE. 2016-01-06 12:24:43 +01:00
Luc Maisonobe b3c1686093 Field-based version of Dormand-Prince 8(5, 3) method for solving ODE. 2016-01-06 12:24:41 +01:00
Luc Maisonobe 213cb76f59 Added field-based continuous output throughout integration range. 2016-01-06 12:24:39 +01:00
Luc Maisonobe c83289781a Added forgotten copy method in FieldStepInterpolator interface. 2016-01-06 12:24:37 +01:00
Luc Maisonobe 1a26866d77 Intermediate level implementations of variable-step Runge-Kutta methods. 2016-01-06 12:24:29 +01:00
Luc Maisonobe 637027aa50 Avoid spurious array copy. 2016-01-06 12:24:25 +01:00
Luc Maisonobe b21b4c8ded The full set of derivatives are needed in Runge-Kutta. 2016-01-06 12:24:24 +01:00
Luc Maisonobe c4e2ddf266 Added min/max utility methods for RealField elements. 2016-01-06 12:24:21 +01:00
Luc Maisonobe dbb04c1ccb Field-based version of Luther method for solving ODE. 2016-01-06 12:24:20 +01:00
Luc Maisonobe c9aa8f334a Field-based version of 3/8 method for solving ODE. 2016-01-06 12:24:19 +01:00
Luc Maisonobe 58e713233d Field-based version of Gill method for solving ODE. 2016-01-06 12:24:18 +01:00
Luc Maisonobe d67f7e2af9 Field-based version of classical Runge-Kutta method for solving ODE. 2016-01-06 12:24:16 +01:00
Luc Maisonobe defa2be2ea Field-based version of midpoint method for solving ODE. 2016-01-06 12:24:14 +01:00
Luc Maisonobe f05e3793ed Fixed javadoc. 2016-01-06 12:24:12 +01:00
Luc Maisonobe df355deb13 Whitespace. 2016-01-06 12:24:09 +01:00
Luc Maisonobe 738e361a36 Field-based version of Euler method for solving ODE. 2016-01-06 12:24:01 +01:00
Luc Maisonobe f8fa8259db Intermediate level implementations of fixed-step Rung-Kutta methods. 2016-01-06 12:23:59 +01:00
Luc Maisonobe 12aea84075 Integrator returns the full state, not only the time. 2016-01-06 12:23:57 +01:00
Luc Maisonobe 02641ff729 Step interpolator only needs the mapper, not the full equations. 2016-01-06 12:23:54 +01:00
Luc Maisonobe 7644b5a2bd Initialize primary and secondary equations at integration start. 2016-01-06 12:23:51 +01:00
Luc Maisonobe 152073fa08 Use MapArrays utility methods for building arrays. 2016-01-06 12:23:48 +01:00
Luc Maisonobe 22991a71c6 Added init methods for primary and secondary ODE.
This addition is for consistency with other user-implemented interfaces
as step handlers and event handlers. However, since the equations have
only the state as input and the produce derivatives as output, their
init method also only uses state, as derivatives can be computed only
after equations have been initialized, not before.
2016-01-06 12:23:44 +01:00
Luc Maisonobe fe8646e83e Separate equations from mapper. 2016-01-06 12:23:38 +01:00
Luc Maisonobe 6da8a0eba0 Implementation of the top level abstract classes in field ode.
This layer implements boilerplate code, mainly step handling and events
handling. It is independent of the type of integrator used. Below this
layer will be the real implementations (Runge-Kutta, embedded
runge-Kutta, Gragg-Bulirsch-Stoer, Adams, ...).
2016-01-06 12:23:19 +01:00
Luc Maisonobe 7bf9d3dbc5 Top level integrator interface.
We have merged together what was initially in an integrator interface
and in an AbstractIntegrator class. The separation was only due to
backward compatibility issues which prevented to push some functions up
in the interface. A consequence was that users needed to use the
abstract class in their declaration as soon as they needed the
additional features ... which was most of the cases. We try to fix this
here. When 4.0 will be out, the same merging will be done in the
double[] implementation of ode.

JIRA: MATH-1288
2016-01-06 12:23:05 +01:00
Luc Maisonobe 67566fe60b Mapping between primary/secondary equations and flat arrays.
The API is much simpler than the one in the current double[]
implementation. We do not mix anymore the equations and the state.

JIRA: MATH-1288
2016-01-06 12:20:05 +01:00
Luc Maisonobe 7398af4803 Interface and enum for event handling.
This corresponds to an improved g-stop feature. It basically allow to
manage discrete events that occur during ode integration. when the event
occurs, user can decide to log it and continue, or to change the
dynamics of a problem (for example to handle derivatives
discontinuities) or even to stop the integration before its target date
(for example when the exact final date cannot be known beforehand but is
discovered on the fly). It is the second major feature of our ode
package.
2016-01-06 12:19:50 +01:00