Radiative Transfer and Surface Property Modelling

Profile Utility Introduction

Units Conversion Module

The Units_Conversion module contains a number of functions for converting the units of atmospheric absorber concentrations. This type of conversion information is usually hard to dig up so this module is an attempt to gather as many of the conversions as possible in one place. All of the available conversion routines are shown in the table below. For more details on the available routines, click on the links below or see the Units_Conversion module documentation.

Specific amount <-> mixing ratio
SA_to_MRFunction to convert gas concentrations from specific amount to mixing ratio.
MR_to_SAFunction to convert gas concentrations from mixing ratio to specific amount
Relative humidity <-> mixing ratio
RH_to_MRFunction to convert water vapor amounts from relative humidity to mixing ratio.
MR_to_RHFunction to convert water vapor amounts from mixing ratio to relative humidity.
Mixing ratio <-> ppmv
MR_to_PPMVFunction to convert gas concentrations from mixing ratio to parts-per-million by volume.
PPMV_to_MRFunction to convert gas concentrations from parts-per-million by volume to mixing ratio.
Partial pressure <-> ppmv
PPMV_to_PPFunction to convert gas concentrations from parts-per-million by volume to partial pressure.
PP_to_PPMVFunction to convert gas concentrations from partial pressure to parts-per-million by volume.
Partial pressure <-> mixing ratio
MR_to_PPFunction to convert gas concentrations from mixing ratio to partial pressure in hectoPascals
PP_to_MRFunction to convert gas concentrations from partial pressure in hectoPascals to mixing ratio in g/kg.
Partial pressure <-> mass density
PP_to_MDFunction to convert gas concentrations in pressure units to mass density.
MD_to_PPFunction to convert gas concentration mass density to partial pressure.
Partial pressure <-> number density
PP_to_NDFunction to convert gas concentrations from (partial) pressures in hectoPascals to molecules/m^3.
ND_to_PPFunction to convert gas concentrations from number densities in molecules/m^3 to (partial) pressures in hectoPascals.
Number density <-> ppmv
PPMV_to_NDFunction to convert gas concentrations from parts-per-million by volume to molecules/m^3.
ND_to_PPMVFunction to convert gas concentrations from number densities in molecules/m^3 to parts-per-million by volume.
Column density <-> ppmv
PPMV_to_KMOLFunction to convert gas concentrations from parts-per- million by volume to kilomoles per cm^2.
KMOL_to_PPMVFunction to convert gas concentrations from kilomoles per cm^2 to parts-per-million by volume.

Atmospheric Properties Module

This module contains a number of routines to compute various properties of the atmosphere.

Molecular weight of air, MW_Air

This function calculates the effective molecular weight of air. To calculate the air density accurately the profile of the effective molecular weight of air (MWair) is required. Although MWair does not change a great deal with altitude, the variation is significant as the ratios of concentrations of various absorbers change.

The most significant contributor to the change in MWair is water vapor, mostly in the lower troposphere. The effect of the other absorbers (O3, CO2, etc.) can be considered negligible. To offset the displacement of “air molecules” by water vapor, the molecular weight of air is given by,

where

For the subprogram interface details, see the Atmospheric Properties documentation.

Gas density, Density

This function calculates gas density using the ideal gas law,

where

For the subprogram interface details, see the Atmospheric Properties documentation.

Saturation vapor pressures, SVP_Water and SVP_Ice

These functions calculate the saturation vapor pressures over water and ice respectively. The pressures are computed using a polynomial fit to measurements as detailed in Flatau,P.J., R.L.Walko, and W.R.Cotton, 1992: “Polynomial fits to saturation vapor pressure”, J.Appl.Met.31, pp1507-1513,

where

For the subprogram interface details, see the Atmospheric Properties documentation.

Saturation mixing ratio, Saturation_Mixing_Ratio

This function calculates the saturation mixing ratio for a given pressure and temperature,

where

For the subprogram interface details, see the Atmospheric Properties documentation.

Virtual Temperature, Virtual_Temperature

This function calculates the virtual temperature, the temperature that dry air must have in order to have the same density as moist air at the same pressure, given the temperature and water vapor mixing ratio,

where

There is also an “inverse” capability to compute the temperature given the virtual temperature and the water vapor mixing ratio.

For the subprogram interface details, see the Atmospheric Properties documentation.

Potential Temperature, Potential_Temperature

This function calculates the potential temperature, the temperature that a parcel of air would have if it were expanded or compressed adiabatically to some reference pressure.

The conversion is given by Poisson’s equation,

where

This routine uses the standard atmosphere as the reference pressure, the gas constant for dry air and the specific heat for an ideal diatomic gas,

where

There is also an “inverse” capability to compute the temperature given the potential temperature and pressure.

For the subprogram interface details, see the Atmospheric Properties documentation.

Geopotential Module

Geopotential heights are computed using the Geopotential_Height function. Atmospheric layer thicknesses can be calculated via the hypsometric equantion,

where

and H is the scale height given by,

The latter form is used here since the gas constant for air is given by,

and this will allow for the effect of other gases, such as O3, eventually to be included in the calcuation of the effective molecular weight of air, MWAir.

Layer values for both RAir and T are determined from a density weighted average of adjacent level values,

where

For the subprogram interface details, see the Geopotential Geopotential_Height documentation.

Level to Layer Conversion Module

This module contains routines to convert level-based values to layer-based ones.

Effective Temperature and Pressure, Effective_Layer_TP

This function calculates the effective atmospheric layer temperature and pressure by weighting level values with the integrated layer density. The reference for this method is Gallery, W.O., F.X. Kneizys, and S.A. Clough, “Air mass computer program for atmospheric transmittance/radiance calculation: FSCATM”, AFGL-TR-83-0065, 9 March 1983.

Gallery et al (1983) indicates that for determining atmospheric absorption line halfwidths, intensities and blackbody emission, effective layer pressures and temperatures are used. The definition supplied (one of many) is the density weighted average,

and

 where ds = the element of length along a path.

If we assume that the integration is always done over one layer (between two levels, k and k-1 where zk-1 > zk) then the above equations become,

and

The comparison between the average and effective layer pressure is shown in figure 1. The same for the average and effective layer temperatures is shown in figure 2.

Note that the gas constant used in the effective temperature equation is for air, not dry air. If the gas constant for dry air is used, the difference between effective and average layer temperatures differs considerably when the atmosphere is sufficiently moist — as is shown in figure 3.

For the subprogram interface details, see the Level Layer Conversion documentation.

Figure 1. Effective_TP. Difference between average and effective layer pressure

Figure 2. Effective_TP. Difference between average and effective layer temperature

Figure 3. Effective_TP. Comparison and difference between the input level and derived average and effective layer temperature where the gas constant for dry air was used in calculating the effective temperature. Note the difference between the average and effective layer temperatures from 300mb-surface — the moist part of the atmosphere.

Layer Integration, Create_Sublevels and Integrate_Sublevels

These two routiens are Fortran90/95 translations of the routines INTLEV and INTEG, part of the KLAYERS code in the AIRS RTA. This text details the steps required to replicate the profile conversion performed by the front end to the AIRS RTA, KLAYERS,in determining average layer pressure, temperature, and absorber amount — the latter as a column density in units of kmol/cm2.

The assumption is made that temperature and absorber amount vary linearly with ln(P). To improve the quadrature in integrating level amounts to a layer value, each input layer, k, is split into N(k) sublayers equally spaced in ln(P) as shown in figure 4

Figure 4. Create_Sublevels. Definition of sublayering scheme.

where

given the pressures, P0 – PK of the input levels where P0 corresponds to the highest altitude (lowest pressure) level and PK corresponds to the surface pressure. Note that the level count starts at 0 and a layer k or sublayer n is between levels k-1 and k, and n-1 and n respectively. Also, the zeroth sublevel corresponds to the k-1 level.

Once the sublevels are defined, the level temperatures and absorber amounts are linearly interpolated at the specific number of sublevels and those interpolates associated with the sublevel pressures.

For the subprogram interface details, see the Level Layer Conversion documentation.

Once the sublevel arrays have been created using Create_Sublevels, they are passed to the Integrate_Sublevels function. This function determines the average layer k temperature from the N(k) sublayers temperature-density product by simple summation,

where Δzn is the sublayer thickness, and the average sublayer n pressures and temperatures are given by,

respectively.

Similarly to the layer temperature, the integrated layer absorber column density for molecule j is determined by summing the sublayer values,

where c is a scaling constant, and the average sublayer n absorber volume mixing ratio is a simple sublevel average,

An explanation of the conversion of layer volume mixing ratios into column density (in kmol/cm2) can be found in the Units Conversion documentation.

For the subprogram interface details, see the Level Layer Conversion documentation.


This page maintained by Paul van Delst
Last updated December 3, 2004