1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.hipparchus.ode.nonstiff;
19
20
21 import org.hipparchus.Field;
22 import org.hipparchus.CalculusFieldElement;
23 import org.hipparchus.ode.FieldEquationsMapper;
24 import org.hipparchus.ode.FieldODEStateAndDerivative;
25 import org.hipparchus.util.Binary64Field;
26 import org.junit.Test;
27
28 public class EulerFieldStateInterpolatorTest extends RungeKuttaFieldStateInterpolatorAbstractTest {
29
30 protected <T extends CalculusFieldElement<T>> RungeKuttaFieldStateInterpolator<T>
31 createInterpolator(Field<T> field, boolean forward, T[][] yDotK,
32 FieldODEStateAndDerivative<T> globalPreviousState,
33 FieldODEStateAndDerivative<T> globalCurrentState,
34 FieldODEStateAndDerivative<T> softPreviousState,
35 FieldODEStateAndDerivative<T> softCurrentState, FieldEquationsMapper<T> mapper) {
36 return new EulerFieldStateInterpolator<T>(field, forward, yDotK,
37 globalPreviousState, globalCurrentState,
38 softPreviousState, softCurrentState,
39 mapper);
40 }
41
42 protected <T extends CalculusFieldElement<T>> FieldButcherArrayProvider<T>
43 createButcherArrayProvider(final Field<T> field) {
44 return new EulerFieldIntegrator<T>(field, field.getOne());
45 }
46
47 @Test
48 public void interpolationAtBounds() {
49 doInterpolationAtBounds(Binary64Field.getInstance(), 1.0e-15);
50 }
51
52 @Test
53 public void interpolationInside() {
54 doInterpolationInside(Binary64Field.getInstance(), 3.3e-4, 7.9e-3);
55 }
56
57 @Test
58 public void nonFieldInterpolatorConsistency() {
59 doNonFieldInterpolatorConsistency(Binary64Field.getInstance(), 7.0e-18, 1.0e-50, 1.0e-50, 1.0e-50);
60 }
61
62 }