public class AstronomicalRefractionModel extends Object implements FiniteDistanceAngularCorrection
This class uses interpolation tables. Be aware that it accepts extrapolation of these table to some extent. When the extrapolation is likely to go too far compared to the table resolution, a verification is done. This is the case for the maximum zenithal distance and the wavelength of the signal. For the other values, no check is performed.
Source: [1] "Introduction aux ephemerides astronomiques" Bureau des longitudes, edition 1997"
All private methods will use the units of the source (which are often not SI) to keep as close as possible to the book formulas. All public methods will use international units.
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_MAX_ITER
Default max iteration number for the iterative algorithm used to compute the elevation correction from geometric
elevation.
|
static double |
DEFAULT_THRESHOLD
Default threshold value for the iterative algorithm used to compute the elevation correction from geometric
elevation [rad].
|
| Constructor and Description |
|---|
AstronomicalRefractionModel(BodyPoint point,
MeteorologicalConditionsProvider meteoConditionsProvider,
double wavelengthNanometer)
Simple constructor.
|
AstronomicalRefractionModel(BodyPoint point,
MeteorologicalConditionsProvider meteoConditionsProvider,
double wavelengthNanometer,
double threshold,
int maxIter)
Main constructor.
|
| Modifier and Type | Method and Description |
|---|---|
double |
computeElevationCorrectionFromApparentElevation(AbsoluteDate date,
double apparentElevation,
double distance)
Compute the tropospheric correction from the apparent elevation and distance.
|
static double |
computeElevationCorrectionFromApparentElevation(double apparentElevation,
double pressure,
double temperature,
double relativeHumidity,
double wavelengthNanometer,
double latitude,
double altitude,
double distance)
Compute the tropospheric correction from the apparent elevation and the provided conditions.
|
double |
computeElevationCorrectionFromGeometricElevation(AbsoluteDate date,
double geometricElevation,
double distance)
Compute the tropospheric correction from the geometric elevation and distance.
|
static double |
computeElevationCorrectionFromGeometricElevation(double geometricElevation,
double pressure,
double temperature,
double relativeHumidity,
double wavelengthNanometer,
double latitude,
double altitude,
double distance,
double threshold,
int maxIter)
Compute the tropospheric correction from the geometric elevation and the provided conditions.
|
static double |
computeGroundRefractivity(double apparentElevation,
double pressure,
double temperature)
Compute the ground refractivity by taking into account elevation, pressure and temperature.
|
static double |
computeOOPrime(double groundRefractivity,
double elevationCorrection,
double apparentElevation)
Compute the OO' distance.
|
static double |
computeParallaxCorrection(double geometricElevation,
double oOPrime,
double distance)
Compute the parallax correction due to a finite distance object.
|
double |
derivativeValueFromApparentElevation(Parameter p,
double elevation)
Compute the elevation correction derivative value with respect to the input parameter.
|
double |
derivativeValueFromGeometricElevation(Parameter p,
double geometricElevation)
Compute the elevation correction derivative value with respect to the input parameter.
|
static double |
elevationToZenithalDistance(double elevation)
Convert elevation to zenithal distance [rad].
|
int |
getMaxIter()
Getter for the maximum iteration number used in the convergence algorithm to compute the correction from the
geometric elevation.
|
MeteorologicalConditionsProvider |
getMeteoConditionsProvider()
Getter for the meteo conditions provider.
|
double |
getMinimalToleratedApparentElevation()
Getter for the minimal tolerated apparent elevation for this model (some models cannot compute correction for too
low elevations).
|
ArrayList<Parameter> |
getParameters()
Get the supported parameters.
|
BodyPoint |
getPoint()
Getter for the position where the model should be applied.
|
double |
getThreshold()
Getter for the threshold used in the convergence algorithm to compute the correction from the geometric
elevation.
|
double |
getWavelengthNanometer()
Getter for the wavelength [nanometer].
|
boolean |
isDifferentiableBy(Parameter p)
Tell if the function is differentiable by the given parameter.
|
boolean |
supportsParameter(Parameter param)
Check if a parameter is supported.
|
static double |
zenithalDistanceToElevation(double zenithalDistance)
Convert zenithal distance to elevation [rad].
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcomputeElevationCorrectionFromApparentElevation, computeElevationCorrectionFromGeometricElevationpublic static final double DEFAULT_THRESHOLD
public static final int DEFAULT_MAX_ITER
public AstronomicalRefractionModel(BodyPoint point, MeteorologicalConditionsProvider meteoConditionsProvider, double wavelengthNanometer)
point - The geodetic point of the ground stationmeteoConditionsProvider - The meteorological condition provider at the ground stationwavelengthNanometer - The wavelength of the signal [nanometer]IllegalArgumentException - if the provided wavelength is outside the tolerated wavelength bound for tables linear extrapolationspublic AstronomicalRefractionModel(BodyPoint point, MeteorologicalConditionsProvider meteoConditionsProvider, double wavelengthNanometer, double threshold, int maxIter)
point - The geodetic point of the ground stationmeteoConditionsProvider - The meteorological condition provider at the ground stationwavelengthNanometer - The wavelength of the signal [nanometer]threshold - Threshold for the iterative algorithm used to compute the elevation correction from geometric elevation
[rad]maxIter - Max iteration number for the iterative algorithm used to compute the elevation correction from geometric
elevationIllegalArgumentException - if the provided wavelength is outside the tolerated wavelength bound for tables linear extrapolationspublic boolean isDifferentiableBy(Parameter p)
isDifferentiableBy in interface AngularCorrectionp - Parametertrue if the function is differentiable by the given parameterpublic boolean supportsParameter(Parameter param)
supportsParameter in interface IParameterizableparam - parameter to checkpublic ArrayList<Parameter> getParameters()
getParameters in interface IParameterizablepublic double derivativeValueFromGeometricElevation(Parameter p, double geometricElevation)
derivativeValueFromGeometricElevation in interface AngularCorrectionp - ParametergeometricElevation - The geometric elevation (without atmosphere) of the satellite [rad]public double derivativeValueFromApparentElevation(Parameter p, double elevation)
derivativeValueFromApparentElevation in interface AngularCorrectionp - Parameterelevation - The apparent elevation (with atmosphere) of the satellite [rad]public double computeElevationCorrectionFromApparentElevation(AbsoluteDate date, double apparentElevation, double distance)
This method takes into account the finite distance of the observed object to add a parallax correction.
computeElevationCorrectionFromApparentElevation in interface FiniteDistanceAngularCorrectiondate - The date at which we want to compute the tropospheric correctionapparentElevation - The apparent elevation (with atmosphere) [rad]distance - The distance to the object [m]. Can be Double.POSITIVE_INFINITY (equivalent to not take into
account the parallax correction)apparent_elevation = geometric_elevation + elevation_correctionpublic double computeElevationCorrectionFromGeometricElevation(AbsoluteDate date, double geometricElevation, double distance)
Note that this method uses an iterative algorithm to convert the geometric elevation into an apparent elevation.
Note that if the convergence is not reached within the getMaxIter(), no exception is thrown.
This method takes into account the finite distance of the observed object to add a parallax correction.
computeElevationCorrectionFromGeometricElevation in interface FiniteDistanceAngularCorrectiondate - The date at which we want to compute the tropospheric correctiongeometricElevation - The geometric elevation (without atmosphere) [rad]distance - The distance to the object [m]. Can be Double.POSITIVE_INFINITY (equivalent to not take into
account the parallax correction).apparent_elevation = geometric_elevation + elevation_correctionpublic double getMinimalToleratedApparentElevation()
getMinimalToleratedApparentElevation in interface AngularCorrectionpublic MeteorologicalConditionsProvider getMeteoConditionsProvider()
public double getWavelengthNanometer()
public BodyPoint getPoint()
public double getThreshold()
public int getMaxIter()
Note that if the convergence is not reached within this max iteration number, no exception is thrown.
public static double computeGroundRefractivity(double apparentElevation,
double pressure,
double temperature)
See [1] p. 194 Equation (7.3.9)
apparentElevation - The apparent elevation (with atmosphere) [rad]pressure - The pressure [Pa]temperature - The temperature [K°]public static double computeOOPrime(double groundRefractivity,
double elevationCorrection,
double apparentElevation)
This distance aims at computing a parallax effect for the elevation correction at finite distance.
See [1] p.203 Equation (7.3.19)
groundRefractivity - The ground refractivity [dimensionless]elevationCorrection - The apparent elevation correction for an object at an infinite distance [rad]apparentElevation - Apparent elevation (with atmosphere) (for an object at infinite distance) [rad]public static double computeParallaxCorrection(double geometricElevation,
double oOPrime,
double distance)
geometricElevation - The geometric elevation (without atmosphere) (for an object at infinite distance) [rad]oOPrime - The fictive distance to compute the parallax [m]distance - The distance to the object [m]elevationFiniteDistance = elevationInfiniteDistance + parallaxpublic static double elevationToZenithalDistance(double elevation)
elevation - The elevation [rad]public static double zenithalDistanceToElevation(double zenithalDistance)
zenithalDistance - The zenithal distance [rad]public static double computeElevationCorrectionFromApparentElevation(double apparentElevation,
double pressure,
double temperature,
double relativeHumidity,
double wavelengthNanometer,
double latitude,
double altitude,
double distance)
This method takes into account the finite distance of the observed object to add a parallax correction.
apparentElevation - The apparent elevation [rad]pressure - The pressure [Pa]temperature - The temperature [K°]relativeHumidity - The relative humidity (from 0 to 100) [%]wavelengthNanometer - The wavelength [nanometer]latitude - The latitude [rad]altitude - The altitude [m]distance - The distance of the observed object [m]. Can be Double.POSITIVE_INFINITY (equivalent to not take
into account the parallax correction).apparentElevation = geometricElevation + elevationCorrectionIllegalArgumentException - if the apparent zenithal distance is greater than the maximum apparent zenithal distance allowed for
tables linear extrapolationspublic static double computeElevationCorrectionFromGeometricElevation(double geometricElevation,
double pressure,
double temperature,
double relativeHumidity,
double wavelengthNanometer,
double latitude,
double altitude,
double distance,
double threshold,
int maxIter)
The input is the geometric elevation while the model takes the apparent elevation as an input. An iterative algorithm (fix point) is used to call the model with the apparent elevation, hence the threshold and maxIter arguments. Note that if the convergence is not reached within the maxIter, no exception is thrown.
This method takes into account the finite distance of the observed object to add a parallax correction.
geometricElevation - The geometric elevation [rad]pressure - The pressure [Pa]temperature - The temperature [K°]relativeHumidity - The relative humidity (from 0 to 100) [%]wavelengthNanometer - The wavelength [nanometer]latitude - The latitude [rad]altitude - The altitude [m]distance - The distance of the observed object [m]. Can be Double.POSITIVE_INFINITY (equivalent to not take
into account the parallax correction).threshold - Threshold for the iterative algorithm [rad]maxIter - Max iteration numberCopyright © 2024 CNES. All rights reserved.