Note: A manuscript of this atmospheric code is in preparation and will be submitted to the Monthly Notices of the Royal Astronomical Society (MNRAS) journal before the end of the year (2019). If you use this code for your project, please acknowledge this by making a reference to this paper in due course. You can contact me, the author, for the submission and review status.
Author info: Joost van den Born, born@astron.nl
Below you can find a set of models describing the atmospheric refraction and dispersion.
Contents:
- atmosphericModel.py : Python model that can be used to calculate the atmospheric refraction and dispersion
- refractionModel.py : Python script that compares the output of the different rerfraction models. Can be used as an example on how to use atmosphericModel.py
- 1976USSA.txt : Table with temperature, pressure, density and more as a function of altitude. Values derived from the 1976 U.S. Standard Atmosphere.
- manual.pdf : Manual for using atmosphericModel.py
- atmospheric refraction example: jupyter notebook example
- [Tech note]...models.pdf : Tech note describing the models.
On the dispersion model:
Dispersion model from Ciddor, 1996, calculates the index of refraction of air using the following parameters:
- Temperature
- Pressure
- Relative humidity
- CO2 density
On the atmospheric refraction / atmospheric dispersion models:
Available models:
- Full integration using the refractive integral (requires detailed information about the atmosphere, e.g. 1976USSA.txt)
- Plane-parallel atmosphere refraction model
- Cassini's homogeneous atmosphere refraction model
- Oriani's theorem ( Atan(z) + Btan^3(z) )
- Oriani's theorem expanded ( Atan(z) + Btan^3(z) + Ctan^5(z) )
- Error function refraction model
Input parameters for the spherical atmosphere models (all but the first):
- Temperature [K]
- Pressure [Pa]
- Relative humidity
- CO2 density [ppm]
- Latitude [deg]
- Height above sea level [m]
- Wavelength(s) [um]
- Zenith angle [deg]
Analytical error propagation
Full analytical error propagation is available for the Ciddor dispersion model (Observatory.dn_tph( ) ), for the Cassini refraction model (refraction.cassiniError( ) ) and for the Cassini dispersion model (dispersion.cassiniError( ) ). The results agree well with a Monte Carlo simulation, suggesting that if additional errors have not been considered, they are of neglible importance.
Uncertainties that are considered:
Ciddor dispersion model:
| Param. | Description | Unit |
|---|---|---|
| dl | Wavelength | um |
| dT | Temperature | K |
| dP | Pressure | Pa |
| dRH | Relative Humidity | |
| dCO2 | CO2 density | ppm |
Cassini refraction model:
| Param. | Description | Unit |
|---|---|---|
| dn | Refractive index | |
| dz | Zenith angle | deg |
Cassini dispersion model:
| Param. | Description | Unit |
|---|---|---|
| dl1, dl2 | Wavelength(s) | um |
| dT | Temperature | K |
| dP | Pressure | Pa |
| dRH | Relative Humidity | |
| dCO2 | CO2 density | ppm |
| dz | Zenith angle | deg |