Class FieldUnboundedCartesianEnergy<T extends CalculusFieldElement<T>>

java.lang.Object
org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost<T>
org.orekit.control.indirect.adjoint.cost.FieldUnboundedCartesianEnergy<T>
Type Parameters:
T - field type
All Implemented Interfaces:
FieldCartesianCost<T>

public class FieldUnboundedCartesianEnergy<T extends CalculusFieldElement<T>> extends FieldAbstractCartesianCost<T>
Class for unbounded energy cost with Cartesian coordinates. Here, the control vector is chosen as the thrust force, expressed in the propagation frame. This leads to the optimal thrust being in the same direction as the adjoint velocity.
Since:
13.0
Author:
Romain Serra
See Also:
  • Constructor Details

    • FieldUnboundedCartesianEnergy

      public FieldUnboundedCartesianEnergy(String name, T massFlowRateFactor, FieldEventDetectionSettings<T> eventDetectionSettings)
      Constructor.
      Parameters:
      name - name
      massFlowRateFactor - mass flow rate factor
      eventDetectionSettings - detection settings for singularity detections
    • FieldUnboundedCartesianEnergy

      public FieldUnboundedCartesianEnergy(String name, T massFlowRateFactor)
      Constructor.
      Parameters:
      name - name
      massFlowRateFactor - mass flow rate factor
  • Method Details

    • getFieldThrustForceNorm

      protected T getFieldThrustForceNorm(T[] adjointVariables, T mass)
      Computes the Euclidean norm of the thrust force.
      Parameters:
      adjointVariables - adjoint vector
      mass - mass
      Returns:
      norm of thrust
    • getFieldEventDetectors

      public Stream<FieldEventDetector<T>> getFieldEventDetectors(Field<T> field)
      Get the detectors needed for propagation.
      Parameters:
      field - field
      Returns:
      event detectors
    • toCartesianCost

      public UnboundedCartesianEnergy toCartesianCost()
      Method returning equivalent in non-Field.
      Returns:
      cost function for non-Field applications
    • getEventDetectionSettings

      public FieldEventDetectionSettings<T> getEventDetectionSettings()
      Getter for event detection settings.
      Returns:
      detection settings.
    • getFieldThrustAccelerationVector

      public FieldVector3D<T> getFieldThrustAccelerationVector(T[] adjointVariables, T 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
    • getFieldThrustDirection

      protected FieldVector3D<T> getFieldThrustDirection(T[] adjointVariables)
      Computes the direction of thrust.
      Parameters:
      adjointVariables - adjoint vector
      Returns:
      thrust direction
    • updateFieldAdjointDerivatives

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

      public T getFieldHamiltonianContribution(T[] adjointVariables, T 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
    • buildSwitchFunction

      protected FieldAbstractCartesianCost<T>.FieldSwitchFunction buildSwitchFunction(T detectionValue)
      Event detector for control non-differentiability.
      Parameters:
      detectionValue - critical value
      Returns:
      switch function