ARTS  2.3.1285(git:92a29ea9-dirty)
linefunctions.h
Go to the documentation of this file.
1 /* Copyright (C) 2017
2  * Richard Larsson <ric.larsson@gmail.com>
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License as published by the
6  * Free Software Foundation; either version 2, or (at your option) any
7  * later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17  * USA. */
18 
30 #ifndef linefunctions_h
31 #define linefunctions_h
32 
33 #include "complex.h"
34 #include "energylevelmap.h"
35 #include "jacobian.h"
36 #include "absorptionlines.h"
37 
39 namespace Linefunctions {
40 
42 constexpr Index ExpectedDataSize() { return 2; }
43 
59 void set_lineshape(Eigen::Ref<Eigen::VectorXcd> F,
60  const Eigen::Ref<const Eigen::VectorXd> f_grid,
61  const Absorption::SingleLine& line,
62  const Numeric& temperature,
63  const Numeric& zeeman_df,
64  const Numeric& magnetic_magnitude,
65  const Numeric& doppler_constant,
66  const LineShape::Output& lso,
67  const LineShape::Type lineshape_type,
68  const Absorption::MirroringType mirroring_type,
69  const Absorption::NormalizationType norm_type);
70 
88 void set_lorentz(
89  Eigen::Ref<Eigen::VectorXcd> F,
90  Eigen::Ref<Eigen::MatrixXcd> dF,
91  Eigen::Ref<Eigen::Matrix<Complex, Eigen::Dynamic, ExpectedDataSize()>> data,
92  const Eigen::Ref<const Eigen::VectorXd> f_grid,
93  const Numeric& zeeman_df,
94  const Numeric& magnetic_magnitude,
95  const Numeric& F0_noshift,
96  const LineShape::Output& lso,
97  const AbsorptionLines& band=AbsorptionLines(),
98  const Index& line_ind=0,
99  const ArrayOfRetrievalQuantity& derivatives_data =
101  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
102  const LineShape::Output& dT = {0, 0, 0, 0, 0, 0, 0, 0, 0},
103  const LineShape::Output& dVMR = {0, 0, 0, 0, 0, 0, 0, 0, 0});
104 
127 void set_htp(Eigen::Ref<Eigen::VectorXcd> F,
128  Eigen::Ref<Eigen::MatrixXcd> dF,
129  const Eigen::Ref<const Eigen::VectorXd> f_grid,
130  const Numeric& zeeman_df,
131  const Numeric& magnetic_magnitude,
132  const Numeric& F0_noshift,
133  const Numeric& GD_div_F0,
134  const LineShape::Output& lso,
135  const AbsorptionLines& band=AbsorptionLines(),
136  const Index& line_ind=0,
137  const ArrayOfRetrievalQuantity& derivatives_data =
139  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
140  const Numeric& dGD_div_F0_dT = 0.0,
141  const LineShape::Output& dT = {0, 0, 0, 0, 0, 0, 0, 0, 0},
142  const LineShape::Output& dVMR = {0, 0, 0, 0, 0, 0, 0, 0, 0});
143 
163 void set_voigt(
164  Eigen::Ref<Eigen::VectorXcd> F,
165  Eigen::Ref<Eigen::MatrixXcd> dF,
166  Eigen::Ref<Eigen::Matrix<Complex, Eigen::Dynamic, ExpectedDataSize()>> data,
167  const Eigen::Ref<const Eigen::VectorXd> f_grid,
168  const Numeric& zeeman_df,
169  const Numeric& magnetic_magnitude,
170  const Numeric& F0_noshift,
171  const Numeric& GD_div_F0,
172  const LineShape::Output& lso,
173  const AbsorptionLines& band=AbsorptionLines(),
174  const Index& line_ind=0,
175  const ArrayOfRetrievalQuantity& derivatives_data =
177  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
178  const Numeric& dGD_div_F0_dT = 0.0,
179  const LineShape::Output& dT = {0, 0, 0, 0, 0, 0, 0, 0, 0},
180  const LineShape::Output& dVMR = {0, 0, 0, 0, 0, 0, 0, 0, 0});
181 
198 void set_doppler(
199  Eigen::Ref<Eigen::VectorXcd> F,
200  Eigen::Ref<Eigen::MatrixXcd> dF,
201  Eigen::Ref<Eigen::Matrix<Complex, Eigen::Dynamic, ExpectedDataSize()>> data,
202  const Eigen::Ref<const Eigen::VectorXd> f_grid,
203  const Numeric& zeeman_df,
204  const Numeric& magnetic_magnitude,
205  const Numeric& F0_noshift,
206  const Numeric& GD_div_F0,
207  const AbsorptionLines& band=AbsorptionLines(),
208  const Index& line_ind=0,
209  const ArrayOfRetrievalQuantity& derivatives_data =
211  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
212  const Numeric& dGD_div_F0_dT = 0.0);
213 
238  Eigen::Ref<Eigen::VectorXcd> F,
239  Eigen::Ref<Eigen::MatrixXcd> dF,
240  const Eigen::Ref<Eigen::VectorXcd> Fm,
241  const Eigen::Ref<Eigen::MatrixXcd> dFm,
242  const LineShape::Output& lso,
243  const bool with_mirroring,
244  const AbsorptionLines& band=AbsorptionLines(),
245  const Index& line_ind=0,
246  const ArrayOfRetrievalQuantity& derivatives_data =
248  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
249  const LineShape::Output& dT = {0, 0, 0, 0, 0, 0, 0, 0, 0},
250  const LineShape::Output& dVMR = {0, 0, 0, 0, 0, 0, 0, 0, 0});
251 
265  Eigen::Ref<Eigen::VectorXcd> F,
266  Eigen::Ref<Eigen::MatrixXcd> dF,
267  const Eigen::Ref<const Eigen::VectorXd> f_grid,
268  const Numeric& F0,
269  const Numeric& T,
270  const AbsorptionLines& band=AbsorptionLines(),
271  const Index& line_ind=0,
272  const ArrayOfRetrievalQuantity& derivatives_data =
274  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex());
275 
289 void apply_VVH_scaling(
290  Eigen::Ref<Eigen::VectorXcd> F,
291  Eigen::Ref<Eigen::MatrixXcd> dF,
292  Eigen::Ref<Eigen::Matrix<Complex, Eigen::Dynamic, ExpectedDataSize()>> data,
293  const Eigen::Ref<const Eigen::VectorXd> f_grid,
294  const Numeric& F0,
295  const Numeric& T,
296  const AbsorptionLines& band=AbsorptionLines(),
297  const Index& line_ind=0,
298  const ArrayOfRetrievalQuantity& derivatives_data =
300  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex());
301 
313 void apply_VVW_scaling(
314  Eigen::Ref<Eigen::VectorXcd> F,
315  Eigen::Ref<Eigen::MatrixXcd> dF,
316  const Eigen::Ref<const Eigen::VectorXd> f_grid,
317  const Numeric& F0,
318  const AbsorptionLines& band=AbsorptionLines(),
319  const Index& line_ind=0,
320  const ArrayOfRetrievalQuantity& derivatives_data =
322  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex());
323 
337  Numeric E0,
338  Numeric F0,
339  Numeric QT0,
340  Numeric T0,
341  Numeric QT,
342  Numeric T);
343 
363  Eigen::Ref<Eigen::VectorXcd> F,
364  Eigen::Ref<Eigen::MatrixXcd> dF,
365  Eigen::Ref<Eigen::VectorXcd> N,
366  Eigen::Ref<Eigen::MatrixXcd> dN,
367  const Absorption::SingleLine& line,
368  const Numeric& T,
369  const Numeric& T0,
370  const Numeric& isotopic_ratio,
371  const Numeric& QT,
372  const Numeric& QT0,
373  const AbsorptionLines& band=AbsorptionLines(),
374  const Index& line_ind=0,
375  const ArrayOfRetrievalQuantity& derivatives_data =
377  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
378  const Numeric& dQT_dT = 0.0);
379 
403  Eigen::Ref<Eigen::VectorXcd> F,
404  Eigen::Ref<Eigen::MatrixXcd> dF,
405  Eigen::Ref<Eigen::VectorXcd> N,
406  Eigen::Ref<Eigen::MatrixXcd> dN,
407  const Absorption::SingleLine& line,
408  const Numeric& T,
409  const Numeric& T0,
410  const Numeric& Tu,
411  const Numeric& Tl,
412  const Numeric& Evu,
413  const Numeric& Evl,
414  const Numeric& isotopic_ratio,
415  const Numeric& QT,
416  const Numeric& QT0,
417  const AbsorptionLines& band=AbsorptionLines(),
418  const Index& line_ind=0,
419  const ArrayOfRetrievalQuantity& derivatives_data =
421  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex(),
422  const Numeric& dQT_dT = 0.0);
423 
436  Eigen::Ref<Eigen::MatrixXcd> dF,
437  const AbsorptionLines& band,
438  const Index& line_ind,
439  const ArrayOfRetrievalQuantity& derivatives_data,
440  const ArrayOfIndex& derivatives_data_position,
441  const Numeric& T,
442  const Numeric& P,
443  const Vector& vmrs);
444 
453 
461 Numeric dDopplerConstant_dT(const Numeric& T, const Numeric& dc);
462 
471 void find_cutoff_ranges(Index& start_cutoff,
472  Index& nelem_cutoff,
473  const Eigen::Ref<const Eigen::VectorXd> f_grid,
474  const Numeric& fmin,
475  const Numeric& fmax);
476 
501  Eigen::Ref<Eigen::VectorXcd> F,
502  Eigen::Ref<Eigen::MatrixXcd> dF,
503  Eigen::Ref<Eigen::VectorXcd> N,
504  Eigen::Ref<Eigen::MatrixXcd> dN,
505  const Numeric& r1,
506  const Numeric& r2,
507  const Numeric& g1,
508  const Numeric& g2,
509  const Numeric& A21,
510  const Numeric& F0,
511  const Numeric& T,
512  const AbsorptionLines& band=AbsorptionLines(),
513  const Index& line_ind=0,
514  const ArrayOfRetrievalQuantity& derivatives_data =
516  const ArrayOfIndex& derivatives_data_position = ArrayOfIndex());
517 
519 public:
520  Eigen::VectorXcd F;
521  Eigen::VectorXcd N;
522  Eigen::MatrixXcd dF;
523  Eigen::MatrixXcd dN;
524 
525  Eigen::Matrix<Complex, 1, 1> Fc;
526  Eigen::Matrix<Complex, 1, 1> Nc;
527  Eigen::Matrix<Complex, 1, Eigen::Dynamic> dFc;
528  Eigen::Matrix<Complex, 1, Eigen::Dynamic> dNc;
529 
530  Eigen::Matrix<Complex, Eigen::Dynamic, Linefunctions::ExpectedDataSize()> data;
531  Eigen::Matrix<Complex, 1, Linefunctions::ExpectedDataSize()> datac;
532 
534  F.setZero(nf);
535  N.setZero(nf);
536  dF.setZero(nf, nj);
537  dN.setZero(nf, nj);
538  data.setZero(nf, Linefunctions::ExpectedDataSize());
539 
540  Fc.setZero(1);
541  Nc.setZero(1);
542  dFc.setZero(1, nj);
543  dNc.setZero(1, nj);
544  datac.setZero(1, Linefunctions::ExpectedDataSize());
545  }
546 
547  void SetZero() {
548  F.setZero(F.rows());
549  N.setZero(N.rows());
550  dF.setZero(dF.rows(), dF.cols());
551  dN.setZero(dN.rows(), dN.cols());
552  }
553 }; // InternalData
554 
579  InternalData& scratch,
580  InternalData& sum,
581  const ConstVectorView f_grid,
582  const AbsorptionLines& band,
583  const ArrayOfRetrievalQuantity& derivatives_data,
584  const ArrayOfIndex& derivatives_data_active,
585  const Vector& vmrs,
586  const EnergyLevelMap& nlte, // This must be turned into a map of some kind...
587  const Numeric& P,
588  const Numeric& T,
589  const Numeric& isot_ratio,
590  const Numeric& H,
591  const Numeric& DC,
592  const Numeric& dDCdT,
593  const Numeric& QT,
594  const Numeric& dQTdT,
595  const Numeric& QT0,
596  const bool no_negatives=false,
597  const bool zeeman=false,
598  const Zeeman::Polarization zeeman_polarization=Zeeman::Polarization::Pi);
599 }; // namespace Linefunctions
600 
601 #endif //linefunctions_h
602 
603 
Eigen::Matrix< Complex, 1, Eigen::Dynamic > dNc
INDEX Index
The type to use for all integer numbers and indices.
Definition: matpack.h:39
#define N
Definition: rng.cc:164
void apply_rosenkranz_quadratic_scaling(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &F0, const Numeric &T, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex())
Applies Rosenkranz quadratic normalization to already set line shape.
Computations and data for a single absorption line.
Vector vmrs(const ConstVectorView &atmospheric_vmrs, const ArrayOfArrayOfSpeciesTag &atmospheric_species, const QuantumIdentifier &self, const ArrayOfSpeciesTag &lineshape_species, bool self_in_list, bool bath_in_list, Type type)
Returns a VMR vector for this model&#39;s main calculations.
InternalData(Index nf, Index nj)
Eigen::Matrix< Complex, 1, 1 > Fc
A class implementing complex numbers for ARTS.
MirroringType
Describes the type of mirroring line effects.
void apply_linemixing_scaling_and_mirroring(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, const Eigen::Ref< Eigen::VectorXcd > Fm, const Eigen::Ref< Eigen::MatrixXcd > dFm, const LineShape::Output &lso, const bool with_mirroring, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const LineShape::Output &dT={0, 0, 0, 0, 0, 0, 0, 0, 0}, const LineShape::Output &dVMR={0, 0, 0, 0, 0, 0, 0, 0, 0})
Applies line mixing scaling to already set lineshape and line mirror.
Main output of Model.
NormalizationType
Describes the type of normalization line effects.
G0 G2 FVC Y DV Numeric E0
void apply_VVH_scaling(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::Matrix< Complex, Eigen::Dynamic, ExpectedDataSize()>> data, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &F0, const Numeric &T, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex())
Applies Van Vleck and Huber normalization to already set line shape.
Routines for setting up the jacobian.
The Vector class.
Definition: matpackI.h:860
void set_cross_section_of_band(InternalData &scratch, InternalData &sum, const ConstVectorView f_grid, const AbsorptionLines &band, const ArrayOfRetrievalQuantity &derivatives_data, const ArrayOfIndex &derivatives_data_active, const Vector &vmrs, const EnergyLevelMap &nlte, const Numeric &P, const Numeric &T, const Numeric &isot_ratio, const Numeric &H, const Numeric &DC, const Numeric &dDCdT, const Numeric &QT, const Numeric &dQTdT, const Numeric &QT0, const bool no_negatives=false, const bool zeeman=false, const Zeeman::Polarization zeeman_polarization=Zeeman::Polarization::Pi)
Computes the cross-section of an absorption band.
Numeric lte_linestrength(Numeric S0, Numeric E0, Numeric F0, Numeric QT0, Numeric T0, Numeric QT, Numeric T)
Gets the local thermodynamic equilibrium line strength.
constexpr Index ExpectedDataSize()
Size required for data buffer.
Definition: linefunctions.h:42
Array< RetrievalQuantity > ArrayOfRetrievalQuantity
Definition: jacobian.h:402
void apply_lineshapemodel_jacobian_scaling(Eigen::Ref< Eigen::MatrixXcd > dF, const AbsorptionLines &band, const Index &line_ind, const ArrayOfRetrievalQuantity &derivatives_data, const ArrayOfIndex &derivatives_data_position, const Numeric &T, const Numeric &P, const Vector &vmrs)
Applies the line-by-line pressure broadening jacobian for the matching lines.
void set_voigt(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::Matrix< Complex, Eigen::Dynamic, ExpectedDataSize()>> data, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &zeeman_df, const Numeric &magnetic_magnitude, const Numeric &F0_noshift, const Numeric &GD_div_F0, const LineShape::Output &lso, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const Numeric &dGD_div_F0_dT=0.0, const LineShape::Output &dT={0, 0, 0, 0, 0, 0, 0, 0, 0}, const LineShape::Output &dVMR={0, 0, 0, 0, 0, 0, 0, 0, 0})
Sets the Voigt line shape.
Contains the absorption namespace.
void apply_VVW_scaling(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &F0, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex())
Applies Van Vleck and Weiskopf normalization to already set line shape.
G0 G2 FVC Y DV Numeric Numeric Numeric Zeeman LowerQuantumNumbers void * data
void set_doppler(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::Matrix< Complex, Eigen::Dynamic, ExpectedDataSize()>> data, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &zeeman_df, const Numeric &magnetic_magnitude, const Numeric &F0_noshift, const Numeric &GD_div_F0, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const Numeric &dGD_div_F0_dT=0.0)
Sets the Doppler line shape.
Array< Index > ArrayOfIndex
An array of Index.
Definition: array.h:40
Eigen::Matrix< Complex, 1, Eigen::Dynamic > dFc
std::complex< Numeric > Complex
Definition: complex.h:33
void set_htp(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &zeeman_df, const Numeric &magnetic_magnitude, const Numeric &F0_noshift, const Numeric &GD_div_F0, const LineShape::Output &lso, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const Numeric &dGD_div_F0_dT=0.0, const LineShape::Output &dT={0, 0, 0, 0, 0, 0, 0, 0, 0}, const LineShape::Output &dVMR={0, 0, 0, 0, 0, 0, 0, 0, 0})
Sets the HTP line shape.
void apply_linestrength_scaling_by_lte(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::VectorXcd > N, Eigen::Ref< Eigen::MatrixXcd > dN, const Absorption::SingleLine &line, const Numeric &T, const Numeric &T0, const Numeric &isotopic_ratio, const Numeric &QT, const Numeric &QT0, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const Numeric &dQT_dT=0.0)
Applies linestrength to already set line shape by LTE population type.
Line functions related to line shapes and line strength.
Definition: linefunctions.h:39
NUMERIC Numeric
The type to use for all floating point numbers.
Definition: matpack.h:33
Numeric dDopplerConstant_dT(const Numeric &T, const Numeric &dc)
Returns the temperature derivative of the frequency-independent part of the Doppler broadening...
Eigen::Matrix< Complex, 1, Linefunctions::ExpectedDataSize()> datac
Class to map energy levels.
This can be used to make arrays out of anything.
Definition: array.h:40
void find_cutoff_ranges(Index &start_cutoff, Index &nelem_cutoff, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &fmin, const Numeric &fmax)
Sets cutoff frequency indices.
Eigen::Matrix< Complex, Eigen::Dynamic, Linefunctions::ExpectedDataSize()> data
G0 G2 FVC Y DV F0
Polarization
Zeeman polarization selection.
Definition: zeemandata.h:43
void set_lineshape(Eigen::Ref< Eigen::VectorXcd > F, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Absorption::SingleLine &line, const Numeric &temperature, const Numeric &zeeman_df, const Numeric &magnetic_magnitude, const Numeric &doppler_constant, const LineShape::Output &lso, const LineShape::Type lineshape_type, const Absorption::MirroringType mirroring_type, const Absorption::NormalizationType norm_type)
Sets the lineshape normalized to unity.
Absorption::Lines AbsorptionLines
A constant view of a Vector.
Definition: matpackI.h:476
Numeric DopplerConstant(Numeric T, Numeric mass)
Returns the frequency-independent part of the Doppler broadening.
void apply_linestrength_scaling_by_vibrational_nlte(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::VectorXcd > N, Eigen::Ref< Eigen::MatrixXcd > dN, const Absorption::SingleLine &line, const Numeric &T, const Numeric &T0, const Numeric &Tu, const Numeric &Tl, const Numeric &Evu, const Numeric &Evl, const Numeric &isotopic_ratio, const Numeric &QT, const Numeric &QT0, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const Numeric &dQT_dT=0.0)
Applies linestrength to already set line shape by vibrational level temperatures. ...
void apply_linestrength_from_nlte_level_distributions(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::VectorXcd > N, Eigen::Ref< Eigen::MatrixXcd > dN, const Numeric &r1, const Numeric &r2, const Numeric &g1, const Numeric &g2, const Numeric &A21, const Numeric &F0, const Numeric &T, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex())
Applies non-lte linestrength to already set line shape.
Eigen::Matrix< Complex, 1, 1 > Nc
invlib::Matrix< ArtsMatrix > Matrix
invlib wrapper type for ARTS matrices.
Definition: oem.h:34
void set_lorentz(Eigen::Ref< Eigen::VectorXcd > F, Eigen::Ref< Eigen::MatrixXcd > dF, Eigen::Ref< Eigen::Matrix< Complex, Eigen::Dynamic, ExpectedDataSize()>> data, const Eigen::Ref< const Eigen::VectorXd > f_grid, const Numeric &zeeman_df, const Numeric &magnetic_magnitude, const Numeric &F0_noshift, const LineShape::Output &lso, const AbsorptionLines &band=AbsorptionLines(), const Index &line_ind=0, const ArrayOfRetrievalQuantity &derivatives_data=ArrayOfRetrievalQuantity(), const ArrayOfIndex &derivatives_data_position=ArrayOfIndex(), const LineShape::Output &dT={0, 0, 0, 0, 0, 0, 0, 0, 0}, const LineShape::Output &dVMR={0, 0, 0, 0, 0, 0, 0, 0, 0})
Sets the Lorentz line shape.