Class UnboundedCartesianEnergyNeglectingMass

  • All Implemented Interfaces:
    CartesianCost, EventDetectorsProvider

    public class UnboundedCartesianEnergyNeglectingMass
    extends AbstractCartesianEnergy
    Class for unbounded energy cost with Cartesian coordinates neglecting the mass consumption. Under this assumption, the mass is constant and there is no need to consider the corresponding adjoint variable. Here, the control vector is chosen as the acceleration given by thrusting, expressed in the propagation frame. This leads to the optimal thrust force being equal to the adjoint velocity vector times the mass.
    Since:
    12.2
    Author:
    Romain Serra
    • Constructor Detail

      • UnboundedCartesianEnergyNeglectingMass

        public UnboundedCartesianEnergyNeglectingMass​(String name)
        Constructor.
        Parameters:
        name - name
    • Method Detail

      • getAdjointDimension

        public int getAdjointDimension()
        Getter for adjoint vector dimension. Default is 7 (six for Cartesian coordinates and one for mass).
        Returns:
        adjoint dimension
      • getMassFlowRateFactor

        public double 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 CartesianCost
        Overrides:
        getMassFlowRateFactor in class AbstractCartesianEnergy
        Returns:
        mass flow rate factor
      • 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
      • getFieldThrustAccelerationVector

        public <T extends CalculusFieldElement<T>> FieldVector3D<T> getFieldThrustAccelerationVector​(T[] adjointVariables,
                                                                                                     T mass)
        Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.
        Type Parameters:
        T - field type
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        Returns:
        thrust vector
      • updateAdjointDerivatives

        public void updateAdjointDerivatives​(double[] adjointVariables,
                                             double mass,
                                             double[] adjointDerivatives)
        Description copied from interface: CartesianCost
        Update the adjoint derivatives if necessary.
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        adjointDerivatives - derivatives to update
      • updateFieldAdjointDerivatives

        public <T extends CalculusFieldElement<T>> void updateFieldAdjointDerivatives​(T[] adjointVariables,
                                                                                      T mass,
                                                                                      T[] adjointDerivatives)
        Description copied from interface: CartesianCost
        Update the adjoint derivatives if necessary.
        Type Parameters:
        T - field type
        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
      • getFieldHamiltonianContribution

        public <T extends CalculusFieldElement<T>> T getFieldHamiltonianContribution​(T[] adjointVariables,
                                                                                     T mass)
        Computes the Hamiltonian contribution of the cost function.
        Type Parameters:
        T - field type
        Parameters:
        adjointVariables - adjoint vector
        mass - mass
        Returns:
        contribution to Hamiltonian
      • getEventDetectors

        public Stream<EventDetector> getEventDetectors()
        Get the discrete events related to the model.

        This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called

        Returns:
        stream of event detectors
      • getFieldEventDetectors

        public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors​(Field<T> field)
        Get the discrete events related to the model.

        This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called

        Type Parameters:
        T - extends CalculusFieldElement<T>
        Parameters:
        field - field to which the state belongs
        Returns:
        stream of event detectors