1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.models.earth.weather;
18
19 import org.hipparchus.util.FastMath;
20 import org.junit.jupiter.api.Assertions;
21 import org.junit.jupiter.api.BeforeEach;
22 import org.junit.jupiter.api.Test;
23 import org.orekit.Utils;
24 import org.orekit.bodies.GeodeticPoint;
25 import org.orekit.data.DataContext;
26 import org.orekit.errors.OrekitException;
27 import org.orekit.forces.gravity.potential.GRGSFormatReader;
28 import org.orekit.forces.gravity.potential.GravityFieldFactory;
29 import org.orekit.frames.FramesFactory;
30 import org.orekit.models.earth.Geoid;
31 import org.orekit.models.earth.ReferenceEllipsoid;
32 import org.orekit.models.earth.troposphere.TroposphericModelUtils;
33 import org.orekit.time.AbsoluteDate;
34 import org.orekit.time.TimeScalesFactory;
35 import org.orekit.utils.IERSConventions;
36
37 public class GlobalPressureTemperatureTest {
38
39 @BeforeEach
40 public void setUp() throws OrekitException {
41 Utils.setDataRoot("regular-data:potential");
42 GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
43 }
44
45 @Test
46 public void testParameterComputation() {
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 final AbsoluteDate date = new AbsoluteDate(2019, 1, 8, 0, 0, 0.0, TimeScalesFactory.getUTC());
66 final GeodeticPoint location = new GeodeticPoint(FastMath.toRadians(43.59),
67 FastMath.toRadians(1.49),
68 140.0);
69
70
71 final double expectedTemperature = 7.3311;
72 final double expectedPressure = 1010.2749;
73
74 final DataContext dataContext = DataContext.getDefault();
75 final Geoid geoid = new Geoid(dataContext.getGravityFields().getNormalizedProvider(9, 9),
76 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
77 final GlobalPressureTemperature model = new GlobalPressureTemperature(geoid,
78 dataContext.getTimeScales().getUTC());
79 PressureTemperature pt = model.getWeatherParameters(location, date);
80
81 final double computedTemperature = pt.getTemperature() - 273.15;
82 final double computedPressure = TroposphericModelUtils.HECTO_PASCAL.fromSI(pt.getPressure());
83
84 Assertions.assertEquals(expectedPressure, computedPressure, 0.1);
85 Assertions.assertEquals(expectedTemperature, computedTemperature, 0.1);
86
87
88 final double realTemperature = 7.3;
89 final double realPressure = 1027.5;
90
91
92 Assertions.assertEquals(realTemperature, computedTemperature, 10);
93 Assertions.assertEquals(realPressure, computedPressure, 20);
94 }
95
96 @Test
97 public void testHighAltitude() {
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 final AbsoluteDate date = new AbsoluteDate(2019, 1, 8, 0, 0, 0.0, TimeScalesFactory.getUTC());
117 final GeodeticPoint location = new GeodeticPoint(FastMath.toRadians(42.94),
118 FastMath.toRadians(0.14),
119 2877);
120
121
122 final double expectedTemperature = -9.88;
123 final double expectedPressure = 723.33;
124
125 final DataContext dataContext = DataContext.getDefault();
126 final Geoid geoid = new Geoid(dataContext.getGravityFields().getNormalizedProvider(9, 9),
127 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
128 final GlobalPressureTemperature model = new GlobalPressureTemperature(geoid,
129 dataContext.getTimeScales().getUTC());
130 PressureTemperature pt = model.getWeatherParameters(location, date);
131
132
133 final double computedTemperature = pt.getTemperature() - 273.15;
134 final double computedPressure = TroposphericModelUtils.HECTO_PASCAL.fromSI(pt.getPressure());
135
136 Assertions.assertEquals(expectedPressure, computedPressure, 0.1);
137 Assertions.assertEquals(expectedTemperature, computedTemperature, 0.1);
138
139
140 final double realTemperature = -8.3;
141 final double realPressure = 717.9;
142
143
144 Assertions.assertEquals(realTemperature, computedTemperature, 10);
145 Assertions.assertEquals(realPressure, computedPressure, 20);
146 }
147
148 }