1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.control.indirect.adjoint.cost;
18
19 import org.hipparchus.Field;
20 import org.hipparchus.complex.Complex;
21 import org.hipparchus.complex.ComplexField;
22 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
23 import org.hipparchus.geometry.euclidean.threed.Vector3D;
24 import org.hipparchus.util.Binary64;
25 import org.hipparchus.util.Binary64Field;
26 import org.hipparchus.util.MathArrays;
27 import org.junit.jupiter.api.Assertions;
28 import org.junit.jupiter.api.Test;
29
30 class FieldUnboundedCartesianEnergyNeglectingMassTest {
31
32 @Test
33 void testGetFieldHamiltonianContribution() {
34
35 final FieldUnboundedCartesianEnergyNeglectingMass<Complex> mockedEnergy = new FieldUnboundedCartesianEnergyNeglectingMass<>("", ComplexField.getInstance());
36 final Field<Complex> field = ComplexField.getInstance();
37 final Complex[] fieldAdjoint = MathArrays.buildArray(field, 6);
38 final Complex fieldMass = Complex.ONE;
39 final double mass = fieldMass.getReal();
40 final double[] adjoint = new double[fieldAdjoint.length];
41
42 final Complex fieldContribution = mockedEnergy.getFieldHamiltonianContribution(fieldAdjoint, fieldMass);
43
44 final double contribution = mockedEnergy.toCartesianCost().getHamiltonianContribution(adjoint, mass);
45 Assertions.assertEquals(contribution, fieldContribution.getReal());
46 }
47
48 @Test
49 void testGetFieldThrustAccelerationVector() {
50
51 final FieldUnboundedCartesianEnergyNeglectingMass<Binary64> energyNeglectingMass = new FieldUnboundedCartesianEnergyNeglectingMass<>("",
52 Binary64Field.getInstance());
53 final Binary64[] adjoint = MathArrays.buildArray(Binary64Field.getInstance(), 6);
54 adjoint[3] = Binary64.ONE;
55
56 final FieldVector3D<Binary64> fieldThrustVector = energyNeglectingMass.getFieldThrustAccelerationVector(adjoint, Binary64.ONE);
57
58 final Vector3D thrustVector = energyNeglectingMass.toCartesianCost().getThrustAccelerationVector(new double[] { 0., 0., 0., 1., 0., 0.}, 1.);
59 Assertions.assertEquals(thrustVector, fieldThrustVector.toVector3D());
60 }
61
62 }