org.orekit.propagation.numerical
Class PartialDerivativesEquations

java.lang.Object
  extended by org.orekit.propagation.numerical.PartialDerivativesEquations
All Implemented Interfaces:
Serializable, AdditionalEquations

public class PartialDerivativesEquations
extends Object
implements AdditionalEquations

Set of additional equations computing the partial derivatives of the state (orbit) with respect to initial state and force models parameters.

This set of equations are automatically added to a numerical propagator in order to compute partial derivatives of the orbit along with the orbit itself. This is useful for example in orbit determination applications.

Author:
Véronique Pommier-Maurussane
See Also:
Serialized Form

Constructor Summary
PartialDerivativesEquations(String name, NumericalPropagator propagator)
          Simple constructor.
 
Method Summary
 void computeDerivatives(SpacecraftState s, TimeDerivativesEquations adder)
          Compute the derivatives related to the additional state parameters.
 List<Parameter> getAvailableParameters()
          Get the names of the available parameters in the propagator.
 JacobiansMapper getMapper()
          Get a mapper between two-dimensional Jacobians and one-dimensional additional state.
 String getName()
          Get the name of the additional state.
 void selectParamAndStep(Parameter parameter, double hP)
          Select the parameters to consider for Jacobian processing.
 void selectParameters(Parameter... parameters)
          Select the parameters to consider for Jacobian processing.
 SpacecraftState setInitialJacobians(SpacecraftState s, double[][] dY1dY0)
          Set the initial value of the Jacobian with respect to state.
 SpacecraftState setInitialJacobians(SpacecraftState s1, double[][] dY1dY0, double[][] dY1dP)
          Set the initial value of the Jacobian with respect to state and parameter.
 SpacecraftState setInitialJacobians(SpacecraftState s0, int paramDimension)
          Set the initial value of the Jacobian with respect to state and parameter.
 SpacecraftState setInitialJacobians(SpacecraftState s, Parameter parameter, double[] dY1dP)
          Set the initial value of the Jacobian with respect to state.
 void setSteps(double hPosition)
          Set the step for finite differences with respect to spacecraft position.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PartialDerivativesEquations

public PartialDerivativesEquations(String name,
                                   NumericalPropagator propagator)
                            throws OrekitException
Simple constructor.

Upon construction, this set of equations is automatically added to the propagator by calling its NumericalPropagator.addAdditionalEquations(AdditionalEquations) method. So there is no need to call this method explicitly for these equations.

Parameters:
name - name of the partial derivatives equations
propagator - the propagator that will handle the orbit propagation
Throws:
OrekitException - if a set of equations with the same name is already present
Method Detail

getName

public String getName()
Get the name of the additional state.

Specified by:
getName in interface AdditionalEquations
Returns:
name of the additional state

getAvailableParameters

public List<Parameter> getAvailableParameters()
Get the names of the available parameters in the propagator.

The names returned depend on the force models set up in the propagator, including the Newtonian attraction from the central body.

Returns:
available parameters

selectParameters

public void selectParameters(Parameter... parameters)
Select the parameters to consider for Jacobian processing.

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

Parameters:
parameters - parameters to consider for Jacobian processing
See Also:
NumericalPropagator.addForceModel(ForceModel), setInitialJacobians(SpacecraftState, double[][], double[][]), ForceModel, Parameterizable

selectParamAndStep

public void selectParamAndStep(Parameter parameter,
                               double hP)
Select the parameters to consider for Jacobian processing.

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

Parameters:
parameter - parameter to consider for Jacobian processing
hP - step to use for computing Jacobian column with respect to the specified parameter
See Also:
NumericalPropagator.addForceModel(ForceModel), setInitialJacobians(SpacecraftState, double[][], double[][]), ForceModel, Parameterizable

setSteps

public void setSteps(double hPosition)
Set the step for finite differences with respect to spacecraft position.

Parameters:
hPosition - step used for finite difference computation with respect to spacecraft position (m)

setInitialJacobians

public SpacecraftState setInitialJacobians(SpacecraftState s0,
                                           int paramDimension)
                                    throws OrekitException
Set the initial value of the Jacobian with respect to state and parameter.

This method is equivalent to call setInitialJacobians(SpacecraftState, double[][], double[][]) with dYdY0 set to the identity matrix and dYdP set to a zero matrix.

Parameters:
s0 - initial state
paramDimension - parameters dimension
Returns:
the updated SpacecraftState with the added additional state
Throws:
OrekitException - if the partial equation has not been registered in the propagator or if matrices dimensions are incorrect
See Also:
selectedParameters, selectParamAndStep(Parameter, double)

setInitialJacobians

public SpacecraftState setInitialJacobians(SpacecraftState s1,
                                           double[][] dY1dY0,
                                           double[][] dY1dP)
                                    throws OrekitException
Set the initial value of the Jacobian with respect to state and parameter.

Parameters:
s1 - current state
dY1dY0 - Jacobian of current state at time t1 with respect to state at some previous time t0 (6x6)
dY1dP - Jacobian of current state at time t1 with respect to parameters (may be null if no parameters are selected)
Returns:
the updated SpacecraftStatetate
Throws:
OrekitException - if the partial equation has not been registered in the propagator or if matrices dimensions are incorrect
See Also:
selectedParameters, selectParamAndStep(Parameter, double)

setInitialJacobians

public SpacecraftState setInitialJacobians(SpacecraftState s,
                                           double[][] dY1dY0)
                                    throws OrekitException
Set the initial value of the Jacobian with respect to state.

If state does not have partial derivatives yet, an exception is thrown. Call setInitialJacobians(SpacecraftState, int) to initialize Jacobians with default values or setInitialJacobians(SpacecraftState, double[][], double[][]) to initialize Jacobians with own values.

Parameters:
s - current state
dY1dY0 - Jacobian of current state at time t1 with respect to state at some previous time t0 (6x6)
Returns:
the updated SpacecraftState
Throws:
OrekitException - if the partial equation has not been registered in the propagator or if matrices dimensions are incorrect
See Also:
selectedParameters, selectParamAndStep(Parameter, double)

setInitialJacobians

public SpacecraftState setInitialJacobians(SpacecraftState s,
                                           Parameter parameter,
                                           double[] dY1dP)
                                    throws OrekitException
Set the initial value of the Jacobian with respect to state.

If state does not have partial derivatives yet, an exception is thrown. Call setInitialJacobians(SpacecraftState, int) to initialize Jacobians with default values or setInitialJacobians(SpacecraftState, double[][], double[][]) to initialize Jacobians with own values.

Parameters:
s - current state
parameter - parameter
dY1dP - Jacobian of current state at time t1 with respect to provided parameter
Returns:
the updated SpacecraftState
Throws:
OrekitException - if the partial equation has not been registered in the propagator or if matrices dimensions are incorrect or if state partial derivatives have not been initialized beforehand
See Also:
selectedParameters, selectParamAndStep(Parameter, double)

getMapper

public JacobiansMapper getMapper()
                          throws OrekitException
Get a mapper between two-dimensional Jacobians and one-dimensional additional state.

Returns:
a mapper between two-dimensional Jacobians and one-dimensional additional state, with the same name as the instance
Throws:
OrekitException - if the initial Jacobians have not been initialized yet
See Also:
setInitialJacobians(SpacecraftState, int), setInitialJacobians(SpacecraftState, double[][], double[][])

computeDerivatives

public void computeDerivatives(SpacecraftState s,
                               TimeDerivativesEquations adder)
                        throws OrekitException
Compute the derivatives related to the additional state parameters.

Specified by:
computeDerivatives in interface AdditionalEquations
Parameters:
s - current state information: date, kinematics, attitude, additional states
adder - object where the contribution of the additional parameters to the orbit evolution (accelerations) should be added
Throws:
OrekitException - if some specific error occurs


Copyright © 2017 CNES. All Rights Reserved.