Class FieldBoundedCartesianEnergy<T extends CalculusFieldElement<T>>
- java.lang.Object
-
- 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 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 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 String
getAdjointName()
Getter for adjoint vector name.FieldEventDetectionSettings<T>
getEventDetectionSettings()
Getter for event detection settings.protected T
getFieldAdjointVelocityNorm(T[] adjointVariables)
Computes the Euclidean norm of the adjoint velocity vector.Stream<FieldEventDetector<T>>
getFieldEventDetectors(Field<T> field)
Get the detectors needed for propagation.T
getFieldHamiltonianContribution(T[] adjointVariables, T mass)
Computes the Hamiltonian contribution of 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
getMassFlowRateFactor()
Getter for mass flow rate factor.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 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
getAdjointDimension
-
-
-
-
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
-
getAdjointName
public String getAdjointName()
Getter for adjoint vector name.- Specified by:
getAdjointName
in interfaceFieldCartesianCost<T extends CalculusFieldElement<T>>
- Returns:
- name
-
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 interfaceFieldCartesianCost<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 interfaceFieldCartesianCost<T extends CalculusFieldElement<T>>
- 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.- Specified by:
updateFieldAdjointDerivatives
in interfaceFieldCartesianCost<T extends CalculusFieldElement<T>>
- Parameters:
adjointVariables
- adjoint vectormass
- massadjointDerivatives
- 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 interfaceFieldCartesianCost<T extends CalculusFieldElement<T>>
- Parameters:
adjointVariables
- adjoint vectormass
- mass- Returns:
- contribution to Hamiltonian
-
-