ARTS 2.5.4 (git: 4c0d3b4d)
|
Implements Zeeman modeling. More...
Classes | |
struct | AllPolarizationVectors |
PolarizationVector for each Polarization. More... | |
struct | Derived |
Contains derived values useful for Zeeman calculations. More... | |
class | Model |
Main Zeeman Model. More... | |
class | PolarizationVector |
Polarization vector for Zeeman Propagation Matrix. More... | |
struct | SplittingData |
Main storage for Zeeman splitting coefficients. More... | |
Enumerations | |
enum class | Polarization : char { SigmaMinus , Pi , SigmaPlus , None } |
Zeeman polarization selection. More... | |
Functions | |
std::ostream & | operator<< (std::ostream &os, const Model &m) |
std::istream & | operator>> (std::istream &is, Model &m) |
std::ostream & | operator<< (bofstream &bof, const Model &m) |
std::istream & | operator>> (bifstream &bif, Model &m) |
AllPolarizationVectors | AllPolarization (Numeric theta, Numeric eta) noexcept |
Computes the polarization of each polarization type. More... | |
AllPolarizationVectors | AllPolarization_dtheta (Numeric theta, const Numeric eta) noexcept |
The derivative of AllPolarization wrt theta. More... | |
AllPolarizationVectors | AllPolarization_deta (Numeric theta, Numeric eta) noexcept |
The derivative of AllPolarization wrt eta. More... | |
const PolarizationVector & | SelectPolarization (const AllPolarizationVectors &data, Polarization type) noexcept |
Selects the polarization vector depending on polarization type. More... | |
void | sum (PropagationMatrix &pm, const ComplexVectorView &abs, const PolarizationVector &polvec, const bool do_phase=true) ARTS_NOEXCEPT |
Sums the Zeeman components into a propagation matrix. More... | |
void | dsum (PropagationMatrix &dpm, const ComplexVectorView &abs, const ComplexVectorView &dabs, const PolarizationVector &polvec, const PolarizationVector &dpolvec_dtheta, const PolarizationVector &dpolvec_deta, const Numeric dH, const Numeric dtheta, const Numeric deta, const bool do_phase=true) ARTS_NOEXCEPT |
Sums the Zeeman components derivatives into a propagation matrix. More... | |
constexpr Index | dM (Polarization type) noexcept |
Gives the change of M given a polarization type. More... | |
constexpr Rational | start (Rational Ju, Rational Jl, Polarization type) noexcept |
Gives the lowest M for a polarization type of this transition. More... | |
constexpr Rational | end (Rational Ju, Rational Jl, Polarization type) noexcept |
Gives the largest M for a polarization type of this transition. More... | |
constexpr Index | nelem (Rational Ju, Rational Jl, Polarization type) noexcept |
Gives the number of elements of the polarization type of this transition. More... | |
constexpr Rational | Mu (Rational Ju, Rational Jl, Polarization type, Index n) noexcept |
Gives the upper state M value at an index. More... | |
constexpr Rational | Ml (Rational Ju, Rational Jl, Polarization type, Index n) noexcept |
Gives the lower state M value at an index. More... | |
constexpr Numeric | PolarizationFactor (Polarization type) noexcept |
The renormalization factor of a polarization type. More... | |
constexpr Numeric | SimpleGCaseB (Rational N, Rational J, Rational Lambda, Rational S, Numeric GS, Numeric GL) noexcept |
Computes the Zeeman splitting coefficient. More... | |
constexpr Numeric | SimpleGCaseA (Rational Omega, Rational J, Rational Lambda, Rational Sigma, Numeric GS, Numeric GL) noexcept |
Computes the Zeeman splitting coefficient. More... | |
Model | GetSimpleModel (const QuantumIdentifier &qid) ARTS_NOEXCEPT |
Returns a simple Zeeman model. More... | |
Model | GetAdvancedModel (const QuantumIdentifier &qid) ARTS_NOEXCEPT |
Returns an advanced Zeeman model. More... | |
Derived | FromGrids (Numeric u, Numeric v, Numeric w, Numeric z, Numeric a) noexcept |
Computes the derived plane from ARTS grids. More... | |
constexpr Derived | FromPreDerived (Numeric H, Numeric theta, Numeric eta) noexcept |
Sets Derived from predefined Derived parameters. More... | |
Implements Zeeman modeling.
|
strong |
Zeeman polarization selection.
Enumerator | |
---|---|
SigmaMinus | |
Pi | |
SigmaPlus | |
None |
Definition at line 44 of file zeemandata.h.
|
noexcept |
Computes the polarization of each polarization type.
[in] | theta | The angle along the magnetic field |
[in] | eta | The angle counter-clockwise in the magnetic field plane |
Definition at line 366 of file zeemandata.cc.
References Zeeman::AllPolarizationVectors::pi, Zeeman::AllPolarizationVectors::sm, and Zeeman::AllPolarizationVectors::sp.
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
noexcept |
The derivative of AllPolarization wrt eta.
[in] | theta | The angle along the magnetic field |
[in] | eta | The angle counter-clockwise in the magnetic field plane |
Definition at line 398 of file zeemandata.cc.
References Zeeman::AllPolarizationVectors::pi, Zeeman::AllPolarizationVectors::sm, and Zeeman::AllPolarizationVectors::sp.
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
noexcept |
The derivative of AllPolarization wrt theta.
[in] | theta | The angle along the magnetic field |
[in] | eta | The angle counter-clockwise in the magnetic field plane |
Definition at line 381 of file zeemandata.cc.
References Zeeman::AllPolarizationVectors::pi, Zeeman::AllPolarizationVectors::sm, and Zeeman::AllPolarizationVectors::sp.
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
constexprnoexcept |
Gives the change of M given a polarization type.
[in] | type | The polarization type |
Definition at line 52 of file zeemandata.h.
References max, None, Pi, SigmaMinus, and SigmaPlus.
Referenced by Ml(), and Zeeman::Model::Strength().
void Zeeman::dsum | ( | PropagationMatrix & | dpm, |
const ComplexVectorView & | abs, | ||
const ComplexVectorView & | dabs, | ||
const PolarizationVector & | polvec, | ||
const PolarizationVector & | dpolvec_dtheta, | ||
const PolarizationVector & | dpolvec_deta, | ||
const Numeric | dH, | ||
const Numeric | dtheta, | ||
const Numeric | deta, | ||
const bool | do_phase = true |
||
) |
Sums the Zeeman components derivatives into a propagation matrix.
[in,out] | pm | The propagation matrix derivative |
[in] | abs | The complex absorption vector |
[in] | dabs | The complex absorption vector derivative w.r.t. H |
[in] | polvec | The polarization vector |
[in] | dpolvec_dtheta | The polarization vector derivative w.r.t. theta |
[in] | dpolvec_deta | The polarization vector derivative w.r.t. eta |
[in] | dH | The derivative w.r.t. H |
[in] | dtheta | The derivative w.r.t. theta |
[in] | deta | The derivative w.r.t. eta |
Definition at line 451 of file zeemandata.cc.
References abs, ARTS_ASSERT, dabs, joker, and MapToEigen().
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
constexprnoexcept |
Gives the largest M for a polarization type of this transition.
Since the polarization determines the change in M, this function gives the last M of interest in the range of M possible for a given transition
The user has to ensure that Ju and Jl is a valid transition
[in] | Ju | J of the upper state |
[in] | Jl | J of the upper state |
[in] | type | The polarization type |
Definition at line 113 of file zeemandata.h.
References max, min, None, Pi, SigmaMinus, and SigmaPlus.
Referenced by abs_lines_per_speciesChangeBaseParameterForSpecies(), abs_lines_per_speciesSetBaseParameterForSpecies(), abs_lines_per_speciesSetCutoffForSpecies(), abs_lines_per_speciesSetLinemixingLimitForSpecies(), abs_lines_per_speciesSetLineShapeTypeForSpecies(), abs_lines_per_speciesSetMirroringForSpecies(), abs_lines_per_speciesSetNormalizationForSpecies(), abs_lines_per_speciesSetPopulationForSpecies(), abs_lines_per_speciesSetT0ForSpecies(), AgRecord::AgRecord(), Array< base >::Array(), Raw::Average::avg(), copy(), Raw::Average::cov(), gen_dir(), get_wsv_id(), Quantum::Number::items(), md_sanity_checks(), Raw::Average::nanavg(), Raw::Average::nanvar(), nelem(), MatrixView::operator*=(), MatrixView::operator+=(), MatrixView::operator-=(), MatrixView::operator/=(), operator<<(), Array< base >::operator=(), ArrayOfSpeciesTag::operator=(), Absorption::LineMixing::MapOfErrorCorrectedSuddenData::operator[](), option_describe(), option_input(), option_methods(), ArtsParser::parse_generic_input(), ArtsParser::parse_generic_output(), ArtsParser::parse_method_args(), ArtsParser::parse_specific_input(), ArtsParser::parse_specific_output(), ArtsParser::read_name_or_value(), bifstream::seek(), bofstream::seek(), test_sinc_likes_0limit(), my_basic_string< charT >::tolower(), my_basic_string< charT >::toupper(), and Raw::Average::var().
|
noexcept |
Computes the derived plane from ARTS grids.
When done and if everything is well-defined:
\[ H = \sqrt{u^2 + v^2 + w^2}, \]
\[ \theta = \arccos \left( \vec{n} \cdot \vec{n}_H \right), \]
\[ \eta = \arctan\left( \frac{y}{x} \right), \]
\[ \frac{\partial H}{\partial \vec{H}} = \vec{n}_H, \]
\[ \frac{\partial \theta}{\partial \vec{H}} = \frac{\vec{n}_H \cos{\theta} - \vec{n}}{H\sin\theta}, \]
\[ \frac{\partial \eta}{\partial \vec{H}} = \frac{\vec{n}\times\vec{n}_H}{H\left(x^2 + y^2\right)} \]
With these helpers (some defined, others not):
\[ \vec{H} = \left[\begin{array}{l} v \\ u \\ w \end{array}\right], \]
\[ \vec{n}_H = \frac{\vec{H}}{H} , \]
\[ \vec{n} = \left[\begin{array}{r} \cos a \sin z \\ \sin a\sin z \\ \cos z \end{array}\right], \]
\[ \vec{e}_v = \left[\begin{array}{r} \cos a \cos z \\ \sin a\cos z \\ -\sin z \end{array}\right], \]
\[ y = \left\{\vec{e}_v \times \left[\vec{n}_H - \left(\vec{n}_H\cdot\vec{n}\right)\vec{n}\right]\right\} \cdot \vec{n}, \]
\[ x = \vec{e}_v \cdot \left[\vec{n}_H - \left(\vec{n}_H\cdot\vec{n}\right)\vec{n}\right] \]
Note that all other values are zero if \( H \) is zero, that \( \frac{\partial \theta}{\partial \vec{H}} \) is zero if \( \sin{\theta} \) is zero, that \( \frac{\partial \eta}{\partial \vec{H}} \) is zero if \( x \) and \( y \) are zero, and that the atan2(y, x) function is used for \( \eta \) to compensate for when \( x \) is zero.
[in] | u | Magnetic field u-parameter |
[in] | v | Magnetic field b-parameter |
[in] | w | Magnetic field w-parameter |
[in] | z | Zenith angle |
[in] | a | Azimuth angle |
Definition at line 275 of file zeemandata.cc.
References a, Zeeman::Derived::deta_du, Zeeman::Derived::deta_dv, Zeeman::Derived::deta_dw, Zeeman::Derived::dH_du, Zeeman::Derived::dH_dv, Zeeman::Derived::dH_dw, Zeeman::Derived::dtheta_du, Zeeman::Derived::dtheta_dv, Zeeman::Derived::dtheta_dw, Zeeman::Derived::eta, ev_xyz_by_za_local(), FromPreDerived(), Zeeman::Derived::H, los_xyz_by_uvw_local(), los_xyz_by_za_local(), Constant::pow2(), sqrt(), Zeeman::Derived::theta, u, v, and w.
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
constexprnoexcept |
Sets Derived from predefined Derived parameters.
[in] | H | Derived magnetic field strength |
[in] | theta | Derived magnetic field theta angle |
[in] | eta | Derived magnetic field eta angle |
Definition at line 614 of file zeemandata.h.
Referenced by FromGrids(), and zeeman_on_the_fly().
Zeeman::Model Zeeman::GetAdvancedModel | ( | const QuantumIdentifier & | qid | ) |
Returns an advanced Zeeman model.
Will look at available Quantum numbers and use best approximation for the model to use. If no good approximation is available, it returns Model({0, 0}).
[in] | qid | Transition type quantum id |
Definition at line 129 of file zeemandata.cc.
References N.
Referenced by Zeeman::Model::Model(), ReadArrayOfARTSCAT(), ReadARTSCAT(), ReadHITRAN(), ReadJPL(), and ReadLBLRTM().
Zeeman::Model Zeeman::GetSimpleModel | ( | const QuantumIdentifier & | qid | ) |
Returns a simple Zeeman model.
Will use the simple Hund case provided by input. Throws if the input is bad
[in] | qid | Transition type quantum id |
Definition at line 69 of file zeemandata.cc.
References get_lande_lambda_constant(), get_lande_spin_constant(), and SimpleG().
Referenced by Zeeman::Model::Model().
|
constexprnoexcept |
Gives the lower state M value at an index.
The user has to ensure that Ju and Jl is a valid transition
The user has to ensure n is less than the number of elements
[in] | Ju | J of the upper state |
[in] | Jl | J of the upper state |
[in] | type | The polarization type |
[in] | n | The position |
Definition at line 180 of file zeemandata.h.
Referenced by Zeeman::Model::Strength().
|
constexprnoexcept |
Gives the upper state M value at an index.
The user has to ensure that Ju and Jl is a valid transition
The user has to ensure n is less than the number of elements
[in] | Ju | J of the upper state |
[in] | Jl | J of the upper state |
[in] | type | The polarization type |
[in] | n | The position |
Definition at line 159 of file zeemandata.h.
References start().
Referenced by Ml(), and Zeeman::Model::Strength().
|
constexprnoexcept |
Gives the number of elements of the polarization type of this transition.
The user has to ensure that Ju and Jl is a valid transition
[in] | Ju | J of the upper state |
[in] | Jl | J of the upper state |
[in] | type | The polarization type |
Definition at line 142 of file zeemandata.h.
Definition at line 356 of file zeemandata.cc.
std::ostream & Zeeman::operator<< | ( | std::ostream & | os, |
const Model & | m | ||
) |
Definition at line 346 of file zeemandata.cc.
Definition at line 361 of file zeemandata.cc.
std::istream & Zeeman::operator>> | ( | std::istream & | is, |
Model & | m | ||
) |
Definition at line 351 of file zeemandata.cc.
|
constexprnoexcept |
The renormalization factor of a polarization type.
The polarization comes from some geometry. This function returns the factor we need to compute that geometry and to turn it into something that normalizes every possible M for this type into some strength that sums to unity
[in] | type | The polarization type |
Definition at line 198 of file zeemandata.h.
References max, None, Pi, SigmaMinus, and SigmaPlus.
Referenced by Zeeman::Model::Strength().
|
noexcept |
Selects the polarization vector depending on polarization type.
[in] | data | The pre-computed polarization vectors |
[in] | type | The type of polarization to select |
This should never be reached
Definition at line 416 of file zeemandata.cc.
References None, Pi, SigmaMinus, and SigmaPlus.
Referenced by propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), and zeeman_on_the_fly().
|
constexprnoexcept |
Computes the Zeeman splitting coefficient.
The level should be Hund case a type and all the values have to be defined
[in] | Omega | The Omega quantum number of the level |
[in] | J | The J quantum number of the level |
[in] | Lambda | The Lambda quantum number of the level |
[in] | Sigma | The Sigma quantum number of the level |
[in] | GS | The spin Landé coefficient of the molecule |
[in] | GL | The Landé coefficient of the molecule |
Definition at line 262 of file zeemandata.h.
Referenced by SimpleG().
|
constexprnoexcept |
Computes the Zeeman splitting coefficient.
The level should be Hund case b type and all the values have to be defined
[in] | N | The N quantum number of the level |
[in] | J | The J quantum number of the level |
[in] | Lambda | The Lambda quantum number of the level |
[in] | S | The S quantum number of the level |
[in] | GS | The spin Landé coefficient of the molecule |
[in] | GL | The Landé coefficient of the molecule |
Definition at line 226 of file zeemandata.h.
References N.
Referenced by SimpleG().
|
constexprnoexcept |
Gives the lowest M for a polarization type of this transition.
Since the polarization determines the change in M, this function gives the first M of interest in the range of M possible for a given transition
The user has to ensure that Ju and Jl is a valid transition
[in] | Ju | J of the upper state |
[in] | Jl | J of the upper state |
[in] | type | The polarization type |
Definition at line 80 of file zeemandata.h.
References max, min, None, Pi, SigmaMinus, and SigmaPlus.
Referenced by add_scalar_variance(), ArrayOfIndexLinSpace(), ArrayOfTimeNLinSpace(), Raw::Average::avg(), Raw::Calibration::caha(), check_and_add_block(), ComplexVector::ComplexVector(), Raw::Average::cov(), covmat_seAddBlock(), fill_tensor4(), fill_tensor5(), ForLoop(), linspace(), Mu(), Raw::Average::nanstd(), nca_get_dataa_double(), nelem(), nlinspace(), nlogspace(), Raw::Average::std(), test_AngIntegrate_trapezoid_opti(), test_ls(), test_sinc_likes_0limit(), test_x(), test_x_fixedstep(), test_xy(), test_xy_fixedstep(), test_xy_fixedstep_opt(), test_xy_fixedstep_opt2(), test_xy_opt(), Raw::Average::var(), Vector::Vector(), VectorLinSpace(), VectorLogSpace(), and VectorNLinSpace().
void Zeeman::sum | ( | PropagationMatrix & | pm, |
const ComplexVectorView & | abs, | ||
const PolarizationVector & | polvec, | ||
const bool | do_phase = true |
||
) |
Sums the Zeeman components into a propagation matrix.
[in,out] | pm | The propagation matrix |
[in] | abs | The complex absorption vector |
[in] | polvec | The polarization vector |
Definition at line 431 of file zeemandata.cc.
References abs, ARTS_ASSERT, joker, and MapToEigen().
Referenced by fac(), interp(), pndFromPsd(), propmat_clearskyAddOnTheFlyLineMixingWithZeeman(), PWR98H2OAbsModel(), Absorption::LineMixing::Makarov2020etal::relaxation_matrix_offdiagonal(), Absorption::LineMixing::LinearRovibErrorCorrectedSudden::relaxation_matrix_offdiagonal(), trapz(), and zeeman_on_the_fly().