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.Test;
22 import org.orekit.Utils;
23 import org.orekit.errors.OrekitException;
24 import org.orekit.errors.OrekitMessages;
25 import org.orekit.forces.gravity.potential.GRGSFormatReader;
26 import org.orekit.forces.gravity.potential.GravityFieldFactory;
27 import org.orekit.frames.FramesFactory;
28 import org.orekit.models.earth.Geoid;
29 import org.orekit.models.earth.ReferenceEllipsoid;
30 import org.orekit.time.AbsoluteDate;
31 import org.orekit.time.TimeScalesFactory;
32 import org.orekit.utils.IERSConventions;
33
34 @Deprecated
35 public class GlobalPressureTemperature2ModelTest {
36
37 private static double epsilon = 1.0e-12;
38
39 @Test
40 public void testProvidedParameters() {
41
42 Utils.setDataRoot("regular-data:potential:gpt-grid");
43 GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 final double latitude = FastMath.toRadians(48.20);
62 final double longitude = FastMath.toRadians(16.37);
63 final double height = 156.0;
64 final AbsoluteDate date = AbsoluteDate.createMJDDate(56141, 0.0, TimeScalesFactory.getUTC());
65 final Geoid geoid = new Geoid(GravityFieldFactory.getNormalizedProvider(12, 12),
66 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
67 final GlobalPressureTemperature2Model model =
68 new GlobalPressureTemperature2Model("gpt2_5_extract.grd", latitude, longitude, geoid);
69
70 model.weatherParameters(height, date);
71
72 final double a[] = model.getA();
73 final double temperature = model.getTemperature() - 273.15;
74 final double pressure = model.getPressure();
75 final double e = model.getWaterVaporPressure();
76
77 Assertions.assertEquals(22.12, temperature, 2.3e-1);
78 Assertions.assertEquals(1002.56, pressure, 7.4e-1);
79 Assertions.assertEquals(0.0012647, a[0], 1.1e-7);
80 Assertions.assertEquals(0.0005726, a[1], 8.6e-8);
81 Assertions.assertEquals(15.63, e, 5.0e-2);
82
83 }
84
85 @Test
86 public void testEquality() {
87
88 Utils.setDataRoot("regular-data:potential:gpt-grid");
89 GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
90
91
92 final Geoid geoid = new Geoid(GravityFieldFactory.getNormalizedProvider(12, 12),
93 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
94
95 final AbsoluteDate date = AbsoluteDate.createMJDDate(56141, 0.0, TimeScalesFactory.getUTC());
96 final double latitude = FastMath.toRadians(45.0);
97 final double height = 0.0;
98
99 double longitude1;
100 GlobalPressureTemperature2Model model1;
101
102 double longitude2;
103 GlobalPressureTemperature2Model model2;
104
105
106 longitude1 = FastMath.toRadians(181.0);
107 longitude2 = FastMath.toRadians(-179.0);
108
109 model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
110 model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
111
112 model1.weatherParameters(height, date);
113 model2.weatherParameters(height, date);
114
115 Assertions.assertEquals(model1.getTemperature(), model2.getTemperature(), epsilon);
116 Assertions.assertEquals(model1.getPressure(), model2.getPressure(), epsilon);
117 Assertions.assertEquals(model1.getWaterVaporPressure(), model2.getWaterVaporPressure(), epsilon);
118 Assertions.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
119 Assertions.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
120
121
122 longitude1 = FastMath.toRadians(180.0);
123 longitude2 = FastMath.toRadians(-180.0);
124
125 model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
126 model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
127
128 model1.weatherParameters(height, date);
129 model2.weatherParameters(height, date);
130
131 Assertions.assertEquals(model1.getTemperature(), model2.getTemperature(), epsilon);
132 Assertions.assertEquals(model1.getPressure(), model2.getPressure(), epsilon);
133 Assertions.assertEquals(model1.getWaterVaporPressure(), model2.getWaterVaporPressure(), epsilon);
134 Assertions.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
135 Assertions.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
136
137
138 longitude1 = FastMath.toRadians(0.0);
139 longitude2 = FastMath.toRadians(360.0);
140
141 model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
142 model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
143
144 model1.weatherParameters(height, date);
145 model2.weatherParameters(height, date);
146
147 Assertions.assertEquals(model1.getTemperature(), model2.getTemperature(), epsilon);
148 Assertions.assertEquals(model1.getPressure(), model2.getPressure(), epsilon);
149 Assertions.assertEquals(model1.getWaterVaporPressure(), model2.getWaterVaporPressure(), epsilon);
150 Assertions.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
151 Assertions.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
152
153 }
154
155 @Test
156 public void testCorruptedFileBadData() {
157
158 Utils.setDataRoot("regular-data:potential:gpt-grid");
159 GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
160
161 final double latitude = FastMath.toRadians(14.0);
162 final double longitude = FastMath.toRadians(67.5);
163
164
165 final Geoid geoid = new Geoid(GravityFieldFactory.getNormalizedProvider(12, 12),
166 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
167
168 final String fileName = "corrupted-bad-data-gpt3_15.grd";
169 try {
170 new GlobalPressureTemperature2Model(fileName, latitude, longitude, geoid);
171 Assertions.fail("An exception should have been thrown");
172 } catch (OrekitException oe) {
173 Assertions.assertEquals(OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE, oe.getSpecifier());
174 Assertions.assertEquals(6, ((Integer) oe.getParts()[0]).intValue());
175 Assertions.assertTrue(((String) oe.getParts()[1]).endsWith(fileName));
176 }
177
178 }
179
180 @Test
181 public void testCorruptedIrregularGrid() {
182
183 Utils.setDataRoot("regular-data:potential:gpt-grid");
184 GravityFieldFactory.addPotentialCoefficientsReader(new GRGSFormatReader("grim4s4_gr", true));
185
186 final double latitude = FastMath.toRadians(14.0);
187 final double longitude = FastMath.toRadians(68.5);
188
189
190 final Geoid geoid = new Geoid(GravityFieldFactory.getNormalizedProvider(12, 12),
191 ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
192
193 final String fileName = "corrupted-irregular-grid-gpt3_15.grd";
194 try {
195 new GlobalPressureTemperature2Model(fileName, latitude, longitude, geoid);
196 Assertions.fail("An exception should have been thrown");
197 } catch (OrekitException oe) {
198 Assertions.assertEquals(OrekitMessages.IRREGULAR_OR_INCOMPLETE_GRID, oe.getSpecifier());
199 Assertions.assertTrue(((String) oe.getParts()[0]).endsWith(fileName));
200 }
201
202 }
203
204 }