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.util.Binary64;
20 import org.hipparchus.util.Binary64Field;
21 import org.hipparchus.util.MathArrays;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.Test;
24 import org.orekit.propagation.events.EventDetectionSettings;
25 import org.orekit.propagation.events.FieldEventDetectionSettings;
26
27 class FieldCartesianEnergyConsideringMassTest {
28
29 @Test
30 void testGetFieldHamiltonianContribution() {
31
32 final FieldTestCost cost = new FieldTestCost(Binary64.ONE);
33 final Binary64[] adjoint = MathArrays.buildArray(Binary64Field.getInstance(), 6);
34 adjoint[3] = Binary64.ONE;
35
36 final Binary64 contribution = cost.getFieldHamiltonianContribution(adjoint, Binary64.ONE);
37
38 Assertions.assertEquals(-1./2, contribution.getReal());
39 }
40
41 private static class FieldTestCost extends FieldCartesianEnergyConsideringMass<Binary64> {
42
43 protected FieldTestCost(Binary64 massFlowRateFactor) {
44 super("adjoint", massFlowRateFactor, new FieldEventDetectionSettings<>(massFlowRateFactor.getField(),
45 EventDetectionSettings.getDefaultEventDetectionSettings()));
46 }
47
48 @Override
49 protected Binary64 getFieldThrustForceNorm(Binary64[] adjointVariables, Binary64 mass) {
50 return Binary64.ONE;
51 }
52
53 @Override
54 public CartesianCost toCartesianCost() {
55 return null;
56 }
57 }
58 }