First of all, thanks for the effort you put into developing Orekit and in supporting the community.
I am using Orekit Python Wrapper v12.1.2 and I have a question about the class AngularTroposphericDelayModifier (OREKIT 12.1.2 API). In the API documentation, it is mentioned that the function is deprecated as of v12.1. It is also suggested to start using the class AngularRadioRefractionModifier (OREKIT 12.1.2 API). Nevertheless, in the description of the class AngularRadioRefractionModifier, it is mentioned that it performs ionospheric correction rather than the tropospheric one (at least this is my understanding).
My questions are:
Is the AngularTroposphericDelayModifier class actually deprecated (no warnings/errors are raised when using it)?
Can you clarify if the suggested AngularRadioRefractionModifier is for tropospheric or ionospheric correction?
Good catch. It is a typo, this should read tropospheric and not ionospheric.
Yes it is deprecated. In fact its computations were completely wrong.
AngularRadioRefractionModifier is the class that should be used, and it is built from an external refracation model. There are two such models provided in the library: EarthITU453AtmosphereRefraction and EarthStandardAtmosphereRefraction. Users could provide custom model if they want.
I am implementing the AngularRadioRefractionModifier in my code. Compared to the uncorrected values and with respect to when I used the AngularTroposphericDelayModifier (this is based on the results I see in my unit tests):
Correction in the azimuth coordinate is barely noticeable if not at all null (no differences up to the 16th decimal digit)
Correction in the elevation coordinate is larger and detectable (differences already at the 3rd decimal digit)
You mentioned that computations in the now deprecated AngularTroposphericDelayModifier were completely wrong, and indeed I can confirm that results are quite different.
I would like to ask you if, based on the phenomenon and your opinion, the correction on the azimuth elevation is expected to be minimal or if instead, something weird is happening either in my unit test or in the AngularRadioRefractionModifier class.
The fact that my unit test focuses on a small set of scenarios may be a limiting factor, but I would still expect to see a small difference between the corrected and uncorrected Azimuth values.
Refraction models only change elevation, so it is expected they have no effect on azimuth.
They should slightly increase the elevation near horizon by a few degrees. This means that a satellite that would without atmosphere still be below horizon will in fact be visible slightly above horizon when atmospheric refraction is taken into account.
If the satellite is already far above horizon, the effect will quickly become very small. Refraction effect is exactly null at zenith as the signal traverses the layers exactly along the refractive index gradient.