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.exception.MathIllegalStateException;
24  import org.apache.commons.math4.legacy.exception.MaxCountExceededException;
25  import org.apache.commons.math4.legacy.exception.NumberIsTooSmallException;
26  import org.junit.Test;
27  
28  public class AdamsMoultonFieldIntegratorTest extends AdamsFieldIntegratorAbstractTest {
29  
30      @Override
31      protected <T extends RealFieldElement<T>> AdamsFieldIntegrator<T>
32      createIntegrator(Field<T> field, final int nSteps, final double minStep, final double maxStep,
33                       final double scalAbsoluteTolerance, final double scalRelativeTolerance) {
34          return new AdamsMoultonFieldIntegrator<>(field, nSteps, minStep, maxStep,
35                          scalAbsoluteTolerance, scalRelativeTolerance);
36      }
37  
38      @Override
39      protected <T extends RealFieldElement<T>> AdamsFieldIntegrator<T>
40      createIntegrator(Field<T> field, final int nSteps, final double minStep, final double maxStep,
41                       final double[] vecAbsoluteTolerance, final double[] vecRelativeTolerance) {
42          return new AdamsMoultonFieldIntegrator<>(field, nSteps, minStep, maxStep,
43                          vecAbsoluteTolerance, vecRelativeTolerance);
44      }
45  
46      @Override
47      @Test(expected=NumberIsTooSmallException.class)
48      public void testMinStep() {
49          doDimensionCheck(Decimal64Field.getInstance());
50      }
51  
52      @Override
53      @Test
54      public void testIncreasingTolerance() {
55          
56          
57          
58          doTestIncreasingTolerance(Decimal64Field.getInstance(), 0.45, 8.69);
59      }
60  
61      @Override
62      @Test(expected = MaxCountExceededException.class)
63      public void exceedMaxEvaluations() {
64          doExceedMaxEvaluations(Decimal64Field.getInstance(), 650);
65      }
66  
67      @Override
68      @Test
69      public void backward() {
70          doBackward(Decimal64Field.getInstance(), 3.0e-9, 3.0e-9, 1.0e-16, "Adams-Moulton");
71      }
72  
73      @Override
74      @Test
75      public void polynomial() {
76          doPolynomial(Decimal64Field.getInstance(), 5, 2.2e-05, 1.1e-11);
77      }
78  
79      @Override
80      @Test(expected=MathIllegalStateException.class)
81      public void testStartFailure() {
82          doTestStartFailure(Decimal64Field.getInstance());
83      }
84  }