Class FieldBoundedCartesianEnergy<T extends CalculusFieldElement<T>>

  • Type Parameters:
    T - field type
    All Implemented Interfaces:
    FieldCartesianCost<T>

    public class FieldBoundedCartesianEnergy<T extends CalculusFieldElement<T>>
    extends Object
    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. It has a unit Euclidean norm.
    Since:
    13.0
    Author:
    Romain Serra
    See Also:
    FieldUnboundedCartesianEnergy, BoundedCartesianEnergy
    • Constructor Detail

      • FieldBoundedCartesianEnergy

        public FieldBoundedCartesianEnergy​(String name,
                                           T massFlowRateFactor,
                                           T maximumThrustMagnitude,
                                           FieldEventDetectionSettings<T> eventDetectionSettings)
        Constructor.
        Parameters:
        name - name
        massFlowRateFactor - mass flow rate factor
        maximumThrustMagnitude - maximum thrust magnitude
        eventDetectionSettings - singularity event detection settings
      • FieldBoundedCartesianEnergy

        public FieldBoundedCartesianEnergy​(String name,
                                           T massFlowRateFactor,
                                           T maximumThrustMagnitude)
        Constructor.
        Parameters:
        name - name
        massFlowRateFactor - mass flow rate factor
        maximumThrustMagnitude - maximum thrust magnitude
    • Method Detail

      • getMaximumThrustMagnitude

        public T getMaximumThrustMagnitude()
        Getter for maximum thrust magnitude.
        Returns:
        maximum thrust
      • 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 BoundedCartesianEnergy toCartesianCost()
        Method returning equivalent in non-Field.
        Returns:
        cost function for non-Field applications
      • getMassFlowRateFactor

        public T getMassFlowRateFactor()
        Getter for mass flow rate factor. It is negated and multiplied by the thrust force magnitude to obtain the mass time derivative. The fact that it is a constant means that the exhaust speed is assumed to be independent of time.
        Specified by:
        getMassFlowRateFactor in interface FieldCartesianCost<T extends CalculusFieldElement<T>>
        Returns:
        mass flow rate factor
      • 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.
        Specified by:
        getFieldThrustAccelerationVector in interface FieldCartesianCost<T extends CalculusFieldElement<T>>
        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.
        Specified by:
        updateFieldAdjointDerivatives in interface FieldCartesianCost<T extends CalculusFieldElement<T>>
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        adjointDerivatives - derivatives to update
      • getFieldAdjointVelocityNorm

        protected T getFieldAdjointVelocityNorm​(T[] adjointVariables)
        Computes the Euclidean norm of the adjoint velocity vector.
        Parameters:
        adjointVariables - adjoint vector
        Returns:
        norm of adjoint velocity
      • getFieldHamiltonianContribution

        public T getFieldHamiltonianContribution​(T[] adjointVariables,
                                                 T mass)
        Computes the Hamiltonian contribution of the cost function.
        Specified by:
        getFieldHamiltonianContribution in interface FieldCartesianCost<T extends CalculusFieldElement<T>>
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        Returns:
        contribution to Hamiltonian