Class AbstractFixedInitialCartesianSingleShooting

java.lang.Object
org.orekit.control.indirect.shooting.AbstractIndirectShooting
org.orekit.control.indirect.shooting.AbstractFixedInitialCartesianSingleShooting
Direct Known Subclasses:
AbstractFixedBoundaryCartesianSingleShooting

public abstract class AbstractFixedInitialCartesianSingleShooting extends AbstractIndirectShooting
Abstract class for indirect single shooting methods with fixed initial Cartesian state. Inheritors must implement the iteration update, assuming derivatives are needed.
Since:
13.0
Author:
Romain Serra
See Also:
  • Constructor Details

    • AbstractFixedInitialCartesianSingleShooting

      protected AbstractFixedInitialCartesianSingleShooting(ShootingPropagationSettings propagationSettings, SpacecraftState initialSpacecraftStateTemplate)
      Constructor with boundary conditions as orbits.
      Parameters:
      propagationSettings - propagation settings
      initialSpacecraftStateTemplate - template for initial propagation state
  • Method Details

    • getScales

      protected double[] getScales()
      Protected getter for the differentiation scales.
      Returns:
      scales for variable scales
    • getMaximumIterationCount

      public abstract int getMaximumIterationCount()
      Returns the maximum number of iterations.
      Returns:
      maximum iterations
    • buildPropagator

      public NumericalPropagator buildPropagator(double[] adjoint, double mass)
      Create numerical propagator with input initial adjoint vector and mass.
      Parameters:
      adjoint - initial adjoint variables
      mass - initial mass
      Returns:
      numerical propagator ready for use
      Since:
      14.0
    • solve

      public ShootingBoundaryOutput solve(double initialMass, double[] initialGuess)
      Solve for the boundary conditions, given an initial mass and an initial guess for the adjoint variables.
      Specified by:
      solve in class AbstractIndirectShooting
      Parameters:
      initialMass - initial mass
      initialGuess - initial guess
      Returns:
      boundary problem solution
    • solve

      public ShootingBoundaryOutput solve(double initialMass, double[] initialGuess, double[] userScales)
      Solve for the boundary conditions, given an initial mass and an initial guess for the adjoint variables. Uses scales for automatic differentiation.
      Parameters:
      initialMass - initial mass
      initialGuess - initial guess
      userScales - scales
      Returns:
      boundary problem solution
    • buildInternalPropagator

      protected NumericalPropagator buildInternalPropagator(SpacecraftState initialState)
      Create numerical propagator for internal use only.
      Overrides:
      buildInternalPropagator in class AbstractIndirectShooting
      Parameters:
      initialState - initial state
      Returns:
      numerical propagator
    • computeCandidateSolution

      protected abstract ShootingBoundaryOutput computeCandidateSolution(SpacecraftState initialState, int iterationCount)
      Form solution container with input initial state.
      Parameters:
      initialState - initial state
      iterationCount - iteration count
      Returns:
      candidate solution
    • createInitialStateWithMass

      protected SpacecraftState createInitialStateWithMass(double initialMass)
      Create initial state with input mass.
      Parameters:
      initialMass - initial mass
      Returns:
      state
    • createFieldInitialStateWithMassAndAdjoint

      protected FieldSpacecraftState<Gradient> createFieldInitialStateWithMassAndAdjoint(double initialMass, double[] initialAdjoint)
      Create initial Gradient state with input mass and adjoint vector, the latter being the independent variables.
      Parameters:
      initialMass - initial mass
      initialAdjoint - initial adjoint variables
      Returns:
      state
    • createFieldState

      protected <T extends CalculusFieldElement<T>> FieldSpacecraftState<T> createFieldState(FieldAbsoluteDate<T> date, T[] cartesian, T mass, T[] adjoint)
      Create state.
      Type Parameters:
      T - field type
      Parameters:
      date - epoch
      cartesian - Cartesian variables
      mass - mass
      adjoint - adjoint variables
      Returns:
      state
    • updateShootingVariables

      protected abstract double[] updateShootingVariables(double[] originalShootingVariables, FieldSpacecraftState<Gradient> fieldTerminalState)
      Update shooting variables.
      Parameters:
      originalShootingVariables - original shooting variables (before update)
      fieldTerminalState - final state of gradient propagation
      Returns:
      updated shooting variables
    • buildFieldODE

      protected <T extends CalculusFieldElement<T>> FieldOrdinaryDifferentialEquation<T> buildFieldODE(FieldAbsoluteDate<T> referenceDate)
      Build Ordinary Differential Equation for Field.
      Type Parameters:
      T - field type
      Parameters:
      referenceDate - date defining the origin of times
      Returns:
      Field ODE
      Since:
      13.0