1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.estimation;
18
19 import org.orekit.models.earth.atmosphere.HarrisPriester;
20 import org.orekit.propagation.semianalytical.dsst.forces.DSSTAtmosphericDrag;
21 import org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel;
22 import org.orekit.propagation.semianalytical.dsst.forces.DSSTSolarRadiationPressure;
23 import org.orekit.propagation.semianalytical.dsst.forces.DSSTTesseral;
24 import org.orekit.propagation.semianalytical.dsst.forces.DSSTThirdBody;
25 import org.orekit.propagation.semianalytical.dsst.forces.DSSTZonal;
26 import org.orekit.utils.Constants;
27
28 public enum DSSTForce {
29
30 ZONAL() {
31 public DSSTForceModel getForceModel(DSSTContext context) {
32 return new DSSTZonal(context.gravity, 4, 3, 9);
33 }
34 },
35
36 TESSERAL() {
37 public DSSTForceModel getForceModel(DSSTContext context) {
38 return new DSSTTesseral(context.earth.getBodyFrame(), Constants.WGS84_EARTH_ANGULAR_VELOCITY, context.gravity, 4, 4, 4, 8, 4, 4, 2);
39 }
40 },
41
42 THIRD_BODY_SUN() {
43 public DSSTForceModel getForceModel(DSSTContext context) {
44 return new DSSTThirdBody(context.sun, context.gravity.getMu());
45 }
46 },
47
48 THIRD_BODY_MOON() {
49 public DSSTForceModel getForceModel(DSSTContext context) {
50 return new DSSTThirdBody(context.moon, context.gravity.getMu());
51 }
52 },
53
54 DRAG() {
55 public DSSTForceModel getForceModel(DSSTContext context) {
56 return new DSSTAtmosphericDrag(new HarrisPriester(context.sun, context.earth), context.dragSensitive, context.gravity.getMu());
57 }
58 },
59
60 SOLAR_RADIATION_PRESSURE() {
61 public DSSTForceModel getForceModel(DSSTContext context) {
62 return new DSSTSolarRadiationPressure(context.sun, context.earth,
63 context.radiationSensitive, context.gravity.getMu());
64 }
65 };
66
67 public abstract DSSTForceModel getForceModel(DSSTContext context);
68 }