Skip to content
Snippets Groups Projects
Commit 39940d9e authored by Bryan Cazabonne's avatar Bryan Cazabonne
Browse files

Changed API for angle unit.

parent 44425e5f
No related branches found
No related tags found
No related merge requests found
......@@ -89,10 +89,10 @@ public class GlobalPressureTemperature2Model implements DataLoader, WeatherModel
/** The hydrostatic and wet a coefficients loaded. */
private double[] coefficientsA;
/** Geodetic site latitude, degrees.*/
/** Geodetic site latitude, radians.*/
private double latitude;
/** Geodetic site longitude, degrees.*/
/** Geodetic site longitude, radians.*/
private double longitude;
/** Temperature site, in kelvins. */
......@@ -115,8 +115,8 @@ public class GlobalPressureTemperature2Model implements DataLoader, WeatherModel
/** Constructor with supported names given by user.
* @param supportedNames supported names
* @param latitude geodetic latitude of the station, in degrees
* @param longitude longitude geodetic latitude of the station, in degrees
* @param latitude geodetic latitude of the station, in radians
* @param longitude longitude geodetic latitude of the station, in radians
* @param geoid level surface of the gravity potential of a body
*/
public GlobalPressureTemperature2Model(final String supportedNames, final double latitude,
......@@ -129,14 +129,13 @@ public class GlobalPressureTemperature2Model implements DataLoader, WeatherModel
this.geoid = geoid;
this.latitude = latitude;
// Normalize longitude between 0° and 360°
final double lon = MathUtils.normalizeAngle(FastMath.toRadians(longitude), FastMath.PI);
this.longitude = FastMath.toDegrees(lon);
// Normalize longitude between 0 and 2π
this.longitude = MathUtils.normalizeAngle(longitude, FastMath.PI);
}
/** Constructor with default supported names.
* @param latitude geodetic latitude of the station, in degrees
* @param longitude geodetic latitude of the station, in degrees
* @param latitude geodetic latitude of the station, in radians
* @param longitude geodetic latitude of the station, in radians
* @param geoid level surface of the gravity potential of a body
*/
public GlobalPressureTemperature2Model(final double latitude, final double longitude, final Geoid geoid) {
......@@ -307,30 +306,34 @@ public class GlobalPressureTemperature2Model implements DataLoader, WeatherModel
final BilinearInterpolatingFunction functionAH = new BilinearInterpolatingFunction(xVal, yVal, fvalAH);
final BilinearInterpolatingFunction functionAW = new BilinearInterpolatingFunction(xVal, yVal, fvalAW);
// Convert geodetic coordinates to degrees
final double lat = FastMath.toDegrees(latitude);
final double lon = FastMath.toDegrees(longitude);
// ah and aw coefficients
coefficientsA = new double[2];
coefficientsA[0] = functionAH.value(latitude, longitude) * 0.001;
coefficientsA[1] = functionAW.value(latitude, longitude) * 0.001;
coefficientsA[0] = functionAH.value(lat, lon) * 0.001;
coefficientsA[1] = functionAW.value(lat, lon) * 0.001;
// Corrected height (can be negative)
final double undu = geoid.getUndulation(latitude, longitude, date);
final double correctedheight = height - undu - functionHS.value(latitude, longitude);
final double undu = geoid.getUndulation(lat, lon, date);
final double correctedheight = height - undu - functionHS.value(lat, lon);
// Temperature gradient [K/m]
final double dTdH = functiondT.value(latitude, longitude) * 0.001;
final double dTdH = functiondT.value(lat, lon) * 0.001;
// Specific humidity
final double qv = functionqv0.value(latitude, longitude) * 0.001;
final double qv = functionqv0.value(lat, lon) * 0.001;
// For the computation of the temperature and the pressure, we use
// the standard ICAO atmosphere formulas.
// Temperature [K]
final double t0 = functionTemperature0.value(latitude, longitude);
final double t0 = functionTemperature0.value(lat, lon);
this.temperature = t0 + dTdH * correctedheight;
// Pressure [hPa]
final double p0 = functionPressure0.value(latitude, longitude);
final double p0 = functionPressure0.value(lat, lon);
final double exponent = G / (dTdH * R);
this.pressure = p0 * FastMath.pow(1 - (dTdH / t0) * correctedheight, exponent) * 0.01;
......
......@@ -16,6 +16,7 @@
*/
package org.orekit.models.earth;
import org.hipparchus.util.FastMath;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
......@@ -58,8 +59,8 @@ public class GlobalPressureTemperature2ModelTest {
// We test the fiability of our implementation by comparing our output values with
// the ones obtained by the Vienna University.
final double latitude = 48.20;
final double longitude = 16.37;
final double latitude = FastMath.toRadians(48.20);
final double longitude = FastMath.toRadians(16.37);
final double height = 156.0;
final AbsoluteDate date = AbsoluteDate.createMJDDate(56141, 0.0, TimeScalesFactory.getUTC());
final Geoid geoid = new Geoid(GravityFieldFactory.getNormalizedProvider(12, 12),
......@@ -90,7 +91,7 @@ public class GlobalPressureTemperature2ModelTest {
ReferenceEllipsoid.getWgs84(FramesFactory.getITRF(IERSConventions.IERS_2010, true)));
final AbsoluteDate date = AbsoluteDate.createMJDDate(56141, 0.0, TimeScalesFactory.getUTC());
final double latitude = 45.0;
final double latitude = FastMath.toRadians(45.0);
final double height = 0.0;
double longitude1;
......@@ -100,8 +101,8 @@ public class GlobalPressureTemperature2ModelTest {
GlobalPressureTemperature2Model model2;
// Test longitude = 181° and longitude = -179°
longitude1 = 181.0;
longitude2 = -179.0;
longitude1 = FastMath.toRadians(181.0);
longitude2 = FastMath.toRadians(-179.0);
model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
......@@ -117,8 +118,8 @@ public class GlobalPressureTemperature2ModelTest {
Assert.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
// Test longitude = 180° and longitude = -180°
longitude1 = 180.0;
longitude2 = -180.0;
longitude1 = FastMath.toRadians(180.0);
longitude2 = FastMath.toRadians(-180.0);
model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
......@@ -133,8 +134,8 @@ public class GlobalPressureTemperature2ModelTest {
Assert.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
// Test longitude = 0° and longitude = 360°
longitude1 = 0.0;
longitude2 = 360.0;
longitude1 = FastMath.toRadians(0.0);
longitude2 = FastMath.toRadians(360.0);
model1 = new GlobalPressureTemperature2Model(latitude, longitude1, geoid);
model2 = new GlobalPressureTemperature2Model(latitude, longitude2, geoid);
......@@ -153,8 +154,8 @@ public class GlobalPressureTemperature2ModelTest {
@Test
public void testCorruptedFileBadData() {
final double latitude = 14.0;
final double longitude = 67.5;
final double latitude = FastMath.toRadians(14.0);
final double longitude = FastMath.toRadians(67.5);
final double height = 0.0;
// Date is not used here
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment