15 static constexpr std::string_view
name =
"Noshape";
17 static constexpr Complex
F = Complex(0, 0);
19 static constexpr Complex
dFdT(
const Output &, Numeric)
noexcept {
return 0; }
20 static constexpr Complex
dFdf() noexcept {
return 0; }
21 static constexpr Complex
dFdF0() noexcept {
return 0; }
22 static constexpr Complex
dFdH(Numeric)
noexcept {
return 0; }
23 static constexpr Complex
dFdFVC(Numeric)
noexcept {
return 0; }
24 static constexpr Complex
dFdETA(Numeric)
noexcept {
return 0; }
25 static constexpr Complex
dFdVMR(
const Output &)
noexcept {
return 0; }
26 static constexpr Complex
dFdDV(Numeric)
noexcept {
return 0; }
27 static constexpr Complex
dFdD0(Numeric)
noexcept {
return 0; }
28 static constexpr Complex
dFdG0(Numeric)
noexcept {
return 0; }
29 static constexpr Complex
dFdD2(Numeric)
noexcept {
return 0; }
30 static constexpr Complex
dFdG2(Numeric)
noexcept {
return 0; }
32 constexpr Complex
operator()(Numeric)
const noexcept {
return F; }
36 static constexpr std::string_view
name =
"Doppler";
44 constexpr Doppler(Numeric F0_noshift, Numeric DC, Numeric dZ) noexcept
48 Numeric T)
const noexcept {
51 [[nodiscard]]
constexpr Complex
dFdf() const noexcept {
54 [[nodiscard]]
constexpr Complex
dFdF0() const noexcept {
57 [[nodiscard]]
constexpr Complex
dFdH(Numeric dZ)
const noexcept {
60 static constexpr Complex
dFdFVC(Numeric)
noexcept {
return 0; }
61 static constexpr Complex
dFdETA(Numeric)
noexcept {
return 0; }
62 static constexpr Complex
dFdVMR(
const Output &)
noexcept {
return 0; }
63 static constexpr Complex
dFdDV(Numeric)
noexcept {
return 0; }
64 static constexpr Complex
dFdD0(Numeric)
noexcept {
return 0; }
65 static constexpr Complex
dFdG0(Numeric)
noexcept {
return 0; }
66 static constexpr Complex
dFdD2(Numeric)
noexcept {
return 0; }
67 static constexpr Complex
dFdG2(Numeric)
noexcept {
return 0; }
73 static constexpr std::string_view
name =
"Lorentz";
82 :
mF0(F0_noshift + ls.D0 + ls.DV),
G0(ls.G0) {}
84 [[nodiscard]]
constexpr Complex
dFdVMR(
const Output &
d)
const noexcept {
85 return Complex(
d.G0,
d.D0 +
d.DV) *
dF;
88 Numeric)
const noexcept {
91 [[nodiscard]] [[nodiscard]]
constexpr Complex
dFdf() const noexcept {
92 return Complex(0, -1) *
dF;
94 [[nodiscard]]
constexpr Complex
dFdF0() const noexcept {
95 return Complex(0, 1) *
dF;
97 [[nodiscard]]
constexpr Complex
dFdDV(Numeric
d)
const noexcept {
100 [[nodiscard]]
constexpr Complex
dFdD0(Numeric
d)
const noexcept {
103 static constexpr Complex
dFdH(Numeric)
noexcept {
return 0; }
104 [[nodiscard]]
constexpr Complex
dFdG0(Numeric
d)
const noexcept {
107 static constexpr Complex
dFdD2(Numeric)
noexcept {
return 0; }
108 static constexpr Complex
dFdG2(Numeric) {
return 0; }
109 static constexpr Complex
dFdETA(Numeric)
noexcept {
return 0; }
110 static constexpr Complex
dFdFVC(Numeric)
noexcept {
return 0; }
120 static constexpr std::string_view
name =
"Voigt";
135 mF0(F0_noshift + dZ + ls.D0 + ls.DV),
139 [[nodiscard]]
constexpr Complex
dFdf() const noexcept {
return dF; }
140 [[nodiscard]]
constexpr Complex
dFdF0() const noexcept {
return -
dF; }
141 [[nodiscard]]
constexpr Complex
dFdDV(Numeric
d)
const noexcept {
144 [[nodiscard]]
constexpr Complex
dFdD0(Numeric
d)
const noexcept {
147 [[nodiscard]]
constexpr Complex
dFdG0(Numeric
d)
const noexcept {
148 return Complex(0,
d) *
dF;
150 [[nodiscard]]
constexpr Complex
dFdH(Numeric dZ)
const noexcept {
154 return Complex(-
d.D0 -
d.DV,
d.G0) *
dF;
157 Numeric T)
const noexcept {
160 Complex(-
d.D0 -
d.DV,
d.G0) *
dF;
162 static constexpr Complex
dFdETA(Numeric)
noexcept {
return 0; }
163 static constexpr Complex
dFdFVC(Numeric)
noexcept {
return 0; }
164 static constexpr Complex
dFdD2(Numeric)
noexcept {
return 0; }
165 static constexpr Complex
dFdG2(Numeric) {
return 0; }
169 [[nodiscard]]
bool OK() const noexcept {
return invGD > 0; }
173 static constexpr std::string_view
name =
"SpeedDependentVoigt";
201 Numeric dZ)
noexcept;
203 [[nodiscard]] Complex
dFdf() const noexcept;
204 [[nodiscard]] Complex
dFdF0() const noexcept;
205 [[nodiscard]] Complex
dFdD0(Numeric dD0dD0) const noexcept;
206 [[nodiscard]] Complex
dFdG0(Numeric dG0dG0) const noexcept;
207 [[nodiscard]] Complex
dFdD2(Numeric dD2dD2) const noexcept;
208 [[nodiscard]] Complex
dFdG2(Numeric dG2dG2) const noexcept;
209 [[nodiscard]] Complex
dFdH(Numeric dZ) const noexcept;
210 [[nodiscard]] Complex
dFdVMR(const
Output &
d) const noexcept;
211 [[nodiscard]] Complex
dFdT(const
Output &
d, Numeric T) const noexcept;
212 static constexpr Complex
dFdETA(Numeric) noexcept {
return 0; }
213 static constexpr Complex
dFdFVC(Numeric)
noexcept {
return 0; }
214 static constexpr Complex
dFdDV(Numeric)
noexcept {
return 0; }
218 [[nodiscard]]
CalcType init(
const Complex c2)
const noexcept;
220 void calc() noexcept;
224 static constexpr std::string_view
name =
"HartmannTran";
266 Numeric dZ)
noexcept;
268 [[nodiscard]] Complex
dFdf() const noexcept;
269 [[nodiscard]] Complex
dFdF0() const noexcept;
270 [[nodiscard]] Complex
dFdD0(Numeric dD0) const noexcept;
271 [[nodiscard]] Complex
dFdG0(Numeric dG0) const noexcept;
272 [[nodiscard]] Complex
dFdD2(Numeric dD2) const noexcept;
273 [[nodiscard]] Complex
dFdG2(Numeric dG2) const noexcept;
274 [[nodiscard]] Complex
dFdFVC(Numeric dFVC) const noexcept;
275 [[nodiscard]] Complex
dFdETA(Numeric dETA) const noexcept;
276 [[nodiscard]] Complex
dFdH(Numeric dZ) const noexcept;
277 [[nodiscard]] Complex
dFdVMR(const
Output &
d) const noexcept;
278 [[nodiscard]] Complex
dFdT(const
Output &
d, Numeric T) const noexcept;
279 static constexpr Complex
dFdDV(Numeric) noexcept {
return 0; }
283 [[nodiscard]]
CalcType init(
const Complex c2t)
const noexcept;
285 void calc() noexcept;
289 static constexpr Numeric N = 1.0;
293 static constexpr Numeric dNdT(Numeric, Numeric) noexcept {
return 0; }
294 static constexpr Numeric
dNdf(Numeric)
noexcept {
return 0; }
295 [[nodiscard]]
constexpr Numeric
dNdF0() const noexcept {
return 0; }
310 [[nodiscard]] Numeric dNdT(Numeric T, Numeric f)
const noexcept;
311 [[nodiscard]] Numeric dNdf(Numeric f)
const noexcept;
312 [[nodiscard]] Numeric dNdF0() const noexcept;
314 Numeric operator()(Numeric f) noexcept;
324 static constexpr Numeric
dNdT(Numeric, Numeric)
noexcept {
return 0; }
325 [[nodiscard]]
constexpr Numeric
dNdf(Numeric f)
const noexcept {
328 [[nodiscard]]
constexpr Numeric
dNdF0() const noexcept {
329 return -2.0 * N * invF0;
347 [[nodiscard]] Numeric dNdT(Numeric, Numeric f)
const noexcept;
348 [[nodiscard]] Numeric dNdf(Numeric f)
const noexcept;
349 [[nodiscard]] Numeric dNdF0() const noexcept;
351 Numeric operator()(Numeric f) noexcept;
366 : N(1.0), T(T_), F0(F0_), expF0(exp), expm1F0(expm1) {}
375 [[nodiscard]] Numeric dNdT(Numeric t_ [[maybe_unused]],
377 [[nodiscard]] Numeric dNdf(Numeric f)
const noexcept;
378 [[nodiscard]]
constexpr Numeric
dNdF0() const noexcept {
382 Numeric operator()(Numeric f)
noexcept;
386 static constexpr Numeric S = 1.0;
387 static constexpr Numeric N = 0.0;
389 static constexpr Numeric
dSdT() noexcept {
return 0; }
390 static constexpr Numeric
dSdI0() noexcept {
return 0; }
391 static constexpr Numeric
dSdF0() noexcept {
return 0; }
392 static constexpr Numeric
dSdNLTEu() noexcept {
return 0; }
393 static constexpr Numeric
dSdNLTEl() noexcept {
return 0; }
396 static constexpr Numeric
dNdT() noexcept {
return 0; }
397 static constexpr Numeric
dNdI0() noexcept {
return 0; }
398 static constexpr Numeric
dNdF0() noexcept {
return 0; }
399 static constexpr Numeric
dNdNLTEu() noexcept {
return 0; }
400 static constexpr Numeric
dNdNLTEl() noexcept {
return 0; }
403 static constexpr bool do_nlte() noexcept {
return false; }
408 static constexpr Numeric N = 0.0;
426 Numeric dstim_dF0) noexcept
428 dSdI0val(r * br * stim * QT0 / QT),
429 dSdTval(I0 * (r * br * dstim_dT * QT0 / QT +
430 dSdI0val * (dbr_dT_rat - dQTdT / QT) +
431 drdT * br * stim * QT0 / QT)),
432 dSdF0val(r * I0 * br * dstim_dF0 * QT0 / QT),
433 dSdSELFVMRval(drdSELFVMR * I0 * br * stim * QT0 / QT) {
447 Numeric drdT)
noexcept;
449 [[nodiscard]]
constexpr Numeric
dSdT() const noexcept {
return dSdTval; }
450 [[nodiscard]]
constexpr Numeric
dSdI0() const noexcept {
return dSdI0val; }
451 [[nodiscard]]
constexpr Numeric
dSdF0() const noexcept {
return dSdF0val; }
452 static constexpr Numeric
dSdNLTEu() noexcept {
return 0; }
453 static constexpr Numeric
dSdNLTEl() noexcept {
return 0; }
454 [[nodiscard]]
constexpr Numeric
dSdSELFVMR() const noexcept {
455 return dSdSELFVMRval;
458 static constexpr Numeric
dNdT() noexcept {
return 0; }
459 static constexpr Numeric
dNdI0() noexcept {
return 0; }
460 static constexpr Numeric
dNdF0() noexcept {
return 0; }
461 static constexpr Numeric
dNdNLTEu() noexcept {
return 0; }
462 static constexpr Numeric
dNdNLTEl() noexcept {
return 0; }
465 static constexpr bool do_nlte() noexcept {
return false; }
500 Numeric dBdF0) noexcept
504 dNdTval(drdt * (e - k * B) - r * k * dBdT),
506 dNdF0val(r * (dedF0 - dkdF0 * B - k * dBdF0)),
509 dNdr2(r * (dedr2 - dkdr2 * B)),
510 dSdSELFVMRval(drdSELFVMR * k),
511 dNdSELFVMRval(drdSELFVMR * (e - k * B)) {
525 Numeric drdT)
noexcept;
527 [[nodiscard]]
constexpr Numeric
dSdT() const noexcept {
return 0; }
528 static constexpr Numeric
dSdI0() noexcept {
return 0; }
529 [[nodiscard]]
constexpr Numeric
dSdF0() const noexcept {
return dSdF0val; }
530 [[nodiscard]]
constexpr Numeric
dSdNLTEu() const noexcept {
return dSdr1; }
531 [[nodiscard]]
constexpr Numeric
dSdNLTEl() const noexcept {
return dSdr2; }
532 [[nodiscard]]
constexpr Numeric
dSdSELFVMR() const noexcept {
533 return dSdSELFVMRval;
536 [[nodiscard]]
constexpr Numeric
dNdT() const noexcept {
return dNdTval; }
537 static constexpr Numeric
dNdI0() noexcept {
return 0; }
538 [[nodiscard]]
constexpr Numeric
dNdF0() const noexcept {
return dNdF0val; }
539 [[nodiscard]]
constexpr Numeric
dNdNLTEu() const noexcept {
return -dSdr1; }
540 [[nodiscard]]
constexpr Numeric
dNdNLTEl() const noexcept {
return dNdr2; }
541 [[nodiscard]]
constexpr Numeric
dNdSELFVMR() const noexcept {
542 return dNdSELFVMRval;
545 static constexpr bool do_nlte() noexcept {
return true; }
591 Numeric dBdF0) noexcept
594 dSdI0val(r * QT0 / QT * K1 * K2 * K3),
595 dNdI0val(B * r * QT0 / QT * K1 * K2 * (K4 - K3)),
596 dSdTval(I0 * (drdT * QT0 / QT * K1 * K2 * K3 -
597 r * dQTdT * QT0 /
Math::pow2(QT) * K1 * K2 * K3 +
598 r * QT0 / QT * dK1dT * K2 * K3 +
599 r * QT0 / QT * K1 * dK2dT * K3 +
600 r * QT0 / QT * K1 * K2 * dK3dT)),
601 dNdTval(I0 * (dBdT * r * QT0 / QT * K1 * K2 * (K4 - K3) +
602 B * drdT * QT0 / QT * K1 * K2 * (K4 - K3) -
603 B * r * dQTdT * QT0 /
Math::pow2(QT) * K1 * K2 *
605 B * r * QT0 / QT * dK1dT * K2 * (K4 - K3) +
606 B * r * QT0 / QT * K1 * dK2dT * (K4 - K3) +
607 B * r * QT0 / QT * K1 * K2 * (dK4dT - dK3dT))),
608 dSdF0val(I0 * (r * QT0 / QT * K1 * dK2dF0 * K3 +
609 r * QT0 / QT * K1 * K2 * dK3dF0)),
610 dNdF0val(I0 * (dBdF0 * r * QT0 / QT * K1 * K2 * (K4 - K3) +
611 B * r * QT0 / QT * K1 * dK2dF0 * (K4 - K3) -
612 B * r * QT0 / QT * K1 * K2 * dK3dF0)),
613 dSdTl(I0 * r * QT0 / QT * K1 * K2 * dK3dTl),
614 dSdTu(I0 * r * QT0 / QT * K1 * K2 * dK3dTu),
615 dNdTu(B * r * QT0 / QT * K1 * K2 * (dK4dTu - dK3dTu)),
616 dSdSELFVMRval(I0 * drdSELFVMR * QT0 / QT * K1 * K2 * K3),
617 dNdSELFVMRval(I0 * B * drdSELFVMR * QT0 / QT * K1 * K2 * (K4 - K3)) {
637 Numeric drdT)
noexcept;
639 [[nodiscard]]
constexpr Numeric
dSdT() const noexcept {
return dSdTval; }
640 [[nodiscard]]
constexpr Numeric
dSdI0() const noexcept {
return dSdI0val; }
641 [[nodiscard]]
constexpr Numeric
dSdF0() const noexcept {
return dSdF0val; }
642 [[nodiscard]]
constexpr Numeric
dSdNLTEu() const noexcept {
return dSdTl; }
643 [[nodiscard]]
constexpr Numeric
dSdNLTEl() const noexcept {
return dSdTu; }
644 [[nodiscard]]
constexpr Numeric
dSdSELFVMR() const noexcept {
645 return dSdSELFVMRval;
648 [[nodiscard]]
constexpr Numeric
dNdT() const noexcept {
return dNdTval; }
649 [[nodiscard]]
constexpr Numeric
dNdI0() const noexcept {
return dNdI0val; }
650 [[nodiscard]]
constexpr Numeric
dNdF0() const noexcept {
return dNdF0val; }
651 [[nodiscard]]
constexpr Numeric
dNdNLTEu() const noexcept {
return -dSdTl; }
652 [[nodiscard]]
constexpr Numeric
dNdNLTEl() const noexcept {
return dNdTu; }
653 [[nodiscard]]
constexpr Numeric
dNdSELFVMR() const noexcept {
654 return dNdSELFVMRval;
657 static constexpr bool do_nlte() noexcept {
return true; }
671 [[nodiscard]] Complex dFdT(
const Output &dXdT, Numeric T)
const noexcept;
673 [[nodiscard]] Complex dFdf() const noexcept;
675 [[nodiscard]] Complex dFdF0() const noexcept;
677 [[nodiscard]] Complex dFdH(Numeric dfdH) const noexcept;
679 [[nodiscard]] Complex dFdVMR(const
Output &dXdVMR) const noexcept;
681 [[nodiscard]] Complex dFdFVC(Numeric
d) const noexcept;
683 [[nodiscard]] Complex dFdETA(Numeric
d) const noexcept;
685 [[nodiscard]] Complex dFdDV(Numeric
d) const noexcept;
687 [[nodiscard]] Complex dFdD0(Numeric
d) const noexcept;
689 [[nodiscard]] Complex dFdG0(Numeric
d) const noexcept;
691 [[nodiscard]] Complex dFdD2(Numeric
d) const noexcept;
693 [[nodiscard]] Complex dFdG2(Numeric
d) const noexcept;
695 [[nodiscard]] Complex F() const noexcept;
698 [[nodiscard]] constexpr
std::string_view name() const noexcept {
699 return std::visit([](
auto &&S) {
return S.name; }, ls);
703 Complex operator()(Numeric f)
noexcept;
710 bool manually_mirrored)
noexcept;
712 Calculator(
const Absorption::MirroringType mirror,
729 [[nodiscard]] Numeric dNdT(Numeric T, Numeric f)
const noexcept;
731 [[nodiscard]] Numeric dNdf(Numeric f)
const noexcept;
733 [[nodiscard]] Numeric dNdF0() const noexcept;
735 [[nodiscard]] Numeric operator()(Numeric f) noexcept;
739 const Numeric T) noexcept;
752 Species::Species self_species{Species::Species::Bath};
753 Species::Species scaling_species{Species::Species::FINAL};
757 [[nodiscard]] Numeric S() const noexcept;
760 [[nodiscard]] Numeric dSdT() const noexcept;
763 [[nodiscard]] Numeric dSdI0() const noexcept;
766 [[nodiscard]] Numeric dSdF0() const noexcept;
769 [[nodiscard]] Numeric dSdNLTEu() const noexcept;
772 [[nodiscard]] Numeric dSdNLTEl() const noexcept;
775 [[nodiscard]] Numeric dSdSELFVMR() const noexcept;
778 [[nodiscard]] Numeric dSdOTHERVMR_if() const noexcept;
781 [[nodiscard]] Numeric N() const noexcept;
784 [[nodiscard]] Numeric dNdT() const noexcept;
787 [[nodiscard]] Numeric dNdI0() const noexcept;
790 [[nodiscard]] Numeric dNdF0() const noexcept;
793 [[nodiscard]] Numeric dNdNLTEu() const noexcept;
796 [[nodiscard]] Numeric dNdNLTEl() const noexcept;
799 [[nodiscard]] Numeric dNdSELFVMR() const noexcept;
802 [[nodiscard]] Numeric dNdOTHERVMR_if() const noexcept;
805 [[nodiscard]] constexpr
bool do_nlte() const noexcept {
806 return std::visit([](
auto &&S) {
return S.do_nlte(); }, ls_str);
809 [[nodiscard]] Species::Species
scaler() const noexcept {
810 return scaling_species;
818 const Numeric drdSELFVMR,
822 const Index line_index)
noexcept;
836 Species::Species other)
noexcept;
842 ComplexMatrix
dF, dN;
848 const bool nlte) noexcept
850 N(nlte ? f.nelem() : 0, 0),
851 dF(f.nelem(), jacobian_quantities.nelem(), 0),
852 dN(nlte ? f.nelem() : 0, nlte ? jacobian_quantities.nelem() : 0, 0),
877 const Index nf = f_grid.nelem();
878 for (Index i = 0; i < nf; i++) {
879 if (F[i].real() < 0) {
939void compute(ComputeData &com,
940 ComputeData &sparse_com,
946 const Numeric &self_vmr,
947 const Numeric &isot_ratio,
948 const Numeric &rtp_pressure,
949 const Numeric &rtp_temperature,
951 const Numeric &sparse_lim,
953 const Options::LblSpeedup speedup_type,
956Vector linear_sparse_f_grid(
const Vector &f_grid,
959bool good_linear_sparse_f_grid(
const Vector &f_grid_dense,
960 const Vector &f_grid_sparse)
noexcept;
962Vector triple_sparse_f_grid(
const Vector &f_grid,
963 const Numeric &sparse_df)
noexcept;
This can be used to make arrays out of anything.
std::variant< Noshape, Doppler, Lorentz, Voigt, SpeedDependentVoigt, HartmannTran > Variant
Class encapsulating all supported types of intensity calculations of individual absorption lines.
std::variant< Nostrength, LocalThermodynamicEquilibrium, FullNonLocalThermodynamicEquilibrium, VibrationalTemperaturesNonLocalThermodynamicEquilibrium > Variant
Species::Species scaler() const noexcept
std::variant< Nonorm, VanVleckHuber, VanVleckWeisskopf, RosenkranzQuadratic, SimpleFrequencyScaling > Variant
Class to map energy levels.
Constains various line scaling functions.
Namespace to contain things required for absorption calculations.
constexpr Numeric pi
The following mathematical constants are generated in python Decimal package by the code:
constexpr Numeric k
Boltzmann constant convenience name [J/K].
constexpr Numeric c
Speed of light convenience name [m/s].
constexpr Numeric inv_pi
Inverse of pi.
constexpr Numeric h
Planck constant convenience name [J s].
Computations of line shape derived parameters.
constexpr auto pow2(auto x) noexcept
power of two
Polarization
Zeeman polarization selection.
constexpr T abs(T x) noexcept
Main computational data for the line shape and strength calculations.
ComputeData & operator+=(const ComputeData &other)
Adds two identical compute data fields, the size must be identical.
ComputeData(const Vector &f, const ArrayOfRetrievalQuantity &jacobian_quantities, const bool nlte) noexcept
void enforce_positive_absorption() noexcept
All four fields are set to zero at i if F[i].real() < 0.
constexpr Doppler(Numeric F0_noshift, Numeric DC, Numeric dZ) noexcept
Complex operator()(Numeric f) noexcept
constexpr Complex dFdT(const Output &, Numeric T) const noexcept
static constexpr Complex dFdD0(Numeric) noexcept
static constexpr std::string_view name
static constexpr Complex dFdVMR(const Output &) noexcept
constexpr Complex dFdH(Numeric dZ) const noexcept
static constexpr Complex dFdFVC(Numeric) noexcept
static constexpr Complex dFdDV(Numeric) noexcept
static constexpr Complex dFdETA(Numeric) noexcept
constexpr Complex dFdf() const noexcept
static constexpr Complex dFdD2(Numeric) noexcept
static constexpr Complex dFdG0(Numeric) noexcept
static constexpr Complex dFdG2(Numeric) noexcept
constexpr Complex dFdF0() const noexcept
static constexpr Numeric dNdI0() noexcept
constexpr Numeric dSdF0() const noexcept
constexpr Numeric dNdNLTEl() const noexcept
constexpr Numeric dSdNLTEl() const noexcept
constexpr FullNonLocalThermodynamicEquilibrium(Numeric r, Numeric drdSELFVMR, Numeric drdt, Numeric k, Numeric dkdF0, Numeric dkdr1, Numeric dkdr2, Numeric e, Numeric dedF0, Numeric dedr2, Numeric B, Numeric dBdT, Numeric dBdF0) noexcept
static constexpr bool do_nlte() noexcept
static constexpr Numeric dSdI0() noexcept
constexpr Numeric dNdNLTEu() const noexcept
constexpr Numeric dSdT() const noexcept
constexpr Numeric dSdSELFVMR() const noexcept
constexpr Numeric dNdT() const noexcept
constexpr Numeric dNdSELFVMR() const noexcept
constexpr Numeric dNdF0() const noexcept
constexpr Numeric dSdNLTEu() const noexcept
constexpr LocalThermodynamicEquilibrium(Numeric I0, Numeric r, Numeric drdSELFVMR, Numeric drdT, Numeric QT0, Numeric QT, Numeric dQTdT, Numeric br, Numeric dbr_dT_rat, Numeric stim, Numeric dstim_dT, Numeric dstim_dF0) noexcept
constexpr Numeric dSdF0() const noexcept
static constexpr Numeric dNdSELFVMR() noexcept
static constexpr Numeric dSdNLTEl() noexcept
static constexpr Numeric dNdT() noexcept
constexpr Numeric dSdSELFVMR() const noexcept
static constexpr Numeric dNdNLTEl() noexcept
static constexpr Numeric dSdNLTEu() noexcept
constexpr Numeric dSdT() const noexcept
static constexpr Numeric dNdI0() noexcept
constexpr Numeric dSdI0() const noexcept
static constexpr bool do_nlte() noexcept
static constexpr Numeric dNdNLTEu() noexcept
static constexpr Numeric dNdF0() noexcept
constexpr Complex dFdVMR(const Output &d) const noexcept
constexpr Complex dFdD0(Numeric d) const noexcept
static constexpr Complex dFdD2(Numeric) noexcept
constexpr Complex dFdDV(Numeric d) const noexcept
constexpr Complex dFdF0() const noexcept
static constexpr Complex dFdG2(Numeric)
constexpr Complex dFdG0(Numeric d) const noexcept
constexpr Complex dFdT(const Output &d, Numeric) const noexcept
static constexpr Complex dFdETA(Numeric) noexcept
constexpr Complex dFdf() const noexcept
static constexpr Complex dFdFVC(Numeric) noexcept
constexpr Lorentz(Numeric F0_noshift, const Output &ls) noexcept
static constexpr Complex dFdH(Numeric) noexcept
constexpr Complex operator()(Numeric f) noexcept
static constexpr std::string_view name
static constexpr Numeric dNdf(Numeric) noexcept
constexpr Numeric operator()(Numeric) noexcept
constexpr Nonorm() noexcept=default
constexpr Numeric dNdF0() const noexcept
static constexpr Complex dFdETA(Numeric) noexcept
static constexpr Complex dFdH(Numeric) noexcept
static constexpr Complex dFdG2(Numeric) noexcept
static constexpr Complex dFdVMR(const Output &) noexcept
static constexpr Complex dFdT(const Output &, Numeric) noexcept
static constexpr Complex F
static constexpr Complex dFdD2(Numeric) noexcept
static constexpr Complex dFdf() noexcept
static constexpr std::string_view name
static constexpr Complex dFdG0(Numeric) noexcept
static constexpr Complex dFdDV(Numeric) noexcept
static constexpr Complex dFdD0(Numeric) noexcept
static constexpr Complex dFdF0() noexcept
static constexpr Complex dFdFVC(Numeric) noexcept
constexpr Complex operator()(Numeric) const noexcept
static constexpr Numeric dNdT() noexcept
static constexpr Numeric dNdNLTEu() noexcept
static constexpr Numeric dSdNLTEu() noexcept
static constexpr Numeric dSdI0() noexcept
static constexpr Numeric dNdF0() noexcept
static constexpr Numeric dNdI0() noexcept
static constexpr Numeric dNdSELFVMR() noexcept
static constexpr Numeric dNdNLTEl() noexcept
static constexpr Numeric dSdT() noexcept
static constexpr Numeric dSdNLTEl() noexcept
static constexpr Numeric dSdSELFVMR() noexcept
static constexpr bool do_nlte() noexcept
static constexpr Numeric dSdF0() noexcept
constexpr Numeric dNdF0() const noexcept
SimpleFrequencyScaling(Numeric F0_, Numeric T_) noexcept
constexpr SimpleFrequencyScaling(Numeric exp, Numeric expm1, Numeric F0_, Numeric T_)
Complex dFdD2(Numeric dD2dD2) const noexcept
static constexpr Complex dFdETA(Numeric) noexcept
Complex dFdD0(Numeric dD0dD0) const noexcept
static constexpr std::string_view name
Complex dFdH(Numeric dZ) const noexcept
void update_calcs() noexcept
Complex dFdG2(Numeric dG2dG2) const noexcept
Complex dFdT(const Output &d, Numeric T) const noexcept
Complex dFdf() const noexcept
Complex dFdF0() const noexcept
CalcType init(const Complex c2) const noexcept
Complex dFdG0(Numeric dG0dG0) const noexcept
Complex dFdVMR(const Output &d) const noexcept
static constexpr Complex dFdFVC(Numeric) noexcept
static constexpr Complex dFdDV(Numeric) noexcept
Complex operator()(Numeric f) noexcept
constexpr Numeric dNdf(Numeric f) const noexcept
static constexpr Numeric dNdT(Numeric, Numeric) noexcept
constexpr VanVleckWeisskopf(Numeric F0) noexcept
constexpr Numeric operator()(Numeric f) noexcept
constexpr Numeric dNdF0() const noexcept
constexpr Numeric dNdI0() const noexcept
constexpr VibrationalTemperaturesNonLocalThermodynamicEquilibrium(Numeric I0, Numeric QT0, Numeric QT, Numeric dQTdT, Numeric r, Numeric drdSELFVMR, Numeric drdT, Numeric K1, Numeric dK1dT, Numeric K2, Numeric dK2dT, Numeric dK2dF0, Numeric K3, Numeric dK3dT, Numeric dK3dF0, Numeric dK3dTl, Numeric dK3dTu, Numeric K4, Numeric dK4dT, Numeric dK4dTu, Numeric B, Numeric dBdT, Numeric dBdF0) noexcept
constexpr Numeric dSdI0() const noexcept
constexpr Numeric dSdNLTEu() const noexcept
constexpr Numeric dSdT() const noexcept
constexpr Numeric dNdNLTEl() const noexcept
constexpr Numeric dNdNLTEu() const noexcept
constexpr Numeric dNdT() const noexcept
constexpr Numeric dSdNLTEl() const noexcept
constexpr Numeric dNdF0() const noexcept
constexpr Numeric dSdSELFVMR() const noexcept
static constexpr bool do_nlte() noexcept
constexpr Numeric dNdSELFVMR() const noexcept
constexpr Numeric dSdF0() const noexcept
static constexpr Complex dFdD2(Numeric) noexcept
static constexpr std::string_view name
constexpr Voigt(Numeric F0_noshift, const Output &ls, Numeric DC, Numeric dZ) noexcept
constexpr Complex dFdD0(Numeric d) const noexcept
constexpr Complex dFdF0() const noexcept
constexpr Complex dFdH(Numeric dZ) const noexcept
constexpr Complex dFdT(const Output &d, Numeric T) const noexcept
constexpr Complex dFdf() const noexcept
static constexpr Complex dFdG2(Numeric)
constexpr Complex dFdVMR(const Output &d) const noexcept
static constexpr Complex dFdFVC(Numeric) noexcept
constexpr Complex dFdG0(Numeric d) const noexcept
constexpr Complex dFdDV(Numeric d) const noexcept
static constexpr Complex dFdETA(Numeric) noexcept
Complex operator()(Numeric f) noexcept