public class CowellIntegrator extends AbstractIntegrator
The algorithms used in this code are explained in "A Variable-Step Double-Integration Multi-Step Integrator" by Matthew M. Berry. PhD Dissertation, Virginia Polytechnic Institute and State University, Blacksburg, VA. April 2004.
This integrator is suited only for cartesian orbit integration (including partial derivatives such as mass equation and state transition matrix).
This integrator requires a SecondOrderStateMapper
in order to perform first order state from/to second order
state conversion. This conversion is necessary as the integrator only deals with second order state while other
PATRIUS features such as interpolation, event detection and any other AbstractIntegrator
-related features
deals only with first order state vectors. This mapper is set through method
setMapper(SecondOrderStateMapper)
.
For best performances, the integrator parameters should be:
SecondOrderStateMapper
Modifier and Type | Field and Description |
---|---|
static int |
MAX_STANDARD_ORDER
Maximum order for standard formulas.
|
isLastStep, lastStepHandle, resetOccurred, stepHandlers, stepSize, stepStart
Constructor and Description |
---|
CowellIntegrator(int order,
double absTol,
double relTol)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.State |
getCurrentState()
Returns integrator current state.
|
SecondOrderStateMapper |
getMapper()
Returns the second order / first order state mapper.
|
int |
getOrder()
Returns integrator order.
|
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.State |
getPreviousState()
Returns integrator previous state.
|
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.Support |
getSupport()
Returns the integration support.
|
void |
integrate(ExpandableStatefulODE equations,
double t)
Integrate a set of differential equations up to the given time.
|
void |
setMapper(SecondOrderStateMapper mapper)
Set second order / first order state mapper.
|
acceptStep, addEventHandler, addEventHandler, addStepHandler, avoidOvershoot, clearEventHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getCurrentStepStart, getEvaluations, getEventHandlers, getMaxEvaluations, getName, getStepHandlers, handleLastStep, initIntegration, integrate, removeEventState, sanityChecks, setEquations, setMaxEvaluations, setStateInitialized
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
public static final int MAX_STANDARD_ORDER
public CowellIntegrator(int order, double absTol, double relTol)
order
- integrator order (<= 20)absTol
- absolute tolerancerelTol
- relative tolerancepublic void integrate(ExpandableStatefulODE equations, double t)
This method solves an Initial Value Problem (IVP).
The set of differential equations is composed of a main set, which can be extended by some sets of secondary equations. The set of equations must be already set up with initial time and partial states. At integration completion, the final time and partial states will be available in the same object.
Since this method stores some internal state variables made available in its public interface during integration
(AbstractIntegrator.getCurrentSignedStepsize()
), it is not thread-safe.
Warning:
FirstOrderDifferentialEquations
and
SecondOrderDifferentialEquations
.integrate
in class AbstractIntegrator
equations
- complete set of differential equations to integratet
- target time for the integration
(can be set to a value smaller than t0
for backward integration)public int getOrder()
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.Support getSupport()
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.State getPreviousState()
protected fr.cnes.sirius.patrius.math.ode.nonstiff.cowell.State getCurrentState()
public void setMapper(SecondOrderStateMapper mapper)
mapper
- second order / first order state mapperpublic SecondOrderStateMapper getMapper()
Copyright © 2023 CNES. All rights reserved.