1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.control.indirect.shooting.boundary;
18
19 import org.hipparchus.geometry.euclidean.threed.Vector3D;
20 import org.junit.jupiter.api.Assertions;
21 import org.junit.jupiter.api.Test;
22 import org.orekit.utils.PVCoordinates;
23
24 class NormBasedCartesianConditionCheckerTest {
25
26 @Test
27 void testIsConvergedTrivial() {
28
29 final int expectedMaximumCount = 10;
30 final double toleranceDistance = 0.;
31 final double toleranceSpeed = 0.;
32 final NormBasedCartesianConditionChecker convergenceChecker = new NormBasedCartesianConditionChecker(expectedMaximumCount,
33 toleranceDistance, toleranceSpeed);
34 final PVCoordinates pvCoordinates = new PVCoordinates(Vector3D.MINUS_J, Vector3D.MINUS_K);
35
36 Assertions.assertFalse(convergenceChecker.isConverged(pvCoordinates, pvCoordinates));
37 Assertions.assertEquals(expectedMaximumCount, convergenceChecker.getMaximumIterationCount());
38 }
39
40 @Test
41 void testIsConvergedPosition() {
42
43 final int expectedMaximumCount = 10;
44 final double toleranceDistance = 10.;
45 final double toleranceSpeed = Double.POSITIVE_INFINITY;
46 final NormBasedCartesianConditionChecker convergenceChecker = new NormBasedCartesianConditionChecker(expectedMaximumCount,
47 toleranceDistance, toleranceSpeed);
48 final PVCoordinates pvCoordinates = new PVCoordinates(Vector3D.MINUS_J.scalarMultiply(5.), Vector3D.ZERO);
49
50 Assertions.assertTrue(convergenceChecker.isConverged(pvCoordinates, new PVCoordinates()));
51 }
52
53 @Test
54 void testIsConvergedVelocity() {
55
56 final int expectedMaximumCount = 10;
57 final double toleranceDistance = 10.;
58 final double toleranceSpeed = 1.;
59 final NormBasedCartesianConditionChecker convergenceChecker = new NormBasedCartesianConditionChecker(expectedMaximumCount,
60 toleranceDistance, toleranceSpeed);
61 final PVCoordinates pvCoordinates = new PVCoordinates(Vector3D.ZERO, Vector3D.PLUS_I.scalarMultiply(2.));
62
63 Assertions.assertFalse(convergenceChecker.isConverged(pvCoordinates, new PVCoordinates()));
64 }
65 }