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 and 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 and Description |
---|---|
protected |
AbstractGaussianContribution(String coefficientsKeyPrefix,
double threshold,
ForceModel contribution)
Build a new instance.
|
Modifier and Type | Method and 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.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
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-2017 CS Systèmes d'information. All rights reserved.