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 Details

    • 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 Details

    • 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