ARTS  2.3.1285(git:92a29ea9-dirty)
Absorption Namespace Reference

Namespace to contain things required for absorption calculations. More...

Namespaces

 PredefinedModel
 

Classes

class  Lines
 
class  SingleLine
 Computations and data for a single absorption line. More...
 
struct  SingleLineExternal
 Single line reading output. More...
 

Enumerations

enum  MirroringType : Index { MirroringType::None, MirroringType::Lorentz, MirroringType::SameAsLineShape, MirroringType::Manual }
 Describes the type of mirroring line effects. More...
 
enum  NormalizationType : Index { NormalizationType::None, NormalizationType::VVH, NormalizationType::VVW, NormalizationType::RosenkranzQuadratic }
 Describes the type of normalization line effects. More...
 
enum  PopulationType : Index {
  PopulationType::ByLTE, PopulationType::ByNLTEVibrationalTemperatures, PopulationType::ByNLTEPopulationDistribution, PopulationType::ByHITRANRosenkranzRelmat,
  PopulationType::ByHITRANFullRelmat
}
 Describes the type of population level counter. More...
 
enum  CutoffType : Index { CutoffType::None, CutoffType::LineByLineOffset, CutoffType::BandFixedFrequency }
 Describes the type of cutoff calculations. More...
 

Functions

MirroringType string2mirroringtype (const String &in)
 
String mirroringtype2string (MirroringType in)
 
String mirroringtype2metadatastring (MirroringType in)
 
NormalizationType string2normalizationtype (const String &in)
 
String normalizationtype2string (NormalizationType in)
 
String normalizationtype2metadatastring (NormalizationType in)
 
PopulationType string2populationtype (const String &in)
 
String populationtype2string (PopulationType in)
 
String populationtype2metadatastring (PopulationType in)
 
bool relaxationtype_relmat (PopulationType in)
 
CutoffType string2cutofftype (const String &in)
 
String cutofftype2string (CutoffType in)
 
String cutofftype2metadatastring (CutoffType in, Numeric cutoff)
 
std::ostream & operator<< (std::ostream &, const SingleLine &)
 
std::istream & operator>> (std::istream &, SingleLine &)
 
std::ostream & operator<< (std::ostream &, const Lines &)
 
std::istream & operator>> (std::istream &, Lines &)
 
SingleLineExternal ReadFromArtscat3Stream (istream &is)
 Read from ARTSCAT-3. More...
 
SingleLineExternal ReadFromArtscat4Stream (istream &is)
 Read from ARTSCAT-4. More...
 
SingleLineExternal ReadFromArtscat5Stream (istream &is)
 Read from ARTSCAT-5. More...
 
SingleLineExternal ReadFromLBLRTMStream (istream &is)
 Read from LBLRTM. More...
 
SingleLineExternal ReadFromHitran2004Stream (istream &is)
 Read from newer HITRAN. More...
 
SingleLineExternal ReadFromHitranOnlineStream (istream &is)
 Read from HITRAN online. More...
 
SingleLineExternal ReadFromHitran2001Stream (istream &is)
 Read from HITRAN before 2004. More...
 
SingleLineExternal ReadFromMytran2Stream (istream &is)
 Read from Mytran2 The MYTRAN2 format is as follows (directly taken from the abs_my.c documentation): More...
 
SingleLineExternal ReadFromJplStream (istream &is)
 Read from JPL. More...
 
std::vector< Linessplit_list_of_external_lines (std::vector< SingleLineExternal > &external_lines, const std::vector< QuantumNumberType > &localquantas={}, const std::vector< QuantumNumberType > &globalquantas={})
 Splits a list of lines into proper Lines. More...
 
Lines createEmptyCopy (const Lines &al) noexcept
 Creates a copy of the input lines structure. More...
 
bool line_in_id (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
bool line_is_id (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier is equal to a line's identifier. More...
 
bool id_in_line (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
bool line_upper_in_id (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
bool line_lower_in_id (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
bool id_in_line_upper (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
bool id_in_line_lower (const Lines &band, const QuantumIdentifier &id, size_t line_index)
 Checks if the external quantum identifier match a line's ID. More...
 
Index nelem (const Lines &l)
 Number of lines. More...
 
Index nelem (const Array< Lines > &l)
 Number of lines in list. More...
 
Index nelem (const Array< Array< Lines >> &l)
 Number of lines in lists. More...
 
Numeric reduced_rovibrational_dipole (Rational Jf, Rational Ji, Rational lf, Rational li, Rational k=Rational(1))
 Compute the reduced rovibrational dipole moment. More...
 
Numeric reduced_magnetic_quadrapole (Rational Jf, Rational Ji, Rational N)
 Compute the reduced magnetic quadrapole moment. More...
 

Detailed Description

Namespace to contain things required for absorption calculations.

Enumeration Type Documentation

◆ CutoffType

Describes the type of cutoff calculations.

Enumerator
None 
LineByLineOffset 
BandFixedFrequency 

Definition at line 207 of file absorptionlines.h.

◆ MirroringType

Describes the type of mirroring line effects.

Each type but None has to have an implemented effect

Enumerator
None 
Lorentz 
SameAsLineShape 
Manual 

Definition at line 49 of file absorptionlines.h.

◆ NormalizationType

Describes the type of normalization line effects.

Each type but None has to have an implemented effect

Enumerator
None 
VVH 
VVW 
RosenkranzQuadratic 

Definition at line 97 of file absorptionlines.h.

◆ PopulationType

Describes the type of population level counter.

The types here might require that different data is available at runtime absorption calculations

Enumerator
ByLTE 
ByNLTEVibrationalTemperatures 
ByNLTEPopulationDistribution 
ByHITRANRosenkranzRelmat 
ByHITRANFullRelmat 

Definition at line 148 of file absorptionlines.h.

Function Documentation

◆ createEmptyCopy()

Absorption::Lines Absorption::createEmptyCopy ( const Lines al)
noexcept

Creates a copy of the input lines structure.

The output will have zero lines but be otherwise a copy of the input

Parameters
[in]alLines which structure is copied

Definition at line 2701 of file absorptionlines.cc.

Referenced by abs_lines_per_speciesCreateFromLines(), and Absorption::Lines::write().

◆ cutofftype2metadatastring()

String Absorption::cutofftype2metadatastring ( CutoffType  in,
Numeric  cutoff 
)
inline

Definition at line 234 of file absorptionlines.h.

References BandFixedFrequency, LineByLineOffset, and None.

Referenced by Absorption::Lines::MetaData().

◆ cutofftype2string()

String Absorption::cutofftype2string ( CutoffType  in)
inline

Definition at line 224 of file absorptionlines.h.

References BandFixedFrequency, LineByLineOffset, and None.

Referenced by xml_write_to_stream().

◆ id_in_line()

bool Absorption::id_in_line ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

◆ id_in_line_lower()

bool Absorption::id_in_line_lower ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier match a line's ID.

The check demands that all defined quantum numbers for the id are the same as for the line's lower numbers

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2904 of file absorptionlines.cc.

References QuantumIdentifier::ALL, FINAL_ENTRY, Absorption::Lines::Isotopologue(), Absorption::Lines::LowerQuantumNumber(), QuantumIdentifier::NONE, Absorption::Lines::Species(), and QuantumIdentifier::TRANSITION.

Referenced by EnergyLevelMap::get_ratio_params(), EnergyLevelMap::get_vibtemp_params(), and Absorption::Lines::write().

◆ id_in_line_upper()

bool Absorption::id_in_line_upper ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier match a line's ID.

The check demands that all defined quantum numbers for the id are the same as for the line's upper numbers

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2877 of file absorptionlines.cc.

References QuantumIdentifier::ALL, FINAL_ENTRY, Absorption::Lines::Isotopologue(), QuantumIdentifier::NONE, Absorption::Lines::Species(), QuantumIdentifier::TRANSITION, and Absorption::Lines::UpperQuantumNumber().

Referenced by EnergyLevelMap::get_ratio_params(), EnergyLevelMap::get_vibtemp_params(), and Absorption::Lines::write().

◆ line_in_id()

bool Absorption::line_in_id ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier match a line's ID.

The check demands that all defined quantum numbers for the line are the same as for the id

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2749 of file absorptionlines.cc.

References QuantumIdentifier::ALL, QuantumIdentifier::ENERGY_LEVEL, FINAL_ENTRY, Absorption::Lines::Isotopologue(), Absorption::Lines::LowerQuantumNumber(), QuantumIdentifier::NONE, Absorption::Lines::Species(), and Absorption::Lines::UpperQuantumNumber().

Referenced by line_is_id(), and Absorption::Lines::write().

◆ line_is_id()

bool Absorption::line_is_id ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier is equal to a line's identifier.

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2931 of file absorptionlines.cc.

References id_in_line(), and line_in_id().

Referenced by Absorption::Lines::write().

◆ line_lower_in_id()

bool Absorption::line_lower_in_id ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier match a line's ID.

The check demands that all defined lower quantum numbers for the line are the same as for the id

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2813 of file absorptionlines.cc.

References QuantumIdentifier::ALL, FINAL_ENTRY, Absorption::Lines::Isotopologue(), Absorption::Lines::LowerQuantumNumber(), QuantumIdentifier::NONE, Absorption::Lines::Species(), and QuantumIdentifier::TRANSITION.

Referenced by Absorption::Lines::write().

◆ line_upper_in_id()

bool Absorption::line_upper_in_id ( const Lines band,
const QuantumIdentifier id,
size_t  line_index 
)

Checks if the external quantum identifier match a line's ID.

The check demands that all defined upper quantum numbers for the line are the same as for the id

Parameters
[in]bandThe band of lines
[in]idAn identifier
[in]line_indexThe local line

Definition at line 2786 of file absorptionlines.cc.

References QuantumIdentifier::ALL, FINAL_ENTRY, Absorption::Lines::Isotopologue(), QuantumIdentifier::NONE, Absorption::Lines::Species(), QuantumIdentifier::TRANSITION, and Absorption::Lines::UpperQuantumNumber().

Referenced by Absorption::Lines::write().

◆ mirroringtype2metadatastring()

String Absorption::mirroringtype2metadatastring ( MirroringType  in)
inline

Definition at line 81 of file absorptionlines.h.

References Lorentz, Manual, None, and SameAsLineShape.

Referenced by Absorption::Lines::MetaData().

◆ mirroringtype2string()

String Absorption::mirroringtype2string ( MirroringType  in)
inline

Definition at line 69 of file absorptionlines.h.

References Lorentz, Manual, None, and SameAsLineShape.

Referenced by xml_write_to_stream().

◆ nelem() [1/3]

Index Absorption::nelem ( const Lines l)
inline

Number of lines.

Definition at line 1820 of file absorptionlines.h.

References Absorption::Lines::NumLines().

Referenced by abs_xsec_per_speciesAddLines(), SourceText::AdvanceChar(), SourceText::AdvanceLine(), ArrayOfIndexExtractFromArrayOfArrayOfIndex(), ArrayOfIndexSetConstant(), batch_atm_fields_compactAddSpecies(), check_abs_species(), GriddedField1::checksize_strict(), GriddedField2::checksize_strict(), GriddedField3::checksize_strict(), GriddedField4::checksize_strict(), GriddedField5::checksize_strict(), GriddedField6::checksize_strict(), chk_scat_species(), create_sparse_covariance_matrix_1D(), createAij(), createBij(), createCji(), ConstComplexVectorView::empty(), XsecRecord::Extract(), Extract(), f_gridFromabs_lines_per_speciesSetFromSpeciesTag(), f_gridFromAbsorptionLines(), f_gridFromSensorAMSU(), PropagationMatrix::FittingShape(), LineShape::Model::Get(), LineMixingData::Get1stOrder(), LineMixingData::Get1stOrder_dExponent(), LineMixingData::Get1stOrder_dT(), LineMixingData::Get1stOrder_dZerothOrder(), LineMixingData::Get2ndOrder(), LineMixingData::Get2ndOrder_dExponent(), LineMixingData::Get2ndOrder_dFirstOrder(), LineMixingData::Get2ndOrder_dT(), LineMixingData::Get2ndOrder_dZerothOrder(), get_angs(), LineMixingData::GetLBLRTM(), LineMixingData::GetLBLRTM_dT(), LineMixingData::GetLBLRTM_O2NonResonant(), SourceText::Init(), jacobianFromYbatch(), jacobianSetAffineTransformation(), line_irradianceCalcForSingleSpeciesNonOverlappingLinesPseudo2D(), main(), MdRecord::MdRecord(), nca_def_dim(), nca_get_data_ArrayOfIndex(), nca_get_data_Vector(), nca_read_from_file(), nelem(), nlte_fieldForSingleSpeciesNonOverlappingLines(), nlte_positions_in_statistical_equilibrium_matrix(), PressureBroadeningData::Nself(), operator<<(), operator>>(), LineShape::operator>>(), opt_prop_ScatSpecBulk(), parse_a5_hitran(), ArtsParser::parse_agenda(), parse_f51_hitran(), pnd_fieldCalcFromParticleBulkProps(), pndFromPsd(), MdRecord::PrintTemplate(), propmat_clearskyAddHitranLineMixingLines(), psd_mono_common(), random_fill_matrix(), ReadArrayOfARTSCAT(), ReadARTSCAT(), LineRecord::ReadFromHitran2001Stream(), ReadFromHitran2001Stream(), LineRecord::ReadFromHitran2004Stream(), ReadFromHitran2004Stream(), ReadFromHitranOnlineStream(), LineRecord::ReadFromLBLRTMStream(), ReadFromLBLRTMStream(), LineRecord::ReadFromMytran2Stream(), ReadFromMytran2Stream(), LineShape::Model::Remove(), ScatElementsPndAndScatAdd(), ScatElementsToabs_speciesAdd(), Absorption::Lines::SelfVMR(), sensor_responseMixerBackendPrecalcWeights(), Linefunctions::set_cross_section_of_band(), PressureBroadeningData::Sgam(), sorted_index_of_ppath_field(), surface_props_check(), LineShape::Model::this_species(), xml_parse_from_stream(), xml_read_from_stream(), xml_write_to_stream(), yCalcAppend(), and zeeman_on_the_fly().

◆ nelem() [2/3]

Index Absorption::nelem ( const Array< Lines > &  l)
inline

Number of lines in list.

Definition at line 1823 of file absorptionlines.h.

References n, and nelem().

◆ nelem() [3/3]

Index Absorption::nelem ( const Array< Array< Lines >> &  l)
inline

Number of lines in lists.

Definition at line 1826 of file absorptionlines.h.

References n, nelem(), and reduced_rovibrational_dipole().

◆ normalizationtype2metadatastring()

String Absorption::normalizationtype2metadatastring ( NormalizationType  in)
inline

Definition at line 129 of file absorptionlines.h.

References None, RosenkranzQuadratic, VVH, and VVW.

Referenced by Absorption::Lines::MetaData().

◆ normalizationtype2string()

String Absorption::normalizationtype2string ( NormalizationType  in)
inline

Definition at line 117 of file absorptionlines.h.

References None, RosenkranzQuadratic, VVH, and VVW.

Referenced by xml_write_to_stream().

◆ operator<<() [1/2]

◆ operator<<() [2/2]

std::ostream & Absorption::operator<< ( std::ostream &  os,
const Lines lines 
)

Definition at line 2484 of file absorptionlines.cc.

References Absorption::Lines::AllLines().

◆ operator>>() [1/2]

◆ operator>>() [2/2]

std::istream & Absorption::operator>> ( std::istream &  is,
Lines lines 
)

Definition at line 2491 of file absorptionlines.cc.

References Absorption::Lines::AllLines().

◆ populationtype2metadatastring()

String Absorption::populationtype2metadatastring ( PopulationType  in)
inline

◆ populationtype2string()

String Absorption::populationtype2string ( PopulationType  in)
inline

◆ ReadFromArtscat3Stream()

◆ ReadFromArtscat4Stream()

◆ ReadFromArtscat5Stream()

Absorption::SingleLineExternal Absorption::ReadFromArtscat5Stream ( istream &  is)

◆ ReadFromHitran2001Stream()

◆ ReadFromHitran2004Stream()

Absorption::SingleLineExternal Absorption::ReadFromHitran2004Stream ( istream &  is)

Read from newer HITRAN.

The HITRAN format is as follows:

 Each line consists of 160 ASCII characters, followed by a line feed (ASCII 10)
 and carriage return (ASCII 13) character, for a total of 162 bytes per line.

 Each item is defined below, with its Fortran format shown in parenthesis.

 (I2)     molecule number
 (I1)     isotopologue number (1 = most abundant, 2 = second, etc)
 (F12.6)  vacuum wavenumbers (cm-1)
 (E10.3)  intensity in cm-1/(molec * cm-2) at 296 Kelvin
 (E10.3)  Einstein-A coefficient (s-1)
 (F5.4)   air-broadened halfwidth (HWHM) in cm-1/atm at 296 Kelvin
 (F5.4)   self-broadened halfwidth (HWHM) in cm-1/atm at 296 Kelvin
 (F10.4)  lower state energy (cm-1)
 (F4.2)   coefficient of temperature dependence of air-broadened halfwidth
 (F8.6)   air-broadened pressure shift of line transition at 296 K (cm-1)
 (A15)    upper state global quanta
 (A15)    lower state global quanta
 (A15)    upper state local quanta
 (A15)    lower state local quanta
 (I1)     uncertainty index for wavenumber
 (I1)     uncertainty index for intensity
 (I1)     uncertainty index for air-broadened half-width
 (I1)     uncertainty index for self-broadened half-width
 (I1)     uncertainty index for temperature dependence
 (I1)     uncertainty index for pressure shift
 (I2)     index for table of references correspond. to wavenumber
 (I2)     index for table of references correspond. to intensity
 (I2)     index for table of references correspond. to air-broadened half-width
 (I2)     index for table of references correspond. to self-broadened half-width
 (I2)     index for table of references correspond. to temperature dependence
 (I2)     index for table of references correspond. to pressure shift
 (A1)     flag (*) for lines supplied with line-coupling algorithm
 (F7.1)   upper state statistical weight
 (F7.1)   lower state statistical weight

 The molecule numbers are encoded as shown in the table below:

   0= Null    1=  H2O    2=  CO2    3=   O3    4=  N2O    5=    CO
   6=  CH4    7=   O2    8=   NO    9=  SO2   10=  NO2   11=   NH3
   12= HNO3   13=   OH   14=   HF   15=  HCl   16=  HBr   17=    HI
   18=  ClO   19=  OCS   20= H2CO   21= HOCl   22=   N2   23=   HCN
   24=CH3Cl   25= H2O2   26= C2H2   27= C2H6   28=  PH3   29=  COF2
   30=  SF6   31=  H2S   32=HCOOH   33=  HO2   34=    O   35=ClONO2
   36=  NO+   37= HOBr   38= C2H4
* 
Parameters
[in]isInput stream
Returns
SingleLineExternal

Definition at line 752 of file absorptionlines.cc.

References Absorption::SingleLineExternal::bathbroadening, data, extract(), Absorption::SingleLine::F0(), i, iso(), SpeciesRecord::Isotopologue(), QuantumIdentifier::Isotopologue(), Absorption::SingleLineExternal::line, Absorption::SingleLineExternal::lineshapetype, max, my_basic_string< charT >::nelem(), Array< base >::nelem(), nelem(), Absorption::SingleLineExternal::quantumidentity, Absorption::SingleLineExternal::selfbroadening, QuantumIdentifier::Species(), Absorption::SingleLineExternal::species, global_data::species_data, _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and LineShape::VP.

Referenced by LineRecord::IsNotSameSpecIso(), ReadHITRAN(), and Absorption::Lines::write().

◆ ReadFromHitranOnlineStream()

Absorption::SingleLineExternal Absorption::ReadFromHitranOnlineStream ( istream &  is)

Read from HITRAN online.

The data format from online should be a .par line followed by upper state quantum numbers and then lower state quantum numbers. See ReadFromHitran2004Stream for the format of the .par-bit. The quantum numbers are parsed by name and should look as:

J=5.5;N1=2.5;parity=-;kronigParity=f [[tab]] J=6.5;N1=2.5;parity=-;kronigParity=f

Parameters
[in]isInput stream
Returns
SingleLineExternal

Definition at line 1171 of file absorptionlines.cc.

References Absorption::SingleLineExternal::bathbroadening, data, extract(), Absorption::SingleLine::F0(), i, iso(), SpeciesRecord::Isotopologue(), QuantumIdentifier::Isotopologue(), Absorption::SingleLineExternal::line, Absorption::SingleLineExternal::lineshapetype, max, my_basic_string< charT >::nelem(), Array< base >::nelem(), nelem(), Absorption::SingleLineExternal::quantumidentity, Absorption::SingleLineExternal::selfbroadening, QuantumIdentifier::Species(), Absorption::SingleLineExternal::species, global_data::species_data, _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and LineShape::VP.

Referenced by ReadHITRAN(), and Absorption::Lines::write().

◆ ReadFromJplStream()

Absorption::SingleLineExternal Absorption::ReadFromJplStream ( istream &  is)

Read from JPL.

The JPL format is as follows (directly taken from the JPL documentation):

   The catalog line files are composed of 80-character lines, with one
   line entry per spectral line.  The format of each line is:

   \label{lfmt}
   \begin{tabular}{@{}lccccccccr@{}}
   FREQ, & ERR, & LGINT, & DR, & ELO, & GUP, & TAG, & QNFMT, & QN${'}$, & QN${''}$\\ 
   (F13.4, & F8.4, & F8.4, & I2, & F10.4, & I3, & I7, & I4, & 6I2, & 6I2)\\
   \end{tabular}

   \begin{tabular}{lp{4.5in}} 
   FREQ: & Frequency of the line in MHz.\\ 
   ERR: & Estimated or experimental error of FREQ in MHz.\\ 
   LGINT: &Base 10 logarithm of the integrated intensity 
   in units of \linebreak nm$^2$$\cdot$MHz at 300 K. (See Section 3 for 
   conversions to other units.)\\ 
   DR: & Degrees of freedom in the rotational partition 
   function (0 for atoms, 2 for linear molecules, and 3 for nonlinear 
   molecules).\\ 
   ELO: &Lower state energy in cm$^{-1}$ relative to the lowest energy 
   spin--rotation level in ground vibronic state.\\ 
   GUP: & Upper state degeneracy.\\ 
   TAG: & Species tag or molecular identifier. 
   A negative value flags that the line frequency has 
   been measured in the laboratory.  The absolute value of TAG is then the 
   species tag and ERR is the reported experimental error.  The three most 
   significant digits of the species tag are coded as the mass number of the 
   species, as explained above.\\ 
   QNFMT: &Identifies the format of the quantum numbers 
   given in the field QN. These quantum number formats are given in Section 5 
   and are different from those in the first two editions of the catalog.\\ 
   QN${'}$: & Quantum numbers for the upper state coded 
   according to QNFMT.\\ 
   QN${''}$: & Quantum numbers for the lower state.\\
   \end{tabular} 
* 
Parameters
[in]isInput stream
Returns
SingleLineExternal

Definition at line 3310 of file absorptionlines.cc.

References Absorption::SingleLineExternal::bathbroadening, data, i, SpeciesRecord::Isotopologue(), Absorption::SingleLineExternal::lineshapetype, Array< base >::nelem(), Absorption::SingleLineExternal::selfbroadening, Absorption::SingleLineExternal::species, global_data::species_data, and LineShape::VP.

Referenced by LineRecord::IsNotSameSpecIso(), ReadJPL(), and Absorption::Lines::write().

◆ ReadFromLBLRTMStream()

Absorption::SingleLineExternal Absorption::ReadFromLBLRTMStream ( istream &  is)

Read from LBLRTM.

LBLRTM follows the old HITRAN format from before 2004. This HITRAN format is as follows (directly from the HITRAN documentation):

 Each line consists of 100
 bytes of ASCII text data, followed by a line feed (ASCII 10) and
 carriage return (ASCII 13) character, for a total of 102 bytes per line.
 Each line can be read using the following READ and FORMAT statement pair
 (for a FORTRAN sequential access read):

       READ(3,800) MO,ISO,V,S,R,AGAM,SGAM,E,N,d,V1,V2,Q1,Q2,IERF,IERS,
      *  IERH,IREFF,IREFS,IREFH
 800   FORMAT(I2,I1,F12.6,1P2E10.3,0P2F5.4,F10.4,F4.2,F8.6,2I3,2A9,3I1,3I2)

 Each item is defined below, with its format shown in parenthesis.

   MO  (I2)  = molecule number
   ISO (I1)  = isotopologue number (1 = most abundant, 2 = second, etc)
   V (F12.6) = frequency of transition in wavenumbers (cm-1)
   S (E10.3) = intensity in cm-1/(molec * cm-2) at 296 Kelvin
   R (E10.3) = transition probability squared in Debyes**2
   AGAM (F5.4) = air-broadened halfwidth (HWHM) in cm-1/atm at 296 Kelvin
   SGAM (F5.4) = self-broadened halfwidth (HWHM) in cm-1/atm at 296 Kelvin
   E (F10.4) = lower state energy in wavenumbers (cm-1)
   N (F4.2) = coefficient of temperature dependence of air-broadened halfwidth
   d (F8.6) = shift of transition due to pressure (cm-1)
   V1 (I3) = upper state global quanta index
   V2 (I3) = lower state global quanta index
   Q1 (A9) = upper state local quanta
   Q2 (A9) = lower state local quanta
   IERF (I1) = accuracy index for frequency reference
   IERS (I1) = accuracy index for intensity reference
   IERH (I1) = accuracy index for halfwidth reference
   IREFF (I2) = lookup index for frequency
   IREFS (I2) = lookup index for intensity
   IREFH (I2) = lookup index for halfwidth

 The molecule numbers are encoded as shown in the table below:

   0= Null    1=  H2O    2=  CO2    3=   O3    4=  N2O    5=   CO
   6=  CH4    7=   O2    8=   NO    9=  SO2   10=  NO2   11=  NH3
   12= HNO3   13=   OH   14=   HF   15=  HCl   16=  HBr   17=   HI
   18=  ClO   19=  OCS   20= H2CO   21= HOCl   22=   N2   23=  HCN
   24=CH3Cl   25= H2O2   26= C2H2   27= C2H6   28=  PH3   29= COF2
   30=  SF6   31=  H2S   32=HCOOH
* 

Beyond the HITRAN pre-2004 format, there is one more tag for line mixing available in LBLRTM. This is a sign at the end of the line to indicate that the very next line gives line mixing information.

Parameters
[in]isInput stream
Returns
SingleLineExternal

Definition at line 1922 of file absorptionlines.cc.

References Absorption::SingleLineExternal::bathbroadening, data, extract(), Absorption::SingleLine::F0(), i, iso(), SpeciesRecord::Isotopologue(), QuantumIdentifier::Isotopologue(), Absorption::SingleLineExternal::line, Absorption::SingleLineExternal::lineshapetype, max, my_basic_string< charT >::nelem(), Array< base >::nelem(), nelem(), Absorption::SingleLineExternal::quantumidentity, Absorption::SingleLineExternal::selfbroadening, QuantumIdentifier::Species(), Absorption::SingleLineExternal::species, global_data::species_data, _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and LineShape::VP.

Referenced by LineRecord::IsNotSameSpecIso(), ReadLBLRTM(), and Absorption::Lines::write().

◆ ReadFromMytran2Stream()

Absorption::SingleLineExternal Absorption::ReadFromMytran2Stream ( istream &  is)

Read from Mytran2 The MYTRAN2 format is as follows (directly taken from the abs_my.c documentation):

 The MYTRAN format is as follows (FORTRAN notation):
 FORMAT(I2,I1,F13.4,1PE10.3,0P2F5.2,F10.4,2F4.2,F8.6,F6.4,2I3,2A9,4I1,3I2)
 
 Each item is defined below, with its FORMAT String shown in
 parenthesis.
 
     MO  (I2)      = molecule number
     ISO (I1)      = isotopologue number (1 = most abundant, 2 = second, etc)
 *  F (F13.4)     = frequency of transition in MHz
 *  errf (F8.4)   = error in f in MHz
     S (E10.3)     = intensity in cm-1/(molec * cm-2) at 296 K
 *  AGAM (F5.4)   = air-broadened halfwidth (HWHM) in MHz/Torr at Tref
 *  SGAM (F5.4)   = self-broadened halfwidth (HWHM) in MHz/Torr at Tref
     E (F10.4)     = lower state energy in wavenumbers (cm-1)
     N (F4.2)      = coefficient of temperature dependence of 
                     air-broadened halfwidth
 *  N_self (F4.2) = coefficient of temperature dependence of 
                     self-broadened halfwidth
 *  Tref (F7.2)   = reference temperature for AGAM and SGAM 
 *  d (F9.7)      = shift of transition due to pressure (MHz/Torr)
     V1 (I3)       = upper state global quanta index
     V2 (I3)       = lower state global quanta index
     Q1 (A9)       = upper state local quanta
     Q2 (A9)       = lower state local quanta
     IERS (I1)     = accuracy index for S
     IERH (I1)     = accuracy index for AGAM
 *  IERN (I1)     = accuracy index for N

 
 The asterisks mark entries that are different from HITRAN.

 Note that AGAM and SGAM are for the temperature Tref, while S is
 still for 296 K!
 
 The molecule numbers are encoded as shown in the table below:
 
    0= Null    1=  H2O    2=  CO2    3=   O3    4=  N2O    5=   CO
    6=  CH4    7=   O2    8=   NO    9=  SO2   10=  NO2   11=  NH3
   12= HNO3   13=   OH   14=   HF   15=  HCl   16=  HBr   17=   HI
   18=  ClO   19=  OCS   20= H2CO   21= HOCl   22=   N2   23=  HCN
   24=CH3Cl   25= H2O2   26= C2H2   27= C2H6   28=  PH3   29= COF2
   30=  SF6   31=  H2S   32=HCOOH   33= HO2    34=    O   35= CLONO2
   36=  NO+   37= Null   38= Null   39= Null   40=H2O_L   41= Null
   42= Null   43= OCLO   44= Null   45= Null   46=BRO     47= Null
   48= H2SO4  49=CL2O2

 All molecule numbers are from HITRAN, except for species with id's
 greater or equals 40, which are not included in HITRAN.
 (E.g.: For BrO, iso=1 is Br-79-O,iso=2 is  Br-81-O.)
* 
Parameters
[in]isInput stream
Returns
SingleLineExternal

Definition at line 2953 of file absorptionlines.cc.

References Absorption::SingleLineExternal::bathbroadening, data, extract(), Absorption::SingleLine::F0(), i, iso(), SpeciesRecord::Isotopologue(), QuantumIdentifier::Isotopologue(), Absorption::SingleLineExternal::line, Absorption::SingleLineExternal::lineshapetype, max, my_basic_string< charT >::nelem(), Array< base >::nelem(), nelem(), Absorption::SingleLineExternal::quantumidentity, Absorption::SingleLineExternal::selfbroadening, QuantumIdentifier::Species(), Absorption::SingleLineExternal::species, global_data::species_data, SPEED_OF_LIGHT, _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and LineShape::VP.

Referenced by LineRecord::IsNotSameSpecIso(), ReadMytran2(), and Absorption::Lines::write().

◆ reduced_magnetic_quadrapole()

Numeric Absorption::reduced_magnetic_quadrapole ( Rational  Jf,
Rational  Ji,
Rational  N 
)

Compute the reduced magnetic quadrapole moment.

Parameters
[in]JfFinal J
[in]JiInitial J
[in]NThe quantum number (upper should be equal to lower)
Returns
As titled

Definition at line 2946 of file absorptionlines.cc.

References even(), sqrt(), and wigner6j().

◆ reduced_rovibrational_dipole()

Numeric Absorption::reduced_rovibrational_dipole ( Rational  Jf,
Rational  Ji,
Rational  lf,
Rational  li,
Rational  k = Rational(1) 
)

Compute the reduced rovibrational dipole moment.

Parameters
[in]JfFinal J
[in]JiInitial J
[in]lfFinal l2
[in]liInitial l2
[in]kType of transition
Returns
As titled

Definition at line 2939 of file absorptionlines.cc.

Referenced by nelem().

◆ relaxationtype_relmat()

bool Absorption::relaxationtype_relmat ( PopulationType  in)
inline

◆ split_list_of_external_lines()

std::vector< Absorption::Lines > Absorption::split_list_of_external_lines ( std::vector< SingleLineExternal > &  external_lines,
const std::vector< QuantumNumberType > &  localquantas = {},
const std::vector< QuantumNumberType > &  globalquantas = {} 
)

Splits a list of lines into proper Lines.

Ensures that all but SingleLine list in Lines is the same in a full Lines

Parameters
[in]linesA list of lines
[in]localquantasList of quantum numbers to be presumed local
[in]globalquantasList of quantum numbers to be presumed global
Returns
A list of properly ordered Lines

Definition at line 2435 of file absorptionlines.cc.

References transform().

Referenced by ReadHITRAN(), ReadJPL(), ReadLBLRTM(), ReadMytran2(), and Absorption::Lines::write().

◆ string2cutofftype()

CutoffType Absorption::string2cutofftype ( const String in)
inline

◆ string2mirroringtype()

MirroringType Absorption::string2mirroringtype ( const String in)
inline

◆ string2normalizationtype()

NormalizationType Absorption::string2normalizationtype ( const String in)
inline

◆ string2populationtype()