ARTS  2.2.66
m_zeeman.cc File Reference
#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 &)
 

Function Documentation

◆ attenuation_matrix()

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.

Parameters
KOut: The rotation extinction matrix.
thetaIn: Angle between the magnetic field and the propagation path. In radians.
etaIn: Angle to rotate planar polarization clockwise to fit the general coordinate system. In radians.
DMIn: Change in the secondary rotational quantum number.
Author
Richard Larsson
Date
2012-08-03

Definition at line 108 of file m_zeeman.cc.

References ConstMatrixView::ncols(), and ConstMatrixView::nrows().

Referenced by xsec_species_line_mixing_wrapper_with_zeeman().

◆ frequency_change_casea()

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

Parameters
omegaIn: Main quantum number.
mIn: Secondary rotational quantum number.
jIn: Coupled rotational quantum number.
sIn: Electron total spin quantum number.
DJIn: Change in the coupled rotational quantum number.
DMIn: Change in the secondary rotational quantum number.
DNIn: Change in the main rotational quantum number.
H_magIn: Magnitude of the magnetic field in Tesla.
GSIn: G-constant from data for the molecule.
Author
Richard Larsson
Date
2013-08-09

Definition at line 297 of file m_zeeman.cc.

References BOHR_MAGNETON, gs_casea(), PLANCK_CONST, and Rational::toNumeric().

Referenced by propmat_clearskyAddZeeman().

◆ frequency_change_caseb()

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

Parameters
nIn: Main quantum number.
mIn: Secondary rotational quantum number.
jIn: Coupled rotational quantum number.
sIn: Electron total spin quantum number.
DJIn: Change in the coupled rotational quantum number.
DMIn: Change in the secondary rotational quantum number.
DNIn: Change in the main rotational quantum number.
H_magIn: Magnitude of the magnetic field in Tesla.
GSIn: G-constant from data for the molecule.
Author
Richard Larsson
Date
2012-11-13

Definition at line 261 of file m_zeeman.cc.

References BOHR_MAGNETON, gs_caseb(), PLANCK_CONST, and Rational::toNumeric().

Referenced by propmat_clearskyAddZeeman().

◆ gs_casea()

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().

◆ gs_caseb()

Numeric gs_caseb ( const Numeric N,
const Numeric J,
const Numeric S,
const Numeric GS 
)

Definition at line 151 of file m_zeeman.cc.

References N.

Referenced by frequency_change_caseb().

◆ phase_matrix()

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.

Parameters
KOut: The rotation extinction matrix.
thetaIn: Angle between the magnetic field and the propagation path. In radians.
etaIn: Angle to rotate planar polarization clockwise to fit the general coordinate system. In radians.
DMIn: Change in the secondary rotational quantum number.
Author
Richard Larsson
Date
2012-08-03

Definition at line 55 of file m_zeeman.cc.

References ConstMatrixView::ncols(), and ConstMatrixView::nrows().

Referenced by xsec_species_line_mixing_wrapper_with_zeeman().

◆ propmat_clearskyAddZeeman()

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.

Author
Richard Larsson
Parameters
[out]propmat_clearskyWS Output
[in]f_gridWS Input
[in]abs_speciesWS Input
[in]abs_lines_per_speciesWS Input
[in]abs_lineshapeWS Input
[in]isotopologue_ratiosWS Input
[in]isotopologue_quantumWS Input
[in]rtp_pressureWS Input
[in]rtp_temperatureWS Input
[in]rtp_vmrWS Input
[in]rtp_magWS Input
[in]rtp_losWS Input
[in]atmosphere_dimWS Input
[in]line_mixing_dataWS Input
[in]line_mixing_data_lutWS Input
[in]manual_zeeman_tagGeneric Input (Default: "0")
[in]manual_zeeman_magnetic_field_strengthGeneric Input (Default: "1.0")
[in]manual_zeeman_thetaGeneric Input (Default: "0.0")
[in]manual_zeeman_etaGeneric 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().

◆ relative_strength()

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).

Parameters
<strong>U</strong>Void.
mIn: Secondary rotational quantum number.
jIn: Spin-Orbit Coupling number.
DJIn: Change in the main rotational quantum number.
DMIn: Change in the secondary rotational quantum number.
Author
Richard Larsson
Date
2012-10-26

Definition at line 169 of file m_zeeman.cc.

References M.

Referenced by propmat_clearskyAddZeeman().

◆ xsec_species_line_mixing_wrapper_with_zeeman()

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 
)

Variable Documentation

◆ BOHR_MAGNETON

const Numeric BOHR_MAGNETON
extern

◆ DEG2RAD

◆ frequency_change

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().

◆ LANDE_GS

const Numeric LANDE_GS
extern

◆ PI

const Numeric PI
extern

◆ PLANCK_CONST

const Numeric PLANCK_CONST
extern

◆ RAD2DEG

const Numeric RAD2DEG
extern