13#include "propagationmatrix.h"
18 PropagationMatrix& propmat_clearsky,
19 StokesVector& nlte_source,
20 ArrayOfPropagationMatrix& dpropmat_clearsky_dx,
21 ArrayOfStokesVector& dnlte_source_dx,
28 const Numeric& rtp_pressure,
29 const Numeric& rtp_temperature,
31 const Vector& rtp_vmr,
32 const Vector& rtp_mag,
33 const Vector& ppath_los,
34 const Index& atmosphere_dim,
36 const Index& lbl_checked,
37 const Index& manual_zeeman_tag,
38 const Numeric& manual_zeeman_magnetic_field_strength,
39 const Numeric& manual_zeeman_theta,
40 const Numeric& manual_zeeman_eta,
42 if (abs_lines_per_species.
nelem() == 0)
return;
45 "Only for 3D *atmosphere_dim* or a manual magnetic field")
48 "Only for 2D *ppath_los* or a manual magnetic field");
51 "Please set lbl_checked true to use this function")
55 if (not manual_zeeman_tag)
mirror_los(rtp_los, ppath_los, atmosphere_dim);
65 abs_lines_per_species,
76 manual_zeeman_magnetic_field_strength,
86 for (Index i=0; i<qid.
nelem(); i++) {
88 const Numeric g = gs[i];
91 if (
id.isotopologue_index not_eq band.quantumidentity.isotopologue_index)
continue;
93 for (
auto& line: band.lines) {
94 auto test =
id.part_of(band.quantumidentity, line.localquanta);
96 if (test.upp) line.zeeman.gu(g);
97 if (test.low) line.zeeman.gl(g);
107 for (
auto& abs_lines: abs_lines_per_species) {
108 for (Index i=0; i<qid.
nelem(); i++) {
This can be used to make arrays out of anything.
Index nelem() const ARTS_NOEXCEPT
#define ARTS_USER_ERROR_IF(condition,...)
void propmat_clearskyAddZeeman(PropagationMatrix &propmat_clearsky, StokesVector &nlte_source, ArrayOfPropagationMatrix &dpropmat_clearsky_dx, ArrayOfStokesVector &dnlte_source_dx, const ArrayOfArrayOfAbsorptionLines &abs_lines_per_species, const Vector &f_grid, const ArrayOfArrayOfSpeciesTag &abs_species, const ArrayOfSpeciesTag &select_abs_species, const ArrayOfRetrievalQuantity &jacobian_quantities, const SpeciesIsotopologueRatios &isotopologue_ratios, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const EnergyLevelMap &rtp_nlte, const Vector &rtp_vmr, const Vector &rtp_mag, const Vector &ppath_los, const Index &atmosphere_dim, const Index &nlte_do, const Index &lbl_checked, const Index &manual_zeeman_tag, const Numeric &manual_zeeman_magnetic_field_strength, const Numeric &manual_zeeman_theta, const Numeric &manual_zeeman_eta, const Verbosity &)
WORKSPACE METHOD: propmat_clearskyAddZeeman.
void abs_lines_per_speciesZeemanCoefficients(ArrayOfArrayOfAbsorptionLines &abs_lines_per_species, const ArrayOfQuantumIdentifier &qid, const Vector &gs, const Verbosity &verbosity)
WORKSPACE METHOD: abs_lines_per_speciesZeemanCoefficients.
void abs_linesZeemanCoefficients(ArrayOfAbsorptionLines &abs_lines, const ArrayOfQuantumIdentifier &qid, const Vector &gs, const Verbosity &)
WORKSPACE METHOD: abs_linesZeemanCoefficients.
void mirror_los(Vector &los_mirrored, const ConstVectorView &los, const Index &atmosphere_dim)
Determines the backward direction for a given line-of-sight.
A logical struct for global quantum numbers with species identifiers.
void zeeman_on_the_fly(PropagationMatrix &propmat_clearsky, StokesVector &nlte_source, ArrayOfPropagationMatrix &dpropmat_clearsky_dx, ArrayOfStokesVector &dnlte_source_dx, const ArrayOfArrayOfSpeciesTag &abs_species, const ArrayOfSpeciesTag &select_abs_species, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfArrayOfAbsorptionLines &abs_lines_per_species, const SpeciesIsotopologueRatios &isotopologue_ratios, const Vector &f_grid, const Vector &rtp_vmr, const EnergyLevelMap &rtp_nlte, const Vector &rtp_mag, const Vector &rtp_los, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Index &nlte_do, const Index &manual_tag, const Numeric &H0, const Numeric &theta0, const Numeric &eta0)
Main and only way to compute Zeeman effect.