public abstract class AbstractTides extends JacobiansParameterizable implements ForceModel, GradientModel, PotentialTimeVariations
Common handling of ForceModel
methods for tides models.
This abstract class allows to provide easily the full set of ForceModel
methods to tides models. Only one
method must be implemented by derived classes: updateCoefficientsCandS(fr.cnes.sirius.patrius.time.AbsoluteDate)
.
Modifier and Type | Field and Description |
---|---|
protected Frame |
bodyFrame
Frame for the central body.
|
protected double[][] |
coefficientsC
First normalized potential tesseral coefficients array.
|
protected double[][] |
coefficientsCPD
First normalized potential tesseral coefficients array for partial derivatives computation.
|
protected double[][] |
coefficientsS
Second normalized potential tesseral coefficients array.
|
protected double[][] |
coefficientsSPD
Second normalized potential tesseral coefficients array for partial derivatives computation.
|
static String |
MU
Parameter name for central attraction coefficient.
|
protected Parameter |
paramAe
Equatorial radius parameter.
|
protected Parameter |
paramMu
Central attraction coefficient parameter.
|
static String |
RADIUS
Parameter name for equatorial radius.
|
Modifier | Constructor and Description |
---|---|
protected |
AbstractTides(Frame centralBodyFrame,
double equatorialRadius,
double mu,
int degree,
int order)
Build a new instance.
|
protected |
AbstractTides(Frame centralBodyFrame,
double equatorialRadius,
double mu,
int degree,
int order,
int degreePD,
int orderPD)
Build a new instance.
|
protected |
AbstractTides(Frame centralBodyFrame,
Parameter equatorialRadius,
Parameter mu,
int degree,
int order)
Build a new instance using
Parameter . |
protected |
AbstractTides(Frame centralBodyFrame,
Parameter equatorialRadius,
Parameter mu,
int degree,
int order,
int degreePD,
int orderPD)
Build a new instance using
Parameter . |
Modifier and Type | Method and Description |
---|---|
void |
addContribution(SpacecraftState s,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
void |
addDAccDParam(SpacecraftState s,
Parameter param,
double[] dAccdParam)
Compute acceleration derivatives with respect to additional parameters.
|
void |
addDAccDState(SpacecraftState s,
double[][] dAccdPos,
double[][] dAccdVel)
Compute acceleration derivatives with respect to state parameters.
|
Vector3D |
computeAcceleration(PVCoordinates pv,
Frame frame,
AbsoluteDate date)
Method to compute the acceleration, from Balmino algorithm (see BalminoAttractionModel class).
|
Vector3D |
computeAcceleration(SpacecraftState s)
Compute the acceleration due to the force.
|
boolean |
computeGradientVelocity()
This method returns true if the acceleration partial derivatives with
respect to velocity have to be computed.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
abstract void |
updateCoefficientsCandS(AbsoluteDate date)
Update the C and the S coefficients for acceleration computation.
|
abstract void |
updateCoefficientsCandSPD(AbsoluteDate date)
Update the C and the S coefficients for partial derivatives computation.
|
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
addParameter, getParameters, supportsParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
checkData
getParameters, supportsParameter
computeGradientPosition
public static final String MU
public static final String RADIUS
protected Parameter paramMu
protected Parameter paramAe
protected double[][] coefficientsC
protected double[][] coefficientsS
protected double[][] coefficientsCPD
protected double[][] coefficientsSPD
protected final Frame bodyFrame
protected AbstractTides(Frame centralBodyFrame, double equatorialRadius, double mu, int degree, int order)
centralBodyFrame
- rotating central body frameequatorialRadius
- equatorial radiusmu
- central body attraction coefficient (m3/s2)degree
- degreeorder
- orderprotected AbstractTides(Frame centralBodyFrame, double equatorialRadius, double mu, int degree, int order, int degreePD, int orderPD)
centralBodyFrame
- rotating central body frameequatorialRadius
- equatorial radiusmu
- central body attraction coefficient (m3/s2)degree
- degree for acceleration computationorder
- order for acceleration computationdegreePD
- degree for partial derivatives computationorderPD
- order for partial derivatives computationprotected AbstractTides(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, int degree, int order)
Parameter
.centralBodyFrame
- rotating central body frameequatorialRadius
- equatorial radius parametermu
- central body attraction coefficient (m3/s2) parameterdegree
- degreeorder
- orderprotected AbstractTides(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, int degree, int order, int degreePD, int orderPD)
Parameter
.centralBodyFrame
- rotating central body frameequatorialRadius
- equatorial radius parametermu
- central body attraction coefficient (m3/s2) parameterdegree
- degree for acceleration computationorder
- order for acceleration computationdegreePD
- degree for partial derivatives computationorderPD
- order for partial derivatives computationpublic void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws PatriusException
addContribution
in interface ForceModel
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedPatriusException
- if some specific error occurspublic Vector3D computeAcceleration(SpacecraftState s) throws PatriusException
computeAcceleration
in interface ForceModel
s
- current state information: date, kinematics, attitudeSpacecraftState frame
PatriusException
- if some specific error occurspublic Vector3D computeAcceleration(PVCoordinates pv, Frame frame, AbsoluteDate date) throws PatriusException
Method to compute the acceleration, from Balmino algorithm (see BalminoAttractionModel class). This method has been implemented in order to validate the force model only. The reason is that for the validation context, we do not want to set up an instance of the SpacecraftState object to avoid the inertial frame of the spacecraft orbit.
(see Feature #34 on https://www.orekit.org/forge/issues/34)
Out of the validation context, one must use the method Vector3D computeAcceleration(final SpacecraftState s)
pv
- PV coordinates of the spacecraftframe
- frame in which the acceleration is computeddate
- datePatriusException
- if an Orekit error occurspublic EventDetector[] getEventsDetectors()
getEventsDetectors
in interface ForceModel
public boolean computeGradientVelocity()
computeGradientVelocity
in interface GradientModel
public abstract void updateCoefficientsCandS(AbsoluteDate date) throws PatriusException
updateCoefficientsCandS
in interface PotentialTimeVariations
date
- : datePatriusException
- if position cannot be computed in given framepublic abstract void updateCoefficientsCandSPD(AbsoluteDate date) throws PatriusException
updateCoefficientsCandSPD
in interface PotentialTimeVariations
date
- : datePatriusException
- if position cannot be computed in given framepublic final void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel) throws PatriusException
addDAccDState
in interface IJacobiansParameterizable
s
- spacecraft statedAccdPos
- acceleration derivatives with respect to positiondAccdVel
- acceleration derivatives with respect to velocityPatriusException
- if derivatives cannot be computedpublic void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam) throws PatriusException
addDAccDParam
in interface IJacobiansParameterizable
s
- spacecraft stateparam
- the parameter with respect to which derivatives are requireddAccdParam
- acceleration derivatives with respect to specified parametersPatriusException
- if derivatives cannot be computedCopyright © 2021 CNES. All rights reserved.