Description Usage Arguments Details Value Note References See Also Examples

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.

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

`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 |

`aerosols` |
a list of aerosol properties, see |

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(λ) = β * (λ/λ_0)^{-α}*

*α* is the Angstrom exponent, and is dimensionless.
*attenuation* and *β* have unit *m^{-1}*.
And *λ_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 *λ_0*.
If `metrange`

is not `NULL`

(the default is 25000)
then both *α* and *β* are calculated to achieve
this desired `metrange`

, and the supplied *α* and *β*
are ignored.
*α* is calculated from `metrange`

using the Kruse model,
see **Note**.
*β* is calculated so that the product of
molecular and aerosol transmittance yields the desired `metrange`

.
In fact:

*β = -μ_0 - log(0.02) / V_r*

where *μ_0* is the molecular attenuation at *λ_0*,
and *V_r* is the meteorological range.
For a log message with the calculated values,
execute `cs.options(loglevel='INFO')`

before calling `atmosTransmittance()`

.

`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.

The Kruse model for *α* as a function of *V_r*
is defined in 3 pieces.
For *0 ≤ V_r < 6000*, *α = 0.585 * (V_r/1000)^{1/3}*.
For *6000 ≤ V_r < 50000*, *α = 1.3*.
And for *V_r ≥* 50000, *α = 1.6*.
So *α* 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.

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.

1 2 3 4 5 6 7 | ```
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) )
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.