Class AbstractGaussianContribution
- java.lang.Object
-
- org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution
-
- All Implemented Interfaces:
DSSTForceModel
- Direct Known Subclasses:
DSSTAtmosphericDrag
,DSSTSolarRadiationPressure
public abstract class AbstractGaussianContribution extends Object implements DSSTForceModel
Common handling ofDSSTForceModel
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:- ai are the six equinoctial elements
- v is the velocity vector
- q is the perturbing acceleration due to the considered force
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)
.- Author:
- Pascal Parraud
-
-
Field Summary
Fields 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 org.hipparchus.geometry.euclidean.threed.Vector3D
f
Equinoctial frame f vector.protected org.hipparchus.geometry.euclidean.threed.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 org.hipparchus.geometry.euclidean.threed.Vector3D
w
Equinoctial frame w vector.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution)
Build a new instance.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods 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.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel
getEventsDetectors
-
-
-
-
Field Detail
-
a
protected double a
a.
-
k
protected double k
ex.
-
h
protected double h
ey.
-
q
protected double q
hx.
-
p
protected double p
hy.
-
ecc
protected double ecc
Eccentricity.
-
n
protected double n
Kepler mean motion: n = sqrt(μ / a³).
-
lm
protected double lm
Mean longitude.
-
f
protected org.hipparchus.geometry.euclidean.threed.Vector3D f
Equinoctial frame f vector.
-
g
protected org.hipparchus.geometry.euclidean.threed.Vector3D g
Equinoctial frame g vector.
-
w
protected org.hipparchus.geometry.euclidean.threed.Vector3D w
Equinoctial frame w vector.
-
A
protected double A
A = sqrt(μ * a).
-
B
protected double B
B = sqrt(1 - h² - k²).
-
C
protected double C
C = 1 + p² + q².
-
ton2a
protected double ton2a
2 / (n² * a) .
-
ooA
protected double ooA
1 / A .
-
ooAB
protected double ooAB
1 / (A * B) .
-
co2AB
protected double co2AB
C / (2 * A * B) .
-
ooBpo
protected double ooBpo
1 / (1 + B) .
-
ooMu
protected double ooMu
1 / μ .
-
mu
protected double mu
μ .
-
-
Constructor Detail
-
AbstractGaussianContribution
protected AbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution)
Build a new instance.- Parameters:
coefficientsKeyPrefix
- prefix for coefficients keysthreshold
- tolerance for the choice of the Gauss quadrature ordercontribution
- theForceModel
to be numerically averaged
-
-
Method Detail
-
initialize
public List<ShortPeriodTerms> initialize(AuxiliaryElements aux, boolean meanOnly)
Performs initialization prior to propagation for the current force model.This method aims at being called at the very beginning of a propagation.
- Specified by:
initialize
in interfaceDSSTForceModel
- Parameters:
aux
- auxiliary elements related to the current orbitmeanOnly
- only mean elements are used during the propagation- Returns:
- a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
-
initializeStep
public void initializeStep(AuxiliaryElements aux)
Performs initialization at each integration step for the current force model.This method aims at being called before mean elements rates computation.
- Specified by:
initializeStep
in interfaceDSSTForceModel
- Parameters:
aux
- auxiliary elements related to the current orbit
-
getMeanElementRate
public double[] getMeanElementRate(SpacecraftState state)
Computes the mean equinoctial elements rates dai / dt.- Specified by:
getMeanElementRate
in interfaceDSSTForceModel
- Parameters:
state
- current state information: date, kinematics, attitude- Returns:
- the mean element rates dai/dt
-
getLLimits
protected abstract double[] getLLimits(SpacecraftState state)
Compute the limits in L, the true longitude, for integration.- Parameters:
state
- current state information: date, kinematics, attitude- Returns:
- the integration limits in L
-
registerAttitudeProvider
public void registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider.Register an attitude provider that can be used by the force model.
- Specified by:
registerAttitudeProvider
in interfaceDSSTForceModel
- Parameters:
provider
- theAttitudeProvider
-
updateShortPeriodTerms
public void updateShortPeriodTerms(SpacecraftState... meanStates)
Update the short period terms.The
short period terms
that will be updated are the ones that were returned during the call toDSSTForceModel.initialize(AuxiliaryElements, boolean)
.- Specified by:
updateShortPeriodTerms
in interfaceDSSTForceModel
- Parameters:
meanStates
- mean states information: date, kinematics, attitude
-
-