ARTS
2.2.66
|
#include <cmath>
#include <stdexcept>
#include <string>
#include "auto_md.h"
#include "ppath.h"
#include "messages.h"
#include "math_funcs.h"
#include "absorption.h"
#include "abs_species_tags.h"
#include "physics_funcs.h"
#include "matpackIII.h"
#include "rte.h"
#include "rational.h"
Go to the source code of this file.
Functions | |
void | phase_matrix (MatrixView K, const Numeric &theta, const Numeric &eta, const Index &DM) |
void | attenuation_matrix (MatrixView K, const Numeric &theta, const Numeric &eta, const Index &DM) |
Numeric | gs_caseb (const Numeric &N, const Numeric &J, const Numeric &S, const Numeric &GS) |
Numeric | gs_casea (const Numeric &Omega, const Numeric &J, const Numeric &Sigma, const Numeric &GS) |
Numeric | relative_strength (const Rational &m, const Rational &j, const Index &dj, const Index &dm) |
Numeric | frequency_change_caseb (const Rational &n, const Rational &m, const Rational &j, const Numeric &S, const Index &DJ, const Index &DM, const Index &DN, const Numeric &H_mag, const Numeric &GS) |
Numeric | frequency_change_casea (const Rational &omega, const Rational &m, const Rational &j, const Numeric &Sigma, const Index &DJ, const Index &DM, const Index &Domega, const Numeric &H_mag, const Numeric &GS) |
void | xsec_species_line_mixing_wrapper_with_zeeman (Tensor3View part_abs_mat, const ArrayOfArrayOfSpeciesTag &abs_species, const ArrayOfLineshapeSpec &abs_lineshape, const ArrayOfLineRecord &lr, const SpeciesAuxData &isotopologue_ratios, const Matrix &abs_vmrs, const Vector &abs_p, const Vector &abs_t, const Vector &f_grid, const Numeric &theta, const Numeric &eta, const Index &DM, const Index &this_species, const ArrayOfArrayOfLineMixingRecord &line_mixing_data, const ArrayOfArrayOfIndex &line_mixing_data_lut, const ArrayOfIndex &temp_species_lut, const Verbosity &verbosity) |
void | propmat_clearskyAddZeeman (Tensor4 &propmat_clearsky, const Vector &f_grid, const ArrayOfArrayOfSpeciesTag &abs_species, const ArrayOfArrayOfLineRecord &abs_lines_per_species, const ArrayOfLineshapeSpec &abs_lineshape, const SpeciesAuxData &isotopologue_ratios, const SpeciesAuxData &isotopologue_quantum, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Vector &rtp_vmr, const Vector &rtp_mag, const Vector &ppath_los, const Index &atmosphere_dim, const ArrayOfArrayOfLineMixingRecord &line_mixing_data, const ArrayOfArrayOfIndex &line_mixing_data_lut, const Index &manual_zeeman_tag, const Numeric &manual_zeeman_magnetic_field_strength, const Numeric &manual_zeeman_theta, const Numeric &manual_zeeman_eta, const Verbosity &verbosity) |
WORKSPACE METHOD: propmat_clearskyAddZeeman. More... | |
Variables | |
const Numeric | PI |
const Numeric | DEG2RAD |
const Numeric | RAD2DEG |
const Numeric | PLANCK_CONST |
const Numeric | BOHR_MAGNETON |
const Numeric | LANDE_GS |
Numeric(* | frequency_change )(const Rational &, const Rational &, const Rational &, const Numeric &, const Index &, const Index &, const Index &, const Numeric &, const Numeric &) |
void attenuation_matrix | ( | MatrixView | K, |
const Numeric & | theta, | ||
const Numeric & | eta, | ||
const Index & | DM | ||
) |
Defines the attenuation of the propagation matrix as derived by the author. Read Larsson et al. (2013) for an explanation.
K | Out: The rotation extinction matrix. |
theta | In: Angle between the magnetic field and the propagation path. In radians. |
eta | In: Angle to rotate planar polarization clockwise to fit the general coordinate system. In radians. |
DM | In: Change in the secondary rotational quantum number. |
Definition at line 108 of file m_zeeman.cc.
References ConstMatrixView::ncols(), and ConstMatrixView::nrows().
Referenced by xsec_species_line_mixing_wrapper_with_zeeman().
Numeric frequency_change_casea | ( | const Rational & | omega, |
const Rational & | m, | ||
const Rational & | j, | ||
const Numeric & | Sigma, | ||
const Index & | DJ, | ||
const Index & | DM, | ||
const Index & | Domega, | ||
const Numeric & | H_mag, | ||
const Numeric & | GS | ||
) |
Return the frequency change of the split Zeeman line parts as found from g_s x M - g_s' x M'
Takes into account non-free electron GS constant by GS/2 * g_s
omega | In: Main quantum number. |
m | In: Secondary rotational quantum number. |
j | In: Coupled rotational quantum number. |
s | In: Electron total spin quantum number. |
DJ | In: Change in the coupled rotational quantum number. |
DM | In: Change in the secondary rotational quantum number. |
DN | In: Change in the main rotational quantum number. |
H_mag | In: Magnitude of the magnetic field in Tesla. |
GS | In: G-constant from data for the molecule. |
Definition at line 297 of file m_zeeman.cc.
References BOHR_MAGNETON, gs_casea(), PLANCK_CONST, and Rational::toNumeric().
Referenced by propmat_clearskyAddZeeman().
Numeric frequency_change_caseb | ( | const Rational & | n, |
const Rational & | m, | ||
const Rational & | j, | ||
const Numeric & | S, | ||
const Index & | DJ, | ||
const Index & | DM, | ||
const Index & | DN, | ||
const Numeric & | H_mag, | ||
const Numeric & | GS | ||
) |
Return the frequency change of the split Zeeman line parts as found from g_s x M - g_s' x M'
Takes into account non-free electron GS constant by GS/2 * g_s
n | In: Main quantum number. |
m | In: Secondary rotational quantum number. |
j | In: Coupled rotational quantum number. |
s | In: Electron total spin quantum number. |
DJ | In: Change in the coupled rotational quantum number. |
DM | In: Change in the secondary rotational quantum number. |
DN | In: Change in the main rotational quantum number. |
H_mag | In: Magnitude of the magnetic field in Tesla. |
GS | In: G-constant from data for the molecule. |
Definition at line 261 of file m_zeeman.cc.
References BOHR_MAGNETON, gs_caseb(), PLANCK_CONST, and Rational::toNumeric().
Referenced by propmat_clearskyAddZeeman().
Numeric gs_casea | ( | const Numeric & | Omega, |
const Numeric & | J, | ||
const Numeric & | Sigma, | ||
const Numeric & | GS | ||
) |
Definition at line 152 of file m_zeeman.cc.
Referenced by frequency_change_casea().
void phase_matrix | ( | MatrixView | K, |
const Numeric & | theta, | ||
const Numeric & | eta, | ||
const Index & | DM | ||
) |
Defines the phase of the propagation matrix as derived by the author. Read Larsson et al. (2013) for an explanation.
K | Out: The rotation extinction matrix. |
theta | In: Angle between the magnetic field and the propagation path. In radians. |
eta | In: Angle to rotate planar polarization clockwise to fit the general coordinate system. In radians. |
DM | In: Change in the secondary rotational quantum number. |
Definition at line 55 of file m_zeeman.cc.
References ConstMatrixView::ncols(), and ConstMatrixView::nrows().
Referenced by xsec_species_line_mixing_wrapper_with_zeeman().
void propmat_clearskyAddZeeman | ( | Tensor4 & | propmat_clearsky, |
const Vector & | f_grid, | ||
const ArrayOfArrayOfSpeciesTag & | abs_species, | ||
const ArrayOfArrayOfLineRecord & | abs_lines_per_species, | ||
const ArrayOfLineshapeSpec & | abs_lineshape, | ||
const SpeciesAuxData & | isotopologue_ratios, | ||
const SpeciesAuxData & | isotopologue_quantum, | ||
const Numeric & | rtp_pressure, | ||
const Numeric & | rtp_temperature, | ||
const Vector & | rtp_vmr, | ||
const Vector & | rtp_mag, | ||
const Vector & | rtp_los, | ||
const Index & | atmosphere_dim, | ||
const ArrayOfArrayOfLineMixingRecord & | line_mixing_data, | ||
const ArrayOfArrayOfIndex & | line_mixing_data_lut, | ||
const Index & | manual_zeeman_tag, | ||
const Numeric & | manual_zeeman_magnetic_field_strength, | ||
const Numeric & | manual_zeeman_theta, | ||
const Numeric & | manual_zeeman_eta, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: propmat_clearskyAddZeeman.
Calculates Zeeman-effected absorption coefficients.
This method will, for each Zeeman species, make a local ArrayOfLineRecord for the various transition types with Zeeman altered LineRecord(s). These are then composed into a single ArrayOfArrayOfLineRecord which is processed as per the scalar case.
The line broadened absorption coefficients are finally multiplied with the transition type rotation matrix and the new variable is inserted into the out variable. Only species containing a -Z- tag are treated.
Note that between 55 GHz and 65 GHz there is usually ~700 O_2 lines, however, when this Zeeman splitting method is used, the number of lines is increased to about 45,000. Be aware that this is a time consuming method.
The 'manual_zeeman*' variables will let the user set their own simple magnetic field. This path can be accessed by setting manual_zeeman_tag* different from zero. The user is also advided to read the theory guide to understand what the different variables will do in the Zeeman theory. Note that angles are in degrees and strength in Tesla.
[out] | propmat_clearsky | WS Output |
[in] | f_grid | WS Input |
[in] | abs_species | WS Input |
[in] | abs_lines_per_species | WS Input |
[in] | abs_lineshape | WS Input |
[in] | isotopologue_ratios | WS Input |
[in] | isotopologue_quantum | WS Input |
[in] | rtp_pressure | WS Input |
[in] | rtp_temperature | WS Input |
[in] | rtp_vmr | WS Input |
[in] | rtp_mag | WS Input |
[in] | rtp_los | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | line_mixing_data | WS Input |
[in] | line_mixing_data_lut | WS Input |
[in] | manual_zeeman_tag | Generic Input (Default: "0") |
[in] | manual_zeeman_magnetic_field_strength | Generic Input (Default: "1.0") |
[in] | manual_zeeman_theta | Generic Input (Default: "0.0") |
[in] | manual_zeeman_eta | Generic Input (Default: "0.0") |
Definition at line 365 of file m_zeeman.cc.
References abs, AbsInputFromRteScalars(), checkIsotopologueRatios(), CREATE_OUT3, cross3(), DEG2RAD, dx, frequency_change, frequency_change_casea(), frequency_change_caseb(), SpeciesAuxData::getParam(), is_zeeman(), LineRecord::Isotopologue(), Rational::isUndefined(), joker, SpeciesTag::LINE_MIXING_TYPE_NONE, QuantumNumberRecord::Lower(), M, mirror_los(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), ConstTensor4View::npages(), ConstTensor4View::nrows(), proj(), QN_J, QN_N, QN_Omega, LineRecord::QuantumNumbers(), relative_strength(), LineRecord::setF(), LineRecord::setI0(), LineRecord::Species(), Rational::toNumeric(), QuantumNumberRecord::Upper(), vector_angle(), xsec_species_line_mixing_wrapper_with_zeeman(), and zaaa2cart().
Referenced by propmat_clearskyAddZeeman_g().
Numeric relative_strength | ( | const Rational & | m, |
const Rational & | j, | ||
const Index & | dj, | ||
const Index & | dm | ||
) |
Return the relative strength of the split Zeeman line parts as found in Berdyugina and Solnaki (2002). Note that this is the same as the general case of Schadee (1978).
<strong>U</strong> | Void. |
m | In: Secondary rotational quantum number. |
j | In: Spin-Orbit Coupling number. |
DJ | In: Change in the main rotational quantum number. |
DM | In: Change in the secondary rotational quantum number. |
Definition at line 169 of file m_zeeman.cc.
References M.
Referenced by propmat_clearskyAddZeeman().
void xsec_species_line_mixing_wrapper_with_zeeman | ( | Tensor3View | part_abs_mat, |
const ArrayOfArrayOfSpeciesTag & | abs_species, | ||
const ArrayOfLineshapeSpec & | abs_lineshape, | ||
const ArrayOfLineRecord & | lr, | ||
const SpeciesAuxData & | isotopologue_ratios, | ||
const Matrix & | abs_vmrs, | ||
const Vector & | abs_p, | ||
const Vector & | abs_t, | ||
const Vector & | f_grid, | ||
const Numeric & | theta, | ||
const Numeric & | eta, | ||
const Index & | DM, | ||
const Index & | this_species, | ||
const ArrayOfArrayOfLineMixingRecord & | line_mixing_data, | ||
const ArrayOfArrayOfIndex & | line_mixing_data_lut, | ||
const ArrayOfIndex & | temp_species_lut, | ||
const Verbosity & | verbosity | ||
) |
Helper function. This is the only place where m_zeeman interacts with other absorption protocols.
Definition at line 316 of file m_zeeman.cc.
References attenuation_matrix(), DEG2RAD, joker, SpeciesTag::LINE_MIXING_TYPE_NONE, mult(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), ConstTensor3View::npages(), ConstTensor3View::nrows(), number_density(), phase_matrix(), and xsec_species_line_mixing_wrapper().
Referenced by propmat_clearskyAddZeeman().
|
extern |
Referenced by frequency_change_casea(), and frequency_change_caseb().
|
extern |
Referenced by propmat_clearskyAddZeeman(), and xsec_species_line_mixing_wrapper_with_zeeman().
Numeric(* frequency_change) (const Rational &, const Rational &, const Rational &, const Numeric &, const Index &, const Index &, const Index &, const Numeric &, const Numeric &) |
Definition at line 239 of file m_zeeman.cc.
Referenced by propmat_clearskyAddZeeman().
|
extern |
|
extern |
|
extern |
Referenced by frequency_change_casea(), and frequency_change_caseb().
|
extern |