package org.spaceroots.mantissa.ode;

/** This interface represents a first order integrator for
 * differential equations.

 * 

The classes which are devoted to solve first order differential * equations should implement this interface. The problems which can * be handled should implement the {@link * FirstOrderDifferentialEquations} interface.

* @see FirstOrderDifferentialEquations * @see StepHandler * @see SwitchingFunction * @version $Id: FirstOrderIntegrator.java 1719 2007-09-26 19:46:57Z luc $ * @author L. Maisonobe */ public interface FirstOrderIntegrator { /** Get the name of the method. * @return name of the method */ public String getName(); /** Set the step handler for this integrator. * The handler will be called by the integrator for each accepted * step. * @param handler handler for the accepted steps */ public void setStepHandler (StepHandler handler); /** Get the step handler for this integrator. * @return the step handler for this integrator */ public StepHandler getStepHandler(); /** Add a switching function to the integrator. * @param function switching function * @param maxCheckInterval maximal time interval between switching * function checks (this interval prevents missing sign changes in * case the integration steps becomes very large) * @param convergence convergence threshold in the event time search */ public void addSwitchingFunction(SwitchingFunction function, double maxCheckInterval, double convergence); /** Integrate the differential equations up to the given time. *

This method solves an Initial Value Problem (IVP).

*

Since this method stores some internal state variables made * available in its public interface during integration ({@link * #getCurrentStepsize()}), it is not thread-safe.

* @param equations differential equations to integrate * @param t0 initial time * @param y0 initial value of the state vector at t0 * @param t target time for the integration * (can be set to a value smaller than t0 for backward integration) * @param y placeholder where to put the state vector at each successful * step (and hence at the end of integration), can be the same object as y0 * @throws IntegratorException if the integrator cannot perform integration * @throws DerivativeException this exception is propagated to the caller if * the underlying user function triggers one */ public void integrate (FirstOrderDifferentialEquations equations, double t0, double[] y0, double t, double[] y) throws DerivativeException, IntegratorException; /** Get the current value of the step start time ti. *

This method can be called during integration (typically by * the object implementing the {@link FirstOrderDifferentialEquations * differential equations} problem) if the value of the current step that * is attempted is needed.

*

The result is undefined if the method is called outside of * calls to {@link #integrate}

* @return current value of the step start time ti */ public double getCurrentStepStart(); /** Get the current value of the integration stepsize. *

This method can be called during integration (typically by * the object implementing the {@link FirstOrderDifferentialEquations * differential equations} problem) if the value of the current stepsize * that is tried is needed.

*

The result is undefined if the method is called outside of * calls to {@link #integrate}

* @return current value of the stepsize */ public double getCurrentStepsize(); }

Ads help maintain this website.