#include <math.h>
#include "arts.h"
#include "matpackI.h"
#include "array.h"
#include "absorption.h"
Go to the source code of this file.
This file contains both the lineshape functions themselves and the function define_lineshape_data which sets the lineshape lookup data.
Definition in file lineshapes.cc.
Definition at line 564 of file lineshapes.cc.
Definition at line 942 of file lineshapes.cc.
Definition at line 155 of file lineshapes.cc.
Chi factors according to Cousin
The CO2-CO2 self-broadening is neglected. Broadening factors for both O2 and N2 are considered, assuming 79% N2 and 21% O2.
chi | Out: The chi factor | |
df | (f-f0) in Hz. |
Definition at line 1796 of file lineshapes.cc.
void define_lineshape_data | ( | ) |
Definition at line 2064 of file lineshapes.cc.
void define_lineshape_norm_data | ( | ) |
Definition at line 2161 of file lineshapes.cc.
void lineshape_CO2_drayson | ( | Vector & | ls, | |
Vector & | X, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
A CO2 IR line shape.
ls | The shape function. | |
X | Auxillary parameter, only used in Voigt fct. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. (Not used.) | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
Definition at line 1892 of file lineshapes.cc.
void lineshape_CO2_lorentz | ( | Vector & | ls, | |
Vector & | , | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | , | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
A CO2 IR line shape.
ls | The shape function. | |
X | Auxillary parameter, only used in Voigt fct. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. (Not used.) | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
Definition at line 1846 of file lineshapes.cc.
void lineshape_doppler | ( | Vector & | ls, | |
Vector & | , | |||
Numeric | f0, | |||
Numeric | , | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Doppler line shape.
ls | The shape function. | |
x | Auxillary parameter, only used in Voigt fct. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. (Not used.) | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
Definition at line 122 of file lineshapes.cc.
void lineshape_lorentz | ( | Vector & | ls, | |
Vector & | , | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | , | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Lorentz line shape. This is a quick and dirty implementation.
ls | The shape function. | |
X | Auxillary parameter, only used in Voigt fct. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. (Not used.) | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
Definition at line 83 of file lineshapes.cc.
void lineshape_no_shape | ( | Vector & | , | |
Vector & | , | |||
Numeric | , | |||
Numeric | , | |||
Numeric | , | |||
VectorView | , | |||
const | Index | |||
) |
The dummy line shape. This lineshape does nothing. It only exists, because formally you have to specify a lineshape also for continuum tags. It has to have the same arguments as all the other lineshapes, though...
ls | The shape function. | |
X | Auxillary parameter, only used in Voigt fct. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. (Not used.) | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
runtime_error | This exception is always thrown when the function is called. |
Definition at line 57 of file lineshapes.cc.
void lineshape_norm_linear | ( | Vector & | fac, | |
Numeric | f0, | |||
VectorView | f_mono, | |||
const | Numeric, | |||
const Index | nf | |||
) |
Linear normalization factor of the lineshape function with f/f0.
fac | Normalization factor to the lineshape function. |
f0 | Line center frequency. | |
f_mono | The frequency grid. | |
T | Temperature (unused here) | |
nf | Dimension of f_mono. |
Definition at line 1964 of file lineshapes.cc.
void lineshape_norm_no_norm | ( | Vector & | fac, | |
Numeric | , | |||
VectorView | f_mono, | |||
const | Numeric, | |||
const Index | nf | |||
) |
No normalization of the lineshape function.
fac | Normalization factor to the lineshape function. |
f0 | Line center frequency. | |
f_mono | The frequency grid. | |
T | Temperature (unused here) | |
nf | Dimension of f_mono. |
Definition at line 1936 of file lineshapes.cc.
void lineshape_norm_quadratic | ( | Vector & | fac, | |
Numeric | f0, | |||
VectorView | f_mono, | |||
const | Numeric, | |||
const Index | nf | |||
) |
Quadratic normalization factor of the lineshape function with (f/f0)^2.
fac | Normalization factor to the lineshape function. |
f0 | Line center frequency. | |
f_mono | The frequency grid. | |
T | Temperature (unused here) | |
nf | Dimension of f_mono. |
Definition at line 1991 of file lineshapes.cc.
void lineshape_norm_VVH | ( | Vector & | fac, | |
Numeric | f0, | |||
VectorView | f_mono, | |||
const Numeric | T, | |||
const Index | nf | |||
) |
Van Vleck Huber normalization factor of the lineshape function with (f*tanh(h*f/(2*k*T))) / (f0*tanh(h*f0/(2*k*T))). The denominator is a result of catalogue intensities. See P. Rayer, The VVH and VVW Spectral Functions, Atmospheric Millimeter and Sub-Millimeter Wave Radiative Transfer Modeling II, Editors: P. Eriksson, S. Buehler, Berichte aus derm Institut fuer Umweltphysik, Band 4, 2001.
fac | Normalization factor to the lineshape function. |
f0 | Line center frequency. | |
f_mono | The frequency grid. | |
T | Temperature | |
nf | Dimension of f_mono. |
Definition at line 2027 of file lineshapes.cc.
void lineshape_rosenkranz_voigt_drayson | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Rosenkranz overlap routine. Includes a Voigt line shape (drayson) for high altitudes and a lorentz one with overlap correction for lower altitudes.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. Here used as well to pass parameters. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
About 'lineshape_rosenkranz_voigt_drayson': The program was originally written by P.W. Rosenkranz, and translated to c by A. von Engeln.
Definition at line 1688 of file lineshapes.cc.
void lineshape_rosenkranz_voigt_kuntz6 | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Rosenkranz overlap routine. Includes a Voigt line shape (kuntz6) for high altitudes and a lorentz one with overlap correction for lower altitudes.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. Here used as well to pass parameters. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
About 'lineshape_rosenkranz_voigt_kuntz6': The program was originally written by P.W. Rosenkranz, and translated to c by A. von Engeln.
Definition at line 1580 of file lineshapes.cc.
void lineshape_voigt_drayson | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Voigt line shape. Drayson approximation of the Voigt line shape.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
int voigt_vector(int nx, Numeric *X, Numeric Y, Numeric *Z, Numeric fac)
direct translation of the FORTRAN algorithm given in Drayson, S. R., Rapid Computation of the Voigt Profile, J. Quant. Spectrosc. Radiat. Transfer, Vol. 16, pp. 611-614, 1976 by Bjoern-Martin Sinnhuber, 13.Mar.96 in Ny-Aalesund, Spitsbergen.
Modified for vector calculation of a frequency array:
-------------------------------------------------------------------- int nx (in) number of frequencies double *X (in) distance from line center in units of (Doppler halfwidths times sqrt(ln 2) ) double Y (in) Ratio of the collision halfwidth to the ( Doppler halfwidth times sqrt(ln2) ) double *Z (out) return array of voigt double fac (in) no function, included to be consistent with the other voigt profile calculations --------------------------------------------------------------------
23.02.98 AvE
Replaced nx by nf, Z by ls, X by x, and multiplied ls with the factor fac.
Definition at line 1414 of file lineshapes.cc.
void lineshape_voigt_kuntz3 | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Voigt line shape. Kuntz approximation of the Voigt line shape.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
int voigt3 ( long nx, float *x, float y, float *prb, float fak )
Calculates the Voigt-Function times the user-definied value fac with a relative accuracy better than 2*10-3.
If this subroutine is called several times with the same parameter y the numerically expensive coefficents a1..t8 are only calculated once thus further accelerating the algorithm
-------------------------------------------------------------------- x(nx) (in) :Distance from line center in units of Doppler :halfwidths y (in) :Ratio of the Doppler halfwidth to the Lorentz :halfwidth prb (out) :voigt-function times fak fak (in) :factor to be specified by the user -------------------------------------------------------------------- author: M. Kuntz, Institut fuer Meteorologie und Klimaforschung, Forschungszentrum Karlsruhe, Postfach 3640, 76021 Karlsruhe, Germany. email: kuntz@imk.fzk.de
About 'voigt3' : The program was originally written by M. Kuntz in Fortran77 but has been translated into C by Dietrich Feist (f2c) and into C++ by Oliver Lemke and Axel von Engeln. fak is removed from program code. Replaced nx by nf. Replaced prb by ls. Multiplied ls with the factor fac.
Definition at line 655 of file lineshapes.cc.
void lineshape_voigt_kuntz4 | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Voigt line shape. Kuntz approximation of the Voigt line shape.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. (Not used.) | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
int voigt4 ( long nx, float *x, float y, float *prb, float fak )
Calculates the Voigt-Function times the user-definied value fac with a relative accuracy better than 2*10-4.
If this subroutine is called several times with the same parameter y the numerically expensive coefficents a1..t8 are only calculated once thus further accelerating the algorithm
-------------------------------------------------------------------- x(nx) (in) :Distance from line center in units of Doppler :halfwidths y (in) :Ratio of the Doppler halfwidth to the Lorentz :halfwidth prb (out) :voigt-function times fak fak (in) :factor to be specified by the user -------------------------------------------------------------------- author: M. Kuntz, Institut fuer Meteorologie und Klimaforschung, Forschungszentrum Karlsruhe, Postfach 3640, 76021 Karlsruhe, Germany. email: kuntz@imk.fzk.de
About 'voigt4' : The program was originally written by M. Kuntz in Fortran77 but has been translated into C by Dietrich Feist (f2c) and into C++ by Oliver Lemke and Axel von Engeln. fak is removed from program code. Replaced nx by nf. Replaced prb by ls. Multiplied ls with the factor fac.
Definition at line 1029 of file lineshapes.cc.
void lineshape_voigt_kuntz6 | ( | Vector & | ls, | |
Vector & | x, | |||
Numeric | f0, | |||
Numeric | gamma, | |||
Numeric | sigma, | |||
VectorView | f_mono, | |||
const Index | nf | |||
) |
The Voigt line shape. Kuntz approximation of the Voigt line shape.
ls | The shape function. | |
x | Auxillary parameter to store frequency grid. |
f0 | Line center frequency. | |
gamma | The pressure broadening parameter. | |
sigma | The Doppler broadening parameter. | |
f_mono | The frequency grid. | |
nf | Dimension of f_mono. |
int voigt ( long nx, float *x, float y, float *prb, float fak )
Calculates the Voigt-Function times the user-definied value fac with a relative accuracy better than 2*10-6.
If this subroutine is called several times with the same parameter y the numerically expensive coefficents a1..t8 are only calculated once thus further accelerating the algorithm
-------------------------------------------------------------------- x(nx) (in) :Distance from line center in units of Doppler :halfwidths y (in) :Ratio of the Doppler halfwidth to the Lorentz :halfwidth prb (out) :voigt-function times fak fak (in) :factor to be specified by the user -------------------------------------------------------------------- author: M. Kuntz, Institut fuer Meteorologie und Klimaforschung, Forschungszentrum Karlsruhe, Postfach 3640, 76021 Karlsruhe, Germany. email: kuntz@imk.fzk.de
About 'voigt' : The program was originally written by M. Kuntz in Fortran77 but has been translated into C by Dietrich Feist (f2c) and into C++ by Oliver Lemke and Axel von Engeln. fak is removed from program code. Replaced nx by nf. Replaced prb by ls. Multiplied ls with the factor fac.
Definition at line 239 of file lineshapes.cc.
The lookup data for the different lineshapes.
Definition at line 2062 of file lineshapes.cc.
The lookup data for the different normalization factors to the lineshapes.
Definition at line 2159 of file lineshapes.cc.