20 inline double SQUARE(
double x) {
return x * x; }
21 inline double atm_from_bar(
double P) {
return 0.9869232667160128 * P; }
22 static double const pi = 3.14159265358979;
26 double XH2,
double XHe,
double XPH3) {
38 double const hc_over_kTref = 4.7959e-3;
41 double const acon = 2.452e11;
42 double const fcon = 1.e-9 / 3.14159;
43 double const texp = 3.5;
47 double intens = pow(10,
ph3_lines[i].LGINT);
50 double tx = 300.0 / T;
51 double fx = freq / frq0;
52 double delnu = 1.419 * (PPH3 * 4.2154 + PH2 * 3.29283 + PHe * 1.6807);
58 double df = freq - frq0;
59 double fline = fcon * fx * (delnu / (df * df + delnu * delnu));
61 double tx35 = tx * tx * tx *
63 double boltzf = exp(hc_over_kTref * elow * (1.0 - tx));
64 dtaua += acon * PPH3 * intens * tx35 * boltzf * fx * fline;
67 if (iph3cor) dtaua *= 35.386 * pow(freq, -0.7969);
73 double XH2,
double XHe,
double XPH3) {
79 double const PPH3 = P * XPH3;
80 double const PH2 = P * XH2;
81 double const PHe = P * XHe;
83 double const hc_over_kTref = 4.7959e-3;
88 double intens = pow(10,
ph3_lines[i].LGINT);
91 double tx = 300.0 / T;
93 double gamma_H2, gamma_He, gamma_PH3;
94 if (i < 40 && (std::abs(
ph3_lines[i].QNp[1]) == 6 ||
117 double fx = freq / frq0;
118 double delnu = PPH3 * gamma_PH3 * tx +
119 pow(tx, 0.75) * (PH2 * gamma_H2 + PHe * gamma_He);
121 double delnu_sq =
SQUARE(delnu);
122 double fline = fx /
pi * delnu *
123 (1.0 / (
SQUARE(freq - frq0) + delnu_sq) +
124 1.0 / (
SQUARE(freq + frq0) + delnu_sq));
126 double tx35 = tx * tx * tx * sqrt(tx);
127 double boltzf = exp(hc_over_kTref * elow * (1.0 - tx));
129 dtaua += factor * PPH3 * intens * tx35 * boltzf * fx * fline;
double atm_from_bar(double P)
double absorption_coefficient_PH3_Hoffman(double freq, double P, double T, double XH2, double XHe, double XPH3)
double absorption_coefficient_PH3_radtran(double freq, double P, double T, double XH2, double XHe, double XPH3)
static PH3LineList ph3_lines[]