Class 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 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 corrected
        propagatorList - list of propagators associated to each patch point
        tolerance - convergence tolerance on the constraint vector
        maxIter - maximum number of iterations
        isAutonomous - 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 interface MultipleShooting
        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 index
        fxAdditional - 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