public class TimeSpanParametricAcceleration extends Object implements ForceModel
This class is closely related to ParametricAcceleration
class.
The difference is that it has a TimeSpanMap
of AccelerationModel
objects as attribute
instead of a single AccelerationModel
object.
The idea behind this model is to allow the user to design a parametric acceleration model that can see its physical parameters
change with time, at dates chosen by the user.
This is a behavior that can be sought in precise orbit determination.
Indeed for this type of application, the empirical parameters must be revalued at
each new orbit.
addAccelerationModelValidAfter(AccelerationModel, AbsoluteDate)
or addAccelerationModelValidBefore(AccelerationModel, AbsoluteDate)
.TimeSpanMap
, meaning: ParameterDriver
(s)
of each AccelerationModel model that is added to the object. This will allow you keeping track of the evolution of your models.Modifier and Type | Field and Description |
---|---|
static String |
DATE_AFTER
Prefix for dates after in the parameter drivers' name.
|
static String |
DATE_BEFORE
Prefix for dates before in the parameter drivers' name.
|
DATATION_ACCURACY
Constructor and Description |
---|
TimeSpanParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction,
AttitudeProvider attitudeOverride,
AccelerationModel accelerationModel)
Simple constructor.
|
TimeSpanParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction,
boolean isInertial,
AccelerationModel accelerationModel)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> state,
T[] parameters)
Compute acceleration.
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
acceleration(SpacecraftState state,
double[] parameters)
Compute acceleration.
|
void |
addAccelerationModelValidAfter(AccelerationModel accelerationModel,
AbsoluteDate earliestValidityDate)
Add a AccelerationModel entry valid after a limit date.
|
void |
addAccelerationModelValidBefore(AccelerationModel accelerationModel,
AbsoluteDate latestValidityDate)
Add an AccelerationModel entry valid before a limit date.
|
boolean |
dependsOnPositionOnly()
Check if force models depends on position only.
|
TimeSpanMap<AccelerationModel> |
extractAccelerationModelRange(AbsoluteDate start,
AbsoluteDate end)
Extract a range of the
AccelerationModel map. |
double[] |
extractParameters(double[] parameters,
AbsoluteDate date)
Extract the proper parameter drivers' values from the array in input of the
acceleration method. |
<T extends org.hipparchus.CalculusFieldElement<T>> |
extractParameters(T[] parameters,
FieldAbsoluteDate<T> date)
Extract the proper parameter drivers' values from the array in input of the
acceleration method. |
AccelerationModel |
getAccelerationModel(AbsoluteDate date)
Get the
AccelerationModel model valid at a date. |
TimeSpanMap.Span<AccelerationModel> |
getAccelerationModelSpan(AbsoluteDate date)
Get the
AccelerationModel TimeSpanMap.Span containing a specified date. |
Stream<EventDetector> |
getEventDetectors()
Get the discrete events related to the model.
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getFieldEventDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.
|
TimeSpanMap.Span<AccelerationModel> |
getFirstSpan()
Get the first
time span of the acceleration model time span map. |
List<ParameterDriver> |
getParametersDrivers()
Get the drivers for parameters.
|
void |
init(SpacecraftState initialState,
AbsoluteDate target)
Initialize the force model at the start of propagation.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addContribution, addContribution, init
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
getEventDetectors, getFieldEventDetectors
public static final String DATE_BEFORE
public static final String DATE_AFTER
public TimeSpanParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, AccelerationModel accelerationModel)
direction
- acceleration direction in overridden spacecraft frameisInertial
- if true, direction is defined in the same inertial
frame used for propagation (i.e. SpacecraftState.getFrame()
),
otherwise direction is defined in spacecraft frame (i.e. using the
propagation attitude law
)accelerationModel
- acceleration model used to compute the contribution of the empirical accelerationpublic TimeSpanParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, AttitudeProvider attitudeOverride, AccelerationModel accelerationModel)
direction
- acceleration direction in overridden spacecraft frame
frame used for propagation (i.e. SpacecraftState.getFrame()
),
otherwise direction is defined in spacecraft frame (i.e. using the
propagation attitude law
)attitudeOverride
- provider for attitude used to compute accelerationaccelerationModel
- acceleration model used to compute the contribution of the empirical accelerationpublic void init(SpacecraftState initialState, AbsoluteDate target)
ForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,
ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
ForceModel.acceleration(SpacecraftState, double[])
or ForceModel.acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
init
in interface ForceModel
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.public void addAccelerationModelValidBefore(AccelerationModel accelerationModel, AbsoluteDate latestValidityDate)
Using addAccelerationModelValidBefore(entry, t)
will make entry
valid in ]-∞, t[ (note the open bracket).
WARNING: Since there is no default name for acceleration model parameters, the user must handle itself the driver names to consider different names (i.e. different parameters) when adding a new acceleration model.
accelerationModel
- AccelerationModel entrylatestValidityDate
- date before which the entry is valid
(must be different from all dates already used for transitions)public void addAccelerationModelValidAfter(AccelerationModel accelerationModel, AbsoluteDate earliestValidityDate)
Using addAccelerationModelValidAfter(entry, t)
will make entry
valid in [t, +∞[ (note the closed bracket).
WARNING: Since there is no default name for acceleration model parameters, the user must handle itself the driver names to consider different names (i.e. different parameters) when adding a new acceleration model.
accelerationModel
- AccelerationModel entryearliestValidityDate
- date after which the entry is valid
(must be different from all dates already used for transitions)public AccelerationModel getAccelerationModel(AbsoluteDate date)
AccelerationModel
model valid at a date.date
- the date of validitypublic TimeSpanMap.Span<AccelerationModel> getAccelerationModelSpan(AbsoluteDate date)
AccelerationModel
TimeSpanMap.Span
containing a specified date.date
- date belonging to the desired time spanpublic TimeSpanMap<AccelerationModel> extractAccelerationModelRange(AbsoluteDate start, AbsoluteDate end)
AccelerationModel
map.
The object returned will be a new independent instance that will contain only the transitions that lie in the specified range.
See theTimeSpanMap.extractRange method
for more.start
- earliest date at which a transition is included in the range
(may be set to AbsoluteDate.PAST_INFINITY
to keep all early transitions)end
- latest date at which a transition is included in the r
(may be set to AbsoluteDate.FUTURE_INFINITY
to keep all late transitions)public TimeSpanMap.Span<AccelerationModel> getFirstSpan()
time span
of the acceleration model time span map.time span
of the acceleration model time span mappublic boolean dependsOnPositionOnly()
dependsOnPositionOnly
in interface ForceModel
public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration(SpacecraftState state, double[] parameters)
acceleration
in interface ForceModel
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriverpublic <T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration(FieldSpacecraftState<T> state, T[] parameters)
acceleration
in interface ForceModel
T
- type of the elementsstate
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriverpublic Stream<EventDetector> getEventDetectors()
This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
getEventDetectors
in interface ForceModel
getEventDetectors
in interface EventDetectorsProvider
public <T extends org.hipparchus.CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(org.hipparchus.Field<T> field)
This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
getFieldEventDetectors
in interface ForceModel
getFieldEventDetectors
in interface EventDetectorsProvider
T
- extends CalculusFieldElement<T>field
- field to which the state belongspublic List<ParameterDriver> getParametersDrivers()
All the parameter drivers of all AccelerationModel models are returned in an array. Models are ordered chronologically.
getParametersDrivers
in interface ParameterDriversProvider
public double[] extractParameters(double[] parameters, AbsoluteDate date)
acceleration
method.
Parameters are filtered given an input date.parameters
- the input parameters arraydate
- the datepublic <T extends org.hipparchus.CalculusFieldElement<T>> T[] extractParameters(T[] parameters, FieldAbsoluteDate<T> date)
acceleration
method.
Parameters are filtered given an input date.T
- extends CalculusFieldElementparameters
- the input parameters arraydate
- the dateCopyright © 2002-2023 CS GROUP. All rights reserved.