Go to the documentation of this file.
53 case Polarization::SigmaMinus:
55 case Polarization::Pi:
79 case Polarization::SigmaMinus:
86 case Polarization::Pi:
110 case Polarization::SigmaMinus:
112 case Polarization::Pi:
136 return (
end(Ju, Jl, type) -
start(Ju, Jl, type)).toIndex() + 1;
156 return start(Ju, Jl, type) + n;
177 return Mu(Ju, Jl, type, n) +
dM(type);
193 case Polarization::SigmaMinus:
195 case Polarization::Pi:
216 if (qns[QuantumNumberType::Omega].isUndefined() or
218 qns[QuantumNumberType::Lambda].isUndefined() or
219 qns[QuantumNumberType::S].isUndefined())
225 qns[QuantumNumberType::Lambda].isUndefined() or
226 qns[QuantumNumberType::S].isUndefined())
255 auto JJ = J * (J + 1);
256 auto NN =
N * (
N + 1);
257 auto SS = S * (S + 1);
258 auto LL = Lambda * Lambda;
262 else if (NN not_eq 0) {
263 auto T1 = ((JJ + SS - NN) / JJ / 2).toNumeric();
264 auto T2 = ((JJ - SS + NN) * LL / NN / JJ / 2).toNumeric();
265 return GS * T1 + GL * T2;
267 auto T1 = ((JJ + SS - NN) / JJ / 2).toNumeric();
292 auto JJ = J * (J + 1);
297 auto DIV = Omega / JJ;
298 auto T1 = (Sigma * DIV).toNumeric();
299 auto T2 = (Lambda * DIV).toNumeric();
300 return GS * T1 + GL * T2;
325 qns[QuantumNumberType::Lambda],
326 qns[QuantumNumberType::S],
332 qns[QuantumNumberType::Lambda],
333 qns[QuantumNumberType::S],
417 auto ml =
Ml(Ju, Jl, type, n);
418 auto mu =
Mu(Ju, Jl, type, n);
438 using Constant::bohr_magneton;
440 constexpr
Numeric C = bohr_magneton / h;
447 friend inline std::ostream&
operator<<(std::ostream& os,
const Model& m);
523 :
att(a, b, c, d),
dis(u, v,
w){};
541 Eigen::Matrix4d
matrix() const noexcept {
542 return (Eigen::Matrix4d() <<
att[0],
580 const Numeric ST = std::sin(theta), CT = std::cos(theta), ST2 = ST * ST,
581 CT2 = CT * CT, ST2C2E = ST2 * std::cos(2 * eta),
582 ST2S2E = ST2 * std::sin(2 * eta);
586 1 + CT2, ST2C2E, ST2S2E, 2 * CT, 4 * CT, 2 * ST2S2E, -2 * ST2C2E);
590 1 + CT2, ST2C2E, ST2S2E, -2 * CT, -4 * CT, 2 * ST2S2E, -2 * ST2C2E);
603 const Numeric ST = std::sin(theta), CT = std::cos(theta),
604 C2E = std::cos(2 * eta), S2E = std::sin(2 * eta), dST = CT,
605 dST2 = 2 * ST * dST, dCT = -ST, dST2C2E = dST2 * C2E,
606 dST2S2E = dST2 * S2E, dCT2 = 2 * CT * dCT;
610 dCT2, dST2C2E, dST2S2E, 2 * dCT, 4 * dCT, 2 * dST2S2E, -2 * dST2C2E);
612 dST2, -dST2C2E, -dST2S2E, 0, 0, -2 * dST2S2E, 2 * dST2C2E);
614 dCT2, dST2C2E, dST2S2E, -2 * dCT, -4 * dCT, 2 * dST2S2E, -2 * dST2C2E);
627 const Numeric ST = std::sin(theta), ST2 = ST * ST, C2E = std::cos(2 * eta),
628 S2E = std::sin(2 * eta), dST2C2E = -2 * ST2 * S2E,
629 dST2S2E = 2 * ST2 * C2E;
635 0, -dST2C2E, -dST2S2E, 0, 0, -2 * dST2S2E, 2 * dST2C2E);
649 case Polarization::SigmaMinus:
651 case Polarization::Pi:
715 return {H, theta, eta, 0, 0, 0, 0, 0, 0, 0, 0, 0};
Numeric & gl() noexcept
Returns the lower state g.
Container class for Quantum Numbers.
PolarizationVector(Numeric a=1, Numeric b=0, Numeric c=0, Numeric d=0, Numeric u=0, Numeric v=0, Numeric w=0) noexcept
Default init of class.
constexpr Rational Mu(Rational Ju, Rational Jl, Polarization type, Index n) noexcept
Gives the upper state M value at an index.
Class to identify and match lines by their quantum numbers.
friend std::ostream & operator<<(std::ostream &os, const Model &m)
Output operator for Zeeman::Model.
constexpr Model(SplittingData gs={NAN, NAN}) noexcept
Default copy/init of Model from its only private variable.
Complex w(Complex z) noexcept
The Faddeeva function.
Wigner symbol interactions.
std::istream & operator>>(std::istream &is, Model &m)
constexpr Numeric PolarizationFactor(Polarization type) noexcept
The renormalization factor of a polarization type.
void gl(Numeric x) noexcept
Sets the lower state g.
constexpr Numeric SimpleGCaseA(Rational Omega, Rational J, Rational Lambda, Rational Sigma, Numeric GS, Numeric GL) noexcept
Computes the Zeeman splitting coefficient.
Derived FromGrids(Numeric u, Numeric v, Numeric w, Numeric z, Numeric a) noexcept
Computes the derived plane from ARTS grids.
PolarizationVector for each Polarization.
Implements Zeeman modeling.
void gu(Numeric x) noexcept
Sets the upper state g.
G0 G2 FVC Y DV Numeric Numeric Numeric Zeeman LowerQuantumNumbers void * data
constexpr Rational Ml(Rational Ju, Rational Jl, Polarization type, Index n) noexcept
Gives the lower state M value at an index.
std::ostream & operator<<(std::ostream &os, const Model &m)
Numeric wigner3j(const Rational j1, const Rational j2, const Rational j3, const Rational m1, const Rational m2, const Rational m3)
Wigner 3J symbol.
Model GetSimpleModel(const QuantumIdentifier &qid) noexcept
Returns a simple Zeeman model.
Model GetAdvancedModel(const QuantumIdentifier &qid) noexcept
Returns an advanced Zeeman model.
constexpr bool GoodHundData(const QuantumNumbers &qns) noexcept
Checks if the quantum numbers are good for this transition.
constexpr Index nelem(Rational Ju, Rational Jl, Polarization type) noexcept
Gives the number of elements of the polarization type of this transition.
AllPolarizationVectors AllPolarization_deta(Numeric theta, Numeric eta) noexcept
The derivative of AllPolarization wrt eta.
Numeric Strength(Rational Ju, Rational Jl, Polarization type, Index n) const
Gives the strength of one subline of a given polarization.
Main storage for Zeeman splitting coefficients.
constexpr Numeric SimpleG(const QuantumNumbers &qns, const Numeric &GS, const Numeric &GL) noexcept
Computes the Zeeman splitting coefficient.
constexpr Numeric SimpleGCaseB(Rational N, Rational J, Rational Lambda, Rational S, Numeric GS, Numeric GL) noexcept
Computes the Zeeman splitting coefficient.
friend std::istream & operator>>(std::istream &is, Model &m)
Input operator for Zeeman::Model.
constexpr Numeric toNumeric() const
Converts this to a Numeric.
Input manipulator class for doubles to enable nan and inf parsing.
NUMERIC Numeric
The type to use for all floating point numbers.
Binary output file stream class.
const PolarizationVector & SelectPolarization(const AllPolarizationVectors &data, Polarization type) noexcept
Selects the polarization vector depending on polarization type.
constexpr Numeric gl() const noexcept
Returns the lower state g.
Zeeman::Model ZeemanModel
constexpr Numeric Splitting(Rational Ju, Rational Jl, Polarization type, Index n) const noexcept
Gives the splitting of one subline of a given polarization.
constexpr Rational end(Rational Ju, Rational Jl, Polarization type) noexcept
Gives the largest M for a polarization type of this transition.
constexpr Numeric gu() const noexcept
Returns the upper state g.
Numeric & gu() noexcept
Returns the upper state g.
const Eigen::RowVector4d & attenuation() const noexcept
Returns the attenuation vector.
Polarization vector for Zeeman Propagation Matrix.
Constants of physical expressions as constexpr.
constexpr Rational start(Rational Ju, Rational Jl, Polarization type) noexcept
Gives the lowest M for a polarization type of this transition.
bool empty() const noexcept
Returns true if the Model represents no Zeeman effect.
Eigen::RowVector4d & attenuation() noexcept
Returns the attenuation vector.
const Eigen::RowVector3d & dispersion() const noexcept
Returns the dispersion vector.
This file contains basic functions to handle ASCII files.
Eigen::Matrix4d matrix() const noexcept
Returns the true propagation matrix.
AllPolarizationVectors AllPolarization_dtheta(Numeric theta, const Numeric eta) noexcept
The derivative of AllPolarization wrt theta.
constexpr T pow2(T x)
power of two
Vector x(Workspace &ws) noexcept
INDEX Index
The type to use for all integer numbers and indices.
constexpr Index dM(Polarization type) noexcept
Gives the change of M given a polarization type.
AllPolarizationVectors AllPolarization(Numeric theta, Numeric eta) noexcept
Computes the polarization of each polarization type.
Implements rational numbers to work with other ARTS types.
Polarization
Zeeman polarization selection.
constexpr Derived FromPreDerived(Numeric H, Numeric theta, Numeric eta) noexcept
Sets Derived from predefined Derived parameters.
This file contains the definition of String, the ARTS string class.
Eigen::RowVector3d & dispersion() noexcept
Returns the dispersion vector.
Binary output file stream class.
Contains derived values useful for Zeeman calculations.