1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.control.indirect.shooting.propagation;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.hipparchus.Field;
21 import org.orekit.propagation.ToleranceProvider;
22 import org.orekit.propagation.conversion.ClassicalRungeKuttaFieldIntegratorBuilder;
23 import org.orekit.propagation.conversion.DormandPrince54FieldIntegratorBuilder;
24 import org.orekit.propagation.conversion.DormandPrince853FieldIntegratorBuilder;
25 import org.orekit.propagation.conversion.FieldExplicitRungeKuttaIntegratorBuilder;
26 import org.orekit.propagation.conversion.LutherFieldIntegratorBuilder;
27 import org.orekit.propagation.conversion.MidpointFieldIntegratorBuilder;
28
29
30
31
32
33
34
35
36 public class ShootingIntegrationSettingsFactory {
37
38
39
40
41 private ShootingIntegrationSettingsFactory() {
42
43 }
44
45
46
47
48
49
50 public static ShootingIntegrationSettings getMidpointIntegratorSettings(final double step) {
51 return new ShootingIntegrationSettings() {
52 @Override
53 public <T extends CalculusFieldElement<T>> FieldExplicitRungeKuttaIntegratorBuilder<T> getFieldIntegratorBuilder(final Field<T> field) {
54 return new MidpointFieldIntegratorBuilder<>(field.getZero().newInstance(step));
55 }
56 };
57 }
58
59
60
61
62
63
64 public static ShootingIntegrationSettings getClassicalRungeKuttaIntegratorSettings(final double step) {
65 return new ShootingIntegrationSettings() {
66 @Override
67 public <T extends CalculusFieldElement<T>> FieldExplicitRungeKuttaIntegratorBuilder<T> getFieldIntegratorBuilder(final Field<T> field) {
68 return new ClassicalRungeKuttaFieldIntegratorBuilder<>(field.getZero().newInstance(step));
69 }
70 };
71 }
72
73
74
75
76
77
78 public static ShootingIntegrationSettings getLutherIntegratorSettings(final double step) {
79 return new ShootingIntegrationSettings() {
80 @Override
81 public <T extends CalculusFieldElement<T>> FieldExplicitRungeKuttaIntegratorBuilder<T> getFieldIntegratorBuilder(final Field<T> field) {
82 return new LutherFieldIntegratorBuilder<>(field.getZero().newInstance(step));
83 }
84 };
85 }
86
87
88
89
90
91
92
93
94 public static ShootingIntegrationSettings getDormandPrince54IntegratorSettings(final double minStep,
95 final double maxStep,
96 final ToleranceProvider toleranceProvider) {
97 return new ShootingIntegrationSettings() {
98 @Override
99 public <T extends CalculusFieldElement<T>> FieldExplicitRungeKuttaIntegratorBuilder<T> getFieldIntegratorBuilder(final Field<T> field) {
100 return new DormandPrince54FieldIntegratorBuilder<>(minStep, maxStep, toleranceProvider);
101 }
102 };
103 }
104
105
106
107
108
109
110
111
112 public static ShootingIntegrationSettings getDormandPrince853IntegratorSettings(final double minStep,
113 final double maxStep,
114 final ToleranceProvider toleranceProvider) {
115 return new ShootingIntegrationSettings() {
116 @Override
117 public <T extends CalculusFieldElement<T>> FieldExplicitRungeKuttaIntegratorBuilder<T> getFieldIntegratorBuilder(final Field<T> field) {
118 return new DormandPrince853FieldIntegratorBuilder<>(minStep, maxStep, toleranceProvider);
119 }
120 };
121 }
122 }