DSSTForceModel
DSSTAtmosphericDrag
, DSSTSolarRadiationPressure
public abstract class AbstractGaussianContribution extends Object implements DSSTForceModel
DSSTForceModel
methods for Gaussian contributions to DSST propagation.
This abstract class allows to provide easily a subset of DSSTForceModel
methods
for specific Gaussian contributions.
This class implements the notion of numerical averaging of the DSST theory. Numerical averaging is mainly used for non-conservative disturbing forces such as atmospheric drag and solar radiation pressure.
Gaussian contributions can be expressed as: dai/dt = δai/δv . q
where:
The averaging process and other considerations lead to integrate this contribution over the true longitude L possibly taking into account some limits.
To create a numerically averaged contribution, one needs only to provide a
ForceModel
and to implement in the derived class the method:
getLLimits(SpacecraftState)
.
Modifier and Type | Field | Description |
---|---|---|
protected double |
a |
a.
|
protected double |
A |
A = sqrt(μ * a).
|
protected double |
B |
B = sqrt(1 - h² - k²).
|
protected double |
C |
C = 1 + p² + q².
|
protected double |
co2AB |
C / (2 * A * B) .
|
protected double |
ecc |
Eccentricity.
|
protected Vector3D |
f |
Equinoctial frame f vector.
|
protected Vector3D |
g |
Equinoctial frame g vector.
|
protected double |
h |
ey.
|
protected double |
k |
ex.
|
protected double |
lm |
Mean longitude.
|
protected double |
mu |
μ .
|
protected double |
n |
Kepler mean motion: n = sqrt(μ / a³).
|
protected double |
ooA |
1 / A .
|
protected double |
ooAB |
1 / (A * B) .
|
protected double |
ooBpo |
1 / (1 + B) .
|
protected double |
ooMu |
1 / μ .
|
protected double |
p |
hy.
|
protected double |
q |
hx.
|
protected double |
ton2a |
2 / (n² * a) .
|
protected Vector3D |
w |
Equinoctial frame w vector.
|
Modifier | Constructor | Description |
---|---|---|
protected |
AbstractGaussianContribution(String coefficientsKeyPrefix,
double threshold,
ForceModel contribution) |
Build a new instance.
|
Modifier and Type | Method | Description |
---|---|---|
protected abstract double[] |
getLLimits(SpacecraftState state) |
Compute the limits in L, the true longitude, for integration.
|
double[] |
getMeanElementRate(SpacecraftState state) |
Computes the mean equinoctial elements rates dai / dt.
|
List<ShortPeriodTerms> |
initialize(AuxiliaryElements aux,
boolean meanOnly) |
Performs initialization prior to propagation for the current force model.
|
void |
initializeStep(AuxiliaryElements aux) |
Performs initialization at each integration step for the current force model.
|
void |
registerAttitudeProvider(AttitudeProvider provider) |
Register an attitude provider.
|
void |
updateShortPeriodTerms(SpacecraftState... meanStates) |
Update the short period terms.
|
getEventsDetectors
protected double a
protected double k
protected double h
protected double q
protected double p
protected double ecc
protected double n
protected double lm
protected Vector3D f
protected Vector3D g
protected Vector3D w
protected double A
protected double B
protected double C
protected double ton2a
protected double ooA
protected double ooAB
protected double co2AB
protected double ooBpo
protected double ooMu
protected double mu
protected AbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution)
coefficientsKeyPrefix
- prefix for coefficients keysthreshold
- tolerance for the choice of the Gauss quadrature ordercontribution
- the ForceModel
to be numerically averagedpublic List<ShortPeriodTerms> initialize(AuxiliaryElements aux, boolean meanOnly)
This method aims at being called at the very beginning of a propagation.
initialize
in interface DSSTForceModel
aux
- auxiliary elements related to the current orbitmeanOnly
- only mean elements are used during the propagationpublic void initializeStep(AuxiliaryElements aux) throws OrekitException
This method aims at being called before mean elements rates computation.
initializeStep
in interface DSSTForceModel
aux
- auxiliary elements related to the current orbitOrekitException
- if some specific error occurspublic double[] getMeanElementRate(SpacecraftState state) throws OrekitException
getMeanElementRate
in interface DSSTForceModel
state
- current state information: date, kinematics, attitudeOrekitException
- if some specific error occursprotected abstract double[] getLLimits(SpacecraftState state) throws OrekitException
state
- current state information: date, kinematics, attitudeOrekitException
- if some specific error occurspublic void registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider that can be used by the force model.
registerAttitudeProvider
in interface DSSTForceModel
provider
- the AttitudeProvider
public void updateShortPeriodTerms(SpacecraftState... meanStates) throws OrekitException
The short period terms
that will be updated
are the ones that were returned during the call to DSSTForceModel.initialize(AuxiliaryElements, boolean)
.
updateShortPeriodTerms
in interface DSSTForceModel
meanStates
- mean states information: date, kinematics, attitudeOrekitException
- if some specific error occursCopyright © 2002-2018 CS Systèmes d'information. All rights reserved.