View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.math.ode;
19  
20  /** This interface represents a second order integrator for
21   * differential equations.
22   *
23   * <p>The classes which are devoted to solve second order differential
24   * equations should implement this interface. The problems which can
25   * be handled should implement the {@link
26   * SecondOrderDifferentialEquations} interface.</p>
27   *
28   * @see SecondOrderDifferentialEquations
29   * @version $Revision: 620312 $ $Date: 2008-02-10 12:28:59 -0700 (Sun, 10 Feb 2008) $
30   * @since 1.2
31   */
32  
33  public interface SecondOrderIntegrator {
34  
35    /** Get the name of the method.
36     * @return name of the method
37     */
38    public String getName();
39  
40    /** Set the step handler for this integrator.
41     * The handler will be called by the integrator for each accepted
42     * step.
43     * @param handler handler for the accepted steps
44     */
45    public void setStepHandler (StepHandler handler);
46  
47    /** Get the step handler for this integrator.
48     * @return the step handler for this integrator
49     */
50    public StepHandler getStepHandler();
51  
52    /** Integrate the differential equations up to the given time
53     * @param equations differential equations to integrate
54     * @param t0 initial time
55     * @param y0 initial value of the state vector at t0
56     * @param yDot0 initial value of the first derivative of the state
57     * vector at t0
58     * @param t target time for the integration
59     * (can be set to a value smaller thant <code>t0</code> for backward integration)
60     * @param y placeholder where to put the state vector at each
61     * successful step (and hence at the end of integration), can be the
62     * same object as y0
63     * @param yDot placeholder where to put the first derivative of
64     * the state vector at time t, can be the same object as yDot0
65     * @throws IntegratorException if the integrator cannot perform integration
66     * @throws DerivativeException this exception is propagated to the caller if the
67     * underlying user function triggers one
68     */
69    public void integrate(SecondOrderDifferentialEquations equations,
70                          double t0, double[] y0, double[] yDot0,
71                          double t, double[] y, double[] yDot)
72    throws DerivativeException, IntegratorException;
73  
74  }