37 static atm_t atm_cont, atm_res;
39 size_t i, n0[
NQ], n1[
NQ];
42 const size_t n = avk->size1;
45 for (
int iq = 0; iq <
NQ; iq++) {
47 for (i = 0; i < n; i++) {
48 if (iqa[i] == iq && n0[iq] ==
N)
51 n1[iq] = i - n0[iq] + 1;
62 for (
int ig = 0; ig < ctl->
ng; ig++)
64 atm_cont.
q[ig], atm_res.
q[ig]);
65 for (
int iw = 0; iw < ctl->
nw; iw++)
67 atm_cont.
k[iw], atm_res.
k[iw]);
71 for (
int icl = 0; icl < ctl->
ncl; icl++)
73 &atm_cont.
clk[icl], &atm_res.
clk[icl]);
75 for (
int isf = 0; isf < ctl->
nsf; isf++)
97 for (
size_t i = 0; i < n1[iq]; i++) {
100 for (
size_t j = 0; j < n1[iq]; j++)
101 cont[ipa[n0[iq] + i]] += gsl_matrix_get(avk, n0[iq] + i, n0[iq] + j);
104 res[ipa[n0[iq] + i]] = 1 / gsl_matrix_get(avk, n0[iq] + i, n0[iq] + i);
120 for (
int ip = 0; ip < atm->
np; ip++)
125 for (
int ip = 0; ip < atm->
np; ip++)
130 for (
int ig = 0; ig < ctl->
ng; ig++)
131 for (
int ip = 0; ip < atm->
np; ip++)
137 for (
int iw = 0; iw < ctl->
nw; iw++)
138 for (
int ip = 0; ip < atm->
np; ip++)
149 for (
int icl = 0; icl < ctl->
ncl; icl++)
156 for (
int isf = 0; isf < ctl->
nsf; isf++)
175 gsl_vector_set(x, *n, value);
191 const double radius =
NORM(x);
193 *lat =
RAD2DEG(asin(x[2] / radius));
194 *lon =
RAD2DEG(atan2(x[1], x[0]));
204 static const double z[121] = {
205 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
206 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
207 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
208 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
209 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
210 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
211 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
214 static const double pre[121] = {
215 1017, 901.083, 796.45, 702.227, 617.614, 541.644, 473.437, 412.288,
216 357.603, 308.96, 265.994, 228.348, 195.619, 167.351, 143.039, 122.198,
217 104.369, 89.141, 76.1528, 65.0804, 55.641, 47.591, 40.7233, 34.8637,
218 29.8633, 25.5956, 21.9534, 18.8445, 16.1909, 13.9258, 11.9913,
219 10.34, 8.92988, 7.72454, 6.6924, 5.80701, 5.04654, 4.39238, 3.82902,
220 3.34337, 2.92413, 2.56128, 2.2464, 1.97258, 1.73384, 1.52519, 1.34242,
221 1.18197, 1.04086, 0.916546, 0.806832, 0.709875, 0.624101, 0.548176,
222 0.480974, 0.421507, 0.368904, 0.322408, 0.281386, 0.245249, 0.213465,
223 0.185549, 0.161072, 0.139644, 0.120913, 0.104568, 0.0903249, 0.0779269,
224 0.0671493, 0.0577962, 0.0496902, 0.0426736, 0.0366093, 0.0313743,
225 0.0268598, 0.0229699, 0.0196206, 0.0167399, 0.0142646, 0.0121397,
226 0.0103181, 0.00875775, 0.00742226, 0.00628076, 0.00530519, 0.00447183,
227 0.00376124, 0.00315632, 0.00264248, 0.00220738, 0.00184003, 0.00153095,
228 0.00127204, 0.00105608, 0.000876652, 0.00072798, 0.00060492,
229 0.000503201, 0.000419226, 0.000349896, 0.000292659, 0.000245421,
230 0.000206394, 0.000174125, 0.000147441, 0.000125333, 0.000106985,
231 9.173e-05, 7.90172e-05, 6.84172e-05, 5.95574e-05, 5.21183e-05,
232 4.58348e-05, 4.05127e-05, 3.59987e-05, 3.21583e-05, 2.88718e-05,
233 2.60322e-05, 2.35687e-05, 2.14263e-05, 1.95489e-05
236 static const double tem[121] = {
237 285.14, 279.34, 273.91, 268.3, 263.24, 256.55, 250.2, 242.82, 236.17,
238 229.87, 225.04, 221.19, 218.85, 217.19, 216.2, 215.68, 215.42, 215.55,
239 215.92, 216.4, 216.93, 217.45, 218, 218.68, 219.39, 220.25, 221.3,
240 222.41, 223.88, 225.42, 227.2, 229.52, 231.89, 234.51, 236.85, 239.42,
241 241.94, 244.57, 247.36, 250.32, 253.34, 255.82, 258.27, 260.39,
242 262.03, 263.45, 264.2, 264.78, 264.67, 264.38, 263.24, 262.03, 260.02,
243 258.09, 255.63, 253.28, 250.43, 247.81, 245.26, 242.77, 240.38,
244 237.94, 235.79, 233.53, 231.5, 229.53, 227.6, 225.62, 223.77, 222.06,
245 220.33, 218.69, 217.18, 215.64, 214.13, 212.52, 210.86, 209.25,
246 207.49, 205.81, 204.11, 202.22, 200.32, 198.39, 195.92, 193.46,
247 190.94, 188.31, 185.82, 183.57, 181.43, 179.74, 178.64, 178.1, 178.25,
248 178.7, 179.41, 180.67, 182.31, 184.18, 186.6, 189.53, 192.66, 196.54,
249 201.13, 205.93, 211.73, 217.86, 225, 233.53, 242.57, 252.14, 261.48,
250 272.97, 285.26, 299.12, 312.2, 324.17, 338.34, 352.56, 365.28
253 static const double c2h2[121] = {
254 1.352e-09, 2.83e-10, 1.269e-10, 6.926e-11, 4.346e-11, 2.909e-11,
255 2.014e-11, 1.363e-11, 8.71e-12, 5.237e-12, 2.718e-12, 1.375e-12,
256 5.786e-13, 2.16e-13, 7.317e-14, 2.551e-14, 1.055e-14, 4.758e-15,
257 2.056e-15, 7.703e-16, 2.82e-16, 1.035e-16, 4.382e-17, 1.946e-17,
258 9.638e-18, 5.2e-18, 2.811e-18, 1.494e-18, 7.925e-19, 4.213e-19,
259 1.998e-19, 8.78e-20, 3.877e-20, 1.728e-20, 7.743e-21, 3.536e-21,
260 1.623e-21, 7.508e-22, 3.508e-22, 1.65e-22, 7.837e-23, 3.733e-23,
261 1.808e-23, 8.77e-24, 4.285e-24, 2.095e-24, 1.032e-24, 5.082e-25,
262 2.506e-25, 1.236e-25, 6.088e-26, 2.996e-26, 1.465e-26, 0, 0, 0,
263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
268 static const double c2h6[121] = {
269 2.667e-09, 2.02e-09, 1.658e-09, 1.404e-09, 1.234e-09, 1.109e-09,
270 1.012e-09, 9.262e-10, 8.472e-10, 7.71e-10, 6.932e-10, 6.216e-10,
271 5.503e-10, 4.87e-10, 4.342e-10, 3.861e-10, 3.347e-10, 2.772e-10,
272 2.209e-10, 1.672e-10, 1.197e-10, 8.536e-11, 5.783e-11, 3.846e-11,
273 2.495e-11, 1.592e-11, 1.017e-11, 6.327e-12, 3.895e-12, 2.403e-12,
274 1.416e-12, 8.101e-13, 4.649e-13, 2.686e-13, 1.557e-13, 9.14e-14,
275 5.386e-14, 3.19e-14, 1.903e-14, 1.14e-14, 6.875e-15, 4.154e-15,
276 2.538e-15, 1.553e-15, 9.548e-16, 5.872e-16, 3.63e-16, 2.244e-16,
277 1.388e-16, 8.587e-17, 5.308e-17, 3.279e-17, 2.017e-17, 1.238e-17,
278 7.542e-18, 4.585e-18, 2.776e-18, 1.671e-18, 9.985e-19, 5.937e-19,
279 3.518e-19, 2.07e-19, 1.215e-19, 7.06e-20, 4.097e-20, 2.37e-20,
280 1.363e-20, 7.802e-21, 4.441e-21, 2.523e-21, 1.424e-21, 8.015e-22,
281 4.497e-22, 2.505e-22, 1.391e-22, 7.691e-23, 4.238e-23, 2.331e-23,
282 1.274e-23, 6.929e-24, 3.752e-24, 2.02e-24, 1.083e-24, 5.774e-25,
283 3.041e-25, 1.593e-25, 8.308e-26, 4.299e-26, 2.195e-26, 1.112e-26,
284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
285 0, 0, 0, 0, 0, 0, 0, 0, 0
288 static const double ccl4[121] = {
289 1.075e-10, 1.075e-10, 1.075e-10, 1.075e-10, 1.075e-10, 1.075e-10,
290 1.075e-10, 1.075e-10, 1.075e-10, 1.06e-10, 1.024e-10, 9.69e-11,
291 8.93e-11, 8.078e-11, 7.213e-11, 6.307e-11, 5.383e-11, 4.49e-11,
292 3.609e-11, 2.705e-11, 1.935e-11, 1.385e-11, 8.35e-12, 5.485e-12,
293 3.853e-12, 2.22e-12, 5.875e-13, 3.445e-13, 1.015e-13, 6.075e-14,
294 4.383e-14, 2.692e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
295 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
296 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
297 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
298 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
299 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
300 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
301 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
302 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14, 1e-14,
306 static const double ch3oh[121] = {
307 5.01099e-10, 5.01099e-10, 5.01099e-10, 5.01099e-10, 5.01099e-10,
308 5.01099e-10, 5.50999e-10, 5.7313e-10, 5.75638e-10, 5.4086e-10,
309 4.77601e-10, 4.12907e-10, 3.6274e-10, 3.26448e-10, 2.9706e-10,
310 2.27698e-10, 1.96999e-10, 1.66212e-10, 1.17941e-10, 1.19844e-10,
311 1.11211e-10, 1.02714e-10, 9.86138e-11, 9.45133e-11, 9.04127e-11,
312 8.05243e-11, 6.3678e-11, 4.68317e-11, 4.00618e-11, 3.95786e-11,
313 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
314 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
315 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
316 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
317 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
318 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
319 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
320 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
321 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
322 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
323 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
324 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
325 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
326 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
327 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
328 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
329 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
330 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11, 3.95786e-11,
334 static const double ch4[121] = {
335 1.864e-06, 1.835e-06, 1.819e-06, 1.805e-06, 1.796e-06, 1.788e-06,
336 1.782e-06, 1.776e-06, 1.769e-06, 1.761e-06, 1.749e-06, 1.734e-06,
337 1.716e-06, 1.692e-06, 1.654e-06, 1.61e-06, 1.567e-06, 1.502e-06,
338 1.433e-06, 1.371e-06, 1.323e-06, 1.277e-06, 1.232e-06, 1.188e-06,
339 1.147e-06, 1.108e-06, 1.07e-06, 1.027e-06, 9.854e-07, 9.416e-07,
340 8.933e-07, 8.478e-07, 7.988e-07, 7.515e-07, 7.07e-07, 6.64e-07,
341 6.239e-07, 5.864e-07, 5.512e-07, 5.184e-07, 4.87e-07, 4.571e-07,
342 4.296e-07, 4.04e-07, 3.802e-07, 3.578e-07, 3.383e-07, 3.203e-07,
343 3.032e-07, 2.889e-07, 2.76e-07, 2.635e-07, 2.519e-07, 2.409e-07,
344 2.302e-07, 2.219e-07, 2.144e-07, 2.071e-07, 1.999e-07, 1.93e-07,
345 1.862e-07, 1.795e-07, 1.731e-07, 1.668e-07, 1.607e-07, 1.548e-07,
346 1.49e-07, 1.434e-07, 1.38e-07, 1.328e-07, 1.277e-07, 1.227e-07,
347 1.18e-07, 1.134e-07, 1.089e-07, 1.046e-07, 1.004e-07, 9.635e-08,
348 9.245e-08, 8.867e-08, 8.502e-08, 8.15e-08, 7.809e-08, 7.48e-08,
349 7.159e-08, 6.849e-08, 6.55e-08, 6.262e-08, 5.98e-08, 5.708e-08,
350 5.448e-08, 5.194e-08, 4.951e-08, 4.72e-08, 4.5e-08, 4.291e-08,
351 4.093e-08, 3.905e-08, 3.729e-08, 3.563e-08, 3.408e-08, 3.265e-08,
352 3.128e-08, 2.996e-08, 2.87e-08, 2.76e-08, 2.657e-08, 2.558e-08,
353 2.467e-08, 2.385e-08, 2.307e-08, 2.234e-08, 2.168e-08, 2.108e-08,
354 2.05e-08, 1.998e-08, 1.947e-08, 1.902e-08, 1.86e-08, 1.819e-08,
358 static const double clo[121] = {
359 7.419e-15, 1.061e-14, 1.518e-14, 2.195e-14, 3.175e-14, 4.666e-14,
360 6.872e-14, 1.03e-13, 1.553e-13, 2.375e-13, 3.664e-13, 5.684e-13,
361 8.915e-13, 1.402e-12, 2.269e-12, 4.125e-12, 7.501e-12, 1.257e-11,
362 2.048e-11, 3.338e-11, 5.44e-11, 8.846e-11, 1.008e-10, 1.082e-10,
363 1.157e-10, 1.232e-10, 1.312e-10, 1.539e-10, 1.822e-10, 2.118e-10,
364 2.387e-10, 2.687e-10, 2.875e-10, 3.031e-10, 3.23e-10, 3.648e-10,
365 4.117e-10, 4.477e-10, 4.633e-10, 4.794e-10, 4.95e-10, 5.104e-10,
366 5.259e-10, 5.062e-10, 4.742e-10, 4.443e-10, 4.051e-10, 3.659e-10,
367 3.305e-10, 2.911e-10, 2.54e-10, 2.215e-10, 1.927e-10, 1.675e-10,
368 1.452e-10, 1.259e-10, 1.09e-10, 9.416e-11, 8.119e-11, 6.991e-11,
369 6.015e-11, 5.163e-11, 4.43e-11, 3.789e-11, 3.24e-11, 2.769e-11,
370 2.361e-11, 2.011e-11, 1.71e-11, 1.453e-11, 1.233e-11, 1.045e-11,
371 8.851e-12, 7.48e-12, 6.316e-12, 5.326e-12, 4.487e-12, 3.778e-12,
372 3.176e-12, 2.665e-12, 2.234e-12, 1.87e-12, 1.563e-12, 1.304e-12,
373 1.085e-12, 9.007e-13, 7.468e-13, 6.179e-13, 5.092e-13, 4.188e-13,
374 3.442e-13, 2.816e-13, 2.304e-13, 1.885e-13, 1.542e-13, 1.263e-13,
375 1.035e-13, 8.5e-14, 7.004e-14, 5.783e-14, 4.795e-14, 4.007e-14,
376 3.345e-14, 2.792e-14, 2.33e-14, 1.978e-14, 1.686e-14, 1.438e-14,
377 1.234e-14, 1.07e-14, 9.312e-15, 8.131e-15, 7.164e-15, 6.367e-15,
378 5.67e-15, 5.088e-15, 4.565e-15, 4.138e-15, 3.769e-15, 3.432e-15,
382 static const double clono2[121] = {
383 1.011e-13, 1.515e-13, 2.272e-13, 3.446e-13, 5.231e-13, 8.085e-13,
384 1.253e-12, 1.979e-12, 3.149e-12, 5.092e-12, 8.312e-12, 1.366e-11,
385 2.272e-11, 3.791e-11, 6.209e-11, 9.101e-11, 1.334e-10, 1.951e-10,
386 2.853e-10, 3.94e-10, 4.771e-10, 5.771e-10, 6.675e-10, 7.665e-10,
387 8.504e-10, 8.924e-10, 9.363e-10, 8.923e-10, 8.411e-10, 7.646e-10,
388 6.525e-10, 5.576e-10, 4.398e-10, 3.403e-10, 2.612e-10, 1.915e-10,
389 1.407e-10, 1.028e-10, 7.455e-11, 5.42e-11, 3.708e-11, 2.438e-11,
390 1.618e-11, 1.075e-11, 7.17e-12, 4.784e-12, 3.205e-12, 2.147e-12,
391 1.44e-12, 9.654e-13, 6.469e-13, 4.332e-13, 2.891e-13, 1.926e-13,
392 1.274e-13, 8.422e-14, 5.547e-14, 3.636e-14, 2.368e-14, 1.536e-14,
393 9.937e-15, 6.39e-15, 4.101e-15, 2.61e-15, 1.659e-15, 1.052e-15,
394 6.638e-16, 4.172e-16, 2.61e-16, 1.63e-16, 1.013e-16, 6.275e-17,
395 3.879e-17, 2.383e-17, 1.461e-17, 8.918e-18, 5.43e-18, 3.301e-18,
396 1.997e-18, 1.203e-18, 7.216e-19, 4.311e-19, 2.564e-19, 1.519e-19,
397 8.911e-20, 5.203e-20, 3.026e-20, 1.748e-20, 9.99e-21, 5.673e-21,
398 3.215e-21, 1.799e-21, 1.006e-21, 5.628e-22, 3.146e-22, 1.766e-22,
399 9.94e-23, 5.614e-23, 3.206e-23, 1.841e-23, 1.071e-23, 6.366e-24,
400 3.776e-24, 2.238e-24, 1.326e-24, 8.253e-25, 5.201e-25, 3.279e-25,
401 2.108e-25, 1.395e-25, 9.326e-26, 6.299e-26, 4.365e-26, 3.104e-26,
402 2.219e-26, 1.621e-26, 1.185e-26, 8.92e-27, 6.804e-27, 5.191e-27,
406 static const double co[121] = {
407 1.907e-07, 1.553e-07, 1.362e-07, 1.216e-07, 1.114e-07, 1.036e-07,
408 9.737e-08, 9.152e-08, 8.559e-08, 7.966e-08, 7.277e-08, 6.615e-08,
409 5.884e-08, 5.22e-08, 4.699e-08, 4.284e-08, 3.776e-08, 3.274e-08,
410 2.845e-08, 2.479e-08, 2.246e-08, 2.054e-08, 1.991e-08, 1.951e-08,
411 1.94e-08, 2.009e-08, 2.1e-08, 2.201e-08, 2.322e-08, 2.45e-08,
412 2.602e-08, 2.73e-08, 2.867e-08, 2.998e-08, 3.135e-08, 3.255e-08,
413 3.352e-08, 3.426e-08, 3.484e-08, 3.53e-08, 3.593e-08, 3.671e-08,
414 3.759e-08, 3.945e-08, 4.192e-08, 4.49e-08, 5.03e-08, 5.703e-08,
415 6.538e-08, 7.878e-08, 9.644e-08, 1.196e-07, 1.498e-07, 1.904e-07,
416 2.422e-07, 3.055e-07, 3.804e-07, 4.747e-07, 5.899e-07, 7.272e-07,
417 8.91e-07, 1.071e-06, 1.296e-06, 1.546e-06, 1.823e-06, 2.135e-06,
418 2.44e-06, 2.714e-06, 2.967e-06, 3.189e-06, 3.391e-06, 3.58e-06,
419 3.773e-06, 4.022e-06, 4.346e-06, 4.749e-06, 5.199e-06, 5.668e-06,
420 6.157e-06, 6.688e-06, 7.254e-06, 7.867e-06, 8.539e-06, 9.26e-06,
421 1.009e-05, 1.119e-05, 1.228e-05, 1.365e-05, 1.506e-05, 1.641e-05,
422 1.784e-05, 1.952e-05, 2.132e-05, 2.323e-05, 2.531e-05, 2.754e-05,
423 3.047e-05, 3.459e-05, 3.922e-05, 4.439e-05, 4.825e-05, 5.077e-05,
424 5.34e-05, 5.618e-05, 5.909e-05, 6.207e-05, 6.519e-05, 6.845e-05,
425 6.819e-05, 6.726e-05, 6.622e-05, 6.512e-05, 6.671e-05, 6.862e-05,
426 7.048e-05, 7.264e-05, 7.3e-05, 7.3e-05, 7.3e-05, 7.3e-05, 7.3e-05
429 static const double cof2[121] = {
430 7.5e-14, 1.055e-13, 1.485e-13, 2.111e-13, 3.001e-13, 4.333e-13,
431 6.269e-13, 9.221e-13, 1.364e-12, 2.046e-12, 3.093e-12, 4.703e-12,
432 7.225e-12, 1.113e-11, 1.66e-11, 2.088e-11, 2.626e-11, 3.433e-11,
433 4.549e-11, 5.886e-11, 7.21e-11, 8.824e-11, 1.015e-10, 1.155e-10,
434 1.288e-10, 1.388e-10, 1.497e-10, 1.554e-10, 1.606e-10, 1.639e-10,
435 1.64e-10, 1.64e-10, 1.596e-10, 1.542e-10, 1.482e-10, 1.382e-10,
436 1.289e-10, 1.198e-10, 1.109e-10, 1.026e-10, 9.484e-11, 8.75e-11,
437 8.086e-11, 7.49e-11, 6.948e-11, 6.446e-11, 5.961e-11, 5.505e-11,
438 5.085e-11, 4.586e-11, 4.1e-11, 3.665e-11, 3.235e-11, 2.842e-11,
439 2.491e-11, 2.11e-11, 1.769e-11, 1.479e-11, 1.197e-11, 9.631e-12,
440 7.74e-12, 6.201e-12, 4.963e-12, 3.956e-12, 3.151e-12, 2.507e-12,
441 1.99e-12, 1.576e-12, 1.245e-12, 9.83e-13, 7.742e-13, 6.088e-13,
442 4.782e-13, 3.745e-13, 2.929e-13, 2.286e-13, 1.782e-13, 1.388e-13,
443 1.079e-13, 8.362e-14, 6.471e-14, 4.996e-14, 3.85e-14, 2.96e-14,
444 2.265e-14, 1.729e-14, 1.317e-14, 9.998e-15, 7.549e-15, 5.683e-15,
445 4.273e-15, 3.193e-15, 2.385e-15, 1.782e-15, 1.331e-15, 9.957e-16,
446 7.461e-16, 5.601e-16, 4.228e-16, 3.201e-16, 2.438e-16, 1.878e-16,
447 1.445e-16, 1.111e-16, 8.544e-17, 6.734e-17, 5.341e-17, 4.237e-17,
448 3.394e-17, 2.759e-17, 2.254e-17, 1.851e-17, 1.54e-17, 1.297e-17,
449 1.096e-17, 9.365e-18, 8e-18, 6.938e-18, 6.056e-18, 5.287e-18,
453 static const double f11[121] = {
454 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10,
455 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10, 2.65e-10, 2.635e-10, 2.536e-10,
456 2.44e-10, 2.348e-10, 2.258e-10, 2.153e-10, 2.046e-10, 1.929e-10,
457 1.782e-10, 1.648e-10, 1.463e-10, 1.291e-10, 1.1e-10, 8.874e-11,
458 7.165e-11, 5.201e-11, 3.744e-11, 2.577e-11, 1.64e-11, 1.048e-11,
459 5.993e-12, 3.345e-12, 1.839e-12, 9.264e-13, 4.688e-13, 2.329e-13,
460 1.129e-13, 5.505e-14, 2.825e-14, 1.492e-14, 7.997e-15, 5.384e-15,
461 3.988e-15, 2.955e-15, 2.196e-15, 1.632e-15, 1.214e-15, 9.025e-16,
462 6.708e-16, 4.984e-16, 3.693e-16, 2.733e-16, 2.013e-16, 1.481e-16,
463 1.087e-16, 7.945e-17, 5.782e-17, 4.195e-17, 3.038e-17, 2.19e-17,
464 1.577e-17, 1.128e-17, 8.063e-18, 5.753e-18, 4.09e-18, 2.899e-18,
465 2.048e-18, 1.444e-18, 1.015e-18, 7.12e-19, 4.985e-19, 3.474e-19,
466 2.417e-19, 1.677e-19, 1.161e-19, 8.029e-20, 5.533e-20, 3.799e-20,
467 2.602e-20, 1.776e-20, 1.209e-20, 8.202e-21, 5.522e-21, 3.707e-21,
468 2.48e-21, 1.652e-21, 1.091e-21, 7.174e-22, 4.709e-22, 3.063e-22,
469 1.991e-22, 1.294e-22, 8.412e-23, 5.483e-23, 3.581e-23, 2.345e-23,
470 1.548e-23, 1.027e-23, 6.869e-24, 4.673e-24, 3.173e-24, 2.153e-24,
471 1.461e-24, 1.028e-24, 7.302e-25, 5.188e-25, 3.739e-25, 2.753e-25,
472 2.043e-25, 1.528e-25, 1.164e-25, 9.041e-26, 7.051e-26, 5.587e-26,
473 4.428e-26, 3.588e-26, 2.936e-26, 2.402e-26, 1.995e-26
476 static const double f113[121] = {
477 1.9e-11, 1.9e-11, 1.899e-11, 1.899e-11, 1.898e-11, 1.898e-11,
478 1.897e-11, 1.896e-11, 1.895e-11, 1.894e-11, 1.893e-11, 1.89e-11,
479 1.887e-11, 1.871e-11, 1.854e-11, 1.803e-11, 1.751e-11, 1.664e-11,
480 1.576e-11, 1.466e-11, 1.356e-11, 1.236e-11, 1.116e-11, 9.931e-12,
481 8.702e-12, 7.515e-12, 6.4238e-12, 5.3326e-12, 4.3652e-12, 3.5216e-12,
482 2.678e-12, 2.1532e-12, 1.6284e-12, 1.2202e-12, 9.286e-13, 6.37e-13,
483 4.95e-13, 3.53e-13, 2.5004e-13, 1.8612e-13, 1.222e-13, 9.704e-14,
484 7.188e-14, 5.3338e-14, 4.1414e-14, 2.949e-14, 2.3722e-14, 1.7954e-14,
485 1.37794e-14, 1.11982e-14, 8.617e-15, 7.6036e-15, 6.5902e-15,
486 5.5768e-15, 4.5634e-15, 3.55e-15, 3.1008e-15, 2.6516e-15, 2.2024e-15,
487 1.7532e-15, 1.304e-15, 1.1354e-15, 9.668e-16, 7.982e-16, 6.296e-16,
488 4.61e-16, 3.9734e-16, 3.3368e-16, 2.7002e-16, 2.0636e-16, 1.427e-16,
489 1.22804e-16, 1.02908e-16, 8.3012e-17, 6.3116e-17, 4.322e-17,
490 3.6838e-17, 3.0456e-17, 2.4074e-17, 1.7692e-17, 1.131e-17,
491 9.6202e-18, 7.9304e-18, 6.2406e-18, 4.5508e-18, 2.861e-18,
492 2.40476e-18, 1.94852e-18, 1.49228e-18, 1.03604e-18, 5.798e-19,
493 4.8502e-19, 3.9024e-19, 2.9546e-19, 2.0068e-19, 1.059e-19,
494 8.7084e-20, 6.8268e-20, 4.9452e-20, 3.0636e-20, 1.182e-20,
495 9.64344e-21, 7.46688e-21, 5.29032e-21, 3.11376e-21, 9.372e-22,
496 7.5685e-22, 5.765e-22, 3.9615e-22, 2.158e-22, 3.545e-23,
497 2.86046e-23, 2.17592e-23, 1.49138e-23, 8.0684e-24, 1.223e-24,
498 9.92358e-25, 7.61716e-25, 5.31074e-25, 3.00432e-25, 6.979e-26
501 static const double f114[121] = {
502 1.2e-11, 1.2e-11, 1.2e-11, 1.2e-11, 1.199e-11, 1.199e-11,
503 1.199e-11, 1.199e-11, 1.198e-11, 1.198e-11, 1.198e-11, 1.197e-11,
504 1.196e-11, 1.191e-11, 1.185e-11, 1.167e-11, 1.149e-11, 1.12e-11,
505 1.09e-11, 1.053e-11, 1.015e-11, 9.731e-12, 9.311e-12, 8.865e-12,
506 8.419e-12, 7.949e-12, 7.4774e-12, 7.0058e-12, 6.54e-12, 6.08e-12,
507 5.62e-12, 5.1908e-12, 4.7616e-12, 4.3622e-12, 3.9926e-12, 3.623e-12,
508 3.3274e-12, 3.0318e-12, 2.7702e-12, 2.5426e-12, 2.315e-12, 2.1514e-12,
509 1.9878e-12, 1.8448e-12, 1.7224e-12, 1.6e-12, 1.51e-12, 1.42e-12,
510 1.3462e-12, 1.2886e-12, 1.231e-12, 1.1922e-12, 1.1534e-12, 1.1146e-12,
511 1.0758e-12, 1.037e-12, 1.0025e-12, 9.68e-13, 9.335e-13, 8.99e-13,
512 8.645e-13, 8.344e-13, 8.043e-13, 7.742e-13, 7.441e-13, 7.14e-13,
513 6.8718e-13, 6.6036e-13, 6.3354e-13, 6.0672e-13, 5.799e-13, 5.5612e-13,
514 5.3234e-13, 5.0856e-13, 4.8478e-13, 4.61e-13, 4.394e-13, 4.178e-13,
515 3.962e-13, 3.746e-13, 3.53e-13, 3.3288e-13, 3.1276e-13, 2.9264e-13,
516 2.7252e-13, 2.524e-13, 2.3368e-13, 2.1496e-13, 1.9624e-13, 1.7752e-13,
517 1.588e-13, 1.4221e-13, 1.2562e-13, 1.0903e-13, 9.244e-14, 7.585e-14,
518 6.4942e-14, 5.4034e-14, 4.3126e-14, 3.2218e-14, 2.131e-14, 1.76694e-14,
519 1.40288e-14, 1.03882e-14, 6.7476e-15, 3.107e-15, 2.52738e-15,
520 1.94776e-15, 1.36814e-15, 7.8852e-16, 2.089e-16, 1.69288e-16,
521 1.29676e-16, 9.0064e-17, 5.0452e-17, 1.084e-17, 8.85136e-18,
522 6.86272e-18, 4.87408e-18, 2.88544e-18, 8.968e-19
525 static const double f12[121] = {
526 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10,
527 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10, 5.45e-10, 5.429e-10, 5.291e-10,
528 5.155e-10, 5.022e-10, 4.893e-10, 4.772e-10, 4.655e-10, 4.497e-10,
529 4.249e-10, 4.015e-10, 3.632e-10, 3.261e-10, 2.858e-10, 2.408e-10,
530 2.03e-10, 1.685e-10, 1.4e-10, 1.163e-10, 9.65e-11, 8.02e-11, 6.705e-11,
531 5.624e-11, 4.764e-11, 4.249e-11, 3.792e-11, 3.315e-11, 2.819e-11,
532 2.4e-11, 1.999e-11, 1.64e-11, 1.352e-11, 1.14e-11, 9.714e-12,
533 8.28e-12, 7.176e-12, 6.251e-12, 5.446e-12, 4.72e-12, 4.081e-12,
534 3.528e-12, 3.08e-12, 2.699e-12, 2.359e-12, 2.111e-12, 1.901e-12,
535 1.709e-12, 1.534e-12, 1.376e-12, 1.233e-12, 1.103e-12, 9.869e-13,
536 8.808e-13, 7.859e-13, 7.008e-13, 6.241e-13, 5.553e-13, 4.935e-13,
537 4.383e-13, 3.889e-13, 3.447e-13, 3.054e-13, 2.702e-13, 2.389e-13,
538 2.11e-13, 1.862e-13, 1.643e-13, 1.448e-13, 1.274e-13, 1.121e-13,
539 9.844e-14, 8.638e-14, 7.572e-14, 6.62e-14, 5.782e-14, 5.045e-14,
540 4.394e-14, 3.817e-14, 3.311e-14, 2.87e-14, 2.48e-14, 2.142e-14,
541 1.851e-14, 1.599e-14, 1.383e-14, 1.196e-14, 1.036e-14, 9e-15,
542 7.828e-15, 6.829e-15, 5.992e-15, 5.254e-15, 4.606e-15, 4.037e-15,
543 3.583e-15, 3.19e-15, 2.841e-15, 2.542e-15, 2.291e-15, 2.07e-15,
544 1.875e-15, 1.71e-15, 1.57e-15, 1.442e-15, 1.333e-15, 1.232e-15,
545 1.147e-15, 1.071e-15, 1.001e-15, 9.396e-16
548 static const double f14[121] = {
549 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 9e-11,
550 9e-11, 9e-11, 9e-11, 9e-11, 9e-11, 8.91e-11, 8.73e-11, 8.46e-11,
551 8.19e-11, 7.92e-11, 7.74e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
552 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
553 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
554 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
555 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
556 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
557 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
558 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
559 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
560 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
561 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
562 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
563 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
564 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11,
565 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11, 7.65e-11
568 static const double f22[121] = {
569 1.4e-10, 1.4e-10, 1.4e-10, 1.4e-10, 1.4e-10, 1.4e-10, 1.4e-10,
570 1.4e-10, 1.4e-10, 1.4e-10, 1.372e-10, 1.317e-10, 1.235e-10, 1.153e-10,
571 1.075e-10, 1.002e-10, 9.332e-11, 8.738e-11, 8.194e-11, 7.7e-11,
572 7.165e-11, 6.753e-11, 6.341e-11, 5.971e-11, 5.6e-11, 5.229e-11,
573 4.859e-11, 4.488e-11, 4.118e-11, 3.83e-11, 3.568e-11, 3.308e-11,
574 3.047e-11, 2.82e-11, 2.594e-11, 2.409e-11, 2.237e-11, 2.065e-11,
575 1.894e-11, 1.771e-11, 1.647e-11, 1.532e-11, 1.416e-11, 1.332e-11,
576 1.246e-11, 1.161e-11, 1.087e-11, 1.017e-11, 9.471e-12, 8.853e-12,
577 8.235e-12, 7.741e-12, 7.247e-12, 6.836e-12, 6.506e-12, 6.176e-12,
578 5.913e-12, 5.65e-12, 5.419e-12, 5.221e-12, 5.024e-12, 4.859e-12,
579 4.694e-12, 4.546e-12, 4.414e-12, 4.282e-12, 4.15e-12, 4.019e-12,
580 3.903e-12, 3.805e-12, 3.706e-12, 3.607e-12, 3.508e-12, 3.41e-12,
581 3.31e-12, 3.212e-12, 3.129e-12, 3.047e-12, 2.964e-12, 2.882e-12,
582 2.8e-12, 2.734e-12, 2.668e-12, 2.602e-12, 2.537e-12, 2.471e-12,
583 2.421e-12, 2.372e-12, 2.322e-12, 2.273e-12, 2.224e-12, 2.182e-12,
584 2.141e-12, 2.1e-12, 2.059e-12, 2.018e-12, 1.977e-12, 1.935e-12,
585 1.894e-12, 1.853e-12, 1.812e-12, 1.77e-12, 1.73e-12, 1.688e-12,
586 1.647e-12, 1.606e-12, 1.565e-12, 1.524e-12, 1.483e-12, 1.441e-12,
587 1.4e-12, 1.359e-12, 1.317e-12, 1.276e-12, 1.235e-12, 1.194e-12,
588 1.153e-12, 1.112e-12, 1.071e-12, 1.029e-12, 9.883e-13
591 static const double h2co[121] = {
592 8.71857e-11, 8.71857e-11, 8.71857e-11, 8.71857e-11, 8.71857e-11,
593 8.71857e-11, 7.72315e-11, 6.85464e-11, 6.0758e-11, 5.32087e-11,
594 4.5719e-11, 3.79458e-11, 3.07607e-11, 2.46025e-11, 1.94038e-11,
595 1.40882e-11, 1.0623e-11, 8.35457e-12, 6.87427e-12, 7.09071e-12,
596 8.96183e-12, 1.09012e-11, 1.50545e-11, 1.92077e-11, 2.3361e-11,
597 2.7054e-11, 3.01936e-11, 3.33333e-11, 3.69281e-11, 4.08069e-11,
598 4.57318e-11, 5.1348e-11, 5.69642e-11, 6.33173e-11, 6.98984e-11,
599 7.63144e-11, 8.22774e-11, 8.82405e-11, 9.3746e-11, 9.92074e-11,
600 1.04669e-10, 1.10055e-10, 1.15293e-10, 1.20531e-10, 1.26293e-10,
601 1.32585e-10, 1.35966e-10, 1.36242e-10, 1.36519e-10, 1.61155e-10,
602 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
603 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
604 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
605 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
606 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
607 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
608 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
609 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
610 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
611 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
612 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
613 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
614 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
615 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10, 1.99157e-10,
619 static const double h2o[121] = {
620 0.01166, 0.008269, 0.005742, 0.003845, 0.00277, 0.001897, 0.001272,
621 0.000827, 0.000539, 0.0003469, 0.0001579, 3.134e-05, 1.341e-05,
622 6.764e-06, 4.498e-06, 3.703e-06, 3.724e-06, 3.899e-06, 4.002e-06,
623 4.122e-06, 4.277e-06, 4.438e-06, 4.558e-06, 4.673e-06, 4.763e-06,
624 4.809e-06, 4.856e-06, 4.936e-06, 5.021e-06, 5.114e-06, 5.222e-06,
625 5.331e-06, 5.414e-06, 5.488e-06, 5.563e-06, 5.633e-06, 5.704e-06,
626 5.767e-06, 5.819e-06, 5.872e-06, 5.914e-06, 5.949e-06, 5.984e-06,
627 6.015e-06, 6.044e-06, 6.073e-06, 6.104e-06, 6.136e-06, 6.167e-06,
628 6.189e-06, 6.208e-06, 6.226e-06, 6.212e-06, 6.185e-06, 6.158e-06,
629 6.114e-06, 6.066e-06, 6.018e-06, 5.877e-06, 5.728e-06, 5.582e-06,
630 5.437e-06, 5.296e-06, 5.156e-06, 5.02e-06, 4.886e-06, 4.754e-06,
631 4.625e-06, 4.498e-06, 4.374e-06, 4.242e-06, 4.096e-06, 3.955e-06,
632 3.817e-06, 3.683e-06, 3.491e-06, 3.204e-06, 2.94e-06, 2.696e-06,
633 2.47e-06, 2.252e-06, 2.019e-06, 1.808e-06, 1.618e-06, 1.445e-06,
634 1.285e-06, 1.105e-06, 9.489e-07, 8.121e-07, 6.938e-07, 5.924e-07,
635 5.04e-07, 4.288e-07, 3.648e-07, 3.103e-07, 2.642e-07, 2.252e-07,
636 1.921e-07, 1.643e-07, 1.408e-07, 1.211e-07, 1.048e-07, 9.063e-08,
637 7.835e-08, 6.774e-08, 5.936e-08, 5.221e-08, 4.592e-08, 4.061e-08,
638 3.62e-08, 3.236e-08, 2.902e-08, 2.62e-08, 2.383e-08, 2.171e-08,
639 1.989e-08, 1.823e-08, 1.684e-08, 1.562e-08, 1.449e-08, 1.351e-08
642 static const double h2o2[121] = {
643 1.779e-10, 7.938e-10, 8.953e-10, 8.032e-10, 6.564e-10, 5.159e-10,
644 4.003e-10, 3.026e-10, 2.222e-10, 1.58e-10, 1.044e-10, 6.605e-11,
645 3.413e-11, 1.453e-11, 1.062e-11, 1.009e-11, 9.597e-12, 1.175e-11,
646 1.572e-11, 2.091e-11, 2.746e-11, 3.603e-11, 4.791e-11, 6.387e-11,
647 8.239e-11, 1.007e-10, 1.23e-10, 1.363e-10, 1.489e-10, 1.585e-10,
648 1.608e-10, 1.632e-10, 1.576e-10, 1.502e-10, 1.423e-10, 1.302e-10,
649 1.192e-10, 1.085e-10, 9.795e-11, 8.854e-11, 8.057e-11, 7.36e-11,
650 6.736e-11, 6.362e-11, 6.087e-11, 5.825e-11, 5.623e-11, 5.443e-11,
651 5.27e-11, 5.098e-11, 4.931e-11, 4.769e-11, 4.611e-11, 4.458e-11,
652 4.308e-11, 4.102e-11, 3.887e-11, 3.682e-11, 3.521e-11, 3.369e-11,
653 3.224e-11, 3.082e-11, 2.946e-11, 2.814e-11, 2.687e-11, 2.566e-11,
654 2.449e-11, 2.336e-11, 2.227e-11, 2.123e-11, 2.023e-11, 1.927e-11,
655 1.835e-11, 1.746e-11, 1.661e-11, 1.58e-11, 1.502e-11, 1.428e-11,
656 1.357e-11, 1.289e-11, 1.224e-11, 1.161e-11, 1.102e-11, 1.045e-11,
657 9.895e-12, 9.369e-12, 8.866e-12, 8.386e-12, 7.922e-12, 7.479e-12,
658 7.06e-12, 6.656e-12, 6.274e-12, 5.914e-12, 5.575e-12, 5.257e-12,
659 4.959e-12, 4.679e-12, 4.42e-12, 4.178e-12, 3.954e-12, 3.75e-12,
660 3.557e-12, 3.372e-12, 3.198e-12, 3.047e-12, 2.908e-12, 2.775e-12,
661 2.653e-12, 2.544e-12, 2.442e-12, 2.346e-12, 2.26e-12, 2.183e-12,
662 2.11e-12, 2.044e-12, 1.98e-12, 1.924e-12, 1.871e-12, 1.821e-12,
666 static const double hcl[121] = {
667 3.70385e-11, 3.70385e-11, 3.70385e-11, 3.70385e-11, 3.70385e-11,
668 3.70385e-11, 2.21247e-11, 1.88117e-11, 2.36957e-11, 3.72192e-11,
669 5.79399e-11, 8.04158e-11, 1.01779e-10, 1.2301e-10, 1.53924e-10,
670 1.93737e-10, 2.5561e-10, 3.84228e-10, 6.18248e-10, 6.31222e-10,
671 7.84907e-10, 9.36932e-10, 1.03508e-09, 1.13323e-09, 1.23138e-09,
672 1.31985e-09, 1.39669e-09, 1.47352e-09, 1.56375e-09, 1.66234e-09,
673 1.78086e-09, 1.91256e-09, 2.04425e-09, 2.16629e-09, 2.28535e-09,
674 2.39439e-09, 2.47597e-09, 2.55755e-09, 2.60873e-09, 2.65696e-09,
675 2.70519e-09, 2.75658e-09, 2.81422e-09, 2.87187e-09, 2.94013e-09,
676 3.01911e-09, 3.09497e-09, 3.16749e-09, 3.24001e-09, 3.30525e-09,
677 3.3665e-09, 3.42424e-09, 3.4619e-09, 3.49956e-09, 3.52273e-09,
678 3.54214e-09, 3.56154e-09, 3.57918e-09, 3.59049e-09, 3.6018e-09,
679 3.6132e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
680 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
681 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
682 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
683 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
684 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
685 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
686 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
687 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
688 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
689 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
690 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09, 3.62476e-09,
694 static const double hcn[121] = {
695 5.5e-10, 5.5e-10, 5.5e-10, 5.5e-10, 5.5e-10, 5.5e-10, 5.5e-10,
696 5.5e-10, 5.5e-10, 5.5e-10, 5.5e-10, 5.498e-10, 5.495e-10, 5.493e-10,
697 5.49e-10, 5.488e-10, 4.717e-10, 3.946e-10, 3.174e-10, 2.4e-10,
698 1.626e-10, 1.619e-10, 1.612e-10, 1.602e-10, 1.593e-10, 1.582e-10,
699 1.572e-10, 1.56e-10, 1.549e-10, 1.539e-10, 1.53e-10, 1.519e-10,
700 1.506e-10, 1.487e-10, 1.467e-10, 1.449e-10, 1.43e-10, 1.413e-10,
701 1.397e-10, 1.382e-10, 1.368e-10, 1.354e-10, 1.337e-10, 1.315e-10,
702 1.292e-10, 1.267e-10, 1.241e-10, 1.215e-10, 1.19e-10, 1.165e-10,
703 1.141e-10, 1.118e-10, 1.096e-10, 1.072e-10, 1.047e-10, 1.021e-10,
704 9.968e-11, 9.739e-11, 9.539e-11, 9.339e-11, 9.135e-11, 8.898e-11,
705 8.664e-11, 8.439e-11, 8.249e-11, 8.075e-11, 7.904e-11, 7.735e-11,
706 7.565e-11, 7.399e-11, 7.245e-11, 7.109e-11, 6.982e-11, 6.863e-11,
707 6.755e-11, 6.657e-11, 6.587e-11, 6.527e-11, 6.476e-11, 6.428e-11,
708 6.382e-11, 6.343e-11, 6.307e-11, 6.272e-11, 6.238e-11, 6.205e-11,
709 6.17e-11, 6.137e-11, 6.102e-11, 6.072e-11, 6.046e-11, 6.03e-11,
710 6.018e-11, 6.01e-11, 6.001e-11, 5.992e-11, 5.984e-11, 5.975e-11,
711 5.967e-11, 5.958e-11, 5.95e-11, 5.941e-11, 5.933e-11, 5.925e-11,
712 5.916e-11, 5.908e-11, 5.899e-11, 5.891e-11, 5.883e-11, 5.874e-11,
713 5.866e-11, 5.858e-11, 5.85e-11, 5.841e-11, 5.833e-11, 5.825e-11,
714 5.817e-11, 5.808e-11, 5.8e-11, 5.792e-11, 5.784e-11
717 static const double hf[121] = {
718 2.64279e-11, 2.64279e-11, 2.64279e-11, 2.64279e-11, 2.64279e-11,
719 2.64279e-11, 2.64279e-11, 2.64279e-11, 2.64279e-11, 2.64279e-11,
720 2.64279e-11, 2.64279e-11, 2.64279e-11, 3.86691e-11, 5.22002e-11,
721 6.92471e-11, 9.13979e-11, 1.37918e-10, 2.24918e-10, 2.29824e-10,
722 2.94241e-10, 3.58363e-10, 4.12881e-10, 4.67399e-10, 5.21917e-10,
723 5.74229e-10, 6.23889e-10, 6.73549e-10, 7.24119e-10, 7.75256e-10,
724 8.319e-10, 8.92185e-10, 9.52469e-10, 1.01325e-09, 1.07419e-09,
725 1.13565e-09, 1.19856e-09, 1.26146e-09, 1.31439e-09, 1.36635e-09,
726 1.41831e-09, 1.46549e-09, 1.50321e-09, 1.54093e-09, 1.57986e-09,
727 1.62e-09, 1.66286e-09, 1.70863e-09, 1.75439e-09, 1.79827e-09,
728 1.84111e-09, 1.88125e-09, 1.90603e-09, 1.93081e-09, 1.9413e-09,
729 1.94807e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
730 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
731 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
732 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
733 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
734 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
735 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
736 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
737 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
738 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
739 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
740 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
741 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09, 1.95485e-09,
745 static const double hno3[121] = {
746 1.809e-10, 7.234e-10, 5.899e-10, 4.342e-10, 3.277e-10, 2.661e-10,
747 2.35e-10, 2.267e-10, 2.389e-10, 2.651e-10, 3.255e-10, 4.099e-10,
748 5.42e-10, 6.978e-10, 8.807e-10, 1.112e-09, 1.405e-09, 2.04e-09,
749 3.111e-09, 4.5e-09, 5.762e-09, 7.37e-09, 7.852e-09, 8.109e-09,
750 8.067e-09, 7.554e-09, 7.076e-09, 6.268e-09, 5.524e-09, 4.749e-09,
751 3.909e-09, 3.223e-09, 2.517e-09, 1.942e-09, 1.493e-09, 1.122e-09,
752 8.449e-10, 6.361e-10, 4.787e-10, 3.611e-10, 2.804e-10, 2.215e-10,
753 1.758e-10, 1.441e-10, 1.197e-10, 9.953e-11, 8.505e-11, 7.334e-11,
754 6.325e-11, 5.625e-11, 5.058e-11, 4.548e-11, 4.122e-11, 3.748e-11,
755 3.402e-11, 3.088e-11, 2.8e-11, 2.536e-11, 2.293e-11, 2.072e-11,
756 1.871e-11, 1.687e-11, 1.52e-11, 1.368e-11, 1.23e-11, 1.105e-11,
757 9.922e-12, 8.898e-12, 7.972e-12, 7.139e-12, 6.385e-12, 5.708e-12,
758 5.099e-12, 4.549e-12, 4.056e-12, 3.613e-12, 3.216e-12, 2.862e-12,
759 2.544e-12, 2.259e-12, 2.004e-12, 1.776e-12, 1.572e-12, 1.391e-12,
760 1.227e-12, 1.082e-12, 9.528e-13, 8.379e-13, 7.349e-13, 6.436e-13,
761 5.634e-13, 4.917e-13, 4.291e-13, 3.745e-13, 3.267e-13, 2.854e-13,
762 2.494e-13, 2.181e-13, 1.913e-13, 1.68e-13, 1.479e-13, 1.31e-13,
763 1.159e-13, 1.025e-13, 9.067e-14, 8.113e-14, 7.281e-14, 6.535e-14,
764 5.892e-14, 5.348e-14, 4.867e-14, 4.439e-14, 4.073e-14, 3.76e-14,
765 3.476e-14, 3.229e-14, 3e-14, 2.807e-14, 2.635e-14, 2.473e-14,
769 static const double hno4[121] = {
770 6.118e-12, 3.594e-12, 2.807e-12, 3.04e-12, 4.458e-12, 7.986e-12,
771 1.509e-11, 2.661e-11, 3.738e-11, 4.652e-11, 4.429e-11, 3.992e-11,
772 3.347e-11, 3.005e-11, 3.173e-11, 4.055e-11, 5.812e-11, 8.489e-11,
773 1.19e-10, 1.482e-10, 1.766e-10, 2.103e-10, 2.35e-10, 2.598e-10,
774 2.801e-10, 2.899e-10, 3e-10, 2.817e-10, 2.617e-10, 2.332e-10,
775 1.933e-10, 1.605e-10, 1.232e-10, 9.285e-11, 6.941e-11, 4.951e-11,
776 3.539e-11, 2.402e-11, 1.522e-11, 9.676e-12, 6.056e-12, 3.745e-12,
777 2.34e-12, 1.463e-12, 9.186e-13, 5.769e-13, 3.322e-13, 1.853e-13,
778 1.035e-13, 7.173e-14, 5.382e-14, 4.036e-14, 3.401e-14, 2.997e-14,
779 2.635e-14, 2.316e-14, 2.034e-14, 1.783e-14, 1.56e-14, 1.363e-14,
780 1.19e-14, 1.037e-14, 9.032e-15, 7.846e-15, 6.813e-15, 5.912e-15,
781 5.121e-15, 4.431e-15, 3.829e-15, 3.306e-15, 2.851e-15, 2.456e-15,
782 2.114e-15, 1.816e-15, 1.559e-15, 1.337e-15, 1.146e-15, 9.811e-16,
783 8.389e-16, 7.162e-16, 6.109e-16, 5.203e-16, 4.425e-16, 3.76e-16,
784 3.184e-16, 2.692e-16, 2.274e-16, 1.917e-16, 1.61e-16, 1.35e-16,
785 1.131e-16, 9.437e-17, 7.874e-17, 6.57e-17, 5.481e-17, 4.579e-17,
786 3.828e-17, 3.204e-17, 2.691e-17, 2.264e-17, 1.912e-17, 1.626e-17,
787 1.382e-17, 1.174e-17, 9.972e-18, 8.603e-18, 7.45e-18, 6.453e-18,
788 5.623e-18, 4.944e-18, 4.361e-18, 3.859e-18, 3.443e-18, 3.096e-18,
789 2.788e-18, 2.528e-18, 2.293e-18, 2.099e-18, 1.929e-18, 1.773e-18,
793 static const double hocl[121] = {
794 1.056e-12, 1.194e-12, 1.35e-12, 1.531e-12, 1.737e-12, 1.982e-12,
795 2.263e-12, 2.599e-12, 2.991e-12, 3.459e-12, 4.012e-12, 4.662e-12,
796 5.438e-12, 6.35e-12, 7.425e-12, 8.686e-12, 1.016e-11, 1.188e-11,
797 1.389e-11, 1.659e-11, 2.087e-11, 2.621e-11, 3.265e-11, 4.064e-11,
798 4.859e-11, 5.441e-11, 6.09e-11, 6.373e-11, 6.611e-11, 6.94e-11,
799 7.44e-11, 7.97e-11, 8.775e-11, 9.722e-11, 1.064e-10, 1.089e-10,
800 1.114e-10, 1.106e-10, 1.053e-10, 1.004e-10, 9.006e-11, 7.778e-11,
801 6.739e-11, 5.636e-11, 4.655e-11, 3.845e-11, 3.042e-11, 2.368e-11,
802 1.845e-11, 1.442e-11, 1.127e-11, 8.814e-12, 6.544e-12, 4.763e-12,
803 3.449e-12, 2.612e-12, 1.999e-12, 1.526e-12, 1.16e-12, 8.793e-13,
804 6.655e-13, 5.017e-13, 3.778e-13, 2.829e-13, 2.117e-13, 1.582e-13,
805 1.178e-13, 8.755e-14, 6.486e-14, 4.799e-14, 3.54e-14, 2.606e-14,
806 1.916e-14, 1.403e-14, 1.026e-14, 7.48e-15, 5.446e-15, 3.961e-15,
807 2.872e-15, 2.076e-15, 1.498e-15, 1.077e-15, 7.726e-16, 5.528e-16,
808 3.929e-16, 2.785e-16, 1.969e-16, 1.386e-16, 9.69e-17, 6.747e-17,
809 4.692e-17, 3.236e-17, 2.232e-17, 1.539e-17, 1.061e-17, 7.332e-18,
810 5.076e-18, 3.522e-18, 2.461e-18, 1.726e-18, 1.22e-18, 8.75e-19,
811 6.264e-19, 4.482e-19, 3.207e-19, 2.368e-19, 1.762e-19, 1.312e-19,
812 9.891e-20, 7.595e-20, 5.87e-20, 4.567e-20, 3.612e-20, 2.904e-20,
813 2.343e-20, 1.917e-20, 1.568e-20, 1.308e-20, 1.1e-20, 9.25e-21,
817 static const double n2o[121] = {
818 3.17e-07, 3.17e-07, 3.17e-07, 3.17e-07, 3.17e-07, 3.17e-07, 3.17e-07,
819 3.17e-07, 3.17e-07, 3.17e-07, 3.124e-07, 3.077e-07, 3.03e-07,
820 2.984e-07, 2.938e-07, 2.892e-07, 2.847e-07, 2.779e-07, 2.705e-07,
821 2.631e-07, 2.557e-07, 2.484e-07, 2.345e-07, 2.201e-07, 2.01e-07,
822 1.754e-07, 1.532e-07, 1.329e-07, 1.154e-07, 1.003e-07, 8.735e-08,
823 7.617e-08, 6.512e-08, 5.547e-08, 4.709e-08, 3.915e-08, 3.259e-08,
824 2.738e-08, 2.327e-08, 1.98e-08, 1.711e-08, 1.493e-08, 1.306e-08,
825 1.165e-08, 1.049e-08, 9.439e-09, 8.375e-09, 7.391e-09, 6.525e-09,
826 5.759e-09, 5.083e-09, 4.485e-09, 3.953e-09, 3.601e-09, 3.27e-09,
827 2.975e-09, 2.757e-09, 2.556e-09, 2.37e-09, 2.195e-09, 2.032e-09,
828 1.912e-09, 1.79e-09, 1.679e-09, 1.572e-09, 1.482e-09, 1.402e-09,
829 1.326e-09, 1.254e-09, 1.187e-09, 1.127e-09, 1.071e-09, 1.02e-09,
830 9.673e-10, 9.193e-10, 8.752e-10, 8.379e-10, 8.017e-10, 7.66e-10,
831 7.319e-10, 7.004e-10, 6.721e-10, 6.459e-10, 6.199e-10, 5.942e-10,
832 5.703e-10, 5.488e-10, 5.283e-10, 5.082e-10, 4.877e-10, 4.696e-10,
833 4.52e-10, 4.355e-10, 4.198e-10, 4.039e-10, 3.888e-10, 3.754e-10,
834 3.624e-10, 3.499e-10, 3.381e-10, 3.267e-10, 3.163e-10, 3.058e-10,
835 2.959e-10, 2.864e-10, 2.77e-10, 2.686e-10, 2.604e-10, 2.534e-10,
836 2.462e-10, 2.386e-10, 2.318e-10, 2.247e-10, 2.189e-10, 2.133e-10,
837 2.071e-10, 2.014e-10, 1.955e-10, 1.908e-10, 1.86e-10, 1.817e-10
840 static const double n2o5[121] = {
841 1.231e-11, 3.035e-12, 1.702e-12, 9.877e-13, 8.081e-13, 9.039e-13,
842 1.169e-12, 1.474e-12, 1.651e-12, 1.795e-12, 1.998e-12, 2.543e-12,
843 4.398e-12, 7.698e-12, 1.28e-11, 2.131e-11, 3.548e-11, 5.894e-11,
844 7.645e-11, 1.089e-10, 1.391e-10, 1.886e-10, 2.386e-10, 2.986e-10,
845 3.487e-10, 3.994e-10, 4.5e-10, 4.6e-10, 4.591e-10, 4.1e-10, 3.488e-10,
846 2.846e-10, 2.287e-10, 1.696e-10, 1.011e-10, 6.428e-11, 4.324e-11,
847 2.225e-11, 6.214e-12, 3.608e-12, 8.793e-13, 4.491e-13, 1.04e-13,
848 6.1e-14, 3.436e-14, 6.671e-15, 1.171e-15, 5.848e-16, 1.212e-16,
849 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
850 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
851 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
852 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
853 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
854 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
855 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16, 1e-16,
859 static const double nh3[121] = {
860 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
861 1e-10, 1e-10, 1e-10, 1e-10, 9.444e-11, 8.488e-11, 7.241e-11, 5.785e-11,
862 4.178e-11, 3.018e-11, 2.18e-11, 1.574e-11, 1.137e-11, 8.211e-12,
863 5.973e-12, 4.327e-12, 3.118e-12, 2.234e-12, 1.573e-12, 1.04e-12,
864 6.762e-13, 4.202e-13, 2.406e-13, 1.335e-13, 6.938e-14, 3.105e-14,
865 1.609e-14, 1.033e-14, 6.432e-15, 4.031e-15, 2.555e-15, 1.656e-15,
866 1.115e-15, 7.904e-16, 5.63e-16, 4.048e-16, 2.876e-16, 2.004e-16,
867 1.356e-16, 9.237e-17, 6.235e-17, 4.223e-17, 3.009e-17, 2.328e-17,
868 2.002e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
869 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
870 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
871 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
872 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
873 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
874 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
875 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
876 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
877 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
878 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17, 1.914e-17,
882 static const double no[121] = {
883 2.586e-10, 4.143e-11, 1.566e-11, 9.591e-12, 8.088e-12, 8.462e-12,
884 1.013e-11, 1.328e-11, 1.855e-11, 2.678e-11, 3.926e-11, 5.464e-11,
885 7.012e-11, 8.912e-11, 1.127e-10, 1.347e-10, 1.498e-10, 1.544e-10,
886 1.602e-10, 1.824e-10, 2.078e-10, 2.366e-10, 2.691e-10, 5.141e-10,
887 8.259e-10, 1.254e-09, 1.849e-09, 2.473e-09, 3.294e-09, 4.16e-09,
888 5.095e-09, 6.11e-09, 6.93e-09, 7.888e-09, 8.903e-09, 9.713e-09,
889 1.052e-08, 1.115e-08, 1.173e-08, 1.21e-08, 1.228e-08, 1.239e-08,
890 1.231e-08, 1.213e-08, 1.192e-08, 1.138e-08, 1.085e-08, 1.008e-08,
891 9.224e-09, 8.389e-09, 7.262e-09, 6.278e-09, 5.335e-09, 4.388e-09,
892 3.589e-09, 2.761e-09, 2.129e-09, 1.633e-09, 1.243e-09, 9.681e-10,
893 8.355e-10, 7.665e-10, 7.442e-10, 8.584e-10, 9.732e-10, 1.063e-09,
894 1.163e-09, 1.286e-09, 1.472e-09, 1.707e-09, 2.032e-09, 2.474e-09,
895 2.977e-09, 3.506e-09, 4.102e-09, 5.013e-09, 6.493e-09, 8.414e-09,
896 1.077e-08, 1.367e-08, 1.777e-08, 2.625e-08, 3.926e-08, 5.545e-08,
897 7.195e-08, 9.464e-08, 1.404e-07, 2.183e-07, 3.329e-07, 4.535e-07,
898 6.158e-07, 8.187e-07, 1.075e-06, 1.422e-06, 1.979e-06, 2.71e-06,
899 3.58e-06, 4.573e-06, 5.951e-06, 7.999e-06, 1.072e-05, 1.372e-05,
900 1.697e-05, 2.112e-05, 2.643e-05, 3.288e-05, 3.994e-05, 4.794e-05,
901 5.606e-05, 6.383e-05, 7.286e-05, 8.156e-05, 8.883e-05, 9.469e-05,
902 9.848e-05, 0.0001023, 0.0001066, 0.0001115, 0.0001145, 0.0001142,
906 static const double no2[121] = {
907 3.036e-09, 2.945e-10, 9.982e-11, 5.069e-11, 3.485e-11, 2.982e-11,
908 2.947e-11, 3.164e-11, 3.714e-11, 4.586e-11, 6.164e-11, 8.041e-11,
909 9.982e-11, 1.283e-10, 1.73e-10, 2.56e-10, 3.909e-10, 5.959e-10,
910 9.081e-10, 1.384e-09, 1.788e-09, 2.189e-09, 2.686e-09, 3.091e-09,
911 3.49e-09, 3.796e-09, 4.2e-09, 5.103e-09, 6.005e-09, 6.3e-09, 6.706e-09,
912 7.07e-09, 7.434e-09, 7.663e-09, 7.788e-09, 7.8e-09, 7.597e-09,
913 7.482e-09, 7.227e-09, 6.403e-09, 5.585e-09, 4.606e-09, 3.703e-09,
914 2.984e-09, 2.183e-09, 1.48e-09, 8.441e-10, 5.994e-10, 3.799e-10,
915 2.751e-10, 1.927e-10, 1.507e-10, 1.102e-10, 6.971e-11, 5.839e-11,
916 3.904e-11, 3.087e-11, 2.176e-11, 1.464e-11, 1.209e-11, 8.497e-12,
917 6.477e-12, 4.371e-12, 2.914e-12, 2.424e-12, 1.753e-12, 1.35e-12,
918 9.417e-13, 6.622e-13, 5.148e-13, 3.841e-13, 3.446e-13, 3.01e-13,
919 2.551e-13, 2.151e-13, 1.829e-13, 1.64e-13, 1.475e-13, 1.352e-13,
920 1.155e-13, 9.963e-14, 9.771e-14, 9.577e-14, 9.384e-14, 9.186e-14,
921 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14,
922 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14,
923 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14,
924 9e-14, 9e-14, 9e-14, 9e-14, 9e-14, 9e-14
927 static const double o3[121] = {
928 2.218e-08, 3.394e-08, 3.869e-08, 4.219e-08, 4.501e-08, 4.778e-08,
929 5.067e-08, 5.402e-08, 5.872e-08, 6.521e-08, 7.709e-08, 9.461e-08,
930 1.269e-07, 1.853e-07, 2.723e-07, 3.964e-07, 5.773e-07, 8.2e-07,
931 1.155e-06, 1.59e-06, 2.076e-06, 2.706e-06, 3.249e-06, 3.848e-06,
932 4.459e-06, 4.986e-06, 5.573e-06, 5.958e-06, 6.328e-06, 6.661e-06,
933 6.9e-06, 7.146e-06, 7.276e-06, 7.374e-06, 7.447e-06, 7.383e-06,
934 7.321e-06, 7.161e-06, 6.879e-06, 6.611e-06, 6.216e-06, 5.765e-06,
935 5.355e-06, 4.905e-06, 4.471e-06, 4.075e-06, 3.728e-06, 3.413e-06,
936 3.125e-06, 2.856e-06, 2.607e-06, 2.379e-06, 2.17e-06, 1.978e-06,
937 1.8e-06, 1.646e-06, 1.506e-06, 1.376e-06, 1.233e-06, 1.102e-06,
938 9.839e-07, 8.771e-07, 7.814e-07, 6.947e-07, 6.102e-07, 5.228e-07,
939 4.509e-07, 3.922e-07, 3.501e-07, 3.183e-07, 2.909e-07, 2.686e-07,
940 2.476e-07, 2.284e-07, 2.109e-07, 2.003e-07, 2.013e-07, 2.022e-07,
941 2.032e-07, 2.042e-07, 2.097e-07, 2.361e-07, 2.656e-07, 2.989e-07,
942 3.37e-07, 3.826e-07, 4.489e-07, 5.26e-07, 6.189e-07, 7.312e-07,
943 8.496e-07, 8.444e-07, 8.392e-07, 8.339e-07, 8.286e-07, 8.234e-07,
944 8.181e-07, 8.129e-07, 8.077e-07, 8.026e-07, 6.918e-07, 5.176e-07,
945 3.865e-07, 2.885e-07, 2.156e-07, 1.619e-07, 1.219e-07, 9.161e-08,
946 6.972e-08, 5.399e-08, 3.498e-08, 2.111e-08, 1.322e-08, 8.482e-09,
947 5.527e-09, 3.423e-09, 2.071e-09, 1.314e-09, 8.529e-10, 5.503e-10,
951 static const double ocs[121] = {
952 6e-10, 6e-10, 6e-10, 6e-10, 6e-10, 6e-10, 6e-10, 6e-10, 6e-10, 5.997e-10,
953 5.989e-10, 5.881e-10, 5.765e-10, 5.433e-10, 5.074e-10, 4.567e-10,
954 4.067e-10, 3.601e-10, 3.093e-10, 2.619e-10, 2.232e-10, 1.805e-10,
955 1.46e-10, 1.187e-10, 8.03e-11, 5.435e-11, 3.686e-11, 2.217e-11,
956 1.341e-11, 8.756e-12, 4.511e-12, 2.37e-12, 1.264e-12, 8.28e-13,
957 5.263e-13, 3.209e-13, 1.717e-13, 9.068e-14, 4.709e-14, 2.389e-14,
958 1.236e-14, 1.127e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
959 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
960 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
961 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
962 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
963 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
964 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
965 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
966 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
967 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
968 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
969 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
970 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14, 1.091e-14,
971 1.091e-14, 1.091e-14, 1.091e-14
974 static const double sf6[121] = {
975 4.103e-12, 4.103e-12, 4.103e-12, 4.103e-12, 4.103e-12, 4.103e-12,
976 4.103e-12, 4.103e-12, 4.103e-12, 4.087e-12, 4.064e-12, 4.023e-12,
977 3.988e-12, 3.941e-12, 3.884e-12, 3.755e-12, 3.622e-12, 3.484e-12,
978 3.32e-12, 3.144e-12, 2.978e-12, 2.811e-12, 2.653e-12, 2.489e-12,
979 2.332e-12, 2.199e-12, 2.089e-12, 2.013e-12, 1.953e-12, 1.898e-12,
980 1.859e-12, 1.826e-12, 1.798e-12, 1.776e-12, 1.757e-12, 1.742e-12,
981 1.728e-12, 1.717e-12, 1.707e-12, 1.698e-12, 1.691e-12, 1.685e-12,
982 1.679e-12, 1.675e-12, 1.671e-12, 1.668e-12, 1.665e-12, 1.663e-12,
983 1.661e-12, 1.659e-12, 1.658e-12, 1.657e-12, 1.656e-12, 1.655e-12,
984 1.654e-12, 1.653e-12, 1.653e-12, 1.652e-12, 1.652e-12, 1.652e-12,
985 1.651e-12, 1.651e-12, 1.651e-12, 1.651e-12, 1.651e-12, 1.651e-12,
986 1.651e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
987 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
988 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
989 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
990 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
991 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
992 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12,
993 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12, 1.65e-12
996 static const double so2[121] = {
997 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
998 1e-10, 1e-10, 9.867e-11, 9.537e-11, 9e-11, 8.404e-11, 7.799e-11,
999 7.205e-11, 6.616e-11, 6.036e-11, 5.475e-11, 5.007e-11, 4.638e-11,
1000 4.346e-11, 4.055e-11, 3.763e-11, 3.471e-11, 3.186e-11, 2.905e-11,
1001 2.631e-11, 2.358e-11, 2.415e-11, 2.949e-11, 3.952e-11, 5.155e-11,
1002 6.76e-11, 8.741e-11, 1.099e-10, 1.278e-10, 1.414e-10, 1.512e-10,
1003 1.607e-10, 1.699e-10, 1.774e-10, 1.832e-10, 1.871e-10, 1.907e-10,
1004 1.943e-10, 1.974e-10, 1.993e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1005 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1006 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1007 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1008 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1009 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1010 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
1011 2e-10, 2e-10, 2e-10, 2e-10, 2e-10, 2e-10
1014 const double *q[
NG] = { NULL };
1017 for (
int ig = 0; ig < ctl->
ng; ig++) {
1019 if (strcasecmp(ctl->
emitter[ig],
"C2H2") == 0)
1021 if (strcasecmp(ctl->
emitter[ig],
"C2H6") == 0)
1023 if (strcasecmp(ctl->
emitter[ig],
"CCl4") == 0)
1025 if (strcasecmp(ctl->
emitter[ig],
"CH3OH") == 0)
1027 if (strcasecmp(ctl->
emitter[ig],
"CH4") == 0)
1029 if (strcasecmp(ctl->
emitter[ig],
"ClO") == 0)
1031 if (strcasecmp(ctl->
emitter[ig],
"ClONO2") == 0)
1033 if (strcasecmp(ctl->
emitter[ig],
"CO") == 0)
1035 if (strcasecmp(ctl->
emitter[ig],
"COF2") == 0)
1037 if (strcasecmp(ctl->
emitter[ig],
"F11") == 0)
1039 if (strcasecmp(ctl->
emitter[ig],
"F113") == 0)
1041 if (strcasecmp(ctl->
emitter[ig],
"F114") == 0)
1043 if (strcasecmp(ctl->
emitter[ig],
"F12") == 0)
1045 if (strcasecmp(ctl->
emitter[ig],
"F14") == 0)
1047 if (strcasecmp(ctl->
emitter[ig],
"F22") == 0)
1049 if (strcasecmp(ctl->
emitter[ig],
"H2CO") == 0)
1051 if (strcasecmp(ctl->
emitter[ig],
"H2O") == 0)
1053 if (strcasecmp(ctl->
emitter[ig],
"H2O2") == 0)
1055 if (strcasecmp(ctl->
emitter[ig],
"HCl") == 0)
1057 if (strcasecmp(ctl->
emitter[ig],
"HCN") == 0)
1059 if (strcasecmp(ctl->
emitter[ig],
"HF") == 0)
1061 if (strcasecmp(ctl->
emitter[ig],
"HNO3") == 0)
1063 if (strcasecmp(ctl->
emitter[ig],
"HNO4") == 0)
1065 if (strcasecmp(ctl->
emitter[ig],
"HOCl") == 0)
1067 if (strcasecmp(ctl->
emitter[ig],
"N2O") == 0)
1069 if (strcasecmp(ctl->
emitter[ig],
"N2O5") == 0)
1071 if (strcasecmp(ctl->
emitter[ig],
"NH3") == 0)
1073 if (strcasecmp(ctl->
emitter[ig],
"NO") == 0)
1075 if (strcasecmp(ctl->
emitter[ig],
"NO2") == 0)
1077 if (strcasecmp(ctl->
emitter[ig],
"O3") == 0)
1079 if (strcasecmp(ctl->
emitter[ig],
"OCS") == 0)
1081 if (strcasecmp(ctl->
emitter[ig],
"SF6") == 0)
1083 if (strcasecmp(ctl->
emitter[ig],
"SO2") == 0)
1088 for (
int ip = 0; ip < atm->
np; ip++) {
1094 atm->
p[ip] =
LOGY(z[iz], pre[iz], z[iz + 1], pre[iz + 1], atm->
z[ip]);
1097 atm->
t[ip] =
LIN(z[iz], tem[iz], z[iz + 1], tem[iz + 1], atm->
z[ip]);
1100 for (
int ig = 0; ig < ctl->
ng; ig++)
1103 LIN(z[iz], q[ig][iz], z[iz + 1], q[ig][iz + 1], atm->
z[ip]);
1110 371.789948e-6 + 2.026214e-6 * (atm->
time[ip] - 63158400.) / 31557600.;
1113 if (ctl->
ig_n2 >= 0)
1117 if (ctl->
ig_o2 >= 0)
1121 for (
int iw = 0; iw < ctl->
nw; iw++)
1126 for (
int icl = 0; icl < ctl->
ncl; icl++)
1131 for (
int isf = 0; isf < ctl->
nsf; isf++)
1132 atm->
sfeps[isf] = 1;
1141 gsl_matrix *s_a_inv,
1142 gsl_vector *sig_eps_inv) {
1144 double chisq_a, chisq_m = 0;
1147 const size_t m = dy->size;
1148 const size_t n = dx->size;
1151 gsl_vector *x_aux = gsl_vector_alloc(n);
1152 gsl_vector *y_aux = gsl_vector_alloc(m);
1156 for (
size_t i = 0; i < m; i++)
1157 chisq_m +=
POW2(gsl_vector_get(dy, i) * gsl_vector_get(sig_eps_inv, i));
1158 gsl_blas_dgemv(CblasNoTrans, 1.0, s_a_inv, dx, 0.0, x_aux);
1159 gsl_blas_ddot(dx, x_aux, &chisq_a);
1162 gsl_vector_free(x_aux);
1163 gsl_vector_free(y_aux);
1166 return (chisq_m + chisq_a) / (double) m;
1177 static const double co2296[2001] =
1178 { 9.3388e-5, 9.7711e-5, 1.0224e-4, 1.0697e-4,
1179 1.1193e-4, 1.1712e-4, 1.2255e-4, 1.2824e-4, 1.3419e-4, 1.4043e-4,
1180 1.4695e-4, 1.5378e-4, 1.6094e-4, 1.6842e-4, 1.7626e-4, 1.8447e-4,
1181 1.9307e-4, 2.0207e-4, 2.1149e-4, 2.2136e-4, 2.3169e-4, 2.4251e-4,
1182 2.5384e-4, 2.657e-4, 2.7813e-4, 2.9114e-4, 3.0477e-4, 3.1904e-4,
1183 3.3399e-4, 3.4965e-4, 3.6604e-4, 3.8322e-4, 4.0121e-4, 4.2006e-4,
1184 4.398e-4, 4.6047e-4, 4.8214e-4, 5.0483e-4, 5.286e-4, 5.535e-4,
1185 5.7959e-4, 6.0693e-4, 6.3557e-4, 6.6558e-4, 6.9702e-4, 7.2996e-4,
1186 7.6449e-4, 8.0066e-4, 8.3856e-4, 8.7829e-4, 9.1991e-4, 9.6354e-4,
1187 .0010093, .0010572, .0011074, .00116, .0012152, .001273,
1188 .0013336, .0013972, .0014638, .0015336, .0016068, .0016835,
1189 .001764, .0018483, .0019367, .0020295, .0021267, .0022286,
1190 .0023355, .0024476, .0025652, .0026885, .0028178, .0029534,
1191 .0030956, .0032448, .0034012, .0035654, .0037375, .0039181,
1192 .0041076, .0043063, .0045148, .0047336, .0049632, .005204,
1193 .0054567, .0057219, .0060002, .0062923, .0065988, .0069204,
1194 .007258, .0076123, .0079842, .0083746, .0087844, .0092146,
1195 .0096663, .01014, .010638, .011161, .01171, .012286, .012891,
1196 .013527, .014194, .014895, .015631, .016404, .017217, .01807,
1197 .018966, .019908, .020897, .021936, .023028, .024176, .025382,
1198 .026649, .027981, .02938, .030851, .032397, .034023, .035732,
1199 .037528, .039416, .041402, .04349, .045685, .047994, .050422,
1200 .052975, .055661, .058486, .061458, .064584, .067873, .071334,
1201 .074975, .078807, .082839, .087082, .091549, .096249, .1012,
1202 .10641, .11189, .11767, .12375, .13015, .13689, .14399, .15147,
1203 .15935, .16765, .17639, .18561, .19531, .20554, .21632, .22769,
1204 .23967, .25229, .2656, .27964, .29443, .31004, .3265, .34386,
1205 .36218, .3815, .40188, .42339, .44609, .47004, .49533, .52202,
1206 .5502, .57995, .61137, .64455, .6796, .71663, .75574, .79707,
1207 .84075, .88691, .9357, .98728, 1.0418, 1.0995, 1.1605, 1.225,
1208 1.2932, 1.3654, 1.4418, 1.5227, 1.6083, 1.6989, 1.7948, 1.8964,
1209 2.004, 2.118, 2.2388, 2.3668, 2.5025, 2.6463, 2.7988, 2.9606,
1210 3.1321, 3.314, 3.5071, 3.712, 3.9296, 4.1605, 4.4058, 4.6663,
1211 4.9431, 5.2374, 5.5501, 5.8818, 6.2353, 6.6114, 7.0115, 7.4372,
1212 7.8905, 8.3731, 8.8871, 9.4349, 10.019, 10.641, 11.305, 12.013,
1213 12.769, 13.576, 14.437, 15.358, 16.342, 17.39, 18.513, 19.716,
1214 21.003, 22.379, 23.854, 25.436, 27.126, 28.942, 30.89, 32.973,
1215 35.219, 37.634, 40.224, 43.021, 46.037, 49.29, 52.803, 56.447,
1216 60.418, 64.792, 69.526, 74.637, 80.182, 86.193, 92.713, 99.786,
1217 107.47, 115.84, 124.94, 134.86, 145.69, 157.49, 170.3, 184.39,
1218 199.83, 216.4, 234.55, 254.72, 276.82, 299.85, 326.16, 354.99,
1219 386.51, 416.68, 449.89, 490.12, 534.35, 578.25, 632.26, 692.61,
1220 756.43, 834.75, 924.11, 1016.9, 996.96, 1102.7, 1219.2, 1351.9,
1221 1494.3, 1654.1, 1826.5, 2027.9, 2249., 2453.8, 2714.4, 2999.4,
1222 3209.5, 3509., 3840.4, 3907.5, 4190.7, 4533.5, 4648.3, 5059.1,
1223 5561.6, 6191.4, 6820.8, 7905.9, 9362.2, 2431.3, 2211.3, 2046.8,
1224 2023.8, 1985.9, 1905.9, 1491.1, 1369.8, 1262.2, 1200.7, 887.74,
1225 820.25, 885.23, 887.21, 816.73, 1126.9, 1216.2, 1272.4, 1579.5,
1226 1634.2, 1656.3, 1657.9, 1789.5, 1670.8, 1509.5, 8474.6, 7489.2,
1227 6793.6, 6117., 5574.1, 5141.2, 5084.6, 4745.1, 4413.2, 4102.8,
1228 4024.7, 3715., 3398.6, 3100.8, 2900.4, 2629.2, 2374., 2144.7,
1229 1955.8, 1760.8, 1591.2, 1435.2, 1296.2, 1174., 1065.1, 967.76,
1230 999.48, 897.45, 809.23, 732.77, 670.26, 611.93, 560.11, 518.77,
1231 476.84, 438.8, 408.48, 380.21, 349.24, 322.71, 296.65, 272.85,
1232 251.96, 232.04, 213.88, 197.69, 182.41, 168.41, 155.79, 144.05,
1233 133.31, 123.48, 114.5, 106.21, 98.591, 91.612, 85.156, 79.204,
1234 73.719, 68.666, 63.975, 59.637, 56.35, 52.545, 49.042, 45.788,
1235 42.78, 39.992, 37.441, 35.037, 32.8, 30.744, 28.801, 26.986,
1236 25.297, 23.731, 22.258, 20.883, 19.603, 18.403, 17.295, 16.249,
1237 15.271, 14.356, 13.501, 12.701, 11.954, 11.254, 10.6, 9.9864,
1238 9.4118, 8.8745, 8.3714, 7.8997, 7.4578, 7.0446, 6.6573, 6.2949,
1239 5.9577, 5.6395, 5.3419, 5.063, 4.8037, 4.5608, 4.3452, 4.1364,
1240 3.9413, 3.7394, 3.562, 3.3932, 3.2325, 3.0789, 2.9318, 2.7898,
1241 2.6537, 2.5225, 2.3958, 2.2305, 2.1215, 2.0245, 1.9427, 1.8795,
1242 1.8336, 1.7604, 1.7016, 1.6419, 1.5282, 1.4611, 1.3443, 1.27,
1243 1.1675, 1.0824, 1.0534, .99833, .95854, .92981, .90887, .89346,
1244 .88113, .87068, .86102, .85096, .88262, .86151, .83565, .80518,
1245 .77045, .73736, .74744, .74954, .75773, .82267, .83493, .89402,
1246 .89725, .93426, .95564, .94045, .94174, .93404, .92035, .90456,
1247 .88621, .86673, .78117, .7515, .72056, .68822, .65658, .62764,
1248 .55984, .55598, .57407, .60963, .63763, .66198, .61132, .60972,
1249 .52496, .50649, .41872, .3964, .32422, .27276, .24048, .23772,
1250 .2286, .22711, .23999, .32038, .34371, .36621, .38561, .39953,
1251 .40636, .44913, .42716, .3919, .35477, .33935, .3351, .39746,
1252 .40993, .49398, .49956, .56157, .54742, .57295, .57386, .55417,
1253 .50745, .471, .43446, .39102, .34993, .31269, .27888, .24912,
1254 .22291, .19994, .17972, .16197, .14633, .13252, .12029, .10942,
1255 .099745, .091118, .083404, .076494, .070292, .064716, .059697,
1256 .055173, .051093, .047411, .044089, .041092, .038392, .035965,
1257 .033789, .031846, .030122, .028607, .02729, .026169, .025209,
1258 .024405, .023766, .023288, .022925, .022716, .022681, .022685,
1259 .022768, .023133, .023325, .023486, .024004, .024126, .024083,
1260 .023785, .024023, .023029, .021649, .021108, .019454, .017809,
1261 .017292, .016635, .017037, .018068, .018977, .018756, .017847,
1262 .016557, .016142, .014459, .012869, .012381, .010875, .0098701,
1263 .009285, .0091698, .0091701, .0096145, .010553, .01106, .012613,
1264 .014362, .015017, .016507, .017741, .01768, .017784, .0171,
1265 .016357, .016172, .017257, .018978, .020935, .021741, .023567,
1266 .025183, .025589, .026732, .027648, .028278, .028215, .02856,
1267 .029015, .029062, .028851, .028497, .027825, .027801, .026523,
1268 .02487, .022967, .022168, .020194, .018605, .017903, .018439,
1269 .019697, .020311, .020855, .020057, .018608, .016738, .015963,
1270 .013844, .011801, .011134, .0097573, .0086007, .0086226,
1271 .0083721, .0090978, .0097616, .0098426, .011317, .012853, .01447,
1272 .014657, .015771, .016351, .016079, .014829, .013431, .013185,
1273 .013207, .01448, .016176, .017971, .018265, .019526, .020455,
1274 .019797, .019802, .0194, .018176, .017505, .016197, .015339,
1275 .014401, .013213, .012203, .011186, .010236, .0093288, .0084854,
1276 .0076837, .0069375, .0062614, .0056628, .0051153, .0046015,
1277 .0041501, .003752, .0033996, .0030865, .0028077, .0025586,
1278 .0023355, .0021353, .0019553, .0017931, .0016466, .0015141,
1279 .0013941, .0012852, .0011862, .0010962, .0010142, 9.3935e-4,
1280 8.71e-4, 8.0851e-4, 7.5132e-4, 6.9894e-4, 6.5093e-4, 6.0689e-4,
1281 5.6647e-4, 5.2935e-4, 4.9525e-4, 4.6391e-4, 4.3509e-4, 4.086e-4,
1282 3.8424e-4, 3.6185e-4, 3.4126e-4, 3.2235e-4, 3.0498e-4, 2.8904e-4,
1283 2.7444e-4, 2.6106e-4, 2.4883e-4, 2.3766e-4, 2.275e-4, 2.1827e-4,
1284 2.0992e-4, 2.0239e-4, 1.9563e-4, 1.896e-4, 1.8427e-4, 1.796e-4,
1285 1.7555e-4, 1.7209e-4, 1.692e-4, 1.6687e-4, 1.6505e-4, 1.6375e-4,
1286 1.6294e-4, 1.6261e-4, 1.6274e-4, 1.6334e-4, 1.6438e-4, 1.6587e-4,
1287 1.678e-4, 1.7017e-4, 1.7297e-4, 1.762e-4, 1.7988e-4, 1.8399e-4,
1288 1.8855e-4, 1.9355e-4, 1.9902e-4, 2.0494e-4, 2.1134e-4, 2.1823e-4,
1289 2.2561e-4, 2.335e-4, 2.4192e-4, 2.5088e-4, 2.604e-4, 2.705e-4,
1290 2.8119e-4, 2.9251e-4, 3.0447e-4, 3.171e-4, 3.3042e-4, 3.4447e-4,
1291 3.5927e-4, 3.7486e-4, 3.9127e-4, 4.0854e-4, 4.267e-4, 4.4579e-4,
1292 4.6586e-4, 4.8696e-4, 5.0912e-4, 5.324e-4, 5.5685e-4, 5.8253e-4,
1293 6.0949e-4, 6.378e-4, 6.6753e-4, 6.9873e-4, 7.3149e-4, 7.6588e-4,
1294 8.0198e-4, 8.3987e-4, 8.7964e-4, 9.2139e-4, 9.6522e-4, .0010112,
1295 .0010595, .0011102, .0011634, .0012193, .001278, .0013396,
1296 .0014043, .0014722, .0015436, .0016185, .0016972, .0017799,
1297 .0018668, .001958, .0020539, .0021547, .0022606, .0023719,
1298 .002489, .002612, .0027414, .0028775, .0030206, .0031712,
1299 .0033295, .0034962, .0036716, .0038563, .0040506, .0042553,
1300 .0044709, .004698, .0049373, .0051894, .0054552, .0057354,
1301 .006031, .0063427, .0066717, .0070188, .0073854, .0077726,
1302 .0081816, .0086138, .0090709, .0095543, .010066, .010607,
1303 .011181, .011789, .012433, .013116, .013842, .014613, .015432,
1304 .016304, .017233, .018224, .019281, .020394, .021574, .022836,
1305 .024181, .025594, .027088, .028707, .030401, .032245, .034219,
1306 .036262, .038539, .040987, .043578, .04641, .04949, .052726,
1307 .056326, .0602, .064093, .068521, .073278, .077734, .083064,
1308 .088731, .093885, .1003, .1072, .11365, .12187, .13078, .13989,
1309 .15095, .16299, .17634, .19116, .20628, .22419, .24386, .26587,
1310 .28811, .31399, .34321, .36606, .39675, .42742, .44243, .47197,
1311 .49993, .49027, .51147, .52803, .48931, .49729, .5026, .43854,
1312 .441, .44766, .43414, .46151, .50029, .55247, .43855, .32115,
1313 .32607, .3431, .36119, .38029, .41179, .43996, .47144, .51853,
1314 .55362, .59122, .66338, .69877, .74001, .82923, .86907, .90361,
1315 1.0025, 1.031, 1.0559, 1.104, 1.1178, 1.1341, 1.1547, 1.351,
1316 1.4772, 1.4812, 1.4907, 1.512, 1.5442, 1.5853, 1.6358, 1.6963,
1317 1.7674, 1.8474, 1.9353, 2.0335, 2.143, 2.2592, 2.3853, 2.5217,
1318 2.6686, 2.8273, 2.9998, 3.183, 3.3868, 3.6109, 3.8564, 4.1159,
1319 4.4079, 4.7278, 5.0497, 5.3695, 5.758, 6.0834, 6.4976, 6.9312,
1320 7.38, 7.5746, 7.9833, 8.3791, 8.3956, 8.7501, 9.1067, 9.072,
1321 9.4649, 9.9112, 10.402, 10.829, 11.605, 12.54, 12.713, 10.443,
1322 10.825, 11.375, 11.955, 12.623, 13.326, 14.101, 15.041, 15.547,
1323 16.461, 17.439, 18.716, 19.84, 21.036, 22.642, 23.901, 25.244,
1324 27.03, 28.411, 29.871, 31.403, 33.147, 34.744, 36.456, 39.239,
1325 43.605, 45.162, 47.004, 49.093, 51.391, 53.946, 56.673, 59.629,
1326 63.167, 66.576, 70.254, 74.222, 78.477, 83.034, 87.914, 93.18,
1327 98.77, 104.74, 111.15, 117.95, 125.23, 133.01, 141.33, 150.21,
1328 159.71, 169.89, 180.93, 192.54, 204.99, 218.34, 232.65, 248.,
1329 264.47, 282.14, 301.13, 321.53, 343.48, 367.08, 392.5, 419.88,
1330 449.4, 481.26, 515.64, 552.79, 592.99, 636.48, 683.61, 734.65,
1331 789.99, 850.02, 915.14, 985.81, 1062.5, 1147.1, 1237.8, 1336.4,
1332 1443.2, 1558.9, 1684.2, 1819.2, 1965.2, 2122.6, 2291.7, 2470.8,
1333 2665.7, 2874.9, 3099.4, 3337.9, 3541., 3813.3, 4111.9, 4439.3,
1334 4798.9, 5196., 5639.2, 6087.5, 6657.7, 7306.7, 8040.7, 8845.5,
1335 9702.2, 10670., 11739., 12842., 14141., 15498., 17068., 18729.,
1336 20557., 22559., 25248., 27664., 30207., 32915., 35611., 38081.,
1337 40715., 43191., 41651., 42750., 43785., 44353., 44366., 44189.,
1338 43618., 42862., 41878., 35133., 35215., 36383., 39420., 44055.,
1339 44155., 45850., 46853., 39197., 38274., 29942., 28553., 21792.,
1340 21228., 17106., 14955., 18181., 19557., 21427., 23728., 26301.,
1341 28584., 30775., 32536., 33867., 40089., 39204., 37329., 34452.,
1342 31373., 33921., 34800., 36043., 44415., 45162., 52181., 50895.,
1343 54140., 50840., 50468., 48302., 44915., 40910., 36754., 32755.,
1344 29093., 25860., 22962., 20448., 18247., 16326., 14645., 13165.,
1345 11861., 10708., 9686.9, 8779.7, 7971.9, 7250.8, 6605.7, 6027.2,
1346 5507.3, 5039.1, 4616.6, 4234.8, 3889., 3575.4, 3290.5, 3031.3,
1347 2795.2, 2579.9, 2383.1, 2203.3, 2038.6, 1887.6, 1749.1, 1621.9,
1348 1505., 1397.4, 1298.3, 1207., 1122.8, 1045., 973.1, 906.64,
1349 845.16, 788.22, 735.48, 686.57, 641.21, 599.1, 559.99, 523.64,
1350 489.85, 458.42, 429.16, 401.92, 376.54, 352.88, 330.82, 310.24,
1351 291.03, 273.09, 256.34, 240.69, 226.05, 212.37, 199.57, 187.59,
1352 176.37, 165.87, 156.03, 146.82, 138.17, 130.07, 122.47, 115.34,
1353 108.65, 102.37, 96.473, 90.934, 85.73, 80.84, 76.243, 71.922,
1354 67.858, 64.034, 60.438, 57.052, 53.866, 50.866, 48.04, 45.379,
1355 42.872, 40.51, 38.285, 36.188, 34.211, 32.347, 30.588, 28.929,
1356 27.362, 25.884, 24.489, 23.171, 21.929, 20.755, 19.646, 18.599,
1357 17.61, 16.677, 15.795, 14.961, 14.174, 13.43, 12.725, 12.06,
1358 11.431, 10.834, 10.27, 9.7361, 9.2302, 8.7518, 8.2997, 7.8724,
1359 7.4674, 7.0848, 6.7226, 6.3794, 6.054, 5.745, 5.4525, 5.1752,
1360 4.9121, 4.6625, 4.4259, 4.2015, 3.9888, 3.7872, 3.5961, 3.4149,
1361 3.2431, 3.0802, 2.9257, 2.7792, 2.6402, 2.5084, 2.3834, 2.2648,
1362 2.1522, 2.0455, 1.9441, 1.848, 1.7567, 1.6701, 1.5878, 1.5097,
1363 1.4356, 1.3651, 1.2981, 1.2345, 1.174, 1.1167, 1.062, 1.0101,
1364 .96087, .91414, .86986, .82781, .78777, .74971, .71339, .67882,
1365 .64604, .61473, .58507, .55676, .52987, .5044, .48014, .45715,
1366 .43527, .41453, .3948, .37609, .35831, .34142, .32524, .30995,
1367 .29536, .28142, .26807, .25527, .24311, .23166, .22077, .21053,
1368 .20081, .19143, .18261, .17407, .16603, .15833, .15089, .14385,
1369 .13707, .13065, .12449, .11865, .11306, .10774, .10266, .097818,
1370 .093203, .088815, .084641, .080671, .076892, .073296, .069873,
1371 .066613, .06351, .060555, .05774, .055058, .052504, .050071,
1372 .047752, .045543, .043438, .041432, .039521, .037699, .035962,
1373 .034307, .032729, .031225, .029791, .028423, .02712, .025877,
1374 .024692, .023563, .022485, .021458, .020478, .019543, .018652,
1375 .017802, .016992, .016219, .015481, .014778, .014107, .013467,
1376 .012856, .012274, .011718, .011188, .010682, .0102, .0097393,
1377 .0093001, .008881, .0084812, .0080997, .0077358, .0073885,
1378 .0070571, .0067409, .0064393, .0061514, .0058768, .0056147,
1379 .0053647, .0051262, .0048987, .0046816, .0044745, .0042769,
1380 .0040884, .0039088, .0037373, .0035739, .003418, .0032693,
1381 .0031277, .0029926, .0028639, .0027413, .0026245, .0025133,
1382 .0024074, .0023066, .0022108, .0021196, .002033, .0019507,
1383 .0018726, .0017985, .0017282, .0016617, .0015988, .0015394,
1384 .0014834, .0014306, .0013811, .0013346, .0012911, .0012506,
1385 .0012131, .0011784, .0011465, .0011175, .0010912, .0010678,
1386 .0010472, .0010295, .0010147, .001003, 9.9428e-4, 9.8883e-4,
1387 9.8673e-4, 9.8821e-4, 9.9343e-4, .0010027, .0010164, .0010348,
1388 .0010586, .0010882, .0011245, .0011685, .0012145, .0012666,
1389 .0013095, .0013688, .0014048, .0014663, .0015309, .0015499,
1390 .0016144, .0016312, .001705, .0017892, .0018499, .0019715,
1391 .0021102, .0022442, .0024284, .0025893, .0027703, .0029445,
1392 .0031193, .003346, .0034552, .0036906, .0037584, .0040084,
1393 .0041934, .0044587, .0047093, .0049759, .0053421, .0055134,
1394 .0059048, .0058663, .0061036, .0063259, .0059657, .0060653,
1395 .0060972, .0055539, .0055653, .0055772, .005331, .0054953,
1396 .0055919, .0058684, .006183, .0066675, .0069808, .0075142,
1397 .0078536, .0084282, .0089454, .0094625, .0093703, .0095857,
1398 .0099283, .010063, .010521, .0097778, .0098175, .010379, .010447,
1399 .0105, .010617, .010706, .01078, .011177, .011212, .011304,
1400 .011446, .011603, .011816, .012165, .012545, .013069, .013539,
1401 .01411, .014776, .016103, .017016, .017994, .018978, .01998,
1402 .021799, .022745, .023681, .024627, .025562, .026992, .027958,
1403 .029013, .030154, .031402, .03228, .033651, .035272, .037088,
1404 .039021, .041213, .043597, .045977, .04877, .051809, .054943,
1405 .058064, .061528, .06537, .069309, .071928, .075752, .079589,
1406 .083352, .084096, .087497, .090817, .091198, .094966, .099045,
1407 .10429, .10867, .11518, .12269, .13126, .14087, .15161, .16388,
1408 .16423, .1759, .18721, .19994, .21275, .22513, .23041, .24231,
1409 .25299, .25396, .26396, .27696, .27929, .2908, .30595, .31433,
1410 .3282, .3429, .35944, .37467, .39277, .41245, .43326, .45649,
1411 .48152, .51897, .54686, .57877, .61263, .64962, .68983, .73945,
1412 .78619, .83537, .89622, .95002, 1.0067, 1.0742, 1.1355, 1.2007,
1413 1.2738, 1.347, 1.4254, 1.5094, 1.6009, 1.6976, 1.8019, 1.9148,
1414 2.0357, 2.166, 2.3066, 2.4579, 2.6208, 2.7966, 2.986, 3.188,
1415 3.4081, 3.6456, 3.9, 4.1747, 4.4712, 4.7931, 5.1359, 5.5097,
1416 5.9117, 6.3435, 6.8003, 7.3001, 7.8385, 8.3945, 9.011, 9.6869,
1417 10.392, 11.18, 12.036, 12.938, 13.944, 14.881, 16.029, 17.255,
1418 18.574, 19.945, 21.38, 22.9, 24.477, 26.128, 27.87, 29.037,
1419 30.988, 33.145, 35.506, 37.76, 40.885, 44.487, 48.505, 52.911,
1420 57.56, 61.964, 67.217, 72.26, 78.343, 85.08, 91.867, 99.435,
1421 107.68, 116.97, 127.12, 138.32, 150.26, 163.04, 174.81, 189.26,
1422 205.61, 224.68, 240.98, 261.88, 285.1, 307.58, 334.35, 363.53,
1423 394.68, 427.85, 458.85, 489.25, 472.87, 486.93, 496.27, 501.52,
1424 501.57, 497.14, 488.09, 476.32, 393.76, 388.51, 393.42, 414.45,
1425 455.12, 514.62, 520.38, 547.42, 562.6, 487.47, 480.83, 391.06,
1426 376.92, 303.7, 295.91, 256.03, 236.73, 280.38, 310.71, 335.53,
1427 367.88, 401.94, 435.52, 469.13, 497.94, 588.82, 597.94, 597.2,
1428 588.28, 571.2, 555.75, 603.56, 638.15, 680.75, 801.72, 848.01,
1429 962.15, 990.06, 1068.1, 1076.2, 1115.3, 1134.2, 1136.6, 1119.1,
1430 1108.9, 1090.6, 1068.7, 1041.9, 1005.4, 967.98, 927.08, 780.1,
1431 751.41, 733.12, 742.65, 785.56, 855.16, 852.45, 878.1, 784.59,
1432 777.81, 765.13, 622.93, 498.09, 474.89, 386.9, 378.48, 336.17,
1433 322.04, 329.57, 350.5, 383.38, 420.02, 462.39, 499.71, 531.98,
1434 654.99, 653.43, 639.99, 605.16, 554.16, 504.42, 540.64, 552.33,
1435 679.46, 699.51, 713.91, 832.17, 919.91, 884.96, 907.57, 846.56,
1436 818.56, 768.93, 706.71, 642.17, 575.95, 515.38, 459.07, 409.02,
1437 364.61, 325.46, 291.1, 260.89, 234.39, 211.01, 190.38, 172.11,
1438 155.91, 141.49, 128.63, 117.13, 106.84, 97.584, 89.262, 81.756,
1439 74.975, 68.842, 63.28, 58.232, 53.641, 49.46, 45.649, 42.168,
1440 38.991, 36.078, 33.409, 30.96, 28.71, 26.642, 24.737, 22.985,
1441 21.37, 19.882, 18.512, 17.242, 16.073, 14.987, 13.984, 13.05,
1442 12.186, 11.384, 10.637, 9.9436, 9.2988, 8.6991, 8.141, 7.6215,
1443 7.1378, 6.6872, 6.2671, 5.8754, 5.51, 5.1691, 4.851, 4.5539,
1444 4.2764, 4.0169, 3.7742, 3.5472, 3.3348, 3.1359, 2.9495, 2.7749,
1445 2.6113, 2.4578, 2.3139, 2.1789, 2.0523, 1.9334, 1.8219, 1.7171,
1446 1.6188, 1.5263, 1.4395, 1.3579, 1.2812, 1.209, 1.1411, 1.0773,
1447 1.0171, .96048, .90713, .85684, .80959, .76495, .72282, .68309,
1448 .64563, .61035, .57707, .54573, .51622, .48834, .46199, .43709,
1449 .41359, .39129, .37034, .35064, .33198, .31442, .29784, .28218,
1450 .26732, .25337, .24017, .22774, .21601, .20479, .19426
1453 static const double co2260[2001] =
1454 { 5.7971e-5, 6.0733e-5, 6.3628e-5, 6.6662e-5,
1455 6.9843e-5, 7.3176e-5, 7.6671e-5, 8.0334e-5, 8.4175e-5, 8.8201e-5,
1456 9.2421e-5, 9.6846e-5, 1.0149e-4, 1.0635e-4, 1.1145e-4, 1.1679e-4,
1457 1.224e-4, 1.2828e-4, 1.3444e-4, 1.409e-4, 1.4768e-4, 1.5479e-4,
1458 1.6224e-4, 1.7006e-4, 1.7826e-4, 1.8685e-4, 1.9587e-4, 2.0532e-4,
1459 2.1524e-4, 2.2565e-4, 2.3656e-4, 2.48e-4, 2.6001e-4, 2.7261e-4,
1460 2.8582e-4, 2.9968e-4, 3.1422e-4, 3.2948e-4, 3.4548e-4, 3.6228e-4,
1461 3.799e-4, 3.9838e-4, 4.1778e-4, 4.3814e-4, 4.595e-4, 4.8191e-4,
1462 5.0543e-4, 5.3012e-4, 5.5603e-4, 5.8321e-4, 6.1175e-4, 6.417e-4,
1463 6.7314e-4, 7.0614e-4, 7.4078e-4, 7.7714e-4, 8.1531e-4, 8.5538e-4,
1464 8.9745e-4, 9.4162e-4, 9.8798e-4, .0010367, .0010878, .0011415,
1465 .0011978, .001257, .0013191, .0013844, .001453, .0015249,
1466 .0016006, .00168, .0017634, .001851, .001943, .0020397, .0021412,
1467 .0022479, .00236, .0024778, .0026015, .0027316, .0028682,
1468 .0030117, .0031626, .0033211, .0034877, .0036628, .0038469,
1469 .0040403, .0042436, .0044574, .004682, .0049182, .0051665,
1470 .0054276, .0057021, .0059907, .0062942, .0066133, .0069489,
1471 .0073018, .0076729, .0080632, .0084738, .0089056, .0093599,
1472 .0098377, .01034, .010869, .011426, .012011, .012627, .013276,
1473 .013958, .014676, .015431, .016226, .017063, .017944, .018872,
1474 .019848, .020876, .021958, .023098, .024298, .025561, .026892,
1475 .028293, .029769, .031323, .032961, .034686, .036503, .038418,
1476 .040435, .042561, .044801, .047161, .049649, .052271, .055035,
1477 .057948, .061019, .064256, .06767, .07127, .075066, .079069,
1478 .083291, .087744, .092441, .097396, .10262, .10814, .11396,
1479 .1201, .12658, .13342, .14064, .14826, .1563, .1648, .17376,
1480 .18323, .19324, .2038, .21496, .22674, .23919, .25234, .26624,
1481 .28093, .29646, .31287, .33021, .34855, .36794, .38844, .41012,
1482 .43305, .45731, .48297, .51011, .53884, .56924, .60141, .63547,
1483 .67152, .70969, .75012, .79292, .83826, .8863, .93718, .99111,
1484 1.0482, 1.1088, 1.173, 1.2411, 1.3133, 1.3898, 1.471, 1.5571,
1485 1.6485, 1.7455, 1.8485, 1.9577, 2.0737, 2.197, 2.3278, 2.4668,
1486 2.6145, 2.7715, 2.9383, 3.1156, 3.3042, 3.5047, 3.7181, 3.9451,
1487 4.1866, 4.4437, 4.7174, 5.0089, 5.3192, 5.65, 6.0025, 6.3782,
1488 6.7787, 7.206, 7.6617, 8.1479, 8.6669, 9.221, 9.8128, 10.445,
1489 11.12, 11.843, 12.615, 13.441, 14.325, 15.271, 16.283, 17.367,
1490 18.529, 19.776, 21.111, 22.544, 24.082, 25.731, 27.504, 29.409,
1491 31.452, 33.654, 36.024, 38.573, 41.323, 44.29, 47.492, 50.951,
1492 54.608, 58.588, 62.929, 67.629, 72.712, 78.226, 84.207, 90.699,
1493 97.749, 105.42, 113.77, 122.86, 132.78, 143.61, 155.44, 168.33,
1494 182.48, 198.01, 214.87, 233.39, 253.86, 276.34, 300.3, 327.28,
1495 356.89, 389.48, 422.29, 458.99, 501.39, 548.13, 595.62, 652.74,
1496 716.54, 784.57, 866.78, 960.59, 1062.8, 1072.5, 1189.5, 1319.4,
1497 1467.6, 1630.2, 1813.7, 2016.9, 2253., 2515.3, 2773.5, 3092.8,
1498 3444.4, 3720.4, 4104.3, 4527.5, 4645.9, 5021.7, 5462.2, 5597.,
1499 6110.6, 6732.5, 7513.8, 8270.6, 9640.6, 11487., 2796.1, 2680.1,
1500 2441.6, 2404.2, 2334.8, 2215.2, 1642.5, 1477.9, 1328.1, 1223.5,
1501 843.34, 766.96, 831.65, 834.84, 774.85, 1156.3, 1275.6, 1366.1,
1502 1795.6, 1885., 1936.5, 1953.4, 2154.4, 2002.7, 1789.8, 10381.,
1503 9040., 8216.5, 7384.7, 6721.9, 6187.7, 6143.8, 5703.9, 5276.6,
1504 4873.1, 4736., 4325.3, 3927., 3554.1, 3286.1, 2950.1, 2642.4,
1505 2368.7, 2138.9, 1914., 1719.6, 1543.9, 1388.6, 1252.1, 1132.2,
1506 1024.1, 1025.4, 920.58, 829.59, 750.54, 685.01, 624.25, 570.14,
1507 525.81, 481.85, 441.95, 408.71, 377.23, 345.86, 318.51, 292.26,
1508 268.34, 247.04, 227.14, 209.02, 192.69, 177.59, 163.78, 151.26,
1509 139.73, 129.19, 119.53, 110.7, 102.57, 95.109, 88.264, 81.948,
1510 76.13, 70.768, 65.827, 61.251, 57.022, 53.495, 49.824, 46.443,
1511 43.307, 40.405, 37.716, 35.241, 32.923, 30.77, 28.78, 26.915,
1512 25.177, 23.56, 22.059, 20.654, 19.345, 18.126, 16.988, 15.93,
1513 14.939, 14.014, 13.149, 12.343, 11.589, 10.884, 10.225, 9.6093,
1514 9.0327, 8.4934, 7.9889, 7.5166, 7.0744, 6.6604, 6.2727, 5.9098,
1515 5.5701, 5.2529, 4.955, 4.676, 4.4148, 4.171, 3.9426, 3.7332,
1516 3.5347, 3.3493, 3.1677, 3.0025, 2.8466, 2.6994, 2.5601, 2.4277,
1517 2.3016, 2.1814, 2.0664, 1.9564, 1.8279, 1.7311, 1.6427, 1.5645,
1518 1.4982, 1.443, 1.374, 1.3146, 1.2562, 1.17, 1.1105, 1.0272,
1519 .96863, .89718, .83654, .80226, .75908, .72431, .69573, .67174,
1520 .65126, .63315, .61693, .60182, .58715, .59554, .57649, .55526,
1521 .53177, .50622, .48176, .4813, .47642, .47492, .50273, .50293,
1522 .52687, .52239, .53419, .53814, .52626, .52211, .51492, .50622,
1523 .49746, .48841, .4792, .43534, .41999, .40349, .38586, .36799,
1524 .35108, .31089, .30803, .3171, .33599, .35041, .36149, .32924,
1525 .32462, .27309, .25961, .20922, .19504, .15683, .13098, .11588,
1526 .11478, .11204, .11363, .12135, .16423, .17785, .19094, .20236,
1527 .21084, .2154, .24108, .22848, .20871, .18797, .17963, .17834,
1528 .21552, .22284, .26945, .27052, .30108, .28977, .29772, .29224,
1529 .27658, .24956, .22777, .20654, .18392, .16338, .1452, .12916,
1530 .1152, .10304, .092437, .083163, .075031, .067878, .061564,
1531 .055976, .051018, .046609, .042679, .03917, .036032, .033223,
1532 .030706, .02845, .026428, .024617, .022998, .021554, .02027,
1533 .019136, .018141, .017278, .016541, .015926, .015432, .015058,
1534 .014807, .014666, .014635, .014728, .014947, .01527, .015728,
1535 .016345, .017026, .017798, .018839, .019752, .020636, .021886,
1536 .022695, .02327, .023478, .024292, .023544, .022222, .021932,
1537 .020052, .018143, .017722, .017031, .017782, .01938, .020734,
1538 .020476, .019255, .017477, .016878, .014617, .012489, .011765,
1539 .0099077, .0086446, .0079446, .0078644, .0079763, .008671,
1540 .01001, .0108, .012933, .015349, .016341, .018484, .020254,
1541 .020254, .020478, .019591, .018595, .018385, .019913, .022254,
1542 .024847, .025809, .028053, .029924, .030212, .031367, .03222,
1543 .032739, .032537, .03286, .033344, .033507, .033499, .033339,
1544 .032809, .033041, .031723, .029837, .027511, .026603, .024032,
1545 .021914, .020948, .021701, .023425, .024259, .024987, .023818,
1546 .021768, .019223, .018144, .015282, .012604, .01163, .0097907,
1547 .008336, .0082473, .0079582, .0088077, .009779, .010129, .012145,
1548 .014378, .016761, .01726, .018997, .019998, .019809, .01819,
1549 .016358, .016099, .01617, .017939, .020223, .022521, .02277,
1550 .024279, .025247, .024222, .023989, .023224, .021493, .020362,
1551 .018596, .017309, .015975, .014466, .013171, .011921, .01078,
1552 .0097229, .0087612, .0078729, .0070682, .0063494, .0057156,
1553 .0051459, .0046273, .0041712, .0037686, .0034119, .003095,
1554 .0028126, .0025603, .0023342, .0021314, .0019489, .0017845,
1555 .001636, .0015017, .00138, .0012697, .0011694, .0010782,
1556 9.9507e-4, 9.1931e-4, 8.5013e-4, 7.869e-4, 7.2907e-4, 6.7611e-4,
1557 6.2758e-4, 5.8308e-4, 5.4223e-4, 5.0473e-4, 4.7027e-4, 4.3859e-4,
1558 4.0946e-4, 3.8265e-4, 3.5798e-4, 3.3526e-4, 3.1436e-4, 2.9511e-4,
1559 2.7739e-4, 2.6109e-4, 2.4609e-4, 2.3229e-4, 2.1961e-4, 2.0797e-4,
1560 1.9729e-4, 1.875e-4, 1.7855e-4, 1.7038e-4, 1.6294e-4, 1.5619e-4,
1561 1.5007e-4, 1.4456e-4, 1.3961e-4, 1.3521e-4, 1.3131e-4, 1.2789e-4,
1562 1.2494e-4, 1.2242e-4, 1.2032e-4, 1.1863e-4, 1.1733e-4, 1.1641e-4,
1563 1.1585e-4, 1.1565e-4, 1.158e-4, 1.1629e-4, 1.1712e-4, 1.1827e-4,
1564 1.1976e-4, 1.2158e-4, 1.2373e-4, 1.262e-4, 1.2901e-4, 1.3214e-4,
1565 1.3562e-4, 1.3944e-4, 1.4361e-4, 1.4814e-4, 1.5303e-4, 1.5829e-4,
1566 1.6394e-4, 1.6999e-4, 1.7644e-4, 1.8332e-4, 1.9063e-4, 1.984e-4,
1567 2.0663e-4, 2.1536e-4, 2.246e-4, 2.3436e-4, 2.4468e-4, 2.5558e-4,
1568 2.6708e-4, 2.7921e-4, 2.92e-4, 3.0548e-4, 3.1968e-4, 3.3464e-4,
1569 3.5039e-4, 3.6698e-4, 3.8443e-4, 4.0281e-4, 4.2214e-4, 4.4248e-4,
1570 4.6389e-4, 4.864e-4, 5.1009e-4, 5.3501e-4, 5.6123e-4, 5.888e-4,
1571 6.1781e-4, 6.4833e-4, 6.8043e-4, 7.142e-4, 7.4973e-4, 7.8711e-4,
1572 8.2644e-4, 8.6783e-4, 9.1137e-4, 9.5721e-4, .0010054, .0010562,
1573 .0011096, .0011659, .0012251, .0012875, .0013532, .0014224,
1574 .0014953, .001572, .0016529, .0017381, .0018279, .0019226,
1575 .0020224, .0021277, .0022386, .0023557, .0024792, .0026095,
1576 .002747, .0028921, .0030453, .0032071, .003378, .0035586,
1577 .0037494, .003951, .0041642, .0043897, .0046282, .0048805,
1578 .0051476, .0054304, .00573, .0060473, .0063837, .0067404,
1579 .0071188, .0075203, .0079466, .0083994, .0088806, .0093922,
1580 .0099366, .010516, .011134, .011792, .012494, .013244, .014046,
1581 .014898, .015808, .016781, .017822, .018929, .020108, .02138,
1582 .022729, .02419, .02576, .027412, .029233, .031198, .033301,
1583 .035594, .038092, .040767, .04372, .046918, .050246, .053974,
1584 .058009, .061976, .066586, .071537, .076209, .081856, .087998,
1585 .093821, .10113, .10913, .11731, .12724, .13821, .15025, .1639,
1586 .17807, .19472, .21356, .23496, .25758, .28387, .31389, .34104,
1587 .37469, .40989, .43309, .46845, .5042, .5023, .52981, .55275,
1588 .51075, .51976, .52457, .44779, .44721, .4503, .4243, .45244,
1589 .49491, .55399, .39021, .24802, .2501, .2618, .27475, .28879,
1590 .31317, .33643, .36257, .4018, .43275, .46525, .53333, .56599,
1591 .60557, .70142, .74194, .77736, .88567, .91182, .93294, .98407,
1592 .98772, .99176, .9995, 1.2405, 1.3602, 1.338, 1.3255, 1.3267,
1593 1.3404, 1.3634, 1.3967, 1.4407, 1.4961, 1.5603, 1.6328, 1.7153,
1594 1.8094, 1.9091, 2.018, 2.1367, 2.264, 2.4035, 2.5562, 2.7179,
1595 2.9017, 3.1052, 3.3304, 3.5731, 3.8488, 4.1553, 4.4769, 4.7818,
1596 5.1711, 5.5204, 5.9516, 6.4097, 6.8899, 7.1118, 7.5469, 7.9735,
1597 7.9511, 8.3014, 8.6418, 8.4757, 8.8256, 9.2294, 9.6923, 10.033,
1598 10.842, 11.851, 11.78, 8.8435, 9.1381, 9.5956, 10.076, 10.629,
1599 11.22, 11.883, 12.69, 13.163, 13.974, 14.846, 16.027, 17.053,
1600 18.148, 19.715, 20.907, 22.163, 23.956, 25.235, 26.566, 27.94,
1601 29.576, 30.956, 32.432, 35.337, 39.911, 41.128, 42.625, 44.386,
1602 46.369, 48.619, 51.031, 53.674, 56.825, 59.921, 63.286, 66.929,
1603 70.859, 75.081, 79.618, 84.513, 89.739, 95.335, 101.35, 107.76,
1604 114.63, 121.98, 129.87, 138.3, 147.34, 157.04, 167.56, 178.67,
1605 190.61, 203.43, 217.19, 231.99, 247.88, 264.98, 283.37, 303.17,
1606 324.49, 347.47, 372.25, 398.98, 427.85, 459.06, 492.8, 529.31,
1607 568.89, 611.79, 658.35, 708.91, 763.87, 823.65, 888.72, 959.58,
1608 1036.8, 1121.8, 1213.9, 1314.3, 1423.8, 1543., 1672.8, 1813.4,
1609 1966.1, 2131.4, 2309.5, 2499.3, 2705., 2925.7, 3161.6, 3411.3,
1610 3611.5, 3889.2, 4191.1, 4519.3, 4877.9, 5272.9, 5712.9, 6142.7,
1611 6719.6, 7385., 8145., 8977.7, 9831.9, 10827., 11934., 13063.,
1612 14434., 15878., 17591., 19435., 21510., 23835., 26835., 29740.,
1613 32878., 36305., 39830., 43273., 46931., 50499., 49586., 51598.,
1614 53429., 54619., 55081., 55102., 54485., 53487., 52042., 42689.,
1615 42607., 44020., 47994., 54169., 53916., 55808., 56642., 46049.,
1616 44243., 32929., 30658., 21963., 20835., 15962., 13679., 17652.,
1617 19680., 22388., 25625., 29184., 32520., 35720., 38414., 40523.,
1618 49228., 48173., 45678., 41768., 37600., 41313., 42654., 44465.,
1619 55736., 56630., 65409., 63308., 66572., 61845., 60379., 56777.,
1620 51920., 46601., 41367., 36529., 32219., 28470., 25192., 22362.,
1621 19907., 17772., 15907., 14273., 12835., 11567., 10445., 9450.2,
1622 8565.1, 7776., 7070.8, 6439.2, 5872.3, 5362.4, 4903., 4488.3,
1623 4113.4, 3773.8, 3465.8, 3186.1, 2931.7, 2700.1, 2488.8, 2296.,
1624 2119.8, 1958.6, 1810.9, 1675.6, 1551.4, 1437.3, 1332.4, 1236.,
1625 1147.2, 1065.3, 989.86, 920.22, 855.91, 796.48, 741.53, 690.69,
1626 643.62, 600.02, 559.6, 522.13, 487.35, 455.06, 425.08, 397.21,
1627 371.3, 347.2, 324.78, 303.9, 284.46, 266.34, 249.45, 233.7,
1628 219.01, 205.3, 192.5, 180.55, 169.38, 158.95, 149.2, 140.07,
1629 131.54, 123.56, 116.09, 109.09, 102.54, 96.405, 90.655, 85.266,
1630 80.213, 75.475, 71.031, 66.861, 62.948, 59.275, 55.827, 52.587,
1631 49.544, 46.686, 43.998, 41.473, 39.099, 36.867, 34.768, 32.795,
1632 30.939, 29.192, 27.546, 25.998, 24.539, 23.164, 21.869, 20.65,
1633 19.501, 18.419, 17.399, 16.438, 15.532, 14.678, 13.874, 13.115,
1634 12.4, 11.726, 11.088, 10.488, 9.921, 9.3846, 8.8784, 8.3996,
1635 7.9469, 7.5197, 7.1174, 6.738, 6.379, 6.0409, 5.7213, 5.419,
1636 5.1327, 4.8611, 4.6046, 4.3617, 4.1316, 3.9138, 3.7077, 3.5125,
1637 3.3281, 3.1536, 2.9885, 2.8323, 2.6846, 2.5447, 2.4124, 2.2871,
1638 2.1686, 2.0564, 1.9501, 1.8495, 1.7543, 1.6641, 1.5787, 1.4978,
1639 1.4212, 1.3486, 1.2799, 1.2147, 1.1529, 1.0943, 1.0388, .98602,
1640 .93596, .8886, .84352, .80078, .76029, .722, .68585, .65161,
1641 .61901, .58808, .55854, .53044, .5039, .47853, .45459, .43173,
1642 .41008, .38965, .37021, .35186, .33444, .31797, .30234, .28758,
1643 .2736, .26036, .24764, .2357, .22431, .21342, .20295, .19288,
1644 .18334, .17444, .166, .15815, .15072, .14348, .13674, .13015,
1645 .12399, .11807, .11231, .10689, .10164, .096696, .091955,
1646 .087476, .083183, .079113, .075229, .071536, .068026, .064698,
1647 .06154, .058544, .055699, .052997, .050431, .047993, .045676,
1648 .043475, .041382, .039392, .037501, .035702, .033991, .032364,
1649 .030817, .029345, .027945, .026613, .025345, .024139, .022991,
1650 .021899, .02086, .019871, .018929, .018033, .01718, .016368,
1651 .015595, .014859, .014158, .013491, .012856, .012251, .011675,
1652 .011126, .010604, .010107, .0096331, .009182, .0087523, .0083431,
1653 .0079533, .0075821, .0072284, .0068915, .0065706, .0062649,
1654 .0059737, .0056963, .005432, .0051802, .0049404, .0047118,
1655 .0044941, .0042867, .0040891, .0039009, .0037216, .0035507,
1656 .003388, .0032329, .0030852, .0029445, .0028105, .0026829,
1657 .0025613, .0024455, .0023353, .0022303, .0021304, .0020353,
1658 .0019448, .0018587, .0017767, .0016988, .0016247, .0015543,
1659 .0014874, .0014238, .0013635, .0013062, .0012519, .0012005,
1660 .0011517, .0011057, .0010621, .001021, 9.8233e-4, 9.4589e-4,
1661 9.1167e-4, 8.7961e-4, 8.4964e-4, 8.2173e-4, 7.9582e-4, 7.7189e-4,
1662 7.499e-4, 7.2983e-4, 7.1167e-4, 6.9542e-4, 6.8108e-4, 6.6866e-4,
1663 6.5819e-4, 6.4971e-4, 6.4328e-4, 6.3895e-4, 6.3681e-4, 6.3697e-4,
1664 6.3956e-4, 6.4472e-4, 6.5266e-4, 6.6359e-4, 6.778e-4, 6.9563e-4,
1665 7.1749e-4, 7.4392e-4, 7.7556e-4, 8.1028e-4, 8.4994e-4, 8.8709e-4,
1666 9.3413e-4, 9.6953e-4, .0010202, .0010738, .0010976, .0011507,
1667 .0011686, .0012264, .001291, .0013346, .0014246, .0015293,
1668 .0016359, .0017824, .0019255, .0020854, .002247, .0024148,
1669 .0026199, .0027523, .0029704, .0030702, .0033047, .0035013,
1670 .0037576, .0040275, .0043089, .0046927, .0049307, .0053486,
1671 .0053809, .0056699, .0059325, .0055488, .005634, .0056392,
1672 .004946, .0048855, .0048208, .0044386, .0045498, .0046377,
1673 .0048939, .0052396, .0057324, .0060859, .0066906, .0071148,
1674 .0077224, .0082687, .008769, .0084471, .008572, .0087729,
1675 .008775, .0090742, .0080704, .0080288, .0085747, .0086087,
1676 .0086408, .0088752, .0089381, .0089757, .0093532, .0092824,
1677 .0092566, .0092645, .0092735, .009342, .0095806, .0097991,
1678 .010213, .010611, .011129, .011756, .013237, .01412, .015034,
1679 .015936, .01682, .018597, .019315, .019995, .020658, .021289,
1680 .022363, .022996, .023716, .024512, .025434, .026067, .027118,
1681 .028396, .029865, .031442, .033253, .03525, .037296, .039701,
1682 .042356, .045154, .048059, .051294, .054893, .058636, .061407,
1683 .065172, .068974, .072676, .073379, .076547, .079556, .079134,
1684 .082308, .085739, .090192, .09359, .099599, .10669, .11496,
1685 .1244, .13512, .14752, .14494, .15647, .1668, .17863, .19029,
1686 .20124, .20254, .21179, .21982, .21625, .22364, .23405, .23382,
1687 .2434, .25708, .26406, .27621, .28909, .30395, .31717, .33271,
1688 .3496, .36765, .38774, .40949, .446, .46985, .49846, .5287, .562,
1689 .59841, .64598, .68834, .7327, .78978, .8373, .88708, .94744,
1690 1.0006, 1.0574, 1.1215, 1.1856, 1.2546, 1.3292, 1.4107, 1.4974,
1691 1.5913, 1.6931, 1.8028, 1.9212, 2.0492, 2.1874, 2.3365, 2.4978,
1692 2.6718, 2.8588, 3.062, 3.2818, 3.5188, 3.7752, 4.0527, 4.3542,
1693 4.6782, 5.0312, 5.4123, 5.8246, 6.2639, 6.7435, 7.2636, 7.8064,
1694 8.4091, 9.0696, 9.7677, 10.548, 11.4, 12.309, 13.324, 14.284,
1695 15.445, 16.687, 18.019, 19.403, 20.847, 22.366, 23.925, 25.537,
1696 27.213, 28.069, 29.864, 31.829, 33.988, 35.856, 38.829, 42.321,
1697 46.319, 50.606, 55.126, 59.126, 64.162, 68.708, 74.615, 81.176,
1698 87.739, 95.494, 103.83, 113.38, 123.99, 135.8, 148.7, 162.58,
1699 176.32, 192.6, 211.47, 232.7, 252.64, 277.41, 305.38, 333.44,
1700 366.42, 402.66, 442.14, 484.53, 526.42, 568.15, 558.78, 582.6,
1701 600.98, 613.94, 619.44, 618.24, 609.84, 595.96, 484.86, 475.59,
1702 478.49, 501.56, 552.19, 628.44, 630.39, 658.92, 671.96, 562.7,
1703 545.88, 423.43, 400.14, 306.59, 294.13, 246.8, 226.51, 278.21,
1704 314.39, 347.22, 389.13, 433.16, 477.48, 521.67, 560.54, 683.6,
1705 696.37, 695.91, 683.1, 658.24, 634.89, 698.85, 742.87, 796.66,
1706 954.49, 1009.5, 1150.5, 1179.1, 1267.9, 1272.4, 1312.7, 1330.4,
1707 1331.6, 1315.8, 1308.3, 1293.3, 1274.6, 1249.5, 1213.2, 1172.1,
1708 1124.4, 930.33, 893.36, 871.27, 883.54, 940.76, 1036., 1025.6,
1709 1053.1, 914.51, 894.15, 865.03, 670.63, 508.41, 475.15, 370.85,
1710 361.06, 319.38, 312.75, 331.87, 367.13, 415., 467.94, 525.49,
1711 578.41, 624.66, 794.82, 796.97, 780.29, 736.49, 670.18, 603.75,
1712 659.67, 679.8, 857.12, 884.05, 900.65, 1046.1, 1141.9, 1083.,
1713 1089.2, 1e3, 947.08, 872.31, 787.91, 704.75, 624.93, 553.68,
1714 489.91, 434.21, 385.64, 343.3, 306.42, 274.18, 245.94, 221.11,
1715 199.23, 179.88, 162.73, 147.48, 133.88, 121.73, 110.86, 101.1,
1716 92.323, 84.417, 77.281, 70.831, 64.991, 59.694, 54.884, 50.509,
1717 46.526, 42.893, 39.58, 36.549, 33.776, 31.236, 28.907, 26.77,
1718 24.805, 23., 21.339, 19.81, 18.404, 17.105, 15.909, 14.801,
1719 13.778, 12.83, 11.954, 11.142, 10.389, 9.691, 9.0434, 8.4423,
1720 7.8842, 7.3657, 6.8838, 6.4357, 6.0189, 5.6308, 5.2696, 4.9332,
1721 4.6198, 4.3277, 4.0553, 3.8012, 3.5639, 3.3424, 3.1355, 2.9422,
1722 2.7614, 2.5924, 2.4343, 2.2864, 2.148, 2.0184, 1.8971, 1.7835,
1723 1.677, 1.5773, 1.4838, 1.3961, 1.3139, 1.2369, 1.1645, 1.0966,
1724 1.0329, .97309, .91686, .86406, .81439, .76767, .72381, .68252,
1725 .64359, .60695, .57247, .54008, .50957, .48092, .45401, .42862,
1726 .40465, .38202, .36072, .34052, .3216, .30386, .28711, .27135,
1727 .25651, .24252, .2293, .21689, .20517, .19416, .18381, .17396,
1731 static const double co2230[2001] =
1732 { 2.743e-5, 2.8815e-5, 3.027e-5, 3.1798e-5,
1733 3.3405e-5, 3.5094e-5, 3.6869e-5, 3.8734e-5, 4.0694e-5, 4.2754e-5,
1734 4.492e-5, 4.7196e-5, 4.9588e-5, 5.2103e-5, 5.4747e-5, 5.7525e-5,
1735 6.0446e-5, 6.3516e-5, 6.6744e-5, 7.0137e-5, 7.3704e-5, 7.7455e-5,
1736 8.1397e-5, 8.5543e-5, 8.9901e-5, 9.4484e-5, 9.9302e-5, 1.0437e-4,
1737 1.097e-4, 1.153e-4, 1.2119e-4, 1.2738e-4, 1.3389e-4, 1.4074e-4,
1738 1.4795e-4, 1.5552e-4, 1.6349e-4, 1.7187e-4, 1.8068e-4, 1.8995e-4,
1739 1.997e-4, 2.0996e-4, 2.2075e-4, 2.321e-4, 2.4403e-4, 2.5659e-4,
1740 2.698e-4, 2.837e-4, 2.9832e-4, 3.137e-4, 3.2988e-4, 3.4691e-4,
1741 3.6483e-4, 3.8368e-4, 4.0351e-4, 4.2439e-4, 4.4635e-4, 4.6947e-4,
1742 4.9379e-4, 5.1939e-4, 5.4633e-4, 5.7468e-4, 6.0452e-4, 6.3593e-4,
1743 6.69e-4, 7.038e-4, 7.4043e-4, 7.79e-4, 8.1959e-4, 8.6233e-4,
1744 9.0732e-4, 9.5469e-4, .0010046, .0010571, .0011124, .0011706,
1745 .0012319, .0012964, .0013644, .001436, .0015114, .0015908,
1746 .0016745, .0017625, .0018553, .0019531, .002056, .0021645,
1747 .0022788, .0023992, .002526, .0026596, .0028004, .0029488,
1748 .0031052, .0032699, .0034436, .0036265, .0038194, .0040227,
1749 .0042369, .0044628, .0047008, .0049518, .0052164, .0054953,
1750 .0057894, .0060995, .0064265, .0067713, .007135, .0075184,
1751 .0079228, .0083494, .0087993, .0092738, .0097745, .010303,
1752 .01086, .011448, .012068, .012722, .013413, .014142, .014911,
1753 .015723, .01658, .017484, .018439, .019447, .020511, .021635,
1754 .022821, .024074, .025397, .026794, .02827, .029829, .031475,
1755 .033215, .035052, .036994, .039045, .041213, .043504, .045926,
1756 .048485, .05119, .05405, .057074, .060271, .063651, .067225,
1757 .071006, .075004, .079233, .083708, .088441, .093449, .098749,
1758 .10436, .11029, .11657, .12322, .13026, .13772, .14561, .15397,
1759 .16282, .1722, .18214, .19266, .20381, .21563, .22816, .24143,
1760 .2555, .27043, .28625, .30303, .32082, .3397, .35972, .38097,
1761 .40352, .42746, .45286, .47983, .50847, .53888, .57119, .6055,
1762 .64196, .6807, .72187, .76564, .81217, .86165, .91427, .97025,
1763 1.0298, 1.0932, 1.1606, 1.2324, 1.3088, 1.3902, 1.477, 1.5693,
1764 1.6678, 1.7727, 1.8845, 2.0038, 2.131, 2.2666, 2.4114, 2.5659,
1765 2.7309, 2.907, 3.0951, 3.2961, 3.5109, 3.7405, 3.986, 4.2485,
1766 4.5293, 4.8299, 5.1516, 5.4961, 5.8651, 6.2605, 6.6842, 7.1385,
1767 7.6256, 8.1481, 8.7089, 9.3109, 9.9573, 10.652, 11.398, 12.2,
1768 13.063, 13.992, 14.99, 16.064, 17.222, 18.469, 19.813, 21.263,
1769 22.828, 24.516, 26.34, 28.31, 30.437, 32.738, 35.226, 37.914,
1770 40.824, 43.974, 47.377, 51.061, 55.011, 59.299, 63.961, 69.013,
1771 74.492, 80.444, 86.919, 93.836, 101.23, 109.25, 117.98, 127.47,
1772 137.81, 149.07, 161.35, 174.75, 189.42, 205.49, 223.02, 242.26,
1773 263.45, 286.75, 311.94, 340.01, 370.86, 404.92, 440.44, 480.27,
1774 525.17, 574.71, 626.22, 686.8, 754.38, 827.07, 913.38, 1011.7,
1775 1121.5, 1161.6, 1289.5, 1432.2, 1595.4, 1777., 1983.3, 2216.1,
1776 2485.7, 2788.3, 3101.5, 3481., 3902.1, 4257.1, 4740., 5272.8,
1777 5457.9, 5946.2, 6505.3, 6668.4, 7302.4, 8061.6, 9015.8, 9908.3,
1778 11613., 13956., 3249.6, 3243., 2901.5, 2841.3, 2729.6, 2558.2,
1779 1797.8, 1583.2, 1386., 1233.5, 787.74, 701.46, 761.66, 767.21,
1780 722.83, 1180.6, 1332.1, 1461.6, 2032.9, 2166., 2255.9, 2294.7,
1781 2587.2, 2396.5, 2122.4, 12553., 10784., 9832.5, 8827.3, 8029.1,
1782 7377.9, 7347.1, 6783.8, 6239.1, 5721.1, 5503., 4975.1, 4477.8,
1783 4021.3, 3676.8, 3275.3, 2914.9, 2597.4, 2328.2, 2075.4, 1857.6,
1784 1663.6, 1493.3, 1343.8, 1213.3, 1095.6, 1066.5, 958.91, 865.15,
1785 783.31, 714.35, 650.77, 593.98, 546.2, 499.9, 457.87, 421.75,
1786 387.61, 355.25, 326.62, 299.7, 275.21, 253.17, 232.83, 214.31,
1787 197.5, 182.08, 167.98, 155.12, 143.32, 132.5, 122.58, 113.48,
1788 105.11, 97.415, 90.182, 83.463, 77.281, 71.587, 66.341, 61.493,
1789 57.014, 53.062, 49.21, 45.663, 42.38, 39.348, 36.547, 33.967,
1790 31.573, 29.357, 27.314, 25.415, 23.658, 22.03, 20.524, 19.125,
1791 17.829, 16.627, 15.511, 14.476, 13.514, 12.618, 11.786, 11.013,
1792 10.294, 9.6246, 9.0018, 8.4218, 7.8816, 7.3783, 6.9092, 6.4719,
1793 6.0641, 5.6838, 5.3289, 4.998, 4.6893, 4.4014, 4.1325, 3.8813,
1794 3.6469, 3.4283, 3.2241, 3.035, 2.8576, 2.6922, 2.5348, 2.3896,
1795 2.2535, 2.1258, 2.0059, 1.8929, 1.7862, 1.6854, 1.5898, 1.4992,
1796 1.4017, 1.3218, 1.2479, 1.1809, 1.1215, 1.0693, 1.0116, .96016,
1797 .9105, .84859, .80105, .74381, .69982, .65127, .60899, .57843,
1798 .54592, .51792, .49336, .47155, .45201, .43426, .41807, .40303,
1799 .38876, .3863, .37098, .35492, .33801, .32032, .30341, .29874,
1800 .29193, .28689, .29584, .29155, .29826, .29195, .29287, .2904,
1801 .28199, .27709, .27162, .26622, .26133, .25676, .25235, .23137,
1802 .22365, .21519, .20597, .19636, .18699, .16485, .16262, .16643,
1803 .17542, .18198, .18631, .16759, .16338, .13505, .1267, .10053,
1804 .092554, .074093, .062159, .055523, .054849, .05401, .05528,
1805 .058982, .07952, .08647, .093244, .099285, .10393, .10661,
1806 .12072, .11417, .10396, .093265, .089137, .088909, .10902,
1807 .11277, .13625, .13565, .14907, .14167, .1428, .13744, .12768,
1808 .11382, .10244, .091686, .08109, .071739, .063616, .056579,
1809 .050504, .045251, .040689, .036715, .033237, .030181, .027488,
1810 .025107, .022998, .021125, .01946, .017979, .016661, .015489,
1811 .014448, .013526, .012712, .011998, .011375, .010839, .010384,
1812 .010007, .0097053, .0094783, .0093257, .0092489, .0092504,
1813 .0093346, .0095077, .0097676, .01012, .01058, .011157, .011844,
1814 .012672, .013665, .014766, .015999, .017509, .018972, .020444,
1815 .022311, .023742, .0249, .025599, .026981, .026462, .025143,
1816 .025066, .022814, .020458, .020026, .019142, .020189, .022371,
1817 .024163, .023728, .02199, .019506, .018591, .015576, .012784,
1818 .011744, .0094777, .0079148, .0070652, .006986, .0071758,
1819 .008086, .0098025, .01087, .013609, .016764, .018137, .021061,
1820 .023498, .023576, .023965, .022828, .021519, .021283, .023364,
1821 .026457, .029782, .030856, .033486, .035515, .035543, .036558,
1822 .037198, .037472, .037045, .037284, .03777, .038085, .038366,
1823 .038526, .038282, .038915, .037697, .035667, .032941, .031959,
1824 .028692, .025918, .024596, .025592, .027873, .028935, .02984,
1825 .028148, .025305, .021912, .020454, .016732, .013357, .01205,
1826 .009731, .0079881, .0077704, .0074387, .0083895, .0096776,
1827 .010326, .01293, .015955, .019247, .020145, .02267, .024231,
1828 .024184, .022131, .019784, .01955, .01971, .022119, .025116,
1829 .027978, .028107, .029808, .030701, .029164, .028551, .027286,
1830 .024946, .023259, .020982, .019221, .017471, .015643, .014074,
1831 .01261, .011301, .010116, .0090582, .0081036, .0072542, .0065034,
1832 .0058436, .0052571, .0047321, .0042697, .0038607, .0034977,
1833 .0031747, .0028864, .0026284, .002397, .002189, .0020017,
1834 .0018326, .0016798, .0015414, .0014159, .0013019, .0011983,
1835 .0011039, .0010177, 9.391e-4, 8.6717e-4, 8.0131e-4, 7.4093e-4,
1836 6.8553e-4, 6.3464e-4, 5.8787e-4, 5.4487e-4, 5.0533e-4, 4.69e-4,
1837 4.3556e-4, 4.0474e-4, 3.7629e-4, 3.5e-4, 3.2569e-4, 3.032e-4,
1838 2.8239e-4, 2.6314e-4, 2.4535e-4, 2.2891e-4, 2.1374e-4, 1.9975e-4,
1839 1.8685e-4, 1.7498e-4, 1.6406e-4, 1.5401e-4, 1.4479e-4, 1.3633e-4,
1840 1.2858e-4, 1.2148e-4, 1.1499e-4, 1.0907e-4, 1.0369e-4, 9.8791e-5,
1841 9.4359e-5, 9.0359e-5, 8.6766e-5, 8.3555e-5, 8.0703e-5, 7.8192e-5,
1842 7.6003e-5, 7.4119e-5, 7.2528e-5, 7.1216e-5, 7.0171e-5, 6.9385e-5,
1843 6.8848e-5, 6.8554e-5, 6.8496e-5, 6.8669e-5, 6.9069e-5, 6.9694e-5,
1844 7.054e-5, 7.1608e-5, 7.2896e-5, 7.4406e-5, 7.6139e-5, 7.8097e-5,
1845 8.0283e-5, 8.2702e-5, 8.5357e-5, 8.8255e-5, 9.1402e-5, 9.4806e-5,
1846 9.8473e-5, 1.0241e-4, 1.0664e-4, 1.1115e-4, 1.1598e-4, 1.2112e-4,
1847 1.2659e-4, 1.3241e-4, 1.3859e-4, 1.4515e-4, 1.521e-4, 1.5947e-4,
1848 1.6728e-4, 1.7555e-4, 1.8429e-4, 1.9355e-4, 2.0334e-4, 2.1369e-4,
1849 2.2463e-4, 2.3619e-4, 2.4841e-4, 2.6132e-4, 2.7497e-4, 2.8938e-4,
1850 3.0462e-4, 3.2071e-4, 3.3771e-4, 3.5567e-4, 3.7465e-4, 3.947e-4,
1851 4.1588e-4, 4.3828e-4, 4.6194e-4, 4.8695e-4, 5.1338e-4, 5.4133e-4,
1852 5.7087e-4, 6.0211e-4, 6.3515e-4, 6.701e-4, 7.0706e-4, 7.4617e-4,
1853 7.8756e-4, 8.3136e-4, 8.7772e-4, 9.2681e-4, 9.788e-4, .0010339,
1854 .0010922, .001154, .0012195, .0012889, .0013626, .0014407,
1855 .0015235, .0016114, .0017048, .0018038, .001909, .0020207,
1856 .0021395, .0022657, .0023998, .0025426, .0026944, .002856,
1857 .0030281, .0032114, .0034068, .003615, .0038371, .004074,
1858 .004327, .0045971, .0048857, .0051942, .0055239, .0058766,
1859 .0062538, .0066573, .0070891, .007551, .0080455, .0085747,
1860 .0091412, .0097481, .010397, .011092, .011837, .012638, .013495,
1861 .014415, .01541, .016475, .017621, .018857, .020175, .02162,
1862 .023185, .024876, .02672, .028732, .030916, .033319, .035939,
1863 .038736, .041847, .04524, .048715, .052678, .056977, .061203,
1864 .066184, .07164, .076952, .083477, .090674, .098049, .10697,
1865 .1169, .1277, .14011, .15323, .1684, .18601, .20626, .22831,
1866 .25417, .28407, .31405, .34957, .38823, .41923, .46026, .50409,
1867 .51227, .54805, .57976, .53818, .55056, .557, .46741, .46403,
1868 .4636, .42265, .45166, .49852, .56663, .34306, .17779, .17697,
1869 .18346, .19129, .20014, .21778, .23604, .25649, .28676, .31238,
1870 .33856, .39998, .4288, .46568, .56654, .60786, .64473, .76466,
1871 .7897, .80778, .86443, .85736, .84798, .84157, 1.1385, 1.2446,
1872 1.1923, 1.1552, 1.1338, 1.1266, 1.1292, 1.1431, 1.1683, 1.2059,
1873 1.2521, 1.3069, 1.3712, 1.4471, 1.5275, 1.6165, 1.7145, 1.8189,
1874 1.9359, 2.065, 2.2007, 2.3591, 2.5362, 2.7346, 2.9515, 3.2021,
1875 3.4851, 3.7935, 4.0694, 4.4463, 4.807, 5.2443, 5.7178, 6.2231,
1876 6.4796, 6.9461, 7.4099, 7.3652, 7.7182, 8.048, 7.7373, 8.0363,
1877 8.3855, 8.8044, 9.0257, 9.8574, 10.948, 10.563, 6.8979, 7.0744,
1878 7.4121, 7.7663, 8.1768, 8.6243, 9.1437, 9.7847, 10.182, 10.849,
1879 11.572, 12.602, 13.482, 14.431, 15.907, 16.983, 18.11, 19.884,
1880 21.02, 22.18, 23.355, 24.848, 25.954, 27.13, 30.186, 34.893,
1881 35.682, 36.755, 38.111, 39.703, 41.58, 43.606, 45.868, 48.573,
1882 51.298, 54.291, 57.559, 61.116, 64.964, 69.124, 73.628, 78.471,
1883 83.683, 89.307, 95.341, 101.84, 108.83, 116.36, 124.46, 133.18,
1884 142.57, 152.79, 163.69, 175.43, 188.11, 201.79, 216.55, 232.51,
1885 249.74, 268.38, 288.54, 310.35, 333.97, 359.55, 387.26, 417.3,
1886 449.88, 485.2, 523.54, 565.14, 610.28, 659.31, 712.56, 770.43,
1887 833.36, 901.82, 976.36, 1057.6, 1146.8, 1243.8, 1350., 1466.3,
1888 1593.6, 1732.7, 1884.1, 2049.1, 2228.2, 2421.9, 2629.4, 2853.7,
1889 3094.4, 3351.1, 3622.3, 3829.8, 4123.1, 4438.3, 4777.2, 5144.1,
1890 5545.4, 5990.5, 6404.5, 6996.8, 7687.6, 8482.9, 9349.4, 10203.,
1891 11223., 12358., 13493., 14916., 16416., 18236., 20222., 22501.,
1892 25102., 28358., 31707., 35404., 39538., 43911., 48391., 53193.,
1893 58028., 58082., 61276., 64193., 66294., 67480., 67921., 67423.,
1894 66254., 64341., 51737., 51420., 53072., 58145., 66195., 65358.,
1895 67377., 67869., 53509., 50553., 35737., 32425., 21704., 19974.,
1896 14457., 12142., 16798., 19489., 23049., 27270., 31910., 36457.,
1897 40877., 44748., 47876., 59793., 58626., 55454., 50337., 44893.,
1898 50228., 52216., 54747., 69541., 70455., 81014., 77694., 80533.,
1899 73953., 70927., 65539., 59002., 52281., 45953., 40292., 35360.,
1900 31124., 27478., 24346., 21647., 19308., 17271., 15491., 13927.,
1901 12550., 11331., 10250., 9288.8, 8431.4, 7664.9, 6978.3, 6361.8,
1902 5807.4, 5307.7, 4856.8, 4449., 4079.8, 3744.9, 3440.8, 3164.2,
1903 2912.3, 2682.7, 2473., 2281.4, 2106., 1945.3, 1797.9, 1662.5,
1904 1538.1, 1423.6, 1318.1, 1221., 1131.5, 1049., 972.99, 902.87,
1905 838.01, 777.95, 722.2, 670.44, 622.35, 577.68, 536.21, 497.76,
1906 462.12, 429.13, 398.61, 370.39, 344.29, 320.16, 297.85, 277.2,
1907 258.08, 240.38, 223.97, 208.77, 194.66, 181.58, 169.43, 158.15,
1908 147.67, 137.92, 128.86, 120.44, 112.6, 105.3, 98.499, 92.166,
1909 86.264, 80.763, 75.632, 70.846, 66.381, 62.213, 58.321, 54.685,
1910 51.288, 48.114, 45.145, 42.368, 39.772, 37.341, 35.065, 32.937,
1911 30.943, 29.077, 27.33, 25.693, 24.158, 22.717, 21.367, 20.099,
1912 18.909, 17.792, 16.744, 15.761, 14.838, 13.971, 13.157, 12.393,
1913 11.676, 11.003, 10.369, 9.775, 9.2165, 8.6902, 8.1963, 7.7314,
1914 7.2923, 6.8794, 6.4898, 6.122, 5.7764, 5.4525, 5.1484, 4.8611,
1915 4.5918, 4.3379, 4.0982, 3.8716, 3.6567, 3.4545, 3.2634, 3.0828,
1916 2.9122, 2.7512, 2.5993, 2.4561, 2.3211, 2.1938, 2.0737, 1.9603,
1917 1.8534, 1.7525, 1.6572, 1.5673, 1.4824, 1.4022, 1.3265, 1.2551,
1918 1.1876, 1.1239, 1.0637, 1.0069, .9532, .90248, .85454, .80921,
1919 .76631, .72569, .6872, .65072, .61635, .5836, .55261, .52336,
1920 .49581, .46998, .44559, .42236, .40036, .37929, .35924, .34043,
1921 .32238, .30547, .28931, .27405, .25975, .24616, .23341, .22133,
1922 .20997, .19924, .18917, .17967, .17075, .16211, .15411, .14646,
1923 .13912, .13201, .12509, .11857, .11261, .10698, .10186, .097039,
1924 .092236, .087844, .083443, .07938, .075452, .071564, .067931,
1925 .064389, .061078, .057901, .054921, .052061, .049364, .046789,
1926 .04435, .042044, .039866, .037808, .035863, .034023, .032282,
1927 .030634, .029073, .027595, .026194, .024866, .023608, .022415,
1928 .021283, .02021, .019193, .018228, .017312, .016443, .015619,
1929 .014837, .014094, .01339, .012721, .012086, .011483, .010911,
1930 .010368, .009852, .0093623, .0088972, .0084556, .0080362,
1931 .0076379, .0072596, .0069003, .006559, .0062349, .0059269,
1932 .0056344, .0053565, .0050925, .0048417, .0046034, .004377,
1933 .0041618, .0039575, .0037633, .0035788, .0034034, .0032368,
1934 .0030785, .002928, .0027851, .0026492, .0025201, .0023975,
1935 .0022809, .0021701, .0020649, .0019649, .0018699, .0017796,
1936 .0016938, .0016122, .0015348, .0014612, .0013913, .001325,
1937 .0012619, .0012021, .0011452, .0010913, .0010401, 9.9149e-4,
1938 9.454e-4, 9.0169e-4, 8.6024e-4, 8.2097e-4, 7.8377e-4, 7.4854e-4,
1939 7.1522e-4, 6.8371e-4, 6.5393e-4, 6.2582e-4, 5.9932e-4, 5.7435e-4,
1940 5.5087e-4, 5.2882e-4, 5.0814e-4, 4.8881e-4, 4.7076e-4, 4.5398e-4,
1941 4.3843e-4, 4.2407e-4, 4.109e-4, 3.9888e-4, 3.88e-4, 3.7826e-4,
1942 3.6963e-4, 3.6213e-4, 3.5575e-4, 3.505e-4, 3.464e-4, 3.4346e-4,
1943 3.4173e-4, 3.4125e-4, 3.4206e-4, 3.4424e-4, 3.4787e-4, 3.5303e-4,
1944 3.5986e-4, 3.6847e-4, 3.7903e-4, 3.9174e-4, 4.0681e-4, 4.2455e-4,
1945 4.4527e-4, 4.6942e-4, 4.9637e-4, 5.2698e-4, 5.5808e-4, 5.9514e-4,
1946 6.2757e-4, 6.689e-4, 7.1298e-4, 7.3955e-4, 7.8403e-4, 8.0449e-4,
1947 8.5131e-4, 9.0256e-4, 9.3692e-4, .0010051, .0010846, .0011678,
1948 .001282, .0014016, .0015355, .0016764, .0018272, .0020055,
1949 .0021455, .0023421, .0024615, .0026786, .0028787, .0031259,
1950 .0034046, .0036985, .0040917, .0043902, .0048349, .0049531,
1951 .0052989, .0056148, .0052452, .0053357, .005333, .0045069,
1952 .0043851, .004253, .003738, .0038084, .0039013, .0041505,
1953 .0045372, .0050569, .0054507, .0061267, .0066122, .0072449,
1954 .0078012, .0082651, .0076538, .0076573, .0076806, .0075227,
1955 .0076269, .0063758, .006254, .0067749, .0067909, .0068231,
1956 .0072143, .0072762, .0072954, .007679, .0075107, .0073658,
1957 .0072441, .0071074, .0070378, .007176, .0072472, .0075844,
1958 .0079291, .008412, .0090165, .010688, .011535, .012375, .013166,
1959 .013895, .015567, .016011, .016392, .016737, .017043, .017731,
1960 .018031, .018419, .018877, .019474, .019868, .020604, .021538,
1961 .022653, .023869, .025288, .026879, .028547, .030524, .03274,
1962 .035132, .03769, .040567, .043793, .047188, .049962, .053542,
1963 .057205, .060776, .061489, .064419, .067124, .065945, .068487,
1964 .071209, .074783, .077039, .082444, .08902, .09692, .10617,
1965 .11687, .12952, .12362, .13498, .14412, .15492, .16519, .1744,
1966 .17096, .17714, .18208, .17363, .17813, .18564, .18295, .19045,
1967 .20252, .20815, .21844, .22929, .24229, .25321, .26588, .2797,
1968 .29465, .31136, .32961, .36529, .38486, .41027, .43694, .4667,
1969 .49943, .54542, .58348, .62303, .67633, .71755, .76054, .81371,
1970 .85934, .90841, .96438, 1.0207, 1.0821, 1.1491, 1.2226, 1.3018,
1971 1.388, 1.4818, 1.5835, 1.6939, 1.8137, 1.9435, 2.0843, 2.237,
1972 2.4026, 2.5818, 2.7767, 2.9885, 3.2182, 3.4679, 3.7391, 4.0349,
1973 4.3554, 4.7053, 5.0849, 5.4986, 5.9436, 6.4294, 6.9598, 7.5203,
1974 8.143, 8.8253, 9.5568, 10.371, 11.267, 12.233, 13.31, 14.357,
1975 15.598, 16.93, 18.358, 19.849, 21.408, 23.04, 24.706, 26.409,
1976 28.153, 28.795, 30.549, 32.43, 34.49, 36.027, 38.955, 42.465,
1977 46.565, 50.875, 55.378, 59.002, 63.882, 67.949, 73.693, 80.095,
1978 86.403, 94.264, 102.65, 112.37, 123.3, 135.54, 149.14, 163.83,
1979 179.17, 196.89, 217.91, 240.94, 264.13, 292.39, 324.83, 358.21,
1980 397.16, 440.5, 488.6, 541.04, 595.3, 650.43, 652.03, 688.74,
1981 719.47, 743.54, 757.68, 762.35, 756.43, 741.42, 595.43, 580.97,
1982 580.83, 605.68, 667.88, 764.49, 759.93, 789.12, 798.17, 645.66,
1983 615.65, 455.05, 421.09, 306.45, 289.14, 235.7, 215.52, 274.57,
1984 316.53, 357.73, 409.89, 465.06, 521.84, 579.02, 630.64, 794.46,
1985 813., 813.56, 796.25, 761.57, 727.97, 812.14, 866.75, 932.5,
1986 1132.8, 1194.8, 1362.2, 1387.2, 1482.3, 1479.7, 1517.9, 1533.1,
1987 1534.2, 1523.3, 1522.5, 1515.5, 1505.2, 1486.5, 1454., 1412.,
1988 1358.8, 1107.8, 1060.9, 1033.5, 1048.2, 1122.4, 1248.9, 1227.1,
1989 1255.4, 1058.9, 1020.7, 970.59, 715.24, 512.56, 468.47, 349.3,
1990 338.26, 299.22, 301.26, 332.38, 382.08, 445.49, 515.87, 590.85,
1991 662.3, 726.05, 955.59, 964.11, 945.17, 891.48, 807.11, 720.9,
1992 803.36, 834.46, 1073.9, 1107.1, 1123.6, 1296., 1393.7, 1303.1,
1993 1284.3, 1161.8, 1078.8, 976.13, 868.72, 767.4, 674.72, 593.73,
1994 523.12, 462.24, 409.75, 364.34, 325., 290.73, 260.76, 234.46,
1995 211.28, 190.78, 172.61, 156.44, 142.01, 129.12, 117.57, 107.2,
1996 97.877, 89.47, 81.882, 75.021, 68.807, 63.171, 58.052, 53.396,
1997 49.155, 45.288, 41.759, 38.531, 35.576, 32.868, 30.384, 28.102,
1998 26.003, 24.071, 22.293, 20.655, 19.147, 17.756, 16.476, 15.292,
1999 14.198, 13.183, 12.241, 11.367, 10.554, 9.7989, 9.0978, 8.4475,
2000 7.845, 7.2868, 6.7704, 6.2927, 5.8508, 5.4421, 5.064, 4.714,
2001 4.3902, 4.0902, 3.8121, 3.5543, 3.315, 3.093, 2.8869, 2.6953,
2002 2.5172, 2.3517, 2.1977, 2.0544, 1.9211, 1.7969, 1.6812, 1.5735,
2003 1.4731, 1.3794, 1.2921, 1.2107, 1.1346, 1.0637, .99744, .93554,
2004 .87771, .82368, .77313, .72587, .6816, .64014, .60134, .565,
2005 .53086, .49883, .46881, .44074, .4144, .38979, .36679, .34513,
2006 .32474, .30552, .28751, .27045, .25458, .23976, .22584, .21278,
2007 .20051, .18899, .17815, .16801, .15846, .14954, .14117, .13328,
2012 const double xw = nu / 2 + 1;
2013 if (xw >= 1 && xw < 2001) {
2014 const int iw = (int) xw;
2015 const double dw = xw - iw;
2016 const double ew = 1 - dw;
2017 const double cw296 = ew * co2296[iw - 1] + dw * co2296[iw];
2018 const double cw260 = ew * co2260[iw - 1] + dw * co2260[iw];
2019 const double cw230 = ew * co2230[iw - 1] + dw * co2230[iw];
2020 const double dt230 = t - 230;
2021 const double dt260 = t - 260;
2022 const double dt296 = t - 296;
2024 dt260 * 5.050505e-4 * dt296 * cw230 -
2025 dt230 * 9.259259e-4 * dt296 * cw260 +
2026 dt230 * 4.208754e-4 * dt260 * cw296;
2027 return u /
NA / 1000 * p /
P0 * ctw;
2041 static const double h2o296[2001] =
2042 { .17, .1695, .172, .168, .1687, .1624, .1606,
2043 .1508, .1447, .1344, .1214, .1133, .1009, .09217, .08297, .06989,
2044 .06513, .05469, .05056, .04417, .03779, .03484, .02994, .0272,
2045 .02325, .02063, .01818, .01592, .01405, .01251, .0108, .009647,
2046 .008424, .007519, .006555, .00588, .005136, .004511, .003989,
2047 .003509, .003114, .00274, .002446, .002144, .001895, .001676,
2048 .001486, .001312, .001164, .001031, 9.129e-4, 8.106e-4, 7.213e-4,
2049 6.4e-4, 5.687e-4, 5.063e-4, 4.511e-4, 4.029e-4, 3.596e-4,
2050 3.22e-4, 2.889e-4, 2.597e-4, 2.337e-4, 2.108e-4, 1.907e-4,
2051 1.728e-4, 1.57e-4, 1.43e-4, 1.305e-4, 1.195e-4, 1.097e-4,
2052 1.009e-4, 9.307e-5, 8.604e-5, 7.971e-5, 7.407e-5, 6.896e-5,
2053 6.433e-5, 6.013e-5, 5.631e-5, 5.283e-5, 4.963e-5, 4.669e-5,
2054 4.398e-5, 4.148e-5, 3.917e-5, 3.702e-5, 3.502e-5, 3.316e-5,
2055 3.142e-5, 2.978e-5, 2.825e-5, 2.681e-5, 2.546e-5, 2.419e-5,
2056 2.299e-5, 2.186e-5, 2.079e-5, 1.979e-5, 1.884e-5, 1.795e-5,
2057 1.711e-5, 1.633e-5, 1.559e-5, 1.49e-5, 1.426e-5, 1.367e-5,
2058 1.312e-5, 1.263e-5, 1.218e-5, 1.178e-5, 1.143e-5, 1.112e-5,
2059 1.088e-5, 1.07e-5, 1.057e-5, 1.05e-5, 1.051e-5, 1.059e-5,
2060 1.076e-5, 1.1e-5, 1.133e-5, 1.18e-5, 1.237e-5, 1.308e-5,
2061 1.393e-5, 1.483e-5, 1.614e-5, 1.758e-5, 1.93e-5, 2.123e-5,
2062 2.346e-5, 2.647e-5, 2.93e-5, 3.279e-5, 3.745e-5, 4.152e-5,
2063 4.813e-5, 5.477e-5, 6.203e-5, 7.331e-5, 8.056e-5, 9.882e-5,
2064 1.05e-4, 1.21e-4, 1.341e-4, 1.572e-4, 1.698e-4, 1.968e-4,
2065 2.175e-4, 2.431e-4, 2.735e-4, 2.867e-4, 3.19e-4, 3.371e-4,
2066 3.554e-4, 3.726e-4, 3.837e-4, 3.878e-4, 3.864e-4, 3.858e-4,
2067 3.841e-4, 3.852e-4, 3.815e-4, 3.762e-4, 3.618e-4, 3.579e-4,
2068 3.45e-4, 3.202e-4, 3.018e-4, 2.785e-4, 2.602e-4, 2.416e-4,
2069 2.097e-4, 1.939e-4, 1.689e-4, 1.498e-4, 1.308e-4, 1.17e-4,
2070 1.011e-4, 9.237e-5, 7.909e-5, 7.006e-5, 6.112e-5, 5.401e-5,
2071 4.914e-5, 4.266e-5, 3.963e-5, 3.316e-5, 3.037e-5, 2.598e-5,
2072 2.294e-5, 2.066e-5, 1.813e-5, 1.583e-5, 1.423e-5, 1.247e-5,
2073 1.116e-5, 9.76e-6, 8.596e-6, 7.72e-6, 6.825e-6, 6.108e-6,
2074 5.366e-6, 4.733e-6, 4.229e-6, 3.731e-6, 3.346e-6, 2.972e-6,
2075 2.628e-6, 2.356e-6, 2.102e-6, 1.878e-6, 1.678e-6, 1.507e-6,
2076 1.348e-6, 1.21e-6, 1.089e-6, 9.806e-7, 8.857e-7, 8.004e-7,
2077 7.261e-7, 6.599e-7, 6.005e-7, 5.479e-7, 5.011e-7, 4.595e-7,
2078 4.219e-7, 3.885e-7, 3.583e-7, 3.314e-7, 3.071e-7, 2.852e-7,
2079 2.654e-7, 2.474e-7, 2.311e-7, 2.162e-7, 2.026e-7, 1.902e-7,
2080 1.788e-7, 1.683e-7, 1.587e-7, 1.497e-7, 1.415e-7, 1.338e-7,
2081 1.266e-7, 1.2e-7, 1.138e-7, 1.08e-7, 1.027e-7, 9.764e-8,
2082 9.296e-8, 8.862e-8, 8.458e-8, 8.087e-8, 7.744e-8, 7.429e-8,
2083 7.145e-8, 6.893e-8, 6.664e-8, 6.468e-8, 6.322e-8, 6.162e-8,
2084 6.07e-8, 5.992e-8, 5.913e-8, 5.841e-8, 5.796e-8, 5.757e-8,
2085 5.746e-8, 5.731e-8, 5.679e-8, 5.577e-8, 5.671e-8, 5.656e-8,
2086 5.594e-8, 5.593e-8, 5.602e-8, 5.62e-8, 5.693e-8, 5.725e-8,
2087 5.858e-8, 6.037e-8, 6.249e-8, 6.535e-8, 6.899e-8, 7.356e-8,
2088 7.918e-8, 8.618e-8, 9.385e-8, 1.039e-7, 1.158e-7, 1.29e-7,
2089 1.437e-7, 1.65e-7, 1.871e-7, 2.121e-7, 2.427e-7, 2.773e-7,
2090 3.247e-7, 3.677e-7, 4.037e-7, 4.776e-7, 5.101e-7, 6.214e-7,
2091 6.936e-7, 7.581e-7, 8.486e-7, 9.355e-7, 9.942e-7, 1.063e-6,
2092 1.123e-6, 1.191e-6, 1.215e-6, 1.247e-6, 1.26e-6, 1.271e-6,
2093 1.284e-6, 1.317e-6, 1.323e-6, 1.349e-6, 1.353e-6, 1.362e-6,
2094 1.344e-6, 1.329e-6, 1.336e-6, 1.327e-6, 1.325e-6, 1.359e-6,
2095 1.374e-6, 1.415e-6, 1.462e-6, 1.526e-6, 1.619e-6, 1.735e-6,
2096 1.863e-6, 2.034e-6, 2.265e-6, 2.482e-6, 2.756e-6, 3.103e-6,
2097 3.466e-6, 3.832e-6, 4.378e-6, 4.913e-6, 5.651e-6, 6.311e-6,
2098 7.169e-6, 8.057e-6, 9.253e-6, 1.047e-5, 1.212e-5, 1.36e-5,
2099 1.569e-5, 1.776e-5, 2.02e-5, 2.281e-5, 2.683e-5, 2.994e-5,
2100 3.488e-5, 3.896e-5, 4.499e-5, 5.175e-5, 6.035e-5, 6.34e-5,
2101 7.281e-5, 7.923e-5, 8.348e-5, 9.631e-5, 1.044e-4, 1.102e-4,
2102 1.176e-4, 1.244e-4, 1.283e-4, 1.326e-4, 1.4e-4, 1.395e-4,
2103 1.387e-4, 1.363e-4, 1.314e-4, 1.241e-4, 1.228e-4, 1.148e-4,
2104 1.086e-4, 1.018e-4, 8.89e-5, 8.316e-5, 7.292e-5, 6.452e-5,
2105 5.625e-5, 5.045e-5, 4.38e-5, 3.762e-5, 3.29e-5, 2.836e-5,
2106 2.485e-5, 2.168e-5, 1.895e-5, 1.659e-5, 1.453e-5, 1.282e-5,
2107 1.132e-5, 1.001e-5, 8.836e-6, 7.804e-6, 6.922e-6, 6.116e-6,
2108 5.429e-6, 4.824e-6, 4.278e-6, 3.788e-6, 3.371e-6, 2.985e-6,
2109 2.649e-6, 2.357e-6, 2.09e-6, 1.858e-6, 1.647e-6, 1.462e-6,
2110 1.299e-6, 1.155e-6, 1.028e-6, 9.142e-7, 8.132e-7, 7.246e-7,
2111 6.451e-7, 5.764e-7, 5.151e-7, 4.603e-7, 4.121e-7, 3.694e-7,
2112 3.318e-7, 2.985e-7, 2.69e-7, 2.428e-7, 2.197e-7, 1.992e-7,
2113 1.81e-7, 1.649e-7, 1.506e-7, 1.378e-7, 1.265e-7, 1.163e-7,
2114 1.073e-7, 9.918e-8, 9.191e-8, 8.538e-8, 7.949e-8, 7.419e-8,
2115 6.94e-8, 6.508e-8, 6.114e-8, 5.761e-8, 5.437e-8, 5.146e-8,
2116 4.89e-8, 4.636e-8, 4.406e-8, 4.201e-8, 4.015e-8, 3.84e-8,
2117 3.661e-8, 3.51e-8, 3.377e-8, 3.242e-8, 3.13e-8, 3.015e-8,
2118 2.918e-8, 2.83e-8, 2.758e-8, 2.707e-8, 2.656e-8, 2.619e-8,
2119 2.609e-8, 2.615e-8, 2.63e-8, 2.675e-8, 2.745e-8, 2.842e-8,
2120 2.966e-8, 3.125e-8, 3.318e-8, 3.565e-8, 3.85e-8, 4.191e-8,
2121 4.59e-8, 5.059e-8, 5.607e-8, 6.239e-8, 6.958e-8, 7.796e-8,
2122 8.773e-8, 9.88e-8, 1.114e-7, 1.258e-7, 1.422e-7, 1.61e-7,
2123 1.822e-7, 2.06e-7, 2.337e-7, 2.645e-7, 2.996e-7, 3.393e-7,
2124 3.843e-7, 4.363e-7, 4.935e-7, 5.607e-7, 6.363e-7, 7.242e-7,
2125 8.23e-7, 9.411e-7, 1.071e-6, 1.232e-6, 1.402e-6, 1.6e-6, 1.82e-6,
2126 2.128e-6, 2.386e-6, 2.781e-6, 3.242e-6, 3.653e-6, 4.323e-6,
2127 4.747e-6, 5.321e-6, 5.919e-6, 6.681e-6, 7.101e-6, 7.983e-6,
2128 8.342e-6, 8.741e-6, 9.431e-6, 9.952e-6, 1.026e-5, 1.055e-5,
2129 1.095e-5, 1.095e-5, 1.087e-5, 1.056e-5, 1.026e-5, 9.715e-6,
2130 9.252e-6, 8.452e-6, 7.958e-6, 7.268e-6, 6.295e-6, 6.003e-6, 5e-6,
2131 4.591e-6, 3.983e-6, 3.479e-6, 3.058e-6, 2.667e-6, 2.293e-6,
2132 1.995e-6, 1.747e-6, 1.517e-6, 1.335e-6, 1.165e-6, 1.028e-6,
2133 9.007e-7, 7.956e-7, 7.015e-7, 6.192e-7, 5.491e-7, 4.859e-7,
2134 4.297e-7, 3.799e-7, 3.38e-7, 3.002e-7, 2.659e-7, 2.366e-7,
2135 2.103e-7, 1.861e-7, 1.655e-7, 1.469e-7, 1.309e-7, 1.162e-7,
2136 1.032e-7, 9.198e-8, 8.181e-8, 7.294e-8, 6.516e-8, 5.787e-8,
2137 5.163e-8, 4.612e-8, 4.119e-8, 3.695e-8, 3.308e-8, 2.976e-8,
2138 2.67e-8, 2.407e-8, 2.171e-8, 1.965e-8, 1.78e-8, 1.617e-8,
2139 1.47e-8, 1.341e-8, 1.227e-8, 1.125e-8, 1.033e-8, 9.524e-9,
2140 8.797e-9, 8.162e-9, 7.565e-9, 7.04e-9, 6.56e-9, 6.129e-9,
2141 5.733e-9, 5.376e-9, 5.043e-9, 4.75e-9, 4.466e-9, 4.211e-9,
2142 3.977e-9, 3.759e-9, 3.558e-9, 3.373e-9, 3.201e-9, 3.043e-9,
2143 2.895e-9, 2.76e-9, 2.635e-9, 2.518e-9, 2.411e-9, 2.314e-9,
2144 2.23e-9, 2.151e-9, 2.087e-9, 2.035e-9, 1.988e-9, 1.946e-9,
2145 1.927e-9, 1.916e-9, 1.916e-9, 1.933e-9, 1.966e-9, 2.018e-9,
2146 2.09e-9, 2.182e-9, 2.299e-9, 2.442e-9, 2.623e-9, 2.832e-9,
2147 3.079e-9, 3.368e-9, 3.714e-9, 4.104e-9, 4.567e-9, 5.091e-9,
2148 5.701e-9, 6.398e-9, 7.194e-9, 8.127e-9, 9.141e-9, 1.035e-8,
2149 1.177e-8, 1.338e-8, 1.508e-8, 1.711e-8, 1.955e-8, 2.216e-8,
2150 2.534e-8, 2.871e-8, 3.291e-8, 3.711e-8, 4.285e-8, 4.868e-8,
2151 5.509e-8, 6.276e-8, 7.262e-8, 8.252e-8, 9.4e-8, 1.064e-7,
2152 1.247e-7, 1.411e-7, 1.626e-7, 1.827e-7, 2.044e-7, 2.284e-7,
2153 2.452e-7, 2.854e-7, 3.026e-7, 3.278e-7, 3.474e-7, 3.693e-7,
2154 3.93e-7, 4.104e-7, 4.22e-7, 4.439e-7, 4.545e-7, 4.778e-7,
2155 4.812e-7, 5.018e-7, 4.899e-7, 5.075e-7, 5.073e-7, 5.171e-7,
2156 5.131e-7, 5.25e-7, 5.617e-7, 5.846e-7, 6.239e-7, 6.696e-7,
2157 7.398e-7, 8.073e-7, 9.15e-7, 1.009e-6, 1.116e-6, 1.264e-6,
2158 1.439e-6, 1.644e-6, 1.856e-6, 2.147e-6, 2.317e-6, 2.713e-6,
2159 2.882e-6, 2.99e-6, 3.489e-6, 3.581e-6, 4.033e-6, 4.26e-6,
2160 4.543e-6, 4.84e-6, 4.826e-6, 5.013e-6, 5.252e-6, 5.277e-6,
2161 5.306e-6, 5.236e-6, 5.123e-6, 5.171e-6, 4.843e-6, 4.615e-6,
2162 4.385e-6, 3.97e-6, 3.693e-6, 3.231e-6, 2.915e-6, 2.495e-6,
2163 2.144e-6, 1.91e-6, 1.639e-6, 1.417e-6, 1.226e-6, 1.065e-6,
2164 9.29e-7, 8.142e-7, 7.161e-7, 6.318e-7, 5.581e-7, 4.943e-7,
2165 4.376e-7, 3.884e-7, 3.449e-7, 3.06e-7, 2.712e-7, 2.412e-7,
2166 2.139e-7, 1.903e-7, 1.689e-7, 1.499e-7, 1.331e-7, 1.183e-7,
2167 1.05e-7, 9.362e-8, 8.306e-8, 7.403e-8, 6.578e-8, 5.853e-8,
2168 5.216e-8, 4.632e-8, 4.127e-8, 3.678e-8, 3.279e-8, 2.923e-8,
2169 2.612e-8, 2.339e-8, 2.094e-8, 1.877e-8, 1.686e-8, 1.516e-8,
2170 1.366e-8, 1.234e-8, 1.114e-8, 1.012e-8, 9.182e-9, 8.362e-9,
2171 7.634e-9, 6.981e-9, 6.406e-9, 5.888e-9, 5.428e-9, 5.021e-9,
2172 4.65e-9, 4.326e-9, 4.033e-9, 3.77e-9, 3.536e-9, 3.327e-9,
2173 3.141e-9, 2.974e-9, 2.825e-9, 2.697e-9, 2.584e-9, 2.488e-9,
2174 2.406e-9, 2.34e-9, 2.292e-9, 2.259e-9, 2.244e-9, 2.243e-9,
2175 2.272e-9, 2.31e-9, 2.378e-9, 2.454e-9, 2.618e-9, 2.672e-9,
2176 2.831e-9, 3.05e-9, 3.225e-9, 3.425e-9, 3.677e-9, 3.968e-9,
2177 4.221e-9, 4.639e-9, 4.96e-9, 5.359e-9, 5.649e-9, 6.23e-9,
2178 6.716e-9, 7.218e-9, 7.746e-9, 7.988e-9, 8.627e-9, 8.999e-9,
2179 9.442e-9, 9.82e-9, 1.015e-8, 1.06e-8, 1.079e-8, 1.109e-8,
2180 1.137e-8, 1.186e-8, 1.18e-8, 1.187e-8, 1.194e-8, 1.192e-8,
2181 1.224e-8, 1.245e-8, 1.246e-8, 1.318e-8, 1.377e-8, 1.471e-8,
2182 1.582e-8, 1.713e-8, 1.853e-8, 2.063e-8, 2.27e-8, 2.567e-8,
2183 2.891e-8, 3.264e-8, 3.744e-8, 4.286e-8, 4.915e-8, 5.623e-8,
2184 6.336e-8, 7.293e-8, 8.309e-8, 9.319e-8, 1.091e-7, 1.243e-7,
2185 1.348e-7, 1.449e-7, 1.62e-7, 1.846e-7, 1.937e-7, 2.04e-7,
2186 2.179e-7, 2.298e-7, 2.433e-7, 2.439e-7, 2.464e-7, 2.611e-7,
2187 2.617e-7, 2.582e-7, 2.453e-7, 2.401e-7, 2.349e-7, 2.203e-7,
2188 2.066e-7, 1.939e-7, 1.78e-7, 1.558e-7, 1.391e-7, 1.203e-7,
2189 1.048e-7, 9.464e-8, 8.306e-8, 7.239e-8, 6.317e-8, 5.52e-8,
2190 4.847e-8, 4.282e-8, 3.796e-8, 3.377e-8, 2.996e-8, 2.678e-8,
2191 2.4e-8, 2.134e-8, 1.904e-8, 1.705e-8, 1.523e-8, 1.35e-8,
2192 1.204e-8, 1.07e-8, 9.408e-9, 8.476e-9, 7.47e-9, 6.679e-9,
2193 5.929e-9, 5.267e-9, 4.711e-9, 4.172e-9, 3.761e-9, 3.288e-9,
2194 2.929e-9, 2.609e-9, 2.315e-9, 2.042e-9, 1.844e-9, 1.64e-9,
2195 1.47e-9, 1.31e-9, 1.176e-9, 1.049e-9, 9.377e-10, 8.462e-10,
2196 7.616e-10, 6.854e-10, 6.191e-10, 5.596e-10, 5.078e-10, 4.611e-10,
2197 4.197e-10, 3.83e-10, 3.505e-10, 3.215e-10, 2.956e-10, 2.726e-10,
2198 2.521e-10, 2.338e-10, 2.173e-10, 2.026e-10, 1.895e-10, 1.777e-10,
2199 1.672e-10, 1.579e-10, 1.496e-10, 1.423e-10, 1.358e-10, 1.302e-10,
2200 1.254e-10, 1.216e-10, 1.187e-10, 1.163e-10, 1.147e-10, 1.145e-10,
2201 1.15e-10, 1.17e-10, 1.192e-10, 1.25e-10, 1.298e-10, 1.345e-10,
2202 1.405e-10, 1.538e-10, 1.648e-10, 1.721e-10, 1.872e-10, 1.968e-10,
2203 2.089e-10, 2.172e-10, 2.317e-10, 2.389e-10, 2.503e-10, 2.585e-10,
2204 2.686e-10, 2.8e-10, 2.895e-10, 3.019e-10, 3.037e-10, 3.076e-10,
2205 3.146e-10, 3.198e-10, 3.332e-10, 3.397e-10, 3.54e-10, 3.667e-10,
2206 3.895e-10, 4.071e-10, 4.565e-10, 4.983e-10, 5.439e-10, 5.968e-10,
2207 6.676e-10, 7.456e-10, 8.405e-10, 9.478e-10, 1.064e-9, 1.218e-9,
2208 1.386e-9, 1.581e-9, 1.787e-9, 2.032e-9, 2.347e-9, 2.677e-9,
2209 3.008e-9, 3.544e-9, 4.056e-9, 4.687e-9, 5.331e-9, 6.227e-9,
2210 6.854e-9, 8.139e-9, 8.945e-9, 9.865e-9, 1.125e-8, 1.178e-8,
2211 1.364e-8, 1.436e-8, 1.54e-8, 1.672e-8, 1.793e-8, 1.906e-8,
2212 2.036e-8, 2.144e-8, 2.292e-8, 2.371e-8, 2.493e-8, 2.606e-8,
2213 2.706e-8, 2.866e-8, 3.036e-8, 3.136e-8, 3.405e-8, 3.665e-8,
2214 3.837e-8, 4.229e-8, 4.748e-8, 5.32e-8, 5.763e-8, 6.677e-8,
2215 7.216e-8, 7.716e-8, 8.958e-8, 9.419e-8, 1.036e-7, 1.108e-7,
2216 1.189e-7, 1.246e-7, 1.348e-7, 1.31e-7, 1.361e-7, 1.364e-7,
2217 1.363e-7, 1.343e-7, 1.293e-7, 1.254e-7, 1.235e-7, 1.158e-7,
2218 1.107e-7, 9.961e-8, 9.011e-8, 7.91e-8, 6.916e-8, 6.338e-8,
2219 5.564e-8, 4.827e-8, 4.198e-8, 3.695e-8, 3.276e-8, 2.929e-8,
2220 2.633e-8, 2.391e-8, 2.192e-8, 2.021e-8, 1.89e-8, 1.772e-8,
2221 1.667e-8, 1.603e-8, 1.547e-8, 1.537e-8, 1.492e-8, 1.515e-8,
2222 1.479e-8, 1.45e-8, 1.513e-8, 1.495e-8, 1.529e-8, 1.565e-8,
2223 1.564e-8, 1.553e-8, 1.569e-8, 1.584e-8, 1.57e-8, 1.538e-8,
2224 1.513e-8, 1.472e-8, 1.425e-8, 1.349e-8, 1.328e-8, 1.249e-8,
2225 1.17e-8, 1.077e-8, 9.514e-9, 8.614e-9, 7.46e-9, 6.621e-9,
2226 5.775e-9, 5.006e-9, 4.308e-9, 3.747e-9, 3.24e-9, 2.84e-9,
2227 2.481e-9, 2.184e-9, 1.923e-9, 1.71e-9, 1.504e-9, 1.334e-9,
2228 1.187e-9, 1.053e-9, 9.367e-10, 8.306e-10, 7.419e-10, 6.63e-10,
2229 5.918e-10, 5.277e-10, 4.717e-10, 4.222e-10, 3.783e-10, 3.39e-10,
2230 3.036e-10, 2.729e-10, 2.455e-10, 2.211e-10, 1.995e-10, 1.804e-10,
2231 1.635e-10, 1.485e-10, 1.355e-10, 1.24e-10, 1.139e-10, 1.051e-10,
2232 9.757e-11, 9.114e-11, 8.577e-11, 8.139e-11, 7.792e-11, 7.52e-11,
2233 7.39e-11, 7.311e-11, 7.277e-11, 7.482e-11, 7.698e-11, 8.162e-11,
2234 8.517e-11, 8.968e-11, 9.905e-11, 1.075e-10, 1.187e-10, 1.291e-10,
2235 1.426e-10, 1.573e-10, 1.734e-10, 1.905e-10, 2.097e-10, 2.28e-10,
2236 2.473e-10, 2.718e-10, 2.922e-10, 3.128e-10, 3.361e-10, 3.641e-10,
2237 3.91e-10, 4.196e-10, 4.501e-10, 4.932e-10, 5.258e-10, 5.755e-10,
2238 6.253e-10, 6.664e-10, 7.344e-10, 7.985e-10, 8.877e-10, 1.005e-9,
2239 1.118e-9, 1.251e-9, 1.428e-9, 1.61e-9, 1.888e-9, 2.077e-9,
2240 2.331e-9, 2.751e-9, 3.061e-9, 3.522e-9, 3.805e-9, 4.181e-9,
2241 4.575e-9, 5.167e-9, 5.634e-9, 6.007e-9, 6.501e-9, 6.829e-9,
2242 7.211e-9, 7.262e-9, 7.696e-9, 7.832e-9, 7.799e-9, 7.651e-9,
2243 7.304e-9, 7.15e-9, 6.977e-9, 6.603e-9, 6.209e-9, 5.69e-9,
2244 5.432e-9, 4.764e-9, 4.189e-9, 3.64e-9, 3.203e-9, 2.848e-9,
2245 2.51e-9, 2.194e-9, 1.946e-9, 1.75e-9, 1.567e-9, 1.426e-9,
2246 1.302e-9, 1.197e-9, 1.109e-9, 1.035e-9, 9.719e-10, 9.207e-10,
2247 8.957e-10, 8.578e-10, 8.262e-10, 8.117e-10, 7.987e-10, 7.875e-10,
2248 7.741e-10, 7.762e-10, 7.537e-10, 7.424e-10, 7.474e-10, 7.294e-10,
2249 7.216e-10, 7.233e-10, 7.075e-10, 6.892e-10, 6.618e-10, 6.314e-10,
2250 6.208e-10, 5.689e-10, 5.55e-10, 4.984e-10, 4.6e-10, 4.078e-10,
2251 3.879e-10, 3.459e-10, 2.982e-10, 2.626e-10, 2.329e-10, 1.988e-10,
2252 1.735e-10, 1.487e-10, 1.297e-10, 1.133e-10, 9.943e-11, 8.736e-11,
2253 7.726e-11, 6.836e-11, 6.053e-11, 5.384e-11, 4.789e-11, 4.267e-11,
2254 3.804e-11, 3.398e-11, 3.034e-11, 2.71e-11, 2.425e-11, 2.173e-11,
2255 1.95e-11, 1.752e-11, 1.574e-11, 1.418e-11, 1.278e-11, 1.154e-11,
2256 1.044e-11, 9.463e-12, 8.602e-12, 7.841e-12, 7.171e-12, 6.584e-12,
2257 6.073e-12, 5.631e-12, 5.254e-12, 4.937e-12, 4.679e-12, 4.476e-12,
2258 4.328e-12, 4.233e-12, 4.194e-12, 4.211e-12, 4.286e-12, 4.424e-12,
2259 4.628e-12, 4.906e-12, 5.262e-12, 5.708e-12, 6.254e-12, 6.914e-12,
2260 7.714e-12, 8.677e-12, 9.747e-12, 1.101e-11, 1.256e-11, 1.409e-11,
2261 1.597e-11, 1.807e-11, 2.034e-11, 2.316e-11, 2.622e-11, 2.962e-11,
2262 3.369e-11, 3.819e-11, 4.329e-11, 4.932e-11, 5.589e-11, 6.364e-11,
2263 7.284e-11, 8.236e-11, 9.447e-11, 1.078e-10, 1.229e-10, 1.417e-10,
2264 1.614e-10, 1.843e-10, 2.107e-10, 2.406e-10, 2.728e-10, 3.195e-10,
2265 3.595e-10, 4.153e-10, 4.736e-10, 5.41e-10, 6.088e-10, 6.769e-10,
2266 7.691e-10, 8.545e-10, 9.621e-10, 1.047e-9, 1.161e-9, 1.296e-9,
2267 1.424e-9, 1.576e-9, 1.739e-9, 1.893e-9, 2.08e-9, 2.336e-9,
2268 2.604e-9, 2.76e-9, 3.001e-9, 3.365e-9, 3.55e-9, 3.895e-9,
2269 4.183e-9, 4.614e-9, 4.846e-9, 5.068e-9, 5.427e-9, 5.541e-9,
2270 5.864e-9, 5.997e-9, 5.997e-9, 6.061e-9, 5.944e-9, 5.855e-9,
2271 5.661e-9, 5.523e-9, 5.374e-9, 4.94e-9, 4.688e-9, 4.17e-9,
2272 3.913e-9, 3.423e-9, 2.997e-9, 2.598e-9, 2.253e-9, 1.946e-9,
2273 1.71e-9, 1.507e-9, 1.336e-9, 1.19e-9, 1.068e-9, 9.623e-10,
2274 8.772e-10, 8.007e-10, 7.42e-10, 6.884e-10, 6.483e-10, 6.162e-10,
2275 5.922e-10, 5.688e-10, 5.654e-10, 5.637e-10, 5.701e-10, 5.781e-10,
2276 5.874e-10, 6.268e-10, 6.357e-10, 6.525e-10, 7.137e-10, 7.441e-10,
2277 8.024e-10, 8.485e-10, 9.143e-10, 9.536e-10, 9.717e-10, 1.018e-9,
2278 1.042e-9, 1.054e-9, 1.092e-9, 1.079e-9, 1.064e-9, 1.043e-9,
2279 1.02e-9, 9.687e-10, 9.273e-10, 9.208e-10, 9.068e-10, 7.687e-10,
2280 7.385e-10, 6.595e-10, 5.87e-10, 5.144e-10, 4.417e-10, 3.804e-10,
2281 3.301e-10, 2.866e-10, 2.509e-10, 2.202e-10, 1.947e-10, 1.719e-10,
2282 1.525e-10, 1.361e-10, 1.21e-10, 1.084e-10, 9.8e-11, 8.801e-11,
2283 7.954e-11, 7.124e-11, 6.335e-11, 5.76e-11, 5.132e-11, 4.601e-11,
2284 4.096e-11, 3.657e-11, 3.25e-11, 2.909e-11, 2.587e-11, 2.297e-11,
2285 2.05e-11, 1.828e-11, 1.632e-11, 1.462e-11, 1.314e-11, 1.185e-11,
2286 1.073e-11, 9.76e-12, 8.922e-12, 8.206e-12, 7.602e-12, 7.1e-12,
2287 6.694e-12, 6.378e-12, 6.149e-12, 6.004e-12, 5.941e-12, 5.962e-12,
2288 6.069e-12, 6.265e-12, 6.551e-12, 6.935e-12, 7.457e-12, 8.074e-12,
2289 8.811e-12, 9.852e-12, 1.086e-11, 1.207e-11, 1.361e-11, 1.553e-11,
2290 1.737e-11, 1.93e-11, 2.175e-11, 2.41e-11, 2.706e-11, 3.023e-11,
2291 3.313e-11, 3.657e-11, 4.118e-11, 4.569e-11, 5.025e-11, 5.66e-11,
2292 6.231e-11, 6.881e-11, 7.996e-11, 8.526e-11, 9.694e-11, 1.106e-10,
2293 1.222e-10, 1.355e-10, 1.525e-10, 1.775e-10, 1.924e-10, 2.181e-10,
2294 2.379e-10, 2.662e-10, 2.907e-10, 3.154e-10, 3.366e-10, 3.579e-10,
2295 3.858e-10, 4.046e-10, 4.196e-10, 4.166e-10, 4.457e-10, 4.466e-10,
2296 4.404e-10, 4.337e-10, 4.15e-10, 4.083e-10, 3.91e-10, 3.723e-10,
2297 3.514e-10, 3.303e-10, 2.847e-10, 2.546e-10, 2.23e-10, 1.994e-10,
2298 1.733e-10, 1.488e-10, 1.297e-10, 1.144e-10, 1.004e-10, 8.741e-11,
2299 7.928e-11, 7.034e-11, 6.323e-11, 5.754e-11, 5.25e-11, 4.85e-11,
2300 4.502e-11, 4.286e-11, 4.028e-11, 3.899e-11, 3.824e-11, 3.761e-11,
2301 3.804e-11, 3.839e-11, 3.845e-11, 4.244e-11, 4.382e-11, 4.582e-11,
2302 4.847e-11, 5.209e-11, 5.384e-11, 5.887e-11, 6.371e-11, 6.737e-11,
2303 7.168e-11, 7.415e-11, 7.827e-11, 8.037e-11, 8.12e-11, 8.071e-11,
2304 8.008e-11, 7.851e-11, 7.544e-11, 7.377e-11, 7.173e-11, 6.801e-11,
2305 6.267e-11, 5.727e-11, 5.288e-11, 4.853e-11, 4.082e-11, 3.645e-11,
2306 3.136e-11, 2.672e-11, 2.304e-11, 1.986e-11, 1.725e-11, 1.503e-11,
2307 1.315e-11, 1.153e-11, 1.014e-11, 8.942e-12, 7.901e-12, 6.993e-12,
2308 6.199e-12, 5.502e-12, 4.89e-12, 4.351e-12, 3.878e-12, 3.461e-12,
2309 3.094e-12, 2.771e-12, 2.488e-12, 2.241e-12, 2.025e-12, 1.838e-12,
2310 1.677e-12, 1.541e-12, 1.427e-12, 1.335e-12, 1.262e-12, 1.209e-12,
2311 1.176e-12, 1.161e-12, 1.165e-12, 1.189e-12, 1.234e-12, 1.3e-12,
2312 1.389e-12, 1.503e-12, 1.644e-12, 1.814e-12, 2.017e-12, 2.255e-12,
2313 2.534e-12, 2.858e-12, 3.231e-12, 3.661e-12, 4.153e-12, 4.717e-12,
2314 5.36e-12, 6.094e-12, 6.93e-12, 7.882e-12, 8.966e-12, 1.02e-11,
2315 1.162e-11, 1.324e-11, 1.51e-11, 1.72e-11, 1.965e-11, 2.237e-11,
2316 2.56e-11, 2.927e-11, 3.371e-11, 3.842e-11, 4.429e-11, 5.139e-11,
2317 5.798e-11, 6.697e-11, 7.626e-11, 8.647e-11, 1.022e-10, 1.136e-10,
2318 1.3e-10, 1.481e-10, 1.672e-10, 1.871e-10, 2.126e-10, 2.357e-10,
2319 2.583e-10, 2.997e-10, 3.289e-10, 3.702e-10, 4.012e-10, 4.319e-10,
2320 4.527e-10, 5.001e-10, 5.448e-10, 5.611e-10, 5.76e-10, 5.965e-10,
2321 6.079e-10, 6.207e-10, 6.276e-10, 6.222e-10, 6.137e-10, 6e-10,
2322 5.814e-10, 5.393e-10, 5.35e-10, 4.947e-10, 4.629e-10, 4.117e-10,
2323 3.712e-10, 3.372e-10, 2.923e-10, 2.55e-10, 2.232e-10, 1.929e-10,
2324 1.679e-10, 1.46e-10, 1.289e-10, 1.13e-10, 9.953e-11, 8.763e-11,
2325 7.76e-11, 6.9e-11, 6.16e-11, 5.525e-11, 4.958e-11, 4.489e-11,
2326 4.072e-11, 3.728e-11, 3.438e-11, 3.205e-11, 3.006e-11, 2.848e-11,
2327 2.766e-11, 2.688e-11, 2.664e-11, 2.67e-11, 2.696e-11, 2.786e-11,
2328 2.861e-11, 3.009e-11, 3.178e-11, 3.389e-11, 3.587e-11, 3.819e-11,
2329 4.054e-11, 4.417e-11, 4.703e-11, 5.137e-11, 5.46e-11, 6.055e-11,
2330 6.333e-11, 6.773e-11, 7.219e-11, 7.717e-11, 8.131e-11, 8.491e-11,
2331 8.574e-11, 9.01e-11, 9.017e-11, 8.999e-11, 8.959e-11, 8.838e-11,
2332 8.579e-11, 8.162e-11, 8.098e-11, 7.472e-11, 7.108e-11, 6.559e-11,
2333 5.994e-11, 5.172e-11, 4.424e-11, 3.951e-11, 3.34e-11, 2.902e-11,
2334 2.541e-11, 2.215e-11, 1.945e-11, 1.716e-11, 1.503e-11, 1.339e-11,
2335 1.185e-11, 1.05e-11, 9.336e-12, 8.307e-12, 7.312e-12, 6.55e-12,
2336 5.836e-12, 5.178e-12, 4.6e-12, 4.086e-12, 3.639e-12, 3.247e-12,
2337 2.904e-12, 2.604e-12, 2.341e-12, 2.112e-12, 1.914e-12, 1.744e-12,
2338 1.598e-12, 1.476e-12, 1.374e-12, 1.293e-12, 1.23e-12, 1.185e-12,
2339 1.158e-12, 1.147e-12, 1.154e-12, 1.177e-12, 1.219e-12, 1.28e-12,
2340 1.36e-12, 1.463e-12, 1.591e-12, 1.75e-12, 1.94e-12, 2.156e-12,
2341 2.43e-12, 2.748e-12, 3.052e-12, 3.533e-12, 3.967e-12, 4.471e-12,
2342 5.041e-12, 5.86e-12, 6.664e-12, 7.522e-12, 8.342e-12, 9.412e-12,
2343 1.072e-11, 1.213e-11, 1.343e-11, 1.496e-11, 1.664e-11, 1.822e-11,
2344 2.029e-11, 2.233e-11, 2.457e-11, 2.709e-11, 2.928e-11, 3.115e-11,
2345 3.356e-11, 3.592e-11, 3.818e-11, 3.936e-11, 4.061e-11, 4.149e-11,
2346 4.299e-11, 4.223e-11, 4.251e-11, 4.287e-11, 4.177e-11, 4.094e-11,
2347 3.942e-11, 3.772e-11, 3.614e-11, 3.394e-11, 3.222e-11, 2.791e-11,
2348 2.665e-11, 2.309e-11, 2.032e-11, 1.74e-11, 1.535e-11, 1.323e-11,
2349 1.151e-11, 9.803e-12, 8.65e-12, 7.54e-12, 6.619e-12, 5.832e-12,
2350 5.113e-12, 4.503e-12, 3.975e-12, 3.52e-12, 3.112e-12, 2.797e-12,
2351 2.5e-12, 2.24e-12, 2.013e-12, 1.819e-12, 1.653e-12, 1.513e-12,
2352 1.395e-12, 1.299e-12, 1.225e-12, 1.168e-12, 1.124e-12, 1.148e-12,
2353 1.107e-12, 1.128e-12, 1.169e-12, 1.233e-12, 1.307e-12, 1.359e-12,
2354 1.543e-12, 1.686e-12, 1.794e-12, 2.028e-12, 2.21e-12, 2.441e-12,
2355 2.653e-12, 2.828e-12, 3.093e-12, 3.28e-12, 3.551e-12, 3.677e-12,
2356 3.803e-12, 3.844e-12, 4.068e-12, 4.093e-12, 4.002e-12, 3.904e-12,
2357 3.624e-12, 3.633e-12, 3.622e-12, 3.443e-12, 3.184e-12, 2.934e-12,
2358 2.476e-12, 2.212e-12, 1.867e-12, 1.594e-12, 1.37e-12, 1.192e-12,
2359 1.045e-12, 9.211e-13, 8.17e-13, 7.29e-13, 6.55e-13, 5.929e-13,
2360 5.415e-13, 4.995e-13, 4.661e-13, 4.406e-13, 4.225e-13, 4.116e-13,
2361 4.075e-13, 4.102e-13, 4.198e-13, 4.365e-13, 4.606e-13, 4.925e-13,
2362 5.326e-13, 5.818e-13, 6.407e-13, 7.104e-13, 7.92e-13, 8.868e-13,
2363 9.964e-13, 1.123e-12, 1.268e-12, 1.434e-12, 1.626e-12, 1.848e-12,
2364 2.107e-12, 2.422e-12, 2.772e-12, 3.145e-12, 3.704e-12, 4.27e-12,
2365 4.721e-12, 5.361e-12, 6.083e-12, 7.095e-12, 7.968e-12, 9.228e-12,
2366 1.048e-11, 1.187e-11, 1.336e-11, 1.577e-11, 1.772e-11, 2.017e-11,
2367 2.25e-11, 2.63e-11, 2.911e-11, 3.356e-11, 3.82e-11, 4.173e-11,
2368 4.811e-11, 5.254e-11, 5.839e-11, 6.187e-11, 6.805e-11, 7.118e-11,
2369 7.369e-11, 7.664e-11, 7.794e-11, 7.947e-11, 8.036e-11, 7.954e-11,
2370 7.849e-11, 7.518e-11, 7.462e-11, 6.926e-11, 6.531e-11, 6.197e-11,
2371 5.421e-11, 4.777e-11, 4.111e-11, 3.679e-11, 3.166e-11, 2.786e-11,
2372 2.436e-11, 2.144e-11, 1.859e-11, 1.628e-11, 1.414e-11, 1.237e-11,
2373 1.093e-11, 9.558e-12
2376 static const double h2o260[2001] =
2377 { .2752, .2732, .2749, .2676, .2667, .2545,
2378 .2497, .2327, .2218, .2036, .1825, .1694, .1497, .1353, .121,
2379 .1014, .09405, .07848, .07195, .06246, .05306, .04853, .04138,
2380 .03735, .03171, .02785, .02431, .02111, .01845, .0164, .01405,
2381 .01255, .01098, .009797, .008646, .007779, .006898, .006099,
2382 .005453, .004909, .004413, .003959, .003581, .003199, .002871,
2383 .002583, .00233, .002086, .001874, .001684, .001512, .001361,
2384 .001225, .0011, 9.89e-4, 8.916e-4, 8.039e-4, 7.256e-4, 6.545e-4,
2385 5.918e-4, 5.359e-4, 4.867e-4, 4.426e-4, 4.033e-4, 3.682e-4,
2386 3.366e-4, 3.085e-4, 2.833e-4, 2.605e-4, 2.403e-4, 2.221e-4,
2387 2.055e-4, 1.908e-4, 1.774e-4, 1.653e-4, 1.544e-4, 1.443e-4,
2388 1.351e-4, 1.267e-4, 1.19e-4, 1.119e-4, 1.053e-4, 9.922e-5,
2389 9.355e-5, 8.831e-5, 8.339e-5, 7.878e-5, 7.449e-5, 7.043e-5,
2390 6.664e-5, 6.307e-5, 5.969e-5, 5.654e-5, 5.357e-5, 5.075e-5,
2391 4.81e-5, 4.56e-5, 4.322e-5, 4.102e-5, 3.892e-5, 3.696e-5,
2392 3.511e-5, 3.339e-5, 3.177e-5, 3.026e-5, 2.886e-5, 2.756e-5,
2393 2.636e-5, 2.527e-5, 2.427e-5, 2.337e-5, 2.257e-5, 2.185e-5,
2394 2.127e-5, 2.08e-5, 2.041e-5, 2.013e-5, 2e-5, 1.997e-5, 2.009e-5,
2395 2.031e-5, 2.068e-5, 2.124e-5, 2.189e-5, 2.267e-5, 2.364e-5,
2396 2.463e-5, 2.618e-5, 2.774e-5, 2.937e-5, 3.144e-5, 3.359e-5,
2397 3.695e-5, 4.002e-5, 4.374e-5, 4.947e-5, 5.431e-5, 6.281e-5,
2398 7.169e-5, 8.157e-5, 9.728e-5, 1.079e-4, 1.337e-4, 1.442e-4,
2399 1.683e-4, 1.879e-4, 2.223e-4, 2.425e-4, 2.838e-4, 3.143e-4,
2400 3.527e-4, 4.012e-4, 4.237e-4, 4.747e-4, 5.057e-4, 5.409e-4,
2401 5.734e-4, 5.944e-4, 6.077e-4, 6.175e-4, 6.238e-4, 6.226e-4,
2402 6.248e-4, 6.192e-4, 6.098e-4, 5.818e-4, 5.709e-4, 5.465e-4,
2403 5.043e-4, 4.699e-4, 4.294e-4, 3.984e-4, 3.672e-4, 3.152e-4,
2404 2.883e-4, 2.503e-4, 2.211e-4, 1.92e-4, 1.714e-4, 1.485e-4,
2405 1.358e-4, 1.156e-4, 1.021e-4, 8.887e-5, 7.842e-5, 7.12e-5,
2406 6.186e-5, 5.73e-5, 4.792e-5, 4.364e-5, 3.72e-5, 3.28e-5,
2407 2.946e-5, 2.591e-5, 2.261e-5, 2.048e-5, 1.813e-5, 1.63e-5,
2408 1.447e-5, 1.282e-5, 1.167e-5, 1.041e-5, 9.449e-6, 8.51e-6,
2409 7.596e-6, 6.961e-6, 6.272e-6, 5.728e-6, 5.198e-6, 4.667e-6,
2410 4.288e-6, 3.897e-6, 3.551e-6, 3.235e-6, 2.952e-6, 2.688e-6,
2411 2.449e-6, 2.241e-6, 2.05e-6, 1.879e-6, 1.722e-6, 1.582e-6,
2412 1.456e-6, 1.339e-6, 1.236e-6, 1.144e-6, 1.06e-6, 9.83e-7,
2413 9.149e-7, 8.535e-7, 7.973e-7, 7.466e-7, 6.999e-7, 6.574e-7,
2414 6.18e-7, 5.821e-7, 5.487e-7, 5.18e-7, 4.896e-7, 4.631e-7,
2415 4.386e-7, 4.16e-7, 3.945e-7, 3.748e-7, 3.562e-7, 3.385e-7,
2416 3.222e-7, 3.068e-7, 2.922e-7, 2.788e-7, 2.659e-7, 2.539e-7,
2417 2.425e-7, 2.318e-7, 2.219e-7, 2.127e-7, 2.039e-7, 1.958e-7,
2418 1.885e-7, 1.818e-7, 1.758e-7, 1.711e-7, 1.662e-7, 1.63e-7,
2419 1.605e-7, 1.58e-7, 1.559e-7, 1.545e-7, 1.532e-7, 1.522e-7,
2420 1.51e-7, 1.495e-7, 1.465e-7, 1.483e-7, 1.469e-7, 1.448e-7,
2421 1.444e-7, 1.436e-7, 1.426e-7, 1.431e-7, 1.425e-7, 1.445e-7,
2422 1.477e-7, 1.515e-7, 1.567e-7, 1.634e-7, 1.712e-7, 1.802e-7,
2423 1.914e-7, 2.024e-7, 2.159e-7, 2.295e-7, 2.461e-7, 2.621e-7,
2424 2.868e-7, 3.102e-7, 3.394e-7, 3.784e-7, 4.223e-7, 4.864e-7,
2425 5.501e-7, 6.039e-7, 7.193e-7, 7.728e-7, 9.514e-7, 1.073e-6,
2426 1.18e-6, 1.333e-6, 1.472e-6, 1.566e-6, 1.677e-6, 1.784e-6,
2427 1.904e-6, 1.953e-6, 2.02e-6, 2.074e-6, 2.128e-6, 2.162e-6,
2428 2.219e-6, 2.221e-6, 2.249e-6, 2.239e-6, 2.235e-6, 2.185e-6,
2429 2.141e-6, 2.124e-6, 2.09e-6, 2.068e-6, 2.1e-6, 2.104e-6,
2430 2.142e-6, 2.181e-6, 2.257e-6, 2.362e-6, 2.5e-6, 2.664e-6,
2431 2.884e-6, 3.189e-6, 3.48e-6, 3.847e-6, 4.313e-6, 4.79e-6,
2432 5.25e-6, 5.989e-6, 6.692e-6, 7.668e-6, 8.52e-6, 9.606e-6,
2433 1.073e-5, 1.225e-5, 1.377e-5, 1.582e-5, 1.761e-5, 2.029e-5,
2434 2.284e-5, 2.602e-5, 2.94e-5, 3.483e-5, 3.928e-5, 4.618e-5,
2435 5.24e-5, 6.132e-5, 7.183e-5, 8.521e-5, 9.111e-5, 1.07e-4,
2436 1.184e-4, 1.264e-4, 1.475e-4, 1.612e-4, 1.704e-4, 1.818e-4,
2437 1.924e-4, 1.994e-4, 2.061e-4, 2.18e-4, 2.187e-4, 2.2e-4,
2438 2.196e-4, 2.131e-4, 2.015e-4, 1.988e-4, 1.847e-4, 1.729e-4,
2439 1.597e-4, 1.373e-4, 1.262e-4, 1.087e-4, 9.439e-5, 8.061e-5,
2440 7.093e-5, 6.049e-5, 5.12e-5, 4.435e-5, 3.817e-5, 3.34e-5,
2441 2.927e-5, 2.573e-5, 2.291e-5, 2.04e-5, 1.827e-5, 1.636e-5,
2442 1.463e-5, 1.309e-5, 1.17e-5, 1.047e-5, 9.315e-6, 8.328e-6,
2443 7.458e-6, 6.665e-6, 5.94e-6, 5.316e-6, 4.752e-6, 4.252e-6,
2444 3.825e-6, 3.421e-6, 3.064e-6, 2.746e-6, 2.465e-6, 2.216e-6,
2445 1.99e-6, 1.79e-6, 1.609e-6, 1.449e-6, 1.306e-6, 1.177e-6,
2446 1.063e-6, 9.607e-7, 8.672e-7, 7.855e-7, 7.118e-7, 6.46e-7,
2447 5.871e-7, 5.34e-7, 4.868e-7, 4.447e-7, 4.068e-7, 3.729e-7,
2448 3.423e-7, 3.151e-7, 2.905e-7, 2.686e-7, 2.484e-7, 2.306e-7,
2449 2.142e-7, 1.995e-7, 1.86e-7, 1.738e-7, 1.626e-7, 1.522e-7,
2450 1.427e-7, 1.338e-7, 1.258e-7, 1.183e-7, 1.116e-7, 1.056e-7,
2451 9.972e-8, 9.46e-8, 9.007e-8, 8.592e-8, 8.195e-8, 7.816e-8,
2452 7.483e-8, 7.193e-8, 6.892e-8, 6.642e-8, 6.386e-8, 6.154e-8,
2453 5.949e-8, 5.764e-8, 5.622e-8, 5.479e-8, 5.364e-8, 5.301e-8,
2454 5.267e-8, 5.263e-8, 5.313e-8, 5.41e-8, 5.55e-8, 5.745e-8,
2455 6.003e-8, 6.311e-8, 6.713e-8, 7.173e-8, 7.724e-8, 8.368e-8,
2456 9.121e-8, 9.986e-8, 1.097e-7, 1.209e-7, 1.338e-7, 1.486e-7,
2457 1.651e-7, 1.837e-7, 2.048e-7, 2.289e-7, 2.557e-7, 2.857e-7,
2458 3.195e-7, 3.587e-7, 4.015e-7, 4.497e-7, 5.049e-7, 5.665e-7,
2459 6.366e-7, 7.121e-7, 7.996e-7, 8.946e-7, 1.002e-6, 1.117e-6,
2460 1.262e-6, 1.416e-6, 1.611e-6, 1.807e-6, 2.056e-6, 2.351e-6,
2461 2.769e-6, 3.138e-6, 3.699e-6, 4.386e-6, 5.041e-6, 6.074e-6,
2462 6.812e-6, 7.79e-6, 8.855e-6, 1.014e-5, 1.095e-5, 1.245e-5,
2463 1.316e-5, 1.39e-5, 1.504e-5, 1.583e-5, 1.617e-5, 1.652e-5,
2464 1.713e-5, 1.724e-5, 1.715e-5, 1.668e-5, 1.629e-5, 1.552e-5,
2465 1.478e-5, 1.34e-5, 1.245e-5, 1.121e-5, 9.575e-6, 8.956e-6,
2466 7.345e-6, 6.597e-6, 5.612e-6, 4.818e-6, 4.165e-6, 3.579e-6,
2467 3.041e-6, 2.623e-6, 2.29e-6, 1.984e-6, 1.748e-6, 1.534e-6,
2468 1.369e-6, 1.219e-6, 1.092e-6, 9.8e-7, 8.762e-7, 7.896e-7,
2469 7.104e-7, 6.364e-7, 5.691e-7, 5.107e-7, 4.575e-7, 4.09e-7,
2470 3.667e-7, 3.287e-7, 2.931e-7, 2.633e-7, 2.356e-7, 2.111e-7,
2471 1.895e-7, 1.697e-7, 1.525e-7, 1.369e-7, 1.233e-7, 1.114e-7,
2472 9.988e-8, 9.004e-8, 8.149e-8, 7.352e-8, 6.662e-8, 6.03e-8,
2473 5.479e-8, 4.974e-8, 4.532e-8, 4.129e-8, 3.781e-8, 3.462e-8,
2474 3.176e-8, 2.919e-8, 2.687e-8, 2.481e-8, 2.292e-8, 2.119e-8,
2475 1.967e-8, 1.828e-8, 1.706e-8, 1.589e-8, 1.487e-8, 1.393e-8,
2476 1.307e-8, 1.228e-8, 1.156e-8, 1.089e-8, 1.028e-8, 9.696e-9,
2477 9.159e-9, 8.658e-9, 8.187e-9, 7.746e-9, 7.34e-9, 6.953e-9,
2478 6.594e-9, 6.259e-9, 5.948e-9, 5.66e-9, 5.386e-9, 5.135e-9,
2479 4.903e-9, 4.703e-9, 4.515e-9, 4.362e-9, 4.233e-9, 4.117e-9,
2480 4.017e-9, 3.962e-9, 3.924e-9, 3.905e-9, 3.922e-9, 3.967e-9,
2481 4.046e-9, 4.165e-9, 4.32e-9, 4.522e-9, 4.769e-9, 5.083e-9,
2482 5.443e-9, 5.872e-9, 6.366e-9, 6.949e-9, 7.601e-9, 8.371e-9,
2483 9.22e-9, 1.02e-8, 1.129e-8, 1.251e-8, 1.393e-8, 1.542e-8,
2484 1.72e-8, 1.926e-8, 2.152e-8, 2.392e-8, 2.678e-8, 3.028e-8,
2485 3.39e-8, 3.836e-8, 4.309e-8, 4.9e-8, 5.481e-8, 6.252e-8,
2486 7.039e-8, 7.883e-8, 8.849e-8, 1.012e-7, 1.142e-7, 1.3e-7,
2487 1.475e-7, 1.732e-7, 1.978e-7, 2.304e-7, 2.631e-7, 2.988e-7,
2488 3.392e-7, 3.69e-7, 4.355e-7, 4.672e-7, 5.11e-7, 5.461e-7,
2489 5.828e-7, 6.233e-7, 6.509e-7, 6.672e-7, 6.969e-7, 7.104e-7,
2490 7.439e-7, 7.463e-7, 7.708e-7, 7.466e-7, 7.668e-7, 7.549e-7,
2491 7.586e-7, 7.384e-7, 7.439e-7, 7.785e-7, 7.915e-7, 8.31e-7,
2492 8.745e-7, 9.558e-7, 1.038e-6, 1.173e-6, 1.304e-6, 1.452e-6,
2493 1.671e-6, 1.931e-6, 2.239e-6, 2.578e-6, 3.032e-6, 3.334e-6,
2494 3.98e-6, 4.3e-6, 4.518e-6, 5.321e-6, 5.508e-6, 6.211e-6, 6.59e-6,
2495 7.046e-6, 7.555e-6, 7.558e-6, 7.875e-6, 8.319e-6, 8.433e-6,
2496 8.59e-6, 8.503e-6, 8.304e-6, 8.336e-6, 7.739e-6, 7.301e-6,
2497 6.827e-6, 6.078e-6, 5.551e-6, 4.762e-6, 4.224e-6, 3.538e-6,
2498 2.984e-6, 2.619e-6, 2.227e-6, 1.923e-6, 1.669e-6, 1.462e-6,
2499 1.294e-6, 1.155e-6, 1.033e-6, 9.231e-7, 8.238e-7, 7.36e-7,
2500 6.564e-7, 5.869e-7, 5.236e-7, 4.673e-7, 4.174e-7, 3.736e-7,
2501 3.33e-7, 2.976e-7, 2.657e-7, 2.367e-7, 2.106e-7, 1.877e-7,
2502 1.671e-7, 1.494e-7, 1.332e-7, 1.192e-7, 1.065e-7, 9.558e-8,
2503 8.586e-8, 7.717e-8, 6.958e-8, 6.278e-8, 5.666e-8, 5.121e-8,
2504 4.647e-8, 4.213e-8, 3.815e-8, 3.459e-8, 3.146e-8, 2.862e-8,
2505 2.604e-8, 2.375e-8, 2.162e-8, 1.981e-8, 1.817e-8, 1.67e-8,
2506 1.537e-8, 1.417e-8, 1.31e-8, 1.215e-8, 1.128e-8, 1.05e-8,
2507 9.793e-9, 9.158e-9, 8.586e-9, 8.068e-9, 7.595e-9, 7.166e-9,
2508 6.778e-9, 6.427e-9, 6.108e-9, 5.826e-9, 5.571e-9, 5.347e-9,
2509 5.144e-9, 4.968e-9, 4.822e-9, 4.692e-9, 4.589e-9, 4.506e-9,
2510 4.467e-9, 4.44e-9, 4.466e-9, 4.515e-9, 4.718e-9, 4.729e-9,
2511 4.937e-9, 5.249e-9, 5.466e-9, 5.713e-9, 6.03e-9, 6.436e-9,
2512 6.741e-9, 7.33e-9, 7.787e-9, 8.414e-9, 8.908e-9, 9.868e-9,
2513 1.069e-8, 1.158e-8, 1.253e-8, 1.3e-8, 1.409e-8, 1.47e-8,
2514 1.548e-8, 1.612e-8, 1.666e-8, 1.736e-8, 1.763e-8, 1.812e-8,
2515 1.852e-8, 1.923e-8, 1.897e-8, 1.893e-8, 1.888e-8, 1.868e-8,
2516 1.895e-8, 1.899e-8, 1.876e-8, 1.96e-8, 2.02e-8, 2.121e-8,
2517 2.239e-8, 2.379e-8, 2.526e-8, 2.766e-8, 2.994e-8, 3.332e-8,
2518 3.703e-8, 4.158e-8, 4.774e-8, 5.499e-8, 6.355e-8, 7.349e-8,
2519 8.414e-8, 9.846e-8, 1.143e-7, 1.307e-7, 1.562e-7, 1.817e-7,
2520 2.011e-7, 2.192e-7, 2.485e-7, 2.867e-7, 3.035e-7, 3.223e-7,
2521 3.443e-7, 3.617e-7, 3.793e-7, 3.793e-7, 3.839e-7, 4.081e-7,
2522 4.117e-7, 4.085e-7, 3.92e-7, 3.851e-7, 3.754e-7, 3.49e-7,
2523 3.229e-7, 2.978e-7, 2.691e-7, 2.312e-7, 2.029e-7, 1.721e-7,
2524 1.472e-7, 1.308e-7, 1.132e-7, 9.736e-8, 8.458e-8, 7.402e-8,
2525 6.534e-8, 5.811e-8, 5.235e-8, 4.762e-8, 4.293e-8, 3.896e-8,
2526 3.526e-8, 3.165e-8, 2.833e-8, 2.551e-8, 2.288e-8, 2.036e-8,
2527 1.82e-8, 1.626e-8, 1.438e-8, 1.299e-8, 1.149e-8, 1.03e-8,
2528 9.148e-9, 8.122e-9, 7.264e-9, 6.425e-9, 5.777e-9, 5.06e-9,
2529 4.502e-9, 4.013e-9, 3.567e-9, 3.145e-9, 2.864e-9, 2.553e-9,
2530 2.311e-9, 2.087e-9, 1.886e-9, 1.716e-9, 1.556e-9, 1.432e-9,
2531 1.311e-9, 1.202e-9, 1.104e-9, 1.013e-9, 9.293e-10, 8.493e-10,
2532 7.79e-10, 7.185e-10, 6.642e-10, 6.141e-10, 5.684e-10, 5.346e-10,
2533 5.032e-10, 4.725e-10, 4.439e-10, 4.176e-10, 3.93e-10, 3.714e-10,
2534 3.515e-10, 3.332e-10, 3.167e-10, 3.02e-10, 2.887e-10, 2.769e-10,
2535 2.665e-10, 2.578e-10, 2.503e-10, 2.436e-10, 2.377e-10, 2.342e-10,
2536 2.305e-10, 2.296e-10, 2.278e-10, 2.321e-10, 2.355e-10, 2.402e-10,
2537 2.478e-10, 2.67e-10, 2.848e-10, 2.982e-10, 3.263e-10, 3.438e-10,
2538 3.649e-10, 3.829e-10, 4.115e-10, 4.264e-10, 4.473e-10, 4.63e-10,
2539 4.808e-10, 4.995e-10, 5.142e-10, 5.313e-10, 5.318e-10, 5.358e-10,
2540 5.452e-10, 5.507e-10, 5.698e-10, 5.782e-10, 5.983e-10, 6.164e-10,
2541 6.532e-10, 6.811e-10, 7.624e-10, 8.302e-10, 9.067e-10, 9.937e-10,
2542 1.104e-9, 1.221e-9, 1.361e-9, 1.516e-9, 1.675e-9, 1.883e-9,
2543 2.101e-9, 2.349e-9, 2.614e-9, 2.92e-9, 3.305e-9, 3.724e-9,
2544 4.142e-9, 4.887e-9, 5.614e-9, 6.506e-9, 7.463e-9, 8.817e-9,
2545 9.849e-9, 1.187e-8, 1.321e-8, 1.474e-8, 1.698e-8, 1.794e-8,
2546 2.09e-8, 2.211e-8, 2.362e-8, 2.556e-8, 2.729e-8, 2.88e-8,
2547 3.046e-8, 3.167e-8, 3.367e-8, 3.457e-8, 3.59e-8, 3.711e-8,
2548 3.826e-8, 4.001e-8, 4.211e-8, 4.315e-8, 4.661e-8, 5.01e-8,
2549 5.249e-8, 5.84e-8, 6.628e-8, 7.512e-8, 8.253e-8, 9.722e-8,
2550 1.067e-7, 1.153e-7, 1.347e-7, 1.428e-7, 1.577e-7, 1.694e-7,
2551 1.833e-7, 1.938e-7, 2.108e-7, 2.059e-7, 2.157e-7, 2.185e-7,
2552 2.208e-7, 2.182e-7, 2.093e-7, 2.014e-7, 1.962e-7, 1.819e-7,
2553 1.713e-7, 1.51e-7, 1.34e-7, 1.154e-7, 9.89e-8, 8.88e-8, 7.673e-8,
2554 6.599e-8, 5.73e-8, 5.081e-8, 4.567e-8, 4.147e-8, 3.773e-8,
2555 3.46e-8, 3.194e-8, 2.953e-8, 2.759e-8, 2.594e-8, 2.442e-8,
2556 2.355e-8, 2.283e-8, 2.279e-8, 2.231e-8, 2.279e-8, 2.239e-8,
2557 2.21e-8, 2.309e-8, 2.293e-8, 2.352e-8, 2.415e-8, 2.43e-8,
2558 2.426e-8, 2.465e-8, 2.5e-8, 2.496e-8, 2.465e-8, 2.445e-8,
2559 2.383e-8, 2.299e-8, 2.165e-8, 2.113e-8, 1.968e-8, 1.819e-8,
2560 1.644e-8, 1.427e-8, 1.27e-8, 1.082e-8, 9.428e-9, 8.091e-9,
2561 6.958e-9, 5.988e-9, 5.246e-9, 4.601e-9, 4.098e-9, 3.664e-9,
2562 3.287e-9, 2.942e-9, 2.656e-9, 2.364e-9, 2.118e-9, 1.903e-9,
2563 1.703e-9, 1.525e-9, 1.365e-9, 1.229e-9, 1.107e-9, 9.96e-10,
2564 8.945e-10, 8.08e-10, 7.308e-10, 6.616e-10, 5.994e-10, 5.422e-10,
2565 4.929e-10, 4.478e-10, 4.07e-10, 3.707e-10, 3.379e-10, 3.087e-10,
2566 2.823e-10, 2.592e-10, 2.385e-10, 2.201e-10, 2.038e-10, 1.897e-10,
2567 1.774e-10, 1.667e-10, 1.577e-10, 1.502e-10, 1.437e-10, 1.394e-10,
2568 1.358e-10, 1.324e-10, 1.329e-10, 1.324e-10, 1.36e-10, 1.39e-10,
2569 1.424e-10, 1.544e-10, 1.651e-10, 1.817e-10, 1.984e-10, 2.195e-10,
2570 2.438e-10, 2.7e-10, 2.991e-10, 3.322e-10, 3.632e-10, 3.957e-10,
2571 4.36e-10, 4.701e-10, 5.03e-10, 5.381e-10, 5.793e-10, 6.19e-10,
2572 6.596e-10, 7.004e-10, 7.561e-10, 7.934e-10, 8.552e-10, 9.142e-10,
2573 9.57e-10, 1.027e-9, 1.097e-9, 1.193e-9, 1.334e-9, 1.47e-9,
2574 1.636e-9, 1.871e-9, 2.122e-9, 2.519e-9, 2.806e-9, 3.203e-9,
2575 3.846e-9, 4.362e-9, 5.114e-9, 5.643e-9, 6.305e-9, 6.981e-9,
2576 7.983e-9, 8.783e-9, 9.419e-9, 1.017e-8, 1.063e-8, 1.121e-8,
2577 1.13e-8, 1.201e-8, 1.225e-8, 1.232e-8, 1.223e-8, 1.177e-8,
2578 1.151e-8, 1.116e-8, 1.047e-8, 9.698e-9, 8.734e-9, 8.202e-9,
2579 7.041e-9, 6.074e-9, 5.172e-9, 4.468e-9, 3.913e-9, 3.414e-9,
2580 2.975e-9, 2.65e-9, 2.406e-9, 2.173e-9, 2.009e-9, 1.861e-9,
2581 1.727e-9, 1.612e-9, 1.514e-9, 1.43e-9, 1.362e-9, 1.333e-9,
2582 1.288e-9, 1.249e-9, 1.238e-9, 1.228e-9, 1.217e-9, 1.202e-9,
2583 1.209e-9, 1.177e-9, 1.157e-9, 1.165e-9, 1.142e-9, 1.131e-9,
2584 1.138e-9, 1.117e-9, 1.1e-9, 1.069e-9, 1.023e-9, 1.005e-9,
2585 9.159e-10, 8.863e-10, 7.865e-10, 7.153e-10, 6.247e-10, 5.846e-10,
2586 5.133e-10, 4.36e-10, 3.789e-10, 3.335e-10, 2.833e-10, 2.483e-10,
2587 2.155e-10, 1.918e-10, 1.709e-10, 1.529e-10, 1.374e-10, 1.235e-10,
2588 1.108e-10, 9.933e-11, 8.932e-11, 8.022e-11, 7.224e-11, 6.52e-11,
2589 5.896e-11, 5.328e-11, 4.813e-11, 4.365e-11, 3.961e-11, 3.594e-11,
2590 3.266e-11, 2.967e-11, 2.701e-11, 2.464e-11, 2.248e-11, 2.054e-11,
2591 1.878e-11, 1.721e-11, 1.579e-11, 1.453e-11, 1.341e-11, 1.241e-11,
2592 1.154e-11, 1.078e-11, 1.014e-11, 9.601e-12, 9.167e-12, 8.838e-12,
2593 8.614e-12, 8.493e-12, 8.481e-12, 8.581e-12, 8.795e-12, 9.131e-12,
2594 9.601e-12, 1.021e-11, 1.097e-11, 1.191e-11, 1.303e-11, 1.439e-11,
2595 1.601e-11, 1.778e-11, 1.984e-11, 2.234e-11, 2.474e-11, 2.766e-11,
2596 3.085e-11, 3.415e-11, 3.821e-11, 4.261e-11, 4.748e-11, 5.323e-11,
2597 5.935e-11, 6.619e-11, 7.418e-11, 8.294e-11, 9.26e-11, 1.039e-10,
2598 1.156e-10, 1.297e-10, 1.46e-10, 1.641e-10, 1.858e-10, 2.1e-10,
2599 2.383e-10, 2.724e-10, 3.116e-10, 3.538e-10, 4.173e-10, 4.727e-10,
2600 5.503e-10, 6.337e-10, 7.32e-10, 8.298e-10, 9.328e-10, 1.059e-9,
2601 1.176e-9, 1.328e-9, 1.445e-9, 1.593e-9, 1.77e-9, 1.954e-9,
2602 2.175e-9, 2.405e-9, 2.622e-9, 2.906e-9, 3.294e-9, 3.713e-9,
2603 3.98e-9, 4.384e-9, 4.987e-9, 5.311e-9, 5.874e-9, 6.337e-9,
2604 7.027e-9, 7.39e-9, 7.769e-9, 8.374e-9, 8.605e-9, 9.165e-9,
2605 9.415e-9, 9.511e-9, 9.704e-9, 9.588e-9, 9.45e-9, 9.086e-9,
2606 8.798e-9, 8.469e-9, 7.697e-9, 7.168e-9, 6.255e-9, 5.772e-9,
2607 4.97e-9, 4.271e-9, 3.653e-9, 3.154e-9, 2.742e-9, 2.435e-9,
2608 2.166e-9, 1.936e-9, 1.731e-9, 1.556e-9, 1.399e-9, 1.272e-9,
2609 1.157e-9, 1.066e-9, 9.844e-10, 9.258e-10, 8.787e-10, 8.421e-10,
2610 8.083e-10, 8.046e-10, 8.067e-10, 8.181e-10, 8.325e-10, 8.517e-10,
2611 9.151e-10, 9.351e-10, 9.677e-10, 1.071e-9, 1.126e-9, 1.219e-9,
2612 1.297e-9, 1.408e-9, 1.476e-9, 1.517e-9, 1.6e-9, 1.649e-9,
2613 1.678e-9, 1.746e-9, 1.742e-9, 1.728e-9, 1.699e-9, 1.655e-9,
2614 1.561e-9, 1.48e-9, 1.451e-9, 1.411e-9, 1.171e-9, 1.106e-9,
2615 9.714e-10, 8.523e-10, 7.346e-10, 6.241e-10, 5.371e-10, 4.704e-10,
2616 4.144e-10, 3.683e-10, 3.292e-10, 2.942e-10, 2.62e-10, 2.341e-10,
2617 2.104e-10, 1.884e-10, 1.7e-10, 1.546e-10, 1.394e-10, 1.265e-10,
2618 1.14e-10, 1.019e-10, 9.279e-11, 8.283e-11, 7.458e-11, 6.668e-11,
2619 5.976e-11, 5.33e-11, 4.794e-11, 4.289e-11, 3.841e-11, 3.467e-11,
2620 3.13e-11, 2.832e-11, 2.582e-11, 2.356e-11, 2.152e-11, 1.97e-11,
2621 1.808e-11, 1.664e-11, 1.539e-11, 1.434e-11, 1.344e-11, 1.269e-11,
2622 1.209e-11, 1.162e-11, 1.129e-11, 1.108e-11, 1.099e-11, 1.103e-11,
2623 1.119e-11, 1.148e-11, 1.193e-11, 1.252e-11, 1.329e-11, 1.421e-11,
2624 1.555e-11, 1.685e-11, 1.839e-11, 2.054e-11, 2.317e-11, 2.571e-11,
2625 2.839e-11, 3.171e-11, 3.49e-11, 3.886e-11, 4.287e-11, 4.645e-11,
2626 5.047e-11, 5.592e-11, 6.109e-11, 6.628e-11, 7.381e-11, 8.088e-11,
2627 8.966e-11, 1.045e-10, 1.12e-10, 1.287e-10, 1.486e-10, 1.662e-10,
2628 1.866e-10, 2.133e-10, 2.524e-10, 2.776e-10, 3.204e-10, 3.559e-10,
2629 4.028e-10, 4.448e-10, 4.882e-10, 5.244e-10, 5.605e-10, 6.018e-10,
2630 6.328e-10, 6.579e-10, 6.541e-10, 7.024e-10, 7.074e-10, 7.068e-10,
2631 7.009e-10, 6.698e-10, 6.545e-10, 6.209e-10, 5.834e-10, 5.412e-10,
2632 5.001e-10, 4.231e-10, 3.727e-10, 3.211e-10, 2.833e-10, 2.447e-10,
2633 2.097e-10, 1.843e-10, 1.639e-10, 1.449e-10, 1.27e-10, 1.161e-10,
2634 1.033e-10, 9.282e-11, 8.407e-11, 7.639e-11, 7.023e-11, 6.474e-11,
2635 6.142e-11, 5.76e-11, 5.568e-11, 5.472e-11, 5.39e-11, 5.455e-11,
2636 5.54e-11, 5.587e-11, 6.23e-11, 6.49e-11, 6.868e-11, 7.382e-11,
2637 8.022e-11, 8.372e-11, 9.243e-11, 1.004e-10, 1.062e-10, 1.13e-10,
2638 1.176e-10, 1.244e-10, 1.279e-10, 1.298e-10, 1.302e-10, 1.312e-10,
2639 1.295e-10, 1.244e-10, 1.211e-10, 1.167e-10, 1.098e-10, 9.927e-11,
2640 8.854e-11, 8.011e-11, 7.182e-11, 5.923e-11, 5.212e-11, 4.453e-11,
2641 3.832e-11, 3.371e-11, 2.987e-11, 2.651e-11, 2.354e-11, 2.093e-11,
2642 1.863e-11, 1.662e-11, 1.486e-11, 1.331e-11, 1.193e-11, 1.071e-11,
2643 9.628e-12, 8.66e-12, 7.801e-12, 7.031e-12, 6.347e-12, 5.733e-12,
2644 5.182e-12, 4.695e-12, 4.26e-12, 3.874e-12, 3.533e-12, 3.235e-12,
2645 2.979e-12, 2.76e-12, 2.579e-12, 2.432e-12, 2.321e-12, 2.246e-12,
2646 2.205e-12, 2.196e-12, 2.223e-12, 2.288e-12, 2.387e-12, 2.525e-12,
2647 2.704e-12, 2.925e-12, 3.191e-12, 3.508e-12, 3.876e-12, 4.303e-12,
2648 4.793e-12, 5.347e-12, 5.978e-12, 6.682e-12, 7.467e-12, 8.34e-12,
2649 9.293e-12, 1.035e-11, 1.152e-11, 1.285e-11, 1.428e-11, 1.586e-11,
2650 1.764e-11, 1.972e-11, 2.214e-11, 2.478e-11, 2.776e-11, 3.151e-11,
2651 3.591e-11, 4.103e-11, 4.66e-11, 5.395e-11, 6.306e-11, 7.172e-11,
2652 8.358e-11, 9.67e-11, 1.11e-10, 1.325e-10, 1.494e-10, 1.736e-10,
2653 2.007e-10, 2.296e-10, 2.608e-10, 3.004e-10, 3.361e-10, 3.727e-10,
2654 4.373e-10, 4.838e-10, 5.483e-10, 6.006e-10, 6.535e-10, 6.899e-10,
2655 7.687e-10, 8.444e-10, 8.798e-10, 9.135e-10, 9.532e-10, 9.757e-10,
2656 9.968e-10, 1.006e-9, 9.949e-10, 9.789e-10, 9.564e-10, 9.215e-10,
2657 8.51e-10, 8.394e-10, 7.707e-10, 7.152e-10, 6.274e-10, 5.598e-10,
2658 5.028e-10, 4.3e-10, 3.71e-10, 3.245e-10, 2.809e-10, 2.461e-10,
2659 2.154e-10, 1.91e-10, 1.685e-10, 1.487e-10, 1.313e-10, 1.163e-10,
2660 1.031e-10, 9.172e-11, 8.221e-11, 7.382e-11, 6.693e-11, 6.079e-11,
2661 5.581e-11, 5.167e-11, 4.811e-11, 4.506e-11, 4.255e-11, 4.083e-11,
2662 3.949e-11, 3.881e-11, 3.861e-11, 3.858e-11, 3.951e-11, 4.045e-11,
2663 4.24e-11, 4.487e-11, 4.806e-11, 5.133e-11, 5.518e-11, 5.919e-11,
2664 6.533e-11, 7.031e-11, 7.762e-11, 8.305e-11, 9.252e-11, 9.727e-11,
2665 1.045e-10, 1.117e-10, 1.2e-10, 1.275e-10, 1.341e-10, 1.362e-10,
2666 1.438e-10, 1.45e-10, 1.455e-10, 1.455e-10, 1.434e-10, 1.381e-10,
2667 1.301e-10, 1.276e-10, 1.163e-10, 1.089e-10, 9.911e-11, 8.943e-11,
2668 7.618e-11, 6.424e-11, 5.717e-11, 4.866e-11, 4.257e-11, 3.773e-11,
2669 3.331e-11, 2.958e-11, 2.629e-11, 2.316e-11, 2.073e-11, 1.841e-11,
2670 1.635e-11, 1.464e-11, 1.31e-11, 1.16e-11, 1.047e-11, 9.408e-12,
2671 8.414e-12, 7.521e-12, 6.705e-12, 5.993e-12, 5.371e-12, 4.815e-12,
2672 4.338e-12, 3.921e-12, 3.567e-12, 3.265e-12, 3.01e-12, 2.795e-12,
2673 2.613e-12, 2.464e-12, 2.346e-12, 2.256e-12, 2.195e-12, 2.165e-12,
2674 2.166e-12, 2.198e-12, 2.262e-12, 2.364e-12, 2.502e-12, 2.682e-12,
2675 2.908e-12, 3.187e-12, 3.533e-12, 3.946e-12, 4.418e-12, 5.013e-12,
2676 5.708e-12, 6.379e-12, 7.43e-12, 8.39e-12, 9.51e-12, 1.078e-11,
2677 1.259e-11, 1.438e-11, 1.63e-11, 1.814e-11, 2.055e-11, 2.348e-11,
2678 2.664e-11, 2.956e-11, 3.3e-11, 3.677e-11, 4.032e-11, 4.494e-11,
2679 4.951e-11, 5.452e-11, 6.014e-11, 6.5e-11, 6.915e-11, 7.45e-11,
2680 7.971e-11, 8.468e-11, 8.726e-11, 8.995e-11, 9.182e-11, 9.509e-11,
2681 9.333e-11, 9.386e-11, 9.457e-11, 9.21e-11, 9.019e-11, 8.68e-11,
2682 8.298e-11, 7.947e-11, 7.46e-11, 7.082e-11, 6.132e-11, 5.855e-11,
2683 5.073e-11, 4.464e-11, 3.825e-11, 3.375e-11, 2.911e-11, 2.535e-11,
2684 2.16e-11, 1.907e-11, 1.665e-11, 1.463e-11, 1.291e-11, 1.133e-11,
2685 9.997e-12, 8.836e-12, 7.839e-12, 6.943e-12, 6.254e-12, 5.6e-12,
2686 5.029e-12, 4.529e-12, 4.102e-12, 3.737e-12, 3.428e-12, 3.169e-12,
2687 2.959e-12, 2.798e-12, 2.675e-12, 2.582e-12, 2.644e-12, 2.557e-12,
2688 2.614e-12, 2.717e-12, 2.874e-12, 3.056e-12, 3.187e-12, 3.631e-12,
2689 3.979e-12, 4.248e-12, 4.817e-12, 5.266e-12, 5.836e-12, 6.365e-12,
2690 6.807e-12, 7.47e-12, 7.951e-12, 8.636e-12, 8.972e-12, 9.314e-12,
2691 9.445e-12, 1.003e-11, 1.013e-11, 9.937e-12, 9.729e-12, 9.064e-12,
2692 9.119e-12, 9.124e-12, 8.704e-12, 8.078e-12, 7.47e-12, 6.329e-12,
2693 5.674e-12, 4.808e-12, 4.119e-12, 3.554e-12, 3.103e-12, 2.731e-12,
2694 2.415e-12, 2.15e-12, 1.926e-12, 1.737e-12, 1.578e-12, 1.447e-12,
2695 1.34e-12, 1.255e-12, 1.191e-12, 1.146e-12, 1.121e-12, 1.114e-12,
2696 1.126e-12, 1.156e-12, 1.207e-12, 1.278e-12, 1.372e-12, 1.49e-12,
2697 1.633e-12, 1.805e-12, 2.01e-12, 2.249e-12, 2.528e-12, 2.852e-12,
2698 3.228e-12, 3.658e-12, 4.153e-12, 4.728e-12, 5.394e-12, 6.176e-12,
2699 7.126e-12, 8.188e-12, 9.328e-12, 1.103e-11, 1.276e-11, 1.417e-11,
2700 1.615e-11, 1.84e-11, 2.155e-11, 2.429e-11, 2.826e-11, 3.222e-11,
2701 3.664e-11, 4.14e-11, 4.906e-11, 5.536e-11, 6.327e-11, 7.088e-11,
2702 8.316e-11, 9.242e-11, 1.07e-10, 1.223e-10, 1.341e-10, 1.553e-10,
2703 1.703e-10, 1.9e-10, 2.022e-10, 2.233e-10, 2.345e-10, 2.438e-10,
2704 2.546e-10, 2.599e-10, 2.661e-10, 2.703e-10, 2.686e-10, 2.662e-10,
2705 2.56e-10, 2.552e-10, 2.378e-10, 2.252e-10, 2.146e-10, 1.885e-10,
2706 1.668e-10, 1.441e-10, 1.295e-10, 1.119e-10, 9.893e-11, 8.687e-11,
2707 7.678e-11, 6.685e-11, 5.879e-11, 5.127e-11, 4.505e-11, 3.997e-11,
2711 static const double h2ofrn[2001] = { .01095, .01126, .01205, .01322, .0143,
2712 .01506, .01548, .01534, .01486, .01373, .01262, .01134, .01001,
2713 .008702, .007475, .006481, .00548, .0046, .003833, .00311,
2714 .002543, .002049, .00168, .001374, .001046, 8.193e-4, 6.267e-4,
2715 4.968e-4, 3.924e-4, 2.983e-4, 2.477e-4, 1.997e-4, 1.596e-4,
2716 1.331e-4, 1.061e-4, 8.942e-5, 7.168e-5, 5.887e-5, 4.848e-5,
2717 3.817e-5, 3.17e-5, 2.579e-5, 2.162e-5, 1.768e-5, 1.49e-5,
2718 1.231e-5, 1.013e-5, 8.555e-6, 7.328e-6, 6.148e-6, 5.207e-6,
2719 4.387e-6, 3.741e-6, 3.22e-6, 2.753e-6, 2.346e-6, 1.985e-6,
2720 1.716e-6, 1.475e-6, 1.286e-6, 1.122e-6, 9.661e-7, 8.284e-7,
2721 7.057e-7, 6.119e-7, 5.29e-7, 4.571e-7, 3.948e-7, 3.432e-7,
2722 2.983e-7, 2.589e-7, 2.265e-7, 1.976e-7, 1.704e-7, 1.456e-7,
2723 1.26e-7, 1.101e-7, 9.648e-8, 8.415e-8, 7.34e-8, 6.441e-8,
2724 5.643e-8, 4.94e-8, 4.276e-8, 3.703e-8, 3.227e-8, 2.825e-8,
2725 2.478e-8, 2.174e-8, 1.898e-8, 1.664e-8, 1.458e-8, 1.278e-8,
2726 1.126e-8, 9.891e-9, 8.709e-9, 7.652e-9, 6.759e-9, 5.975e-9,
2727 5.31e-9, 4.728e-9, 4.214e-9, 3.792e-9, 3.463e-9, 3.226e-9,
2728 2.992e-9, 2.813e-9, 2.749e-9, 2.809e-9, 2.913e-9, 3.037e-9,
2729 3.413e-9, 3.738e-9, 4.189e-9, 4.808e-9, 5.978e-9, 7.088e-9,
2730 8.071e-9, 9.61e-9, 1.21e-8, 1.5e-8, 1.764e-8, 2.221e-8, 2.898e-8,
2731 3.948e-8, 5.068e-8, 6.227e-8, 7.898e-8, 1.033e-7, 1.437e-7,
2732 1.889e-7, 2.589e-7, 3.59e-7, 4.971e-7, 7.156e-7, 9.983e-7,
2733 1.381e-6, 1.929e-6, 2.591e-6, 3.453e-6, 4.57e-6, 5.93e-6,
2734 7.552e-6, 9.556e-6, 1.183e-5, 1.425e-5, 1.681e-5, 1.978e-5,
2735 2.335e-5, 2.668e-5, 3.022e-5, 3.371e-5, 3.715e-5, 3.967e-5,
2736 4.06e-5, 4.01e-5, 3.809e-5, 3.491e-5, 3.155e-5, 2.848e-5,
2737 2.678e-5, 2.66e-5, 2.811e-5, 3.071e-5, 3.294e-5, 3.459e-5,
2738 3.569e-5, 3.56e-5, 3.434e-5, 3.186e-5, 2.916e-5, 2.622e-5,
2739 2.275e-5, 1.918e-5, 1.62e-5, 1.373e-5, 1.182e-5, 1.006e-5,
2740 8.556e-6, 7.26e-6, 6.107e-6, 5.034e-6, 4.211e-6, 3.426e-6,
2741 2.865e-6, 2.446e-6, 1.998e-6, 1.628e-6, 1.242e-6, 1.005e-6,
2742 7.853e-7, 6.21e-7, 5.071e-7, 4.156e-7, 3.548e-7, 2.825e-7,
2743 2.261e-7, 1.916e-7, 1.51e-7, 1.279e-7, 1.059e-7, 9.14e-8,
2744 7.707e-8, 6.17e-8, 5.311e-8, 4.263e-8, 3.518e-8, 2.961e-8,
2745 2.457e-8, 2.119e-8, 1.712e-8, 1.439e-8, 1.201e-8, 1.003e-8,
2746 8.564e-9, 7.199e-9, 6.184e-9, 5.206e-9, 4.376e-9, 3.708e-9,
2747 3.157e-9, 2.725e-9, 2.361e-9, 2.074e-9, 1.797e-9, 1.562e-9,
2748 1.364e-9, 1.196e-9, 1.042e-9, 8.862e-10, 7.648e-10, 6.544e-10,
2749 5.609e-10, 4.791e-10, 4.108e-10, 3.531e-10, 3.038e-10, 2.618e-10,
2750 2.268e-10, 1.969e-10, 1.715e-10, 1.496e-10, 1.308e-10, 1.147e-10,
2751 1.008e-10, 8.894e-11, 7.885e-11, 7.031e-11, 6.355e-11, 5.854e-11,
2752 5.534e-11, 5.466e-11, 5.725e-11, 6.447e-11, 7.943e-11, 1.038e-10,
2753 1.437e-10, 2.04e-10, 2.901e-10, 4.051e-10, 5.556e-10, 7.314e-10,
2754 9.291e-10, 1.134e-9, 1.321e-9, 1.482e-9, 1.596e-9, 1.669e-9,
2755 1.715e-9, 1.762e-9, 1.817e-9, 1.828e-9, 1.848e-9, 1.873e-9,
2756 1.902e-9, 1.894e-9, 1.864e-9, 1.841e-9, 1.797e-9, 1.704e-9,
2757 1.559e-9, 1.382e-9, 1.187e-9, 1.001e-9, 8.468e-10, 7.265e-10,
2758 6.521e-10, 6.381e-10, 6.66e-10, 7.637e-10, 9.705e-10, 1.368e-9,
2759 1.856e-9, 2.656e-9, 3.954e-9, 5.96e-9, 8.72e-9, 1.247e-8,
2760 1.781e-8, 2.491e-8, 3.311e-8, 4.272e-8, 5.205e-8, 6.268e-8,
2761 7.337e-8, 8.277e-8, 9.185e-8, 1.004e-7, 1.091e-7, 1.159e-7,
2762 1.188e-7, 1.175e-7, 1.124e-7, 1.033e-7, 9.381e-8, 8.501e-8,
2763 7.956e-8, 7.894e-8, 8.331e-8, 9.102e-8, 9.836e-8, 1.035e-7,
2764 1.064e-7, 1.06e-7, 1.032e-7, 9.808e-8, 9.139e-8, 8.442e-8,
2765 7.641e-8, 6.881e-8, 6.161e-8, 5.404e-8, 4.804e-8, 4.446e-8,
2766 4.328e-8, 4.259e-8, 4.421e-8, 4.673e-8, 4.985e-8, 5.335e-8,
2767 5.796e-8, 6.542e-8, 7.714e-8, 8.827e-8, 1.04e-7, 1.238e-7,
2768 1.499e-7, 1.829e-7, 2.222e-7, 2.689e-7, 3.303e-7, 3.981e-7,
2769 4.84e-7, 5.91e-7, 7.363e-7, 9.087e-7, 1.139e-6, 1.455e-6,
2770 1.866e-6, 2.44e-6, 3.115e-6, 3.941e-6, 4.891e-6, 5.992e-6,
2771 7.111e-6, 8.296e-6, 9.21e-6, 9.987e-6, 1.044e-5, 1.073e-5,
2772 1.092e-5, 1.106e-5, 1.138e-5, 1.171e-5, 1.186e-5, 1.186e-5,
2773 1.179e-5, 1.166e-5, 1.151e-5, 1.16e-5, 1.197e-5, 1.241e-5,
2774 1.268e-5, 1.26e-5, 1.184e-5, 1.063e-5, 9.204e-6, 7.584e-6,
2775 6.053e-6, 4.482e-6, 3.252e-6, 2.337e-6, 1.662e-6, 1.18e-6,
2776 8.15e-7, 5.95e-7, 4.354e-7, 3.302e-7, 2.494e-7, 1.93e-7,
2777 1.545e-7, 1.25e-7, 1.039e-7, 8.602e-8, 7.127e-8, 5.897e-8,
2778 4.838e-8, 4.018e-8, 3.28e-8, 2.72e-8, 2.307e-8, 1.972e-8,
2779 1.654e-8, 1.421e-8, 1.174e-8, 1.004e-8, 8.739e-9, 7.358e-9,
2780 6.242e-9, 5.303e-9, 4.567e-9, 3.94e-9, 3.375e-9, 2.864e-9,
2781 2.422e-9, 2.057e-9, 1.75e-9, 1.505e-9, 1.294e-9, 1.101e-9,
2782 9.401e-10, 8.018e-10, 6.903e-10, 5.965e-10, 5.087e-10, 4.364e-10,
2783 3.759e-10, 3.247e-10, 2.809e-10, 2.438e-10, 2.123e-10, 1.853e-10,
2784 1.622e-10, 1.426e-10, 1.26e-10, 1.125e-10, 1.022e-10, 9.582e-11,
2785 9.388e-11, 9.801e-11, 1.08e-10, 1.276e-10, 1.551e-10, 1.903e-10,
2786 2.291e-10, 2.724e-10, 3.117e-10, 3.4e-10, 3.562e-10, 3.625e-10,
2787 3.619e-10, 3.429e-10, 3.221e-10, 2.943e-10, 2.645e-10, 2.338e-10,
2788 2.062e-10, 1.901e-10, 1.814e-10, 1.827e-10, 1.906e-10, 1.984e-10,
2789 2.04e-10, 2.068e-10, 2.075e-10, 2.018e-10, 1.959e-10, 1.897e-10,
2790 1.852e-10, 1.791e-10, 1.696e-10, 1.634e-10, 1.598e-10, 1.561e-10,
2791 1.518e-10, 1.443e-10, 1.377e-10, 1.346e-10, 1.342e-10, 1.375e-10,
2792 1.525e-10, 1.767e-10, 2.108e-10, 2.524e-10, 2.981e-10, 3.477e-10,
2793 4.262e-10, 5.326e-10, 6.646e-10, 8.321e-10, 1.069e-9, 1.386e-9,
2794 1.743e-9, 2.216e-9, 2.808e-9, 3.585e-9, 4.552e-9, 5.907e-9,
2795 7.611e-9, 9.774e-9, 1.255e-8, 1.666e-8, 2.279e-8, 3.221e-8,
2796 4.531e-8, 6.4e-8, 9.187e-8, 1.295e-7, 1.825e-7, 2.431e-7,
2797 3.181e-7, 4.009e-7, 4.941e-7, 5.88e-7, 6.623e-7, 7.155e-7,
2798 7.451e-7, 7.594e-7, 7.541e-7, 7.467e-7, 7.527e-7, 7.935e-7,
2799 8.461e-7, 8.954e-7, 9.364e-7, 9.843e-7, 1.024e-6, 1.05e-6,
2800 1.059e-6, 1.074e-6, 1.072e-6, 1.043e-6, 9.789e-7, 8.803e-7,
2801 7.662e-7, 6.378e-7, 5.133e-7, 3.958e-7, 2.914e-7, 2.144e-7,
2802 1.57e-7, 1.14e-7, 8.47e-8, 6.2e-8, 4.657e-8, 3.559e-8, 2.813e-8,
2803 2.222e-8, 1.769e-8, 1.391e-8, 1.125e-8, 9.186e-9, 7.704e-9,
2804 6.447e-9, 5.381e-9, 4.442e-9, 3.669e-9, 3.057e-9, 2.564e-9,
2805 2.153e-9, 1.784e-9, 1.499e-9, 1.281e-9, 1.082e-9, 9.304e-10,
2806 8.169e-10, 6.856e-10, 5.866e-10, 5.043e-10, 4.336e-10, 3.731e-10,
2807 3.175e-10, 2.745e-10, 2.374e-10, 2.007e-10, 1.737e-10, 1.508e-10,
2808 1.302e-10, 1.13e-10, 9.672e-11, 8.375e-11, 7.265e-11, 6.244e-11,
2809 5.343e-11, 4.654e-11, 3.975e-11, 3.488e-11, 3.097e-11, 2.834e-11,
2810 2.649e-11, 2.519e-11, 2.462e-11, 2.443e-11, 2.44e-11, 2.398e-11,
2811 2.306e-11, 2.183e-11, 2.021e-11, 1.821e-11, 1.599e-11, 1.403e-11,
2812 1.196e-11, 1.023e-11, 8.728e-12, 7.606e-12, 6.941e-12, 6.545e-12,
2813 6.484e-12, 6.6e-12, 6.718e-12, 6.785e-12, 6.746e-12, 6.724e-12,
2814 6.764e-12, 6.995e-12, 7.144e-12, 7.32e-12, 7.33e-12, 7.208e-12,
2815 6.789e-12, 6.09e-12, 5.337e-12, 4.62e-12, 4.037e-12, 3.574e-12,
2816 3.311e-12, 3.346e-12, 3.566e-12, 3.836e-12, 4.076e-12, 4.351e-12,
2817 4.691e-12, 5.114e-12, 5.427e-12, 6.167e-12, 7.436e-12, 8.842e-12,
2818 1.038e-11, 1.249e-11, 1.54e-11, 1.915e-11, 2.48e-11, 3.256e-11,
2819 4.339e-11, 5.611e-11, 7.519e-11, 1.037e-10, 1.409e-10, 1.883e-10,
2820 2.503e-10, 3.38e-10, 4.468e-10, 5.801e-10, 7.335e-10, 8.98e-10,
2821 1.11e-9, 1.363e-9, 1.677e-9, 2.104e-9, 2.681e-9, 3.531e-9,
2822 4.621e-9, 6.106e-9, 8.154e-9, 1.046e-8, 1.312e-8, 1.607e-8,
2823 1.948e-8, 2.266e-8, 2.495e-8, 2.655e-8, 2.739e-8, 2.739e-8,
2824 2.662e-8, 2.589e-8, 2.59e-8, 2.664e-8, 2.833e-8, 3.023e-8,
2825 3.305e-8, 3.558e-8, 3.793e-8, 3.961e-8, 4.056e-8, 4.102e-8,
2826 4.025e-8, 3.917e-8, 3.706e-8, 3.493e-8, 3.249e-8, 3.096e-8,
2827 3.011e-8, 3.111e-8, 3.395e-8, 3.958e-8, 4.875e-8, 6.066e-8,
2828 7.915e-8, 1.011e-7, 1.3e-7, 1.622e-7, 2.003e-7, 2.448e-7,
2829 2.863e-7, 3.317e-7, 3.655e-7, 3.96e-7, 4.098e-7, 4.168e-7,
2830 4.198e-7, 4.207e-7, 4.289e-7, 4.384e-7, 4.471e-7, 4.524e-7,
2831 4.574e-7, 4.633e-7, 4.785e-7, 5.028e-7, 5.371e-7, 5.727e-7,
2832 5.955e-7, 5.998e-7, 5.669e-7, 5.082e-7, 4.397e-7, 3.596e-7,
2833 2.814e-7, 2.074e-7, 1.486e-7, 1.057e-7, 7.25e-8, 4.946e-8,
2834 3.43e-8, 2.447e-8, 1.793e-8, 1.375e-8, 1.096e-8, 9.091e-9,
2835 7.709e-9, 6.631e-9, 5.714e-9, 4.886e-9, 4.205e-9, 3.575e-9,
2836 3.07e-9, 2.631e-9, 2.284e-9, 2.002e-9, 1.745e-9, 1.509e-9,
2837 1.284e-9, 1.084e-9, 9.163e-10, 7.663e-10, 6.346e-10, 5.283e-10,
2838 4.354e-10, 3.59e-10, 2.982e-10, 2.455e-10, 2.033e-10, 1.696e-10,
2839 1.432e-10, 1.211e-10, 1.02e-10, 8.702e-11, 7.38e-11, 6.293e-11,
2840 5.343e-11, 4.532e-11, 3.907e-11, 3.365e-11, 2.945e-11, 2.558e-11,
2841 2.192e-11, 1.895e-11, 1.636e-11, 1.42e-11, 1.228e-11, 1.063e-11,
2842 9.348e-12, 8.2e-12, 7.231e-12, 6.43e-12, 5.702e-12, 5.052e-12,
2843 4.469e-12, 4e-12, 3.679e-12, 3.387e-12, 3.197e-12, 3.158e-12,
2844 3.327e-12, 3.675e-12, 4.292e-12, 5.437e-12, 7.197e-12, 1.008e-11,
2845 1.437e-11, 2.035e-11, 2.905e-11, 4.062e-11, 5.528e-11, 7.177e-11,
2846 9.064e-11, 1.109e-10, 1.297e-10, 1.473e-10, 1.652e-10, 1.851e-10,
2847 2.079e-10, 2.313e-10, 2.619e-10, 2.958e-10, 3.352e-10, 3.796e-10,
2848 4.295e-10, 4.923e-10, 5.49e-10, 5.998e-10, 6.388e-10, 6.645e-10,
2849 6.712e-10, 6.549e-10, 6.38e-10, 6.255e-10, 6.253e-10, 6.459e-10,
2850 6.977e-10, 7.59e-10, 8.242e-10, 8.92e-10, 9.403e-10, 9.701e-10,
2851 9.483e-10, 9.135e-10, 8.617e-10, 7.921e-10, 7.168e-10, 6.382e-10,
2852 5.677e-10, 5.045e-10, 4.572e-10, 4.312e-10, 4.145e-10, 4.192e-10,
2853 4.541e-10, 5.368e-10, 6.771e-10, 8.962e-10, 1.21e-9, 1.659e-9,
2854 2.33e-9, 3.249e-9, 4.495e-9, 5.923e-9, 7.642e-9, 9.607e-9,
2855 1.178e-8, 1.399e-8, 1.584e-8, 1.73e-8, 1.816e-8, 1.87e-8,
2856 1.868e-8, 1.87e-8, 1.884e-8, 1.99e-8, 2.15e-8, 2.258e-8,
2857 2.364e-8, 2.473e-8, 2.602e-8, 2.689e-8, 2.731e-8, 2.816e-8,
2858 2.859e-8, 2.839e-8, 2.703e-8, 2.451e-8, 2.149e-8, 1.787e-8,
2859 1.449e-8, 1.111e-8, 8.282e-9, 6.121e-9, 4.494e-9, 3.367e-9,
2860 2.487e-9, 1.885e-9, 1.503e-9, 1.249e-9, 1.074e-9, 9.427e-10,
2861 8.439e-10, 7.563e-10, 6.772e-10, 6.002e-10, 5.254e-10, 4.588e-10,
2862 3.977e-10, 3.449e-10, 3.003e-10, 2.624e-10, 2.335e-10, 2.04e-10,
2863 1.771e-10, 1.534e-10, 1.296e-10, 1.097e-10, 9.173e-11, 7.73e-11,
2864 6.547e-11, 5.191e-11, 4.198e-11, 3.361e-11, 2.732e-11, 2.244e-11,
2865 1.791e-11, 1.509e-11, 1.243e-11, 1.035e-11, 8.969e-12, 7.394e-12,
2866 6.323e-12, 5.282e-12, 4.543e-12, 3.752e-12, 3.14e-12, 2.6e-12,
2867 2.194e-12, 1.825e-12, 1.511e-12, 1.245e-12, 1.024e-12, 8.539e-13,
2868 7.227e-13, 6.102e-13, 5.189e-13, 4.43e-13, 3.774e-13, 3.236e-13,
2869 2.8e-13, 2.444e-13, 2.156e-13, 1.932e-13, 1.775e-13, 1.695e-13,
2870 1.672e-13, 1.704e-13, 1.825e-13, 2.087e-13, 2.614e-13, 3.377e-13,
2871 4.817e-13, 6.989e-13, 1.062e-12, 1.562e-12, 2.288e-12, 3.295e-12,
2872 4.55e-12, 5.965e-12, 7.546e-12, 9.395e-12, 1.103e-11, 1.228e-11,
2873 1.318e-11, 1.38e-11, 1.421e-11, 1.39e-11, 1.358e-11, 1.336e-11,
2874 1.342e-11, 1.356e-11, 1.424e-11, 1.552e-11, 1.73e-11, 1.951e-11,
2875 2.128e-11, 2.249e-11, 2.277e-11, 2.226e-11, 2.111e-11, 1.922e-11,
2876 1.775e-11, 1.661e-11, 1.547e-11, 1.446e-11, 1.323e-11, 1.21e-11,
2877 1.054e-11, 9.283e-12, 8.671e-12, 8.67e-12, 9.429e-12, 1.062e-11,
2878 1.255e-11, 1.506e-11, 1.818e-11, 2.26e-11, 2.831e-11, 3.723e-11,
2879 5.092e-11, 6.968e-11, 9.826e-11, 1.349e-10, 1.87e-10, 2.58e-10,
2880 3.43e-10, 4.424e-10, 5.521e-10, 6.812e-10, 8.064e-10, 9.109e-10,
2881 9.839e-10, 1.028e-9, 1.044e-9, 1.029e-9, 1.005e-9, 1.002e-9,
2882 1.038e-9, 1.122e-9, 1.233e-9, 1.372e-9, 1.524e-9, 1.665e-9,
2883 1.804e-9, 1.908e-9, 2.015e-9, 2.117e-9, 2.219e-9, 2.336e-9,
2884 2.531e-9, 2.805e-9, 3.189e-9, 3.617e-9, 4.208e-9, 4.911e-9,
2885 5.619e-9, 6.469e-9, 7.188e-9, 7.957e-9, 8.503e-9, 9.028e-9,
2886 9.571e-9, 9.99e-9, 1.055e-8, 1.102e-8, 1.132e-8, 1.141e-8,
2887 1.145e-8, 1.145e-8, 1.176e-8, 1.224e-8, 1.304e-8, 1.388e-8,
2888 1.445e-8, 1.453e-8, 1.368e-8, 1.22e-8, 1.042e-8, 8.404e-9,
2889 6.403e-9, 4.643e-9, 3.325e-9, 2.335e-9, 1.638e-9, 1.19e-9,
2890 9.161e-10, 7.412e-10, 6.226e-10, 5.516e-10, 5.068e-10, 4.831e-10,
2891 4.856e-10, 5.162e-10, 5.785e-10, 6.539e-10, 7.485e-10, 8.565e-10,
2892 9.534e-10, 1.052e-9, 1.115e-9, 1.173e-9, 1.203e-9, 1.224e-9,
2893 1.243e-9, 1.248e-9, 1.261e-9, 1.265e-9, 1.25e-9, 1.217e-9,
2894 1.176e-9, 1.145e-9, 1.153e-9, 1.199e-9, 1.278e-9, 1.366e-9,
2895 1.426e-9, 1.444e-9, 1.365e-9, 1.224e-9, 1.051e-9, 8.539e-10,
2896 6.564e-10, 4.751e-10, 3.404e-10, 2.377e-10, 1.631e-10, 1.114e-10,
2897 7.87e-11, 5.793e-11, 4.284e-11, 3.3e-11, 2.62e-11, 2.152e-11,
2898 1.777e-11, 1.496e-11, 1.242e-11, 1.037e-11, 8.725e-12, 7.004e-12,
2899 5.718e-12, 4.769e-12, 3.952e-12, 3.336e-12, 2.712e-12, 2.213e-12,
2900 1.803e-12, 1.492e-12, 1.236e-12, 1.006e-12, 8.384e-13, 7.063e-13,
2901 5.879e-13, 4.93e-13, 4.171e-13, 3.569e-13, 3.083e-13, 2.688e-13,
2902 2.333e-13, 2.035e-13, 1.82e-13, 1.682e-13, 1.635e-13, 1.674e-13,
2903 1.769e-13, 2.022e-13, 2.485e-13, 3.127e-13, 4.25e-13, 5.928e-13,
2904 8.514e-13, 1.236e-12, 1.701e-12, 2.392e-12, 3.231e-12, 4.35e-12,
2905 5.559e-12, 6.915e-12, 8.519e-12, 1.013e-11, 1.146e-11, 1.24e-11,
2906 1.305e-11, 1.333e-11, 1.318e-11, 1.263e-11, 1.238e-11, 1.244e-11,
2907 1.305e-11, 1.432e-11, 1.623e-11, 1.846e-11, 2.09e-11, 2.328e-11,
2908 2.526e-11, 2.637e-11, 2.702e-11, 2.794e-11, 2.889e-11, 2.989e-11,
2909 3.231e-11, 3.68e-11, 4.375e-11, 5.504e-11, 7.159e-11, 9.502e-11,
2910 1.279e-10, 1.645e-10, 2.098e-10, 2.618e-10, 3.189e-10, 3.79e-10,
2911 4.303e-10, 4.753e-10, 5.027e-10, 5.221e-10, 5.293e-10, 5.346e-10,
2912 5.467e-10, 5.796e-10, 6.2e-10, 6.454e-10, 6.705e-10, 6.925e-10,
2913 7.233e-10, 7.35e-10, 7.538e-10, 7.861e-10, 8.077e-10, 8.132e-10,
2914 7.749e-10, 7.036e-10, 6.143e-10, 5.093e-10, 4.089e-10, 3.092e-10,
2915 2.299e-10, 1.705e-10, 1.277e-10, 9.723e-11, 7.533e-11, 6.126e-11,
2916 5.154e-11, 4.428e-11, 3.913e-11, 3.521e-11, 3.297e-11, 3.275e-11,
2917 3.46e-11, 3.798e-11, 4.251e-11, 4.745e-11, 5.232e-11, 5.606e-11,
2918 5.82e-11, 5.88e-11, 5.79e-11, 5.661e-11, 5.491e-11, 5.366e-11,
2919 5.341e-11, 5.353e-11, 5.336e-11, 5.293e-11, 5.248e-11, 5.235e-11,
2920 5.208e-11, 5.322e-11, 5.521e-11, 5.725e-11, 5.827e-11, 5.685e-11,
2921 5.245e-11, 4.612e-11, 3.884e-11, 3.129e-11, 2.404e-11, 1.732e-11,
2922 1.223e-11, 8.574e-12, 5.888e-12, 3.986e-12, 2.732e-12, 1.948e-12,
2923 1.414e-12, 1.061e-12, 8.298e-13, 6.612e-13, 5.413e-13, 4.472e-13,
2924 3.772e-13, 3.181e-13, 2.645e-13, 2.171e-13, 1.778e-13, 1.464e-13,
2925 1.183e-13, 9.637e-14, 7.991e-14, 6.668e-14, 5.57e-14, 4.663e-14,
2926 3.848e-14, 3.233e-14, 2.706e-14, 2.284e-14, 1.944e-14, 1.664e-14,
2927 1.43e-14, 1.233e-14, 1.066e-14, 9.234e-15, 8.023e-15, 6.993e-15,
2928 6.119e-15, 5.384e-15, 4.774e-15, 4.283e-15, 3.916e-15, 3.695e-15,
2929 3.682e-15, 4.004e-15, 4.912e-15, 6.853e-15, 1.056e-14, 1.712e-14,
2930 2.804e-14, 4.516e-14, 7.113e-14, 1.084e-13, 1.426e-13, 1.734e-13,
2931 1.978e-13, 2.194e-13, 2.388e-13, 2.489e-13, 2.626e-13, 2.865e-13,
2932 3.105e-13, 3.387e-13, 3.652e-13, 3.984e-13, 4.398e-13, 4.906e-13,
2933 5.55e-13, 6.517e-13, 7.813e-13, 9.272e-13, 1.164e-12, 1.434e-12,
2934 1.849e-12, 2.524e-12, 3.328e-12, 4.523e-12, 6.108e-12, 8.207e-12,
2935 1.122e-11, 1.477e-11, 1.9e-11, 2.412e-11, 2.984e-11, 3.68e-11,
2936 4.353e-11, 4.963e-11, 5.478e-11, 5.903e-11, 6.233e-11, 6.483e-11,
2937 6.904e-11, 7.569e-11, 8.719e-11, 1.048e-10, 1.278e-10, 1.557e-10,
2938 1.869e-10, 2.218e-10, 2.61e-10, 2.975e-10, 3.371e-10, 3.746e-10,
2939 4.065e-10, 4.336e-10, 4.503e-10, 4.701e-10, 4.8e-10, 4.917e-10,
2940 5.038e-10, 5.128e-10, 5.143e-10, 5.071e-10, 5.019e-10, 5.025e-10,
2941 5.183e-10, 5.496e-10, 5.877e-10, 6.235e-10, 6.42e-10, 6.234e-10,
2942 5.698e-10, 4.916e-10, 4.022e-10, 3.126e-10, 2.282e-10, 1.639e-10,
2943 1.142e-10, 7.919e-11, 5.69e-11, 4.313e-11, 3.413e-11, 2.807e-11,
2944 2.41e-11, 2.166e-11, 2.024e-11, 1.946e-11, 1.929e-11, 1.963e-11,
2945 2.035e-11, 2.162e-11, 2.305e-11, 2.493e-11, 2.748e-11, 3.048e-11,
2946 3.413e-11, 3.754e-11, 4.155e-11, 4.635e-11, 5.11e-11, 5.734e-11,
2947 6.338e-11, 6.99e-11, 7.611e-11, 8.125e-11, 8.654e-11, 8.951e-11,
2948 9.182e-11, 9.31e-11, 9.273e-11, 9.094e-11, 8.849e-11, 8.662e-11,
2949 8.67e-11, 8.972e-11, 9.566e-11, 1.025e-10, 1.083e-10, 1.111e-10,
2950 1.074e-10, 9.771e-11, 8.468e-11, 6.958e-11, 5.47e-11, 4.04e-11,
2951 2.94e-11, 2.075e-11, 1.442e-11, 1.01e-11, 7.281e-12, 5.409e-12,
2952 4.138e-12, 3.304e-12, 2.784e-12, 2.473e-12, 2.273e-12, 2.186e-12,
2953 2.118e-12, 2.066e-12, 1.958e-12, 1.818e-12, 1.675e-12, 1.509e-12,
2954 1.349e-12, 1.171e-12, 9.838e-13, 8.213e-13, 6.765e-13, 5.378e-13,
2955 4.161e-13, 3.119e-13, 2.279e-13, 1.637e-13, 1.152e-13, 8.112e-14,
2956 5.919e-14, 4.47e-14, 3.492e-14, 2.811e-14, 2.319e-14, 1.948e-14,
2957 1.66e-14, 1.432e-14, 1.251e-14, 1.109e-14, 1.006e-14, 9.45e-15,
2958 9.384e-15, 1.012e-14, 1.216e-14, 1.636e-14, 2.305e-14, 3.488e-14,
2959 5.572e-14, 8.479e-14, 1.265e-13, 1.905e-13, 2.73e-13, 3.809e-13,
2960 4.955e-13, 6.303e-13, 7.861e-13, 9.427e-13, 1.097e-12, 1.212e-12,
2961 1.328e-12, 1.415e-12, 1.463e-12, 1.495e-12, 1.571e-12, 1.731e-12,
2962 1.981e-12, 2.387e-12, 2.93e-12, 3.642e-12, 4.584e-12, 5.822e-12,
2963 7.278e-12, 9.193e-12, 1.135e-11, 1.382e-11, 1.662e-11, 1.958e-11,
2964 2.286e-11, 2.559e-11, 2.805e-11, 2.988e-11, 3.106e-11, 3.182e-11,
2965 3.2e-11, 3.258e-11, 3.362e-11, 3.558e-11, 3.688e-11, 3.8e-11,
2966 3.929e-11, 4.062e-11, 4.186e-11, 4.293e-11, 4.48e-11, 4.643e-11,
2967 4.704e-11, 4.571e-11, 4.206e-11, 3.715e-11, 3.131e-11, 2.541e-11,
2968 1.978e-11, 1.508e-11, 1.146e-11, 8.7e-12, 6.603e-12, 5.162e-12,
2969 4.157e-12, 3.408e-12, 2.829e-12, 2.405e-12, 2.071e-12, 1.826e-12,
2970 1.648e-12, 1.542e-12, 1.489e-12, 1.485e-12, 1.493e-12, 1.545e-12,
2971 1.637e-12, 1.814e-12, 2.061e-12, 2.312e-12, 2.651e-12, 3.03e-12,
2972 3.46e-12, 3.901e-12, 4.306e-12, 4.721e-12, 5.008e-12, 5.281e-12,
2973 5.541e-12, 5.791e-12, 6.115e-12, 6.442e-12, 6.68e-12, 6.791e-12,
2974 6.831e-12, 6.839e-12, 6.946e-12, 7.128e-12, 7.537e-12, 8.036e-12,
2975 8.392e-12, 8.526e-12, 8.11e-12, 7.325e-12, 6.329e-12, 5.183e-12,
2976 4.081e-12, 2.985e-12, 2.141e-12, 1.492e-12, 1.015e-12, 6.684e-13,
2977 4.414e-13, 2.987e-13, 2.038e-13, 1.391e-13, 9.86e-14, 7.24e-14,
2978 5.493e-14, 4.288e-14, 3.427e-14, 2.787e-14, 2.296e-14, 1.909e-14,
2979 1.598e-14, 1.344e-14, 1.135e-14, 9.616e-15, 8.169e-15, 6.957e-15,
2980 5.938e-15, 5.08e-15, 4.353e-15, 3.738e-15, 3.217e-15, 2.773e-15,
2981 2.397e-15, 2.077e-15, 1.805e-15, 1.575e-15, 1.382e-15, 1.221e-15,
2982 1.09e-15, 9.855e-16, 9.068e-16, 8.537e-16, 8.27e-16, 8.29e-16,
2983 8.634e-16, 9.359e-16, 1.055e-15, 1.233e-15, 1.486e-15, 1.839e-15,
2984 2.326e-15, 2.998e-15, 3.934e-15, 5.256e-15, 7.164e-15, 9.984e-15,
2985 1.427e-14, 2.099e-14, 3.196e-14, 5.121e-14, 7.908e-14, 1.131e-13,
2986 1.602e-13, 2.239e-13, 3.075e-13, 4.134e-13, 5.749e-13, 7.886e-13,
2987 1.071e-12, 1.464e-12, 2.032e-12, 2.8e-12, 3.732e-12, 4.996e-12,
2988 6.483e-12, 8.143e-12, 1.006e-11, 1.238e-11, 1.484e-11, 1.744e-11,
2989 2.02e-11, 2.274e-11, 2.562e-11, 2.848e-11, 3.191e-11, 3.617e-11,
2990 4.081e-11, 4.577e-11, 4.937e-11, 5.204e-11, 5.401e-11, 5.462e-11,
2991 5.507e-11, 5.51e-11, 5.605e-11, 5.686e-11, 5.739e-11, 5.766e-11,
2992 5.74e-11, 5.754e-11, 5.761e-11, 5.777e-11, 5.712e-11, 5.51e-11,
2993 5.088e-11, 4.438e-11, 3.728e-11, 2.994e-11, 2.305e-11, 1.715e-11,
2994 1.256e-11, 9.208e-12, 6.745e-12, 5.014e-12, 3.785e-12, 2.9e-12,
2995 2.239e-12, 1.757e-12, 1.414e-12, 1.142e-12, 9.482e-13, 8.01e-13,
2996 6.961e-13, 6.253e-13, 5.735e-13, 5.433e-13, 5.352e-13, 5.493e-13,
2997 5.706e-13, 6.068e-13, 6.531e-13, 7.109e-13, 7.767e-13, 8.59e-13,
2998 9.792e-13, 1.142e-12, 1.371e-12, 1.65e-12, 1.957e-12, 2.302e-12,
2999 2.705e-12, 3.145e-12, 3.608e-12, 4.071e-12, 4.602e-12, 5.133e-12,
3000 5.572e-12, 5.987e-12, 6.248e-12, 6.533e-12, 6.757e-12, 6.935e-12,
3001 7.224e-12, 7.422e-12, 7.538e-12, 7.547e-12, 7.495e-12, 7.543e-12,
3002 7.725e-12, 8.139e-12, 8.627e-12, 9.146e-12, 9.443e-12, 9.318e-12,
3003 8.649e-12, 7.512e-12, 6.261e-12, 4.915e-12, 3.647e-12, 2.597e-12,
3004 1.785e-12, 1.242e-12, 8.66e-13, 6.207e-13, 4.61e-13, 3.444e-13,
3005 2.634e-13, 2.1e-13, 1.725e-13, 1.455e-13, 1.237e-13, 1.085e-13,
3006 9.513e-14, 7.978e-14, 6.603e-14, 5.288e-14, 4.084e-14, 2.952e-14,
3007 2.157e-14, 1.593e-14, 1.199e-14, 9.267e-15, 7.365e-15, 6.004e-15,
3008 4.995e-15, 4.218e-15, 3.601e-15, 3.101e-15, 2.692e-15, 2.36e-15,
3009 2.094e-15, 1.891e-15, 1.755e-15, 1.699e-15, 1.755e-15, 1.987e-15,
3010 2.506e-15, 3.506e-15, 5.289e-15, 8.311e-15, 1.325e-14, 2.129e-14,
3011 3.237e-14, 4.595e-14, 6.441e-14, 8.433e-14, 1.074e-13, 1.383e-13,
3012 1.762e-13, 2.281e-13, 2.831e-13, 3.523e-13, 4.38e-13, 5.304e-13,
3013 6.29e-13, 7.142e-13, 8.032e-13, 8.934e-13, 9.888e-13, 1.109e-12,
3014 1.261e-12, 1.462e-12, 1.74e-12, 2.099e-12, 2.535e-12, 3.008e-12,
3015 3.462e-12, 3.856e-12, 4.098e-12, 4.239e-12, 4.234e-12, 4.132e-12,
3016 3.986e-12, 3.866e-12, 3.829e-12, 3.742e-12, 3.705e-12, 3.694e-12,
3017 3.765e-12, 3.849e-12, 3.929e-12, 4.056e-12, 4.092e-12, 4.047e-12,
3018 3.792e-12, 3.407e-12, 2.953e-12, 2.429e-12, 1.931e-12, 1.46e-12,
3019 1.099e-12, 8.199e-13, 6.077e-13, 4.449e-13, 3.359e-13, 2.524e-13,
3020 1.881e-13, 1.391e-13, 1.02e-13, 7.544e-14, 5.555e-14, 4.22e-14,
3021 3.321e-14, 2.686e-14, 2.212e-14, 1.78e-14, 1.369e-14, 1.094e-14,
3022 9.13e-15, 8.101e-15, 7.828e-15, 8.393e-15, 1.012e-14, 1.259e-14,
3023 1.538e-14, 1.961e-14, 2.619e-14, 3.679e-14, 5.049e-14, 6.917e-14,
3024 8.88e-14, 1.115e-13, 1.373e-13, 1.619e-13, 1.878e-13, 2.111e-13,
3025 2.33e-13, 2.503e-13, 2.613e-13, 2.743e-13, 2.826e-13, 2.976e-13,
3026 3.162e-13, 3.36e-13, 3.491e-13, 3.541e-13, 3.595e-13, 3.608e-13,
3027 3.709e-13, 3.869e-13, 4.12e-13, 4.366e-13, 4.504e-13, 4.379e-13,
3028 3.955e-13, 3.385e-13, 2.741e-13, 2.089e-13, 1.427e-13, 9.294e-14,
3029 5.775e-14, 3.565e-14, 2.21e-14, 1.398e-14, 9.194e-15, 6.363e-15,
3030 4.644e-15, 3.55e-15, 2.808e-15, 2.274e-15, 1.871e-15, 1.557e-15,
3031 1.308e-15, 1.108e-15, 9.488e-16, 8.222e-16, 7.238e-16, 6.506e-16,
3032 6.008e-16, 5.742e-16, 5.724e-16, 5.991e-16, 6.625e-16, 7.775e-16,
3033 9.734e-16, 1.306e-15, 1.88e-15, 2.879e-15, 4.616e-15, 7.579e-15,
3034 1.248e-14, 2.03e-14, 3.244e-14, 5.171e-14, 7.394e-14, 9.676e-14,
3035 1.199e-13, 1.467e-13, 1.737e-13, 2.02e-13, 2.425e-13, 3.016e-13,
3036 3.7e-13, 4.617e-13, 5.949e-13, 7.473e-13, 9.378e-13, 1.191e-12,
3037 1.481e-12, 1.813e-12, 2.232e-12, 2.722e-12, 3.254e-12, 3.845e-12,
3038 4.458e-12, 5.048e-12, 5.511e-12, 5.898e-12, 6.204e-12, 6.293e-12,
3039 6.386e-12, 6.467e-12, 6.507e-12, 6.466e-12, 6.443e-12, 6.598e-12,
3040 6.873e-12, 7.3e-12, 7.816e-12, 8.368e-12, 8.643e-12, 8.466e-12,
3041 7.871e-12, 6.853e-12, 5.714e-12, 4.482e-12, 3.392e-12, 2.613e-12,
3042 2.008e-12, 1.562e-12, 1.228e-12, 9.888e-13, 7.646e-13, 5.769e-13,
3043 4.368e-13, 3.324e-13, 2.508e-13, 1.916e-13
3046 static const double xfcrev[15] =
3047 { 1.003, 1.009, 1.015, 1.023, 1.029, 1.033, 1.037,
3048 1.039, 1.04, 1.046, 1.036, 1.027, 1.01, 1.002, 1.
3054 const double xw = nu / 10 + 1;
3055 if (xw >= 1 && xw < 2001) {
3056 const int iw = (int) xw;
3057 const double dw = xw - iw;
3058 const double ew = 1 - dw;
3059 const double cw296 = ew * h2o296[iw - 1] + dw * h2o296[iw];
3060 const double cw260 = ew * h2o260[iw - 1] + dw * h2o260[iw];
3061 const double cwfrn = ew * h2ofrn[iw - 1] + dw * h2ofrn[iw];
3062 if (nu <= 820 || nu >= 960) {
3065 const double xx = (nu - 820) / 10;
3066 const int ix = (int) xx;
3067 const double dx = xx - ix;
3068 sfac = (1 - dx) * xfcrev[ix] + dx * xfcrev[ix + 1];
3070 const double ctwslf =
3071 sfac * cw296 * pow(cw260 / cw296, (296 - t) / (296 - 260));
3072 const double vf2 =
POW2(nu - 370);
3073 const double vf6 =
POW3(vf2);
3074 const double fscal = 36100 / (vf2 + vf6 * 1e-8 + 36100) * -.25 + 1;
3075 const double ctwfrn = cwfrn * fscal;
3076 const double a1 = nu * u * tanh(.7193876 / t * nu);
3077 const double a2 = 296 / t;
3078 const double a3 = p /
P0 * (q * ctwslf + (1 - q) * ctwfrn) * 1e-20;
3079 return a1 * a2 * a3;
3091 static const double ba[98] =
3092 { 0., 4.45e-8, 5.22e-8, 6.46e-8, 7.75e-8, 9.03e-8,
3093 1.06e-7, 1.21e-7, 1.37e-7, 1.57e-7, 1.75e-7, 2.01e-7, 2.3e-7,
3094 2.59e-7, 2.95e-7, 3.26e-7, 3.66e-7, 4.05e-7, 4.47e-7, 4.92e-7,
3095 5.34e-7, 5.84e-7, 6.24e-7, 6.67e-7, 7.14e-7, 7.26e-7, 7.54e-7,
3096 7.84e-7, 8.09e-7, 8.42e-7, 8.62e-7, 8.87e-7, 9.11e-7, 9.36e-7,
3097 9.76e-7, 1.03e-6, 1.11e-6, 1.23e-6, 1.39e-6, 1.61e-6, 1.76e-6,
3098 1.94e-6, 1.97e-6, 1.87e-6, 1.75e-6, 1.56e-6, 1.42e-6, 1.35e-6,
3099 1.32e-6, 1.29e-6, 1.29e-6, 1.29e-6, 1.3e-6, 1.32e-6, 1.33e-6,
3100 1.34e-6, 1.35e-6, 1.33e-6, 1.31e-6, 1.29e-6, 1.24e-6, 1.2e-6,
3101 1.16e-6, 1.1e-6, 1.04e-6, 9.96e-7, 9.38e-7, 8.63e-7, 7.98e-7,
3102 7.26e-7, 6.55e-7, 5.94e-7, 5.35e-7, 4.74e-7, 4.24e-7, 3.77e-7,
3103 3.33e-7, 2.96e-7, 2.63e-7, 2.34e-7, 2.08e-7, 1.85e-7, 1.67e-7,
3104 1.47e-7, 1.32e-7, 1.2e-7, 1.09e-7, 9.85e-8, 9.08e-8, 8.18e-8,
3105 7.56e-8, 6.85e-8, 6.14e-8, 5.83e-8, 5.77e-8, 5e-8, 4.32e-8, 0.
3108 static const double betaa[98] =
3109 { 802., 802., 761., 722., 679., 646., 609., 562.,
3110 511., 472., 436., 406., 377., 355., 338., 319., 299., 278., 255.,
3111 233., 208., 184., 149., 107., 66., 25., -13., -49., -82., -104.,
3112 -119., -130., -139., -144., -146., -146., -147., -148., -150.,
3113 -153., -160., -169., -181., -189., -195., -200., -205., -209.,
3114 -211., -210., -210., -209., -205., -199., -190., -180., -168.,
3115 -157., -143., -126., -108., -89., -63., -32., 1., 35., 65., 95.,
3116 121., 141., 152., 161., 164., 164., 161., 155., 148., 143., 137.,
3117 133., 131., 133., 139., 150., 165., 187., 213., 248., 284., 321.,
3118 372., 449., 514., 569., 609., 642., 673., 673.
3121 static const double nua[98] =
3122 { 2120., 2125., 2130., 2135., 2140., 2145., 2150.,
3123 2155., 2160., 2165., 2170., 2175., 2180., 2185., 2190., 2195.,
3124 2200., 2205., 2210., 2215., 2220., 2225., 2230., 2235., 2240.,
3125 2245., 2250., 2255., 2260., 2265., 2270., 2275., 2280., 2285.,
3126 2290., 2295., 2300., 2305., 2310., 2315., 2320., 2325., 2330.,
3127 2335., 2340., 2345., 2350., 2355., 2360., 2365., 2370., 2375.,
3128 2380., 2385., 2390., 2395., 2400., 2405., 2410., 2415., 2420.,
3129 2425., 2430., 2435., 2440., 2445., 2450., 2455., 2460., 2465.,
3130 2470., 2475., 2480., 2485., 2490., 2495., 2500., 2505., 2510.,
3131 2515., 2520., 2525., 2530., 2535., 2540., 2545., 2550., 2555.,
3132 2560., 2565., 2570., 2575., 2580., 2585., 2590., 2595., 2600., 2605.
3135 const double t0 = 273.0, tr = 296.0;
3138 if (nu < nua[0] || nu > nua[97])
3144 1e6 *
LIN(nua[idx], ba[idx], nua[idx + 1], ba[idx + 1], nu);
3146 LIN(nua[idx], betaa[idx], nua[idx + 1], betaa[idx + 1], nu);
3149 return 0.1 *
POW2(p /
P0 * t0 / t) * exp(beta * (1 / tr - 1 / t))
3150 *
N2 * b * (
N2 + (1 -
N2) * (1.294 - 0.4545 * t / tr));
3160 static const double ba[90] =
3161 { 0., .061, .074, .084, .096, .12, .162, .208, .246,
3162 .285, .314, .38, .444, .5, .571, .673, .768, .853, .966, 1.097,
3163 1.214, 1.333, 1.466, 1.591, 1.693, 1.796, 1.922, 2.037, 2.154,
3164 2.264, 2.375, 2.508, 2.671, 2.847, 3.066, 3.417, 3.828, 4.204,
3165 4.453, 4.599, 4.528, 4.284, 3.955, 3.678, 3.477, 3.346, 3.29,
3166 3.251, 3.231, 3.226, 3.212, 3.192, 3.108, 3.033, 2.911, 2.798,
3167 2.646, 2.508, 2.322, 2.13, 1.928, 1.757, 1.588, 1.417, 1.253,
3168 1.109, .99, .888, .791, .678, .587, .524, .464, .403, .357, .32,
3169 .29, .267, .242, .215, .182, .16, .146, .128, .103, .087, .081,
3173 static const double betaa[90] =
3174 { 467., 467., 400., 315., 379., 368., 475., 521.,
3175 531., 512., 442., 444., 430., 381., 335., 324., 296., 248., 215.,
3176 193., 158., 127., 101., 71., 31., -6., -26., -47., -63., -79.,
3177 -88., -88., -87., -90., -98., -99., -109., -134., -160., -167.,
3178 -164., -158., -153., -151., -156., -166., -168., -173., -170.,
3179 -161., -145., -126., -108., -84., -59., -29., 4., 41., 73., 97.,
3180 123., 159., 198., 220., 242., 256., 281., 311., 334., 319., 313.,
3181 321., 323., 310., 315., 320., 335., 361., 378., 373., 338., 319.,
3182 346., 322., 291., 290., 350., 371., 504., 504.
3185 static const double nua[90] =
3186 { 1360., 1365., 1370., 1375., 1380., 1385., 1390.,
3187 1395., 1400., 1405., 1410., 1415., 1420., 1425., 1430., 1435.,
3188 1440., 1445., 1450., 1455., 1460., 1465., 1470., 1475., 1480.,
3189 1485., 1490., 1495., 1500., 1505., 1510., 1515., 1520., 1525.,
3190 1530., 1535., 1540., 1545., 1550., 1555., 1560., 1565., 1570.,
3191 1575., 1580., 1585., 1590., 1595., 1600., 1605., 1610., 1615.,
3192 1620., 1625., 1630., 1635., 1640., 1645., 1650., 1655., 1660.,
3193 1665., 1670., 1675., 1680., 1685., 1690., 1695., 1700., 1705.,
3194 1710., 1715., 1720., 1725., 1730., 1735., 1740., 1745., 1750.,
3195 1755., 1760., 1765., 1770., 1775., 1780., 1785., 1790., 1795.,
3199 const double t0 = 273, tr = 296;
3202 if (nu < nua[0] || nu > nua[89])
3207 const double b =
LIN(nua[idx], ba[idx], nua[idx + 1], ba[idx + 1], nu);
3209 LIN(nua[idx], betaa[idx], nua[idx + 1], betaa[idx + 1], nu);
3212 return 0.1 *
POW2(p /
P0 * t0 / t) * exp(beta * (1 / tr - 1 / t)) *
O2 * b;
3220 const atm_t *atm_src,
3224 const size_t s = (size_t) atm_src->
np *
sizeof(
double);
3227 atm_dest->
np = atm_src->
np;
3228 memcpy(atm_dest->
time, atm_src->
time, s);
3229 memcpy(atm_dest->
z, atm_src->
z, s);
3230 memcpy(atm_dest->
lon, atm_src->
lon, s);
3231 memcpy(atm_dest->
lat, atm_src->
lat, s);
3232 memcpy(atm_dest->
p, atm_src->
p, s);
3233 memcpy(atm_dest->
t, atm_src->
t, s);
3234 for (
int ig = 0; ig < ctl->
ng; ig++)
3235 memcpy(atm_dest->
q[ig], atm_src->
q[ig], s);
3236 for (
int iw = 0; iw < ctl->
nw; iw++)
3237 memcpy(atm_dest->
k[iw], atm_src->
k[iw], s);
3238 atm_dest->
clz = atm_src->
clz;
3240 for (
int icl = 0; icl < ctl->
ncl; icl++)
3241 atm_dest->
clk[icl] = atm_src->
clk[icl];
3242 atm_dest->
sft = atm_src->
sft;
3243 for (
int isf = 0; isf < ctl->
nsf; isf++)
3248 for (
int ip = 0; ip < atm_dest->
np; ip++) {
3249 atm_dest->
p[ip] = 0;
3250 atm_dest->
t[ip] = 0;
3251 for (
int ig = 0; ig < ctl->
ng; ig++)
3252 atm_dest->
q[ig][ip] = 0;
3253 for (
int iw = 0; iw < ctl->
nw; iw++)
3254 atm_dest->
k[iw][ip] = 0;
3257 for (
int icl = 0; icl < ctl->
ncl; icl++)
3258 atm_dest->
clk[icl] = 0;
3260 for (
int isf = 0; isf < ctl->
nsf; isf++)
3261 atm_dest->
sfeps[isf] = 1;
3270 const obs_t *obs_src,
3274 const size_t s = (size_t) obs_src->
nr *
sizeof(
double);
3277 obs_dest->
nr = obs_src->
nr;
3278 memcpy(obs_dest->
time, obs_src->
time, s);
3279 memcpy(obs_dest->
obsz, obs_src->
obsz, s);
3282 memcpy(obs_dest->
vpz, obs_src->
vpz, s);
3285 memcpy(obs_dest->
tpz, obs_src->
tpz, s);
3288 for (
int id = 0;
id < ctl->
nd;
id++)
3289 memcpy(obs_dest->
rad[
id], obs_src->
rad[
id], s);
3290 for (
int id = 0;
id < ctl->
nd;
id++)
3291 memcpy(obs_dest->
tau[
id], obs_src->
tau[
id], s);
3295 for (
int id = 0;
id < ctl->
nd;
id++)
3296 for (
int ir = 0; ir < obs_dest->
nr; ir++)
3297 if (isfinite(obs_dest->
rad[
id][ir])) {
3298 obs_dest->
rad[id][ir] = 0;
3299 obs_dest->
tau[id][ir] = 0;
3307 const char *emitter) {
3309 for (
int ig = 0; ig < ctl->
ng; ig++)
3310 if (strcasecmp(ctl->
emitter[ig], emitter) == 0)
3331 for (
int id = 0;
id < ctl->
nd;
id++)
3332 for (
int ir = 0; ir < obs->
nr; ir++)
3333 mask[
id *
NR + ir] = !isfinite(obs->
rad[
id][ir]);
3340 for (
int ir = 0; ir < obs->
nr; ir++)
3344 else if (ctl->
formod == 2)
3352 for (
int id = 0;
id < ctl->
nd;
id++)
3353 for (
int ir = 0; ir < obs->
nr; ir++)
3357 for (
int id = 0;
id < ctl->
nd;
id++)
3358 for (
int ir = 0; ir < obs->
nr; ir++)
3359 if (mask[
id *
NR + ir])
3360 obs->
rad[id][ir] = NAN;
3375 for (
int id = 0;
id < ctl->
nd;
id++)
3376 beta[
id] = los->
k[ip][
id];
3380 for (
int id = 0;
id < ctl->
nd;
id++)
3381 beta[
id] +=
ctmco2(ctl->
nu[
id], los->
p[ip], los->
t[ip],
3386 for (
int id = 0;
id < ctl->
nd;
id++)
3387 beta[
id] +=
ctmh2o(ctl->
nu[
id], los->
p[ip], los->
t[ip],
3393 for (
int id = 0;
id < ctl->
nd;
id++)
3394 beta[
id] +=
ctmn2(ctl->
nu[
id], los->
p[ip], los->
t[ip]);
3398 for (
int id = 0;
id < ctl->
nd;
id++)
3399 beta[
id] +=
ctmo2(ctl->
nu[
id], los->
p[ip], los->
t[ip]);
3413 if (ctl->
fov[0] ==
'-')
3423 for (
int ir = 0; ir < obs->
nr; ir++) {
3427 for (
int ir2 =
MAX(ir -
NFOV, 0);
3428 ir2 <
MIN(ir + 1 +
NFOV, obs->
nr); ir2++)
3429 if (obs->
time[ir2] == obs->
time[ir]) {
3430 z[nz] = obs2->
vpz[ir2];
3431 for (
int id = 0;
id < ctl->
nd;
id++) {
3432 rad[id][nz] = obs2->
rad[id][ir2];
3433 tau[id][nz] = obs2->
tau[id][ir2];
3438 ERRMSG(
"Cannot apply FOV convolution!");
3442 for (
int id = 0;
id < ctl->
nd;
id++) {
3443 obs->
rad[id][ir] = 0;
3444 obs->
tau[id][ir] = 0;
3446 for (
int i = 0; i < ctl->
fov_n; i++) {
3447 const double zfov = obs->
vpz[ir] + ctl->
fov_dz[i];
3449 for (
int id = 0;
id < ctl->
nd;
id++) {
3451 *
LIN(z[idx], rad[
id][idx], z[idx + 1], rad[
id][idx + 1], zfov);
3453 *
LIN(z[idx], tau[
id][idx], z[idx + 1], tau[
id][idx + 1], zfov);
3455 wsum += ctl->
fov_w[i];
3457 for (
int id = 0;
id < ctl->
nd;
id++) {
3458 obs->
rad[id][ir] /= wsum;
3459 obs->
tau[id][ir] /= wsum;
3478 double beta_ctm[
ND], rad[
ND], tau[
ND], tau_refl[
ND],
3479 tau_path[
ND][
NG], tau_gas[
ND], x0[3], x1[3];
3485 for (
int id = 0;
id < ctl->
nd;
id++) {
3488 for (
int ig = 0; ig < ctl->
ng; ig++)
3489 tau_path[
id][ig] = 1;
3496 for (
int ip = 0; ip < los->
np; ip++) {
3511 for (
int id = 0;
id < ctl->
nd;
id++)
3512 if (tau_gas[
id] > 0) {
3515 los->
eps[ip][id] = 1 - tau_gas[id] * exp(-beta_ctm[
id] * los->
ds[ip]);
3518 rad[id] += los->
src[ip][id] * los->
eps[ip][id] * tau[id];
3521 tau[id] *= (1 - los->
eps[ip][id]);
3531 for (
int id = 0;
id < ctl->
nd;
id++)
3532 rad[
id] += los->
sfeps[
id] * src_sf[
id] * tau[
id];
3537 for (
int id = 0;
id < ctl->
nd;
id++)
3538 if (los->
sfeps[
id] < 1) {
3547 for (
int id = 0;
id < ctl->
nd;
id++)
3551 for (
int ip = los->
np - 1; ip >= 0; ip--)
3552 for (
int id = 0;
id < ctl->
nd;
id++) {
3553 rad[id] += los->
src[ip][id] * los->
eps[ip][id] * tau_refl[id]
3554 * tau[id] * (1 - los->
sfeps[id]);
3555 tau_refl[id] *= (1 - los->
eps[ip][id]);
3570 if (sza2 < 89.999) {
3574 los->
lat[los->
np - 1], x0);
3576 for (
int i = 0; i < 3; i++)
3578 const double cosa =
DOTP(x0, x1) /
NORM(x0) /
NORM(x1);
3581 const double rcos = cosa / cos(
DEG2RAD(sza2));
3584 for (
int id = 0;
id < ctl->
nd;
id++)
3585 rad[
id] += 6.764e-5 / (2. * M_PI) *
PLANCK(
TSUN, ctl->
nu[
id])
3586 * tau_refl[id] * (1 - los->
sfeps[id]) * tau[
id] * rcos;
3593 for (
int id = 0;
id < ctl->
nd;
id++) {
3594 obs->
rad[id][ir] = rad[id];
3595 obs->
tau[id][ir] = tau[id];
3613 char cmd[2 *
LEN], filename[2 *
LEN],
3614 rfmflg[
LEN] = {
"RAD TRA MIX LIN SFC" };
3616 double f[
NSHAPE], nu[
NSHAPE], nu0, nu1, obsz = -999, tsurf,
3617 xd[3], xo[3], xv[3], z[
NR], zmin, zmax;
3625 for (
int ir = 1; ir < obs->
nr; ir++)
3629 ERRMSG(
"RFM interface requires identical observer positions!");
3632 for (
int iw = 0; iw < ctl->
nw; iw++)
3633 for (
int ip = 0; ip < atm->
np; ip++)
3634 if (atm->
k[iw][ip] != 0)
3635 ERRMSG(
"RFM interface cannot handle extinction data!");
3638 gsl_stats_minmax(&zmin, &zmax, atm->
z, 1, (
size_t) atm->
np);
3641 if (obs->
obsz[0] >= zmin && obs->
obsz[0] <= zmax) {
3642 obsz = obs->
obsz[0];
3643 strcat(rfmflg,
" OBS");
3647 for (
int ir = 0; ir < obs->
nr; ir++) {
3653 if (obs->
tpz[ir] <= zmin) {
3656 for (
int i = 0; i < 3; i++)
3657 xd[i] = xo[i] - xv[i];
3661 z[ir] = obs->
tpz[ir];
3663 if (nadir > 0 && nadir < obs->nr)
3664 ERRMSG(
"Limb and nadir not simultaneously possible!");
3668 strcat(rfmflg,
" NAD");
3671 tsurf = atm->
t[gsl_stats_min_index(atm->
z, 1, (
size_t) atm->
np)];
3674 if (!nadir && !ctl->
refrac)
3675 strcat(rfmflg,
" GEO");
3679 strcat(rfmflg,
" CTM");
3685 for (
int id = 0;
id < ctl->
nd;
id++) {
3688 sprintf(filename,
"%s_%.4f.filt", ctl->
tblbase, ctl->
nu[
id]);
3696 if (!(out = fopen(
"rfm.drv",
"w")))
3697 ERRMSG(
"Cannot create file!");
3698 fprintf(out,
"*HDR\nRFM call by JURASSIC.\n");
3699 fprintf(out,
"*FLG\n%s\n", rfmflg);
3700 fprintf(out,
"*SPC\n%.4f %.4f 0.0005\n", nu0, nu1);
3701 fprintf(out,
"*GAS\n");
3702 for (
int ig = 0; ig < ctl->
ng; ig++)
3703 fprintf(out,
"%s\n", ctl->
emitter[ig]);
3704 fprintf(out,
"*ATM\nrfm.atm\n");
3705 fprintf(out,
"*TAN\n");
3706 for (
int ir = 0; ir < obs->
nr; ir++)
3707 fprintf(out,
"%g\n", z[ir]);
3708 fprintf(out,
"*SFC\n%g 1.0\n", tsurf);
3710 fprintf(out,
"*OBS\n%g\n", obsz);
3711 fprintf(out,
"*HIT\n%s\n", ctl->
rfmhit);
3712 fprintf(out,
"*XSC\n");
3713 for (
int ig = 0; ig < ctl->
ng; ig++)
3714 if (ctl->
rfmxsc[ig][0] !=
'-')
3715 fprintf(out,
"%s\n", ctl->
rfmxsc[ig]);
3716 fprintf(out,
"*END\n");
3720 if (system(
"rm -f rfm.runlog rad_*.asc tra_*.asc"))
3721 ERRMSG(
"Cannot remove temporary files!");
3724 sprintf(cmd,
"echo | %s", ctl->
rfmbin);
3726 ERRMSG(
"Error while calling RFM!");
3729 for (
int ir = 0; ir < obs->
nr; ir++) {
3736 if (system(
"rm -f rfm.drv rfm.atm rfm.runlog rad_*.asc tra_*.asc"))
3737 ERRMSG(
"Error while removing temporary files!");
3755 for (
int id = 0;
id < ctl->
nd;
id++)
3756 src[
id] =
LIN(tbl->
st[it], tbl->
sr[it][
id],
3757 tbl->
st[it + 1], tbl->
sr[it + 1][
id], t);
3768 const double radius = z +
RE;
3770 const double latrad = lat / 180. * M_PI;
3771 const double lonrad = lon / 180. * M_PI;
3773 const double coslat = cos(latrad);
3775 x[0] = radius * coslat * cos(lonrad);
3776 x[1] = radius * coslat * sin(lonrad);
3777 x[2] = radius * sin(latrad);
3786 const double mmair = 28.96456e-3, mmh2o = 18.0153e-3;
3788 const int ipts = 20;
3790 double dzmin = 1e99, e = 0;
3799 for (
int ip = 0; ip < atm->
np; ip++)
3800 if (fabs(atm->
z[ip] - ctl->
hydz) < dzmin) {
3801 dzmin = fabs(atm->
z[ip] - ctl->
hydz);
3806 for (
int ip = ipref + 1; ip < atm->
np; ip++) {
3808 for (
int i = 0; i < ipts; i++) {
3811 ipts - 1.0, atm->
q[ctl->
ig_h2o][ip], (
double) i);
3812 mean += (e * mmh2o + (1 - e) * mmair)
3814 /
LIN(0.0, atm->
t[ip - 1], ipts - 1.0, atm->
t[ip], (
double) i) / ipts;
3819 exp(log(atm->
p[ip - 1]) - mean * 1000 * (atm->
z[ip] - atm->
z[ip - 1]));
3823 for (
int ip = ipref - 1; ip >= 0; ip--) {
3825 for (
int i = 0; i < ipts; i++) {
3828 ipts - 1.0, atm->
q[ctl->
ig_h2o][ip], (
double) i);
3829 mean += (e * mmh2o + (1 - e) * mmair)
3831 /
LIN(0.0, atm->
t[ip + 1], ipts - 1.0, atm->
t[ip], (
double) i) / ipts;
3836 exp(log(atm->
p[ip + 1]) - mean * 1000 * (atm->
z[ip] - atm->
z[ip + 1]));
3848 sprintf(quantity,
"PRESSURE");
3851 sprintf(quantity,
"TEMPERATURE");
3853 for (
int ig = 0; ig < ctl->
ng; ig++)
3854 if (idx ==
IDXQ(ig))
3855 sprintf(quantity,
"%s", ctl->
emitter[ig]);
3857 for (
int iw = 0; iw < ctl->
nw; iw++)
3858 if (idx ==
IDXK(iw))
3859 sprintf(quantity,
"EXTINCT_WINDOW_%d", iw);
3862 sprintf(quantity,
"CLOUD_HEIGHT");
3865 sprintf(quantity,
"CLOUD_DEPTH");
3867 for (
int icl = 0; icl < ctl->
ncl; icl++)
3869 sprintf(quantity,
"CLOUD_EXTINCT_%.4f", ctl->
clnu[icl]);
3872 sprintf(quantity,
"SURFACE_TEMPERATURE");
3874 for (
int isf = 0; isf < ctl->
nsf; isf++)
3876 sprintf(quantity,
"SURFACE_EMISSIVITY_%.4f", ctl->
sfnu[isf]);
3885 char filename[2 *
LEN];
3892 LOG(1,
"Initialize source function table...");
3893 LOG(2,
"Number of data points: %d",
TBLNS);
3896 for (
int id = 0;
id < ctl->
nd;
id++) {
3899 sprintf(filename,
"%s_%.4f.filt", ctl->
tblbase, ctl->
nu[
id]);
3904 for (
int i = 1; i < n; i++)
3905 dnu =
MIN(dnu, nu[i] - nu[i - 1]);
3908#pragma omp parallel for default(none) shared(ctl,tbl,id,nu,f,n,dnu)
3909 for (
int it = 0; it <
TBLNS; it++) {
3915 double fsum = tbl->
sr[it][id] = 0;
3916 for (
double fnu = nu[0]; fnu <= nu[n - 1]; fnu += dnu) {
3918 const double ff =
LIN(nu[i], f[i], nu[i + 1], f[i + 1], fnu);
3920 tbl->
sr[it][id] += ff *
PLANCK(tbl->
st[it], fnu);
3922 tbl->
sr[it][id] /= fsum;
3927 "channel= %.4f cm^-1 | T= %g ... %g K | B= %g ... %g W/(m^2 sr cm^-1)",
3928 ctl->
nu[
id], tbl->
st[0], tbl->
st[
TBLNS - 1], tbl->
sr[0][
id],
3948 *p =
LOGY(atm->
z[ip], atm->
p[ip], atm->
z[ip + 1], atm->
p[ip + 1], z);
3949 *t =
LIN(atm->
z[ip], atm->
t[ip], atm->
z[ip + 1], atm->
t[ip + 1], z);
3950 for (
int ig = 0; ig < ctl->
ng; ig++)
3952 LIN(atm->
z[ip], atm->
q[ig][ip], atm->
z[ip + 1], atm->
q[ig][ip + 1], z);
3953 for (
int iw = 0; iw < ctl->
nw; iw++)
3955 LIN(atm->
z[ip], atm->
k[iw][ip], atm->
z[ip + 1], atm->
k[iw][ip + 1], z);
3965 double tau_path[
ND][
NG],
3966 double tau_seg[
ND]) {
3971 for (
int id = 0;
id < ctl->
nd;
id++) {
3977 for (
int ig = 0; ig < ctl->
ng; ig++) {
3980 if (tbl->
np[
id][ig] < 30 || los->
cgu[ip][ig] <= 0)
3984 else if (tau_path[
id][ig] < 1e-9)
3993 const int it0 =
locate_reg(tbl->
t[
id][ig][ipr], tbl->
nt[
id][ig][ipr],
3996 locate_reg(tbl->
t[
id][ig][ipr + 1], tbl->
nt[
id][ig][ipr + 1],
4000 if (tbl->
nt[
id][ig][ipr] < 2 || tbl->
nt[
id][ig][ipr + 1] < 2
4001 || tbl->
nu[
id][ig][ipr][it0] < 2
4002 || tbl->
nu[
id][ig][ipr][it0 + 1] < 2
4003 || tbl->
nu[
id][ig][ipr + 1][it1] < 2
4004 || tbl->
nu[
id][ig][ipr + 1][it1 + 1] < 2)
4020 eps00 =
LIN(tbl->
t[
id][ig][ipr][it0], eps00,
4021 tbl->
t[
id][ig][ipr][it0 + 1], eps01, los->
cgt[ip][ig]);
4022 eps11 =
LIN(tbl->
t[
id][ig][ipr + 1][it1], eps10,
4023 tbl->
t[
id][ig][ipr + 1][it1 + 1],
4024 eps11, los->
cgt[ip][ig]);
4027 eps00 =
LOGX(tbl->
p[
id][ig][ipr], eps00,
4028 tbl->
p[
id][ig][ipr + 1], eps11, los->
cgp[ip][ig]);
4031 eps00 =
MAX(
MIN(eps00, 1), 0);
4034 eps = 1 - (1 - eps00) / tau_path[
id][ig];
4039 tau_path[id][ig] *= (1 - eps);
4042 tau_seg[id] *= (1 - eps);
4054 double tau_path[
ND][
NG],
4055 double tau_seg[
ND]) {
4060 for (
int id = 0;
id < ctl->
nd;
id++) {
4066 for (
int ig = 0; ig < ctl->
ng; ig++) {
4069 if (tbl->
np[
id][ig] < 30 || los->
cgu[ip][ig] <= 0)
4073 else if (tau_path[
id][ig] < 1e-9)
4083 locate_reg(tbl->
t[
id][ig][ipr], tbl->
nt[
id][ig][ipr], los->
t[ip]);
4085 locate_reg(tbl->
t[
id][ig][ipr + 1], tbl->
nt[
id][ig][ipr + 1],
4089 if (tbl->
nt[
id][ig][ipr] < 2 || tbl->
nt[
id][ig][ipr + 1] < 2
4090 || tbl->
nu[
id][ig][ipr][it0] < 2
4091 || tbl->
nu[
id][ig][ipr][it0 + 1] < 2
4092 || tbl->
nu[
id][ig][ipr + 1][it1] < 2
4093 || tbl->
nu[
id][ig][ipr + 1][it1 + 1] < 2)
4099 u =
intpol_tbl_u(tbl, ig,
id, ipr, it0, 1 - tau_path[
id][ig]);
4103 u =
intpol_tbl_u(tbl, ig,
id, ipr, it0 + 1, 1 - tau_path[
id][ig]);
4107 u =
intpol_tbl_u(tbl, ig,
id, ipr + 1, it1, 1 - tau_path[
id][ig]);
4112 intpol_tbl_u(tbl, ig,
id, ipr + 1, it1 + 1, 1 - tau_path[
id][ig]);
4117 eps00 =
LIN(tbl->
t[
id][ig][ipr][it0], eps00,
4118 tbl->
t[
id][ig][ipr][it0 + 1], eps01, los->
t[ip]);
4119 eps11 =
LIN(tbl->
t[
id][ig][ipr + 1][it1], eps10,
4120 tbl->
t[
id][ig][ipr + 1][it1 + 1], eps11, los->
t[ip]);
4123 eps00 =
LIN(tbl->
p[
id][ig][ipr], eps00,
4124 tbl->
p[
id][ig][ipr + 1], eps11, los->
p[ip]);
4127 eps00 =
MAX(
MIN(eps00, 1), 0);
4130 eps = 1 - (1 - eps00) / tau_path[
id][ig];
4135 tau_path[id][ig] *= (1 - eps);
4138 tau_seg[id] *= (1 - eps);
4153 const int nu = tbl->
nu[id][ig][ip][it];
4154 const float *u_arr = tbl->
u[id][ig][ip][it];
4155 const float *eps_arr = tbl->
eps[id][ig][ip][it];
4157 const double u_min = u_arr[0];
4158 const double u_max = u_arr[nu - 1];
4162 return eps_arr[0] * u / u_min;
4166 const double a = log(1.0 - eps_arr[nu - 1]) / u_max;
4167 return 1.0 - exp(a * u);
4172 return LIN(u_arr[idx], eps_arr[idx], u_arr[idx + 1], eps_arr[idx + 1], u);
4185 const int nu = tbl->
nu[id][ig][ip][it];
4186 const float *eps_arr = tbl->
eps[id][ig][ip][it];
4187 const float *u_arr = tbl->
u[id][ig][ip][it];
4189 const double eps_min = eps_arr[0];
4190 const double eps_max = eps_arr[nu - 1];
4194 return u_arr[0] * eps / eps_min;
4197 if (eps > eps_max) {
4198 const double a = log(1.0 - eps_max) / u_arr[nu - 1];
4199 return log(1.0 - eps) / a;
4203 const int idx =
locate_tbl(eps_arr, nu, eps);
4204 return LIN(eps_arr[idx], u_arr[idx], eps_arr[idx + 1], u_arr[idx + 1], eps);
4228 time_t jsec0 = (time_t) jsec + timegm(&t0);
4229 t1 = gmtime(&jsec0);
4231 *year = t1->tm_year + 1900;
4232 *mon = t1->tm_mon + 1;
4234 *hour = t1->tm_hour;
4237 *remain = jsec - floor(jsec);
4252 const size_t m = k->size1;
4253 const size_t n = k->size2;
4256 gsl_vector *x0 = gsl_vector_alloc(n);
4257 gsl_vector *yy0 = gsl_vector_alloc(m);
4262 formod(ctl, tbl, atm, obs);
4265 atm2x(ctl, atm, x0, iqa, NULL);
4266 obs2y(ctl, obs, yy0, NULL, NULL);
4269 gsl_matrix_set_zero(k);
4272#pragma omp parallel for default(none) shared(ctl,tbl,atm,obs,k,x0,yy0,n,m,iqa)
4273 for (
size_t j = 0; j < n; j++) {
4280 gsl_vector *x1 = gsl_vector_alloc(n);
4281 gsl_vector *yy1 = gsl_vector_alloc(m);
4286 h =
MAX(fabs(0.01 * gsl_vector_get(x0, j)), 1e-7);
4287 else if (iqa[j] ==
IDXT)
4289 else if (iqa[j] >=
IDXQ(0) && iqa[j] <
IDXQ(ctl->
ng))
4290 h =
MAX(fabs(0.01 * gsl_vector_get(x0, j)), 1e-15);
4291 else if (iqa[j] >=
IDXK(0) && iqa[j] <
IDXK(ctl->
nw))
4297 else if (iqa[j] ==
IDXSFT)
4302 ERRMSG(
"Cannot set perturbation size!");
4305 gsl_vector_memcpy(x1, x0);
4306 gsl_vector_set(x1, j, gsl_vector_get(x1, j) + h);
4309 x2atm(ctl, x1, atm1);
4312 formod(ctl, tbl, atm1, obs1);
4315 obs2y(ctl, obs1, yy1, NULL, NULL);
4318 for (
size_t i = 0; i < m; i++)
4319 gsl_matrix_set(k, i, j,
4320 (gsl_vector_get(yy1, i) - gsl_vector_get(yy0, i)) / h);
4323 gsl_vector_free(x1);
4324 gsl_vector_free(yy1);
4330 gsl_vector_free(x0);
4331 gsl_vector_free(yy0);
4344 int i = (ihi + ilo) >> 1;
4346 if (xx[i] < xx[i + 1])
4347 while (ihi > ilo + 1) {
4348 i = (ihi + ilo) >> 1;
4354 while (ihi > ilo + 1) {
4355 i = (ihi + ilo) >> 1;
4373 const int i = (int) ((x - xx[0]) / (xx[1] - xx[0]));
4393 int i = (ihi + ilo) >> 1;
4395 while (ihi > ilo + 1) {
4396 i = (ihi + ilo) >> 1;
4414 const size_t n = a->size1;
4417 for (
size_t i = 0; i < n && diag; i++)
4418 for (
size_t j = i + 1; j < n; j++)
4419 if (gsl_matrix_get(a, i, j) != 0) {
4426 for (
size_t i = 0; i < n; i++)
4427 gsl_matrix_set(a, i, i, 1 / gsl_matrix_get(a, i, i));
4431 gsl_linalg_cholesky_decomp(a);
4432 gsl_linalg_cholesky_invert(a);
4445 const size_t m = a->size1;
4446 const size_t n = a->size2;
4449 gsl_matrix *aux = gsl_matrix_alloc(m, n);
4452 if (transpose == 1) {
4455 for (
size_t i = 0; i < m; i++)
4456 for (
size_t j = 0; j < n; j++)
4457 gsl_matrix_set(aux, i, j,
4458 gsl_vector_get(b, i) * gsl_matrix_get(a, i, j));
4461 gsl_blas_dgemm(CblasTrans, CblasNoTrans, 1.0, aux, aux, 0.0, c);
4465 else if (transpose == 2) {
4468 for (
size_t i = 0; i < m; i++)
4469 for (
size_t j = 0; j < n; j++)
4470 gsl_matrix_set(aux, i, j,
4471 gsl_matrix_get(a, i, j) * gsl_vector_get(b, j));
4474 gsl_blas_dgemm(CblasNoTrans, CblasTrans, 1.0, aux, aux, 0.0, c);
4478 gsl_matrix_free(aux);
4493 for (
int ir = 0; ir < obs->
nr; ir++)
4494 for (
int id = 0;
id < ctl->
nd;
id++)
4495 if (isfinite(obs->
rad[
id][ir])) {
4497 gsl_vector_set(y, m, obs->
rad[
id][ir]);
4517 const double h = 0.02, zrefrac = 60;
4519 double ex0[3], ex1[3], k[
NW], lat, lon, n, ng[3], norm, p, q[
NG], t,
4520 x[3], xh[3], xobs[3], xvp[3], z = 1e99, zmax, zmin;
4527 obs->
tpz[ir] = obs->
vpz[ir];
4532 gsl_stats_minmax(&zmin, &zmax, atm->
z, 1, (
size_t) atm->
np);
4535 if (zmin > 1e-3 || zmin < -1e-3)
4536 ERRMSG(
"Atmospheric profiles must include surface level (z = 0 km)!");
4539 if (obs->
obsz[ir] < zmin)
4540 ERRMSG(
"Observer below surface!");
4543 if (obs->
vpz[ir] > zmax)
4551 for (
int i = 0; i < 3; i++)
4552 ex0[i] = xvp[i] - xobs[i];
4554 for (
int i = 0; i < 3; i++)
4558 for (
int i = 0; i < 3; i++)
4562 if (obs->
obsz[ir] > zmax) {
4563 double dmax = norm, dmin = 0;
4564 while (fabs(dmin - dmax) > 0.001) {
4565 const double d = (dmax + dmin) / 2;
4566 for (
int i = 0; i < 3; i++)
4567 x[i] = xobs[i] + d * ex0[i];
4569 if (z <= zmax && z > zmax - 0.001)
4571 if (z < zmax - 0.0005)
4582 double ds = ctl->
rayds;
4583 if (ctl->
raydz > 0) {
4585 for (
int i = 0; i < 3; i++)
4586 xh[i] = x[i] / norm;
4587 const double cosa = fabs(
DOTP(ex0, xh));
4596 if (z < zmin || z > zmax) {
4597 stop = (z < zmin ? 2 : 1);
4600 zmin ? zmin : zmax) - los->
z[los->
np - 1]) / (z - los->
z[los->
np -
4603 los->
lat[los->
np - 1], xh);
4604 for (
int i = 0; i < 3; i++)
4605 x[i] = xh[i] + frac * (x[i] - xh[i]);
4607 los->
ds[los->
np - 1] = ds * frac;
4615 los->
lon[los->
np] = lon;
4616 los->
lat[los->
np] = lat;
4617 los->
z[los->
np] = z;
4618 los->
p[los->
np] = p;
4619 los->
t[los->
np] = t;
4620 for (
int ig = 0; ig < ctl->
ng; ig++)
4621 los->
q[los->
np][ig] = q[ig];
4622 for (
int id = 0;
id < ctl->
nd;
id++)
4623 los->
k[los->
np][
id] = k[ctl->
window[
id]];
4624 los->
ds[los->
np] = ds;
4627 if (ctl->
ncl > 0 && atm->
cldz > 0) {
4628 const double aux = exp(-0.5 *
POW2((z - atm->
clz) / atm->
cldz));
4629 for (
int id = 0;
id < ctl->
nd;
id++) {
4633 ctl->
clnu[icl + 1], atm->
clk[icl + 1], ctl->
nu[
id]);
4639 ERRMSG(
"Too many LOS points!");
4645 if (ctl->
nsf > 0 && atm->
sft > 0)
4647 los->
sft = (stop == 2 ? t : -999);
4650 for (
int id = 0;
id < ctl->
nd;
id++) {
4651 los->
sfeps[id] = 1.0;
4655 ctl->
sfnu[isf + 1], atm->
sfeps[isf + 1],
4665 if (ctl->
refrac && z <= zrefrac)
4671 for (
int i = 0; i < 3; i++)
4672 ex1[i] = ex0[i] * n;
4675 if (ctl->
refrac && z <= zrefrac) {
4676 for (
int i = 0; i < 3; i++)
4677 xh[i] = x[i] + 0.5 * ds * ex0[i];
4681 for (
int i = 0; i < 3; i++) {
4685 ng[i] = (
REFRAC(p, t) - n) / h;
4689 for (
int i = 0; i < 3; i++)
4693 for (
int i = 0; i < 3; i++)
4694 ex1[i] += ds * ng[i];
4698 for (
int i = 0; i < 3; i++)
4702 for (
int i = 0; i < 3; i++)
4703 x[i] += 0.5 * ds * (ex0[i] + ex1[i]);
4706 for (
int i = 0; i < 3; i++)
4714 for (
int ip = los->
np - 1; ip >= 1; ip--)
4715 los->
ds[ip] = 0.5 * (los->
ds[ip - 1] + los->
ds[ip]);
4719 for (
int ip = 0; ip < los->
np; ip++)
4720 for (
int ig = 0; ig < ctl->
ng; ig++)
4721 los->
u[ip][ig] = 10 * los->
q[ip][ig] * los->
p[ip]
4722 / (
KB * los->
t[ip]) * los->
ds[ip];
4725 for (
int ig = 0; ig < ctl->
ng; ig++) {
4726 los->
cgu[0][ig] = los->
u[0][ig];
4727 los->
cgp[0][ig] = los->
u[0][ig] * los->
p[0];
4728 los->
cgt[0][ig] = los->
u[0][ig] * los->
t[0];
4730 for (
int ip = 1; ip < los->
np; ip++)
4731 for (
int ig = 0; ig < ctl->
ng; ig++) {
4732 los->
cgu[ip][ig] = los->
cgu[ip - 1][ig] + los->
u[ip][ig];
4733 los->
cgp[ip][ig] = los->
cgp[ip - 1][ig] + los->
u[ip][ig] * los->
p[ip];
4734 los->
cgt[ip][ig] = los->
cgt[ip - 1][ig] + los->
u[ip][ig] * los->
t[ip];
4736 for (
int ip = 0; ip < los->
np; ip++)
4737 for (
int ig = 0; ig < ctl->
ng; ig++)
4738 if (los->
cgu[ip][ig] != 0) {
4739 los->
cgp[ip][ig] /= los->
cgu[ip][ig];
4740 los->
cgt[ip][ig] /= los->
cgu[ip][ig];
4747 const char *dirname,
4748 const char *filename,
4754 char file[
LEN], line[
LEN], *tok;
4760 if (dirname != NULL)
4761 sprintf(file,
"%s/%s", dirname, filename);
4763 sprintf(file,
"%s", filename);
4766 LOG(1,
"Read atmospheric data: %s", file);
4769 if (!(in = fopen(file,
"r")))
4770 ERRMSG(
"Cannot open file!");
4773 while (fgets(line,
LEN, in)) {
4776 TOK(line, tok,
"%lg", atm->
time[atm->
np]);
4777 TOK(NULL, tok,
"%lg", atm->
z[atm->
np]);
4778 TOK(NULL, tok,
"%lg", atm->
lon[atm->
np]);
4779 TOK(NULL, tok,
"%lg", atm->
lat[atm->
np]);
4780 TOK(NULL, tok,
"%lg", atm->
p[atm->
np]);
4781 TOK(NULL, tok,
"%lg", atm->
t[atm->
np]);
4782 for (
int ig = 0; ig < ctl->
ng; ig++)
4783 TOK(NULL, tok,
"%lg", atm->
q[ig][atm->
np]);
4784 for (
int iw = 0; iw < ctl->
nw; iw++)
4785 TOK(NULL, tok,
"%lg", atm->
k[iw][atm->
np]);
4786 if (ctl->
ncl > 0 && atm->
np == 0) {
4787 TOK(NULL, tok,
"%lg", atm->
clz);
4788 TOK(NULL, tok,
"%lg", atm->
cldz);
4789 for (
int icl = 0; icl < ctl->
ncl; icl++)
4790 TOK(NULL, tok,
"%lg", atm->
clk[icl]);
4792 if (ctl->
nsf > 0 && atm->
np == 0) {
4793 TOK(NULL, tok,
"%lg", atm->
sft);
4794 for (
int isf = 0; isf < ctl->
nsf; isf++)
4795 TOK(NULL, tok,
"%lg", atm->
sfeps[isf]);
4799 if ((++atm->
np) >
NP)
4800 ERRMSG(
"Too many data points!");
4808 ERRMSG(
"Could not read any data!");
4812 LOG(2,
"Number of data points: %d", atm->
np);
4813 gsl_stats_minmax(&mini, &maxi, atm->
time, 1, (
size_t) atm->
np);
4814 LOG(2,
"Time range: %.2f ... %.2f s", mini, maxi);
4815 gsl_stats_minmax(&mini, &maxi, atm->
z, 1, (
size_t) atm->
np);
4816 LOG(2,
"Altitude range: %g ... %g km", mini, maxi);
4817 gsl_stats_minmax(&mini, &maxi, atm->
lon, 1, (
size_t) atm->
np);
4818 LOG(2,
"Longitude range: %g ... %g deg", mini, maxi);
4819 gsl_stats_minmax(&mini, &maxi, atm->
lat, 1, (
size_t) atm->
np);
4820 LOG(2,
"Latitude range: %g ... %g deg", mini, maxi);
4821 gsl_stats_minmax(&mini, &maxi, atm->
p, 1, (
size_t) atm->
np);
4822 LOG(2,
"Pressure range: %g ... %g hPa", maxi, mini);
4823 gsl_stats_minmax(&mini, &maxi, atm->
t, 1, (
size_t) atm->
np);
4824 LOG(2,
"Temperature range: %g ... %g K", mini, maxi);
4825 for (
int ig = 0; ig < ctl->
ng; ig++) {
4826 gsl_stats_minmax(&mini, &maxi, atm->
q[ig], 1, (
size_t) atm->
np);
4827 LOG(2,
"Emitter %s range: %g ... %g ppv", ctl->
emitter[ig], mini, maxi);
4829 for (
int iw = 0; iw < ctl->
nw; iw++) {
4830 gsl_stats_minmax(&mini, &maxi, atm->
k[iw], 1, (
size_t) atm->
np);
4831 LOG(2,
"Extinction range (window %d): %g ... %g km^-1", iw, mini, maxi);
4833 if (ctl->
ncl > 0 && atm->
np == 0) {
4834 LOG(2,
"Cloud layer: z= %g km | dz= %g km | k= %g ... %g km^-1",
4837 LOG(2,
"Cloud layer: none");
4838 if (ctl->
nsf > 0 && atm->
np == 0) {
4840 "Surface layer: T_s = %g K | eps= %g ... %g",
4843 LOG(2,
"Surface layer: none");
4854 LOG(1,
"\nJuelich Rapid Spectral Simulation Code (JURASSIC)\n"
4855 "(executable: %s | version: %s | compiled: %s, %s)\n",
4856 argv[0], VERSION, __DATE__, __TIME__);
4859 ctl->
ng = (int)
scan_ctl(argc, argv,
"NG", -1,
"0", NULL);
4860 if (ctl->
ng < 0 || ctl->
ng >
NG)
4861 ERRMSG(
"Set 0 <= NG <= MAX!");
4862 for (
int ig = 0; ig < ctl->
ng; ig++)
4870 ctl->
nd = (int)
scan_ctl(argc, argv,
"ND", -1,
"0", NULL);
4871 if (ctl->
nd < 0 || ctl->
nd >
ND)
4872 ERRMSG(
"Set 0 <= ND <= MAX!");
4873 for (
int id = 0;
id < ctl->
nd;
id++)
4874 ctl->
nu[
id] =
scan_ctl(argc, argv,
"NU",
id,
"", NULL);
4877 ctl->
nw = (int)
scan_ctl(argc, argv,
"NW", -1,
"1", NULL);
4878 if (ctl->
nw < 0 || ctl->
nw >
NW)
4879 ERRMSG(
"Set 0 <= NW <= MAX!");
4880 for (
int id = 0;
id < ctl->
nd;
id++)
4881 ctl->
window[
id] = (
int)
scan_ctl(argc, argv,
"WINDOW",
id,
"0", NULL);
4884 ctl->
ncl = (int)
scan_ctl(argc, argv,
"NCL", -1,
"0", NULL);
4886 ERRMSG(
"Set 0 <= NCL <= MAX!");
4889 for (
int icl = 0; icl < ctl->
ncl; icl++)
4890 ctl->
clnu[icl] =
scan_ctl(argc, argv,
"CLNU", icl,
"", NULL);
4893 ctl->
nsf = (int)
scan_ctl(argc, argv,
"NSF", -1,
"0", NULL);
4895 ERRMSG(
"Set 0 <= NSF <= MAX!");
4898 for (
int isf = 0; isf < ctl->
nsf; isf++)
4899 ctl->
sfnu[isf] =
scan_ctl(argc, argv,
"SFNU", isf,
"", NULL);
4900 ctl->
sftype = (int)
scan_ctl(argc, argv,
"SFTYPE", -1,
"2", NULL);
4902 ERRMSG(
"Set 0 <= SFTYPE <= 3!");
4903 ctl->
sfsza =
scan_ctl(argc, argv,
"SFSZA", -1,
"-999", NULL);
4907 ctl->
tblfmt = (int)
scan_ctl(argc, argv,
"TBLFMT", -1,
"1", NULL);
4910 ctl->
hydz =
scan_ctl(argc, argv,
"HYDZ", -1,
"-999", NULL);
4915 ctl->
ctm_n2 = (int)
scan_ctl(argc, argv,
"CTM_N2", -1,
"1", NULL);
4916 ctl->
ctm_o2 = (int)
scan_ctl(argc, argv,
"CTM_O2", -1,
"1", NULL);
4919 ctl->
refrac = (int)
scan_ctl(argc, argv,
"REFRAC", -1,
"1", NULL);
4921 ctl->
raydz =
scan_ctl(argc, argv,
"RAYDZ", -1,
"0.1", NULL);
4925 if (ctl->
fov[0] !=
'-')
4933 for (
int ig = 0; ig < ctl->
ng; ig++) {
4937 for (
int iw = 0; iw < ctl->
nw; iw++) {
4950 (int)
scan_ctl(argc, argv,
"WRITE_MATRIX", -1,
"0", NULL);
4953 ctl->
formod = (int)
scan_ctl(argc, argv,
"FORMOD", -1,
"1", NULL);
4956 for (
int ig = 0; ig < ctl->
ng; ig++)
4963 const char *dirname,
4964 const char *filename,
4965 gsl_matrix *matrix) {
4976 if (dirname != NULL)
4977 sprintf(file,
"%s/%s", dirname, filename);
4979 sprintf(file,
"%s", filename);
4982 LOG(1,
"Read matrix: %s", file);
4985 if (!(in = fopen(file,
"r")))
4986 ERRMSG(
"Cannot open file!");
4989 gsl_matrix_set_zero(matrix);
4990 while (fgets(line,
LEN, in))
4991 if (sscanf(line,
"%d %s %s %s %s %s %d %s %s %s %s %s %lg",
4992 &i, dum, dum, dum, dum, dum,
4993 &j, dum, dum, dum, dum, dum, &value) == 13)
4994 gsl_matrix_set(matrix, (
size_t) i, (
size_t) j, value);
5003 const char *dirname,
5004 const char *filename,
5010 char file[
LEN], line[
LEN], *tok;
5016 if (dirname != NULL)
5017 sprintf(file,
"%s/%s", dirname, filename);
5019 sprintf(file,
"%s", filename);
5022 LOG(1,
"Read observation data: %s", file);
5025 if (!(in = fopen(file,
"r")))
5026 ERRMSG(
"Cannot open file!");
5029 while (fgets(line,
LEN, in)) {
5032 TOK(line, tok,
"%lg", obs->
time[obs->
nr]);
5033 TOK(NULL, tok,
"%lg", obs->
obsz[obs->
nr]);
5036 TOK(NULL, tok,
"%lg", obs->
vpz[obs->
nr]);
5039 TOK(NULL, tok,
"%lg", obs->
tpz[obs->
nr]);
5042 for (
int id = 0;
id < ctl->
nd;
id++)
5043 TOK(NULL, tok,
"%lg", obs->
rad[
id][obs->
nr]);
5044 for (
int id = 0;
id < ctl->
nd;
id++)
5045 TOK(NULL, tok,
"%lg", obs->
tau[
id][obs->
nr]);
5048 if ((++obs->
nr) >
NR)
5049 ERRMSG(
"Too many rays!");
5057 ERRMSG(
"Could not read any data!");
5061 LOG(2,
"Number of ray paths: %d", obs->
nr);
5062 gsl_stats_minmax(&mini, &maxi, obs->
time, 1, (
size_t) obs->
nr);
5063 LOG(2,
"Time range: %.2f ... %.2f s", mini, maxi);
5064 gsl_stats_minmax(&mini, &maxi, obs->
obsz, 1, (
size_t) obs->
nr);
5065 LOG(2,
"Observer altitude range: %g ... %g km", mini, maxi);
5066 gsl_stats_minmax(&mini, &maxi, obs->
obslon, 1, (
size_t) obs->
nr);
5067 LOG(2,
"Observer longitude range: %g ... %g deg", mini, maxi);
5068 gsl_stats_minmax(&mini, &maxi, obs->
obslat, 1, (
size_t) obs->
nr);
5069 LOG(2,
"Observer latitude range: %g ... %g deg", mini, maxi);
5070 gsl_stats_minmax(&mini, &maxi, obs->
vpz, 1, (
size_t) obs->
nr);
5071 LOG(2,
"View point altitude range: %g ... %g km", mini, maxi);
5072 gsl_stats_minmax(&mini, &maxi, obs->
vplon, 1, (
size_t) obs->
nr);
5073 LOG(2,
"View point longitude range: %g ... %g deg", mini, maxi);
5074 gsl_stats_minmax(&mini, &maxi, obs->
vplat, 1, (
size_t) obs->
nr);
5075 LOG(2,
"View point latitude range: %g ... %g deg", mini, maxi);
5076 gsl_stats_minmax(&mini, &maxi, obs->
tpz, 1, (
size_t) obs->
nr);
5077 LOG(2,
"Tangent point altitude range: %g ... %g km", mini, maxi);
5078 gsl_stats_minmax(&mini, &maxi, obs->
tplon, 1, (
size_t) obs->
nr);
5079 LOG(2,
"Tangent point longitude range: %g ... %g deg", mini, maxi);
5080 gsl_stats_minmax(&mini, &maxi, obs->
tplat, 1, (
size_t) obs->
nr);
5081 LOG(2,
"Tangent point latitude range: %g ... %g deg", mini, maxi);
5082 for (
int id = 0;
id < ctl->
nd;
id++) {
5083 gsl_stats_minmax(&mini, &maxi, obs->
rad[
id], 1, (
size_t) obs->
nr);
5085 LOG(2,
"Brightness temperature (%.4f cm^-1) range: %g ... %g K",
5086 ctl->
nu[
id], mini, maxi);
5088 LOG(2,
"Radiance (%.4f cm^-1) range: %g ... %g W/(m^2 sr cm^-1)",
5089 ctl->
nu[
id], mini, maxi);
5092 for (
int id = 0;
id < ctl->
nd;
id++) {
5093 gsl_stats_minmax(&mini, &maxi, obs->
tau[
id], 1, (
size_t) obs->
nr);
5095 LOG(2,
"Transmittance (%.4f cm^-1) range: %g ... %g",
5096 ctl->
nu[
id], mini, maxi);
5104 const char *basename,
5114 double filt, fsum = 0, nu2[
NSHAPE], *nurfm, *rad, radsum = 0;
5119 ALLOC(nurfm,
double,
5125 sprintf(filename,
"%s_%05d.asc", basename, (
int) (z * 1000));
5126 if (!(in = fopen(filename,
"r"))) {
5127 sprintf(filename,
"%s_%05d.asc", basename, (
int) (z * 1000) + 1);
5128 if (!(in = fopen(filename,
"r")))
5129 ERRMSG(
"Cannot find RFM data file!");
5138 nu2[n - 1] = nu[n - 1];
5139 for (
int i = 1; i < n - 1; i++)
5140 nu2[i] =
LIN(0.0, nu2[0], n - 1.0, nu2[n - 1], i);
5143 for (
int ipts = 0; ipts < npts; ipts++)
5144 if (nurfm[ipts] >= nu2[0] && nurfm[ipts] <= nu2[n - 1]) {
5145 const int idx =
locate_irr(nu2, n, nurfm[ipts]);
5146 filt =
LIN(nu2[idx], f[idx], nu2[idx + 1], f[idx + 1], nurfm[ipts]);
5148 radsum += filt * rad[ipts];
5156 return radsum / fsum;
5169 (int)
scan_ctl(argc, argv,
"KERNEL_RECOMP", -1,
"3", NULL);
5176 for (
int id = 0;
id < ctl->
nd;
id++)
5179 for (
int id = 0;
id < ctl->
nd;
id++)
5190 for (
int ig = 0; ig < ctl->
ng; ig++) {
5191 ret->
err_q[ig] =
scan_ctl(argc, argv,
"ERR_Q", ig,
"0", NULL);
5196 for (
int iw = 0; iw < ctl->
nw; iw++) {
5197 ret->
err_k[iw] =
scan_ctl(argc, argv,
"ERR_K", iw,
"0", NULL);
5204 for (
int icl = 0; icl < ctl->
ncl; icl++)
5208 for (
int isf = 0; isf < ctl->
nsf; isf++)
5215 const char *filename,
5222 char *line = NULL, *tok;
5224 size_t line_buf_size = 0;
5226 double dnu, nu0, nu1;
5231 LOG(1,
"Read RFM data: %s", filename);
5234 if (!(in = fopen(filename,
"r")))
5235 ERRMSG(
"Cannot open file!");
5238 for (
int i = 0; i < 4; i++)
5239 if (getline(&line, &line_buf_size, in) == -1)
5240 ERRMSG(
"Error while reading file header!");
5241 if (sscanf(line,
"%d %lg %lg %lg", npts, &nu0, &dnu, &nu1) != 4)
5242 ERRMSG(
"Invalid spectrum header format!");
5246 ERRMSG(
"Too many spectral grid points!");
5249 while (getline(&line, &line_buf_size, in) != -1 && ipts < *npts) {
5250 tok = strtok(line,
" \t\n");
5251 while (tok != NULL && ipts < *npts) {
5252 if (sscanf(tok,
"%lg", &rad[ipts]) == 1)
5254 tok = strtok(NULL,
" \t\n");
5260 ERRMSG(
"Error while reading RFM data!");
5263 for (ipts = 0; ipts < *npts; ipts++)
5264 nu[ipts] =
LIN(0.0, nu0, (
double) (*npts - 1), nu1, (
double) ipts);
5276 const char *filename,
5286 LOG(1,
"Read shape function: %s", filename);
5289 if (!(in = fopen(filename,
"r")))
5290 ERRMSG(
"Cannot open file!");
5294 while (fgets(line,
LEN, in))
5295 if (sscanf(line,
"%lg %lg", &x[*n], &y[*n]) == 2)
5297 ERRMSG(
"Too many data points!");
5304 ERRMSG(
"Could not read any data!");
5308 LOG(2,
"Number of data points: %d", *n);
5309 gsl_stats_minmax(&mini, &maxi, x, 1, (
size_t) *n);
5310 LOG(2,
"Range of x values: %.4f ... %.4f", mini, maxi);
5311 gsl_stats_minmax(&mini, &maxi, y, 1, (
size_t) *n);
5312 LOG(2,
"Range of y values: %g ... %g", mini, maxi);
5322 char filename[2 *
LEN], line[
LEN];
5324 double eps, press, temp, u;
5331 for (
int id = 0;
id < ctl->
nd;
id++)
5332 for (
int ig = 0; ig < ctl->
ng; ig++) {
5335 tbl->
np[id][ig] = -1;
5336 double eps_old = -999;
5337 double press_old = -999;
5338 double temp_old = -999;
5339 double u_old = -999;
5343 sprintf(filename,
"%s_%.4f_%s.%s", ctl->
tblbase,
5345 ctl->
tblfmt == 1 ?
"tab" :
"bin");
5348 LOG(1,
"Read emissivity table: %s", filename);
5351 if (!(in = fopen(filename,
"r"))) {
5352 WARN(
"Missing emissivity table: %s", filename);
5360 while (fgets(line,
LEN, in)) {
5363 if (sscanf(line,
"%lg %lg %lg %lg", &press, &temp, &u, &eps) != 4)
5367 if (u < UMIN || u >
UMAX || eps < EPSMIN || eps >
EPSMAX) {
5373 if (press != press_old) {
5375 if ((++tbl->
np[
id][ig]) >=
TBLNP)
5376 ERRMSG(
"Too many pressure levels!");
5377 tbl->
nt[id][ig][tbl->
np[id][ig]] = -1;
5381 if (temp != temp_old) {
5383 if ((++tbl->
nt[
id][ig][tbl->
np[
id][ig]]) >=
TBLNT)
5384 ERRMSG(
"Too many temperatures!");
5385 tbl->
nu[id][ig][tbl->
np[id][ig]]
5386 [tbl->
nt[id][ig][tbl->
np[id][ig]]] = -1;
5390 if ((eps > eps_old && u > u_old) || tbl->
nu[
id][ig][tbl->
np[
id][ig]]
5391 [tbl->
nt[
id][ig][tbl->
np[
id][ig]]] < 0) {
5394 if ((++tbl->
nu[
id][ig][tbl->
np[
id][ig]]
5395 [tbl->
nt[
id][ig][tbl->
np[
id][ig]]]) >=
TBLNU)
5396 ERRMSG(
"Too many column densities!");
5400 tbl->
p[id][ig][tbl->
np[id][ig]] = press;
5401 tbl->
t[id][ig][tbl->
np[id][ig]][tbl->
nt[id][ig][tbl->
np[id][ig]]]
5403 tbl->
u[id][ig][tbl->
np[id][ig]][tbl->
nt[id][ig][tbl->
np[id][ig]]]
5404 [tbl->
nu[id][ig][tbl->
np[id][ig]]
5405 [tbl->
nt[id][ig][tbl->
np[id][ig]]]] = (float) u;
5406 tbl->
eps[id][ig][tbl->
np[id][ig]][tbl->
nt[id][ig][tbl->
np[id][ig]]]
5407 [tbl->
nu[id][ig][tbl->
np[id][ig]]
5408 [tbl->
nt[id][ig][tbl->
np[id][ig]]]] = (float) eps;
5413 for (
int ip = 0; ip < tbl->
np[id][ig]; ip++) {
5414 tbl->
nt[id][ig][ip]++;
5415 for (
int it = 0; it < tbl->
nt[id][ig][ip]; it++)
5416 tbl->
nu[
id][ig][ip][it]++;
5421 else if (ctl->
tblfmt == 2) {
5428 ERRMSG(
"Too many pressure levels!");
5429 FREAD(tbl->
p[
id][ig],
double,
5430 (
size_t) tbl->
np[
id][ig],
5432 for (
int ip = 0; ip < tbl->
np[id][ig]; ip++) {
5433 FREAD(&tbl->
nt[
id][ig][ip],
int,
5436 if (tbl->
nt[
id][ig][ip] >
TBLNT)
5437 ERRMSG(
"Too many temperatures!");
5438 FREAD(tbl->
t[
id][ig][ip],
double,
5439 (
size_t) tbl->
nt[
id][ig][ip],
5441 for (
int it = 0; it < tbl->
nt[id][ig][ip]; it++) {
5442 FREAD(&tbl->
nu[
id][ig][ip][it],
int,
5445 if (tbl->
nu[
id][ig][ip][it] >
TBLNU)
5446 ERRMSG(
"Too many column densities!");
5447 FREAD(tbl->
u[
id][ig][ip][it],
float,
5448 (
size_t) tbl->
nu[
id][ig][ip][it],
5450 FREAD(tbl->
eps[
id][ig][ip][it],
float,
5451 (
size_t) tbl->
nu[
id][ig][ip][it],
5459 ERRMSG(
"Unknown look-up table format!");
5463 WARN(
"Column density or emissivity out of range (%d data points)!",
5470 for (
int ip = 0; ip < tbl->
np[id][ig]; ip++)
5472 "p[%2d]= %.5e hPa | T[0:%2d]= %.2f ... %.2f K | u[0:%3d]= %.5e ... %.5e molec/cm^2 | eps[0:%3d]= %.5e ... %.5e",
5473 ip, tbl->
p[
id][ig][ip], tbl->
nt[
id][ig][ip] - 1,
5474 tbl->
t[
id][ig][ip][0],
5475 tbl->
t[
id][ig][ip][tbl->
nt[
id][ig][ip] - 1],
5476 tbl->
nu[
id][ig][ip][0] - 1, tbl->
u[
id][ig][ip][0][0],
5477 tbl->
u[
id][ig][ip][0][tbl->
nu[
id][ig][ip][0] - 1],
5478 tbl->
nu[
id][ig][ip][0] - 1, tbl->
eps[
id][ig][ip][0][0],
5479 tbl->
eps[
id][ig][ip][0][tbl->
nu[
id][ig][ip][0] - 1]);
5494 const char *varname,
5496 const char *defvalue,
5501 char dummy[
LEN], fullname1[
LEN], fullname2[
LEN], line[
LEN],
5502 rvarname[
LEN], rval[
LEN];
5507 if (argv[1][0] !=
'-')
5508 if (!(in = fopen(argv[1],
"r")))
5509 ERRMSG(
"Cannot open file!");
5513 sprintf(fullname1,
"%s[%d]", varname, arridx);
5514 sprintf(fullname2,
"%s[*]", varname);
5516 sprintf(fullname1,
"%s", varname);
5517 sprintf(fullname2,
"%s", varname);
5522 while (fgets(line,
LEN, in))
5523 if (sscanf(line,
"%s %s %s", rvarname, dummy, rval) == 3)
5524 if (strcasecmp(rvarname, fullname1) == 0 ||
5525 strcasecmp(rvarname, fullname2) == 0) {
5529 for (
int i = 1; i < argc - 1; i++)
5530 if (strcasecmp(argv[i], fullname1) == 0 ||
5531 strcasecmp(argv[i], fullname2) == 0) {
5532 sprintf(rval,
"%s", argv[i + 1]);
5543 if (strlen(defvalue) > 0)
5544 sprintf(rval,
"%s", defvalue);
5546 ERRMSG(
"Missing variable %s!\n", fullname1);
5550 LOG(1,
"%s = %s", fullname1, rval);
5554 sprintf(value,
"%s", rval);
5566 const double D = sec / 86400 - 0.5;
5569 const double g =
DEG2RAD(357.529 + 0.98560028 * D);
5570 const double q = 280.459 + 0.98564736 * D;
5571 const double L =
DEG2RAD(q + 1.915 * sin(g) + 0.020 * sin(2 * g));
5574 const double e =
DEG2RAD(23.439 - 0.00000036 * D);
5577 const double dec = asin(sin(e) * sin(L));
5580 const double ra = atan2(cos(e) * sin(L), cos(L));
5583 const double GMST = 18.697374558 + 24.06570982441908 * D;
5586 const double LST = GMST + lon / 15;
5589 const double h = LST / 12 * M_PI - ra;
5592 const double latr =
DEG2RAD(lat);
5595 return RAD2DEG(acos(sin(latr) * sin(dec) + cos(latr) * cos(dec) * cos(h)));
5609 const size_t n = s_a->size1;
5612 gsl_vector *x_a = gsl_vector_alloc(n);
5615 atm2x(ctl, atm, x_a, NULL, NULL);
5616 for (
size_t i = 0; i < n; i++) {
5618 gsl_vector_set(x_a, i, ret->
err_press / 100 * gsl_vector_get(x_a, i));
5620 gsl_vector_set(x_a, i, ret->
err_temp);
5621 for (
int ig = 0; ig < ctl->
ng; ig++)
5622 if (iqa[i] ==
IDXQ(ig))
5623 gsl_vector_set(x_a, i, ret->
err_q[ig] / 100 * gsl_vector_get(x_a, i));
5624 for (
int iw = 0; iw < ctl->
nw; iw++)
5625 if (iqa[i] ==
IDXK(iw))
5626 gsl_vector_set(x_a, i, ret->
err_k[iw]);
5628 gsl_vector_set(x_a, i, ret->
err_clz);
5630 gsl_vector_set(x_a, i, ret->
err_cldz);
5631 for (
int icl = 0; icl < ctl->
ncl; icl++)
5632 if (iqa[i] ==
IDXCLK(icl))
5633 gsl_vector_set(x_a, i, ret->
err_clk[icl]);
5635 gsl_vector_set(x_a, i, ret->
err_sft);
5636 for (
int isf = 0; isf < ctl->
nsf; isf++)
5638 gsl_vector_set(x_a, i, ret->
err_sfeps[isf]);
5642 for (
size_t i = 0; i < n; i++)
5643 if (
POW2(gsl_vector_get(x_a, i)) <= 0)
5644 ERRMSG(
"Check a priori data (zero standard deviation)!");
5647 gsl_matrix_set_zero(s_a);
5648 for (
size_t i = 0; i < n; i++)
5649 gsl_matrix_set(s_a, i, i,
POW2(gsl_vector_get(x_a, i)));
5652 for (
size_t i = 0; i < n; i++)
5653 for (
size_t j = 0; j < n; j++)
5654 if (i != j && iqa[i] == iqa[j]) {
5661 if (iqa[i] ==
IDXP) {
5667 if (iqa[i] ==
IDXT) {
5673 for (
int ig = 0; ig < ctl->
ng; ig++)
5674 if (iqa[i] ==
IDXQ(ig)) {
5680 for (
int iw = 0; iw < ctl->
nw; iw++)
5681 if (iqa[i] ==
IDXK(iw)) {
5687 if (cz > 0 && ch > 0) {
5690 double x0[3], x1[3];
5696 exp(-
DIST(x0, x1) / ch -
5697 fabs(atm->
z[ipa[i]] - atm->
z[ipa[j]]) / cz);
5700 gsl_matrix_set(s_a, i, j, gsl_vector_get(x_a, i)
5701 * gsl_vector_get(x_a, j) * rho);
5706 gsl_vector_free(x_a);
5715 gsl_vector *sig_noise,
5716 gsl_vector *sig_formod,
5717 gsl_vector *sig_eps_inv) {
5719 static obs_t obs_err;
5722 const size_t m = sig_eps_inv->size;
5726 for (
int ir = 0; ir < obs_err.
nr; ir++)
5727 for (
int id = 0;
id < ctl->
nd;
id++)
5729 = (isfinite(obs->
rad[
id][ir]) ? ret->
err_noise[
id] : NAN);
5730 obs2y(ctl, &obs_err, sig_noise, NULL, NULL);
5734 for (
int ir = 0; ir < obs_err.
nr; ir++)
5735 for (
int id = 0;
id < ctl->
nd;
id++)
5738 obs2y(ctl, &obs_err, sig_formod, NULL, NULL);
5741 for (
size_t i = 0; i < m; i++)
5742 gsl_vector_set(sig_eps_inv, i, 1 / sqrt(
POW2(gsl_vector_get(sig_noise, i))
5748 for (
size_t i = 0; i < m; i++)
5749 if (gsl_vector_get(sig_eps_inv, i) <= 0)
5750 ERRMSG(
"Check measurement errors (zero standard deviation)!");
5761 double dummy, v[3], v0[3], v2[3];
5764 const size_t ip = gsl_stats_min_index(los->
z, 1, (
size_t) los->
np);
5767 if (ip <= 0 || ip >= (
size_t) los->
np - 1) {
5768 *tpz = los->
z[los->
np - 1];
5769 *tplon = los->
lon[los->
np - 1];
5770 *tplat = los->
lat[los->
np - 1];
5777 const double yy0 = los->
z[ip - 1];
5778 const double yy1 = los->
z[ip];
5779 const double yy2 = los->
z[ip + 1];
5780 const double x1 = sqrt(
POW2(los->
ds[ip]) -
POW2(yy1 - yy0));
5781 const double x2 = x1 + sqrt(
POW2(los->
ds[ip + 1]) -
POW2(yy2 - yy1));
5782 const double a = 1 / (x1 - x2) * (-(yy0 - yy1) / x1 + (yy0 - yy2) / x2);
5783 const double b = -(yy0 - yy1) / x1 - a * x1;
5784 const double c = yy0;
5787 const double x = -b / (2 * a);
5788 *tpz = a * x * x + b * x + c;
5791 for (
int i = 0; i < 3; i++)
5792 v[i] =
LIN(0.0, v0[i], x2, v2[i], x);
5806 const double remain,
5818 t1.tm_year = year - 1900;
5819 t1.tm_mon = mon - 1;
5825 *jsec = (double) timegm(&t1) - (double) timegm(&t0) + remain;
5837 static double w0[10];
5839 static int l0[10], nt;
5843 w0[nt] = omp_get_wtime();
5846 ERRMSG(
"Too many timers!");
5857 LOG(1,
"Timer '%s' (%s, %s, l%d-%d): %.3f sec",
5858 name, file, func, l0[nt - 1], line, omp_get_wtime() - w0[nt - 1]);
5869 const char *dirname,
5870 const char *filename,
5881 if (dirname != NULL)
5882 sprintf(file,
"%s/%s", dirname, filename);
5884 sprintf(file,
"%s", filename);
5887 LOG(1,
"Write atmospheric data: %s", file);
5890 if (!(out = fopen(file,
"w")))
5891 ERRMSG(
"Cannot create file!");
5895 "# $1 = time (seconds since 2000-01-01T00:00Z)\n"
5896 "# $2 = altitude [km]\n"
5897 "# $3 = longitude [deg]\n"
5898 "# $4 = latitude [deg]\n"
5899 "# $5 = pressure [hPa]\n" "# $6 = temperature [K]\n");
5900 for (
int ig = 0; ig < ctl->
ng; ig++)
5901 fprintf(out,
"# $%d = %s volume mixing ratio [ppv]\n",
5903 for (
int iw = 0; iw < ctl->
nw; iw++)
5904 fprintf(out,
"# $%d = extinction (window %d) [km^-1]\n", ++n, iw);
5906 fprintf(out,
"# $%d = cloud layer height [km]\n", ++n);
5907 fprintf(out,
"# $%d = cloud layer depth [km]\n", ++n);
5908 for (
int icl = 0; icl < ctl->
ncl; icl++)
5909 fprintf(out,
"# $%d = cloud layer extinction (%.4f cm^-1) [km^-1]\n",
5910 ++n, ctl->
clnu[icl]);
5913 fprintf(out,
"# $%d = surface layer height [km]\n", ++n);
5914 fprintf(out,
"# $%d = surface layer pressure [hPa]\n", ++n);
5915 fprintf(out,
"# $%d = surface layer temperature [K]\n", ++n);
5916 for (
int isf = 0; isf < ctl->
nsf; isf++)
5917 fprintf(out,
"# $%d = surface layer emissivity (%.4f cm^-1)\n",
5918 ++n, ctl->
sfnu[isf]);
5922 for (
int ip = 0; ip < atm->
np; ip++) {
5923 if (ip == 0 || atm->
time[ip] != atm->
time[ip - 1])
5925 fprintf(out,
"%.2f %g %g %g %g %g", atm->
time[ip], atm->
z[ip],
5926 atm->
lon[ip], atm->
lat[ip], atm->
p[ip], atm->
t[ip]);
5927 for (
int ig = 0; ig < ctl->
ng; ig++)
5928 fprintf(out,
" %g", atm->
q[ig][ip]);
5929 for (
int iw = 0; iw < ctl->
nw; iw++)
5930 fprintf(out,
" %g", atm->
k[iw][ip]);
5932 fprintf(out,
" %g %g", atm->
clz, atm->
cldz);
5933 for (
int icl = 0; icl < ctl->
ncl; icl++)
5934 fprintf(out,
" %g", atm->
clk[icl]);
5937 fprintf(out,
" %g", atm->
sft);
5938 for (
int isf = 0; isf < ctl->
nsf; isf++)
5939 fprintf(out,
" %g", atm->
sfeps[isf]);
5949 LOG(2,
"Number of data points: %d", atm->
np);
5950 gsl_stats_minmax(&mini, &maxi, atm->
time, 1, (
size_t) atm->
np);
5951 LOG(2,
"Time range: %.2f ... %.2f s", mini, maxi);
5952 gsl_stats_minmax(&mini, &maxi, atm->
z, 1, (
size_t) atm->
np);
5953 LOG(2,
"Altitude range: %g ... %g km", mini, maxi);
5954 gsl_stats_minmax(&mini, &maxi, atm->
lon, 1, (
size_t) atm->
np);
5955 LOG(2,
"Longitude range: %g ... %g deg", mini, maxi);
5956 gsl_stats_minmax(&mini, &maxi, atm->
lat, 1, (
size_t) atm->
np);
5957 LOG(2,
"Latitude range: %g ... %g deg", mini, maxi);
5958 gsl_stats_minmax(&mini, &maxi, atm->
p, 1, (
size_t) atm->
np);
5959 LOG(2,
"Pressure range: %g ... %g hPa", maxi, mini);
5960 gsl_stats_minmax(&mini, &maxi, atm->
t, 1, (
size_t) atm->
np);
5961 LOG(2,
"Temperature range: %g ... %g K", mini, maxi);
5962 for (
int ig = 0; ig < ctl->
ng; ig++) {
5963 gsl_stats_minmax(&mini, &maxi, atm->
q[ig], 1, (
size_t) atm->
np);
5964 LOG(2,
"Emitter %s range: %g ... %g ppv", ctl->
emitter[ig], mini, maxi);
5966 for (
int iw = 0; iw < ctl->
nw; iw++) {
5967 gsl_stats_minmax(&mini, &maxi, atm->
k[iw], 1, (
size_t) atm->
np);
5968 LOG(2,
"Extinction range (window %d): %g ... %g km^-1", iw, mini, maxi);
5970 if (ctl->
ncl > 0 && atm->
np == 0) {
5971 LOG(2,
"Cloud layer: z= %g km | dz= %g km | k= %g ... %g km^-1",
5974 LOG(2,
"Cloud layer: none");
5975 if (ctl->
nsf > 0 && atm->
np == 0) {
5977 "Surface layer: T_s = %g K | eps= %g ... %g",
5980 LOG(2,
"Surface layer: none");
5986 const char *filename,
5993 LOG(1,
"Write RFM data: %s", filename);
5996 if (!(out = fopen(filename,
"w")))
5997 ERRMSG(
"Cannot create file!");
6000 fprintf(out,
"%d\n", atm->
np);
6001 fprintf(out,
"*HGT [km]\n");
6002 for (
int ip = 0; ip < atm->
np; ip++)
6003 fprintf(out,
"%g\n", atm->
z[ip]);
6004 fprintf(out,
"*PRE [mb]\n");
6005 for (
int ip = 0; ip < atm->
np; ip++)
6006 fprintf(out,
"%g\n", atm->
p[ip]);
6007 fprintf(out,
"*TEM [K]\n");
6008 for (
int ip = 0; ip < atm->
np; ip++)
6009 fprintf(out,
"%g\n", atm->
t[ip]);
6010 for (
int ig = 0; ig < ctl->
ng; ig++) {
6011 fprintf(out,
"*%s [ppmv]\n", ctl->
emitter[ig]);
6012 for (
int ip = 0; ip < atm->
np; ip++)
6013 fprintf(out,
"%g\n", atm->
q[ig][ip] * 1e6);
6015 fprintf(out,
"*END\n");
6024 const char *dirname,
6025 const char *filename,
6027 const gsl_matrix *matrix,
6030 const char *rowspace,
6031 const char *colspace,
6036 char file[
LEN], quantity[
LEN];
6038 int *cida, *ciqa, *cipa, *cira, *rida, *riqa, *ripa, *rira;
6040 size_t i, j, nc, nr;
6065 if (dirname != NULL)
6066 sprintf(file,
"%s/%s", dirname, filename);
6068 sprintf(file,
"%s", filename);
6071 LOG(1,
"Write matrix: %s", file);
6074 if (!(out = fopen(file,
"w")))
6075 ERRMSG(
"Cannot create file!");
6078 if (rowspace[0] ==
'y') {
6081 "# $1 = Row: index (measurement space)\n"
6082 "# $2 = Row: channel wavenumber [cm^-1]\n"
6083 "# $3 = Row: time (seconds since 2000-01-01T00:00Z)\n"
6084 "# $4 = Row: view point altitude [km]\n"
6085 "# $5 = Row: view point longitude [deg]\n"
6086 "# $6 = Row: view point latitude [deg]\n");
6089 nr =
obs2y(ctl, obs, NULL, rida, rira);
6094 "# $1 = Row: index (state space)\n"
6095 "# $2 = Row: name of quantity\n"
6096 "# $3 = Row: time (seconds since 2000-01-01T00:00Z)\n"
6097 "# $4 = Row: altitude [km]\n"
6098 "# $5 = Row: longitude [deg]\n" "# $6 = Row: latitude [deg]\n");
6101 nr =
atm2x(ctl, atm, NULL, riqa, ripa);
6105 if (colspace[0] ==
'y') {
6108 "# $7 = Col: index (measurement space)\n"
6109 "# $8 = Col: channel wavenumber [cm^-1]\n"
6110 "# $9 = Col: time (seconds since 2000-01-01T00:00Z)\n"
6111 "# $10 = Col: view point altitude [km]\n"
6112 "# $11 = Col: view point longitude [deg]\n"
6113 "# $12 = Col: view point latitude [deg]\n");
6116 nc =
obs2y(ctl, obs, NULL, cida, cira);
6121 "# $7 = Col: index (state space)\n"
6122 "# $8 = Col: name of quantity\n"
6123 "# $9 = Col: time (seconds since 2000-01-01T00:00Z)\n"
6124 "# $10 = Col: altitude [km]\n"
6125 "# $11 = Col: longitude [deg]\n" "# $12 = Col: latitude [deg]\n");
6128 nc =
atm2x(ctl, atm, NULL, ciqa, cipa);
6132 fprintf(out,
"# $13 = Matrix element\n\n");
6136 while (i < nr && j < nc) {
6139 if (rowspace[0] ==
'y')
6140 fprintf(out,
"%d %.4f %.2f %g %g %g",
6141 (
int) i, ctl->
nu[rida[i]],
6142 obs->
time[rira[i]], obs->
vpz[rira[i]],
6146 fprintf(out,
"%d %s %.2f %g %g %g", (
int) i, quantity,
6147 atm->
time[ripa[i]], atm->
z[ripa[i]],
6148 atm->
lon[ripa[i]], atm->
lat[ripa[i]]);
6152 if (colspace[0] ==
'y')
6153 fprintf(out,
" %d %.4f %.2f %g %g %g",
6154 (
int) j, ctl->
nu[cida[j]],
6155 obs->
time[cira[j]], obs->
vpz[cira[j]],
6159 fprintf(out,
" %d %s %.2f %g %g %g", (
int) j, quantity,
6160 atm->
time[cipa[j]], atm->
z[cipa[j]],
6161 atm->
lon[cipa[j]], atm->
lat[cipa[j]]);
6165 fprintf(out,
" %g\n", gsl_matrix_get(matrix, i, j));
6168 if (sort[0] ==
'r') {
6202 const char *dirname,
6203 const char *filename,
6214 if (dirname != NULL)
6215 sprintf(file,
"%s/%s", dirname, filename);
6217 sprintf(file,
"%s", filename);
6220 LOG(1,
"Write observation data: %s", file);
6223 if (!(out = fopen(file,
"w")))
6224 ERRMSG(
"Cannot create file!");
6228 "# $1 = time (seconds since 2000-01-01T00:00Z)\n"
6229 "# $2 = observer altitude [km]\n"
6230 "# $3 = observer longitude [deg]\n"
6231 "# $4 = observer latitude [deg]\n"
6232 "# $5 = view point altitude [km]\n"
6233 "# $6 = view point longitude [deg]\n"
6234 "# $7 = view point latitude [deg]\n"
6235 "# $8 = tangent point altitude [km]\n"
6236 "# $9 = tangent point longitude [deg]\n"
6237 "# $10 = tangent point latitude [deg]\n");
6238 for (
int id = 0;
id < ctl->
nd;
id++)
6240 fprintf(out,
"# $%d = brightness temperature (%.4f cm^-1) [K]\n",
6243 fprintf(out,
"# $%d = radiance (%.4f cm^-1) [W/(m^2 sr cm^-1)]\n",
6245 for (
int id = 0;
id < ctl->
nd;
id++)
6246 fprintf(out,
"# $%d = transmittance (%.4f cm^-1) [-]\n", ++n,
6250 for (
int ir = 0; ir < obs->
nr; ir++) {
6251 if (ir == 0 || obs->
time[ir] != obs->
time[ir - 1])
6253 fprintf(out,
"%.2f %g %g %g %g %g %g %g %g %g", obs->
time[ir],
6257 for (
int id = 0;
id < ctl->
nd;
id++)
6258 fprintf(out,
" %g", obs->
rad[
id][ir]);
6259 for (
int id = 0;
id < ctl->
nd;
id++)
6260 fprintf(out,
" %g", obs->
tau[
id][ir]);
6269 LOG(2,
"Number of ray paths: %d", obs->
nr);
6270 gsl_stats_minmax(&mini, &maxi, obs->
time, 1, (
size_t) obs->
nr);
6271 LOG(2,
"Time range: %.2f ... %.2f s", mini, maxi);
6272 gsl_stats_minmax(&mini, &maxi, obs->
obsz, 1, (
size_t) obs->
nr);
6273 LOG(2,
"Observer altitude range: %g ... %g km", mini, maxi);
6274 gsl_stats_minmax(&mini, &maxi, obs->
obslon, 1, (
size_t) obs->
nr);
6275 LOG(2,
"Observer longitude range: %g ... %g deg", mini, maxi);
6276 gsl_stats_minmax(&mini, &maxi, obs->
obslat, 1, (
size_t) obs->
nr);
6277 LOG(2,
"Observer latitude range: %g ... %g deg", mini, maxi);
6278 gsl_stats_minmax(&mini, &maxi, obs->
vpz, 1, (
size_t) obs->
nr);
6279 LOG(2,
"View point altitude range: %g ... %g km", mini, maxi);
6280 gsl_stats_minmax(&mini, &maxi, obs->
vplon, 1, (
size_t) obs->
nr);
6281 LOG(2,
"View point longitude range: %g ... %g deg", mini, maxi);
6282 gsl_stats_minmax(&mini, &maxi, obs->
vplat, 1, (
size_t) obs->
nr);
6283 LOG(2,
"View point latitude range: %g ... %g deg", mini, maxi);
6284 gsl_stats_minmax(&mini, &maxi, obs->
tpz, 1, (
size_t) obs->
nr);
6285 LOG(2,
"Tangent point altitude range: %g ... %g km", mini, maxi);
6286 gsl_stats_minmax(&mini, &maxi, obs->
tplon, 1, (
size_t) obs->
nr);
6287 LOG(2,
"Tangent point longitude range: %g ... %g deg", mini, maxi);
6288 gsl_stats_minmax(&mini, &maxi, obs->
tplat, 1, (
size_t) obs->
nr);
6289 LOG(2,
"Tangent point latitude range: %g ... %g deg", mini, maxi);
6290 for (
int id = 0;
id < ctl->
nd;
id++) {
6291 gsl_stats_minmax(&mini, &maxi, obs->
rad[
id], 1, (
size_t) obs->
nr);
6293 LOG(2,
"Brightness temperature (%.4f cm^-1) range: %g ... %g K",
6294 ctl->
nu[
id], mini, maxi);
6296 LOG(2,
"Radiance (%.4f cm^-1) range: %g ... %g W/(m^2 sr cm^-1)",
6297 ctl->
nu[
id], mini, maxi);
6300 for (
int id = 0;
id < ctl->
nd;
id++) {
6301 gsl_stats_minmax(&mini, &maxi, obs->
tau[
id], 1, (
size_t) obs->
nr);
6303 LOG(2,
"Transmittance (%.4f cm^-1) range: %g ... %g",
6304 ctl->
nu[
id], mini, maxi);
6312 const char *filename,
6320 LOG(1,
"Write shape function: %s", filename);
6323 if (!(out = fopen(filename,
"w")))
6324 ERRMSG(
"Cannot create file!");
6328 "# $1 = shape function x-value [-]\n"
6329 "# $2 = shape function y-value [-]\n\n");
6332 for (
int i = 0; i < n; i++)
6333 fprintf(out,
"%.10g %.10g\n", x[i], y[i]);
6342 const char *quantity,
6348 static atm_t atm_aux;
6353 const size_t n = s->size1;
6356 gsl_vector *x_aux = gsl_vector_alloc(n);
6359 for (
size_t i = 0; i < n; i++)
6360 gsl_vector_set(x_aux, i, sqrt(gsl_matrix_get(s, i, i)));
6364 x2atm(ctl, x_aux, &atm_aux);
6365 sprintf(filename,
"atm_err_%s.tab", quantity);
6369 gsl_vector_free(x_aux);
6380 char filename[2 *
LEN];
6383 for (
int ig = 0; ig < ctl->
ng; ig++)
6384 for (
int id = 0;
id < ctl->
nd;
id++) {
6387 sprintf(filename,
"%s_%.4f_%s.%s", ctl->
tblbase,
6389 ctl->
tblfmt == 1 ?
"tab" :
"bin");
6392 LOG(1,
"Write emissivity table: %s", filename);
6395 if (!(out = fopen(filename,
"w")))
6396 ERRMSG(
"Cannot create file!");
6403 "# $1 = pressure [hPa]\n"
6404 "# $2 = temperature [K]\n"
6405 "# $3 = column density [molecules/cm^2]\n"
6406 "# $4 = emissivity [-]\n");
6409 for (
int ip = 0; ip < tbl->
np[id][ig]; ip++)
6410 for (
int it = 0; it < tbl->
nt[id][ig][ip]; it++) {
6412 for (
int iu = 0; iu < tbl->
nu[id][ig][ip][it]; iu++)
6413 fprintf(out,
"%g %g %e %e\n",
6414 tbl->
p[
id][ig][ip], tbl->
t[
id][ig][ip][it],
6415 tbl->
u[
id][ig][ip][it][iu],
6416 tbl->
eps[
id][ig][ip][it][iu]);
6421 else if (ctl->
tblfmt == 2) {
6425 FWRITE(tbl->
p[
id][ig],
double,
6426 (
size_t) tbl->
np[
id][ig],
6428 for (
int ip = 0; ip < tbl->
np[id][ig]; ip++) {
6432 FWRITE(tbl->
t[
id][ig][ip],
double,
6433 (
size_t) tbl->
nt[
id][ig][ip],
6435 for (
int it = 0; it < tbl->
nt[id][ig][ip]; it++) {
6436 FWRITE(&tbl->
nu[
id][ig][ip][it],
int,
6439 FWRITE(tbl->
u[
id][ig][ip][it],
float,
6440 (
size_t) tbl->
nu[
id][ig][ip][it],
6443 (
size_t) tbl->
nu[
id][ig][ip][it],
6451 ERRMSG(
"Unknown look-up table format!");
6462 const gsl_vector *x,
6468 for (
int ip = 0; ip < atm->
np; ip++)
6473 for (
int ip = 0; ip < atm->
np; ip++)
6478 for (
int ig = 0; ig < ctl->
ng; ig++)
6479 for (
int ip = 0; ip < atm->
np; ip++)
6485 for (
int iw = 0; iw < ctl->
nw; iw++)
6486 for (
int ip = 0; ip < atm->
np; ip++)
6497 for (
int icl = 0; icl < ctl->
ncl; icl++)
6504 for (
int isf = 0; isf < ctl->
nsf; isf++)
6512 const gsl_vector *x,
6516 *value = gsl_vector_get(x, *n);
6524 const gsl_vector *y,
6530 for (
int ir = 0; ir < obs->
nr; ir++)
6531 for (
int id = 0;
id < ctl->
nd;
id++)
6532 if (isfinite(obs->
rad[
id][ir])) {
6533 obs->
rad[id][ir] = gsl_vector_get(y, m);
void matrix_product(gsl_matrix *a, gsl_vector *b, int transpose, gsl_matrix *c)
void read_matrix(const char *dirname, const char *filename, gsl_matrix *matrix)
Read a numerical matrix from an ASCII file.
void timer(const char *name, const char *file, const char *func, int line, int mode)
void read_rfm_spec(const char *filename, double *nu, double *rad, int *npts)
Read a Reference Forward Model (RFM) ASCII spectrum.
void write_atm(const char *dirname, const char *filename, const ctl_t *ctl, const atm_t *atm)
void set_cov_apr(ret_t *ret, ctl_t *ctl, atm_t *atm, int *iqa, int *ipa, gsl_matrix *s_a)
int locate_reg(const double *xx, const int n, const double x)
Locate index for interpolation on a regular (uniform) grid.
void intpol_tbl_ega(const ctl_t *ctl, const tbl_t *tbl, const los_t *los, const int ip, double tau_path[ND][NG], double tau_seg[ND])
Interpolate emissivities and transmittances using the Emissivity Growth Approximation (EGA).
double read_obs_rfm(const char *basename, const double z, double *nu, double *f, int n)
Read and spectrally convolve an RFM output spectrum.
void formod_rfm(const ctl_t *ctl, const atm_t *atm, obs_t *obs)
Interface routine for the Reference Forward Model (RFM).
double ctmo2(const double nu, const double p, const double t)
Compute Oâ‚‚ collision-induced absorption coefficient.
void idx2name(const ctl_t *ctl, const int idx, char *quantity)
Convert a quantity index to a descriptive name string.
void read_ctl(int argc, char *argv[], ctl_t *ctl)
Read model control parameters from command-line and configuration input.
void formod_continua(const ctl_t *ctl, const los_t *los, const int ip, double *beta)
Compute total extinction including gaseous continua.
void raytrace(const ctl_t *ctl, const atm_t *atm, obs_t *obs, los_t *los, const int ir)
Perform line-of-sight (LOS) ray tracing through the atmosphere.
int locate_irr(const double *xx, const int n, const double x)
Locate index for interpolation on an irregular grid.
void time2jsec(const int year, const int mon, const int day, const int hour, const int min, const int sec, const double remain, double *jsec)
Converts time components to seconds since January 1, 2000, 12:00:00 UTC.
void x2atm(const ctl_t *ctl, const gsl_vector *x, atm_t *atm)
void atm2x_help(const double value, const int value_iqa, const int value_ip, gsl_vector *x, int *iqa, int *ipa, size_t *n)
Append a single atmospheric value to the state vector.
double ctmh2o(const double nu, const double p, const double t, const double q, const double u)
Compute water vapor continuum (optical depth).
void intpol_tbl_cga(const ctl_t *ctl, const tbl_t *tbl, const los_t *los, const int ip, double tau_path[ND][NG], double tau_seg[ND])
Interpolate emissivities and transmittances using the Curtis–Godson approximation (CGA).
void write_atm_rfm(const char *filename, const ctl_t *ctl, const atm_t *atm)
double intpol_tbl_u(const tbl_t *tbl, const int ig, const int id, const int ip, const int it, const double eps)
Interpolate column density from lookup tables as a function of emissivity.
double intpol_tbl_eps(const tbl_t *tbl, const int ig, const int id, const int ip, const int it, const double u)
Interpolate emissivity from lookup tables as a function of column density.
void write_tbl(const ctl_t *ctl, const tbl_t *tbl)
void analyze_avk(ret_t *ret, ctl_t *ctl, atm_t *atm, int *iqa, int *ipa, gsl_matrix *avk)
void intpol_atm(const ctl_t *ctl, const atm_t *atm, const double z, double *p, double *t, double *q, double *k)
Interpolate atmospheric state variables at a given altitude.
int find_emitter(const ctl_t *ctl, const char *emitter)
Find gas species index by name.
double sza(const double sec, const double lon, const double lat)
Compute the solar zenith angle for a given time and location.
void tangent_point(const los_t *los, double *tpz, double *tplon, double *tplat)
Determine the tangent point along a line of sight (LOS).
void read_ret(int argc, char *argv[], ctl_t *ctl, ret_t *ret)
void formod_pencil(const ctl_t *ctl, const tbl_t *tbl, const atm_t *atm, obs_t *obs, const int ir)
Compute line-of-sight radiances using the pencil-beam forward model.
void set_cov_meas(ret_t *ret, ctl_t *ctl, obs_t *obs, gsl_vector *sig_noise, gsl_vector *sig_formod, gsl_vector *sig_eps_inv)
double ctmco2(const double nu, const double p, const double t, const double u)
Compute carbon dioxide continuum (optical depth).
void write_stddev(const char *quantity, ret_t *ret, ctl_t *ctl, atm_t *atm, gsl_matrix *s)
void read_atm(const char *dirname, const char *filename, const ctl_t *ctl, atm_t *atm)
Read atmospheric profile data from an ASCII file.
void copy_obs(const ctl_t *ctl, obs_t *obs_dest, const obs_t *obs_src, const int init)
Copy or initialize observation geometry and radiance data.
void read_obs(const char *dirname, const char *filename, const ctl_t *ctl, obs_t *obs)
Read observation geometry and radiance data from an ASCII file.
void write_obs(const char *dirname, const char *filename, const ctl_t *ctl, const obs_t *obs)
void x2atm_help(double *value, const gsl_vector *x, size_t *n)
void cart2geo(const double *x, double *z, double *lon, double *lat)
Converts Cartesian coordinates to geographic coordinates.
void formod_fov(const ctl_t *ctl, obs_t *obs)
Apply field-of-view (FOV) convolution to modeled radiances.
void kernel(const ctl_t *ctl, const tbl_t *tbl, atm_t *atm, obs_t *obs, gsl_matrix *k)
Compute the Jacobian (kernel) matrix by finite differences.
void init_srcfunc(const ctl_t *ctl, tbl_t *tbl)
Initialize the source-function (Planck radiance) lookup table.
void matrix_invert(gsl_matrix *a)
double scan_ctl(int argc, char *argv[], const char *varname, const int arridx, const char *defvalue, char *value)
Scan control file or command-line arguments for a configuration variable.
void write_shape(const char *filename, const double *x, const double *y, const int n)
void formod(const ctl_t *ctl, const tbl_t *tbl, atm_t *atm, obs_t *obs)
Execute the selected forward model.
void formod_srcfunc(const ctl_t *ctl, const tbl_t *tbl, const double t, double *src)
Interpolate the source function (Planck radiance) at a given temperature.
void jsec2time(const double jsec, int *year, int *mon, int *day, int *hour, int *min, int *sec, double *remain)
Converts Julian seconds to calendar date and time components.
tbl_t * read_tbl(const ctl_t *ctl)
Read gas emissivity look-up tables for all channels and emitters.
void copy_atm(const ctl_t *ctl, atm_t *atm_dest, const atm_t *atm_src, const int init)
Copy or initialize atmospheric profile data.
size_t obs2y(const ctl_t *ctl, const obs_t *obs, gsl_vector *y, int *ida, int *ira)
Convert observation radiances into a measurement vector.
void y2obs(const ctl_t *ctl, const gsl_vector *y, obs_t *obs)
void hydrostatic(const ctl_t *ctl, atm_t *atm)
Adjust pressure profile using the hydrostatic equation.
void read_shape(const char *filename, double *x, double *y, int *n)
Read a two-column shape function from an ASCII file.
double ctmn2(const double nu, const double p, const double t)
Compute Nâ‚‚ collision-induced absorption coefficient.
double cost_function(gsl_vector *dx, gsl_vector *dy, gsl_matrix *s_a_inv, gsl_vector *sig_eps_inv)
size_t atm2x(const ctl_t *ctl, const atm_t *atm, gsl_vector *x, int *iqa, int *ipa)
Convert atmospheric data to state vector elements.
void analyze_avk_quantity(gsl_matrix *avk, int iq, int *ipa, size_t *n0, size_t *n1, double *cont, double *res)
void climatology(const ctl_t *ctl, atm_t *atm)
Initializes atmospheric climatology profiles.
void geo2cart(const double z, const double lon, const double lat, double *x)
Converts geographic coordinates (longitude, latitude, altitude) to Cartesian coordinates.
void write_matrix(const char *dirname, const char *filename, const ctl_t *ctl, const gsl_matrix *matrix, const atm_t *atm, const obs_t *obs, const char *rowspace, const char *colspace, const char *sort)
int locate_tbl(const float *xx, const int n, const double x)
Locate index for interpolation within emissivity table grids.
JURASSIC library declarations.
#define N
Maximum size of state vector.
#define IDXCLZ
Index for cloud layer height.
#define LEN
Maximum length of ASCII data lines.
#define RE
Mean radius of Earth [km].
#define BRIGHT(rad, nu)
Compute brightness temperature from radiance.
#define P0
Standard pressure [hPa].
#define KB
Boltzmann constant [kg m^2/(K s^2)].
#define POW2(x)
Compute the square of a value.
#define NFOV
Number of ray paths used for FOV calculations.
#define FWRITE(ptr, type, size, out)
Write binary data to a file.
#define DOTP(a, b)
Compute dot product of two 3D vectors.
#define O2
Oxygen concentration.
#define UMAX
Maximum column density [molecules/cm^2].
#define MIN(a, b)
Determine the minimum of two values.
#define IDXCLDZ
Index for cloud layer depth.
#define ERRMSG(...)
Print an error message with contextual information and terminate the program.
#define RFMNPTS
Maximum number of RFM spectral grid points.
#define IDXK(iw)
Indices for extinction.
#define M
Maximum size of measurement vector.
#define G0
Standard gravity [m/s^2].
#define NQ
Maximum number of quantities.
#define ND
Maximum number of radiance channels.
#define NA
Avogadro's number.
#define LOGY(x0, y0, x1, y1, x)
Compute logarithmic interpolation in y.
#define NSHAPE
Maximum number of shape function grid points.
#define IDXSFT
Index for surface layer temperature.
#define RI
Ideal gas constant [J/(mol K)].
#define NORM(a)
Compute the norm (magnitude) of a 3D vector.
#define IDXSFEPS(isf)
Indices for surface layer emissivity.
#define IDXCLK(icl)
Indices for cloud layer extinction.
#define LOGX(x0, y0, x1, y1, x)
Compute logarithmic interpolation in x.
#define TOK(line, tok, format, var)
Tokenize a string and parse a variable.
#define WARN(...)
Print a warning message with contextual information.
#define TBLNU
Maximum number of column densities in emissivity tables.
#define IDXP
Index for pressure.
#define ALLOC(ptr, type, n)
Allocate memory for an array.
#define DEG2RAD(deg)
Convert degrees to radians.
#define TSUN
Effective temperature of the sun [K].
#define RAD2DEG(rad)
Convert radians to degrees.
#define TBLNT
Maximum number of temperatures in emissivity tables.
#define NP
Maximum number of atmospheric data points.
#define POW3(x)
Compute the cube of a value.
#define PLANCK(T, nu)
Compute the Planck function in wavenumber form.
#define NG
Maximum number of emitters.
#define EPSMAX
Maximum emissivity.
#define LOG(level,...)
Print a log message with a specified logging level.
#define TBLNS
Maximum number of source function temperature levels.
#define N2
Nitrogen concentration.
#define REFRAC(p, T)
Compute air refractivity (n - 1).
#define TBLNP
Maximum number of pressure levels in emissivity tables.
#define NSF
Maximum number of surface layer spectral grid points.
#define NCL
Maximum number of cloud layer spectral grid points.
#define DIST(a, b)
Compute Cartesian distance between two 3D vectors.
#define FREAD(ptr, type, size, out)
Read binary data from a file.
#define LIN(x0, y0, x1, y1, x)
Compute linear interpolation.
#define NLOS
Maximum number of LOS points.
#define NR
Maximum number of ray paths.
#define IDXQ(ig)
Indices for volume mixing ratios.
#define TMAX
Maximum temperature for source function [K].
#define TMIN
Minimum temperature for source function [K].
#define NW
Maximum number of spectral windows.
#define MAX(a, b)
Determine the maximum of two values.
#define IDXT
Index for temperature.
Atmospheric profile data.
double time[NP]
Time (seconds since 2000-01-01T00:00Z).
double sfeps[NSF]
Surface emissivity.
double k[NW][NP]
Extinction [km^-1].
double lat[NP]
Latitude [deg].
double lon[NP]
Longitude [deg].
double t[NP]
Temperature [K].
double clz
Cloud layer height [km].
int np
Number of data points.
double cldz
Cloud layer depth [km].
double sft
Surface temperature [K].
double z[NP]
Altitude [km].
double clk[NCL]
Cloud layer extinction [km^-1].
double q[NG][NP]
Volume mixing ratio [ppv].
double p[NP]
Pressure [hPa].
int write_matrix
Write matrix file (0=no, 1=yes).
int nw
Number of spectral windows.
double retp_zmin
Minimum altitude for pressure retrieval [km].
double nu[ND]
Centroid wavenumber of each channel [cm^-1].
int ig_co2
Emitter index of CO2.
double retk_zmax[NW]
Maximum altitude for extinction retrieval [km].
double sfnu[NSF]
Surface layer wavenumber [cm^-1].
char rfmhit[LEN]
HITRAN file for RFM.
char tblbase[LEN]
Basename for table files and filter function files.
char rfmbin[LEN]
Path to RFM binary.
double hydz
Reference height for hydrostatic pressure profile (-999 to skip) [km].
int ctm_co2
Compute CO2 continuum (0=no, 1=yes).
double rett_zmax
Maximum altitude for temperature retrieval [km].
int ret_sfeps
Retrieve surface layer emissivity (0=no, 1=yes).
int ret_sft
Retrieve surface layer temperature (0=no, 1=yes).
int ret_clz
Retrieve cloud layer height (0=no, 1=yes).
int ctm_n2
Compute N2 continuum (0=no, 1=yes).
char fov[LEN]
Field-of-view data file.
char rfmxsc[NG][LEN]
Emitter cross-section files for RFM.
int window[ND]
Window index of each channel.
int ctm_h2o
Compute H2O continuum (0=no, 1=yes).
int formod
Forward model (0=CGA, 1=EGA, 2=RFM).
double retq_zmax[NG]
Maximum altitude for volume mixing ratio retrieval [km].
double retq_zmin[NG]
Minimum altitude for volume mixing ratio retrieval [km].
int ng
Number of emitters.
double clnu[NCL]
Cloud layer wavenumber [cm^-1].
int refrac
Take into account refractivity (0=no, 1=yes).
int ig_o2
Emitter index of O2.
double rett_zmin
Minimum altitude for temperature retrieval [km].
double sfsza
Solar zenith angle at the surface [deg] (-999=auto).
int nd
Number of radiance channels.
int fov_n
Field-of-view number of data points.
int sftype
Surface treatment (0=none, 1=emissions, 2=downward, 3=solar).
double retk_zmin[NW]
Minimum altitude for extinction retrieval [km].
int ncl
Number of cloud layer spectral grid points.
int ig_n2
Emitter index of N2.
double fov_dz[NSHAPE]
Field-of-view vertical distance [km].
int ctm_o2
Compute O2 continuum (0=no, 1=yes).
int ret_clk
Retrieve cloud layer extinction (0=no, 1=yes).
char emitter[NG][LEN]
Name of each emitter.
int nsf
Number of surface layer spectral grid points.
double rayds
Maximum step length for raytracing [km].
int ret_cldz
Retrieve cloud layer depth (0=no, 1=yes).
int ig_h2o
Emitter index of H2O.
int tblfmt
Look-up table file format (1=ASCII, 2=binary).
double raydz
Vertical step length for raytracing [km].
int write_bbt
Use brightness temperature instead of radiance (0=no, 1=yes).
double fov_w[NSHAPE]
Field-of-view weighting factor.
double retp_zmax
Maximum altitude for pressure retrieval [km].
double z[NLOS]
Altitude [km].
double eps[NLOS][ND]
Segment emissivity.
double cgu[NLOS][NG]
Curtis-Godson column density [molecules/cm^2].
double q[NLOS][NG]
Volume mixing ratio [ppv].
double sft
Surface temperature [K].
double cgt[NLOS][NG]
Curtis-Godson temperature [K].
double lon[NLOS]
Longitude [deg].
double ds[NLOS]
Segment length [km].
int np
Number of LOS points.
double u[NLOS][NG]
Column density [molecules/cm^2].
double lat[NLOS]
Latitude [deg].
double src[NLOS][ND]
Segment source function [W/(m^2 sr cm^-1)].
double k[NLOS][ND]
Extinction [km^-1].
double sfeps[ND]
Surface emissivity.
double cgp[NLOS][NG]
Curtis-Godson pressure [hPa].
double t[NLOS]
Temperature [K].
double p[NLOS]
Pressure [hPa].
Observation geometry and radiance data.
double tau[ND][NR]
Transmittance of ray path.
double rad[ND][NR]
Radiance [W/(m^2 sr cm^-1)].
double tplon[NR]
Tangent point longitude [deg].
double vpz[NR]
View point altitude [km].
double vplat[NR]
View point latitude [deg].
double obslon[NR]
Observer longitude [deg].
double obslat[NR]
Observer latitude [deg].
double obsz[NR]
Observer altitude [km].
double tplat[NR]
Tangent point latitude [deg].
double vplon[NR]
View point longitude [deg].
double time[NR]
Time (seconds since 2000-01-01T00:00Z).
double tpz[NR]
Tangent point altitude [km].
int nr
Number of ray paths.
Retrieval control parameters.
double err_press_cz
Vertical correlation length for pressure error [km].
double err_press
Pressure error [%].
double err_k_cz[NW]
Vertical correlation length for extinction error [km].
int err_ana
Carry out error analysis (0=no, 1=yes).
double err_k_ch[NW]
Horizontal correlation length for extinction error [km].
double err_temp_cz
Vertical correlation length for temperature error [km].
double err_formod[ND]
Forward model error [%].
double conv_dmin
Minimum normalized step size in state space.
double err_temp
Temperature error [K].
double err_q_cz[NG]
Vertical correlation length for volume mixing ratio error [km].
double err_noise[ND]
Noise error [W/(m^2 sr cm^-1)].
double err_clz
Cloud height error [km].
double err_sft
Surface temperature error [K].
double err_clk[NCL]
Cloud extinction error [km^-1].
double err_temp_ch
Horizontal correlation length for temperature error [km].
int kernel_recomp
Re-computation of kernel matrix (number of iterations).
int conv_itmax
Maximum number of iterations.
double err_cldz
Cloud depth error [km].
double err_press_ch
Horizontal correlation length for pressure error [km].
double err_q_ch[NG]
Horizontal correlation length for volume mixing ratio error [km].
double err_q[NG]
Volume mixing ratio error [%].
char dir[LEN]
Working directory.
double err_sfeps[NSF]
Surface emissivity error.
double err_k[NW]
Extinction error [km^-1].
Emissivity look-up tables.
double sr[TBLNS][ND]
Source function radiance [W/(m^2 sr cm^-1)].
double p[ND][NG][TBLNP]
Pressure [hPa].
int nu[ND][NG][TBLNP][TBLNT]
Number of column densities.
int nt[ND][NG][TBLNP]
Number of temperatures.
float eps[ND][NG][TBLNP][TBLNT][TBLNU]
Emissivity.
float u[ND][NG][TBLNP][TBLNT][TBLNU]
Column density [molecules/cm^2].
double t[ND][NG][TBLNP][TBLNT]
Temperature [K].
double st[TBLNS]
Source function temperature [K].
int np[ND][NG]
Number of pressure levels.