Class BoundedCartesianEnergy
- java.lang.Object
-
- org.orekit.control.indirect.adjoint.cost.AbstractCartesianCost
-
- org.orekit.control.indirect.adjoint.cost.BoundedCartesianEnergy
-
- All Implemented Interfaces:
CartesianCost
public class BoundedCartesianEnergy extends AbstractCartesianCost
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:
- 12.2
- Author:
- Romain Serra
- See Also:
UnboundedCartesianEnergy
-
-
Constructor Summary
Constructors Constructor Description BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude)
Constructor.BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude, EventDetectionSettings eventDetectionSettings)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EventDetectionSettings
getEventDetectionSettings()
Getter for event detection settings.Stream<EventDetector>
getEventDetectors()
Get the detectors needed for propagation.double
getHamiltonianContribution(double[] adjointVariables, double mass)
Computes the Hamiltonian contribution of the cost function.double
getMaximumThrustMagnitude()
Getter for maximum thrust magnitude.Vector3D
getThrustAccelerationVector(double[] adjointVariables, double mass)
Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.protected Vector3D
getThrustDirection(double[] adjointVariables)
Computes the direction of thrust.protected double
getThrustForceNorm(double[] adjointVariables, double mass)
Computes the Euclidean norm of the thrust force.void
updateAdjointDerivatives(double[] adjointVariables, double mass, double[] adjointDerivatives)
Update the adjoint derivatives if necessary.-
Methods inherited from class org.orekit.control.indirect.adjoint.cost.AbstractCartesianCost
getAdjointName, getAdjointVelocityNorm, getFieldAdjointVelocityNorm, getMassFlowRateFactor
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.control.indirect.adjoint.cost.CartesianCost
getAdjointDimension
-
-
-
-
Constructor Detail
-
BoundedCartesianEnergy
public BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude, EventDetectionSettings eventDetectionSettings)
Constructor.- Parameters:
name
- namemassFlowRateFactor
- mass flow rate factormaximumThrustMagnitude
- maximum thrust magnitudeeventDetectionSettings
- singularity event detection settings
-
BoundedCartesianEnergy
public BoundedCartesianEnergy(String name, double massFlowRateFactor, double maximumThrustMagnitude)
Constructor.- Parameters:
name
- namemassFlowRateFactor
- mass flow rate factormaximumThrustMagnitude
- maximum thrust magnitude
-
-
Method Detail
-
getMaximumThrustMagnitude
public double getMaximumThrustMagnitude()
Getter for maximum thrust magnitude.- Returns:
- maximum thrust
- Since:
- 13.0
-
getThrustForceNorm
protected double getThrustForceNorm(double[] adjointVariables, double mass)
Computes the Euclidean norm of the thrust force.- Parameters:
adjointVariables
- adjoint vectormass
- 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 vectormass
- 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 vectormass
- massadjointDerivatives
- derivatives to update
-
getHamiltonianContribution
public double getHamiltonianContribution(double[] adjointVariables, double mass)
Computes the Hamiltonian contribution of the cost function.- Parameters:
adjointVariables
- adjoint vectormass
- mass- Returns:
- contribution to Hamiltonian
-
-