Class BoundedCartesianEnergy

java.lang.Object
org.orekit.control.indirect.adjoint.cost.AbstractCartesianCost
org.orekit.control.indirect.adjoint.cost.BoundedCartesianEnergy
All Implemented Interfaces:
CartesianCost

public class BoundedCartesianEnergy extends AbstractCartesianCost
Class for bounded energy cost with Cartesian coordinates. An energy cost is proportional to the integral over time of the squared Euclidean norm of the control vector, often scaled with 1/2. This type of cost is not optimal in terms of mass consumption, however its solutions showcase a smoother behavior favorable for convergence in shooting techniques. Here, the control vector is chosen as the thrust force divided by the maximum thrust magnitude and expressed in the propagation frame.
Since:
12.2
Author:
Romain Serra
See Also:
  • Constructor Details

    • BoundedCartesianEnergy

      public BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude, EventDetectionSettings eventDetectionSettings)
      Constructor.
      Parameters:
      name - name
      massFlowRateFactor - mass flow rate factor
      maximumThrustMagnitude - maximum thrust magnitude
      eventDetectionSettings - singularity event detection settings
    • BoundedCartesianEnergy

      public BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude)
      Constructor.
      Parameters:
      name - name
      massFlowRateFactor - mass flow rate factor
      maximumThrustMagnitude - maximum thrust magnitude
  • Method Details

    • getMaximumThrustMagnitude

      public double getMaximumThrustMagnitude()
      Getter for maximum thrust magnitude.
      Returns:
      maximum thrust
      Since:
      13.0
    • getThrustForceNorm

      protected double getThrustForceNorm(double[] adjointVariables, double mass)
      Computes the Euclidean norm of the thrust force.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      Returns:
      norm of thrust
    • getEventDetectors

      public Stream<EventDetector> getEventDetectors()
      Get the detectors needed for propagation.
      Returns:
      event detectors
    • getEventDetectionSettings

      public EventDetectionSettings getEventDetectionSettings()
      Getter for event detection settings.
      Returns:
      detection settings.
    • getThrustAccelerationVector

      public Vector3D getThrustAccelerationVector(double[] adjointVariables, double mass)
      Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      Returns:
      thrust vector
    • getThrustDirection

      protected Vector3D getThrustDirection(double[] adjointVariables)
      Computes the direction of thrust.
      Parameters:
      adjointVariables - adjoint vector
      Returns:
      thrust direction
    • updateAdjointDerivatives

      public void updateAdjointDerivatives(double[] adjointVariables, double mass, double[] adjointDerivatives)
      Update the adjoint derivatives if necessary.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      adjointDerivatives - derivatives to update
    • getHamiltonianContribution

      public double getHamiltonianContribution(double[] adjointVariables, double mass)
      Computes the Hamiltonian contribution to the cost function. It equals the Lagrange-form integrand multiplied by -1.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      Returns:
      contribution to Hamiltonian