ARTS
2.3.1285(git:92a29ea9-dirty)
|
LineRecord class for managing line catalog data. More...
#include <cmath>
#include <stdexcept>
#include "array.h"
#include "constants.h"
#include "lineshapemodel.h"
#include "matpackI.h"
#include "messages.h"
#include "mystring.h"
#include "quantum.h"
#include "wigner_functions.h"
#include "zeemandata.h"
Go to the source code of this file.
Classes | |
class | LineRecord |
Typedefs | |
typedef Array< LineRecord > | ArrayOfLineRecord |
Holds a list of spectral line data. More... | |
typedef Array< Array< LineRecord > > | ArrayOfArrayOfLineRecord |
Holds a lists of spectral line data for each tag group. More... | |
Enumerations | |
enum | MirroringType : Index { MirroringType::None, MirroringType::Lorentz, MirroringType::SameAsLineShape, MirroringType::Manual } |
Spectral line catalog data. More... | |
enum | LineNormalizationType : Index { LineNormalizationType::None, LineNormalizationType::VVH, LineNormalizationType::VVW, LineNormalizationType::RosenkranzQuadratic } |
enum | LinePopulationType : Index { LinePopulationType::ByLTE, LinePopulationType::ByVibrationalTemperatures, LinePopulationType::ByPopulationDistribution } |
Functions | |
ostream & | operator<< (ostream &os, const LineRecord &lr) |
Output operator for LineRecord. More... | |
LinePopulationType | LinePopulationTypeFromString (const String &in) |
MirroringType | MirroringTypeFromString (const String &in) |
LineNormalizationType | LineNormalizationTypeFromString (const String &in) |
LineRecord class for managing line catalog data.
Definition in file linerecord.h.
typedef Array<Array<LineRecord> > ArrayOfArrayOfLineRecord |
Holds a lists of spectral line data for each tag group.
Dimensions: (tag_groups.nelem()) (number of lines for this tag)
Definition at line 1228 of file linerecord.h.
typedef Array<LineRecord> ArrayOfLineRecord |
Holds a list of spectral line data.
Definition at line 1223 of file linerecord.h.
|
strong |
Enumerator | |
---|---|
None | |
VVH | |
VVW | |
RosenkranzQuadratic |
Definition at line 210 of file linerecord.h.
|
strong |
Enumerator | |
---|---|
ByLTE | |
ByVibrationalTemperatures | |
ByPopulationDistribution |
Definition at line 220 of file linerecord.h.
|
strong |
Spectral line catalog data.
Below is a description of the ARTS catalogue format. The file starts with the usual XML header:
<?xml version="1.0"?> <arts format="ascii" version="1"> <ArrayOfLineRecord version="ARTSCAT-3" nelem="8073">
The ARTSCAT version number is there to keep track of catalogue format changes. The "nelem" tag contains the total number of lines in the file.
The file ends with the usual XML closing tags:
</ArrayOfLineRecord> </arts>
In-between the header and the footer are the actual spectroscopic data. Each new entry, corresponding to one spectral line, starts with the `@' character.
The line catalogue should not have any fixed column widths because the precision of the parameters should not be limited by the format. The catalogue can then be stored as binary or ASCII. In the ASCII version the columns are separated by one or more blanks. The line format is then specified by only the order and the units of the columns. As the catalogue entry for each transition can be quite long, it can be broken across lines in the ASCII file. That is why each new transition is marked with a `@' character.
The first column will contain the species and isotopologue, following the naming scheme described below. Scientific notation is allowed, e.g. 501.12345e9.
Note that starting with ARTSCAT-2, the intensity is per molecule, i.e., it does not contain the isotopologue ratio. This is similar to JPL, but different to HITRAN.
Currently, ARTS is capable of handling ARTSCAT versions 3 and 4. Different versions can be handled simultaneously. The line format of ARTSCAT-3 (for ARTSCAT-4 see further below) is:
Col Variable Label Unit Comment ------------------------------------------------------------------ 0 `@' ENTRY - marks start of entry 1 species\&isotopologue tag NAME - e.g. O3-666 2 center frequency F Hz e.g. 501.12345e9 3 pressure shift of F PSF Hz/Pa 4 line intensity I0 Hz*m^2 per isotopologue, not per species 5 reference temp. for I0 T_I0 K 6 lower state energy ELOW J 7 air broadened width AGAM Hz/Pa values around 20000 Hz/Pa 8 self broadened width SGAM Hz/Pa 9 AGAM temp. exponent NAIR - values around .5 10 SGAM temp. exponent NSELF - 11 ref. temp. for AGAM, SGAM T_GAM K 12 number of aux. parameters N_AUX - 13 auxiliary parameter AUX1 - 14 ... 15 error for F DF Hz 16 error for I0 DI0 % 17 error for AGAM DAGAM % 18 error for SGAM DSGAM % 19 error for NAIR DNAIR % 20 error for NSELF DNSELF % 21 error for PSF DPSF %
The parameters 0-12 must be present, the others can be missing, since they are not needed for the calculation.
For the error fields (15-21), a -1 means that no value exist.
A valid ARTS (CAT-3) line file would be:
<?xml version="1.0"?> <arts format="ascii" version="1"> <ArrayOfLineRecord version="ARTSCAT-3" nelem="2"> @ O3-676 80015326542.0992 0 3.70209114155527e-19 296 7.73661776567701e-21 21480.3182341969 28906.7092490501 0.76 0.76 296 0 300000 0.1 0.1 0.1 0.2 -1 -1.24976056865038e-11 @ O3-676 80015476438.3282 0 3.83245786810611e-19 296 7.73661577919822e-21 21480.3182341969 28906.7092490501 0.76 0.76 296 0 300000 0.1 0.1 0.1 0.2 -1 -1.24975822742335e-11 </ArrayOfLineRecord> </arts>
Some species need special parameters that are not needed by other species (for example overlap coefficients for O2). In the case of oxygen two parameters are sufficient to describe the overlap, but other species, e.g., methane, may need more coefficients. The default for N_AUX
is zero. In that case, no further AUX
fields are present. [FIXME: Check Oxygen.]
The line format of ARTSCAT-4 is:
Col Variable Label Unit Comment ------------------------------------------------------------------ 00 `@' ENTRY - marks start of entry 01 species\&isotopologue tag NAME - e.g. O3-666 02 center frequency F Hz e.g. 501.12345e9 03 line intensity I0 Hz*m^2 per isotopologue, not per species 04 reference temp. for I0 T_I0 K 05 lower state energy ELOW J 06 Einstein A-coefficient A 1/s where available from HITRAN 07 Upper state stat. weight G_upper - where available from HITRAN 08 Lower state stat. weight G_lower - where available from HITRAN 09 broadening parameter self GAMMA_self Hz/Pa GAM have values around 20000 Hz/Pa 10 broadening parameter N2 GAMMA_N2 Hz/Pa 11 broadening parameter O2 GAMMA_O2 Hz/Pa 12 broadening parameter H2O GAMMA_H2O Hz/Pa 13 broadening parameter CO2 GAMMA_CO2 Hz/Pa 14 broadening parameter H2 GAMMA_H2 Hz/Pa 15 broadening parameter He GAMMA_He Hz/Pa 16 GAM temp. exponent self N_self - N have values around .5 17 GAM temp. exponent N2 N_N2 - 18 GAM temp. exponent O2 N_O2 - 19 GAM temp. exponent H2O N_H2O - 20 GAM temp. exponent CO2 N_CO2 - 21 GAM temp. exponent H2 N_H2 - 22 GAM temp. exponent He N_He - 23 F pressure shift N2 DELTA_N2 Hz/Pa DELTA have values around 0 Hz/Pa 24 F pressure shift O2 DELTA_O2 Hz/Pa 25 F pressure shift H2O DELTA_H2O Hz/Pa 26 F pressure shift CO2 DELTA_CO2 Hz/Pa 27 F pressure shift H2 DELTA_H2 Hz/Pa 28 F pressure shift He DELTA_He Hz/Pa 29 Vibrational and rotational VRA - contains (coded) quantum numbers. assignments ------------------------------------------------------------------
Parameters 0-28 must be present. Coding conventions of parameter 29 are species specific. The definition is given in arts-xml-data/spectroscopy/perrin/ARTSCAT-4_Col29_Conventions.txt. The names of the private members and public access functions of this data structure follow the above table. The only difference is that underscores are omited and only the first letter of each name is capitalized. This is for consistency with the notation elsewhere in the program. \author Stefan Buehler
Enumerator | |
---|---|
None | |
Lorentz | |
SameAsLineShape | |
Manual |
Definition at line 201 of file linerecord.h.
LineNormalizationType LineNormalizationTypeFromString | ( | const String & | in | ) |
Definition at line 2818 of file linerecord.cc.
References LineRecord::mlinenorm, None, RosenkranzQuadratic, VVH, and VVW.
LinePopulationType LinePopulationTypeFromString | ( | const String & | in | ) |
Definition at line 2848 of file linerecord.cc.
References ByLTE, ByPopulationDistribution, ByVibrationalTemperatures, and LineRecord::mpopulation.
Referenced by nlteSetByQuantumIdentifiers().
MirroringType MirroringTypeFromString | ( | const String & | in | ) |
Definition at line 2788 of file linerecord.cc.
References Lorentz, Manual, LineRecord::mmirroring, None, and SameAsLineShape.
ostream& operator<< | ( | ostream & | os, |
const LineRecord & | lr | ||
) |
Output operator for LineRecord.
The result should look like a catalogue line.
Definition at line 2711 of file linerecord.cc.
References LineRecord::A(), LineRecord::CutOff(), LineRecord::Elow(), LineRecord::F(), LineRecord::G_lower(), LineRecord::G_upper(), LineRecord::GetLineNormalizationType(), LineRecord::GetLineNormalizationTypeString(), LineRecord::GetLineShapeModel(), LineRecord::GetMirroringType(), LineRecord::GetMirroringTypeString(), LineRecord::I0(), LineRecord::LineMixingLimit(), LineRecord::LowerQuantumNumbers(), LineRecord::Name(), Absorption::nelem(), QuantumNumbers::nNumbers(), precision, _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), LineRecord::Ti0(), LineRecord::UpperQuantumNumbers(), LineRecord::Version(), and LineRecord::ZeemanModel().