fr.cnes.sirius.patrius.stela.propagation
Class StelaGTOPropagator

java.lang.Object
  extended by fr.cnes.sirius.patrius.stela.propagation.StelaAbstractPropagator
      extended by fr.cnes.sirius.patrius.stela.propagation.StelaGTOPropagator
All Implemented Interfaces:
Serializable, Propagator, PVCoordinatesProvider

public class StelaGTOPropagator
extends StelaAbstractPropagator

STELA propagator for Geostationnary Transfert Orbits (GTO).

Since:
1.3
Version:
$Id: StelaGTOPropagator.java 17584 2017-05-10 13:26:39Z bignon $
Author:
Tiziana Sabatini, Cedric Dental
See Also:
Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
use of mutable attributes

Field Summary
protected  AbsoluteDate maxDate
          Max date after which simulation has to fail if exception mecanism was triggered
protected  int stepCounter
          Step counter for drag computation.
protected  boolean wasException
          Was the exception mecanism triggered already
 
Fields inherited from class fr.cnes.sirius.patrius.stela.propagation.StelaAbstractPropagator
attitudeProviderByDefault, attitudeProviderEvents, attitudeProviderForces, eventsStates, integrator, oldStepHandler
 
Fields inherited from interface org.orekit.propagation.Propagator
EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
 
Constructor Summary
StelaGTOPropagator(FirstOrderIntegrator integr)
          Build a StelaGTOPropagator.
StelaGTOPropagator(FirstOrderIntegrator integr, AttitudeProvider inAttitudeProviderForces, AttitudeProvider inAttitudeProviderEvents, StelaBasicInterpolator inInter, double maxShiftIn, double minStepSizeIn)
          Build a StelaGTOPropagator.
StelaGTOPropagator(FirstOrderIntegrator integr, AttitudeProvider inAttitudeProvider, StelaBasicInterpolator inInter, double maxShiftIn, double minStepSizeIn)
          Build a StelaGTOPropagator.
StelaGTOPropagator(FirstOrderIntegrator integr, double maxShiftIn, double minStepSizeIn)
          Build a StelaGTOPropagator.
 
Method Summary
 void addAdditionalEquations(StelaAdditionalEquations addEquations)
          Add a set of user-specified additional equations to be integrated along with the orbit propagation.
 void addAttitudeEquation(StelaAttitudeAdditionalEquations addEqu)
          Add a set of user-specified attitude equations to be integrated along with the orbit propagation.
 void addForceModel(StelaForceModel forceModel)
          Add a force model to the global perturbation model.
 List<StelaAdditionalEquations> getAddEquations()
          Get the additional equations.
protected  double[] getdDragdt()
          Method that returns the drag value in memory, only used for n steps drag computation purposes
 List<StelaForceModel> getForceModels()
          Get perturbing force models list.
 ForcesStepHandler getForcesStepHandler()
          Getter for forces step handler.
 List<AbstractStelaGaussContribution> getGaussForceModels()
          Get perturbing Gauss force models list.
 List<AbstractStelaLagrangeContribution> getLagrangeForceModels()
          Get perturbing Lagrange force models list.
protected  double getMass(AbsoluteDate date)
          Get the mass.
 OrbitNatureConverter getOrbitNatureConverter()
          Get the mean/osculating orbit converter.
 AbsoluteDate getReferenceDate()
          Get the reference date
protected  List<OrekitStepHandler> getStepHandlers()
          Provides a list of step handlers to be performed during propagation.
protected  boolean isRecomputeDrag()
           
 SpacecraftState propagate(AbsoluteDate start, AbsoluteDate target)
          Propagate from a start date towards a target date.
protected  SpacecraftState propagateSpacecraftState(AbsoluteDate date)
          Extrapolate a spacecraftState up to a specific target date.
 SpacecraftState propagationManagement(SpacecraftState state, double stepSize, double dt, AbsoluteDate target)
          Manages the current step, method to override when user wants to deal with exceptions during the propagation.
 void removeForceModels()
          Remove all perturbing force models from the global perturbation model.
 void setAttitudeProvider(AttitudeProvider attitudeProvider)
          Set attitude provider for forces and events computation.
 void setAttitudeProviderEvents(AttitudeProvider attitudeEventsProvider)
          Set attitude provider for events computation.
 void setAttitudeProviderForces(AttitudeProvider attitudeForcesProvider)
          Set attitude provider for forces computation.
protected  void setdDragdt(double[] indDragdt)
          Specify the drag values, only used for n steps drag computation purposes
 void setInitialState(SpacecraftState initialState, double massIn, boolean isOsculatingIn)
          Set the initial state.
 
Methods inherited from class fr.cnes.sirius.patrius.stela.propagation.StelaAbstractPropagator
acceptStep, addAdditionalStateProvider, addEventDetector, basicPropagate, clearEventsDetectors, getAttitudeProvider, getAttitudeProviderEvents, getAttitudeProviderForces, getEventsDetectors, getFrame, getGeneratedEphemeris, getInitialState, getMode, getPVCoordinates, getPvProvider, getTimeDerivativesList, goAhead, isStoreTimeDerivatives, propagate, resetInitialState, setEphemerisMode, setIntegrator, setMasterMode, setMasterMode, setOrbitFrame, setSlaveMode, setStartDate, setStoreTimeDerivatives
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

wasException

protected boolean wasException
Was the exception mecanism triggered already


maxDate

protected AbsoluteDate maxDate
Max date after which simulation has to fail if exception mecanism was triggered


stepCounter

protected int stepCounter
Step counter for drag computation.

Constructor Detail

StelaGTOPropagator

public StelaGTOPropagator(FirstOrderIntegrator integr)
                   throws OrekitException
Build a StelaGTOPropagator.

After creation, there is no orbit, method setInitialState must be called. This constructor uses a Default Law as AttitudeProvider. For a specific Attitude Provider please use the other constructor. After creation, there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a simple Keplerian evolution.

During reentry, no correction is performed if some results are not physical. As a result, an exception will be thrown if obtained results are not physical.

Parameters:
integr - the first order integrator to use for extrapolation
Throws:
OrekitException - exception in reset initial state

StelaGTOPropagator

public StelaGTOPropagator(FirstOrderIntegrator integr,
                          double maxShiftIn,
                          double minStepSizeIn)
                   throws OrekitException
Build a StelaGTOPropagator.

After creation, there is no orbit, method setInitialState must be called. This constructor uses a the AttitudeProvider given by the user. After creation, there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a simple Keplerian evolution.

No attitude provider is defined. The user should call setAttitudeProvider(AttitudeProvider) or setAttitudeProviderEvents(AttitudeProvider) or setAttitudeProviderForces(AttitudeProvider)

Parameters:
integr - the first order integrator to use for extrapolation
maxShiftIn - Maximum number of integration steps STELA will try to correct to get some physical results (mostly during reentry since integration step is too large). If 0, not correction is performed. If more corrections are required, an exception will be thrown
minStepSizeIn - Smallest integration stepsize allowed. STELA will try to reduce stepsize during reentry to try to get some physical results. If equals to integrator step size, not correction is done. If a smaller stepsize than provided value is required, an exception will be thrown
Throws:
OrekitException - exception in reset initial state

StelaGTOPropagator

public StelaGTOPropagator(FirstOrderIntegrator integr,
                          AttitudeProvider inAttitudeProvider,
                          StelaBasicInterpolator inInter,
                          double maxShiftIn,
                          double minStepSizeIn)
                   throws OrekitException
Build a StelaGTOPropagator.

After creation, there is no orbit, method setInitialState must be called. This constructor uses a single AttitudeProvider given by the user. After creation, there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a simple Keplerian evolution.

Parameters:
integr - the first order integrator to use for extrapolation
inAttitudeProvider - attitude provider
inInter - the interpolator
maxShiftIn - Maximum number of integration steps STELA will try to correct to get some physical results (mostly during reentry since integration step is too large). If 0, not correction is performed. If more corrections are required, an exception will be thrown
minStepSizeIn - Smallest integration stepsize allowed. STELA will try to reduce stepsize during reentry to try to get some physical results. If equals to integrator step size, not correction is done. If a smaller stepsize than provided value is required, an exception will be thrown
Throws:
OrekitException - exception in reset initial state

StelaGTOPropagator

public StelaGTOPropagator(FirstOrderIntegrator integr,
                          AttitudeProvider inAttitudeProviderForces,
                          AttitudeProvider inAttitudeProviderEvents,
                          StelaBasicInterpolator inInter,
                          double maxShiftIn,
                          double minStepSizeIn)
                   throws OrekitException
Build a StelaGTOPropagator.

After creation, there is no orbit, method setInitialState must be called. This constructor uses AttitudeProvider for forces and events computations given by the user. After creation, there are no perturbing forces at all. This means that if addForceModel is not called after creation, the integrated orbit will follow a simple Keplerian evolution.

Parameters:
integr - the first order integrator to use for extrapolation
inAttitudeProviderForces - attitude provider for forces computation
inAttitudeProviderEvents - attitude provider for events computation
inInter - the interpolator
maxShiftIn - Maximum number of integration steps STELA will try to correct to get some physical results (mostly during reentry since integration step is too large). If 0, not correction is performed. If more corrections are required, an exception will be thrown
minStepSizeIn - Smallest integration stepsize allowed. STELA will try to reduce stepsize during reentry to try to get some physical results. If equals to integrator step size, not correction is done. If a smaller stepsize than provided value is required, an exception will be thrown
Throws:
OrekitException - exception in reset initial state
Method Detail

isRecomputeDrag

protected boolean isRecomputeDrag()
Returns:
the recomputeDrag

setInitialState

public void setInitialState(SpacecraftState initialState,
                            double massIn,
                            boolean isOsculatingIn)
                     throws OrekitException
Set the initial state.

Parameters:
initialState - initial state (no mass information should be provided)
massIn - the initial mass
isOsculatingIn - true if initial state is osculating
Throws:
OrekitException - OrekitException
See Also:
StelaAbstractPropagator.propagate(AbsoluteDate)

addForceModel

public void addForceModel(StelaForceModel forceModel)
Add a force model to the global perturbation model.

If this method is not called at all, the integrated orbit will follow a simple keplerian evolution.

Parameters:
forceModel - perturbing StelaForceModel to add
See Also:
removeForceModels()

removeForceModels

public void removeForceModels()
Remove all perturbing force models from the global perturbation model.

Once all perturbing forces have been removed (and as long as no new force model is added), the integrated orbit will follow a simple keplerian evolution.

See Also:
addForceModel(StelaForceModel)

getForceModels

public List<StelaForceModel> getForceModels()
Get perturbing force models list.

Returns:
list of all perturbing force models
See Also:
addForceModel(StelaForceModel), removeForceModels()

getGaussForceModels

public List<AbstractStelaGaussContribution> getGaussForceModels()
Get perturbing Gauss force models list.

Returns:
list of Gauss perturbing force models
See Also:
addForceModel(StelaForceModel), removeForceModels()

getLagrangeForceModels

public List<AbstractStelaLagrangeContribution> getLagrangeForceModels()
Get perturbing Lagrange force models list.

Returns:
list of Lagrange perturbing force models
See Also:
addForceModel(StelaForceModel), removeForceModels()

addAdditionalEquations

public void addAdditionalEquations(StelaAdditionalEquations addEquations)
Add a set of user-specified additional equations to be integrated along with the orbit propagation.

Parameters:
addEquations - additional equations
See Also:
NumericalPropagator

addAttitudeEquation

public void addAttitudeEquation(StelaAttitudeAdditionalEquations addEqu)
Add a set of user-specified attitude equations to be integrated along with the orbit propagation. If the set of attitude equations is already registered for the current attitude, it is replaced by the new one.

Parameters:
addEqu - attitude additional equations for Stela GTO propagator

setAttitudeProvider

public void setAttitudeProvider(AttitudeProvider attitudeProvider)
Set attitude provider for forces and events computation. A default attitude provider is available in ConstantAttitudeLaw.

Specified by:
setAttitudeProvider in interface Propagator
Overrides:
setAttitudeProvider in class StelaAbstractPropagator
Parameters:
attitudeProvider - attitude provider

setAttitudeProviderForces

public void setAttitudeProviderForces(AttitudeProvider attitudeForcesProvider)
Set attitude provider for forces computation. A default attitude provider is available in ConstantAttitudeLaw.

Specified by:
setAttitudeProviderForces in interface Propagator
Overrides:
setAttitudeProviderForces in class StelaAbstractPropagator
Parameters:
attitudeForcesProvider - attitude provider for forces computation

setAttitudeProviderEvents

public void setAttitudeProviderEvents(AttitudeProvider attitudeEventsProvider)
Set attitude provider for events computation. A default attitude provider is available in ConstantAttitudeLaw.

Specified by:
setAttitudeProviderEvents in interface Propagator
Overrides:
setAttitudeProviderEvents in class StelaAbstractPropagator
Parameters:
attitudeEventsProvider - attitude provider for events computation

propagate

public SpacecraftState propagate(AbsoluteDate start,
                                 AbsoluteDate target)
                          throws PropagationException
Description copied from class: StelaAbstractPropagator
Propagate from a start date towards a target date.

Those propagators use a start date and a target date to compute the propagated state. For propagators using event detection mechanism, if the provided start date is different from the initial state date, a first, simple propagation is performed, without processing any event computation. Then complete propagation is performed from start date to target date.

Specified by:
propagate in interface Propagator
Overrides:
propagate in class StelaAbstractPropagator
Parameters:
start - start date from which orbit state should be propagated
target - target date to which orbit state should be propagated
Returns:
propagated state
Throws:
PropagationException - if state cannot be propagated

getStepHandlers

protected List<OrekitStepHandler> getStepHandlers()
Description copied from class: StelaAbstractPropagator
Provides a list of step handlers to be performed during propagation.

Specified by:
getStepHandlers in class StelaAbstractPropagator
Returns:
propagation list of step handlers.

propagateSpacecraftState

protected SpacecraftState propagateSpacecraftState(AbsoluteDate date)
                                            throws OrekitException
Description copied from class: StelaAbstractPropagator
Extrapolate a spacecraftState up to a specific target date.

Specified by:
propagateSpacecraftState in class StelaAbstractPropagator
Parameters:
date - target date for the orbit
Returns:
extrapolated parameters
Throws:
OrekitException - * if some parameters are out of bounds

propagationManagement

public SpacecraftState propagationManagement(SpacecraftState state,
                                             double stepSize,
                                             double dt,
                                             AbsoluteDate target)
                                      throws OrekitException
Description copied from class: StelaAbstractPropagator
Manages the current step, method to override when user wants to deal with exceptions during the propagation.

Overrides:
propagationManagement in class StelaAbstractPropagator
Parameters:
state - the current SpacecraftState
stepSize - the current stepsize
dt - the dt time
target - target date to propagate
Returns:
finalState the final spacecraft state
Throws:
OrekitException - Orekit exception

getMass

protected double getMass(AbsoluteDate date)
                  throws PropagationException
Description copied from class: StelaAbstractPropagator
Get the mass.

Specified by:
getMass in class StelaAbstractPropagator
Parameters:
date - target date for the orbit
Returns:
mass mass
Throws:
PropagationException - if some parameters are out of bounds

getReferenceDate

public AbsoluteDate getReferenceDate()
Get the reference date

Returns:
the reference date.

getAddEquations

public List<StelaAdditionalEquations> getAddEquations()
Get the additional equations.

Returns:
the additional equations.

getOrbitNatureConverter

public OrbitNatureConverter getOrbitNatureConverter()
Get the mean/osculating orbit converter.

Returns:
the mean/osculating orbit converter.

setdDragdt

protected void setdDragdt(double[] indDragdt)
Specify the drag values, only used for n steps drag computation purposes

Parameters:
indDragdt - the drag values to set

getdDragdt

protected double[] getdDragdt()
Method that returns the drag value in memory, only used for n steps drag computation purposes

Returns:
the dDragdt

getForcesStepHandler

public ForcesStepHandler getForcesStepHandler()
Getter for forces step handler.

Returns:
forces step handler


Copyright © 2017 CNES. All Rights Reserved.