From eef2ed3144d873a56cf5f62cd81dddea87d37544 Mon Sep 17 00:00:00 2001 From: Luc Maisonobe Date: Wed, 6 Jan 2016 12:41:09 +0100 Subject: [PATCH] Added tests for 3/8 integrator. --- .../ThreeEighthesFieldIntegratorTest.java | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/test/java/org/apache/commons/math4/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java diff --git a/src/test/java/org/apache/commons/math4/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java b/src/test/java/org/apache/commons/math4/ode/nonstiff/ThreeEighthesFieldIntegratorTest.java new file mode 100644 index 000000000..3feb0cd45 --- /dev/null +++ b/src/test/java/org/apache/commons/math4/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.math4.ode.nonstiff; + + +import org.apache.commons.math4.Field; +import org.apache.commons.math4.RealFieldElement; +import org.apache.commons.math4.util.Decimal64Field; +import org.junit.Test; + +public class ThreeEighthesFieldIntegratorTest extends AbstractRungeKuttaFieldIntegratorTest { + + protected > RungeKuttaFieldIntegrator + createIntegrator(Field field, T step) { + return new ThreeEighthesFieldIntegrator(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); + } + +}