Class UnboundedCartesianEnergyNeglectingMass
- java.lang.Object
-
- org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy
-
- org.orekit.control.indirect.adjoint.cost.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
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description UnboundedCartesianEnergyNeglectingMass(String name)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getAdjointDimension()
Getter for adjoint vector dimension.Stream<EventDetector>
getEventDetectors()
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
TgetFieldHamiltonianContribution(T[] adjointVariables, T mass)
Computes the Hamiltonian contribution of the cost function.<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.double
getHamiltonianContribution(double[] adjointVariables, double mass)
Computes the Hamiltonian contribution of the cost function.double
getMassFlowRateFactor()
Getter for mass flow rate factor.Vector3D
getThrustAccelerationVector(double[] adjointVariables, double mass)
Computes the thrust acceleration vector in propagation frame from the adjoint variables and the mass.void
updateAdjointDerivatives(double[] adjointVariables, double mass, double[] adjointDerivatives)
Update the adjoint derivatives if necessary.<T extends CalculusFieldElement<T>>
voidupdateFieldAdjointDerivatives(T[] adjointVariables, T mass, T[] adjointDerivatives)
Update the adjoint derivatives if necessary.-
Methods inherited from class org.orekit.control.indirect.adjoint.cost.AbstractCartesianEnergy
getAdjointName, getAdjointVelocityNorm, getFieldAdjointVelocityNorm
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getEventDetectors, getFieldEventDetectors
-
-
-
-
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 interfaceCartesianCost
- Overrides:
getMassFlowRateFactor
in classAbstractCartesianEnergy
- 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 vectormass
- 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 vectormass
- 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 vectormass
- massadjointDerivatives
- 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 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
-
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 vectormass
- 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
-
-