66 if (N == J and N == J2) {
67 const Numeric JJ1 = J * (J + 1);
69 const Numeric JJ3 = JJ1 * JJ1 * JJ1;
70 return +(B * JJ1 - D * JJ2 + H * JJ3) -
71 (gamma + gamma_D * JJ1 + gamma_H * JJ2) +
72 2 / 3 * (lambda + lambda_D * JJ1 + lambda_H * JJ2);
73 }
else if (N == (J - 1) and N == (J2 - 1)) {
74 const Numeric JJ1 = J * (J - 1);
76 const Numeric JJ3 = JJ1 * JJ1 * JJ1;
77 return +(B * JJ1 - D * JJ2 + H * JJ3) +
78 (gamma + gamma_D * JJ1 + gamma_H * JJ2) * (J - 1) +
79 (lambda + lambda_D * JJ1 + lambda_H * JJ2) *
80 (2 / 3 - 2 * J / (2 * J + 1));
81 }
else if (N == (J + 1) and N == (J2 + 1)) {
82 const Numeric JJ1 = (J + 2) * (J + 1);
84 const Numeric JJ3 = JJ1 * JJ1 * JJ1;
85 return +(B * JJ1 - D * JJ2 + H * JJ3) -
86 (gamma + gamma_D * JJ1 + gamma_H * JJ2) * (J + 2) +
87 (lambda + lambda_D * JJ1 + lambda_H * JJ2) *
88 (2 / 3 - 2 * (J + 1) / (2 * J + 1));
90 }
else if ((N == (J + 1) and N == (J2 - 1)) or
91 (N == (J - 1) and N == (J2 + 1))) {
92 const Numeric JJ1 = J * J + J + 1;
94 return (lambda + lambda_D * JJ1 + lambda_H * JJ2) * 2 *
168 return B * J * (J + 1);
194 if (
Index(HartmannPos::SIZE) not_eq mdata.nelem()) error =
true;
199 throw std::runtime_error(
200 "Bad initializaton of BasisRate, type and size disagree...");
216 const Numeric& collider_mass)
const;
231 const Numeric& collider_mass)
const {
234 return mol_X(L, B0, T, main_mass, collider_mass);
265 if (
Index(HartmannPos::SIZE) not_eq mdata.nelem()) error =
true;
270 throw std::runtime_error(
271 "Bad initializaton of BasisRate, type and size disagree...");
293 return mol_X(L, B0, T);
393 const Vector& collider_species_vmr,
492 const Eigen::ComplexEigenSolver<Eigen::MatrixXcd>& M);
536 const Index& wigner_initialized,
542 extern void arts_relmat_interface__hartmann_and_niro_type(
551 double* E_double_prime,
556 long* g_double_prime,
559 double* partition_function_t,
560 double* partition_function_t0,
561 double* isotopologue_mass,
562 long* number_of_perturbers,
563 long* molecule_code_perturber,
564 long* iso_code_perturber,
565 double* perturber_mass,
568 long* debug_in__error_out,
570 double* tolerance_in_rule_nr2,
571 bool* use_adiabatic_factor,
580 extern void arts_relmat_interface__linear_type(
long*
nlines,
588 double* E_double_prime,
593 long* g_double_prime,
596 double* partition_function_t,
597 double* partition_function_t0,
598 double* isotopologue_mass,
599 long* number_of_perturbers,
600 long* molecule_code_perturber,
601 long* iso_code_perturber,
602 double* perturber_mass,
605 long* debug_in__error_out,
607 double* tolerance_in_rule_nr2,
608 bool* use_adiabatic_factor,
617 extern double* wigner3j_(
double*,
double*,
double*,
double*,
double*,
double*);
618 extern double* wigner6j_(
double*,
double*,
double*,
double*,
double*,
double*);
620 #endif //ENABLE_RELMAT 622 #endif // linemixing_h Vector rosenkranz_first_order(const AbsorptionLines &abs_lines, const Matrix &W, const Vector &d0)
Computes Y for Rosenkranz's line mixing coefficients.
INDEX Index
The type to use for all integer numbers and indices.
constexpr Numeric lambda_H
Struct to help keep position of the two matched outputs clear.
Methods to compute off diagonal elements.
A class implementing complex numbers for ARTS.
ComplexVector equivalent_linestrengths(const Vector &population, const Vector &dipole, const Eigen::ComplexEigenSolver< Eigen::MatrixXcd > &M)
Equivalent line strengths.
Numeric total_linestrengths(const Vector &population, const Vector &dipole)
Sum of line strengths.
Constants of physical expressions as constexpr.
constexpr Numeric gamma_H
constexpr Numeric lambda_D
BasisRate(const Vector &v, Type t)
Construct a new Basis Rate object.
HartmannPos
Description of data in Hartmann Type.
constexpr Numeric hamiltonian_freq(T J)
Hamiltonian frequency.
Vector rosenkranz_scaling_second_order(const AbsorptionLines &abs_lines, const Matrix &W, const Vector &d0)
Computes G for Rosenkranz's line mixing coefficients.
Vector reduced_dipole_vector(const AbsorptionLines &abs_lines, const RedPoleType type)
Reduced dipole vector.
Type
Type of off diagonal element computations.
void relmatInAir(Matrix &relmat, const AbsorptionLines &abs_lines, const SpeciesAuxData &partition_functions, const Index &wigner_initialized, const Numeric &temperature)
Compute the relaxation matrix in air mixture.
Matrix CO2_ir_training(const ArrayOfRational &Ji, const ArrayOfRational &Jf, const ArrayOfRational &l2i, const ArrayOfRational &l2f, const Vector &F0, const Vector &d, const Vector &rho, const Vector &gamma, const Numeric &T)
CO2 IR training algorithm for linearization.
RedPoleType
Type of reduced dipole.
OffDiagonalElementOutput O2_66_MW(const Rational &J1u, const Rational &N1u, const Rational &J1l, const Rational &N1l, const Rational &J2u, const Rational &N2u, const Rational &J2l, const Rational &N2l, const Numeric &rho1, const Numeric &rho2, const Numeric &T, const Numeric &collider_mass)
O2-66 MW off diagonal element computer.
Basis rate of transitions.
Implements rational numbers to work with other ARTS types.
constexpr Numeric kaycm2freq(T x)
NUMERIC Numeric
The type to use for all floating point numbers.
Declarations required for the calculation of absorption coefficients.
To keep track of (y0 + y1 * (T0 / T - 1.)) * pow(T0 / T, n)
Vector rosenkranz_shifting_second_order(const AbsorptionLines &abs_lines, const Matrix &W)
Computes DV for Rosenkranz's line mixing coefficients.
Matrix hartmann_ecs_interface(const AbsorptionLines &abs_lines, const ArrayOfSpeciesTag &collider_species, const Vector &collider_species_vmr, const SpeciesAuxData &partition_functions, const Numeric &T, const Index &size)
Energy corrected sudden relaxation matrix using Hartmann's method.
Type
Methods to compute factor.
Adiabatic factor computations.
Vector dipole_vector(const AbsorptionLines &abs_lines, const SpeciesAuxData &partition_functions)
Dipole vector.
OffDiagonalElementOutput CO2_IR(const Rational &Jku, const Rational &Jju, const Rational &Jkl, const Rational &Jjl, const Rational &l2ku, const Rational &l2ju, const Rational &l2kl, const Rational &l2jl, const Numeric &j_rho, const Numeric &k_rho, const BasisRate &br, const AdiabaticFactor &af, const Numeric &T, const Numeric &B0, const Numeric &main_mass, const Numeric &collider_mass)
CO2 IR off diagonal element computer.
A constant view of a Vector.
Contains the rational class definition.
constexpr Numeric gamma_D
HartmannPos
Type of basis rate.
AdiabaticFactor(const Vector &v, Type t)
Construct a new Adiabatic Factor object.
Vector population_density_vector(const AbsorptionLines &abs_lines, const SpeciesAuxData &partition_functions, const Numeric &T)
Compute the population density.
Auxiliary data for isotopologues.
SecondOrderLineMixingCoeffs compute_2nd_order_lm_coeff(ConstVectorView y, ConstVectorView x, const Numeric exp, const Numeric x0)
Fit to a second order line mixing formula the input.
Numeric rotational_energy_hund_b_molecule(T J, T N, T J2, Numeric B, Numeric D, Numeric H, Numeric gamma, Numeric gamma_D, Numeric gamma_H, Numeric lambda, Numeric lambda_D, Numeric lambda_H)
Compute the rotational energy of a Hund b case molecule.
Numeric sqrt(const Rational r)
Square root.