Extended IDL Help

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Tue Aug 18 15:38:05 2015.


List of Routines


Routine Descriptions

ABSCOEF

[Next Routine] [List of Routines]
 NAME:
  abscoef
 PURPOSE: (one line)
  calculate absorbtion coefficient (in cm^-1)
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  k = abscoef(lnarr, nabs, nu)
 INPUTS:
  lnarr - an array of spectral line structures
  nabs - number density of absorber (cm^-3)
  nu - array of wavenumbers
 OPTIONAL INPUT PARAMETERS:
 KEYWORD INPUT PARAMETERS:
  nolim     - set for  no restriction of range 
              (overrides eps, nlorwidth, ndopwidth)
  nlorwidth - maximum number of Lorentz widths to calculate line on
  ndopwidth - maximum number of Doppler widths to calculate line on
  eps       - if nlorwidth or ndopwidth not set, calculate nwidths
              such that uncalculated taus are < eps and fractional
              error in width is < eps
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  k - absorbtion coeff in inverse cm
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  None
 RESTRICTIONS:
 PROCEDURE:
  LORENTIAN
    First, make sure we go far enough in the optically thin case.

    For Lorenzian lines, f = 1 / ( ( (ndu/w_l)^2 + 1) * w_l * !pi)

                         1
     f(dnu) = ----------------------------
                                  2
              w_l !pi ( (nu / w_l)   + 1)

    where f is the line shape, nu is the distance from line center
    and w_l is the Lorentz line width.

    If we calculate the absorption out to some number of widths, n,  
    then the equivalent width, e, is

        /  n*w_l               2. * atan(n)
    e = |         f(nu) d nu = ------------  
        / -n*w_l                    !pi

    e -> 1 for n -> infinity, as it should.

    To get the optically thin equivalent width to within eps of 1, we need

    1. - eps = 2 * atan(n)/!pi

                                           1
    n = tan( (1. - eps) * !pi/2.) = ---------------
                                    tan(eps * !pi/2)


    
    Alternatively, to get tau < eps, we need

    tau eps = = S * nabs * f(dnu)

  DOPPLER

          exp( - (nu/w_d)^2 )
    f =  --------------------
             w_d * sqrt(!pi)


    The equivalent width if we calculate out to some n is

        /  n*w_d
    e = |         f(nu) d nu = erf(n) = 1 - eps
        / -n*w_d               

    or eps = erfc(n)

 MODIFICATION HISTORY:
  Written 2001 May, by Leslie Young, SwRI
  2002 Sept LAY relax selection for nu-nu0 from 500 widths to 1e6 widths.
  2004 Nov 16 LAY.  Added nlorwidth, ndopwidth
  2008 Dec 14 LAY.  Changed n -> nl or nd in lorlim and doplim calcs

(See ../spectra/abscoef.pro)


APPROXWIDTH.PRO[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	approxwidth.pro
 PURPOSE: 
	Calculate equivalent widths assuming appoximate forms of 
	Doppler broadening, Lorentx broadening and Voigt profile. 
	The equations are from Ch. 4 of Goody & Yung.
 DESCRIPTION:
	a function to help determine the approx. equivalent width
	of spectral lines. This was used to check widthv.pro and
	widtha.pro. 
 CATEGORY: 
 CALLING SEQUENCE: approxwidth, S, N, adop, aL, amf, Wd, Wl, Wv
 INPUTS: 
	S	-- strength of the line shape, given in cm^-1/(molecules*cm^-2)
	N	-- Column abundance of molecules which cause the feature,
		   given in molecules/cm^2.
	adop	-- Doppler line shape, given in cm^-1
	aL	-- Lorentzian line shape, given in cm^-1
	amf	-- air mass factor
 OPTIONAL INPUT PARAMETERS: none
 KEYWORD PARAMETERS:
 OUTPUTS: 
	Wd	-- the approx. equivalent width using a Doppler profile.
	Wl	-- the approx. equivalent width using a Lorentz profile.
	Wv	-- the approx. equivalent width using a Voigt profile.
 SIDE EFFECTS: none
 RESTRICTIONS: 
 PROCEDURE: 
  Wd from Goody & Yung 4.20
 MODIFICATION HISTORY: Written by Jason Cook, May 4, 1999, BU
 2009 Nov 25 LAY, SwRI. 
   Remove print statement, 
   multiply by amf for optically-thin case
   replace !pi w/ sqrt(!pi) for w
 2009 Dec 5 LAY
   change low-w doppler case from S*m for w<1 to
   Eq. 4.19 for w < 3.

(See ../spectra/approxwidth.pro)


APPROXWIDTH.PRO[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
	approxwidth.pro
 PURPOSE: 
	Calculate equivalent widths assuming appoximate forms of 
	Doppler broadening, Lorentx broadening and Voigt profile. 
	The equations are from Ch. 4 of Goody & Yung.
 DESCRIPTION:
	a function to help determine the approx. equivalent width
	of spectral lines. This was used to check widthv.pro and
	widtha.pro. 
 CATEGORY: 
 CALLING SEQUENCE: approxwidth, S, N, adop, aL, amf, Wd, Wl, Wv
 INPUTS: 
	S	-- strength of the line shape, given in cm^-1/(molecules*cm^-2)
	N	-- Column abundance of molecules which cause the feature,
		   given in molecules/cm^2.
	adop	-- Doppler line shape, given in cm^-1
	aL	-- Lorentzian line shape, given in cm^-1
	amf	-- air mass factor
 OPTIONAL INPUT PARAMETERS: none
 KEYWORD PARAMETERS:
 OUTPUTS: 
	Wd	-- the approx. equivalent width using a Doppler profile.
	Wl	-- the approx. equivalent width using a Lorentz profile.
	Wv	-- the approx. equivalent width using a Voigt profile.
 SIDE EFFECTS: none
 RESTRICTIONS: 
 PROCEDURE: 
  Wd from Goody & Yung 4.20
 MODIFICATION HISTORY: Written by Jason Cook, May 4, 1999, BU
 2009 Nov 25 LAY, SwRI. 
   Remove print statement, 
   multiply by amf for optically-thin case
   replace !pi w/ sqrt(!pi) for w
 2009 Dec 5 LAY
   change low-w doppler case from S*m for w<1 to
   Eq. 4.19 for w < 3.

(See ../spectra/approxwidth_dop.pro)


BINEDGE[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  binedge
 PURPOSE: (one line)
  Given a list of bin centers, return the bin edges
 DESCRIPTION:
  Given a list of bin centers, return the bin edges
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  binedge, x, n, x0, x1, dx
 INPUTS:
   x: centers of bins
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
   n: length of array
   x0: lower edge
   x1: upper edge
   dx: bin width
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
   x has to be monotonically increasing
 PROCEDURE:
   Interior bin edges are midway between bin centers.
   X[0] and X[n-1] are in the middle of their bins
 MODIFICATION HISTORY:
  Written Leslie Young, SwRI, Nov 8, 2000
  Jan 3 2006.  Added doc, moved to layoung/spectra, LAY

(See ../spectra/binedge.pro)


BINEDGE[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  binedge
 PURPOSE: (one line)
  resample fine (x,y) to coarse (u,v)
 DESCRIPTION:
  resample fine (x,y) to coarse (u,v)
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  v = resample, x, y, u, DX = dx, DU = du, YERR=yerr, VERR=verr
 INPUTS:
   x: the dependant variable (1-D array) (centers of fine bins)
   y: the unsmoothed independant variable (1-D array) (average of fine bin)
   u: the coarser x's (center of coarse bins)
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  DX = width of fine bins.  If not passed, the bin edges and widths 
       are calculated using binedge.
  DU = width of coarse bins.  If not passed, the bin edges and widths 
       are calculated using binedge.
  Yerr = errors for y (the original fine values)
 KEYWORD OUTPUT PARAMETERS:
  Verr = errors for v (the calculated coarse values)
 OUTPUTS:
   Return v, the y's averaged over bins du wide
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
   x and u have to be monotonically increasing
 PROCEDURE:
 MODIFICATION HISTORY:
  Written Leslie Young, SwRI, Nov 8, 2000
  Jan 3 2006.  Added doc, moved to layoung/spectra, LAY

(See ../spectra/resample.pro)


CHANGEPT_SPECLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  changept_specline
 PURPOSE: (one line)
  Change the strength and pressure/doppler widths to reflect a new temperature & pressure
 DESCRIPTION:
  Given a spectral line structure and a temperature, update the strength,
  air-broadened half-width, and doppler width.
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  changept_specline, ln, p, t
 INPUTS:
  ln - the spectral line structure to be changed
  p - the new pressure (microbar)
  t - the new temperature for the line (K)
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  Changes the following fields in ln:
   s                   intensity in cm^-1/(molecule cm^-2)
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   p                   pressure for gamma_air
   t                   temperature for s, gamma_air, and gamma_self
   dopw                doppler width (Goody&Yung definition), cm^-1
 RESTRICTIONS:
  1. Only works for molecules 1-7 (H2O, CO2, O3, N2O, CO, CH4, O2)
  2. Assumes the partition function (Q) varies as temperature to some power
  (c.f.. Steve Lord's ATRAN program), rather than using the full polynomial
  expressions of select96.
  3. Does not change gamma, the self-braodened halfwidth.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  29 May 2001 LAY. Added call to qoft

(See ../spectra/changept_specline.pro)


CHANGEPT_SPECLINE_ARRAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  changept_specline_array
 PURPOSE: (one line)
  Change an array of lines to reflect a new temperature & pressure
 DESCRIPTION:
  Given a spectral line structure and a temperature, update the strength,
  air-broadened half-width, and doppler width.
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  changept_specline_array, ln, p, t
 INPUTS:
  lna - an array of spectral line structures to be changed
  p - the new pressure (microbar)
  t - the new temperature for the line (K)
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  Changes the following fields in the elements of lna:
   s                   intensity in cm^-1/(molecule cm^-2)
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   p                   pressure for gamma_air
   t                   temperature for s, gamma_air, and gamma_self
   dopw                doppler width (Goody&Yung definition), cm^-1
 RESTRICTIONS:
  1. Only works for molecules 1-7 (H2O, CO2, O3, N2O, CO, CH4, O2)
  2. Assumes the partition function (Q) varies as temperature to some power
  (c.f.. Steve Lord's ATRAN program), rather than using the full polynomial
  expressions of select96.
  3. Does not change gamma, the self-braodened halfwidth.
  See changept_specline
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/changept_specline_array.pro)


CHANGET_SPECLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  changet_specline
 PURPOSE: (one line)
  Change the strength and pressure/doppler widths to reflect a new temperature
 DESCRIPTION:
  Given a spectral line structure and a temperature, update the strength,
  air-broadened half-width, and doppler width.
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  changet_specline, ln, t
 INPUTS:
  ln - the spectral line structure to be changed
  t - the new temperature for the line
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  Changes the following fields in ln:
   s                   intensity in cm^-1/(molecule cm^-2)
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   t                   temperature for s, gamma_air, and gamma_self
   dopw                doppler width (Goody&Yung definition), cm^-1
 RESTRICTIONS:
  1. Only works for molecules 1-7 (H2O, CO2, O3, N2O, CO, CH4, O2)
  2. Assumes the partition function (Q) varies as temperature to some power
  (c.f.. Steve Lord's ATRAN program), rather than using the full polynomial
  expressions of select96.
  ------ NOW IT DOES.  LAY 29 May 2001
  3. Does not change gamma, the self-braodened halfwidth.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  29 May 2001 LAY. Added call to qoft
  22 Mar 2005 LAY.  Changed rad calculation to call expm1

(See ../spectra/changet_specline.pro)


CHANGET_SPECLINE_ARRAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  changet_specline_array
 PURPOSE: (one line)
  Change an array of lines to reflect a new temperature
 DESCRIPTION:
  Given a spectral line structure and a temperature, update the strength,
  air-broadened half-width, and doppler width.
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  changet_specline_array, lna, t
 INPUTS:
  lna - an array of spectral line structures to be changed
  t - the new temperature for the line
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  Changes the following fields in the elements of lna:
   s                   intensity in cm^-1/(molecule cm^-2)
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   t                   temperature for s, gamma_air, and gamma_self
   dopw                doppler width (Goody&Yung definition), cm^-1
 RESTRICTIONS:
  1. Only works for molecules 1-7 (H2O, CO2, O3, N2O, CO, CH4, O2)
  2. Assumes the partition function (Q) varies as temperature to some power
  (c.f.. Steve Lord's ATRAN program), rather than using the full polynomial
  expressions of select96. 
  ------ NOW IT DOES.  LAY 29 May 2001
  3. Does not change gamma, the self-braodened halfwidth.
  See changet_specline
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/changet_specline_array.pro)


CORR_K

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  corr_k
 PURPOSE: (one line)
  calculate correlated-k coefficients
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  corr_k, kin, k, dk, f, dg, g, kmin=kmin, kmax=kmax, dlnk=dlnk, weight=weight
 INPUTS:
  kin - absorbtion coefficient in cm^-1 or cross section in cm^2
 KEYWORD INPUT PARAMETERS:
  kmin - minimum k to tabulate. Default = min(kin)
  kmax - maximum k to tabulate. Default = max(kin)
  dlnk - spacing between k's.  k[i+1] = k[i] * exp(dlnk). Default = 0.1
  weight - relative weighting for kin, same length as kin.
    Examples: 
    1. Unevenly tabulated kin.  weight = bin widths.
    2. Rapid computation of tranmission times a solar spectrum.
       weight = solar spectrum.
    3. Weighting by instrumental smoothing function.
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  k - correlated-k in same units as kin
  dk - width of k bins, in same units as kin
  f - frequency distribution, in inverse the units of kin
  g - culmulative distribution, unitless, 0 to 1
  dg - culmulative distribution bin, unitless
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
  None
 RESTRICTIONS:
 PROCEDURE:
  Following Lacis and Oinis 1991, "A description of the correlated k
  distribution method for modeling nongray gaseous absorption, 
  thermal emission, and multiple scattering in vertically inhomogenous
  atmospheres."  JGR 96, 9027-9063.

  The goal is to calculate the average transmission as a
  function u, where u is path length (for k in cm^-1) or column density
  (for k in cm^2).

   The continuous equation is

             /k=inf
      T(u) = |      exp(-u*kin(nu)) (1/(nu1-nu0) ) dnu
             /k=0  
  
   or, for weighted k's

             /k=inf
      T(u) = |      exp(-u*kin(nu)) w(nu)  dnu
             /k=0  

   where the integral of w over the frequency range is 1.

   Discretely, this is
  
      T(u) = total( exp(-u*kin) * w )


  f - frequency distribution (units are inverse the units of k)
      or cm for k in cm^-1, cm^-2 for k in cm^2).  
      f(k) dk is the fraction of relevent frequency interval 
      for which the absorption is between k and k+dk.

      The continuous and discrete equations are

             /k=inf
      T(u) = |      f(k) exp(-u*k) dk
             /k=0  


      T(u) = total( f * exp(-k * u) * dk )

  g - culmulative distribution (unitless)
      g(k) is the fraction of relevent frequency interval 
      for which the absorption is less than k.

      The continuous and discrete equations are

             /g=1
      T(u) = |       exp(-u*k) dg
             /g=0  


      T(u) = total( exp(-k * u) * dg )

 EXAMPLE: UNWEIGHTED
  
  corr_k, kin, k, dk, f, dg, g 
  total( exp(-kin*u) ) should equal 
  total( exp(  -k*u) * dg)

 EXAMPLE: WEIGHTED
  
  corr_k, kin, k, dk, f, dg, g, weight = w
  total( exp(-kin*u) * w)/total(w) should equal 
  total( exp(  -k*u)*dg)

 MODIFICATION HISTORY:
  2005 Feb 17 Leslie Young SwRI
  2005 Mar 29 LAY Added documentation, moved to $idl/spectra,
    removed tests, changed name to avoid conflicts

(See ../spectra/corr_k.pro)


DOPWIDTH

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  dopwidth
 PURPOSE: (one line)
  Calculate the doppler width of a spectral line
 DESCRIPTION:
  The doppler width follows the Goody and Yung definition
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  dopw = dopwidth(nu0, t, mu)
 INPUTS:
  nu0 - wavenumber of the line in cm^-1
  t - temperature (K)
  mu - molecular weight (g/mole)
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  doppler width in cm^-1
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  Note that if nu0 is in other units (e.g. nm), the returned
  width will be in those same units.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/dopwidth.pro)


MK_NUWGT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  mk_nuwgt
 PURPOSE: (one line)
  make a list of inverse cm (and optionally, weights)
 DESCRIPTION:
  pick nu's appropriate for the temperature
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  nuarr = mk_nuwgt(lnarr, nuwgt)
 INPUTS:
  lnarr - an array of spectral line structures to be changed
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  nu - array of wavenumbers (inverse cm)
  nuwgt - array of wavenumber weights (inverse cm)
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  None
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2001 May, by Leslie Young, SwRI

(See ../spectra/mk_nuwgt.pro)


MK_NUWGT_LOW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  mk_nuwgt_low
 PURPOSE: (one line)
  make a list of inverse cm (and optionally, weights) (lowlevel)
 DESCRIPTION:
  pick nu's appropriate for the temperature
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  nuarr = mk_nuwgt_low(nu0arr, dopwarr, nx, ndopw, s, ng, dnuarr)
 INPUTS:
  nu0arr - array of line centers (may be scalar)
  dopwarr - array of doppler widths (same length as nu0arr)
  nx - number of points in all other grids
  ndopw - number of doppler widths in the core
  s - scale of spacing between grids (must be >1 )
  ng - number of grids
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  nu - array of wavenumbers (inverse cm)
  dnuarr - if present, array of wavenumber weights (inverse cm)
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  None
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2001 May, by Leslie Young, SwRI
  Modified 2004 Jun 27, LAY, based on Meadows&Crisp 1996

(See ../spectra/mk_nuwgt_low.pro)


MOLEC_WEIGHT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  molec_weight
 PURPOSE: (one line)
  Return the molecular weight, given the molecule and isotope index used by HITRAN
 DESCRIPTION:
  
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  w = molec_weight(mol, iso)
 INPUTS:
  mol - molecule index (e.g., 1 for H2O)
  iso - isotope index (e.g., 1 for 1H 16O 1H)
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  atomic weight (g/mole, e.g., 18. for molec_weight(1,1) )
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  None
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  2011-Apr-29 LAY.  Update for HITRAN2008

(See ../spectra/molec_weight.pro)


NEW_SPECLINE[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  new_specline
 PURPOSE: (one line)
  Create an empty spectral line structure
 DESCRIPTION:
   mol                molecule index
   iso                 isotope index
   nu0                 frequency in cm^-1
   s                   intensity in cm^-1/(molecule cm^-2)
   r2                  transition probability squared in Debye^2
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   gamma_self          self-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   E_lower             lower state energy in cm^-1
   n                   coef. of temperature dependence of air-broadened halfwidth
   delta               air-broadened pressure shift of the line transition in cm^-1/atm
   v_upper             upper state global quanta index
   v_lower             lower state global quanta index
   Q_upper             upper state global quanta index
   Q_lower             lower state global quanta index
   ier                 accuracy indices for frequency, intensity,
                        and air-broadened halfwidth
   iref                indices for table of references corresponding to
                         frequency, intensity, and air-broadened halfwidth
   t                   temperature for s, gamma_air, and gamma_self
   p                   pressure in microbar, for air-broadened half-width
   dopw                doppler width (Goody&Yung definition), cm^-1
 
   temperature, etc of original source
   t_orig 
   p_orig
   s_orig 
   gamma_air_orig    ; air-broadened halfwidth (HWHM) in cm/atm
   gamma_self_orig 
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  specline = new_specline()
 INPUTS:
  None
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  empty spectral line structure
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  Tailored for HITRAN
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  2005 March LAY changed floats to doubles

(See ../spectra/new_specline.pro)


NEW_SPECLINE[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  new_specline
 PURPOSE: (one line)
  Create an empty spectral line structure for HITRAN96
 DESCRIPTION:
   mol                molecule index
   iso                 isotope index
   nu0                 frequency in cm^-1
   s                   intensity in cm^-1/(molecule cm^-2)
   r2                  transition probability squared in Debye^2
   gamma_air           air-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   gamma_self          self-broadened halfwidth (HWHM) in cm^-1 at specified pressure
   E_lower             lower state energy in cm^-1
   n                   coef. of temperature dependence of air-broadened halfwidth
   delta               air-broadened pressure shift of the line transition in cm^-1/atm
   v_upper             upper state global quanta index
   v_lower             lower state global quanta index
   Q_upper             upper state global quanta index
   Q_lower             lower state global quanta index
   ier                 accuracy indices for frequency, intensity,
                        and air-broadened halfwidth
   iref                indices for table of references corresponding to
                         frequency, intensity, and air-broadened halfwidth
   t                   temperature for s, gamma_air, and gamma_self
   p                   pressure in microbar, for air-broadened half-width
   dopw                doppler width (Goody&Yung definition), cm^-1
 
   temperature, etc of original source
   t_orig 
   p_orig
   s_orig 
   gamma_air_orig    ; air-broadened halfwidth (HWHM) in cm/atm
   gamma_self_orig 
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  specline = new_specline()
 INPUTS:
  None
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  empty spectral line structure
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  Tailored for HITRAN
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  2005 March LAY changed floats to doubles

(See ../spectra/new_specline96.pro)


OK_SPECLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  ok_specline
 PURPOSE: (one line)
  Return true if a spectral line matches criteria
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  ok_specline, ln, mol, iso, v_upper, v_lower, min_nu0, max_nu0, min_s
 INPUTS:
  ln - the spectral line structure to be tested
  mol - index of molecule (or 0 for any)
  iso - index of isotope (or 0 for any)
  v_upper - upper vibrational quantum number, or 0 for any
  v_lower - lower vibrational quantum number, or 0 for any
  min_nu0 - minimum wavenumber of the transition, or 0 for any
  max_nu0 - maximum wavenumber of the transition, or 0 for any
  min_s- minimum strength of the transition, or 0 for any
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  true for match, false for no match
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  None
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  2013 Aug 08 - ass 2012 case

(See ../spectra/ok_specline.pro)


RD_BAND

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  rd_band
 PURPOSE: (one line)
  Read a molecular band from a HITRAN file
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  rd_band, fn, mol, iso, v_upper, v_lower
 INPUTS:
  fn - the filename of a HITRAN molecular file. 
  mol - index of molecule (or 0 for any)
  iso - index of isotope (or 0 for any)
  v_upper - upper vibrational quantum number, or 0 for any
  v_lower - lower vibrational quantum number, or 0 for any
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  Returns an array of spectral line structures
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  This doesn't use the main HITRAN file, but the files in the by_molec directory
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/rd_band.pro)


RD_NEXT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  rd_next
 PURPOSE: (one line)
  Read the next line from an open HITRAN file that satisfies criteria
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  rd_next, fp, ln, mol, iso, v_upper, v_lower, min_nu0, max_nu0, min_s
 INPUTS:
  ln - the spectral line structure to be filled in
  fp - a file pointer to an open HITRAN file. 
  mol - index of molecule (or 0 for any)
  iso - index of isotope (or 0 for any)
  v_upper - upper vibrational quantum number, or 0 for any
  v_lower - lower vibrational quantum number, or 0 for any
  min_nu0 - minimum wavenumber of the transition, or 0 for any
  max_nu0 - maximum wavenumber of the transition, or 0 for any
  min_s- minimum strength of the transition, or 0 for any
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  Fills the spectral line, ln
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  ln must be defined before calling.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/rd_next.pro)


RD_SPECLINE_HITRAN[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  rd_specline_hitran
 PURPOSE: (one line)
  Read the next line from an open HITRAN file, and fill a spectral line structure
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  rd_specline_hitran, file_pointer, spectral_line
 INPUTS:
  file_pointer - a file pointer to an open HITRAN file. 
  spectral_line - a previously defined spectral line structure
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  Fills the spectral line, spectral_line
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  spectral_line must be defined before calling.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI
  2008 Dec 16 LAY Modified for HITRAN2004
  2013 Aug 08 LAY Modified for HITRAN2012

(See ../spectra/rd_specline_hitran.pro)


RD_SPECLINE_HITRAN[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  rd_specline_hitran
 PURPOSE: (one line)
  Read the next line from an open HITRAN file, and fill a spectral line structure
 DESCRIPTION:
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  rd_specline_hitran, file_pointer, spectral_line
 INPUTS:
  file_pointer - a file pointer to an open HITRAN file. 
  spectral_line - a previously defined spectral line structure
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  Fills the spectral line, spectral_line
 COMMON BLOCKS:
  None
 SIDE EFFECTS:
 RESTRICTIONS:
  spectral_line must be defined before calling.
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/rd_specline_hitran_96.pro)


SPECTRADEMO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  spectrademo
 PURPOSE: (one line)
   Demonstrate the use of the spectra library
 DESCRIPTION:
   A heavily-commented proceedure to show how to use the spectral library
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectrademo
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Prints and plots
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 October, by Leslie Young, SwRI

(See ../spectra/spectrademo.pro)


SPECTRALIB[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  spectralib
 PURPOSE: (one line)
   Add non-standard system variable for use with spectra library
 DESCRIPTION:
   Add the following:
     !hitrandir - the directory containing the HITRAN databases
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectralib
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variables using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 April, by Leslie Young, SwRI
  Added to "layoung" library 2000 October, by Leslie Young, SwRI

(See ../spectra/spectralib.pro)


SPECTRALIB[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  spectralib
 PURPOSE: (one line)
   Add non-standard system variable for use with spectra library
 DESCRIPTION:
   Add the following:
     !hitrandir - the directory containing the HITRAN databases
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectralib
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variables using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 April, by Leslie Young, SwRI
  Added to "layoung" library 2000 October, by Leslie Young, SwRI

(See ../spectra/spectralib2004.pro)


SPECTRALIB[3]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  spectralib
 PURPOSE: (one line)
   Add non-standard system variable for use with spectra library
 DESCRIPTION:
   Add the following:
     !hitrandir - the directory containing the HITRAN databases
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectralib
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variables using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 April, by Leslie Young, SwRI
  Added to "layoung" library 2000 October, by Leslie Young, SwRI
  Added "overwrite" keyword, LAY, 2013 Aug

(See ../spectra/spectralib2008.pro)


SPECTRALIB[4]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  spectralib
 PURPOSE: (one line)
   Add non-standard system variable for use with spectra library
 DESCRIPTION:
   Add the following:
     !hitrandir - the directory containing the HITRAN databases
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectralib
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variables using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2013 Aug, by Leslie Young, SwRI

(See ../spectra/spectralib2012.pro)


SPECTRALIB[5]

[Previous Routine] [List of Routines]
 NAME:
  spectralib
 PURPOSE: (one line)
   Add non-standard system variable for use with spectra library
 DESCRIPTION:
   Add the following:
     !hitrandir - the directory containing the HITRAN databases
 CATEGORY:
  Spectra
 CALLING SEQUENCE:
  spectralib
 INPUTS:
  none
 OPTIONAL INPUT PARAMETERS:
  none
 KEYWORD INPUT PARAMETERS:
  none
 KEYWORD OUTPUT PARAMETERS:
  none
 OUTPUTS:
  None.
 COMMON BLOCKS:
  None.
 SIDE EFFECTS:
  Defines the system variables using defsysv
 RESTRICTIONS:
 PROCEDURE:
 MODIFICATION HISTORY:
  Written 2000 April, by Leslie Young, SwRI
  Added to "layoung" library 2000 October, by Leslie Young, SwRI

(See ../spectra/spectralib_96.pro)