diff --git a/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactory.java b/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactory.java deleted file mode 100644 index fe648398f..000000000 --- a/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactory.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * 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.math.ode; - -import org.apache.commons.discovery.tools.DiscoverClass; - -/** - * Abstract factory class used to create {@link FirstOrderIntegrator} instances. - *
- * Integrators implementing the following fixed stepsize algorithms are supported: - *
newDefaultFixedStepsizeIntegrator
.
- * - *
- * Integrators implementing the following adaptive stepsize algorithms are supported: - *
newDefaultAdaptiveStepsizeIntegrator
- * methods.
- * - * Common usage:
- * FirstOrderIntegratorFactory factory = FirstOrderIntegratorFactory.newInstance(); - * - * // create a Dormand-Prince 8(5,3) integrator to use with some step control parameters - * AdaptiveStepsizeIntegrator integrator = - * factory.newDormandPrince853Integrator(minStep, maxStep, - * scalAbsoluteTolerance, - * scalRelativeTolerance); - *- * - * Apache Commons Discovery - * is used to determine the concrete factory returned by - *
FirstOrderIntegratorFactory.newInstance().
The default is
- * {@link FirstOrderIntegratorFactoryImpl}
- *
- * @version $Revision: 480440 $ $Date: 2006-11-29 08:14:12 +0100 (mer., 29 nov. 2006) $
- */
-public abstract class FirstOrderIntegratorFactory {
-
- /**
- * Default constructor.
- */
- protected FirstOrderIntegratorFactory() {
- }
-
- /**
- * Create a new factory.
- * @return a new factory
- */
- public static FirstOrderIntegratorFactory newInstance() {
- FirstOrderIntegratorFactory factory = null;
- try {
- DiscoverClass dc = new DiscoverClass();
- factory = (FirstOrderIntegratorFactory) dc.newInstance(
- FirstOrderIntegratorFactory.class,
- "org.apache.commons.math.analysis.FirstOrderIntegratorFactoryImpl");
- } catch(Throwable t) {
- return new FirstOrderIntegratorFactoryImpl();
- }
- return factory;
- }
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * The actual integrator returned is determined by the underlying factory.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newDefaultFixedStepsizeIntegrator(double step);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The actual integrator returned is determined by the underlying factory.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDefaultAdaptiveStepsizeIntegrator(
- double minStep, double maxStep,
- double scalAbsoluteTolerance,
- double scalRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The actual integrator returned is determined by the underlying factory.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDefaultAdaptiveStepsizeIntegrator(
- double minStep, double maxStep,
- double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance);
-
- /**
- * Create a new {@link FirstOrderIntegrator}.
- * The integrator is an implementation of the Euler method.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newEulerIntegrator(double step);
-
- /**
- * Create a new {@link FirstOrderIntegrator}.
- * The integrator is an implementation of the midpoint method.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newMidpointIntegrator(double step);
-
- /**
- * Create a new {@link FirstOrderIntegrator}.
- * The integrator is an implementation of the classical Runge-Kutta method.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newClassicalRungeKuttaIntegrator(double step);
-
- /**
- * Create a new {@link FirstOrderIntegrator}.
- * The integrator is an implementation of the Gill method.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newGillIntegrator(double step);
-
- /**
- * Create a new {@link FirstOrderIntegrator}.
- * The integrator is an implementation of the 3/8 method.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public abstract FirstOrderIntegrator newThreeEighthesIntegrator(double step);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Higham-Hall method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newHighamHall54Integrator(
- double minStep, double maxStep,
- double scalAbsoluteTolerance,
- double scalRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Higham-Hall method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newHighamHall54Integrator(
- double minStep, double maxStep,
- double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Dormand-Prince 5(4) method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDormandPrince54Integrator(
- double minStep, double maxStep,
- double scalAbsoluteTolerance,
- double scalRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Dormand-Prince 5(4) method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDormandPrince54Integrator(
- double minStep, double maxStep,
- double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Dormand-Prince 8(5,3) method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDormandPrince853Integrator(
- double minStep, double maxStep,
- double scalAbsoluteTolerance,
- double scalRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Dormand-Prince 8(5,3) method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newDormandPrince853Integrator(
- double minStep, double maxStep,
- double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Gragg-Burlisch-Stoer method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newGraggBulirschStoerIntegrator(
- double minStep, double maxStep,
- double scalAbsoluteTolerance,
- double scalRelativeTolerance);
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * The integrator is an implementation of the Gragg-Burlisch-Stoer method.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public abstract AdaptiveStepsizeIntegrator newGraggBulirschStoerIntegrator(
- double minStep, double maxStep,
- double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance);
-
-}
diff --git a/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactoryImpl.java b/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactoryImpl.java
deleted file mode 100644
index f51fb0df6..000000000
--- a/src/java/org/apache/commons/math/ode/FirstOrderIntegratorFactoryImpl.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * 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.math.ode;
-
-/**
- * Provide a default implementation for several functions useful to generic
- * integrators.
- *
- * @version $Revision: 480440 $ $Date: 2006-11-29 08:14:12 +0100 (mer., 29 nov. 2006) $
- */
-public class FirstOrderIntegratorFactoryImpl extends
- FirstOrderIntegratorFactory {
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link ClassicalRungeKuttaIntegrator
- * classical Runge-Kutta} integrator by default.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public FirstOrderIntegrator newDefaultFixedStepsizeIntegrator(double step) {
- return newClassicalRungeKuttaIntegrator(step);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince853Integrator
- * Dormand-Prince 8(5,3)} integrator by default.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDefaultAdaptiveStepsizeIntegrator(
- double minStep, double maxStep, double scalAbsoluteTolerance,
- double scalRelativeTolerance) {
- return newDormandPrince853Integrator(minStep, maxStep,
- scalAbsoluteTolerance, scalRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince853Integrator
- * Dormand-Prince 8(5,3)} integrator by default.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDefaultAdaptiveStepsizeIntegrator(
- double minStep, double maxStep, double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance) {
- return newDormandPrince853Integrator(minStep, maxStep,
- vecAbsoluteTolerance, vecRelativeTolerance);
- }
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link EulerIntegrator Euler} integrator.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public FirstOrderIntegrator newEulerIntegrator(double step) {
- return new EulerIntegrator(step);
- }
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link MidpointIntegrator midpoint} integrator.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public FirstOrderIntegrator newMidpointIntegrator(double step) {
- return new MidpointIntegrator(step);
- }
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link ClassicalRungeKuttaIntegrator
- * classical Runge-Kutta} integrator.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
-
- public FirstOrderIntegrator newClassicalRungeKuttaIntegrator(double step) {
- return new ClassicalRungeKuttaIntegrator(step);
- }
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link GillIntegrator Gill} integrator.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public FirstOrderIntegrator newGillIntegrator(double step) {
- return new GillIntegrator(step);
- }
-
- /**
- * Create a new fixed stepsize {@link FirstOrderIntegrator}.
- * This factory buid a {@link ThreeEighthesIntegrator 3/8} integrator.
- * @param step the fixed stepsize.
- * @return the new fixed step integrator
- */
- public FirstOrderIntegrator newThreeEighthesIntegrator(double step) {
- return new ThreeEighthesIntegrator(step);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link HighamHall54Integrator Higham-Hall} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newHighamHall54Integrator(double minStep,
- double maxStep, double scalAbsoluteTolerance,
- double scalRelativeTolerance) {
- return new HighamHall54Integrator(minStep, maxStep,
- scalAbsoluteTolerance, scalRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link HighamHall54Integrator Higham-Hall} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newHighamHall54Integrator(double minStep,
- double maxStep, double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance) {
- return new HighamHall54Integrator(minStep, maxStep,
- vecAbsoluteTolerance, vecRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince54Integrator
- * Dormand-Prince 5(4)} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDormandPrince54Integrator(
- double minStep, double maxStep, double scalAbsoluteTolerance,
- double scalRelativeTolerance) {
- return new DormandPrince54Integrator(minStep, maxStep,
- scalAbsoluteTolerance, scalRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince54Integrator
- * Dormand-Prince 5(4)} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDormandPrince54Integrator(double minStep,
- double maxStep, double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance) {
- return new DormandPrince54Integrator(minStep, maxStep,
- vecAbsoluteTolerance, vecRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince853Integrator
- * Dormand-Prince 8(5,3)} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDormandPrince853Integrator(
- double minStep, double maxStep, double scalAbsoluteTolerance,
- double scalRelativeTolerance) {
- return new DormandPrince853Integrator(minStep, maxStep,
- scalAbsoluteTolerance, scalRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link DormandPrince853Integrator
- * Dormand-Prince 8(5,3)} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newDormandPrince853Integrator(
- double minStep, double maxStep, double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance) {
- return new DormandPrince853Integrator(minStep, maxStep,
- vecAbsoluteTolerance, vecRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link GraggBulirschStoerIntegrator
- * Gragg-Bulirsch-Stoer} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param scalAbsoluteTolerance allowed absolute error
- * @param scalRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newGraggBulirschStoerIntegrator(
- double minStep, double maxStep, double scalAbsoluteTolerance,
- double scalRelativeTolerance) {
- return new GraggBulirschStoerIntegrator(minStep, maxStep,
- scalAbsoluteTolerance, scalRelativeTolerance);
- }
-
- /**
- * Create a new {@link AdaptiveStepsizeIntegrator}.
- * This factory buid a {@link GraggBulirschStoerIntegrator
- * Gragg-Bulirsch-Stoer} integrator.
- * @param minStep minimal step (must be positive even for backward
- * integration), the last step can be smaller than this
- * @param maxStep maximal step (must be positive even for backward
- * integration)
- * @param vecAbsoluteTolerance allowed absolute error
- * @param vecRelativeTolerance allowed relative error
- * @return the new adaptive stepsize integrator
- */
- public AdaptiveStepsizeIntegrator newGraggBulirschStoerIntegrator(
- double minStep, double maxStep, double[] vecAbsoluteTolerance,
- double[] vecRelativeTolerance) {
- return new GraggBulirschStoerIntegrator(minStep, maxStep,
- vecAbsoluteTolerance, vecRelativeTolerance);
- }
-
-}
diff --git a/src/test/org/apache/commons/math/ode/GraggBulirschStoerIntegratorTest.java b/src/test/org/apache/commons/math/ode/GraggBulirschStoerIntegratorTest.java
index 3a6346b8d..fca8f2050 100644
--- a/src/test/org/apache/commons/math/ode/GraggBulirschStoerIntegratorTest.java
+++ b/src/test/org/apache/commons/math/ode/GraggBulirschStoerIntegratorTest.java
@@ -37,10 +37,8 @@ public class GraggBulirschStoerIntegratorTest
public void testDimensionCheck() {
try {
TestProblem1 pb = new TestProblem1();
- FirstOrderIntegratorFactory factory =
- FirstOrderIntegratorFactory.newInstance();
AdaptiveStepsizeIntegrator integrator =
- factory.newGraggBulirschStoerIntegrator(0.0, 1.0, 1.0e-10, 1.0e-10);
+ new GraggBulirschStoerIntegrator(0.0, 1.0, 1.0e-10, 1.0e-10);
integrator.integrate(pb,
0.0, new double[pb.getDimension()+10],
1.0, new double[pb.getDimension()+10]);