public class TimeSpanParametricAcceleration extends AbstractForceModel
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.
|
Constructor and Description |
---|
TimeSpanParametricAcceleration(Vector3D direction,
AttitudeProvider attitudeOverride,
AccelerationModel accelerationModel)
Simple constructor.
|
TimeSpanParametricAcceleration(Vector3D direction,
boolean isInertial,
AccelerationModel accelerationModel)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
<T extends CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> state,
T[] parameters)
Compute acceleration.
|
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 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> |
getEventsDetectors()
Get the discrete events related to the model.
|
<T extends CalculusFieldElement<T>> |
getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.
|
List<ParameterDriver> |
getParametersDrivers()
Get the drivers for force model parameters.
|
NavigableSet<TimeSpanMap.Transition<AccelerationModel>> |
getTransitions()
Get the
TimeSpanMap.Transition s of the acceleration model time span map. |
void |
init(SpacecraftState initialState,
AbsoluteDate target)
Initialize the force model at the start of propagation.
|
complainIfNotSupported, getParameterDriver, isSupported
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addContribution, addContribution, getParameters, getParameters
public static final String DATE_BEFORE
public static final String DATE_AFTER
public TimeSpanParametricAcceleration(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(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.
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 NavigableSet<TimeSpanMap.Transition<AccelerationModel>> getTransitions()
TimeSpanMap.Transition
s of the acceleration model time span map.TimeSpanMap.Transition
s for the acceleration model time span mappublic boolean dependsOnPositionOnly()
public Vector3D acceleration(SpacecraftState state, double[] parameters)
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameterspublic <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> state, T[] parameters)
T
- type of the elementsstate
- current state information: date, kinematics, attitudeparameters
- values of the force model parameterspublic Stream<EventDetector> getEventsDetectors()
public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
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.
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 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-2021 CS GROUP. All rights reserved.