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 protected
AbstractMultipleShooting(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 void
addConstraint(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 SpacecraftState
getAugmentedInitialState(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 int
getNumberOfConstraints()
Get the total number of constraints.protected int
getNumberOfFreeComponents()
Get the number of free state components.protected List<SpacecraftState>
getPatchedSpacecraftState()
Get the list of patched spacecraft states.protected SpacecraftState
getPatchPoint(int i)
Get a patch point.void
setEpochFreedom(int patchIndex, boolean isFree)
Set the epoch of a patch point to free or not.void
setPatchPointComponentFreedom(int patchIndex, int componentIndex, boolean isFree)
Set a component of a patch point to free or not.void
setScaleLength(double scaleLength)
Set the scale length.void
setScaleTime(double scaleTime)
Set the scale time.protected void
updateAdditionalConstraints(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:
compute
in 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
-
-