\chapter{Gas absorption}
 \label{sec:absorption}


\starthistory
  2011-07-05 & Added intro and sections on abs in RT and abs
               calculation. Also revised lookup table section. First 
               attempt of a complete absorption
               chapter for ARTS2. \\
  2003-03-28 & Documentation for WSM abs\_fieldCalc
               extended by Stefan Buehler after comment from Sreerekha
               T.\ R.. \\
  2003-03-10 & Lookup tables added by Stefan Buehler.\\
  2002-06-04 & Restarted for ARTS-1-1 by Stefan Buehler.
\stophistory

\startsymbolswithunits
  \Mpi         & $\frac{\mbox{W}}{\mbox{m$^2$ Hz sr}}$ & i\_rte, i\_field, \dots & Intensity\\
  \PpathLng    & m                 &                         & Path length element\rule{0ex}{1.2em}\\
  \aAbsXsec{i} & m$^2$             & xsec                    & Absorption cross section of
                                                               absorbing species $i$\\ 
  \aDen{i}     & m$^{-3}$          &                         & Number density of species $i$\\
  \aAbsCoef{i} & m$^{-1}$          & abs\_scalar\_gas        & Absorption coefficient of
                                                               absorbing species $i$\\
  \AbsCoefTot  & m$^{-1}$          &                         & Total gas absorption coefficient
 \label{symtable:absorption}     
\stopsymbolswithunits

\section{Introduction}

The absorption coefficient describes how strongly the atmosphere is
absorbing (and emitting).  Its unit (in ARTS) is m$^{-1}$.  For a
definition, see for example Equation \ref{eq:lookup:beer}.  Both gases
and particles in the atmosphere absorb, and the total absorption is
the sum of these two contributions. But this chapter is only about the
gas absorption.

When calculating radiative transfer, the local absorption coefficient
at each point in the atmosphere has to be known.  Furthermore, if one
also wants to calculate Jacobians, then the partial absorption
coefficients for different atmospheric components (different
absorption species) also have to be known.   

This chapter discusses different practical aspects of absorption in
ARTS. Section \ref{sec:absorption:abs-rt} explains how absorption is
handled inside radiative transfer calculations.  Section
\ref{sec:absorption:calculating} discusses how absorption is actually
calculated, and how the calculation is set up.  Finally, Section
\ref{sec:absorption:lookup} describes how absorption is stored in a
lookup table, and how it is extracted again.

Here in the User Guide we focus on practical aspects of absorption in
ARTS.  But absorption calculations also have a deep theoretical
background, particularly the line-by-line calculations and the
continuum models.  Some of this background is discussed in \theory,
Chapter \ref{T-sec:abs_theory}. 

\section{Gas absorption in radiative transfer simulations}
\label{sec:absorption:abs-rt}

The interface between the radiative transfer (RT) part of ARTS and the
absorption part of ARTS is very simple, so this will be a short
section.

The interface consists in the agenda
\wsaindex{abs\_scalar\_gas\_agenda}.  RT functions execute this agenda
whenever they need local absorption coefficients.  See the built-in
documentation for the exact input and output arguments of the agenda.
The idea is that input arguments are the local atmospheric conditions
(temperature, pressure, trace gas volume mixing ratios, etc.).  These
are all scalars.

The output of the agenda is a single variable,
\wsvindex{abs\_scalar\_gas}, a matrix with dimensions of frequency
times absorption species.  In a typical ARTS run, this agenda will be
executed many times over, for different points in the atmosphere.

Typical contents of this agenda are as follows:

\subsection{On-the-fly absorption}

\begin{code}
AgendaSet( abs_scalar_gas_agenda )
{
 abs_scalar_gasCalcLBL
}
\end{code}

This will calculate absorption coefficients for the exact local
conditions that are given.  The setup for the calculation (which
absorption species and many other details of the calculation) has to
be done before, outside the agenda.  More information on how to set up
the absorption calculation can be found in Section
\ref{sec:absorption:calculating}.  

\subsection{Absorption from lookup table}

\begin{code}
AgendaSet( abs_scalar_gas_agenda )
{
 abs_scalar_gasExtractFromLookup
}
\end{code}

This will extract absorption coefficients from a pre-calculated lookup
table.  More information on the lookup table and how to generate it
can be found in Section \ref{sec:absorption:lookup}.  

\subsection{Doppler shift}
\label{sec:absorption:doppler}

Both \wsmindex{abs\_scalar\_gasCalcLBL} and
\wsmindex{abs\_scalar\_gasExtractFromLookup} take into account a
possible Doppler shift. However, there is an important difference in
the implementation: For \wsmindex{abs\_scalar\_gasCalcLBL} the shift
is implemented by simply making the line-by-line calculation on a
shifted frequency grid, so the treatment is exact. For
\wsmindex{abs\_scalar\_gasExtractFromLookup}, on the other hand, the
shift is implemented numerically, by shifting the frequency grid and
then linearly interpolating the pre-calculated absorption data.


\section{Calculating gas absorption}
\label{sec:absorption:calculating}

This section deals with calculating gas absorption coefficients in
ARTS.  This typically occurs in two different contexts, either
on-the-fly in the radiative transfer calculation (see Section
\ref{sec:absorption:abs-rt}), or when preparing a gas absorption
lookup table (see Section \ref{sec:absorption:lookup}).  A third and
more unusual case is that the user is only interested in the
absorption itself, for a particular atmospheric scenario, and not in
the radiative transfer simulation.

In all these cases, the same core absorption routines will be used,
although the interfaces differ. 

\subsection{Absorption species}

Absorption is additive, so the total absorption is simply the sum of
all partial absorptions.  And the partial absorption for gases that
have spectral lines can be calculated as a sum over the absorption of
each spectral line, plus some more or less empirical continuum terms.

An absorption species in ARTS is an abstract entity that has a partial
absorption coefficient associated with it, and that usually can be
associated with a volume mixing ratio of a corresponding gas (the VMRs
are stored in variable \wsvindex{vmr\_field}). Total absorption is the
sum of the partial absorptions of all absorption species. Absorption
species are defined in the ARTS controlfile by special `tags', which
are stored in the variable \wsvindex{abs\_species}, and set by the
method \wsmindex{SpeciesSet}.

The absorption species tags describe not only the different absorbers,
but also the model that should be used to calculate the absorption.
There are two types of tags, those for explicit line-by-line
calculations, and those for continua and complete absorption models.
An example of the first kind is `H2O-18', which identifies a
particular isotopologue of water vapor.  An example of the second kind is
`H2O-ForeignContCKDMT100', which identifies a particular continuum
model.  Tags can be combined, if they refer to the same molecule
(different isotopologues are allowed). Even continuum tags can be combined
with explicit line-by-line tags, if they refer to the same molecule.

It should be noted that isotopic ratios are taken into account
implicitly when line strengths are calculated, so even if you make
calculations for individual isotopologues, the VMR numbers in the
variable \wsvindex{vmr\_field} should not be adjusted for the isotopic
ratio. As an example, to make a line-by-line calculation for all ozone
isotopologues, you could represent them in different ways by
\wsmindex{SpeciesSet}.
\begin{code}
a) SpeciesSet(abs_species, 
              ["O3"])
b) SpeciesSet(abs_species, 
              ["O3-666, O3-668, O3-686, O3-667, O3-676"])
c) SpeciesSet(abs_species, 
              ["O3-666", "O3-668", "O3-686", "O3-667", "O3-676"])
\end{code}
Options (a) and (b) are equivalent, you will have one ozone species
that represents are isotopologues, and that will be associated with a
single VMR field in \wsvindex{vmr\_field}.  With option (c) you have
five different ozone species, so you have to supply five different VMR
fields. If those five fields are identical (exactly same numerical
values), you will get the same total absorption as with options (a)
and (b).

Overall, the tag mechanism allows quite complex
absorption setups. The built-in documentation for
\wsmindex{SpeciesSet} gives a detailed explanation of the tag syntax
and some examples.  

It is important to note that there is no `intelligence' in ARTS that
checks that the chosen tag combination makes sense, so the user should
know what she or he is doing, or follow one of the many examples in
the ARTS \fileindex{includes} directory.

\subsection{Explicit line-by-line calculations}

For absorption species with explicit line-by-line calculation the
calculation involves the steps summarized in Table
\ref{tab:absorption:lbl}. The list of variables and methods in the
table is not complete, the idea is to give an overview over the
important ones and show how they work together. Missing are
particularly the input variables that describe the atmospheric
conditions, and continuum description variables, which normally do not
have to be set by the user anyway.

\begin{table}
\footnotesize
\renewcommand{\arraystretch}{1.5}
\begin{tabularx}{\hsize}{l>{\raggedright\arraybackslash\hsize=0.5\hsize}X
                          >{\raggedright\arraybackslash\hsize=1.5\hsize}X}
\hline
\# & Step & Variables and Methods \\
\hline
%---------------------------------------------------------------------
1 & 
Define line shape function(s) to use. &
Variable:
\wsvindex{abs\_lineshape}. \newline
Methods:
\wsmindex{abs\_lineshapeDefine} (same shape for all species),
\wsmindex{abs\_lineshape\_per\_tgDefine} (different shapes for different
species). \\
%---------------------------------------------------------------------
2 &
Read spectral line data (the order of the first two steps does not
matter). &
Variable: \wsvindex{abs\_lines}. \newline
Methods: 
\wsmindex{abs\_linesReadFromArts},
\wsmindex{abs\_linesReadFromHitran},
\wsmindex{abs\_linesReadFromHitran2004},
\wsmindex{abs\_linesReadFromJpl},
\wsmindex{abs\_linesReadFromMytran2} (different methods are for
different catalogue formats). For the ARTS internal format, the
standard method \wsmindex{ReadXML} works also, but does not allow to
select a frequency range, as the others do. \\
%---------------------------------------------------------------------
3 &
Split line data for different absorption species. &
Variable: \wsvindex{abs\_lines\_per\_species}. \newline
Methods:
\wsmindex{abs\_lines\_per\_speciesCreateFromLines}. Alternatively, read
lines from different catalogues for different species directly with
\wsmindex{abs\_lines\_per\_speciesReadFromCatalogues}. \\
%---------------------------------------------------------------------
4 &
Optimize line data. &
Variable: \wsvindex{abs\_lines\_per\_species}. \newline
Methods: Add mirror lines for VVW line shape with
\wsmindex{abs\_lines\_per\_speciesAddMirrorLines} (see \theory,
Chapter \ref{T-sec:abs_theory}). Remove lines that are outside the
line shape cutoff with \wsmindex{abs\_lines\_per\_speciesCompact}. \\
%---------------------------------------------------------------------
\multicolumn{3}{>{\raggedright\arraybackslash\hsize=2\hsize}X}{The
  first four steps are preparation, and typically 
  have to be done only once per ARTS run. The fifth step is the actual
  absorption calculation, which can occur in different contexts.} \\
%---------------------------------------------------------------------
5a &
Calculate absorption on-the-fly. &
Agenda: \wsaindex{abs\_scalar\_gas\_agenda}. \newline
Variable: \wsvindex{abs\_scalar\_gas}. \newline
Methods: \wsmindex{abs\_scalar\_gasCalcLBL}. Alternative:
\wsmindex{abs\_scalar\_gasExtractFromLookup} (extract absorption from
pre-calculated lookup table). \\
%---------------------------------------------------------------------
5b &
Calculate absorption lookup table. &
Variable: \wsvindex{abs\_lookup}. \newline
Methods: \wsvindex{abs\_lookupCreate}. Alternative: Load lookup table
from file with \wsmindex{ReadXML}, it then has to be adapted to the
current calculation (and checked) with \wsmindex{abs\_lookupAdapt}. \\ 
%---------------------------------------------------------------------
5c &
Just calculate absorption (not for RT purposes). &
Variable: \wsvindex{abs\_coef}. \newline
Methods, high level: \wsvindex{abs\_coefCalc},
\wsmindex{abs\_coefCalcSaveMemory}. \newline
Methods, low level: \newline
\wsmindex{abs\_xsec\_per\_speciesInit}, \newline
\wsmindex{abs\_xsec\_per\_speciesAddLines} (the core method for the
actual line-by-line calculation, used internally by all higher level methods),\newline
\wsmindex{abs\_xsec\_per\_speciesAddConts} (add continua or complete absorption
models, see Section \ref{sec:absorption:continua}),\newline
\wsmindex{abs\_coefCalcFromXsec} (calculate absorption coefficients
from absorption cross-sections). \\
%---------------------------------------------------------------------
\hline
\end{tabularx}
\caption{Steps for line-by-line absorption calculation, and associated
    ARTS workspace variables and methods.}
\label{tab:absorption:lbl}
\end{table}

Chapter \ref{T-sec:abs_theory} of \theory\ contains more information on
the internal format of the spectral line data.  It also contains
theoretical background for the calculation itself.  

See the built-in documentation of the various variables and methods
for more information.  It is on purpose not repeated here, for better
maintainability.  If you are viewing this pdf file on a computer, just
click on a variable or method name to get to the corresponding
built-in documentation. 

\subsection{Continua and complete absorption models}
\label{sec:absorption:continua}

ARTS includes many absorption continua and complete absorption models,
which are described in \theory, Chapter \ref{T-sec:abs_theory}.  The
common property of all of these is that they do not use the standard
ARTS line-by-line calculation mechanism.  They may include spectral
lines, but then these lines are hardwired into the absorption model
itself.  Consequently, the first four steps in Table
\ref{tab:absorption:lbl} are not needed for these models.  

The pure continua are intended to be used together with an explicit ARTS
line-by-line calculation, the complete models are intended to be used alone.
To select a continuum or complete absorption model, simply use the
corresponding tag with \wsmindex{SpeciesSet}.  Currently available
models are listed in Table \ref{tab:absorption:continua}.

\begin{table}
\centering
\footnotesize
\begin{tabular}{ll}
\hline  
Class & Tag name \\
\hline  
%---------------------------------------------------------------------

Water vapor continua & H2O-SelfContStandardType \\
& H2O-ForeignContStandardType \\
& H2O-ForeignContMaTippingType \\
& H2O-ContMPM93 \\
& H2O-SelfContCKDMT100 \\
& H2O-ForeignContCKDMT100 \\
& H2O-SelfContCKD222 \\
& H2O-ForeignContCKD222 \\
& H2O-SelfContCKD242 \\
& H2O-ForeignContCKD242 \\
& H2O-SelfContCKD24 \\
& H2O-ForeignContCKD24 \\
& H2O-ForeignContATM01 \\[1ex]

Complete water vapor models & H2O-CP98 \\
& H2O-MPM87 \\
& H2O-MPM89 \\
& H2O-MPM93 \\
& H2O-PWR98 \\[1ex]

Carbon dioxide continua & CO2-CKD241 \\
& CO2-CKDMT100 \\
& CO2-SelfContPWR93 \\
& CO2-ForeignContPWR93 \\[1ex]

Oxygen continua & O2-CIAfunCKDMT100 \\
& O2-v0v0CKDMT100 \\
& O2-v1v0CKDMT100 \\
& O2-SelfContStandardType \\
& O2-SelfContMPM93 \\
& O2-SelfContPWR93 \\[1ex]

Complete oxygen models & O2-PWR98 \\
& O2-PWR93 \\
& O2-PWR88 \\
& O2-MPM93 \\
& O2-MPM92 \\
& O2-MPM89 \\
& O2-MPM87 \\
& O2-MPM85 \\[1ex]

Nitrogen continua & N2-SelfContMPM93 \\
& N2-SelfContPWR93 \\
& N2-SelfContStandardType \\
& N2-SelfContBorysow \\
& N2-CIArotCKDMT100 \\
& N2-CIAfunCKDMT100 \\
& N2-DryContATM01 \\[1ex]

Condensate absorption models & liquidcloud-MPM93 \\
& icecloud-MPM93 \\
& rain-MPM93 \\

%---------------------------------------------------------------------
\hline  
\end{tabular}
\caption{ARTS continua and complete absorption models. The molecular
  species can be inferred from the start of the tag name.  See
  \theory, Chapter \ref{T-sec:abs_theory} for more information on the
  various models.}
\label{tab:absorption:continua}
\end{table}

The names should be fairly self-explanatory and can be used to find
background information on the various models in \theory.  The
condensate absorption models are a bit special and perhaps need some
extra explanation. They are absorption parameterizations by Liebe, and
allow the inclusion of condensate in the (rare) cases where scattering
is not important. Their general applicability is therefore fairly limited.

The behavior of the continua and complete absorption models can be
modified by passing them some additional parameters, stored in the
variables \wsvindex{abs\_cont\_names}, \wsvindex{abs\_cont\_models},
and \wsvindex{abs\_cont\_parameters}. Basically,
\builtindoc{abs\_cont\_names} identifies the model,
\builtindoc{abs\_cont\_models} contains switches that select different
behavior (for example taking only the lines, or only the continuum
part of a complete model), and \builtindoc{abs\_cont\_parameters} can
contain numerical parameters. 

Yes, the nomenclature for these additional continuum parameters,
particularly \builtindoc{abs\_cont\_models}, is confusing. However,
most users will never have to deal with these variables
explicitly. They are set to default values in the include file
\fileindex{continua.arts}. Users should therefore always include this file  at
the start of their controlfiles with
\begin{code}
  INCLUDE "continua.arts"
\end{code}
Unless you work on continuum model development of verification, you
should never have to modify these default settings.

The core method to calculate continua and complete absorption models
is \wsmindex{abs\_xsec\_per\_speciesAddConts}.  Users normally do not
have to call this method explicitly, since it is used implicitly by
higher level methods, such as \wsmindex{abs\_coefCalc}.


\section{The gas absorption lookup table}
\label{sec:absorption:lookup}

\subsection{Introduction}

Calculating gas absorption coefficient spectra in a line by line way
is quite an expensive thing to do. Sometimes contributions from
thousands or ten thousands of lines have to be summed up. To make
matters worse, this has to be done over and over again for each point
in the atmosphere.

Actually, the absorption coefficient depends not directly on position,
but on the atmospheric state variables:
\begin{itemize}
\item Pressure
\item Temperature
\item Trace gas concentrations
\end{itemize}

The basic idea of the lookup table is to pre-calculate absorption for
discrete combinations of these variables, and then use interpolation
to extract absorption for the actual atmospheric state.

The lookup table concept and implementation is described only very
briefly here in the user guide. Much more details and validation
results can be found in \citet{buehler:absor:11}.

\subsection{Lookup table concept}

The fundamental law of Beer\footnote{According to C.\ Melsheimer,
  Beer's law is: `The taller the glass, the darker the brew, the less
  the amount of light that comes through'. He might have been quoting
  someone else, there, but I do not know whom.} states that extinction
is proportional to the intensity of radiation, and to the amount of
absorbing substance:
\begin{equation}
  \label{eq:lookup:beer}
  \frac{d \Mpi}{d \PpathLng}
  =
  - \Mpi \sum_i \aAbsXsec{i} \aDen{i}
  =
  - \Mpi \sum_i \aAbsCoef{i}
  =
  - \Mpi \AbsCoefTot
\end{equation}
where the meaning of the symbols is defined in Table
\ref{symtable:absorption}. 

As one can see from the above equation, a large part of the pressure
dependence of \aAbsCoef{i} comes from \aDen{i}. (If one assumes
constant volume mixing ratio of species $i$, then \aDen{i} is
proportional to the total pressure according to the ideal gas law.) 
Therefore, the lookup table should store \AbsXsec, rather than
\AbsCoef. We then have to worry only about the dependence of \AbsXsec\
on the atmospheric state variables.

\subsubsection{Pressure dependence}

The pressure dependence is the most important dependence of
\AbsXsec. It comes from the fact that the width of the line shape
functions is governed by pressure broadening. We have to store the
\aAbsXsec{i} on some pressure grid and interpolate if we need them for
intermediate values.

\subsubsection{Temperature dependence}

This is the next effect to take into account. Both the line widths and
the line intensities depend on temperature. Of course, only certain
combinations of pressure and temperature occur in the Earth's
atmosphere. Hence, storing the \aAbsXsec{i} in a two dimensional table
as a function of pressure and temperature would waste a lot of space.
Instead, they are stored for a reference temperature and set of
temperature perturbations for each pressure level. E.g., if the set of
perturbations is $[-10,\, 0,\, +10]$, then the \aAbsXsec{i} would be stored
for three different temperatures for each pressure level:
$[T_\mathrm{R}(p)-10\,\mbox{K},\, T_\mathrm{R}(p),\, T_\mathrm{R}(p)+10\,\mbox{K}]$, where
$T_\mathrm{R}(p)$ is the reference temperature for each pressure level.

\subsubsection{Trace gas concentration dependence}

This is a second order effect. The width of the line depends not only
on total pressure, but also on the partial pressure of one or more
trace gases. In theory this is always the case, because the broadening
is different for each combination of collision partners. However, in
practice trace gas concentrations in the Earth's atmosphere are
normally so low that this can be safely neglected. An important
exception is water vapor in the lower troposphere, which can reach
quite high volume mixing ratios. Therefore, the effect of water vapor
mixing ratio on water vapor absorption (self broadening), as well as
on oxygen absorption (for example according to the parameterization by
\citet{pwr:93}) may not be negligible.

This is handled by storing water vapor perturbations.  In contrast to
the temperature case, the water vapor perturbations are
multiplicative, not additive.  Hence, if the set of perturbations is
$[0,\, 1,\, 10]$, then the \aAbsXsec{i} would be stored for three
different H$_2$O VMRs for each pressure/temperature grid point: $[0,\,
\mathrm{VMR_R}(p,T),\, 10*\mathrm{VMR_R}(p,T)]$, where
$\mathrm{VMR_R}(p,T)$ is the reference water vapor VMR for each
pressure/temperature grid point.

\subsubsection{Interpolation}

The interpolation scheme is quite important for the accuracy of the
lookup table.  In particular, higher order interpolation gives
considerably better accuracy for the same table grid spacing.  The
interpolation orders in the ARTS implementation of the lookup table
can be chosen by the user.  The settings that are recommended, and set
as defaults in file \fileindex{general.arts}, are quite high
interpolation orders of 5, 7, and 5 for pressure, temperature, and
water vapor, respectively.  Such high orders are only appropriate
because the function to be interpolated (the \aAbsXsec{i}) is very smooth.

\subsection{Workspace variables and methods}

The gas absorption lookup table is implemented by the class
\typeindex{GasAbsLookup}, which resides in the files
\fileindex{gas\_abs\_lookup.cc} and \fileindex{gas\_abs\_lookup.h}.

The lookup table itself is stored in the workspace variable
\wsvindex{abs\_lookup}.  It can be generated with the method
\wsmindex{abs\_lookupCreate}.  ARTS also includes some methods that
automatically set input parameters for \builtindoc{abs\_lookupCreate},
such as grid ranges and reference profiles of pressure, temperature,
and trace gas concentrations.  These methods are
\wsmindex{abs\_lookupSetup}, \wsmindex{abs\_lookupSetupBatch}, and
\wsmindex{abs\_lookupSetupWide}.  The first two will take into account
the actual atmospheric state, or set of atmospheric states, for the
calculation. The third alternative simply sets up a table that should
cover most reasonable atmospheric conditions.
\citet{buehler:absor:11} contains more information on these setup
methods.

Alternatively, the table can be loaded from a file with
\builtindoc{ReadXML}.  After loading, the method
\wsmindex{abs\_lookupAdapt} has to be called. It will make sure that
the lookup table agrees exactly with your calculation. For example, it
has to check that the frequencies that you want to use are included in
the set of frequencies for which the table has been calculated.  There
is no interpolation in frequency. This is on purpose, because the gas
absorption spectrum is the quantity that changes most rapidly as a
function of frequency. Frequency interpolation here could be quite
dangerous. The \builtindoc{abs\_lookupAdapt} method also sorts the
species in exactly the same way that they occur in your
calculation. It sets the variable \wsvindex{abs\_lookup\_is\_adapted}
to flag that the table is now ok. 

When the table has been successfully adapted, one can extract
absorption coefficients with the method
\wsmindex{abs\_scalar\_gasExtractFromLookup}. This will extract
\emph{absorption coefficients}, i.e., the cross sections stored in the
table are not only interpolated to the desired atmospheric conditions,
but are also multiplied with the partial number density of the present
absorbers.

The \builtindoc{abs\_scalar\_gasExtractFromLookup} method is meant to
be used inside the agenda \wsaindex{abs\_scalar\_gas\_agenda},
which is used in several places where absorption coefficients are
needed, both inside the scattering box and outside. 

It is also possible to calculate absorption for the entire atmospheric
field.  This is done by the method \wsmindex{abs\_fieldCalc}, and is
useful for testing and plotting gas absorption. (For RT calculations,
gas absorption is calculated or extracted locally, therefore there is
no need to calculate a global field. But the
\builtindoc{abs\_fieldCalc} method is handy for easy plotting of
absorption vs. pressure, for example.)

Because of the different usage contexts, the method
\builtindoc{abs\_scalar\_gasExtractFromLookup} can calculate absorption
either for all frequencies in the frequency grid (input variable
\wsvindex{f\_index}$<$0), or just for the frequency indicated by the
input variable \builtindoc{f\_index} (\builtindoc{f\_index}$>=$0).


%%% Local Variables: 
%%% mode: latex 
%%% TeX-master: "uguide"
%%% End:

% LocalWords:  Atmosperic
