atmosphere {colorSpec}R Documentation

atmospheric transmittance along a horizontal path

Description

Calculate transmittance along a horizontal optical path in the atmosphere, as a function of length (distance) and the molecular and aerosol properties. Because the path is horizontal, the atmospheric properties are assumed to be constant on the path. Only molecular scattering is considered. There is no modeling of molecular absorption; for visible wavelengths this is reasonable.

Usage

atmosTransmittance( distance, wavelength=380:720, 
                    molecules=list(N=2.547305e25,n0=1.000293),
                    aerosols=list(metrange=25000,alpha=0.8,beta=0.0001) )

Arguments

distance

the length of the optical path, in meters. It can also be a numeric vector of lengths.

wavelength

a vector of wavelengths, in nm, for the transmittance calculations

molecules

a list of molecular properties, see Details. If this is NULL, then the molecular transmittance is identically 1.

aerosols

a list of aerosol properties, see Details. If this is NULL, then the aerosol transmittance is identically 1.

Details

The list molecules has 2 parameters that describe the molecules in the atmosphere. N is the molecular density of the atmosphere at sea level, in molecules/meter^3. The given default is the density at sea level. n0 is the refractive index of pure molecular air (with no aerosols). For the molecular attenuation, the standard model for Rayleigh scattering is used, and there is no modeling of molecular absorption.

The list aerosols has 3 parameters that describe the aerosols in the atmosphere. The standard Angstrom aerosol attenuation model is:

attenuation(\lambda) = \beta * (\lambda/\lambda_0)^{-\alpha}

\alpha is the Angstrom exponent, and is dimensionless. attenuation and \beta have unit m^{-1}. And \lambda_0=550nm.

metrange is the Meteorological Range of the atmosphere in meters, as defined by Koschmieder. This is the distance at which the transmittance=0.02 at \lambda_0. If metrange is not NULL (the default is 25000) then both \alpha and \beta are calculated to achieve this desired metrange, and the supplied \alpha and \beta are ignored. \alpha is calculated from metrange using the Kruse model, see Note. \beta is calculated so that the product of molecular and aerosol transmittance yields the desired metrange. In fact:

\beta = -\mu_0 - log(0.02) / V_r

where \mu_0 is the molecular attenuation at \lambda_0, and V_r is the meteorological range. For a log message with the calculated values, execute cs.options(loglevel='INFO') before calling atmosTransmittance().

Value

atmosTransmittance() returns a colorSpec object with quantity equal to 'transmittance'. There is a spectrum in the object for each value in the vector distance. The specnames are set to sprintf("dist=%gm",distance).
The final transmittance is the product of the molecular transmittance and the aerosol transmittance. If both molecules and aerosols are NULL, then the final transmittance is identically 1; the atmosphere has become a vacuum.

Note

The Kruse model for \alpha as a function of V_r is defined in 3 pieces. For 0 \le V_r < 6000, \alpha = 0.585 * (V_r/1000)^{1/3}. For 6000 \le V_r < 50000, \alpha = 1.3. And for V_r \ge 50000, \alpha = 1.6. So \alpha is increasing, but not strictly, and not continuously. V_r is in meters. See Kruse and Kaushal.

The built-in object atmosphere2003 is transmittance along an optical path that is NOT horizontal, and extends to outer space. This is much more complicated to calculate.

References

Angstrom, Anders. On the atmospheric transmission of sun radiation and on dust in the air. Geogr. Ann., no. 2. 1929.

Kaushal, H. and Jain, V.K. and Kar, S. Free Space Optical Communication. Springer. 2017.

Koschmieder, Harald. Theorie der horizontalen Sichtweite. Beitrage zur Physik der Atmosphare. 1924. 12. pages 33-53.

P. W. Kruse, L. D. McGlauchlin, and R. B. McQuistan. Elements of Infrared Technology: Generation, Transmission, and Detection. J. Wiley & Sons, New York, 1962.

See Also

solar.irradiance, specnames

Examples

trans = atmosTransmittance( c(5,10,15,20,25)*1000 ) # 5 distances with atmospheric defaults

# verify that transmittance[550]=0.02 at dist=25000
plot( trans, legend='bottomright', log='y' )

# repeat, but this time assign alpha and beta explicitly
trans = atmosTransmittance( c(5,10,15,20,25)*1000, aero=list(alpha=1,beta=0.0001) )

[Package colorSpec version 1.5-0 Index]