Added tests for 3/8 integrator. Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/8e60a5fd Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/8e60a5fd Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/8e60a5fd
Branch: refs/heads/field-ode Commit: 8e60a5fd13c5fbcfd7685987af746039c9a4f0ba Parents: 52de318 Author: Luc Maisonobe <l...@apache.org> Authored: Thu Dec 3 18:13:33 2015 +0100 Committer: Luc Maisonobe <l...@apache.org> Committed: Thu Dec 3 18:13:33 2015 +0100 ---------------------------------------------------------------------- .../ThreeEighthesFieldIntegratorTest.java | 99 ++++++++++++++++++++ 1 file changed, 99 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-math/blob/8e60a5fd/src/test/java/org/apache/commons/math3/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math3/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java b/src/test/java/org/apache/commons/math3/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java new file mode 100644 index 0000000..f90a31a --- /dev/null +++ b/src/test/java/org/apache/commons/math3/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.commons.math3.ode.nonstiff; + + +import org.apache.commons.math3.Field; +import org.apache.commons.math3.RealFieldElement; +import org.apache.commons.math3.util.Decimal64Field; +import org.junit.Test; + +public class ThreeEighthesFieldIntegratorTest extends AbstractRungeKuttaFieldIntegratorTest { + + protected <T extends RealFieldElement<T>> RungeKuttaFieldIntegrator<T> + createIntegrator(Field<T> field, T step) { + return new ThreeEighthesFieldIntegrator<T>(field, step); + } + + @Test + public void testNonFieldIntegratorConsistency() { + doTestNonFieldIntegratorConsistency(Decimal64Field.getInstance()); + } + + @Test + public void testMissedEndEvent() { + doTestMissedEndEvent(Decimal64Field.getInstance(), 1.0e-15, 6.0e-5); + } + + @Test + public void testSanityChecks() { + doTestSanityChecks(Decimal64Field.getInstance()); + } + + @Test + public void testDecreasingSteps() { + doTestDecreasingSteps(Decimal64Field.getInstance(), 1.0, 1.0, 1.0e-10); + } + + @Test + public void testSmallStep() { + doTestSmallStep(Decimal64Field.getInstance(), 2.0e-13, 4.0e-12, 1.0e-12, "3/8"); + } + + @Test + public void testBigStep() { + doTestBigStep(Decimal64Field.getInstance(), 0.0004, 0.005, 1.0e-12, "3/8"); + + } + + @Test + public void testBackward() { + doTestBackward(Decimal64Field.getInstance(), 5.0e-10, 7.0e-10, 1.0e-12, "3/8"); + } + + @Test + public void testKepler() { + doTestKepler(Decimal64Field.getInstance(), 0.0348, 1.0e-4); + } + + @Test + public void testStepSize() { + doTestStepSize(Decimal64Field.getInstance(), 1.0e-12); + } + + @Test + public void testSingleStep() { + doTestSingleStep(Decimal64Field.getInstance(), 0.21); + } + + @Test + public void testTooLargeFirstStep() { + doTestTooLargeFirstStep(Decimal64Field.getInstance()); + } + + @Test + public void testUnstableDerivative() { + doTestUnstableDerivative(Decimal64Field.getInstance(), 1.0e-12); + } + + @Test + public void testDerivativesConsistency() { + doTestDerivativesConsistency(Decimal64Field.getInstance(), 1.0e-10); + } + +}