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.ClassicalRungeKuttaFieldIntegrator;
25 import org.hipparchus.ode.nonstiff.FieldButcherArrayProvider;
26 import org.hipparchus.util.Binary64Field;
27 import org.junit.jupiter.api.Test;
28
29 class ClassicalRungeKuttaFieldStateInterpolatorTest 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,
37 FieldEquationsMapper<T> mapper) {
38 return new ClassicalRungeKuttaFieldStateInterpolator<T>(field, forward, yDotK,
39 globalPreviousState, globalCurrentState,
40 softPreviousState, softCurrentState,
41 mapper);
42 }
43
44 protected <T extends CalculusFieldElement<T>> FieldButcherArrayProvider<T>
45 createButcherArrayProvider(final Field<T> field) {
46 return new ClassicalRungeKuttaFieldIntegrator<T>(field, field.getOne());
47 }
48
49 @Test
50 public void interpolationAtBounds() {
51 doInterpolationAtBounds(Binary64Field.getInstance(), 1.0e-15);
52 }
53
54 @Test
55 public void interpolationInside() {
56 doInterpolationInside(Binary64Field.getInstance(), 2.6e-7, 3.6e-6);
57 }
58
59 @Test
60 public void nonFieldInterpolatorConsistency() {
61 doNonFieldInterpolatorConsistency(Binary64Field.getInstance(), 2.8e-17, 1.2e-16, 3.4e-16, 2.1e-17);
62 }
63
64 }