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 ofDSSTForceModelmethods for Gaussian contributions to DSST propagation.This abstract class allows to provide easily a subset of
DSSTForceModelmethods 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
ForceModeland to implement in the derived class the method:getLLimits(SpacecraftState).- Author:
- Pascal Parraud
-
-
Field Summary
Fields Modifier and Type Field Description protected doubleaa.protected doubleAA = sqrt(μ * a).protected doubleBB = sqrt(1 - h² - k²).protected doubleCC = 1 + p² + q².protected doubleco2ABC / (2 * A * B) .protected doubleeccEccentricity.protected org.hipparchus.geometry.euclidean.threed.Vector3DfEquinoctial frame f vector.protected org.hipparchus.geometry.euclidean.threed.Vector3DgEquinoctial frame g vector.protected doublehey.protected doublekex.protected doublelmMean longitude.protected doublemuμ .protected doublenKepler mean motion: n = sqrt(μ / a³).protected doubleooA1 / A .protected doubleooAB1 / (A * B) .protected doubleooBpo1 / (1 + B) .protected doubleooMu1 / μ .protected doublephy.protected doubleqhx.protected doubleton2a2 / (n² * a) .protected org.hipparchus.geometry.euclidean.threed.Vector3DwEquinoctial frame w vector.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractGaussianContribution(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.voidinitializeStep(AuxiliaryElements aux)Performs initialization at each integration step for the current force model.voidregisterAttitudeProvider(AttitudeProvider provider)Register an attitude provider.voidupdateShortPeriodTerms(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- theForceModelto 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:
initializein 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:
initializeStepin 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:
getMeanElementRatein 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:
registerAttitudeProviderin interfaceDSSTForceModel- Parameters:
provider- theAttitudeProvider
-
updateShortPeriodTerms
public void updateShortPeriodTerms(SpacecraftState... meanStates)
Update the short period terms.The
short period termsthat will be updated are the ones that were returned during the call toDSSTForceModel.initialize(AuxiliaryElements, boolean).- Specified by:
updateShortPeriodTermsin interfaceDSSTForceModel- Parameters:
meanStates- mean states information: date, kinematics, attitude
-
-