Class FieldBoundedCartesianEnergy<T extends CalculusFieldElement<T>>
- java.lang.Object
-
- org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost<T>
-
- org.orekit.control.indirect.adjoint.cost.FieldBoundedCartesianEnergy<T>
-
- Type Parameters:
T
- field type
- All Implemented Interfaces:
FieldCartesianCost<T>
public class FieldBoundedCartesianEnergy<T extends CalculusFieldElement<T>> extends FieldAbstractCartesianCost<T>
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.- Since:
- 13.0
- Author:
- Romain Serra
- See Also:
FieldUnboundedCartesianEnergy
,BoundedCartesianEnergy
-
-
Constructor Summary
Constructors Constructor Description FieldBoundedCartesianEnergy(String name, T massFlowRateFactor, T maximumThrustMagnitude)
Constructor.FieldBoundedCartesianEnergy(String name, T massFlowRateFactor, T maximumThrustMagnitude, FieldEventDetectionSettings<T> eventDetectionSettings)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FieldEventDetectionSettings<T>
getEventDetectionSettings()
Getter for event detection settings.Stream<FieldEventDetector<T>>
getFieldEventDetectors(Field<T> field)
Get the detectors needed for propagation.T
getFieldHamiltonianContribution(T[] adjointVariables, T mass)
Computes the Hamiltonian contribution to the cost function.FieldVector3D<T>
getFieldThrustAccelerationVector(T[] adjointVariables, T mass)
Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.protected FieldVector3D<T>
getFieldThrustDirection(T[] adjointVariables)
Computes the direction of thrust.protected T
getFieldThrustForceNorm(T[] adjointVariables, T mass)
Computes the Euclidean norm of the thrust force.T
getMaximumThrustMagnitude()
Getter for maximum thrust magnitude.BoundedCartesianEnergy
toCartesianCost()
Method returning equivalent in non-Field.void
updateFieldAdjointDerivatives(T[] adjointVariables, T mass, T[] adjointDerivatives)
Update the adjoint derivatives if necessary.-
Methods inherited from class org.orekit.control.indirect.adjoint.cost.FieldAbstractCartesianCost
getAdjointDimension, getAdjointName, 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.FieldCartesianCost
getCostDerivativeProvider
-
-
-
-
Constructor Detail
-
FieldBoundedCartesianEnergy
public FieldBoundedCartesianEnergy(String name, T massFlowRateFactor, T maximumThrustMagnitude, FieldEventDetectionSettings<T> eventDetectionSettings)
Constructor.- Parameters:
name
- namemassFlowRateFactor
- mass flow rate factormaximumThrustMagnitude
- maximum thrust magnitudeeventDetectionSettings
- singularity event detection settings
-
-
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 vectormass
- 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
-
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.- Parameters:
adjointVariables
- adjoint vectormass
- 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.- Parameters:
adjointVariables
- adjoint vectormass
- massadjointDerivatives
- derivatives to update
-
getFieldHamiltonianContribution
public T getFieldHamiltonianContribution(T[] adjointVariables, T mass)
Computes the Hamiltonian contribution to the cost function. It equals the Lagrange-form integrand multiplied by -1.- Parameters:
adjointVariables
- adjoint vectormass
- mass- Returns:
- contribution to Hamiltonian
-
-