Package org.orekit.utils
Class AbstractMultipleShooting
- java.lang.Object
-
- org.orekit.utils.AbstractMultipleShooting
-
- All Implemented Interfaces:
MultipleShooting
- Direct Known Subclasses:
CR3BPMultipleShooter,MultipleShooter
public abstract class AbstractMultipleShooting extends Object implements MultipleShooting
Multiple shooting method using only constraints on state vectors of patch points (and possibly on epoch and integration time).- Since:
- 10.2
- Author:
- William Desprats, Alberto Fossà
- See Also:
- "TRAJECTORY DESIGN AND ORBIT MAINTENANCE STRATEGIES IN MULTI-BODY DYNAMICAL REGIMES by Thomas A. Pavlak, Purdue University"
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractMultipleShooting(List<SpacecraftState> initialGuessList, List<NumericalPropagator> propagatorList, double tolerance, int maxIter, boolean isAutonomous, String additionalName)Simple Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddConstraint(int patchIndex, int componentIndex, double constraintValue)Add a constraint on one component of one patch point.List<SpacecraftState>compute()Return the list of corrected patch points.protected abstract double[]computeAdditionalConstraints(List<SpacecraftState> propagatedSP)Compute the additional constraints.protected abstract double[][]computeAdditionalJacobianMatrix(List<SpacecraftState> propagatedSP)Compute a part of the Jacobian matrix from additional constraints.protected double[][]computeEpochJacobianMatrix(List<SpacecraftState> propagatedSP)Compute a part of the Jacobian matrix with derivatives from epoch.protected abstract SpacecraftStategetAugmentedInitialState(int i)Compute the additional state from the additionalEquations.protected Map<Integer,Double>getConstraintsMap()Get the map of patch points components which are constrained.protected boolean[]getFreeCompsMap()Get the map of free state components.protected intgetNumberOfConstraints()Get the total number of constraints.protected intgetNumberOfFreeComponents()Get the number of free state components.protected List<SpacecraftState>getPatchedSpacecraftState()Get the list of patched spacecraft states.protected SpacecraftStategetPatchPoint(int i)Get a patch point.voidsetEpochFreedom(int patchIndex, boolean isFree)Set the epoch of a patch point to free or not.voidsetPatchPointComponentFreedom(int patchIndex, int componentIndex, boolean isFree)Set a component of a patch point to free or not.voidsetScaleLength(double scaleLength)Set the scale length.voidsetScaleTime(double scaleTime)Set the scale time.protected voidupdateAdditionalConstraints(int startIndex, double[] fxAdditional)Update the array of additional constraints.
-
-
-
Constructor Detail
-
AbstractMultipleShooting
protected AbstractMultipleShooting(List<SpacecraftState> initialGuessList, List<NumericalPropagator> propagatorList, double tolerance, int maxIter, boolean isAutonomous, String additionalName)
Simple Constructor.Standard constructor for multiple shooting
- Parameters:
initialGuessList- initial patch points to be correctedpropagatorList- list of propagators associated to each patch pointtolerance- convergence tolerance on the constraint vectormaxIter- maximum number of iterationsisAutonomous- true if the dynamical system is autonomous (i.e. not dependent on the epoch)additionalName- name of the additional equations- Since:
- 11.1
-
-
Method Detail
-
getPatchPoint
protected SpacecraftState getPatchPoint(int i)
Get a patch point.- Parameters:
i- index of the patch point- Returns:
- state of the patch point
- Since:
- 11.1
-
setPatchPointComponentFreedom
public void setPatchPointComponentFreedom(int patchIndex, int componentIndex, boolean isFree)Set a component of a patch point to free or not.- Parameters:
patchIndex- Patch point index (zero-based)componentIndex- Index of the component to be constrained (zero-based)isFree- constraint value
-
setEpochFreedom
public void setEpochFreedom(int patchIndex, boolean isFree)Set the epoch of a patch point to free or not.- Parameters:
patchIndex- Patch point index (zero-based)isFree- constraint value
-
setScaleTime
public void setScaleTime(double scaleTime)
Set the scale time.- Parameters:
scaleTime- scale time in seconds
-
setScaleLength
public void setScaleLength(double scaleLength)
Set the scale length.- Parameters:
scaleLength- scale length in meters
-
addConstraint
public void addConstraint(int patchIndex, int componentIndex, double constraintValue)Add a constraint on one component of one patch point.- Parameters:
patchIndex- Patch point index (zero-based)componentIndex- Index of the component which is constrained (zero-based)constraintValue- constraint value
-
compute
public List<SpacecraftState> compute()
Return the list of corrected patch points. An optimizer is better suited for this problem- Specified by:
computein interfaceMultipleShooting- Returns:
- patchedSpacecraftStates patchedSpacecraftStates
-
computeEpochJacobianMatrix
protected double[][] computeEpochJacobianMatrix(List<SpacecraftState> propagatedSP)
Compute a part of the Jacobian matrix with derivatives from epoch. The CR3BP is a time invariant problem. The derivatives w.r.t. epoch are zero.- Parameters:
propagatedSP- propagatedSP- Returns:
- jacobianMatrix Jacobian sub-matrix
-
updateAdditionalConstraints
protected void updateAdditionalConstraints(int startIndex, double[] fxAdditional)Update the array of additional constraints.- Parameters:
startIndex- start indexfxAdditional- array of additional constraints
-
computeAdditionalConstraints
protected abstract double[] computeAdditionalConstraints(List<SpacecraftState> propagatedSP)
Compute the additional constraints.- Parameters:
propagatedSP- propagated SpacecraftState- Returns:
- fxAdditional additional constraints
-
computeAdditionalJacobianMatrix
protected abstract double[][] computeAdditionalJacobianMatrix(List<SpacecraftState> propagatedSP)
Compute a part of the Jacobian matrix from additional constraints.- Parameters:
propagatedSP- propagatedSP- Returns:
- jacobianMatrix Jacobian sub-matrix
-
getAugmentedInitialState
protected abstract SpacecraftState getAugmentedInitialState(int i)
Compute the additional state from the additionalEquations.- Parameters:
i- index of the state- Returns:
- augmentedSP SpacecraftState with the additional state within.
- Since:
- 11.1
-
getNumberOfFreeComponents
protected int getNumberOfFreeComponents()
Get the number of free state components.- Returns:
- number of free components
-
getNumberOfConstraints
protected int getNumberOfConstraints()
Get the total number of constraints.- Returns:
- the total number of constraints
-
getFreeCompsMap
protected boolean[] getFreeCompsMap()
Get the map of free state components.- Returns:
- map of free state components
-
getConstraintsMap
protected Map<Integer,Double> getConstraintsMap()
Get the map of patch points components which are constrained.- Returns:
- a map of patch points components which are constrained
-
getPatchedSpacecraftState
protected List<SpacecraftState> getPatchedSpacecraftState()
Get the list of patched spacecraft states.- Returns:
- a list of patched spacecraft states
-
-