Class PenalizedCartesianFuelCost

  • All Implemented Interfaces:
    CartesianCost
    Direct Known Subclasses:
    QuadraticallyPenalizedCartesianFuel

    public abstract class PenalizedCartesianFuelCost
    extends AbstractCartesianCost
    Abstract class for fuel cost with a penalty term proportional to a weight parameter epsilon. This is typically used in a continuation method, starting from epsilon equal to 1 and going towards 0 where the fuel cost is recovered. The point is to enhance convergence. The control vector is the normalized (by the upper bound on magnitude) thrust force in propagation frame.
    Since:
    13.0
    Author:
    Romain Serra
    See Also:
    CartesianFuelCost
    • Constructor Detail

      • PenalizedCartesianFuelCost

        protected PenalizedCartesianFuelCost​(String name,
                                             double massFlowRateFactor,
                                             double maximumThrustMagnitude,
                                             double epsilon,
                                             EventDetectionSettings eventDetectionSettings)
        Constructor.
        Parameters:
        name - adjoint name
        massFlowRateFactor - mass flow rate factor
        maximumThrustMagnitude - maximum thrust magnitude
        epsilon - penalty weight
        eventDetectionSettings - detection settings
    • Method Detail

      • getEpsilon

        public double getEpsilon()
        Getter for the penalty weight epsilon.
        Returns:
        epsilon
      • getMaximumThrustMagnitude

        public double getMaximumThrustMagnitude()
        Getter for maximum thrust magnitude.
        Returns:
        maximum thrust
      • getEventDetectionSettings

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

        public abstract double evaluatePenaltyFunction​(double controlNorm)
        Evaluate the penalty term (without the weight), assumed to be a function of the control norm.
        Parameters:
        controlNorm - Euclidean norm of control vector
        Returns:
        penalty function
      • getThrustDirection

        protected Vector3D getThrustDirection​(double[] adjointVariables)
        Computes the direction of thrust.
        Parameters:
        adjointVariables - adjoint vector
        Returns:
        thrust direction
      • 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