1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math4.legacy.ode.nonstiff;
19
20
21 import org.apache.commons.math4.legacy.core.Field;
22 import org.apache.commons.math4.legacy.core.RealFieldElement;
23 import org.apache.commons.math4.legacy.ode.FieldEquationsMapper;
24 import org.apache.commons.math4.legacy.ode.FieldODEStateAndDerivative;
25 import org.junit.Test;
26
27 public class EulerFieldStepInterpolatorTest extends RungeKuttaFieldStepInterpolatorAbstractTest {
28
29 @Override
30 protected <T extends RealFieldElement<T>> RungeKuttaFieldStepInterpolator<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 EulerFieldStepInterpolator<>(field, forward, yDotK,
37 globalPreviousState, globalCurrentState,
38 softPreviousState, softCurrentState,
39 mapper);
40 }
41
42 @Override
43 protected <T extends RealFieldElement<T>> FieldButcherArrayProvider<T>
44 createButcherArrayProvider(final Field<T> field) {
45 return new EulerFieldIntegrator<>(field, field.getOne());
46 }
47
48 @Override
49 @Test
50 public void interpolationAtBounds() {
51 doInterpolationAtBounds(Decimal64Field.getInstance(), 1.0e-15);
52 }
53
54 @Override
55 @Test
56 public void interpolationInside() {
57 doInterpolationInside(Decimal64Field.getInstance(), 3.3e-4, 7.9e-3);
58 }
59
60 @Override
61 @Test
62 public void nonFieldInterpolatorConsistency() {
63 doNonFieldInterpolatorConsistency(Decimal64Field.getInstance(), 7.0e-18, 1.0e-50, 1.0e-50, 1.0e-50);
64 }
65 }