org.orekit.propagation.numerical
Class NumericalPropagatorWithJacobians

java.lang.Object
  extended by org.orekit.propagation.numerical.NumericalPropagator
      extended by org.orekit.propagation.numerical.NumericalPropagatorWithJacobians
All Implemented Interfaces:
java.io.Serializable, BasicPropagator, Propagator, PVCoordinatesProvider

public class NumericalPropagatorWithJacobians
extends NumericalPropagator

This class propagates orbits using numerical integration and enables jacobians computation for orbit parameters and partial derivatives computation with respect to some force models parameters.

As of 5.0, this class is still considered experimental, so use it with care, the API could change in the future.

The underlying numerical integrator configuration can be exactly the same as these for a simple numerical integration.

The Jacobian for the six equinoctial orbit parameters (a, ex, ey, hx, hy, lv) and the mass is computed as a 7x7 array such as:

     dFdY[i][j] = dyi/dyj
     with: y0 = a, y1 = ex, y2 = ey, y3 = hx, y4 = hy, y5 = lv, y6 = mass
   

Partial derivatives can also be computed for the 7 elements state vector with respect to n selected parameters from force models. They are computed as a 7xn array:

     dFdP[i][j] = dyi/dpj
   

Version:
$Revision: 3262 $ $Date: 2010-05-06 17:19:59 +0200 (jeu. 06 mai 2010) $
Author:
Pascal Parraud
See Also:
NumericalPropagator, ForceModelWithJacobians, Serialized Form

Field Summary
 
Fields inherited from class org.orekit.propagation.numerical.NumericalPropagator
attitudeLaw, calls, currentState, detectors, forceModels, initialState, integrator, mode, modeHandler, mu, startDate, stateVector
 
Fields inherited from interface org.orekit.propagation.Propagator
EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
 
Constructor Summary
NumericalPropagatorWithJacobians(org.apache.commons.math.ode.FirstOrderIntegrator integrator)
          Create a new instance of NumericalPropagatorWithJacobians.
 
Method Summary
 void addForceModel(ForceModel model)
          Add a force model to the global perturbation model.
 java.lang.String[] getParameterNames()
          Get the parameters selected for jacobian processing.
 SpacecraftState propagate(AbsoluteDate finalDate, double[][] dFdY, double[][] dFdP)
          Propagate towards a target date and compute partial derivatives.
 void removeForceModels()
          Remove all perturbing force models from the global perturbation model.
 void selectParameters(java.lang.String[] parameters)
          Select the parameters to consider for jacobian processing.
 
Methods inherited from class org.orekit.propagation.numerical.NumericalPropagator
addEventDetector, clearEventsDetectors, getCalls, getEventsDetectors, getGeneratedEphemeris, getInitialState, getMode, getMu, getPVCoordinates, propagate, resetInitialState, setAttitudeLaw, setEphemerisMode, setInitialState, setIntegrator, setMasterMode, setMasterMode, setMu, setSlaveMode, setUpEventDetector
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NumericalPropagatorWithJacobians

public NumericalPropagatorWithJacobians(org.apache.commons.math.ode.FirstOrderIntegrator integrator)
Create a new instance of NumericalPropagatorWithJacobians. After creation, the instance is empty, i.e. the attitude law is set to an unspecified default law and there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a keplerian evolution only.

Parameters:
integrator - numerical integrator to use for propagation.
Method Detail

addForceModel

public void addForceModel(ForceModel model)
Add a force model to the global perturbation model.

Overrides:
addForceModel in class NumericalPropagator
Parameters:
model - perturbing force model to add
See Also:
removeForceModels(), removeForceModels()

removeForceModels

public void removeForceModels()
Remove all perturbing force models from the global perturbation model.

Once all perturbing forces have been removed (and as long as no new force model is added), the integrated orbit will follow a keplerian evolution only.

Overrides:
removeForceModels in class NumericalPropagator
See Also:
addForceModel(ForceModel)

selectParameters

public void selectParameters(java.lang.String[] parameters)
Select the parameters to consider for jacobian processing.

Parameters names have to be consistent with some ForceModelWithJacobians added elsewhere.

Parameters:
parameters - parameters to consider for jacobian processing
See Also:
addForceModel(ForceModel), ForceModelWithJacobians, Parameterizable

getParameterNames

public java.lang.String[] getParameterNames()
Get the parameters selected for jacobian processing.

Returns:
parameters considered for jacobian processing
See Also:
selectParameters(String[])

propagate

public SpacecraftState propagate(AbsoluteDate finalDate,
                                 double[][] dFdY,
                                 double[][] dFdP)
                          throws PropagationException
Propagate towards a target date and compute partial derivatives.

Propagation is the same as the basic one.

Jacobian for orbit parameters is given as a 7x7 array.

Partial derivatives will be computed as a 7xn array when n parameters have been selected (n may be 0).

Those parameters are related to some force models which must have been added elsewhere.

Parameters:
finalDate - target date towards which orbit state should be propagated
dFdY - equinoctial orbit parameters + mass jacobian (7x7 array)
dFdP - partial derivatives with respect to selected parameters (7xn)
Returns:
propagated state
Throws:
PropagationException - if state cannot be propagated


Copyright © 2002-2010 CS Communication & Systèmes. All Rights Reserved.