public class DrozinerAttractionModel extends AbstractParameterizable implements ForceModel, TideSystemProvider
The algorithm implemented in this class has been designed by Andrzej Droziner (Institute of Mathematical Machines, Warsaw) in his 1976 paper: An algorithm for recurrent calculation of gravitational acceleration (artificial satellites, Vol. 12, No 2, June 1977).
Note that this class can often not be used for high degrees (say
above 90) as most modern gravity fields are provided as normalized
coefficients and the un-normalization process to convert these
coefficients underflows at degree and order 89. This class also
does not provide analytical partial derivatives (it uses finite differences
to compute them) and is much slower than HolmesFeatherstoneAttractionModel
(even when no derivatives are computed). For all these reasons,
it is recommended to use the Holmes-Featherstone model
rather than this class.
As this class uses finite differences to compute derivatives, the steps for
finite differences must be initialized by calling setSteps(double, double)
prior to use derivatives, otherwise an exception
will be thrown by accelerationDerivatives(AbsoluteDate, Frame, FieldVector3D,
FieldVector3D, FieldRotation, DerivativeStructure)
and by accelerationDerivatives(SpacecraftState, String)
.
HolmesFeatherstoneAttractionModel
Constructor and Description |
---|
DrozinerAttractionModel(Frame centralBodyFrame,
UnnormalizedSphericalHarmonicsProvider provider)
Creates a new instance.
|
Modifier and Type | Method and Description |
---|---|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldVector3D<DerivativeStructure> velocity,
FieldRotation<DerivativeStructure> rotation,
DerivativeStructure mass)
Compute acceleration derivatives with respect to state parameters.
|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(SpacecraftState s,
String paramName)
Compute acceleration derivatives with respect to additional parameters.
|
void |
addContribution(SpacecraftState s,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
double |
getParameter(String name) |
TideSystem |
getTideSystem()
Get the
TideSystem used in the gravity field. |
void |
setParameter(String name,
double value) |
void |
setSteps(double hPosition,
double hMu)
Set the step for finite differences with respect to spacecraft position.
|
complainIfNotSupported, getParametersNames, isSupported
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParametersNames, isSupported
public DrozinerAttractionModel(Frame centralBodyFrame, UnnormalizedSphericalHarmonicsProvider provider)
centralBodyFrame
- rotating body frameprovider
- provider for spherical harmonicspublic void setSteps(double hPosition, double hMu)
hPosition
- step used for finite difference computation
with respect to spacecraft position (m)hMu
- step used for finite difference computation
with respect to central attraction coefficient (m³/s²)public TideSystem getTideSystem()
TideSystem
used in the gravity field.getTideSystem
in interface TideSystemProvider
public void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws OrekitException
addContribution
in interface ForceModel
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedOrekitException
- if some specific error occurspublic FieldVector3D<DerivativeStructure> accelerationDerivatives(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldVector3D<DerivativeStructure> velocity, FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass) throws OrekitException
The derivatives should be computed with respect to position, velocity and optionnaly mass. The input parameters already take into account the free parameters (6 or 7 depending on derivation with respect to mass being considered or not) and order (always 1). Free parameters at indices 0, 1 and 2 correspond to derivatives with respect to position. Free parameters at indices 3, 4 and 5 correspond to derivatives with respect to velocity. Free parameter at index 6 (if present) corresponds to to derivatives with respect to mass.
accelerationDerivatives
in interface ForceModel
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framevelocity
- velocity of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- spacecraft massOrekitException
- if derivatives cannot be computedpublic FieldVector3D<DerivativeStructure> accelerationDerivatives(SpacecraftState s, String paramName) throws OrekitException
accelerationDerivatives
in interface ForceModel
s
- spacecraft stateparamName
- name of the parameter with respect to which derivatives are requiredOrekitException
- if derivatives cannot be computedpublic EventDetector[] getEventsDetectors()
getEventsDetectors
in interface ForceModel
public double getParameter(String name) throws IllegalArgumentException
getParameter
in interface ParameterizedODE
IllegalArgumentException
public void setParameter(String name, double value) throws IllegalArgumentException
setParameter
in interface ParameterizedODE
IllegalArgumentException
Copyright © 2002-2015 CS Systèmes d'information. All rights reserved.