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