environment.models.ciddor#
Ciddor (1996) Air Refractive Index Model.
This module provides a highly accurate calculation of the phase refractive index of air based on the Ciddor (1996) formulation. It is considered a reference standard for a wide range of atmospheric conditions and wavelengths.
The model’s methodology involves calculating the density of the dry air and water vapor components separately under the given conditions. These densities are then used to scale their respective standard refractivities. This approach relies on the BIPM-91 equation for the density of moist air, which accounts for non-ideal gas behavior.
This implementation has been validated against the reference script provided by RefractiveIndex.INFO.
References
Ciddor, P. E. (1996). Refractive index of air: new equations for the visible and near infrared. Applied Optics, 35(9), 1566-1573.
Polyanskiy, M. (2017). Ciddor 1996 - air.py. polyanskiy/refractiveindex.info-scripts
Kramer Harrison, 2025
Functions
|
Calculates the refractive index of air using the full Ciddor (1996) model. |
- ciddor_refractive_index(wavelength_um: float, conditions: EnvironmentalConditions) float[source]#
Calculates the refractive index of air using the full Ciddor (1996) model.
This implementation follows the detailed procedure outlined in the Ciddor paper, calculating component densities of dry air and water vapor to determine the final refractivity of the moist air mixture.
- Parameters:
wavelength_um – The wavelength of light in a vacuum, in micrometers (μm).
conditions – An EnvironmentalConditions object with temperature, pressure, relative humidity, and CO₂ concentration.
- Returns:
The phase refractive index of air (n).
- Raises:
ValueError – If wavelength is not positive.
TypeError – If conditions is not an EnvironmentalConditions object.
Example
>>> from optiland.environment import EnvironmentalConditions >>> conditions_std = EnvironmentalConditions( ... temperature=15.0, ... pressure=101325.0, ... relative_humidity=0.0, ... co2_ppm=450.0, ... ) >>> n = ciddor_refractive_index(0.6328, conditions_std) >>> print(f"Refractive index at 0.6328 µm is {n:.8f}") Refractive index at 0.6328 µm is 1.00027653