1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.forces.maneuvers.trigger;
18
19 import java.util.Collections;
20 import java.util.List;
21
22 import org.hipparchus.CalculusFieldElement;
23 import org.hipparchus.Field;
24 import org.hipparchus.util.Binary64Field;
25 import org.junit.jupiter.api.Assertions;
26 import org.junit.jupiter.api.Test;
27 import org.orekit.propagation.events.DateDetector;
28 import org.orekit.propagation.events.FieldAbstractDetector;
29 import org.orekit.propagation.events.FieldDateDetector;
30 import org.orekit.propagation.events.FieldEventDetector;
31 import org.orekit.propagation.events.handlers.StopOnEvent;
32 import org.orekit.time.AbsoluteDate;
33 import org.orekit.time.FieldAbsoluteDate;
34 import org.orekit.time.TimeStamped;
35 import org.orekit.utils.ParameterDriver;
36
37 public class StartStopEventTriggerTest extends AbstractManeuverTriggersTest<StartStopEventsTrigger<DateDetector, DateDetector>> {
38
39 public static class StartStopDates extends StartStopEventsTrigger<DateDetector, DateDetector> {
40
41 public StartStopDates(final AbsoluteDate start, final AbsoluteDate stop) {
42 super(new DateDetector(start, stop.shiftedBy(10.0)).
43 withMaxCheck(5.0).
44 withThreshold(1.0e-10).
45 withHandler(new StopOnEvent()),
46 new DateDetector(stop, stop.shiftedBy(20.0)).
47 withMaxCheck(5.0).
48 withThreshold(1.0e-10).
49 withHandler(new StopOnEvent()));
50 }
51
52 @Override
53 protected <D extends FieldEventDetector<S>, S extends CalculusFieldElement<S>>
54 D convertStartDetector(Field<S> field, DateDetector detector) {
55 final FieldAbsoluteDate<S> target = new FieldAbsoluteDate<>(field, detector.getDates().get(0).getDate());
56 @SuppressWarnings("unchecked")
57 final D converted = (D) new FieldDateDetector<>(field, target);
58 return converted;
59 }
60
61 @Override
62 protected <D extends FieldEventDetector<S>, S extends CalculusFieldElement<S>>
63 D convertStopDetector(Field<S> field, DateDetector detector) {
64 final FieldAbsoluteDate<S> target = new FieldAbsoluteDate<>(field, detector.getDates().get(0).getDate());
65 @SuppressWarnings("unchecked")
66 final D converted = (D) new FieldDateDetector<>(field, target);
67 return converted;
68 }
69
70 @Override
71 public List<ParameterDriver> getParametersDrivers() {
72 return Collections.emptyList();
73 }
74
75 }
76
77 protected StartStopEventsTrigger<DateDetector, DateDetector> createTrigger(final AbsoluteDate start, final AbsoluteDate stop) {
78 return new StartStopDates(start, stop);
79 }
80
81 @Test
82 void testComponents() {
83 StartStopEventsTrigger<DateDetector, DateDetector> trigger = createTrigger(AbsoluteDate.J2000_EPOCH,
84 AbsoluteDate.J2000_EPOCH.shiftedBy(100.0));
85 final List<TimeStamped> startDates = trigger.getStartDetector().getDates();
86 final List<TimeStamped> stopDates = trigger.getStopDetector().getDates();
87 Assertions.assertEquals(2, trigger.getEventDetectors().count());
88 Assertions.assertEquals(2, trigger.getFieldEventDetectors(Binary64Field.getInstance()).count());
89 Assertions.assertEquals(2, startDates.size());
90 Assertions.assertEquals( 0.0, startDates.get(0).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
91 Assertions.assertEquals(110.0, startDates.get(1).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
92 Assertions.assertEquals(2, stopDates.size());
93 Assertions.assertEquals(100.0, stopDates.get(0).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
94 Assertions.assertEquals(120.0, stopDates.get(1).getDate().durationFrom(AbsoluteDate.J2000_EPOCH), 1.0e-10);
95 }
96
97 }