Class UnboundedCartesianEnergy

  • All Implemented Interfaces:
    CartesianCost

    public class UnboundedCartesianEnergy
    extends AbstractCartesianCost
    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:
    12.2
    Author:
    Romain Serra
    See Also:
    UnboundedCartesianEnergyNeglectingMass
    • Constructor Detail

      • UnboundedCartesianEnergy

        public UnboundedCartesianEnergy​(String name,
                                        double massFlowRateFactor,
                                        EventDetectionSettings eventDetectionSettings)
        Constructor.
        Parameters:
        name - name
        massFlowRateFactor - mass flow rate factor
        eventDetectionSettings - detection settings for singularity detections
      • UnboundedCartesianEnergy

        public UnboundedCartesianEnergy​(String name,
                                        double massFlowRateFactor)
        Constructor.
        Parameters:
        name - name
        massFlowRateFactor - mass flow rate factor
    • Method Detail

      • 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 of the cost function.
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        Returns:
        contribution to Hamiltonian