447 { 22.235080, 0.1090, 2.143, 27.84e-3},
448 { 67.813960, 0.0011, 8.730, 27.60e-3},
449 { 119.995940, 0.0007, 8.347, 27.00e-3},
450 { 183.310117, 2.3000, 0.653, 31.64e-3},
451 { 321.225644, 0.0464, 6.156, 21.40e-3},
452 { 325.152919, 1.5400, 1.515, 29.70e-3},
453 { 336.187000, 0.0010, 9.802, 26.50e-3},
454 { 380.197372, 11.9000, 1.018, 30.36e-3},
455 { 390.134508, 0.0044, 7.318, 19.00e-3},
456 { 437.346667, 0.0637, 5.015, 13.70e-3},
457 { 439.150812, 0.9210, 3.561, 16.40e-3},
458 { 443.018295, 0.1940, 5.015, 14.40e-3},
459 { 448.001075, 10.6000, 1.370, 23.80e-3},
460 { 470.888947, 0.3300, 3.561, 18.20e-3},
461 { 474.689127, 1.2800, 2.342, 19.80e-3},
462 { 488.491133, 0.2530, 2.814, 24.90e-3},
463 { 503.568532, 0.0374, 6.693, 11.50e-3},
464 { 504.482692, 0.0125, 6.693, 11.90e-3},
465 { 556.936002, 510.0000, 0.114, 30.00e-3},
466 { 620.700807, 5.0900, 2.150, 22.30e-3},
467 { 658.006500, 0.2740, 7.767, 30.00e-3},
468 { 752.033227, 250.0000, 0.336, 28.60e-3},
469 { 841.073593, 0.0130, 8.113, 14.10e-3},
470 { 859.865000, 0.1330, 7.989, 28.60e-3},
471 { 899.407000, 0.0550, 7.845, 28.60e-3},
472 { 902.555000, 0.0380, 8.360, 26.40e-3},
473 { 906.205524, 0.1830, 5.039, 23.40e-3},
474 { 916.171582, 8.5600, 1.369, 25.30e-3},
475 { 970.315022, 9.1600, 1.842, 24.00e-3},
476 { 987.926764, 138.0000, 0.178, 28.60e-3}};
480 const Numeric CC_MPM87 = 1.00000;
481 const Numeric CL_MPM87 = 1.00000;
482 const Numeric CW_MPM87 = 1.00000;
488 if ( model ==
"MPM87" )
494 else if ( model ==
"MPM87Lines" )
500 else if ( model ==
"MPM87Continuum" )
506 else if ( model ==
"user" )
515 os <<
"H2O-MPM87: ERROR! Wrong model values given.\n"
516 <<
"Valid models are: 'MPM87', 'MPM87Lines', 'MPM87Continuum', and 'user'" <<
'\n';
517 throw runtime_error(os.str());
519 out3 <<
"H2O-MPM87: (model=" << model <<
") parameter values in use:\n"
520 <<
" CC = " << CC <<
"\n"
521 <<
" CL = " << CL <<
"\n"
522 <<
" CW = " << CW <<
"\n";
526 const Index i_first = 0;
527 const Index i_last = 29;
533 assert ( n_p==t_abs.
nelem() );
534 assert ( n_p==vmr.
nelem() );
538 assert ( n_f==xsec.
nrows() );
539 assert ( n_p==xsec.
ncols() );
542 for (
Index i=0; i<n_p; ++i )
548 Numeric theta = (300.0 / t_abs[i]);
554 Numeric Nppc = CC * pwv_dummy * pow(theta, (
Numeric)3.0) * 1.000e-5
555 * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (
Numeric)7.8)) );
558 for (
Index s=0; s<n_f; ++s )
566 for (
Index l = i_first; l <= i_last; ++l )
569 Numeric strength = CL * pwv_dummy * mpm87[l][1]
570 * pow(theta,(
Numeric)3.5) * exp(mpm87[l][2]*(1.000-theta));
572 Numeric gam = CW * mpm87[l][3] *
573 ( (4.80 * pwv * pow(theta, (
Numeric)1.1)) +
574 ( pda * pow(theta, (
Numeric)0.6)) );
581 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) );
631 { 22.235080, 0.1090, 2.143, 28.11, 0.69, 4.80, 1.00},
632 { 67.813960, 0.0011, 8.735, 28.58, 0.69, 4.93, 0.82},
633 { 119.995940, 0.0007, 8.356, 29.48, 0.70, 4.78, 0.79},
634 { 183.310074, 2.3000, 0.668, 28.13, 0.64, 5.30, 0.85},
635 { 321.225644, 0.0464, 6.181, 23.03, 0.67, 4.69, 0.54},
636 { 325.152919, 1.5400, 1.540, 27.83, 0.68, 4.85, 0.74},
637 { 336.187000, 0.0010, 9.829, 26.93, 0.69, 4.74, 0.61},
638 { 380.197372, 11.9000, 1.048, 28.73, 0.69, 5.38, 0.84},
639 { 390.134508, 0.0044, 7.350, 21.52, 0.63, 4.81, 0.55},
640 { 437.346667, 0.0637, 5.050, 18.45, 0.60, 4.23, 0.48},
641 { 439.150812, 0.9210, 3.596, 21.00, 0.63, 4.29, 0.52},
642 { 443.018295, 0.1940, 5.050, 18.60, 0.60, 4.23, 0.50},
643 { 448.001075, 10.6000, 1.405, 26.32, 0.66, 4.84, 0.67},
644 { 470.888947, 0.3300, 3.599, 21.52, 0.66, 4.57, 0.65},
645 { 474.689127, 1.2800, 2.381, 23.55, 0.65, 4.65, 0.64},
646 { 488.491133, 0.2530, 2.853, 26.02, 0.69, 5.04, 0.72},
647 { 503.568532, 0.0374, 6.733, 16.12, 0.61, 3.98, 0.43},
648 { 504.482692, 0.0125, 6.733, 16.12, 0.61, 4.01, 0.45},
649 { 556.936002, 510.0000, 0.159, 32.10, 0.69, 4.11, 1.00},
650 { 620.700807, 5.0900, 2.200, 24.38, 0.71, 4.68, 0.68},
651 { 658.006500, 0.2740, 7.820, 32.10, 0.69, 4.14, 1.00},
652 { 752.033227, 250.0000, 0.396, 30.60, 0.68, 4.09, 0.84},
653 { 841.073593, 0.0130, 8.180, 15.90, 0.33, 5.76, 0.45},
654 { 859.865000, 0.1330, 7.989, 30.60, 0.68, 4.09, 0.84},
655 { 899.407000, 0.0550, 7.917, 29.85, 0.68, 4.53, 0.90},
656 { 902.555000, 0.0380, 8.432, 28.65, 0.70, 5.10, 0.95},
657 { 906.205524, 0.1830, 5.111, 24.08, 0.70, 4.70, 0.53},
658 { 916.171582, 8.5600, 1.442, 26.70, 0.70, 4.78, 0.78},
659 { 970.315022, 9.1600, 1.920, 25.50, 0.64, 4.94, 0.67},
660 { 987.926764, 138.0000, 0.258, 29.85, 0.68, 4.55, 0.90}};
665 const Numeric CC_MPM89 = 1.00000;
666 const Numeric CL_MPM89 = 1.00000;
667 const Numeric CW_MPM89 = 1.00000;
673 if ( model ==
"MPM89" )
679 else if ( model ==
"MPM89Lines" )
685 else if ( model ==
"MPM89Continuum" )
691 else if ( model ==
"user" )
700 os <<
"H2O-MPM89: ERROR! Wrong model values given.\n"
701 <<
"Valid models are: 'MPM89', 'MPM89Lines', 'MPM89Continuum', and 'user'" <<
'\n';
702 throw runtime_error(os.str());
704 out3 <<
"H2O-MPM89: (model=" << model <<
") parameter values in use:\n"
705 <<
" CC = " << CC <<
"\n"
706 <<
" CL = " << CL <<
"\n"
707 <<
" CW = " << CW <<
"\n";
711 const Index i_first = 0;
712 const Index i_last = 29;
718 assert ( n_p==t_abs.
nelem() );
719 assert ( n_p==vmr.
nelem() );
723 assert ( n_f==xsec.
nrows() );
724 assert ( n_p==xsec.
ncols() );
727 for (
Index i=0; i<n_p; ++i )
733 Numeric theta = (300.0 / t_abs[i]);
739 Numeric Nppc = CC * pwv_dummy * pow(theta, (
Numeric)3.0) * 1.000e-5
740 * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (
Numeric)7.5)) );
743 for (
Index s=0; s<n_f; ++s )
751 for (
Index l = i_first; l <= i_last; ++l )
754 Numeric strength = CL * pwv_dummy * mpm89[l][1]
755 * pow(theta, (
Numeric)3.5) * exp(mpm89[l][2]*(1.000-theta));
757 Numeric gam = CW * mpm89[l][3] * 0.001
758 * ( mpm89[l][5] * pwv * pow(theta, mpm89[l][6]) +
759 pda * pow(theta, mpm89[l][4]) );
768 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) );
855 { 22235.0800, 0.10947, 2.1678, 2.811, 4.80, 0.69, 0.61},
856 { 67803.9600, 0.00111, 8.7518, 2.858, 4.93, 0.69, 0.82},
857 { 119995.9400, 0.00072, 8.3688, 2.948, 4.78, 0.70, 0.79},
858 { 183310.1170, 2.30351, 0.6794, 3.050, 5.30, 0.76, 0.85},
859 { 321225.6400, 0.04646, 6.1792, 2.303, 4.69, 0.67, 0.54},
860 { 325152.9190, 1.53869, 1.5408, 2.783, 4.85, 0.68, 0.74},
861 { 336227.6200, 0.00099, 9.8233, 2.693, 4.74, 0.64, 0.61},
862 { 380197.3720, 11.9079, 1.0439, 2.873, 5.38, 0.72, 0.89},
863 { 390134.5080, 0.00437, 7.3408, 2.152, 4.81, 0.63, 0.55},
864 { 437346.6670, 0.06378, 5.0384, 1.845, 4.23, 0.60, 0.48},
865 { 439150.8120, 0.92144, 3.5853, 2.100, 4.29, 0.63, 0.62},
866 { 443018.2950, 0.19384, 5.0384, 1.860, 4.23, 0.60, 0.50},
867 { 448001.0750, 10.6190, 1.3952, 2.632, 4.84, 0.66, 0.67},
868 { 470888.9470, 0.33005, 3.5853, 2.152, 4.57, 0.66, 0.65},
869 { 474689.1270, 1.27660, 2.3674, 2.355, 4.65, 0.65, 0.64},
870 { 488491.1330, 0.25312, 2.8391, 2.602, 5.04, 0.69, 0.72},
871 { 503568.5320, 0.03746, 6.7158, 1.612, 3.98, 0.61, 0.43},
872 { 504482.6920, 0.01250, 6.7158, 1.612, 4.01, 0.61, 0.45},
873 { 547676.4400, 1.01467, 0.1427, 2.600, 4.50, 0.69, 1.00},
874 { 552020.9600, 0.18668, 0.1452, 2.600, 4.50, 0.69, 1.00},
875 { 556936.0020, 510.51086, 0.1405, 3.210, 4.11, 0.69, 1.00},
876 { 620700.8070, 5.10539, 2.3673, 2.438, 4.68, 0.71, 0.68},
877 { 645905.6200, 0.00667, 8.6065, 1.800, 4.00, 0.60, 0.43},
878 { 658006.5500, 0.27451, 7.7889, 3.210, 4.14, 0.69, 1.00},
879 { 752033.2270, 249.68466, 0.3625, 3.060, 4.09, 0.68, 0.84},
880 { 841051.1620, 0.01308, 8.1347, 1.590, 5.76, 0.33, 0.45},
881 { 859965.6490, 0.13326, 8.0114, 3.060, 4.09, 0.68, 0.84},
882 { 899302.1710, 0.05492, 7.8676, 2.985, 4.53, 0.68, 0.90},
883 { 902609.4360, 0.03854, 8.3823, 2.865, 5.10, 0.70, 0.95},
884 { 906206.1180, 0.18323, 5.0628, 2.408, 4.70, 0.70, 0.53},
885 { 916171.5820, 8.56444, 1.3943, 2.670, 4.78, 0.70, 0.78},
886 { 923113.1900, 0.00784, 10.2441, 2.900, 5.00, 0.66, 0.67},
887 { 970315.0220, 9.16280, 1.8673, 2.550, 4.94, 0.64, 0.67},
888 { 987926.7640, 138.28461, 0.2045, 2.985, 4.55, 0.68, 0.90},
890 { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}};
898 const Numeric CC_MPM02 = 1.00000;
899 const Numeric CL_MPM02 = 1.00000;
900 const Numeric CW_MPM02 = 1.00000;
909 if ( model ==
"MPM02" )
917 else if ( model ==
"MPM02Lines" )
925 else if ( model ==
"MPM02Continuum" )
933 else if ( model ==
"user" )
945 os <<
"H2O-MPM02: ERROR! Wrong model values given.\n"
946 <<
"Valid models are: 'MPM02', 'MPM02Lines', 'MPM02Continuum', and 'user'" <<
'\n';
947 throw runtime_error(os.str());
949 out3 <<
"H2O-MPM02: (model=" << model <<
") parameter values in use:\n"
950 <<
" CC = " << CC <<
"\n"
951 <<
" CL = " << CL <<
"\n"
952 <<
" CW = " << CW <<
"\n";
959 assert ( n_p==t_abs.
nelem() );
960 assert ( n_p==vmr.
nelem() );
964 assert ( n_f==xsec.
nrows() );
965 assert ( n_p==xsec.
ncols() );
968 for (
Index i=0; i<n_p; ++i )
974 Numeric theta = (300.0 / t_abs[i]);
982 for (
Index s=0; s<n_f; ++s )
987 for (
Index l = i_first; l <= i_last; ++l )
993 if ( (l >= 0) && (l <= 33) )
995 strength = CL * pwv_dummy * mpm02[l][1] *
996 pow(theta, (
Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta));
998 gam = CW * mpm02[l][3] * 0.001 *
999 ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) +
1000 ( pda * pow(theta, mpm02[l][5])) );
1004 strength = CC * pwv_dummy * mpm02[l][1] *
1005 pow(theta, (
Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta));
1007 gam = mpm02[l][3] * 0.001 *
1008 ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) +
1009 ( pda * pow(theta, mpm02[l][5])) );
1014 os <<
"H2O-MPM02: wrong line number detected l=" << l <<
" (0-34)\n";
1015 throw runtime_error(os.str());
1090 const Numeric mpm93[35][7] = {
1091 { 22.235080, 0.01130, 2.143, 2.811, 4.80, 0.69, 1.00},
1092 { 67.803960, 0.00012, 8.735, 2.858, 4.93, 0.69, 0.82},
1093 { 119.995940, 0.00008, 8.356, 2.948, 4.78, 0.70, 0.79},
1094 { 183.310091, 0.24200, 0.668, 3.050, 5.30, 0.64, 0.85},
1095 { 321.225644, 0.00483, 6.181, 2.303, 4.69, 0.67, 0.54},
1096 { 325.152919, 0.14990, 1.540, 2.783, 4.85, 0.68, 0.74},
1097 { 336.222601, 0.00011, 9.829, 2.693, 4.74, 0.69, 0.61},
1098 { 380.197372, 1.15200, 1.048, 2.873, 5.38, 0.54, 0.89},
1099 { 390.134508, 0.00046, 7.350, 2.152, 4.81, 0.63, 0.55},
1100 { 437.346667, 0.00650, 5.050, 1.845, 4.23, 0.60, 0.48},
1101 { 439.150812, 0.09218, 3.596, 2.100, 4.29, 0.63, 0.52},
1102 { 443.018295, 0.01976, 5.050, 1.860, 4.23, 0.60, 0.50},
1103 { 448.001075, 1.03200, 1.405, 2.632, 4.84, 0.66, 0.67},
1104 { 470.888947, 0.03297, 3.599, 2.152, 4.57, 0.66, 0.65},
1105 { 474.689127, 0.12620, 2.381, 2.355, 4.65, 0.65, 0.64},
1106 { 488.491133, 0.02520, 2.853, 2.602, 5.04, 0.69, 0.72},
1107 { 503.568532, 0.00390, 6.733, 1.612, 3.98, 0.61, 0.43},
1108 { 504.482692, 0.00130, 6.733, 1.612, 4.01, 0.61, 0.45},
1111 { 547.676440, 0.97010*0.00199983, 0.114, 2.600, 4.50, 0.70, 1.00},
1112 { 552.020960, 1.47700*0.00037200, 0.114, 2.600, 4.50, 0.70, 1.00},
1113 { 556.936002, 48.74000, 0.159, 3.210, 4.11, 0.69, 1.00},
1114 { 620.700807, 0.50120, 2.200, 2.438, 4.68, 0.71, 0.68},
1115 { 645.866155, 0.00713, 8.580, 1.800, 4.00, 0.60, 0.50},
1116 { 658.005280, 0.03022, 7.820, 3.210, 4.14, 0.69, 1.00},
1117 { 752.033227, 23.96000, 0.396, 3.060, 4.09, 0.68, 0.84},
1118 { 841.053973, 0.00140, 8.180, 1.590, 5.76, 0.33, 0.45},
1119 { 859.962313, 0.01472, 7.989, 3.060, 4.09, 0.68, 0.84},
1120 { 899.306675, 0.00605, 7.917, 2.985, 4.53, 0.68, 0.90},
1121 { 902.616173, 0.00426, 8.432, 2.865, 5.10, 0.70, 0.95},
1122 { 906.207325, 0.01876, 5.111, 2.408, 4.70, 0.70, 0.53},
1123 { 916.171582, 0.83400, 1.442, 2.670, 4.78, 0.70, 0.78},
1124 { 923.118427, 0.00869, 10.220, 2.900, 5.00, 0.70, 0.80},
1125 { 970.315022, 0.89720, 1.920, 2.550, 4.94, 0.64, 0.67},
1126 { 987.926764, 13.21000, 0.258, 2.985, 4.55, 0.68, 0.90},
1128 { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}};
1136 const Numeric CC_MPM93 = 1.00000;
1137 const Numeric CL_MPM93 = 1.00000;
1138 const Numeric CW_MPM93 = 1.00000;
1147 if ( model ==
"MPM93" )
1155 else if ( model ==
"MPM93Lines" )
1163 else if ( model ==
"MPM93Continuum" )
1171 else if ( model ==
"user" )
1183 os <<
"H2O-MPM93: ERROR! Wrong model values given.\n"
1184 <<
"Valid models are: 'MPM93', 'MPM93Lines', 'MPM93Continuum', and 'user'" <<
'\n';
1185 throw runtime_error(os.str());
1187 out3 <<
"H2O-MPM93: (model=" << model <<
") parameter values in use:\n"
1188 <<
" CC = " << CC <<
"\n"
1189 <<
" CL = " << CL <<
"\n"
1190 <<
" CW = " << CW <<
"\n";
1197 assert ( n_p==t_abs.
nelem() );
1198 assert ( n_p==vmr.
nelem() );
1202 assert ( n_f==xsec.
nrows() );
1203 assert ( n_p==xsec.
ncols() );
1206 for (
Index i=0; i<n_p; ++i )
1212 Numeric theta = (300.0 / t_abs[i]);
1220 for (
Index s=0; s<n_f; ++s )
1225 for (
Index l = i_first; l <= i_last; ++l )
1231 if ( (l >= 0) && (l <= 33) )
1233 strength = CL * pwv_dummy * mpm93[l][1]
1234 * pow(theta, (
Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta));
1236 gam = CW * mpm93[l][3] * 0.001 *
1237 ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) +
1238 ( pda * pow(theta, mpm93[l][5])) );
1242 strength = CC * pwv_dummy * mpm93[l][1]
1243 * pow(theta, (
Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta));
1245 gam = mpm93[l][3] * 0.001 *
1246 ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) +
1247 ( pda * pow(theta, mpm93[l][5])) );
1252 os <<
"H2O-MPM93: wrong line number detected l=" << l <<
" (0-34)\n";
1253 throw runtime_error(os.str());
1326 const Numeric PWRfl[15] = { 22.2350800, 183.3101170, 321.2256400, 325.1529190, 380.1973720,
1327 439.1508120, 443.0182950, 448.0010750, 470.8889470, 474.6891270,
1328 488.4911330, 556.9360020, 620.7008070, 752.0332270, 916.1715820 };
1330 const Numeric PWRs1[15] = { 1.31e-14, 2.273e-12, 8.036e-14, 2.694e-12, 2.438e-11,
1331 2.179e-12, 4.624e-13, 2.562e-11, 8.369e-13, 3.263e-12,
1332 6.659e-13, 1.531e-9, 1.707e-11, 1.011e-9, 4.227e-11 };
1334 const Numeric PWRb2[15] = { 2.144, 0.668, 6.179, 1.541, 1.048,
1335 3.595, 5.048, 1.405, 3.597, 2.379,
1336 2.852, 0.159, 2.391, 0.396, 1.441 };
1338 const Numeric PWRw3[15] = { 0.00281, 0.00281, 0.00230, 0.00278, 0.00287,
1339 0.00210, 0.00186, 0.00263, 0.00215, 0.00236,
1340 0.00260, 0.00321, 0.00244, 0.00306, 0.00267 };
1342 const Numeric PWRx[15] = { 0.69, 0.64, 0.67, 0.68, 0.54,
1343 0.63, 0.60, 0.66, 0.66, 0.65,
1344 0.69, 0.69, 0.71, 0.68, 0.70 };
1346 const Numeric PWRws[15] = { 0.01349, 0.01491, 0.01080, 0.01350, 0.01541,
1347 0.00900, 0.00788, 0.01275, 0.00983, 0.01095,
1348 0.01313, 0.01320, 0.01140, 0.01253, 0.01275 };
1351 const Numeric PWRxs[15] = { 0.61, 0.85, 0.54, 0.74, 0.89,
1352 0.52, 0.50, 0.67, 0.65, 0.64,
1353 0.72, 1.00, 0.68, 0.84, 0.78 };
1357 const Numeric CC_PWR98 = 1.00000;
1358 const Numeric CL_PWR98 = 1.00000;
1359 const Numeric CW_PWR98 = 1.00000;
1365 if ( model ==
"Rosenkranz" )
1371 else if ( model ==
"RosenkranzLines" )
1377 else if ( model ==
"RosenkranzContinuum" )
1383 else if ( model ==
"user" )
1392 os <<
"H2O-PWR98: ERROR! Wrong model values given.\n"
1393 <<
"Valid models are: 'Rosenkranz', 'RosenkranzLines', 'RosenkranzContinuum', and 'user'" <<
'\n';
1394 throw runtime_error(os.str());
1396 out3 <<
"H2O-PWR98: (model=" << model <<
") parameter values in use:\n"
1397 <<
" CC = " << CC <<
"\n"
1398 <<
" CL = " << CL <<
"\n"
1399 <<
" CW = " << CW <<
"\n";
1406 assert ( n_p==t_abs.
nelem() );
1407 assert ( n_p==vmr.
nelem() );
1411 assert ( n_f==xsec.
nrows() );
1412 assert ( n_p==xsec.
ncols() );
1415 for (
Index i=0; i<n_p; ++i )
1430 Numeric den_dummy = 3.335e16 * (2.1667 * p_abs[i] / t_abs[i]);
1432 Numeric ti = (300.0 / t_abs[i]);
1437 * ( (0.543 * pda) + (17.96 * pvap * pow(ti, (
Numeric)4.5)) );
1440 for (
Index s=0; s<n_f; ++s )
1448 for (
Index l = 0; l < 15; l++)
1450 Numeric width = ( CW * PWRw3[l] * pda * pow(ti, PWRx[l]) ) +
1451 ( PWRws[l] * pvap * pow(ti, PWRxs[l]));
1455 Numeric strength = CL * PWRs1[l] * ti2 * exp(PWRb2[l]*(1.0 - ti));
1460 Numeric base = width / (wsq + 562500.000);
1463 if (fabs(df0) < 750.0) res += width / (df0*df0 + wsq) - base;
1464 if (fabs(df1) < 750.0) res += width / (df1*df1 + wsq) - base;
1465 sum += strength * res * pow( (ff/PWRfl[l]),
1469 Numeric absl = 0.3183e-4 * den_dummy * sum;
1472 xsec(s,i) += 1.000e-3 * ( absl + (con * ff * ff) );
1519 const Numeric CC_CP98 = 1.2369;
1520 const Numeric CL_CP98 = 1.0639;
1521 const Numeric CW_CP98 = 1.0658;
1526 if ( model ==
"CruzPol" )
1532 else if ( model ==
"CruzPolLine" )
1538 else if ( model ==
"CruzPolContinuum" )
1544 else if ( model ==
"user" )
1553 os <<
"H2O-CP98: ERROR! Wrong model values given.\n"
1554 <<
"Valid models are: 'CruzPol', 'CruzPolLine', 'CruzPolContinuum', and 'user'" <<
"\n";
1555 throw runtime_error(os.str());
1557 out3 <<
"H2O-CP98: (model=" << model <<
") parameter values in use:\n"
1558 <<
" CC = " << CC <<
"\n"
1559 <<
" CL = " << CL <<
"\n"
1560 <<
" CW = " << CW <<
"\n";
1566 assert ( n_p==t_abs.
nelem() );
1567 assert ( n_p==vmr.
nelem() );
1571 assert ( n_f==xsec.
nrows() );
1572 assert ( n_p==xsec.
ncols() );
1575 for (
Index i=0; i<n_p; ++i )
1581 Numeric theta = (300.0 / t_abs[i]);
1588 * exp(2.143*(1.0-theta));
1591 ( (pda * pow(theta,(
Numeric)0.6))
1592 + (4.80 * pwv * pow(theta,(
Numeric)1.1)) );
1595 * ( (0.113 * pda) + (3.57 * pwv * pow(theta,(
Numeric)7.5)) );
1598 for (
Index s=0; s<n_f; ++s )
1604 xsec(s,i) += 4.1907e-5 * ff * ( (TL * TSf) + (ff * TC) ) / vmr[i];
1648 const Numeric Cs_PWR = 1.796e-33;
1651 const Numeric Cs_CP = 1.851e-33;
1654 const Numeric Cs_MPM89 = 1.500e-33;
1657 const Numeric Cs_MPM87 = 1.500e-33;
1663 if ( model ==
"Rosenkranz" )
1668 else if ( model ==
"CruzPol" )
1673 else if ( model ==
"MPM89" )
1678 else if ( model ==
"MPM87" )
1683 else if ( model ==
"user" )
1691 os <<
"H2O-SelfContStandardType: ERROR! Wrong model values given.\n"
1692 <<
"allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" <<
'\n';
1693 throw runtime_error(os.str());
1695 out3 <<
"H2O-SelfContStandardType: (model=" << model <<
") parameter values in use:\n"
1696 <<
" C_s = " << C <<
"\n"
1697 <<
" x_s = " << x <<
"\n";
1705 assert ( n_p==t_abs.
nelem() );
1706 assert ( n_p==vmr.
nelem() );
1710 assert ( n_f==xsec.
nrows() );
1711 assert ( n_p==xsec.
ncols() );
1714 for (
Index i=0; i<n_p; ++i )
1721 * pow( p_abs[i], (
Numeric)2. ) * vmr[i];
1724 for (
Index s=0; s<n_f; ++s )
1726 xsec(s,i) += dummy * pow( f_mono[s], (
Numeric)2. );
1770 const Numeric Cf_PWR = 5.43e-35 ;
1773 const Numeric Cf_CP = 5.85e-35;
1776 const Numeric Cf_MPM89 = 4.74e-35;
1779 const Numeric Cf_MPM87 = 4.74e-35;
1786 if ( model ==
"Rosenkranz" )
1791 else if ( model ==
"CruzPol" )
1796 else if ( model ==
"MPM89" )
1801 else if ( model ==
"MPM87" )
1806 else if ( model ==
"user" )
1814 os <<
"H2O-ForeignContStandardType: ERROR! Wrong model values given.\n"
1815 <<
"allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" <<
'\n';
1816 throw runtime_error(os.str());
1818 out3 <<
"H2O-ForeignContStandardType: (model=" << model <<
") parameter values in use:\n"
1819 <<
" C_s = " << C <<
"\n"
1820 <<
" x_s = " << x <<
"\n";
1826 assert ( n_p==t_abs.
nelem() );
1827 assert ( n_p==vmr.
nelem() );
1831 assert ( n_f==xsec.
nrows() );
1832 assert ( n_p==xsec.
ncols() );
1835 for (
Index i=0; i<n_p; ++i )
1838 Numeric pdry = p_abs[i] * (1.000e0-vmr[i]);
1846 for (
Index s=0; s<n_f; ++s )
1848 xsec(s,i) += dummy * pow( f_mono[s], (
Numeric)2. );
1895 const Numeric Cf_MaTipping = 1.8590e-35;
1896 const Numeric xf_MaTipping = 4.6019;
1902 if ( model ==
"MaTipping" )
1907 else if ( model ==
"user" )
1915 os <<
"H2O-MaTipping_H2O_foreign_continuum: ERROR! Wrong model values given.\n"
1916 <<
"allowed models are: 'MaTipping', 'user'" <<
'\n';
1917 throw runtime_error(os.str());
1919 out3 <<
"H2O-MaTipping_H2O_foreign_continuum: (model=" << model <<
") parameter values in use:\n"
1920 <<
" C_s = " << C <<
"\n"
1921 <<
" x_s = " << x <<
"\n";
1927 assert ( n_p==t_abs.
nelem() );
1928 assert ( n_p==vmr.
nelem() );
1932 assert ( n_f==xsec.
nrows() );
1933 assert ( n_p==xsec.
ncols() );
1936 for (
Index i=0; i<n_p; ++i )
1939 Numeric pdry = p_abs[i] * (1.000e0-vmr[i]);
1947 for (
Index s=0; s<n_f; ++s )
1949 xsec(s,i) += dummy * pow( f_mono[s], (
Numeric)2.0389 );
1981 int J = (int) ((VI-V1A)*RECDVA + ONEPL) ;
1984 Numeric C = (3.00e0-2.00e0*P) * P * P;
1985 Numeric B = 0.500e0 * P * (1.00e0-P);
1990 A[J] * (1.00e0-C+B2) +
2042 if (XVIOKT <= 0.01e0)
2044 RADFN = 0.500e0 * XVIOKT * XVI;
2046 else if (XVIOKT <= 10.0e0)
2048 Numeric EXPVKT = exp(-XVIOKT);
2049 RADFN = XVI * (1.00e0-EXPVKT) / (1.00e0+EXPVKT);
2105 if ((model !=
"user") && (model !=
"CKD222"))
2109 <<
"CKDv2.2.2 H2O self continuum:\n"
2110 <<
"INPUT model name is: " << model <<
".\n"
2111 <<
"VALID model names are user and CKD222\n";
2112 throw runtime_error(os.str());
2117 Numeric ScalingFac = 1.0000e0;
2118 if ( model ==
"user" )
2129 assert ( n_p==t_abs.
nelem() );
2130 assert ( n_p==vmr.
nelem() );
2134 assert ( n_f==xsec.
nrows() );
2135 assert ( n_p==xsec.
ncols() );
2140 const Numeric xLosmt = 2.686763e19;
2146 const Numeric ALPHA2 = 200.000 * 200.000;
2147 const Numeric ALPHS2 = 120.000 * 120.000;
2148 const Numeric BETAS = 5.000e-06;
2154 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708,
2155 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367,
2156 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134,
2157 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295,
2158 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560,
2159 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195,
2160 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620,
2161 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000,
2162 1.00000,1.00000,1.00000};
2174 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2175 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2177 out3 <<
"WARNING:\n"
2178 <<
" CKD2.2.2 H2O self continuum:\n"
2179 <<
" input frequency vector exceeds range of model validity\n"
2190 <<
"CKD2.2.2 H2O self continuum:\n"
2191 <<
"parameter V1 not the same for different ref. temperatures.\n";
2192 throw runtime_error(os.str());
2198 <<
"CKD2.2.2 H2O self continuum:\n"
2199 <<
"parameter V2 not the same for different ref. temperatures.\n";
2200 throw runtime_error(os.str());
2206 <<
"CKD2.2.2 H2O self continuum:\n"
2207 <<
"parameter DV not the same for different ref. temperatures.\n";
2208 throw runtime_error(os.str());
2214 <<
"CKD2.2.2 H2O self continuum:\n"
2215 <<
"parameter NPT not the same for different ref. temperatures.\n";
2216 throw runtime_error(os.str());
2239 out3 <<
"WARNING:\n"
2240 <<
" CKD2.2.2 H2O self continuum:\n"
2241 <<
" no elements of internal continuum coefficients could be found for the\n"
2242 <<
" input frequency range.\n"
2243 <<
" Leave the function without calculating the absorption.";
2250 for (
Index J = 1 ; J <= NPTC ; ++J)
2272 for (
Index i = 0 ; i < n_p ; ++i )
2277 Numeric Pave = (p_abs[i]*1.000e-2);
2282 Numeric Rh2o = Patm * (TO/Tave);
2283 Numeric Tfac = (Tave-TO)/(260.0-TO);
2284 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
2286 Numeric XKT = Tave / 1.4387752e0;
2293 for (
Index J = 1 ; J <= NPTC ; ++J)
2297 if (SH2OT0[J] > 0.0e0)
2299 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
2302 if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) )
2304 int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0);
2305 if ( (JFAC >= 0) && (JFAC <= 50) )
2313 VS2 = (VJ-V0S) * (VJ-V0S);
2316 ( 1.000e0 + 0.3000e0 * (1.000e4 / ((VJ*VJ) + 1.000e4)) ) *
2317 ( 1.000e0 - 0.2333e0 * (ALPHA2 / ((VJ-1050.000e0)*(VJ-1050.000e0) + ALPHA2)) ) *
2318 ( 1.000e0 - FACTRS * (ALPHS2 / (VS2+(BETAS*VS2*VS2)+ALPHS2)) );
2326 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2333 for (
Index s = 0 ; s < n_f ; ++s )
2343 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2392 if ((model !=
"user") && (model !=
"CKD222"))
2396 <<
"CKDv2.2.2 H2O foreign continuum:\n"
2397 <<
"INPUT model name is: " << model <<
".\n"
2398 <<
"VALID model names are user and CKD222\n";
2399 throw runtime_error(os.str());
2404 Numeric ScalingFac = 1.0000e0;
2405 if ( model ==
"user" )
2416 assert ( n_p==t_abs.
nelem() );
2417 assert ( n_p==vmr.
nelem() );
2421 assert ( n_f==xsec.
nrows() );
2422 assert ( n_p==xsec.
ncols() );
2427 const Numeric xLosmt = 2.686763e19;
2430 const Numeric PO = 1013.000e0;
2433 const Numeric HWSQF = 330.000e0 * 330.000e0;
2434 const Numeric BETAF = 8.000e-11;
2435 const Numeric V0F = 1130.000e0;
2436 const Numeric FACTRF = 0.970e0;
2438 const Numeric V0F2 = 1900.000e0;
2439 const Numeric HWSQF2 = 150.000e0 * 150.000e0;
2440 const Numeric BETA2 = 3.000e-6;
2452 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2453 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2455 out3 <<
"WARNING:\n"
2456 <<
" CKD2.2.2 H2O foreign continuum:\n"
2457 <<
" input frequency vector exceeds range of model validity\n"
2483 out3 <<
"WARNING:\n"
2484 <<
" CKD2.2.2 H2O foreign continuum:\n"
2485 <<
" no elements of internal continuum coefficients could be found for the\n"
2486 <<
" input frequency range.\n"
2487 <<
" Leave the function without calculating the absorption.";
2493 for (
Index J = 1 ; J <= NPTC ; ++J)
2515 for (
Index i = 0 ; i < n_p ; ++i )
2520 Numeric Pave = (p_abs[i]*1.000e-2);
2523 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
2524 Numeric RFRGN = PFRGN * (TO/Tave);
2525 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
2527 Numeric XKT = Tave / 1.4387752;
2534 for (
Index J = 1 ; J <= NPTC ; ++J)
2539 VF2 = (VJ-V0F) * (VJ-V0F);
2540 VF6 = VF2 * VF2 * VF2;
2541 FSCAL = (1.000e0 - FACTRF*(HWSQF/(VF2+(BETAF*VF6)+HWSQF)));
2543 VF2 = (VJ-V0F2) * (VJ-V0F2);
2545 FSCAL = FSCAL * (1.000e0 - 0.600e0*(HWSQF2/(VF2 + BETA2*VF4 + HWSQF2)));
2547 FH2O = FH2OT0[J] * FSCAL;
2552 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2559 for (
Index s = 0 ; s < n_f ; ++s )
2563 if ( (V > 0.000e0) && (V < VABS_max) )
2569 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2618 if ((model !=
"user") && (model !=
"CKD242"))
2622 <<
"CKDv2.4.2 H2O self continuum:\n"
2623 <<
"INPUT model name is: " << model <<
".\n"
2624 <<
"VALID model names are user and CKD242\n";
2625 throw runtime_error(os.str());
2630 Numeric ScalingFac = 1.0000e0;
2631 if ( model ==
"user" )
2642 assert ( n_p==t_abs.
nelem() );
2643 assert ( n_p==vmr.
nelem() );
2647 assert ( n_f==xsec.
nrows() );
2648 assert ( n_p==xsec.
ncols() );
2653 const Numeric xLosmt = 2.686763e19;
2659 const Numeric V0S1 = 0.000e+00;
2660 const Numeric HWSQ1 = (1.000e+02 * 1.000e+02);
2661 const Numeric BETAS1 = 1.000e-04;
2662 const Numeric FACTRS1 = 0.688e+00;
2664 const Numeric V0S2 = 1.050e+03;
2665 const Numeric HWSQ2 = (2.000e+02 * 2.000e+02);
2666 const Numeric FACTRS2 = -0.2333e+00;
2668 const Numeric V0S3 = 1.310e+03;
2669 const Numeric HWSQ3 = (1.200e+02 * 1.200e+02);
2670 const Numeric BETAS3 = 5.000e-06;
2671 const Numeric FACTRS3 = -0.150e+00;
2674 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708,
2675 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367,
2676 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134,
2677 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295,
2678 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560,
2679 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195,
2680 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620,
2681 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000,
2682 1.00000,1.00000,1.00000};
2694 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2695 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2697 out3 <<
"WARNING:\n"
2698 <<
" CKD2.4.2 H2O self continuum:\n"
2699 <<
" input frequency vector exceeds range of model validity\n"
2710 <<
"CKD2.4.2 H2O self continuum:\n"
2711 <<
"parameter V1 not the same for different ref. temperatures.\n";
2712 throw runtime_error(os.str());
2718 <<
"CKD2.4.2 H2O self continuum:\n"
2719 <<
"parameter V2 not the same for different ref. temperatures.\n";
2720 throw runtime_error(os.str());
2726 <<
"CKD2.4.2 H2O self continuum:\n"
2727 <<
"parameter DV not the same for different ref. temperatures.\n";
2728 throw runtime_error(os.str());
2734 <<
"CKD2.4.2 H2O self continuum:\n"
2735 <<
"parameter NPT not the same for different ref. temperatures.\n";
2736 throw runtime_error(os.str());
2759 out3 <<
"WARNING:\n"
2760 <<
" CKDv2.4.2 H2O self continuum:\n"
2761 <<
" no elements of internal continuum coefficients could be found for the\n"
2762 <<
" input frequency range.\n"
2763 <<
" Leave the function without calculating the absorption.";
2770 for (
Index J = 1 ; J <= NPTC ; ++J)
2792 for (
Index i = 0 ; i < n_p ; ++i )
2797 Numeric Pave = (p_abs[i]*1.000e-2);
2802 Numeric Rh2o = Patm * (TO/Tave);
2803 Numeric Tfac = (Tave-TO)/(260.0-TO);
2804 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
2806 Numeric XKT = Tave / 1.4387752e0;
2813 for (
Index J = 1 ; J <= NPTC ; ++J)
2817 if (SH2OT0[J] > 0.0e0)
2819 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
2822 if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) )
2824 int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0);
2825 if ( (JFAC >= 0) && (JFAC <= 50) )
2833 VS2 = (VJ-V0S1) * (VJ-V0S1);
2836 (1.000e0 + FACTRS1*(HWSQ1/((VJ*VJ)+(BETAS1*VS4)+HWSQ1)));
2838 VS2 = (VJ-V0S2) * (VJ-V0S2);
2840 (1.000e0 + FACTRS2*(HWSQ2/(VS2+HWSQ2)));
2842 VS2 = (VJ-V0S3) * (VJ-V0S3);
2845 (1.000e0 + FACTRS3*(HWSQ3/(VS2+(BETAS3*VS4)+HWSQ3)));
2853 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2860 for (
Index s = 0 ; s < n_f ; ++s )
2870 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2919 if ((model !=
"user") && (model !=
"CKD242"))
2923 <<
"CKDv2.4.2 H2O foreign continuum:\n"
2924 <<
"INPUT model name is: " << model <<
".\n"
2925 <<
"VALID model names are user and CKD242\n";
2926 throw runtime_error(os.str());
2931 Numeric ScalingFac = 1.0000e0;
2932 if ( model ==
"user" )
2942 assert ( n_p==t_abs.
nelem() );
2943 assert ( n_p==vmr.
nelem() );
2947 assert ( n_f==xsec.
nrows() );
2948 assert ( n_p==xsec.
ncols() );
2953 const Numeric xLosmt = 2.686763e19;
2959 const Numeric V0F1 = 350.000e0;
2960 const Numeric HWSQF1 = 200.000e0 * 200.000e0;
2961 const Numeric BETAF1 = 5.000e-9 ;
2962 const Numeric FACTRF1 = -0.700e0;
2964 const Numeric V0F1a = 630.000e0;
2965 const Numeric HWSQF1a = 65.000e0*65.000e0;
2966 const Numeric BETAF1a = 2.000e-08 ;
2967 const Numeric FACTRF1a = 0.750e0;
2969 const Numeric V0F2 = 1130.000e0;
2970 const Numeric HWSQF2 = 330.000e0 * 330.000e0;
2971 const Numeric BETAF2 = 8.000e-11;
2972 const Numeric FACTRF2 = -0.970e0;
2974 const Numeric V0F3 = 1975.000e0;
2975 const Numeric HWSQF3 = 250.000e0 * 250.000e0;
2976 const Numeric BETAF3 = 5.000e-06;
2977 const Numeric FACTRF3 = -0.650e0;
2989 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2990 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2992 out3 <<
"WARNING:\n"
2993 <<
" CKDv2.4.2 H2O foreign continuum:\n"
2994 <<
" input frequency vector exceeds range of model validity\n"
3020 out3 <<
"WARNING:\n"
3021 <<
" CKDv2.4.2 H2O foreign continuum:\n"
3022 <<
" no elements of internal continuum coefficients could be found for the\n"
3023 <<
" input frequency range.\n"
3024 <<
" Leave the function without calculating the absorption.";
3030 for (
Index J = 1 ; J <= NPTC ; ++J)
3052 for (
Index i = 0 ; i < n_p ; ++i )
3057 Numeric Pave = (p_abs[i]*1.000e-2);
3060 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
3061 Numeric RFRGN = PFRGN * (TO/Tave);
3062 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3064 Numeric XKT = Tave / 1.4387752;
3071 for (
Index J = 1 ; J <= NPTC ; ++J)
3076 VF2 = (VJ-V0F1) * (VJ-V0F1);
3077 VF6 = VF2 * VF2 * VF2;
3078 FSCAL = (1.000e0 + FACTRF1*(HWSQF1/(VF2+(BETAF1*VF6)+HWSQF1)));
3080 VF2 = (VJ-V0F1a) * (VJ-V0F1a);
3081 VF6 = VF2 * VF2 * VF2;
3083 (1.000e0 + FACTRF1a*(HWSQF1a/(VF2+(BETAF1a*VF6)+HWSQF1a)));
3085 VF2 = (VJ-V0F2) * (VJ-V0F2);
3086 VF6 = VF2 * VF2 * VF2;
3088 (1.000e0 + FACTRF2*(HWSQF2/(VF2+(BETAF2*VF6)+HWSQF2)));
3090 VF2 = (VJ-V0F3) * (VJ-V0F3);
3093 (1.000e0 + FACTRF3*(HWSQF3/(VF2+BETAF3*VF4+HWSQF3)));
3095 FH2O = FH2OT0[J] * FSCAL;
3100 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3107 for (
Index s = 0 ; s < n_f ; ++s )
3111 if ( (V >= 0.000e0) && (V < VABS_max) )
3115 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3163 if ((model !=
"user") && (model !=
"CKDMT100"))
3167 <<
"CKD_MT1.00 H2O self continuum:\n"
3168 <<
"INPUT model name is: " << model <<
".\n"
3169 <<
"VALID model names are user and CKDMT100\n";
3170 throw runtime_error(os.str());
3175 Numeric ScalingFac = 1.0000e0;
3176 if ( model ==
"user" )
3187 assert ( n_p==t_abs.
nelem() );
3188 assert ( n_p==vmr.
nelem() );
3192 assert ( n_f==xsec.
nrows() );
3193 assert ( n_p==xsec.
ncols() );
3198 const Numeric xLosmt = 2.68675e19;
3201 const Numeric PO = 1013.000e0;
3204 {1.003, 1.009, 1.015, 1.023, 1.029,1.033,
3205 1.037, 1.039, 1.040, 1.046, 1.036,1.027,
3209 const Numeric VABS_min = -2.000e1;
3210 const Numeric VABS_max = 2.000e4;
3218 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3219 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3221 out3 <<
"WARNING:\n"
3222 <<
" CKD_MT 1.00 H2O self continuum:\n"
3223 <<
" input frequency vector exceeds range of model validity\n"
3234 <<
"CKD_MT 1.00 H2O self continuum:\n"
3235 <<
"parameter V1 not the same for different ref. temperatures.\n";
3236 throw runtime_error(os.str());
3242 <<
"CKD_MT 1.00 H2O self continuum:\n"
3243 <<
"parameter V2 not the same for different ref. temperatures.\n";
3244 throw runtime_error(os.str());
3250 <<
"CKD_MT 1.00 H2O self continuum:\n"
3251 <<
"parameter DV not the same for different ref. temperatures.\n";
3252 throw runtime_error(os.str());
3258 <<
"CKD_MT 1.00 H2O self continuum:\n"
3259 <<
"parameter NPT not the same for different ref. temperatures.\n";
3260 throw runtime_error(os.str());
3283 out3 <<
"WARNING:\n"
3284 <<
" CKD_MT 1.00 H2O self continuum:\n"
3285 <<
" no elements of internal continuum coefficients could be found for the\n"
3286 <<
" input frequency range.\n"
3287 <<
" Leave the function without calculating the absorption.";
3294 for (
Index J = 1 ; J <= NPTC ; ++J)
3314 for (
Index i = 0 ; i < n_p ; ++i )
3319 Numeric Pave = (p_abs[i]*1.000e-2);
3324 Numeric Rh2o = Patm * (TO/Tave);
3325 Numeric Tfac = (Tave-TO)/(260.0-TO);
3326 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
3328 Numeric XKT = Tave / 1.4387752e0;
3335 for (
Index J = 1 ; J <= NPTC ; ++J)
3339 if (SH2OT0[J] > 0.0e0)
3341 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
3344 if ( (VJ >= 820.0e0) && (VJ <= 960.0e0) )
3346 int JFAC = (int)((VJ - 820.0e0)/10.0e0 + 0.00001e0);
3347 if ( (JFAC >= 0) && (JFAC <=14) )
3348 SFAC = XFACREV[JFAC];
3357 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3364 for (
Index s = 0 ; s < n_f ; ++s )
3374 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3422 if ((model !=
"user") && (model !=
"CKDMT100"))
3426 <<
"CKD_MT1.00 H2O foreign continuum:\n"
3427 <<
"INPUT model name is: " << model <<
".\n"
3428 <<
"VALID model names are user and CKDMT100\n";
3429 throw runtime_error(os.str());
3434 Numeric ScalingFac = 1.0000e0;
3435 if ( model ==
"user" )
3446 assert ( n_p==t_abs.
nelem() );
3447 assert ( n_p==vmr.
nelem() );
3451 assert ( n_f==xsec.
nrows() );
3452 assert ( n_p==xsec.
ncols() );
3457 const Numeric xLosmt = 2.68675e19;
3460 const Numeric PO = 1013.000e0;
3463 const Numeric VABS_min = -2.000e1;
3464 const Numeric VABS_max = 2.000e4;
3472 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3473 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3475 out3 <<
"WARNING:\n"
3476 <<
" CKD_MT 1.00 H2O foreign continuum:\n"
3477 <<
" input frequency vector exceeds range of model validity\n"
3503 out3 <<
"WARNING:\n"
3504 <<
" CKD_MT 1.00 H2O foreign continuum:\n"
3505 <<
" no elements of internal continuum coefficients could be found for the\n"
3506 <<
" input frequency range.\n"
3507 <<
" Leave the function without calculating the absorption.";
3513 for (
Index J = 1 ; J <= NPTC ; ++J)
3532 for (
Index i = 0 ; i < n_p ; ++i )
3536 Numeric Pave = (p_abs[i]*1.000e-2);
3539 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
3540 Numeric RFRGN = PFRGN * (TO/Tave);
3541 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3543 Numeric XKT = Tave / 1.4387752;
3550 for (
Index J = 1 ; J <= NPTC ; ++J)
3558 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3564 for (
Index s = 0 ; s < n_f ; ++s )
3568 if ( (V >= 0.000e0) && (V < VABS_max) )
3574 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3621 if ((model !=
"user") && (model !=
"CKD241"))
3625 <<
"CKDv2.4.1 CO2 continuum:\n"
3626 <<
"INPUT model name is: " << model <<
".\n"
3627 <<
"VALID model names are user and CKD241\n";
3628 throw runtime_error(os.str());
3633 Numeric ScalingFac = 0.0000e0;
3634 if ( model ==
"user" )
3640 ScalingFac = 1.0000e0;
3648 assert ( n_p==t_abs.
nelem() );
3649 assert ( n_p==vmr.
nelem() );
3653 assert ( n_f==xsec.
nrows() );
3654 assert ( n_p==xsec.
ncols() );
3659 const Numeric xLosmt = 2.686763e19;
3665 const Numeric VABS_min = -2.000e1;
3666 const Numeric VABS_max = 1.000e4;
3674 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3675 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3677 out3 <<
"WARNING:\n"
3678 <<
" CKDv2.4.1 CO2 continuum:\n"
3679 <<
" input frequency vector exceeds range of model validity\n"
3705 out3 <<
"WARNING:\n"
3706 <<
" CKDv2.4.1 CO2 continuum:\n"
3707 <<
" no elements of internal continuum coefficients could be found for the\n"
3708 <<
" input frequency range.\n"
3709 <<
" Leave the function without calculating the absorption.";
3715 for (
Index J = 1 ; J <= NPTC ; ++J)
3734 for (
Index i = 0 ; i < n_p ; ++i )
3737 Numeric Pave = (p_abs[i]*1.000e-2);
3739 Numeric Rhoave = (Pave/PO) * (TO/Tave);
3740 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3741 Numeric XKT = Tave / 1.4387752;
3749 for (
Index J = 1 ; J <= NPTC ; ++J)
3756 k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) *
RADFN_FUN(VJ,XKT));
3763 for (
Index s = 0 ; s < n_f ; ++s )
3771 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3819 if ((model !=
"user") && (model !=
"CKDMT100"))
3823 <<
"CKD_MT.1.00 CO2 continuum:\n"
3824 <<
"INPUT model name is: " << model <<
".\n"
3825 <<
"VALID model names are user and CKDMT100\n";
3826 throw runtime_error(os.str());
3831 Numeric ScalingFac = 0.0000e0;
3832 if ( model ==
"user" )
3838 ScalingFac = 1.0000e0;
3846 assert ( n_p==t_abs.
nelem() );
3847 assert ( n_p==vmr.
nelem() );
3851 assert ( n_f==xsec.
nrows() );
3852 assert ( n_p==xsec.
ncols() );
3857 const Numeric xLosmt = 2.686763e19;
3872 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3873 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3875 out3 <<
"WARNING:\n"
3876 <<
" CKD_MT 1.00 CO2 continuum:\n"
3877 <<
" input frequency vector exceeds range of model validity\n"
3903 out3 <<
"WARNING:\n"
3904 <<
" CKD_MT 1.00 CO2 continuum:\n"
3905 <<
" no elements of internal continuum coefficients could be found for the\n"
3906 <<
" input frequency range.\n"
3907 <<
" Leave the function without calculating the absorption.";
3913 for (
Index J = 1 ; J <= NPTC ; ++J)
3932 for (
Index i = 0 ; i < n_p ; ++i )
3935 Numeric Pave = (p_abs[i]*1.000e-2);
3937 Numeric Rhoave = (Pave/PO) * (TO/Tave);
3938 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3939 Numeric XKT = Tave / 1.4387752;
3947 for (
Index J = 1 ; J <= NPTC ; ++J)
3953 if ( (VJ > 500.0e0) && (VJ < 900.0e0) )
3955 FCO2 = 7.000e0 * FCO2;
3960 k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) *
RADFN_FUN(VJ,XKT));
3967 for (
Index s = 0 ; s < n_f ; ++s )
3975 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4030 if ((model !=
"user") && (model !=
"CKDMT100"))
4034 <<
"CKD_MT1.00 N2 CIA rotational band:\n"
4035 <<
"INPUT model name is: " << model <<
".\n"
4036 <<
"VALID model names are user and CKDMT100\n";
4037 throw runtime_error(os.str());
4042 Numeric ScalingFac = 0.0000e0;
4043 if ( model ==
"user" )
4049 ScalingFac = 1.0000e0;
4057 assert ( n_p==t_abs.
nelem() );
4058 assert ( n_p==vmr.
nelem() );
4062 assert ( n_f==xsec.
nrows() );
4063 assert ( n_p==xsec.
ncols() );
4075 const Numeric VABS_min = -1.000e1;
4076 const Numeric VABS_max = 3.500e2;
4084 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
4085 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
4087 out3 <<
"WARNING:\n"
4088 <<
" CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4089 <<
" input frequency vector exceeds range of model validity\n"
4100 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4101 <<
"parameter V1 not the same for different ref. temperatures.\n";
4102 throw runtime_error(os.str());
4108 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4109 <<
"parameter V2 not the same for different ref. temperatures.\n";
4110 throw runtime_error(os.str());
4116 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4117 <<
"parameter DV not the same for different ref. temperatures.\n";
4118 throw runtime_error(os.str());
4124 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4125 <<
"parameter NPT not the same for different ref. temperatures.\n";
4126 throw runtime_error(os.str());
4148 out3 <<
"WARNING:\n"
4149 <<
" CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4150 <<
" no elements of internal continuum coefficients could be found for the\n"
4151 <<
" input frequency range.\n"
4152 <<
" Leave the function without calculating the absorption.\n";
4159 for (
Index J = 1 ; J <= NPTC ; ++J)
4180 for (
Index i = 0 ; i < n_p ; ++i )
4183 Numeric Pave = (p_abs[i]*1.000e-2);
4185 Numeric facfac = vmrn2 * (Pave/PO) * (Pave/PO) *
4186 (T1/Tave) * (T1/Tave);
4188 Numeric XKT = Tave / 1.4387752;
4189 Numeric Tfac = (Tave - TO) / (220.0e0 - TO);
4196 for (
Index J = 1 ; J <= NPTC ; ++J)
4201 if ( (C0[J] > 0.000e0) && (C1[J] > 0.000e0) )
4203 SN2 = facfac* C0[J] * pow( (C1[J]/C0[J]), Tfac );
4213 for (
Index s = 0 ; s < n_f ; ++s )
4221 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4281 if ((model !=
"user") && (model !=
"CKDMT100"))
4285 <<
"CKD_MT1.00 N2 CIA fundamental band:\n"
4286 <<
"INPUT model name is: " << model <<
".\n"
4287 <<
"VALID model names are user and CKDMT100\n";
4288 throw runtime_error(os.str());
4293 Numeric ScalingFac = 1.0000e0;
4294 if ( model ==
"user" )
4305 assert ( n_p==t_abs.
nelem() );
4306 assert ( n_p==vmr.
nelem() );
4310 assert ( n_f==xsec.
nrows() );
4311 assert ( n_p==xsec.
ncols() );
4316 const Numeric xLosmt = 2.686763e19;
4332 out3 <<
"WARNING:\n"
4333 <<
" CKD_MT 1.00 N2-N2 CIA fundamental band:\n"
4334 <<
" input frequency vector exceeds range of model validity\n"
4360 out3 <<
"WARNING:\n"
4361 <<
" CKD_MT 1.00 N2-N2 CIA fundamental band:\n"
4362 <<
" no elements of internal continuum coefficients could be found for the\n"
4363 <<
" input frequency range.\n";
4370 for (
Index J = 1 ; J <= NPTC ; ++J)
4388 for (
Index i = 0 ; i < n_p ; ++i )
4391 Numeric Pave = (p_abs[i]*1.000e-2);
4393 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
4394 Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave);
4396 Numeric XKT = Tave / 1.4387752e0;
4399 Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave);
4403 factor = (1.000e0 / xLosmt) * (1.000e0/vmrn2) * (a1 - a2*(Tave/TO));
4411 for (
Index J = 1 ; J <= NPTC ; ++J)
4416 if (xn2[J] > 0.000e0)
4418 Numeric C0 = factor * xn2[J] * exp(xn2t[J]*xktfac) / VJ;
4429 for (
Index s = 0 ; s < n_f ; ++s )
4437 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4494 if ((model !=
"user") && (model !=
"CKDMT100"))
4498 <<
"CKD_MT1.00 O2 CIA fundamental band:\n"
4499 <<
"INPUT model name is: " << model <<
".\n"
4500 <<
"VALID model names are user and CKDMT100\n";
4501 throw runtime_error(os.str());
4506 Numeric ScalingFac = 1.0000e0;
4507 if ( model ==
"user" )
4518 assert ( n_p==t_abs.
nelem() );
4519 assert ( n_p==vmr.
nelem() );
4523 assert ( n_f==xsec.
nrows() );
4524 assert ( n_p==xsec.
ncols() );
4529 const Numeric xLosmt = 2.686763e19;
4543 out3 <<
"WARNING:\n"
4544 <<
" CKD_MT 1.00 O2-O2 CIA fundamental band:\n"
4545 <<
" input frequency vector exceeds range of model validity\n"
4570 out3 <<
"WARNING:\n"
4571 <<
" CKD_MT 1.00 O2 CIA fundamental band:\n"
4572 <<
" no elements of internal continuum coefficients could be found for the\n"
4573 <<
" input frequency range.\n"
4574 <<
" Leave the function without calculating the absorption.\n";
4581 for (
Index J = 1 ; J <= NPTC ; ++J)
4599 for (
Index i = 0 ; i < n_p ; ++i )
4602 Numeric Pave = (p_abs[i]*1.000e-2);
4604 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
4605 Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave);
4607 Numeric XKT = Tave / 1.4387752;
4609 Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave);
4610 Numeric factor = (1.000e0 / xLosmt);
4617 for (
Index J = 1 ; J <= NPTC ; ++J)
4623 Numeric C0 = factor * xo2[J] * exp(xo2t[J]*xktfac) / VJ;
4634 for (
Index s = 0 ; s < n_f ; ++s )
4642 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4717 if ((model !=
"user") && (model !=
"CKDMT100"))
4721 <<
"CKD_MT1.00 O2 band at 1.27 micrometer:\n"
4722 <<
"INPUT model name is: " << model <<
".\n"
4723 <<
"VALID model names are user and CKDMT100\n";
4724 throw runtime_error(os.str());
4729 Numeric ScalingFac = 1.0000e0;
4730 if ( model ==
"user" )
4740 assert ( n_p==t_abs.
nelem() );
4741 assert ( n_p==vmr.
nelem() );
4745 assert ( n_f==xsec.
nrows() );
4746 assert ( n_p==xsec.
ncols() );
4764 out3 <<
"WARNING:\n"
4765 <<
" CKD_MT 1.00 O2 v0<-v0 band:\n"
4766 <<
" input frequency vector exceeds range of model validity\n"
4790 out3 <<
"WARNING:\n"
4791 <<
" CKD_MT 1.00 O2 v0<-v0 band:\n"
4792 <<
" no elements of internal continuum coefficients could be found for the\n"
4793 <<
" input frequency range.\n"
4794 <<
" Leave the function without calculating the absorption.\n";
4801 for (
Index J = 1 ; J <= NPTC ; ++J)
4818 for (
Index i = 0 ; i < n_p ; ++i )
4821 Numeric Pave = (p_abs[i]*1.000e-2);
4824 Numeric ADJWO2 = (vmro2 + 0.300e0*vmrn2) / 0.446e0 *
4825 (Pave/PO) * (Pave/PO) * (T1/Tave) * (T1/Tave);
4826 Numeric XKT = Tave / 1.4387752e0;
4834 for (
Index J = 1 ; J <= NPTC ; ++J)
4840 SO2 = ADJWO2 * CO[J];
4850 for (
Index s = 0 ; s < n_f ; ++s )
4858 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4920 if ((model !=
"user") && (model !=
"CKDMT100"))
4924 <<
"CKD_MT1.00 O2 band at 1.06 micrometer:\n"
4925 <<
"INPUT model name is: " << model <<
".\n"
4926 <<
"VALID model names are user and CKDMT100\n";
4927 throw runtime_error(os.str());
4932 Numeric ScalingFac = 1.0000e0;
4933 if ( model ==
"user" )
4943 assert ( n_p==t_abs.
nelem() );
4944 assert ( n_p==vmr.
nelem() );
4948 assert ( n_f==xsec.
nrows() );
4949 assert ( n_p==xsec.
ncols() );
4954 const Numeric xLosmt = 2.686763e19;
4968 const Numeric V1_osc = 9375.000e0;
4970 const Numeric V2_osc = 9439.000e0;
4984 out3 <<
"WARNING:\n"
4985 <<
" CKD_MT 1.00 O2 v1<-v0 band:\n"
4986 <<
" input frequency vector exceeds range of model validity\n"
4998 int NPTC = (int)( ((V2C-V1C)/DVC) + 3 );
5000 V2C = V1C + ( DVC * (
Numeric)(NPTC-1) );
5004 out3 <<
"WARNING:\n"
5005 <<
" CKD_MT 1.00 O2 v1<-v0 band:\n"
5006 <<
" no elements of internal continuum coefficients could be found for the\n"
5007 <<
" input frequency range.\n"
5008 <<
" Leave the function without calculating the absorption.\n";
5015 for (
Index J = 1 ; J <= NPTC ; ++J)
5020 if ( (VJ > V1S) && (VJ < V2S) )
5030 DAMP1 = exp(DV1 / 176.100e0);
5035 DAMP2 = exp(DV2 / 176.100e0);
5039 ( ((S1 * DAMP1 / HW1)/(1.000e0 + pow((DV1/HW1),(
Numeric)2.0e0) )) +
5040 ((S2 * DAMP2 / HW2)/(1.000e0 + pow((DV2/HW2),(
Numeric)2.0e0) )) ) * 1.054e0;
5050 for (
Index i = 0 ; i < n_p ; ++i )
5053 Numeric Pave = (p_abs[i]*1.000e-2);
5055 Numeric WTOT = 1.000e-20 * xLosmt * (Pave/PO) * (T1/Tave);
5056 Numeric ADJWO2 = (vmro2 / 0.209e0) * WTOT * (Pave/PO) * (TO/Tave);
5057 Numeric XKT = Tave / 1.4387752;
5064 for (
Index J = 1 ; J <= NPTC ; ++J)
5070 SO2 = ADJWO2 * C[J];
5080 for (
Index s = 0 ; s < n_f ; ++s )
5084 if ( (V > V1S) && (V < V2S) )
5088 xsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
5152 extern double artsckd_(
double p,
double t,
5153 double vmrh2o,
double vmrn2,
double vmro2,
5154 double freq,
int ivc);
5162 if ((model !=
"user") && (model !=
"CKD24"))
5166 <<
"CKDv2.4.2 H2O self/foreign continuum:\n"
5167 <<
"INPUT model name is: " << model <<
".\n"
5168 <<
"VALID model names are user and CKD24\n";
5169 throw runtime_error(os.str());
5174 if ( model ==
"CKD24" )
5178 else if ( model ==
"user" )
5186 os <<
"H2O-SelfContCKD24: ERROR! Wrong model values given.\n"
5187 <<
"allowed models are: 'CKD24', 'user'" <<
'\n';
5188 throw runtime_error(os.str());
5192 os <<
"H2O-ForeignContCKD: ERROR! Wrong model values given.\n"
5193 <<
"allowed models are: 'CKD24', 'user'" <<
'\n';
5194 throw runtime_error(os.str());
5199 out3 <<
"H2O-SelfContCKD24: (model=" << model <<
") parameter values in use:\n"
5200 <<
" XFAC = " << XFAC <<
"\n";
5203 out3 <<
"H2O-ForeignContCKD: (model=" << model <<
") parameter values in use:\n"
5204 <<
" XFAC = " << XFAC <<
"\n";
5213 assert ( n_p==t_abs.
nelem() );
5214 assert ( n_p==vmr.
nelem() );
5218 assert ( n_f==xsec.
nrows() );
5219 assert ( n_p==xsec.
ncols() );
5235 if ((ivc != 1) && (ivc != 21) && (ivc != 22) && (ivc != 31) && (ivc != 32)) {
5237 os <<
"!!ERROR: CKD24 H2O model: wrong input parameter isf (=0,1) given!\n"
5238 <<
"retrun without calculation!" <<
"\n"
5239 <<
"actual value of isf is " << isf <<
"\n";
5240 throw runtime_error(os.str());
5246 for (
Index i=0; i<n_p; ++i )
5248 double T = (double) t_abs[i];
5249 double p = (double) (p_abs[i]*1.000e-2);
5250 double vmrh2o = (double) vmr[i];
5251 double vmrn2 = (double) n2_abs[i];
5252 double vmro2 = 0.0e0;
5262 for (
Index s=0; s<n_f; ++s )
5266 double f = (double) f_mono[s];
5268 if (n2_abs[i] > 0.0e0) {
5270 double cont =
artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc);
5271 xsec(s,i) += (
Numeric) (cont / vmr[i]);
5275 if (vmr[i] > 0.0e0) {
5277 double cont =
artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc);
5278 xsec(s,i) += (
Numeric) (cont / vmr[i]);
5329 if ( model ==
"ATM" )
5333 else if ( model ==
"user" )
5340 os <<
"H2O-ForeignContATM01: ERROR! Wrong model values given.\n"
5341 <<
"allowed models are: 'ATM', 'user'" <<
'\n';
5342 throw runtime_error(os.str());
5344 out3 <<
"H2O-ForeignContATM01: (model=" << model <<
") parameter values in use:\n"
5345 <<
" C_f = " << C <<
"\n";
5351 assert ( n_p==t_abs.
nelem() );
5352 assert ( n_p==vmr.
nelem() );
5356 assert ( n_f==xsec.
nrows() );
5357 assert ( n_p==xsec.
ncols() );
5360 for (
Index i=0; i<n_p; ++i )
5366 Numeric pd = p_abs[i] * ( 1.00000e0 - vmr[i] );
5370 for (
Index s=0; s<n_f; ++s )
5380 (pwdummy/1.01300e5);
5445 const Numeric MPM93fo_orig = 1780.000e9;
5446 const Numeric MPM93b1_orig = 22300.000;
5447 const Numeric MPM93b2_orig = 0.952;
5448 const Numeric MPM93b3_orig = 17.600e4;
5449 const Numeric MPM93b4_orig = 30.500;
5450 const Numeric MPM93b5_orig = 2.000;
5451 const Numeric MPM93b6_orig = 5.000;
5456 Numeric MPM93fopcl, MPM93b1pcl, MPM93b2pcl,
5457 MPM93b3pcl, MPM93b4pcl, MPM93b5pcl,
5459 if ( model ==
"MPM93" )
5461 MPM93fopcl = MPM93fo_orig;
5462 MPM93b1pcl = MPM93b1_orig;
5463 MPM93b2pcl = MPM93b2_orig;
5464 MPM93b3pcl = MPM93b3_orig;
5465 MPM93b4pcl = MPM93b4_orig;
5466 MPM93b5pcl = MPM93b5_orig;
5467 MPM93b6pcl = MPM93b6_orig;
5469 else if ( model ==
"user" )
5471 MPM93fopcl = fcenter;
5482 os <<
"H2O-ContMPM93: ERROR! Wrong model values given.\n"
5483 <<
"allowed models are: 'MPM93', 'user'" <<
'\n';
5484 throw runtime_error(os.str());
5486 out3 <<
"H2O-ContMPM93: (model=" << model <<
") parameter values in use:\n"
5487 <<
" fo = " << MPM93fopcl <<
"\n"
5488 <<
" b1 = " << MPM93b1pcl <<
"\n"
5489 <<
" b2 = " << MPM93b2pcl <<
"\n"
5490 <<
" b3 = " << MPM93b3pcl <<
"\n"
5491 <<
" b4 = " << MPM93b4pcl <<
"\n"
5492 <<
" b5 = " << MPM93b5pcl <<
"\n"
5493 <<
" b6 = " << MPM93b6pcl <<
"\n";
5499 assert ( n_p==t_abs.
nelem() );
5500 assert ( n_p==vmr.
nelem() );
5504 assert ( n_f==xsec.
nrows() );
5505 assert ( n_p==xsec.
ncols() );
5509 for (
Index i=0; i<n_p; ++i )
5511 Numeric th = 300.0 / t_abs[i];
5514 Numeric strength = MPM93b1pcl * p_abs[i] * pow( th, (
Numeric)3.5 )
5515 * exp(MPM93b2pcl * (1 - th));
5516 Numeric gam = MPM93b3pcl * 0.001 *
5517 ( MPM93b4pcl * p_abs[i] * vmr[i] * pow( th, MPM93b6pcl ) +
5518 p_abs[i]*(1.000-vmr[i]) * pow( th, MPM93b5pcl ) );
5520 for (
Index s=0; s<n_f; ++s )
5524 f_mono[s] * strength *
5580 const Numeric mpm85[48][7] = {
5581 { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 5.600 , 1.700 },
5582 { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 5.600 , 1.700 },
5583 { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 5.600 , 1.700 },
5584 { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 5.500 , 1.700 },
5585 { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 5.600 , 1.800 },
5586 { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 5.500 , 1.800 },
5587 { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 5.700 , 1.800 },
5588 { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.300 , 1.900 },
5589 { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800 },
5590 { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 4.800 , 2.000 },
5591 { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.800 , 1.900 },
5592 { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.170 , 2.100 },
5593 { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 3.750 , 2.100 },
5594 { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 7.740 , 0.900 },
5595 { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 2.970 , 2.300 },
5596 { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 2.120 , 2.500 },
5597 { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 0.940 , 3.700 },
5598 { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.550 , -3.100 },
5599 { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 5.970 , 0.800 },
5600 { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -2.440 , 0.100 },
5601 { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 3.440 , 0.500 },
5602 { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -4.130 , 0.700 },
5603 { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 1.320 , -1.000 },
5604 { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -0.360 , 5.800 },
5605 { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -1.590 , 2.900 },
5606 { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -2.660 , 2.300 },
5607 { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.770 , 0.900 },
5608 { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -3.340 , 2.200 },
5609 { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.170 , 2.000 },
5610 { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.480 , 2.000 },
5611 { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.100 , 1.800 },
5612 { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.100 , 1.900 },
5613 { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.700 , 1.800 },
5614 { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.500 , 1.800 },
5615 { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -5.900 , 1.700 },
5616 { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -5.600 , 1.800 },
5617 { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -5.800 , 1.700 },
5618 { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -5.700 , 1.700 },
5619 { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -5.600 , 1.700 },
5620 { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -5.600 , 1.700 },
5621 { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -5.600 , 1.700 },
5622 { 118.750341 , 945.00 , 0.000 , 15.92 , 0.0 , -0.440 , 0.900 },
5623 { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000 },
5624 { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000 },
5625 { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000 },
5626 { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000 },
5627 { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 },
5628 { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 },
5632 const Index i_first = 0;
5633 const Index i_last = 47;
5639 const Numeric CC_MPM85 = 1.00000;
5640 const Numeric CL_MPM85 = 1.00000;
5641 const Numeric CW_MPM85 = 1.00000;
5642 const Numeric CO_MPM85 = 1.00000;
5649 if ( model ==
"MPM85" )
5656 else if ( model ==
"MPM85Lines" )
5663 else if ( model ==
"MPM85Continuum" )
5670 else if ( model ==
"MPM85NoCoupling" )
5677 else if ( model ==
"MPM85NoCutoff" )
5685 else if ( model ==
"user" )
5695 os <<
"O2-MPM85: ERROR! Wrong model values given.\n"
5696 <<
"Valid models are: 'MPM85' 'MPM85Lines' 'MPM85Continuum' 'MPM85NoCoupling' 'MPM85NoCutoff'"
5697 <<
"and 'user'" <<
'\n';
5698 throw runtime_error(os.str());
5700 out3 <<
"O2-MPM85: (model=" << model <<
") parameter values in use:\n"
5701 <<
" CC = " << CC <<
"\n"
5702 <<
" CL = " << CL <<
"\n"
5703 <<
" CW = " << CW <<
"\n"
5704 <<
" CO = " << CO <<
"\n";
5719 const Numeric VMRISO = 0.2085;
5722 assert ( n_p==t_abs.
nelem() );
5723 assert ( n_p==vmr.
nelem() );
5727 assert ( n_f==xsec.
nrows() );
5728 assert ( n_p==xsec.
ncols() );
5731 for (
Index i=0; i<n_p; ++i )
5737 os <<
"ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of "
5738 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
5739 <<
"Therefore no calculation is performed.\n";
5740 throw runtime_error(os.str());
5745 Numeric theta = (300.0 / t_abs[i]);
5754 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
5756 Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 );
5759 for (
Index s=0; s<n_f; ++s )
5770 Numeric Nppc = CC * strength_cont * FAC * ff * gam_cont /
5772 + pow( gam_cont, (
Numeric)2.) );
5776 for (
Index l = i_first; l <= i_last; ++l )
5779 Numeric strength = CL * mpm85[l][1] * 1.000e-6 * pda_dummy *
5780 pow(theta, (
Numeric)3.) * exp(mpm85[l][2]*(1.000-theta)) /
5783 Numeric gam = CW * ( mpm85[l][3] * 1.000e-3 *
5784 ( ( pda * pow(theta, ((
Numeric)0.80-mpm85[l][4]))) +
5785 (1.10 * pwv * theta) ) );
5787 Numeric delta = CO * mpm85[l][5] * 1.000e-3 *
5788 pda * pow(theta, mpm85[l][6]);
5799 if (Nppl < 0.000) Nppl = 0.0000;
5805 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
5863 const Numeric mpm87[48][7] = {
5864 { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 6.600 , 1.700},
5865 { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 6.600 , 1.700},
5866 { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 6.600 , 1.700},
5867 { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 6.500 , 1.700},
5868 { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 6.627 , 1.800},
5869 { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 6.347 , 1.800},
5870 { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 6.046 , 1.800},
5871 { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.719 , 1.900},
5872 { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800},
5873 { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 5.157 , 2.000},
5874 { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.783 , 1.900},
5875 { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.339 , 2.100},
5876 { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 4.011 , 2.100},
5877 { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 2.772 , 0.900},
5878 { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 3.922 , 2.300},
5879 { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 3.398 , 2.500},
5880 { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 1.145 , 3.200},
5881 { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.317 , -2.500},
5882 { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 6.270 , 0.800},
5883 { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -4.119 , 0.100},
5884 { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 6.766 , 0.500},
5885 { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -6.183 , 0.700},
5886 { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 3.290 , -0.400},
5887 { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -1.591 , 3.500},
5888 { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -2.068 , 2.900},
5889 { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -4.158 , 2.300},
5890 { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.068 , 0.900},
5891 { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -4.482 , 2.200},
5892 { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.442 , 2.000},
5893 { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.687 , 2.000},
5894 { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.074 , 1.800},
5895 { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.403 , 1.900},
5896 { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.610 , 1.800},
5897 { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.896 , 1.800},
5898 { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -6.194 , 1.700},
5899 { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -6.468 , 1.800},
5900 { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -6.718 , 1.700},
5901 { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -6.700 , 1.700},
5902 { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -6.600 , 1.700},
5903 { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -6.600 , 1.700},
5904 { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -6.600 , 1.700},
5905 { 118.750341 , 945.00 , 0.000 , 16.30 , 0.0 , -0.134 , 0.800},
5906 { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000},
5907 { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000},
5908 { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000},
5909 { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000},
5910 { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000},
5911 { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000}
5915 const Index i_first = 0;
5916 const Index i_last = 47;
5922 const Numeric CC_MPM87 = 1.00000;
5923 const Numeric CL_MPM87 = 1.00000;
5924 const Numeric CW_MPM87 = 1.00000;
5925 const Numeric CO_MPM87 = 1.00000;
5932 if ( model ==
"MPM87" )
5939 else if ( model ==
"MPM87Lines" )
5946 else if ( model ==
"MPM87Continuum" )
5953 else if ( model ==
"MPM87NoCoupling" )
5960 else if ( model ==
"MPM87NoCutoff" )
5971 else if ( model ==
"user" )
5981 os <<
"O2-MPM87: ERROR! Wrong model values given.\n"
5982 <<
"Valid models are: 'MPM87' 'MPM87Lines' 'MPM87Continuum' 'MPM87NoCoupling' 'MPM87NoCutoff'"
5983 <<
"and 'user'" <<
'\n';
5984 throw runtime_error(os.str());
5986 out3 <<
"O2-MPM87: (model=" << model <<
") parameter values in use:\n"
5987 <<
" CC = " << CC <<
"\n"
5988 <<
" CL = " << CL <<
"\n"
5989 <<
" CW = " << CW <<
"\n"
5990 <<
" CO = " << CO <<
"\n";
6005 const Numeric VMRISO = 0.2085;
6008 assert ( n_p==t_abs.
nelem() );
6009 assert ( n_p==vmr.
nelem() );
6013 assert ( n_f==xsec.
nrows() );
6014 assert ( n_p==xsec.
ncols() );
6017 for (
Index i=0; i<n_p; ++i )
6023 os <<
"ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of "
6024 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6025 <<
"Therefore no calculation is performed.\n";
6026 throw runtime_error(os.str());
6031 Numeric theta = (300.0 / t_abs[i]);
6040 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6042 Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 );
6045 for (
Index s=0; s<n_f; ++s )
6052 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6057 for (
Index l = i_first; l <= i_last; ++l )
6060 Numeric strength = CL * mpm87[l][1] * 1.000e-6 * pda_dummy *
6061 pow(theta, (
Numeric)3.) * exp(mpm87[l][2]*(1.000-theta)) /
6064 Numeric gam = CW * ( mpm87[l][3] * 1.000e-3 *
6065 ( ( pda * pow(theta, ((
Numeric)0.80-mpm87[l][4]))) +
6066 (1.10 * pwv * theta) ) );
6068 Numeric delta = CO * mpm87[l][5] * 1.000e-3 *
6069 pda * pow(theta, mpm87[l][6]);
6077 if (Nppl < 0.000) Nppl = 0.0000;
6083 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6138 const Numeric mpm89[44][7] = {
6139 { 50.474238, 0.94 , 9.694 , 8.60 , 0.0 , 1.600 , 5.520 },
6140 { 50.987749, 2.46 , 8.694 , 8.70 , 0.0 , 1.400 , 5.520 },
6141 { 51.503350, 6.08 , 7.744 , 8.90 , 0.0 , 1.165 , 5.520 },
6142 { 52.021410, 14.14 , 6.844 , 9.20 , 0.0 , 0.883 , 5.520 },
6143 { 52.542394, 31.02 , 6.004 , 9.40 , 0.0 , 0.579 , 5.520 },
6144 { 53.066907, 64.10 , 5.224 , 9.70 , 0.0 , 0.252 , 5.520 },
6145 { 53.595749, 124.70 , 4.484 , 10.00 , 0.0 , -0.066 , 5.520 },
6146 { 54.130000, 228.00 , 3.814 , 10.20 , 0.0 , -0.314 , 5.520 },
6147 { 54.671159, 391.80 , 3.194 , 10.50 , 0.0 , -0.706 , 5.520 },
6148 { 55.221367, 631.60 , 2.624 , 10.79 , 0.0 , -1.151 , 5.514 },
6149 { 55.783802, 953.50 , 2.119 , 11.10 , 0.0 , -0.920 , 5.025 },
6150 { 56.264775, 548.90 , 0.015 , 16.46 , 0.0 , 2.881 , -0.069 },
6151 { 56.363389, 1344.00 , 1.660 , 11.44 , 0.0 , -0.596 , 4.750 },
6152 { 56.968206, 1763.00 , 1.260 , 11.81 , 0.0 , -0.556 , 4.104 },
6153 { 57.612484, 2141.00 , 0.915 , 12.21 , 0.0 , -2.414 , 3.536 },
6154 { 58.323877, 2386.00 , 0.626 , 12.66 , 0.0 , -2.635 , 2.686 },
6155 { 58.446590, 1457.00 , 0.084 , 14.49 , 0.0 , 6.848 , -0.647 },
6156 { 59.164207, 2404.00 , 0.391 , 13.19 , 0.0 , -6.032 , 1.858 },
6157 { 59.590983, 2112.00 , 0.212 , 13.60 , 0.0 , 8.266 , -1.413 },
6158 { 60.306061, 2124.00 , 0.212 , 13.82 , 0.0 , -7.170 , 0.916 },
6159 { 60.434776, 2461.00 , 0.391 , 12.97 , 0.0 , 5.664 , -2.323 },
6160 { 61.150560, 2504.00 , 0.626 , 12.48 , 0.0 , 1.731 , -3.039 },
6161 { 61.800154, 2298.00 , 0.915 , 12.07 , 0.0 , 1.738 , -3.797 },
6162 { 62.411215, 1933.00 , 1.260 , 11.71 , 0.0 , -0.048 , -4.277 },
6163 { 62.486260, 1517.00 , 0.083 , 14.68 , 0.0 , -4.290 , 0.238 },
6164 { 62.997977, 1503.00 , 1.665 , 11.39 , 0.0 , 0.134 , -4.860 },
6165 { 63.568518, 1087.00 , 2.115 , 11.08 , 0.0 , 0.541 , -5.079 },
6166 { 64.127767, 733.50 , 2.620 , 10.78 , 0.0 , 0.814 , -5.525 },
6167 { 64.678903, 463.50 , 3.195 , 10.50 , 0.0 , 0.415 , -5.520 },
6168 { 65.224071, 274.80 , 3.815 , 10.20 , 0.0 , 0.069 , -5.520 },
6169 { 65.764772, 153.00 , 4.485 , 10.00 , 0.0 , -0.143 , -5.520 },
6170 { 66.302091, 80.09 , 5.225 , 9.70 , 0.0 , -0.428 , -5.520 },
6171 { 66.836830, 39.46 , 6.005 , 9.40 , 0.0 , -0.726 , -5.520 },
6172 { 67.369598, 18.32 , 6.845 , 9.20 , 0.0 , -1.002 , -5.520 },
6173 { 67.900867, 8.01 , 7.745 , 8.90 , 0.0 , -1.255 , -5.520 },
6174 { 68.431005, 3.30 , 8.695 , 8.70 , 0.0 , -1.500 , -5.520 },
6175 { 68.960311, 1.28 , 9.695 , 8.60 , 0.0 , -1.700 , -5.520 },
6176 { 118.750343, 945.00 , 0.009 , 16.30 , 0.0 , -0.247 , 0.003 },
6177 { 368.498350, 67.90 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 },
6178 { 424.763124, 638.00 , 0.044 , 19.16 , 0.6 , 0.000 , 0.000 },
6179 { 487.249370, 235.00 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 },
6180 { 715.393150, 99.60 , 0.145 , 18.10 , 0.6 , 0.000 , 0.000 },
6181 { 773.839675, 671.00 , 0.130 , 18.10 , 0.6 , 0.000 , 0.000 },
6182 { 834.145330, 180.00 , 0.147 , 18.10 , 0.6 , 0.000 , 0.000 }
6186 const Index i_first = 0;
6187 const Index i_last = 43;
6193 const Numeric CC_MPM89 = 1.00000;
6194 const Numeric CL_MPM89 = 1.00000;
6195 const Numeric CW_MPM89 = 1.00000;
6196 const Numeric CO_MPM89 = 1.00000;
6203 if ( model ==
"MPM89" )
6210 else if ( model ==
"MPM89Lines" )
6217 else if ( model ==
"MPM89Continuum" )
6224 else if ( model ==
"MPM89NoCoupling" )
6231 else if ( model ==
"MPM89NoCutoff" )
6239 else if ( model ==
"user" )
6249 os <<
"O2-MPM89: ERROR! Wrong model values given.\n"
6250 <<
"Valid models are: 'MPM89' 'MPM89Lines' 'MPM89Continuum' 'MPM89NoCoupling' 'MPM89NoCutoff'"
6251 <<
"and 'user'" <<
'\n';
6252 throw runtime_error(os.str());
6254 out3 <<
"O2-MPM89: (model=" << model <<
") parameter values in use:\n"
6255 <<
" CC = " << CC <<
"\n"
6256 <<
" CL = " << CL <<
"\n"
6257 <<
" CW = " << CW <<
"\n"
6258 <<
" CO = " << CO <<
"\n";
6273 const Numeric VMRISO = 0.2085;
6276 assert ( n_p==t_abs.
nelem() );
6277 assert ( n_p==vmr.
nelem() );
6281 assert ( n_f==xsec.
nrows() );
6282 assert ( n_p==xsec.
ncols() );
6285 for (
Index i=0; i<n_p; ++i )
6291 os <<
"ERROR: MPM89 O2 full absorption model has detected a O2 volume mixing ratio of "
6292 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6293 <<
"Therefore no calculation is performed.\n";
6294 throw runtime_error(os.str());
6299 Numeric theta = (300.0 / t_abs[i]);
6308 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6310 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6313 for (
Index s=0; s<n_f; ++s )
6320 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6325 for (
Index l = i_first; l <= i_last; ++l )
6328 Numeric strength = CL * mpm89[l][1] * 1.000e-6 * pda_dummy *
6329 pow(theta, (
Numeric)3.) * exp(mpm89[l][2]*(1.000-theta)) /
6332 Numeric gam = CW * ( mpm89[l][3] * 1.000e-3 *
6333 ( ( pda * pow(theta, ((
Numeric)0.80-mpm89[l][4]))) +
6334 (1.10 * pwv * theta) ) );
6336 Numeric delta = CO * ( (mpm89[l][5] + mpm89[l][6] * theta) * 1.000e-3 *
6337 pda * pow(theta, (
Numeric)0.8) );
6345 if (Nppl < 0.000) Nppl = 0.0000;
6351 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6408 const Numeric mpm92[44][7] = {
6409 { 50.474238, 0.094, 9.694, 0.850, 0.0, 0.210, 0.685},
6410 { 50.987749, 0.246, 8.694, 0.870, 0.0, 0.190, 0.680},
6411 { 51.503350, 0.608, 7.744, 0.890, 0.0, 0.171, 0.673},
6412 { 52.021410, 1.414, 6.844, 0.920, 0.0, 0.144, 0.664},
6413 { 52.542394, 3.102, 6.004, 0.940, 0.0, 0.118, 0.653},
6414 { 53.066907, 6.410, 5.224, 0.970, 0.0, 0.114, 0.621},
6415 { 53.595749, 12.470, 4.484, 1.000, 0.0, 0.200, 0.508},
6416 { 54.130000, 22.800, 3.814, 1.020, 0.0, 0.291, 0.375},
6417 { 54.671159, 39.180, 3.194, 1.050, 0.0, 0.325, 0.265},
6418 { 55.221367, 63.160, 2.624, 1.080, 0.0, 0.224, 0.295},
6419 { 55.783802, 95.350, 2.119, 1.110, 0.0, -0.144, 0.613},
6420 { 56.264775, 54.890, 0.015, 1.646, 0.0, 0.339, -0.098},
6421 { 56.363389, 134.400, 1.660, 1.144, 0.0, -0.258, 0.655},
6422 { 56.968206, 176.300, 1.260, 1.181, 0.0, -0.362, 0.645},
6423 { 57.612484, 214.100, 0.915, 1.221, 0.0, -0.533, 0.606},
6424 { 58.323877, 238.600, 0.626, 1.266, 0.0, -0.178, 0.044},
6425 { 58.446590, 145.700, 0.084, 1.449, 0.0, 0.650, -0.127},
6426 { 59.164207, 240.400, 0.391, 1.319, 0.0, -0.628, 0.231},
6427 { 59.590983, 211.200, 0.212, 1.360, 0.0, 0.665, -0.078},
6428 { 60.306061, 212.400, 0.212, 1.382, 0.0, -0.613, 0.070},
6429 { 60.434776, 246.100, 0.391, 1.297, 0.0, 0.606, -0.282},
6430 { 61.150560, 250.400, 0.626, 1.248, 0.0, 0.090, -0.058},
6431 { 61.800154, 229.800, 0.915, 1.207, 0.0, 0.496, -0.662},
6432 { 62.411215, 193.300, 1.260, 1.171, 0.0, 0.313, -0.676},
6433 { 62.486260, 151.700, 0.083, 1.468, 0.0, -0.433, 0.084},
6434 { 62.997977, 150.300, 1.665, 1.139, 0.0, 0.208, -0.668},
6435 { 63.568518, 108.700, 2.115, 1.110, 0.0, 0.094, -0.614},
6436 { 64.127767, 73.350, 2.620, 1.080, 0.0, -0.270, -0.289},
6437 { 64.678903, 46.350, 3.195, 1.050, 0.0, -0.366, -0.259},
6438 { 65.224071, 27.480, 3.815, 1.020, 0.0, -0.326, -0.368},
6439 { 65.764772, 15.300, 4.485, 1.000, 0.0, -0.232, -0.500},
6440 { 66.302091, 8.009, 5.225, 0.970, 0.0, -0.146, -0.609},
6441 { 66.836830, 3.946, 6.005, 0.940, 0.0, -0.147, -0.639},
6442 { 67.369598, 1.832, 6.845, 0.920, 0.0, -0.174, -0.647},
6443 { 67.900867, 0.801, 7.745, 0.890, 0.0, -0.198, -0.655},
6444 { 68.431005, 0.330, 8.695, 0.870, 0.0, -0.210, -0.660},
6445 { 68.960311, 0.128, 9.695, 0.850, 0.0, -0.220, -0.665},
6446 { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.031, 0.008},
6447 { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000},
6448 { 424.763124, 63.800, 0.044, 1.926, 0.6, 0.000, 0.000},
6449 { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000},
6450 { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000},
6451 { 773.839675, 67.100, 0.130, 1.810, 0.6, 0.000, 0.000},
6452 { 834.145330, 18.000, 0.147, 1.810, 0.6, 0.000, 0.000}};
6455 const Index i_first = 0;
6456 const Index i_last = 43;
6462 const Numeric CC_MPM92 = 1.00000;
6463 const Numeric CL_MPM92 = 1.00000;
6464 const Numeric CW_MPM92 = 1.00000;
6465 const Numeric CO_MPM92 = 1.00000;
6472 if ( model ==
"MPM92" )
6479 else if ( model ==
"MPM92Lines" )
6486 else if ( model ==
"MPM92Continuum" )
6493 else if ( model ==
"MPM92NoCoupling" )
6500 else if ( model ==
"MPM92NoCutoff" )
6508 else if ( model ==
"user" )
6518 os <<
"O2-MPM92: ERROR! Wrong model values given.\n"
6519 <<
"Valid models are: 'MPM92' 'MPM92Lines' 'MPM92Continuum' 'MPM92NoCoupling' 'MPM92NoCutoff'"
6520 <<
"and 'user'" <<
'\n';
6521 throw runtime_error(os.str());
6523 out3 <<
"O2-MPM92: (model=" << model <<
") parameter values in use:\n"
6524 <<
" CC = " << CC <<
"\n"
6525 <<
" CL = " << CL <<
"\n"
6526 <<
" CW = " << CW <<
"\n"
6527 <<
" CO = " << CO <<
"\n";
6534 const Numeric VMRISO = 0.2085;
6545 assert ( n_p==t_abs.
nelem() );
6546 assert ( n_p==vmr.
nelem() );
6550 assert ( n_f==xsec.
nrows() );
6551 assert ( n_p==xsec.
ncols() );
6554 for (
Index i=0; i<n_p; ++i )
6560 os <<
"ERROR: MPM92 O2 full absorption model has detected a O2 volume mixing ratio of "
6561 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6562 <<
"Therefore no calculation is performed.\n";
6563 throw runtime_error(os.str());
6568 Numeric theta = (300.0 / t_abs[i]);
6577 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6579 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6582 for (
Index s=0; s<n_f; ++s )
6589 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6594 for (
Index l = i_first; l <= i_last; ++l )
6597 Numeric strength = CL * 1.000e-6 * pda_dummy * mpm92[l][1] / mpm92[l][0] *
6598 pow(theta, (
Numeric)3.) * exp(mpm92[l][2]*(1.0-theta));
6600 Numeric gam = CW * ( mpm92[l][3] * 0.001 *
6601 ( ( pda * pow(theta, ((
Numeric)0.8-mpm92[l][4]))) +
6602 (1.10 * pwv * theta) ) );
6605 Numeric delta = CO * ( (mpm92[l][5] + mpm92[l][6] * theta) *
6606 (pda+pwv) * 0.001 * pow(theta, (
Numeric)0.8) );
6614 if (Nppl < 0.000) Nppl = 0.0000;
6620 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6677 const Numeric mpm93[44][7] = {
6678 { 50.474238, 0.094, 9.694, 0.890, 0.0, 0.240, 0.790},
6679 { 50.987749, 0.246, 8.694, 0.910, 0.0, 0.220, 0.780},
6680 { 51.503350, 0.608, 7.744, 0.940, 0.0, 0.197, 0.774},
6681 { 52.021410, 1.414, 6.844, 0.970, 0.0, 0.166, 0.764},
6682 { 52.542394, 3.102, 6.004, 0.990, 0.0, 0.136, 0.751},
6683 { 53.066907, 6.410, 5.224, 1.020, 0.0, 0.131, 0.714},
6684 { 53.595749, 12.470, 4.484, 1.050, 0.0, 0.230, 0.584},
6685 { 54.130000, 22.800, 3.814, 1.070, 0.0, 0.335, 0.431},
6686 { 54.671159, 39.180, 3.194, 1.100, 0.0, 0.374, 0.305},
6687 { 55.221367, 63.160, 2.624, 1.130, 0.0, 0.258, 0.339},
6688 { 55.783802, 95.350, 2.119, 1.170, 0.0, -0.166, 0.705},
6689 { 56.264775, 54.890, 0.015, 1.730, 0.0, 0.390, -0.113},
6690 { 56.363389, 134.400, 1.660, 1.200, 0.0, -0.297, 0.753},
6691 { 56.968206, 176.300, 1.260, 1.240, 0.0, -0.416, 0.742},
6692 { 57.612484, 214.100, 0.915, 1.280, 0.0, -0.613, 0.697},
6693 { 58.323877, 238.600, 0.626, 1.330, 0.0, -0.205, 0.051},
6694 { 58.446590, 145.700, 0.084, 1.520, 0.0, 0.748, -0.146},
6695 { 59.164207, 240.400, 0.391, 1.390, 0.0, -0.722, 0.266},
6696 { 59.590983, 211.200, 0.212, 1.430, 0.0, 0.765, -0.090},
6697 { 60.306061, 212.400, 0.212, 1.450, 0.0, -0.705, 0.081},
6698 { 60.434776, 246.100, 0.391, 1.360, 0.0, 0.697, -0.324},
6699 { 61.150560, 250.400, 0.626, 1.310, 0.0, 0.104, -0.067},
6700 { 61.800154, 229.800, 0.915, 1.270, 0.0, 0.570, -0.761},
6701 { 62.411215, 193.300, 1.260, 1.230, 0.0, 0.360, -0.777},
6702 { 62.486260, 151.700, 0.083, 1.540, 0.0, -0.498, 0.097},
6703 { 62.997977, 150.300, 1.665, 1.200, 0.0, 0.239, -0.768},
6704 { 63.568518, 108.700, 2.115, 1.170, 0.0, 0.108, -0.706},
6705 { 64.127767, 73.350, 2.620, 1.130, 0.0, -0.311, -0.332},
6706 { 64.678903, 46.350, 3.195, 1.100, 0.0, -0.421, -0.298},
6707 { 65.224071, 27.480, 3.815, 1.070, 0.0, -0.375, -0.423},
6708 { 65.764772, 15.300, 4.485, 1.050, 0.0, -0.267, -0.575},
6709 { 66.302091, 8.009, 5.225, 1.020, 0.0, -0.168, -0.700},
6710 { 66.836830, 3.946, 6.005, 0.990, 0.0, -0.169, -0.735},
6711 { 67.369598, 1.832, 6.845, 0.970, 0.0, -0.200, -0.744},
6712 { 67.900867, 0.801, 7.745, 0.940, 0.0, -0.228, -0.753},
6713 { 68.431005, 0.330, 8.695, 0.920, 0.0, -0.240, -0.760},
6714 { 68.960311, 0.128, 9.695, 0.900, 0.0, -0.250, -0.765},
6715 { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.036, 0.009},
6716 { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000},
6717 { 424.763124, 63.800, 0.044, 1.930, 0.6, 0.000, 0.000},
6718 { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000},
6719 { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000},
6720 { 773.839675, 67.100, 0.130, 1.820, 0.6, 0.000, 0.000},
6721 { 834.145330, 18.000, 0.147, 1.810 , 0.6, 0.000, 0.000}};
6723 const Index i_first = 0;
6724 const Index i_last = 43;
6730 const Numeric CC_MPM93 = 1.00000;
6731 const Numeric CL_MPM93 = 1.00000;
6732 const Numeric CW_MPM93 = 1.00000;
6733 const Numeric CO_MPM93 = 1.00000;
6740 if ( model ==
"MPM93" )
6747 else if ( model ==
"MPM93Lines" )
6754 else if ( model ==
"MPM93Continuum" )
6761 else if ( model ==
"MPM93NoCoupling" )
6768 else if ( model ==
"MPM93NoCutoff" )
6779 else if ( model ==
"user" )
6789 os <<
"O2-MPM93: ERROR! Wrong model values given.\n"
6790 <<
"Valid models are: 'MPM93' 'MPM93Lines' 'MPM93Continuum' 'MPM93NoCoupling' 'MPM93NoCutoff'"
6791 <<
"and 'user'" <<
'\n';
6792 throw runtime_error(os.str());
6794 out3 <<
"O2-MPM93: (model=" << model <<
") parameter values in use:\n"
6795 <<
" CC = " << CC <<
"\n"
6796 <<
" CL = " << CL <<
"\n"
6797 <<
" CW = " << CW <<
"\n"
6798 <<
" CO = " << CO <<
"\n";
6805 const Numeric VMRISO = 0.2085;
6816 assert ( n_p==t_abs.
nelem() );
6817 assert ( n_p==vmr.
nelem() );
6821 assert ( n_f==xsec.
nrows() );
6822 assert ( n_p==xsec.
ncols() );
6825 for (
Index i=0; i<n_p; ++i )
6831 os <<
"ERROR: MPM93 O2 full absorption model has detected a O2 volume mixing ratio of "
6832 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6833 <<
"Therefore no calculation is performed.\n";
6834 throw runtime_error(os.str());
6839 Numeric theta = (300.0 / t_abs[i]);
6849 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6851 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6854 for (
Index s=0; s<n_f; ++s )
6861 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6863 + pow( gam_cont, (
Numeric)2.) );
6867 for (
Index l = i_first; l <= i_last; ++l )
6870 Numeric strength = CL * 1.000e-6 * pda_dummy *
6871 mpm93[l][1] / mpm93[l][0] *
6872 pow(theta, (
Numeric)3.) * exp(mpm93[l][2]*(1.0-theta));
6874 Numeric gam = CW * ( mpm93[l][3] * 0.001 *
6875 ( ( pda * pow(theta, ((
Numeric)0.8-mpm93[l][4]))) +
6876 (1.10 * pwv * theta) ) );
6879 Numeric delta = CO * ( (mpm93[l][5] + mpm93[l][6] * theta) *
6880 (pda+pwv) * pow(theta, (
Numeric)0.8)
6889 if (Nppl < 0.000) Nppl = 0.0000;
6895 xsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6970 const Index n_lines = 40;
6974 const Numeric F93[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466,
6975 60.3061, 59.5910, 59.1642, 60.4348,
6976 58.3239, 61.1506, 57.6125, 61.8002,
6977 56.9682, 62.4112, 56.3634, 62.9980,
6978 55.7838, 63.5685, 55.2214, 64.1278,
6979 54.6712, 64.6789, 54.1300, 65.2241,
6980 53.5957, 65.7648, 53.0669, 66.3021,
6981 52.5424, 66.8368, 52.0214, 67.3696,
6982 51.5034, 67.9009, 368.4984, 424.7631,
6983 487.2494, 715.3932, 773.8397, 834.1453};
6986 const Numeric F98[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466, 60.3061, 59.5910,
6987 59.1642, 60.4348, 58.3239, 61.1506, 57.6125, 61.8002,
6988 56.9682, 62.4112, 56.3634, 62.9980, 55.7838, 63.5685,
6989 55.2214, 64.1278, 54.6712, 64.6789, 54.1300, 65.2241,
6990 53.5957, 65.7648, 53.0669, 66.3021, 52.5424, 66.8368,
6991 52.0214, 67.3696, 51.5034, 67.9009, 368.4984, 424.7632,
6992 487.2494, 715.3931, 773.8397, 834.1458};
6996 const Numeric S93[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14,
6997 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14,
6998 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14,
6999 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14,
7000 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14,
7001 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15,
7002 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15,
7003 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16,
7004 0.8191E-17, 0.1423E-16, 0.6460E-15, 0.7047E-14,
7005 0.3011E-14, 0.1826E-14, 0.1152E-13, 0.3971E-14};
7008 const Numeric S98[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14,
7009 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14,
7010 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14,
7011 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14,
7012 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14,
7013 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15,
7014 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15,
7015 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16,
7016 0.8191E-17, 0.1423E-16, 0.6494E-15, 0.7083E-14,
7017 0.3025E-14, 0.1835E-14, 0.1158E-13, 0.3993E-14};
7020 const Numeric BE[n_lines] = { 0.009, 0.015, 0.083, 0.084,
7021 0.212, 0.212, 0.391, 0.391,
7022 0.626, 0.626, 0.915, 0.915,
7023 1.260, 1.260, 1.660, 1.665,
7024 2.119, 2.115, 2.624, 2.625,
7025 3.194, 3.194, 3.814, 3.814,
7026 4.484, 4.484, 5.224, 5.224,
7027 6.004, 6.004, 6.844, 6.844,
7028 7.744, 7.744, 0.048, 0.044,
7029 0.049, 0.145, 0.141, 0.145};
7036 const Numeric W300[n_lines] = { 1.630, 1.646, 1.468, 1.449,
7037 1.382, 1.360, 1.319, 1.297,
7038 1.266, 1.248, 1.221, 1.207,
7039 1.181, 1.171, 1.144, 1.139,
7040 1.110, 1.108, 1.079, 1.078,
7041 1.050, 1.050, 1.020, 1.020,
7042 1.000, 1.000, 0.970, 0.970,
7043 0.940, 0.940, 0.920, 0.920,
7044 0.890, 0.890, 1.920, 1.920,
7045 1.920, 1.810, 1.810, 1.810};
7048 const Numeric Y93[n_lines] = { -0.0233, 0.2408, -0.3486, 0.5227,
7049 -0.5430, 0.5877, -0.3970, 0.3237,
7050 -0.1348, 0.0311, 0.0725, -0.1663,
7051 0.2832, -0.3629, 0.3970, -0.4599,
7052 0.4695, -0.5199, 0.5187, -0.5597,
7053 0.5903, -0.6246, 0.6656, -0.6942,
7054 0.7086, -0.7325, 0.7348, -0.7546,
7055 0.7702, -0.7864, 0.8083, -0.8210,
7056 0.8439, -0.8529, 0.0000, 0.0000,
7057 0.0000, 0.0000, 0.0000, 0.0000};
7062 const Numeric Y88[n_lines] = { -0.0244, 0.2772, -0.4068, 0.6270,
7063 -0.6183, 0.6766, -0.4119, 0.3290,
7064 0.0317, -0.1591, 0.1145, -0.2068,
7065 0.3398, -0.4158, 0.3922, -0.4482,
7066 0.4011, -0.4442, 0.4339, -0.4687,
7067 0.4783, -0.5074, 0.5157, -0.5403,
7068 0.5400, -0.5610, 0.5719, -0.5896,
7069 0.6046, -0.6194, 0.6347, -0.6468,
7070 0.6627, -0.6718, 0.0000, 0.0000,
7071 0.0000, 0.0000, 0.0000, 0.0000};
7074 const Numeric V[n_lines] ={ 0.0079, -0.0978, 0.0844, -0.1273,
7075 0.0699, -0.0776, 0.2309, -0.2825,
7076 0.0436, -0.0584, 0.6056, -0.6619,
7077 0.6451, -0.6759, 0.6547, -0.6675,
7078 0.6135, -0.6139, 0.2952, -0.2895,
7079 0.2654, -0.2590, 0.3750, -0.3680,
7080 0.5085, -0.5002, 0.6206, -0.6091,
7081 0.6526, -0.6393, 0.6640, -0.6475,
7082 0.6729, -0.6545, 0.0000, 0.0000,
7083 0.0000, 0.0000, 0.0000, 0.0000};
7085 const Index first_line = 0;
7086 const Index last_line = 39;
7092 const Numeric CC_PWR93 = 1.00000;
7093 const Numeric CL_PWR93 = 1.00000;
7094 const Numeric CW_PWR93 = 1.00000;
7095 const Numeric CO_PWR93 = 1.00000;
7100 Numeric CC, CL, CW, CO, Y300[n_lines], S300[n_lines], F[n_lines];
7103 if ( model ==
"Rosenkranz" )
7110 else if ( model ==
"RosenkranzLines" )
7117 else if ( model ==
"RosenkranzContinuum" )
7124 else if ( model ==
"RosenkranzNoCoupling" )
7131 else if ( model ==
"user" )
7141 os <<
"O2-PWR93: ERROR! Wrong model values given.\n"
7142 <<
"Valid models are: 'Rosenkranz', 'RosenkranzLines', RosenkranzContinuum, "
7143 <<
"'RosenkranzNoCoupling', and 'user'" <<
'\n';
7144 throw runtime_error(os.str());
7146 out3 <<
"O2-PWR93: (model=" << model <<
") parameter values in use:\n"
7147 <<
" CC = " << CC <<
"\n"
7148 <<
" CL = " << CL <<
"\n"
7149 <<
" CW = " << CW <<
"\n"
7150 <<
" CO = " << CO <<
"\n";
7154 if ( (version !=
"PWR98") && (version !=
"PWR93") && (version !=
"PWR88") )
7157 os <<
"O2-PWR93/PWR88: ERROR! Wrong version is selected.\n"
7158 <<
"Valid versions are:\n"
7159 <<
" 'PWR98' updates of F and S to HISTRAN96 and M.J.Schwartz, MIT, 1997\n"
7160 <<
" suggestions implemented.\n"
7161 <<
" 'PWR93' for the oxygen absorption model described in \n"
7162 <<
" P. W. Rosenkranz, Chapter 2, in M. A. Janssen,\n"
7163 <<
" Atmospheric Remote Sensing by Microwave Radiometry,\n"
7164 <<
" John Wiley & Sons, Inc., 1993.\n"
7165 <<
" 'PWR88' for the oxygen absorption model described in \n"
7166 <<
" P. W. Rosenkranz, Interference coefficients for the \n"
7167 <<
" overlapping oxygen lines in air, \n"
7168 <<
" JQSRT, 1988, Volume 39, 287-297.\n";
7169 throw runtime_error(os.str());
7174 if ( version ==
"PWR88" ) {
7175 for (
Index i=0; i<n_lines; ++i )
7182 if ( version ==
"PWR93" ) {
7183 for (
Index i=0; i<n_lines; ++i )
7190 if ( version ==
"PWR98" ) {
7191 for (
Index i=0; i<n_lines; ++i )
7203 assert ( n_p==t_abs.
nelem() );
7204 assert ( n_p==vmr.
nelem() );
7208 assert ( n_f==xsec.
nrows() );
7209 assert ( n_p==xsec.
ncols() );
7212 for (
Index i=0; i<n_p; ++i )
7218 os <<
"ERROR: PWR93 O2 full absorption model has detected a O2 volume mixing ratio of "
7219 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
7220 <<
"Therefore no calculation is performed.\n";
7221 throw runtime_error(os.str());
7225 Numeric TH = 3.0000e2 / t_abs[i];
7231 Numeric DEN = 0.001*(PRESDA*B + 1.1*PRESWV*TH);
7232 Numeric DENS = 0.001*(PRESDA + 1.1*PRESWV)*TH;
7236 Numeric CCONT = CC * 1.23e-10 * pow( TH, (
Numeric)2. ) * p_abs[i];
7239 for (
Index s=0; s<n_f; ++s )
7248 Numeric CONT = CCONT * (ff * ff * DFNR / (ff*ff + DFNR*DFNR));
7252 for (
Index l=first_line; l<=last_line; ++l )
7254 Numeric DF = CW * W300[l] * DEN;
7256 if ( (version ==
"PWR98") && (fabs((F[l]-118.75)) < 0.10) )
7258 DF = CW * W300[l] * DENS;
7260 Numeric Y = CO * 0.001 * 0.01 * p_abs[i] * B * ( Y300[l] + V[l]*TH1 );
7261 Numeric STR = CL * S300[l] * exp(-BE[l] * TH1);
7262 Numeric SF1 = ( DF + (ff-F[l])*Y ) / ( (ff-F[l])*(ff-F[l]) + DF*DF );
7263 Numeric SF2 = ( DF - (ff+F[l])*Y ) / ( (ff+F[l])*(ff+F[l]) + DF*DF );
7264 SUM += STR * (SF1+SF2) * (ff/F[l]) * (ff/F[l]);
7278 xsec(s,i) += CONT + (2.414322e7 * SUM * p_abs[i] * pow(TH, (
Numeric)3.) /
PI);
7343 const Numeric S0_MPM93 = 6.140e-13;
7344 const Numeric G0_MPM93 = 0.560e4;
7345 const Numeric XS0_MPM93 = 2.000;
7346 const Numeric XG0_MPM93 = 0.800;
7352 if ( model ==
"MPM93" )
7359 else if ( model ==
"user" )
7369 os <<
"O2-SelfContMPM93: ERROR! Wrong model values given.\n"
7370 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
7371 throw runtime_error(os.str());
7373 out3 <<
"O2-SelfContMPM93: (model=" << model <<
") parameter values in use:\n"
7374 <<
" S0 = " << S0 <<
"\n"
7375 <<
" G0 = " << G0 <<
"\n"
7376 <<
" XS0 = " << XS0 <<
"\n"
7377 <<
" XG0 = " << XG0 <<
"\n";
7384 assert ( n_p==t_abs.
nelem() );
7385 assert ( n_p==vmr.
nelem() );
7389 assert ( n_f==xsec.
nrows() );
7390 assert ( n_p==xsec.
ncols() );
7396 const Numeric VMRISO = 0.2085;
7400 for (
Index i=0; i<n_p; ++i )
7405 os <<
"ERROR: MPM93 O2 continuum absorption model has detected a O2 volume mixing ratio of "
7406 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
7407 <<
"Therefore no calculation is performed.\n";
7408 throw runtime_error(os.str());
7411 Numeric th = 300.0 / t_abs[i];
7413 Numeric strength = S0 * p_abs[i] * (1.0000 - h2o_abs[i]) * pow( th, XS0 );
7415 Numeric gamma = G0 * p_abs[i] * pow( th, XG0 );
7418 for (
Index s=0; s<n_f; ++s )
7423 (strength / VMRISO) *
7424 ( pow( f_mono[s], (
Numeric)2.) * gamma /
7485 const Numeric S0_PWR93 = 1.11e-14;
7486 const Numeric G0_PWR93 = 5600.000;
7487 const Numeric XS0_PWR93 = 2.000;
7488 const Numeric XG0_PWR93 = 0.800;
7493 if ( model ==
"Rosenkranz" )
7500 else if ( model ==
"user" )
7510 os <<
"O2-SelfContPWR93: ERROR! Wrong model values given.\n"
7511 <<
"Valid models are: 'Rosenkranz' and 'user'" <<
'\n';
7512 throw runtime_error(os.str());
7514 out3 <<
"O2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
7515 <<
" S0 = " << S0 <<
"\n"
7516 <<
" G0 = " << G0 <<
"\n"
7517 <<
" XS0 = " << XS0 <<
"\n"
7518 <<
" XG0 = " << XG0 <<
"\n";
7525 assert ( n_p==t_abs.
nelem() );
7526 assert ( n_p==vmr.
nelem() );
7530 assert ( n_f==xsec.
nrows() );
7531 assert ( n_p==xsec.
ncols() );
7534 for (
Index i=0; i<n_p; ++i )
7536 Numeric TH = 300.00 / t_abs[i];
7538 Numeric ph2o = p_abs[i] * h2o_abs[i];
7539 Numeric pdry = p_abs[i] - ph2o;
7543 Numeric gamma = G0 * (pdry * pow( TH, XG0 ) + 1.100 * ph2o * TH);
7546 for (
Index s=0; s<n_f; ++s )
7550 xsec(s,i) += S0 * p_abs[i] / pow( t_abs[i], XS0 ) *
7551 ( pow( f_mono[s], (
Numeric)2. )
7552 * gamma / ( pow( f_mono[s], 2 )
7553 + pow( gamma, (
Numeric)2. ) ) ) ;
7618 const Numeric G0_PWR93 = 5600.000;
7619 const Numeric G0A_PWR93 = 1.000;
7620 const Numeric G0B_PWR93 = 1.100;
7621 const Numeric XG0d_PWR93 = 0.800;
7622 const Numeric XG0w_PWR93 = 1.000;
7632 const Numeric G0_MPM93 = 5600.000;
7633 const Numeric G0A_MPM93 = 1.000;
7634 const Numeric G0B_MPM93 = 1.000;
7635 const Numeric XG0d_MPM93 = 0.800;
7636 const Numeric XG0w_MPM93 = 0.800;
7640 Numeric C, G0, G0A, G0B, XG0d, XG0w;
7641 if ( model ==
"Rosenkranz" )
7650 else if ( model ==
"MPM93" )
7659 else if ( model ==
"user" )
7671 os <<
"O2-GenerealCont: ERROR! Wrong model values given.\n"
7672 <<
"Valid models are: 'Rosenkranz', 'MPM93' and 'user'" <<
'\n';
7673 throw runtime_error(os.str());
7675 out3 <<
"O2-GeneralCont: (model=" << model <<
") parameter values in use:\n"
7676 <<
" C = " << C <<
"\n"
7677 <<
" G0 = " << G0 <<
"\n"
7678 <<
" G0A = " << G0A <<
"\n"
7679 <<
" G0B = " << G0B <<
"\n"
7680 <<
" XG0d = " << XG0d <<
"\n"
7681 <<
" XG0w = " << XG0w <<
"\n";
7688 assert ( n_p==t_abs.
nelem() );
7689 assert ( n_p==vmr.
nelem() );
7693 assert ( n_f==xsec.
nrows() );
7694 assert ( n_p==xsec.
ncols() );
7703 for (
Index i=0; i<n_p; ++i )
7705 Numeric TH = 3.0e2 / t_abs[i];
7707 Numeric ph2o = p_abs[i] * h2o_abs[i];
7708 Numeric pdry = p_abs[i] - ph2o;
7712 Numeric gamma = G0 * (G0A * pdry * pow( TH, XG0d ) + G0B * ph2o * pow( TH, XG0w ));
7715 for (
Index s=0; s<n_f; ++s )
7719 xsec(s,i) += C * p_abs[i] * pow( TH, (
Numeric)2. ) *
7720 ( gamma * pow( f_mono[s], (
Numeric)2. ) /
7721 ( pow( f_mono[s], 2 ) + pow( gamma, (
Numeric)2. ) ) );
7783 if ( model ==
"BF86" )
7787 else if ( model ==
"user" )
7794 os <<
"N2-SelfContBorysow: ERROR! Wrong model values given.\n"
7795 <<
"allowed models are: 'BF86', 'user'" <<
'\n';
7796 throw runtime_error(os.str());
7799 out3 <<
"N2-SelfContBorysow: (model=" << model <<
") parameter values in use:\n"
7800 <<
" XFAC = " << XFAC <<
"\n";
7806 const Numeric AMAG2DEN = 44.53807;
7807 const Numeric RIDGAS = 8.314510;
7810 assert ( n_p==t_abs.
nelem() );
7811 assert ( n_p==vmr.
nelem() );
7815 assert ( n_f==xsec.
nrows() );
7816 assert ( n_p==xsec.
ncols() );
7819 for (
Index i=0; i<n_p; ++i )
7822 double T = (double) t_abs[i];
7826 Numeric XAMA = (p_abs[i]) / ( AMAG2DEN * RIDGAS * t_abs[i] );
7831 for (
Index s=0; s<n_f; ++s )
7835 double f = (double) f_mono[s];
7838 xsec(s,i) += (
Numeric) (cont * 1.000e2 * vmr[i] * XAMA2);
7902 const Numeric xT_MPM93 = 3.500;
7903 const Numeric xf_MPM93 = 1.500;
7904 const Numeric gxf_MPM93 = 9.000*xf_MPM93;
7905 const Numeric S_MPM93 = 2.296e-31;
7906 const Numeric G_MPM93 = 1.930e-5*pow((
Numeric)10.000, -gxf_MPM93);
7911 if ( model ==
"MPM93" )
7919 else if ( model ==
"MPM93Scale" )
7927 else if ( model ==
"user" )
7938 os <<
"N2-SelfContMPM93 : ERROR! Wrong model values given.\n"
7939 <<
"allowed models are: 'MPM93', 'MPM93Scale' or 'user'" <<
'\n';
7940 throw runtime_error(os.str());
7943 out3 <<
"N2-SelfContMPM93: (model=" << model <<
") parameter values in use:\n"
7944 <<
" S0 = " << S0 <<
"\n"
7945 <<
" G0 = " << G0 <<
"\n"
7946 <<
" xT = " << xT <<
"\n"
7947 <<
" xf = " << xf <<
"\n";
7957 assert ( n_p==t_abs.
nelem() );
7958 assert ( n_p==vmr.
nelem() );
7962 assert ( n_f==xsec.
nrows() );
7963 assert ( n_p==xsec.
ncols() );
7967 for (
Index i=0; i<n_p; ++i )
7969 Numeric th = 300.0 / t_abs[i];
7971 pow( (p_abs[i] * ((
Numeric)1.0000 - h2o_abs[i])),
7976 for (
Index s=0; s<n_f; ++s )
7981 xsec(s,i) += fac * strength *
7983 ( 1.000 + G0 * pow( f_mono[s], xf) ) *
8029 const Numeric C_ATM = 2.612e-6;
8034 if ( model ==
"ATM" )
8038 else if ( model ==
"user" )
8045 os <<
"N2-DryContATM01: ERROR! Wrong model values given.\n"
8046 <<
"allowed models are: 'ATM', 'user'" <<
'\n';
8047 throw runtime_error(os.str());
8049 out3 <<
"N2-DryContATM01: (model=" << model <<
") parameter values in use:\n"
8050 <<
" C_s = " << C <<
"\n";
8056 assert ( n_p==t_abs.
nelem() );
8057 assert ( n_p==vmr.
nelem() );
8061 assert ( n_f==xsec.
nrows() );
8062 assert ( n_p==xsec.
ncols() );
8065 for (
Index i=0; i<n_p; ++i )
8071 Numeric pd = p_abs[i] * ( 1.00000e0 - h2ovmr[i] );
8075 for (
Index s=0; s<n_f; ++s )
8131 const Numeric C_PWR = 1.05e-38;
8137 if ( model ==
"Rosenkranz" )
8142 else if ( model ==
"user" )
8150 os <<
"N2-SelfContPWR93: ERROR! Wrong model values given.\n"
8151 <<
"allowed models are: 'Rosenkranz', 'user'" <<
'\n';
8152 throw runtime_error(os.str());
8154 out3 <<
"N2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
8155 <<
" C_s = " << C <<
"\n"
8156 <<
" x_s = " << x <<
"\n";
8162 assert ( n_p==t_abs.
nelem() );
8163 assert ( n_p==vmr.
nelem() );
8167 assert ( n_f==xsec.
nrows() );
8168 assert ( n_p==xsec.
ncols() );
8171 for (
Index i=0; i<n_p; ++i )
8174 for (
Index s=0; s<n_f; ++s )
8179 pow( f_mono[s], (
Numeric)2. ) *
8180 pow( (
Numeric)300.0/t_abs[i], x ) *
8181 pow( p_abs[i], (
Numeric)2. ) *
8237 const Numeric C_GM = 1.05e-38;
8245 if ( model ==
"Rosenkranz" )
8252 else if ( model ==
"user" )
8262 os <<
"N2-SelfContStandardType: ERROR! Wrong model values given.\n"
8263 <<
"allowed models are: 'Rosenkranz', 'user'" <<
'\n';
8264 throw runtime_error(os.str());
8266 out3 <<
"N2-SelfContStandardType: (model=" << model <<
") parameter values in use:\n"
8267 <<
" C = " << C <<
"\n"
8268 <<
" xt = " << xt <<
"\n"
8269 <<
" xf = " << xf <<
"\n"
8270 <<
" xp = " << xp <<
"\n";
8277 assert ( n_p==t_abs.
nelem() );
8278 assert ( n_p==vmr.
nelem() );
8282 assert ( n_f==xsec.
nrows() );
8283 assert ( n_p==xsec.
ncols() );
8286 for (
Index i=0; i<n_p; ++i )
8290 for (
Index s=0; s<n_f; ++s )
8295 pow( ((
Numeric)300.00/t_abs[i]), xt ) *
8296 pow( f_mono[s], xf ) *
8297 pow( p_abs[i], xp ) *
8298 pow( vmr[i], (xp-(
Numeric)1.) );
8346 const Numeric C_PWR = 7.43e-37;
8352 if ( model ==
"Rosenkranz" )
8357 else if ( model ==
"user" )
8365 os <<
"CO2-SelfContPWR93 : ERROR! Wrong model values given.\n"
8366 <<
"allowed models are: 'Rosenkranz', 'user'" <<
"\n";
8367 throw runtime_error(os.str());
8370 out3 <<
"CO2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
8371 <<
" C = " << C <<
"\n"
8372 <<
" x = " << x <<
"\n";
8378 assert ( n_p==t_abs.
nelem() );
8379 assert ( n_p==vmr.
nelem() );
8383 assert ( n_f==xsec.
nrows() );
8384 assert ( n_p==xsec.
ncols() );
8387 for (
Index i=0; i<n_p; ++i )
8393 C * pow( (
Numeric)300./t_abs[i], x ) * pow( p_abs[i], (
Numeric)2. ) * vmr[i];
8396 for (
Index s=0; s<n_f; ++s )
8398 xsec(s,i) += dummy * pow( f_mono[s], (
Numeric)2. );
8446 const Numeric C_PWR = 2.71e-37;
8452 if ( model ==
"Rosenkranz" )
8457 else if ( model ==
"user" )
8465 os <<
"CO2-ForeignContPWR93: ERROR! Wrong model values given.\n"
8466 <<
"allowed models are: 'Rosenkranz', 'user'" <<
"\n";
8467 throw runtime_error(os.str());
8470 out3 <<
"CO2-ForeignContPWR93: (model=" << model <<
") parameter values in use:\n"
8471 <<
" C = " << C <<
"\n"
8472 <<
" x = " << x <<
"\n";
8478 assert ( n_p==t_abs.
nelem() );
8479 assert ( n_p==vmr.
nelem() );
8483 assert ( n_f==xsec.
nrows() );
8484 assert ( n_p==xsec.
ncols() );
8487 for (
Index i=0; i<n_p; ++i )
8492 Numeric dummy = C * pow( (
Numeric)300./t_abs[i], x ) * p_abs[i] * p_abs[i] * n2_abs[i];
8495 for (
Index s=0; s<n_f; ++s )
8497 xsec(s,i) += dummy * pow( f_mono[s], (
Numeric)2. );
8555 const Numeric CC_MPM93 = 1.00000;
8556 const Numeric CG_MPM93 = 1.00000;
8557 const Numeric CE_MPM93 = 1.00000;
8563 if ( model ==
"MPM93" )
8569 else if ( model ==
"user" )
8578 os <<
"liquidcloud-MPM93: ERROR! Wrong model values given.\n"
8579 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
8580 throw runtime_error(os.str());
8582 out3 <<
"liquidcloud-MPM93: (model=" << model <<
") parameter values in use:\n"
8583 <<
" CC = " << CC <<
"\n"
8584 <<
" CG = " << CG <<
"\n"
8585 <<
" CE = " << CE <<
"\n";
8589 const Numeric low_lim_den = 0.000;
8590 const Numeric high_lim_den = 10.00e-3;
8596 assert ( n_p==t_abs.
nelem() );
8597 assert ( n_p==vmr.
nelem() );
8601 assert ( n_f==xsec.
nrows() );
8602 assert ( n_p==xsec.
ncols() );
8605 for (
Index i=0; i<n_p; ++i )
8615 if ( (vmr[i] > low_lim_den) && (vmr[i] < high_lim_den) )
8618 Numeric theta = 300.000 / t_abs[i];
8620 Numeric gamma1 = CG * 20.20 - 146.40*(theta-1.000) + 316.00*(theta-1.000)*(theta-1.000);
8622 Numeric gamma2 = 39.80 * gamma1;
8624 Numeric epsilon0 = CE * 103.30 * (theta-1.000) + 77.66;
8625 Numeric epsilon1 = 0.0671 * epsilon0;
8629 for (
Index s=0; s<n_f; ++s )
8632 Numeric Reepsilon = epsilon0 -
8634 ( ((epsilon0-epsilon1)/
8637 ((epsilon1-epsilon2)/
8639 + pow(gamma2,(
Numeric)2.))) );
8642 ( (gamma1*(epsilon0-epsilon1)/
8645 (gamma2*(epsilon1-epsilon2)/
8647 + pow(gamma2,(
Numeric)2.))) );
8658 + pow(Imepsilon,(
Numeric)2.) ) );
8667 if ( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) )
8670 os <<
"ERROR in MPM93WaterDropletAbs:\n"
8671 <<
" suspended water droplet density (valid range 0.00-10.00e-3 kg/m3):" << vmr[i] <<
"\n"
8672 <<
" ==> no calculation performed!\n";
8673 throw runtime_error(os.str());
8732 const Numeric CC_MPM93 = 1.00000;
8733 const Numeric CA_MPM93 = 1.00000;
8734 const Numeric CB_MPM93 = 1.00000;
8740 if ( model ==
"MPM93" )
8746 else if ( model ==
"user" )
8755 os <<
"icecloud-MPM93: ERROR! Wrong model values given.\n"
8756 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
8757 throw runtime_error(os.str());
8759 out3 <<
"icecloud-MPM93: (model=" << model <<
") parameter values in use:\n"
8760 <<
" CC = " << CC <<
"\n"
8761 <<
" CA = " << CA <<
"\n"
8762 <<
" CB = " << CB <<
"\n";
8766 const Numeric low_lim_den = 0.000;
8767 const Numeric high_lim_den = 10.00e-3;
8773 assert ( n_p==t_abs.
nelem() );
8774 assert ( n_p==vmr.
nelem() );
8778 assert ( n_f==xsec.
nrows() );
8779 assert ( n_p==xsec.
ncols() );
8784 for (
Index i=0; i<n_p; ++i )
8794 if ( (vmr[i] > low_lim_den) && (vmr[i] < high_lim_den) )
8797 Numeric theta = 300.000 / t_abs[i];
8799 Numeric ai = CA * (62.000 * theta - 11.600) * exp(-22.100 * (theta-1.000)) * 1.000e-4;
8802 ( -24.17 + (116.79/theta)
8806 for (
Index s=0; s<n_f; ++s )
8823 + pow(Imepsilon,(
Numeric)2.) ) );
8832 if ( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) )
8835 os <<
"ERROR in MPM93IceCrystalAbs:\n"
8836 <<
" suspended ice particle density (valid range: 0-10.0e-3 kg/m3):" << vmr[i] <<
"\n"
8837 <<
" ==> no calculation performed!\n";
8838 throw runtime_error(os.str());
8892 const Numeric CE_MPM93 = 1.00000;
8893 const Numeric CA_MPM93 = 1.00000;
8894 const Numeric CB_MPM93 = 1.00000;
8900 if ( model ==
"MPM93" )
8906 else if ( model ==
"user" )
8915 os <<
"rain-MPM93: ERROR! Wrong model values given.\n"
8916 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
8917 throw runtime_error(os.str());
8919 out3 <<
"rain-MPM93: (model=" << model <<
") parameter values in use:\n"
8920 <<
" CE = " << CE <<
"\n"
8921 <<
" CA = " << CA <<
"\n"
8922 <<
" CB = " << CB <<
"\n";
8925 const Numeric low_lim_rr = 0.000;
8926 const Numeric high_lim_rr = 150.000;
8932 assert ( n_p==t_abs.
nelem() );
8933 assert ( n_p==vmr.
nelem() );
8937 assert ( n_f==xsec.
nrows() );
8938 assert ( n_p==xsec.
ncols() );
8941 for (
Index i=0; i<n_p; ++i )
8957 if ( (vmr[i] >= low_lim_rr) && (vmr[i] < high_lim_rr) )
8960 for (
Index s=0; s<n_f; ++s )
8969 if ( f_mono[s] <= 2.9e9 )
8974 else if ( f_mono[s] <= 54.0e9 )
8979 else if ( f_mono[s] <= 180e9 )
8984 else if ( f_mono[s] <= 1000e9 )
8992 os <<
"ERROR in MPM93RainExt:\n"
8993 <<
" frequency (valid range 0-1000 GHz):" << f_mono[s]*
Hz_to_GHz <<
"\n"
8994 <<
" ==> no calculation performed!\n";
8995 throw runtime_error(os.str());
8998 if ( f_mono[s] <= 8.5e9 )
9003 else if ( f_mono[s] <= 25.0e9 )
9008 else if ( f_mono[s] <= 164.0e9 )
9013 else if ( f_mono[s] <= 1000e9 )
9021 os <<
"ERROR in MPM93RainExt:\n"
9022 <<
" frequency (valid range 0-1000 GHz):" << f_mono[s]*
Hz_to_GHz <<
"\n"
9023 <<
" ==> no calculation performed!\n";
9024 throw runtime_error(os.str());
9028 else if (vmr[i] > 25)
9031 if ( f_mono[s] <= 4.9e9 )
9036 else if ( f_mono[s] <= 10.7e9 )
9041 else if ( f_mono[s] <= 40.1e9 )
9046 else if ( f_mono[s] <= 59.1e9 )
9051 else if ( f_mono[s] <= 100e9 )
9059 os <<
"ERROR in MPM93RainExt:\n"
9060 <<
" frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" << f_mono[s]*
Hz_to_GHz <<
"\n"
9061 <<
" ==> no calculation performed!\n";
9062 throw runtime_error(os.str());
9065 if ( f_mono[s] <= 6.2e9 )
9070 else if ( f_mono[s] <= 23.8e9 )
9075 else if ( f_mono[s] <= 48.4e9 )
9080 else if ( f_mono[s] <= 68.2e9 )
9085 else if ( f_mono[s] <= 100e9 )
9093 os <<
"ERROR in MPM93RainExt:\n"
9094 <<
" frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" << f_mono[s]*
Hz_to_GHz <<
"\n"
9095 <<
" ==> no calculation performed!\n";
9096 throw runtime_error(os.str());
9105 Numeric ext_rain = CA * a_rain * pow(vmr[i],(CB*b_rain));
9114 if ( (vmr[i] < low_lim_rr) || (vmr[i] > high_lim_rr) )
9117 os <<
"ERROR in MPM93RainExt:\n"
9118 <<
" rain rate (valid range 0.00-150.00 mm/h):" << vmr[i] <<
"\n"
9119 <<
" ==> no calculation performed!\n";
9120 throw runtime_error(os.str());
9170 double f_minus, f_plus ;
9174 f_minus = 1.000 / ((f-fl)*(f-fl) + gamma*gamma);
9177 f_plus = 1.000 / ((f+fl)*(f+fl) + gamma*gamma);
9180 value = fabs(f/fl) * gamma * (f_minus + f_plus);
9229 double f_minus, f_plus ;
9233 f_minus = (gamma - delta * (fl-f)) / ((fl-f)*(fl-f) + gamma*gamma);
9236 f_plus = (gamma - delta * (fl+f)) / ((fl+f)*(fl+f) + gamma*gamma);
9239 value = f * (f_minus + f_plus);
9275 os <<
"In WVSatPressureLiquidWater:\n"
9276 <<
"temperature negative: T=" << t <<
"K \n";
9277 throw runtime_error(os.str());
9292 Numeric exponent = ( -7.90298 * (theta-1.000) +
9293 5.02808 * log10(theta) -
9294 1.3816e-7 * ( pow( (
Numeric)10.00,
9299 8.1328e-3 * ( pow( (
Numeric)10.00,
9340 os <<
"In WVSatPressureIce:\n"
9341 <<
"temperature negative: T=" << t <<
"K \n";
9342 throw runtime_error(os.str());
9347 Numeric exponent = (-9.09718 * (theta-1.000) -
9348 3.56654 * log10(theta) +
9349 0.876793 * (1.000-(1.000/theta)) +
9447 if (
"H2O-SelfContStandardType"==name )
9461 const int Nparam = 2;
9462 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9464 out3 <<
"Continuum model " << name <<
" is running with \n"
9465 <<
"user defined parameters according to model " << model <<
".\n";
9475 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9478 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9479 <<
"parameters for the model " << model <<
",\n"
9480 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9481 throw runtime_error(os.str());
9484 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9486 out3 <<
"Continuum model " << name <<
" running with \n"
9487 <<
"the parameters for model " << model <<
".\n";
9497 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9500 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9501 <<
"parameters for the model " << model <<
",\n"
9502 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9503 <<
"This ambiguity can not be solved by arts.\n"
9504 <<
"Please see the arts user guide chapter 3.\n";
9505 throw runtime_error(os.str());
9510 else if (
"H2O-ForeignContStandardType"==name )
9524 const int Nparam = 2;
9525 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9527 out3 <<
"Continuum model " << name <<
" is running with \n"
9528 <<
"user defined parameters according to model " << model <<
".\n";
9538 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9541 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9542 <<
"parameters for the model " << model <<
",\n"
9543 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9544 throw runtime_error(os.str());
9547 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9549 out3 <<
"Continuum model " << name <<
" running with \n"
9550 <<
"the parameters for model " << model <<
".\n";
9560 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9563 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9564 <<
"parameters for the model " << model <<
",\n"
9565 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9566 <<
"This ambiguity can not be solved by arts.\n"
9567 <<
"Please see the arts user guide chapter 3.\n";
9571 else if (
"H2O-ForeignContMaTippingType"==name )
9585 const int Nparam = 2;
9586 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9588 out3 <<
"Continuum model " << name <<
" is running with \n"
9589 <<
"user defined parameters according to model " << model <<
".\n";
9599 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9602 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9603 <<
"parameters for the model " << model <<
",\n"
9604 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9605 throw runtime_error(os.str());
9608 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9610 out3 <<
"Continuum model " << name <<
" running with \n"
9611 <<
"the parameters for model " << model <<
".\n";
9621 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9624 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9625 <<
"parameters for the model " << model <<
",\n"
9626 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9627 <<
"This ambiguity can not be solved by arts.\n"
9628 <<
"Please see the arts user guide chapter 3.\n";
9632 else if (
"H2O-ContMPM93"==name )
9654 const int Nparam = 7;
9655 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9657 out3 <<
"Continuum model " << name <<
" is running with \n"
9658 <<
"user defined parameters according to model " << model <<
".\n";
9673 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9676 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9677 <<
"parameters for the model " << model <<
",\n"
9678 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9679 throw runtime_error(os.str());
9682 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9684 out3 <<
"Continuum model " << name <<
" running with \n"
9685 <<
"the parameters for model " << model <<
".\n";
9700 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9703 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9704 <<
"parameters for the model " << model <<
",\n"
9705 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
9706 <<
"This ambiguity can not be solved by arts.\n"
9707 <<
"Please see the arts user guide chapter 3.\n";
9708 throw runtime_error(os.str());
9713 else if (
"H2O-ForeignContATM01"==name )
9730 const int Nparam = 1;
9731 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9733 out3 <<
"Continuum model " << name <<
" is running with \n"
9734 <<
"user defined parameters according to model " << model <<
".\n";
9743 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9746 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9747 <<
"parameters for the model " << model <<
",\n"
9748 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9749 throw runtime_error(os.str());
9752 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9754 out3 <<
"Continuum model " << name <<
" running with \n"
9755 <<
"the parameters for model " << model <<
".\n";
9764 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9767 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9768 <<
"parameters for the model " << model <<
",\n"
9769 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
9770 <<
"This ambiguity can not be solved by arts.\n"
9771 <<
"Please see the arts user guide chapter 3.\n";
9772 throw runtime_error(os.str());
9777 else if (
"H2O-SelfContCKD222"==name )
9794 const int Nparam = 1;
9795 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9797 out3 <<
"Continuum model " << name <<
" is running with \n"
9798 <<
"user defined parameters according to model " << model <<
".\n";
9808 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9811 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9812 <<
"parameters for the model " << model <<
",\n"
9813 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9814 throw runtime_error(os.str());
9817 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9819 out3 <<
"Continuum model " << name <<
" running with \n"
9820 <<
"the parameters for model " << model <<
".\n";
9830 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9833 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
9834 <<
"parameters for the model " << model <<
",\n"
9835 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9836 <<
"This ambiguity can not be solved by arts.\n"
9837 <<
"Please see the arts user guide chapter 3.\n";
9838 throw runtime_error(os.str());
9842 else if (
"H2O-ForeignContCKD222"==name )
9859 const int Nparam = 1;
9860 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9862 out3 <<
"Continuum model " << name <<
" is running with \n"
9863 <<
"user defined parameters according to model " << model <<
".\n";
9873 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9876 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9877 <<
"parameters for the model " << model <<
",\n"
9878 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9879 throw runtime_error(os.str());
9882 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9884 out3 <<
"Continuum model " << name <<
" running with \n"
9885 <<
"the parameters for model " << model <<
".\n";
9895 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9898 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
9899 <<
"parameters for the model " << model <<
",\n"
9900 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9901 <<
"This ambiguity can not be solved by arts.\n"
9902 <<
"Please see the arts user guide chapter 3.\n";
9903 throw runtime_error(os.str());
9907 else if (
"H2O-SelfContCKD242"==name )
9924 const int Nparam = 1;
9925 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9927 out3 <<
"Continuum model " << name <<
" is running with \n"
9928 <<
"user defined parameters according to model " << model <<
".\n";
9938 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9941 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9942 <<
"parameters for the model " << model <<
",\n"
9943 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9944 throw runtime_error(os.str());
9947 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9949 out3 <<
"Continuum model " << name <<
" running with \n"
9950 <<
"the parameters for model " << model <<
".\n";
9960 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9963 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
9964 <<
"parameters for the model " << model <<
",\n"
9965 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9966 <<
"This ambiguity can not be solved by arts.\n"
9967 <<
"Please see the arts user guide chapter 3.\n";
9968 throw runtime_error(os.str());
9972 else if (
"H2O-ForeignContCKD242"==name )
9989 const int Nparam = 1;
9990 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9992 out3 <<
"Continuum model " << name <<
" is running with \n"
9993 <<
"user defined parameters according to model " << model <<
".\n";
10003 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10006 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10007 <<
"parameters for the model " << model <<
",\n"
10008 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10009 throw runtime_error(os.str());
10012 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10014 out3 <<
"Continuum model " << name <<
" running with \n"
10015 <<
"the parameters for model " << model <<
".\n";
10025 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10028 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10029 <<
"parameters for the model " << model <<
",\n"
10030 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10031 <<
"This ambiguity can not be solved by arts.\n"
10032 <<
"Please see the arts user guide chapter 3.\n";
10033 throw runtime_error(os.str());
10037 else if (
"H2O-SelfContCKDMT100"==name )
10054 const int Nparam = 1;
10055 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10057 out3 <<
"Continuum model " << name <<
" is running with \n"
10058 <<
"user defined parameters according to model " << model <<
".\n";
10068 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10071 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10072 <<
"parameters for the model " << model <<
",\n"
10073 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10074 throw runtime_error(os.str());
10077 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10079 out3 <<
"Continuum model " << name <<
" running with \n"
10080 <<
"the parameters for model " << model <<
".\n";
10090 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10093 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10094 <<
"parameters for the model " << model <<
",\n"
10095 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10096 <<
"This ambiguity can not be solved by arts.\n"
10097 <<
"Please see the arts user guide chapter 3.\n";
10098 throw runtime_error(os.str());
10102 else if (
"H2O-ForeignContCKDMT100"==name )
10119 const int Nparam = 1;
10120 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10122 out3 <<
"Continuum model " << name <<
" is running with \n"
10123 <<
"user defined parameters according to model " << model <<
".\n";
10133 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10136 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10137 <<
"parameters for the model " << model <<
",\n"
10138 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10139 throw runtime_error(os.str());
10142 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10144 out3 <<
"Continuum model " << name <<
" running with \n"
10145 <<
"the parameters for model " << model <<
".\n";
10155 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10158 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10159 <<
"parameters for the model " << model <<
",\n"
10160 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10161 <<
"This ambiguity can not be solved by arts.\n"
10162 <<
"Please see the arts user guide chapter 3.\n";
10163 throw runtime_error(os.str());
10167 else if (
"H2O-SelfContCKD24"==name )
10184 const int Nparam = 1;
10185 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10187 out3 <<
"Continuum model " << name <<
" is running with \n"
10188 <<
"user defined parameters according to model " << model <<
".\n";
10199 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10202 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10203 <<
"parameters for the model " << model <<
",\n"
10204 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10205 throw runtime_error(os.str());
10208 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10210 out3 <<
"Continuum model " << name <<
" running with \n"
10211 <<
"the parameters for model " << model <<
".\n";
10222 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10225 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10226 <<
"parameters for the model " << model <<
",\n"
10227 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10228 <<
"This ambiguity can not be solved by arts.\n"
10229 <<
"Please see the arts user guide chapter 3.\n";
10230 throw runtime_error(os.str());
10234 else if (
"H2O-ForeignContCKD24"==name )
10251 const int Nparam = 1;
10252 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10254 out3 <<
"Continuum model " << name <<
" is running with \n"
10255 <<
"user defined parameters according to model " << model <<
".\n";
10266 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10269 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10270 <<
"parameters for the model " << model <<
",\n"
10271 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10272 throw runtime_error(os.str());
10275 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10277 out3 <<
"Continuum model " << name <<
" running with \n"
10278 <<
"the parameters for model " << model <<
".\n";
10289 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10292 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10293 <<
"parameters for the model " << model <<
",\n"
10294 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10295 <<
"This ambiguity can not be solved by arts.\n"
10296 <<
"Please see the arts user guide chapter 3.\n";
10297 throw runtime_error(os.str());
10301 else if (
"H2O-CP98"==name )
10316 const int Nparam = 3;
10317 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10319 out3 <<
"Full model " << name <<
" is running with \n"
10320 <<
"user defined parameters according to model " << model <<
".\n";
10331 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10334 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10335 <<
"parameters for the model " << model <<
",\n"
10336 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10337 throw runtime_error(os.str());
10340 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10342 out3 <<
"Full model " << name <<
" running with \n"
10343 <<
"the parameters for model " << model <<
".\n";
10354 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10357 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10358 <<
"parameters for the model " << model <<
",\n"
10359 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10360 <<
"This ambiguity can not be solved by arts.\n"
10361 <<
"Please see the arts user guide chapter 3.\n";
10362 throw runtime_error(os.str());
10366 else if (
"H2O-MPM87"==name )
10381 const int Nparam = 3;
10382 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10384 out3 <<
"Full model " << name <<
" is running with \n"
10385 <<
"user defined parameters according to model " << model <<
".\n";
10396 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10399 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10400 <<
"parameters for the model " << model <<
",\n"
10401 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10402 throw runtime_error(os.str());
10405 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10407 out3 <<
"Full model " << name <<
" running with \n"
10408 <<
"the parameters for model " << model <<
".\n";
10419 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10422 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10423 <<
"parameters for the model " << model <<
",\n"
10424 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10425 <<
"This ambiguity can not be solved by arts.\n"
10426 <<
"Please see the arts user guide chapter 3.\n";
10427 throw runtime_error(os.str());
10432 else if (
"H2O-MPM89"==name )
10447 const int Nparam = 3;
10448 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10450 out3 <<
"Full model " << name <<
" is running with \n"
10451 <<
"user defined parameters according to model " << model <<
".\n";
10462 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10465 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10466 <<
"parameters for the model " << model <<
",\n"
10467 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10468 throw runtime_error(os.str());
10471 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10473 out3 <<
"Full model " << name <<
" running with \n"
10474 <<
"the parameters for model " << model <<
".\n";
10485 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10488 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10489 <<
"parameters for the model " << model <<
",\n"
10490 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10491 <<
"This ambiguity can not be solved by arts.\n"
10492 <<
"Please see the arts user guide chapter 3.\n";
10493 throw runtime_error(os.str());
10498 else if (
"H2O-MPM93"==name )
10513 const int Nparam = 3;
10514 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10516 out3 <<
"Full model " << name <<
" is running with \n"
10517 <<
"user defined parameters according to model " << model <<
".\n";
10528 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10531 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10532 <<
"parameters for the model " << model <<
",\n"
10533 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10534 throw runtime_error(os.str());
10537 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10539 out3 <<
"Full model " << name <<
" running with \n"
10540 <<
"the parameters for model " << model <<
".\n";
10551 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10554 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10555 <<
"parameters for the model " << model <<
",\n"
10556 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10557 <<
"This ambiguity can not be solved by arts.\n"
10558 <<
"Please see the arts user guide chapter 3.\n";
10559 throw runtime_error(os.str());
10564 else if (
"H2O-PWR98"==name )
10578 const int Nparam = 3;
10579 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10581 out3 <<
"Full model " << name <<
" is running with \n"
10582 <<
"user defined parameters according to model " << model <<
".\n";
10593 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10596 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10597 <<
"parameters for the model " << model <<
",\n"
10598 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10599 throw runtime_error(os.str());
10602 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10604 out3 <<
"Full model " << name <<
" running with \n"
10605 <<
"the parameters for model " << model <<
".\n";
10616 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10619 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10620 <<
"parameters for the model " << model <<
",\n"
10621 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10622 <<
"This ambiguity can not be solved by arts.\n"
10623 <<
"Please see the arts user guide chapter 3.\n";
10624 throw runtime_error(os.str());
10629 else if (
"O2-CIAfunCKDMT100"==name )
10650 const int Nparam = 1;
10651 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10653 out3 <<
"Continuum model " << name <<
" is running with \n"
10654 <<
"user defined parameters according to model " << model <<
".\n";
10663 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10666 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10667 <<
"parameters for the model " << model <<
",\n"
10668 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10669 throw runtime_error(os.str());
10672 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10674 out3 <<
"Continuum model " << name <<
" running with \n"
10675 <<
"the parameters for model " << model <<
".\n";
10684 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10687 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10688 <<
"parameters for the model " << model <<
",\n"
10689 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10690 <<
"This ambiguity can not be solved by arts.\n"
10691 <<
"Please see the arts user guide chapter 3.\n";
10692 throw runtime_error(os.str());
10697 else if (
"O2-v0v0CKDMT100"==name )
10718 const int Nparam = 1;
10719 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10721 out3 <<
"Continuum model " << name <<
" is running with \n"
10722 <<
"user defined parameters according to model " << model <<
".\n";
10732 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10735 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10736 <<
"parameters for the model " << model <<
",\n"
10737 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10738 throw runtime_error(os.str());
10741 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10743 out3 <<
"Continuum model " << name <<
" running with \n"
10744 <<
"the parameters for model " << model <<
".\n";
10754 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10757 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10758 <<
"parameters for the model " << model <<
",\n"
10759 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10760 <<
"This ambiguity can not be solved by arts.\n"
10761 <<
"Please see the arts user guide chapter 3.\n";
10762 throw runtime_error(os.str());
10767 else if (
"O2-v1v0CKDMT100"==name )
10787 const int Nparam = 1;
10788 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10790 out3 <<
"Continuum model " << name <<
" is running with \n"
10791 <<
"user defined parameters according to model " << model <<
".\n";
10800 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10803 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10804 <<
"parameters for the model " << model <<
",\n"
10805 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10806 throw runtime_error(os.str());
10809 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10811 out3 <<
"Continuum model " << name <<
" running with \n"
10812 <<
"the parameters for model " << model <<
".\n";
10821 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10824 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10825 <<
"parameters for the model " << model <<
",\n"
10826 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10827 <<
"This ambiguity can not be solved by arts.\n"
10828 <<
"Please see the arts user guide chapter 3.\n";
10829 throw runtime_error(os.str());
10834 else if (
"O2-SelfContStandardType"==name )
10865 const int Nparam = 6;
10866 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10868 out3 <<
"Continuum model " << name <<
" is running with \n"
10869 <<
"user defined parameters according to model " << model <<
".\n";
10884 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10887 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10888 <<
"parameters for the model " << model <<
",\n"
10889 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10890 throw runtime_error(os.str());
10893 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10895 out3 <<
"Continuum model " << name <<
" running with \n"
10896 <<
"the parameters for model " << model <<
".\n";
10911 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10914 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10915 <<
"parameters for the model " << model <<
",\n"
10916 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10917 <<
"This ambiguity can not be solved by arts.\n"
10918 <<
"Please see the arts user guide chapter 3.\n";
10919 throw runtime_error(os.str());
10924 else if (
"O2-SelfContMPM93"==name )
10945 const int Nparam = 4;
10946 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10948 out3 <<
"Continuum model " << name <<
" is running with \n"
10949 <<
"user defined parameters according to model " << model <<
".\n";
10962 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10965 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10966 <<
"parameters for the model " << model <<
",\n"
10967 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10968 throw runtime_error(os.str());
10971 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10973 out3 <<
"Continuum model " << name <<
" running with \n"
10974 <<
"the parameters for model " << model <<
".\n";
10987 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10990 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10991 <<
"parameters for the model " << model <<
",\n"
10992 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10993 <<
"This ambiguity can not be solved by arts.\n"
10994 <<
"Please see the arts user guide chapter 3.\n";
10995 throw runtime_error(os.str());
11000 else if (
"O2-SelfContPWR93"==name )
11019 const int Nparam = 4;
11020 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11022 out3 <<
"Continuum model " << name <<
" is running with \n"
11023 <<
"user defined parameters according to model " << model <<
".\n";
11036 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11039 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11040 <<
"parameters for the model " << model <<
",\n"
11041 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11042 throw runtime_error(os.str());
11045 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11047 out3 <<
"Continuum model " << name <<
" running with \n"
11048 <<
"the parameters for model " << model <<
".\n";
11061 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11064 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11065 <<
"parameters for the model " << model <<
",\n"
11066 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11067 <<
"This ambiguity can not be solved by arts.\n"
11068 <<
"Please see the arts user guide chapter 3.\n";
11069 throw runtime_error(os.str());
11074 else if (
"O2-PWR88"==name )
11103 const int Nparam = 4;
11104 const char *version=
"PWR88";
11105 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11107 out3 <<
"Full model " << name <<
" is running with \n"
11108 <<
"user defined parameters according to model " << model <<
".\n";
11122 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11125 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11126 <<
"parameters for the model " << model <<
",\n"
11127 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11128 throw runtime_error(os.str());
11131 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11133 out3 <<
"Full model " << name <<
" running with \n"
11134 <<
"the parameters for model " << model <<
".\n";
11148 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11151 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11152 <<
"parameters for the model " << model <<
",\n"
11153 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11154 <<
"This ambiguity can not be solved by arts.\n"
11155 <<
"Please see the arts user guide chapter 3.\n";
11156 throw runtime_error(os.str());
11161 else if (
"O2-PWR93"==name )
11183 const int Nparam = 4;
11184 const char *version=
"PWR93";
11185 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11187 out3 <<
"Full model " << name <<
" is running with \n"
11188 <<
"user defined parameters according to model " << model <<
".\n";
11202 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11205 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11206 <<
"parameters for the model " << model <<
",\n"
11207 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11208 throw runtime_error(os.str());
11211 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11213 out3 <<
"Full model " << name <<
" running with \n"
11214 <<
"the parameters for model " << model <<
".\n";
11228 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11231 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11232 <<
"parameters for the model " << model <<
",\n"
11233 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11234 <<
"This ambiguity can not be solved by arts.\n"
11235 <<
"Please see the arts user guide chapter 3.\n";
11236 throw runtime_error(os.str());
11241 else if (
"O2-PWR98"==name )
11269 const int Nparam = 4;
11270 const char *version=
"PWR98";
11271 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11273 out3 <<
"Full model " << name <<
" is running with \n"
11274 <<
"user defined parameters according to model " << model <<
".\n";
11288 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11291 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11292 <<
"parameters for the model " << model <<
",\n"
11293 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11294 throw runtime_error(os.str());
11297 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11299 out3 <<
"Full model " << name <<
" running with \n"
11300 <<
"the parameters for model " << model <<
".\n";
11314 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11317 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11318 <<
"parameters for the model " << model <<
",\n"
11319 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11320 <<
"This ambiguity can not be solved by arts.\n"
11321 <<
"Please see the arts user guide chapter 3.\n";
11322 throw runtime_error(os.str());
11327 else if (
"O2-MPM93"==name )
11349 const int Nparam = 4;
11350 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11352 out3 <<
"Full model " << name <<
" is running with \n"
11353 <<
"user defined parameters according to model " << model <<
".\n";
11366 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11369 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11370 <<
"parameters for the model " << model <<
",\n"
11371 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11372 throw runtime_error(os.str());
11375 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11377 out3 <<
"Full model " << name <<
" running with \n"
11378 <<
"the parameters for model " << model <<
".\n";
11391 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11394 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11395 <<
"parameters for the model " << model <<
",\n"
11396 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11397 <<
"This ambiguity can not be solved by arts.\n"
11398 <<
"Please see the arts user guide chapter 3.\n";
11399 throw runtime_error(os.str());
11404 else if (
"O2-MPM92"==name )
11425 const int Nparam = 4;
11426 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11428 out3 <<
"Full model " << name <<
" is running with \n"
11429 <<
"user defined parameters according to model " << model <<
".\n";
11442 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11445 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11446 <<
"parameters for the model " << model <<
",\n"
11447 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11448 throw runtime_error(os.str());
11451 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11453 out3 <<
"Full model " << name <<
" running with \n"
11454 <<
"the parameters for model " << model <<
".\n";
11467 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11470 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11471 <<
"parameters for the model " << model <<
",\n"
11472 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11473 <<
"This ambiguity can not be solved by arts.\n"
11474 <<
"Please see the arts user guide chapter 3.\n";
11475 throw runtime_error(os.str());
11480 else if (
"O2-MPM89"==name )
11500 const int Nparam = 4;
11501 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11503 out3 <<
"Full model " << name <<
" is running with \n"
11504 <<
"user defined parameters according to model " << model <<
".\n";
11517 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11520 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11521 <<
"parameters for the model " << model <<
",\n"
11522 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11523 throw runtime_error(os.str());
11526 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11528 out3 <<
"Full model " << name <<
" running with \n"
11529 <<
"the parameters for model " << model <<
".\n";
11542 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11545 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11546 <<
"parameters for the model " << model <<
",\n"
11547 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11548 <<
"This ambiguity can not be solved by arts.\n"
11549 <<
"Please see the arts user guide chapter 3.\n";
11550 throw runtime_error(os.str());
11555 else if (
"O2-MPM87"==name )
11579 const int Nparam = 4;
11580 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11582 out3 <<
"Full model " << name <<
" is running with \n"
11583 <<
"user defined parameters according to model " << model <<
".\n";
11596 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11599 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11600 <<
"parameters for the model " << model <<
",\n"
11601 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11602 throw runtime_error(os.str());
11605 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11607 out3 <<
"Full model " << name <<
" running with \n"
11608 <<
"the parameters for model " << model <<
".\n";
11621 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11624 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11625 <<
"parameters for the model " << model <<
",\n"
11626 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11627 <<
"This ambiguity can not be solved by arts.\n"
11628 <<
"Please see the arts user guide chapter 3.\n";
11629 throw runtime_error(os.str());
11634 else if (
"O2-MPM85"==name )
11654 const int Nparam = 4;
11655 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11657 out3 <<
"Full model " << name <<
" is running with \n"
11658 <<
"user defined parameters according to model " << model <<
".\n";
11671 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11674 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11675 <<
"parameters for the model " << model <<
",\n"
11676 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11677 throw runtime_error(os.str());
11680 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11682 out3 <<
"Full model " << name <<
" running with \n"
11683 <<
"the parameters for model " << model <<
".\n";
11696 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11699 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11700 <<
"parameters for the model " << model <<
",\n"
11701 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11702 <<
"This ambiguity can not be solved by arts.\n"
11703 <<
"Please see the arts user guide chapter 3.\n";
11704 throw runtime_error(os.str());
11709 else if (
"N2-SelfContMPM93"==name )
11731 const int Nparam = 4;
11732 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11734 out3 <<
"Continuum model " << name <<
" is running with \n"
11735 <<
"user defined parameters according to model " << model <<
".\n";
11748 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11751 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11752 <<
"parameters for the model " << model <<
",\n"
11753 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11754 throw runtime_error(os.str());
11757 else if ( (model ==
"MPM93Scale") && (
parameters.nelem() == 1) )
11759 out3 <<
"Continuum model " << name <<
" running with \n"
11760 <<
"the parameters for model " << model <<
".\n";
11773 else if ( (model ==
"MPM93Scale") && (
parameters.nelem() != 1) )
11776 os <<
"Continuum model " << name <<
" requires 1 scaling input\n"
11777 <<
"parameters for the model " << model <<
",\n"
11778 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11779 throw runtime_error(os.str());
11782 else if ( (model !=
"user") && (model !=
"MPM93Scale") && (
parameters.nelem() == 0) )
11784 out3 <<
"Continuum model " << name <<
" running with \n"
11785 <<
"the parameters for model " << model <<
".\n";
11813 else if (
"N2-DryContATM01"==name )
11830 const int Nparam = 1;
11831 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11833 out3 <<
"Continuum model " << name <<
" is running with \n"
11834 <<
"user defined parameters according to model " << model <<
".\n";
11844 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11847 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11848 <<
"parameters for the model " << model <<
",\n"
11849 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11850 throw runtime_error(os.str());
11853 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11855 out3 <<
"Continuum model " << name <<
" running with \n"
11856 <<
"the parameters for model " << model <<
".\n";
11866 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11869 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11870 <<
"parameters for the model " << model <<
",\n"
11871 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11872 <<
"This ambiguity can not be solved by arts.\n"
11873 <<
"Please see the arts user guide chapter 3.\n";
11874 throw runtime_error(os.str());
11879 else if (
"N2-SelfContPWR93"==name )
11897 const int Nparam = 2;
11898 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11900 out3 <<
"Continuum model " << name <<
" is running with \n"
11901 <<
"user defined parameters according to model " << model <<
".\n";
11911 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11914 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11915 <<
"parameters for the model " << model <<
",\n"
11916 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11917 throw runtime_error(os.str());
11920 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11922 out3 <<
"Continuum model " << name <<
" running with \n"
11923 <<
"the parameters for model " << model <<
".\n";
11933 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11936 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11937 <<
"parameters for the model " << model <<
",\n"
11938 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11939 <<
"This ambiguity can not be solved by arts.\n"
11940 <<
"Please see the arts user guide chapter 3.\n";
11941 throw runtime_error(os.str());
11946 else if (
"N2-SelfContStandardType"==name )
11963 const int Nparam = 4;
11964 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11966 out3 <<
"Continuum model " << name <<
" is running with \n"
11967 <<
"user defined parameters according to model " << model <<
".\n";
11979 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11982 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11983 <<
"parameters for the model " << model <<
",\n"
11984 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11985 throw runtime_error(os.str());
11988 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11990 out3 <<
"Continuum model " << name <<
" running with \n"
11991 <<
"the parameters for model " << model <<
".\n";
12003 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12006 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12007 <<
"parameters for the model " << model <<
",\n"
12008 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12009 <<
"This ambiguity can not be solved by arts.\n"
12010 <<
"Please see the arts user guide chapter 3.\n";
12011 throw runtime_error(os.str());
12016 else if (
"N2-SelfContBorysow"==name )
12021 const int Nparam = 1;
12022 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12024 out3 <<
"Continuum model " << name <<
" is running with \n"
12025 <<
"user defined parameters according to model " << model <<
".\n";
12034 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12037 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12038 <<
"parameters for the model " << model <<
",\n"
12039 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12040 throw runtime_error(os.str());
12043 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12045 out3 <<
"Continuum model " << name <<
" running with \n"
12046 <<
"the parameters for model " << model <<
".\n";
12055 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12058 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12059 <<
"parameters for the model " << model <<
",\n"
12060 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12061 <<
"This ambiguity can not be solved by arts.\n"
12062 <<
"Please see the arts user guide chapter 3.\n";
12063 throw runtime_error(os.str());
12068 else if (
"N2-CIArotCKDMT100"==name )
12073 const int Nparam = 1;
12074 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12076 out3 <<
"Continuum model " << name <<
" is running with \n"
12077 <<
"user defined parameters according to model " << model <<
".\n";
12086 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12089 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12090 <<
"parameters for the model " << model <<
",\n"
12091 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12092 throw runtime_error(os.str());
12095 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12097 out3 <<
"Continuum model " << name <<
" running with \n"
12098 <<
"the parameters for model " << model <<
".\n";
12107 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12110 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12111 <<
"parameters for the model " << model <<
",\n"
12112 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12113 <<
"This ambiguity can not be solved by arts.\n"
12114 <<
"Please see the arts user guide chapter 3.\n";
12115 throw runtime_error(os.str());
12120 else if (
"N2-CIAfunCKDMT100"==name )
12129 const int Nparam = 1;
12130 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12132 out3 <<
"Continuum model " << name <<
" is running with \n"
12133 <<
"user defined parameters according to model " << model <<
".\n";
12142 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12145 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12146 <<
"parameters for the model " << model <<
",\n"
12147 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12148 throw runtime_error(os.str());
12151 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12153 out3 <<
"Continuum model " << name <<
" running with \n"
12154 <<
"the parameters for model " << model <<
".\n";
12163 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12166 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12167 <<
"parameters for the model " << model <<
",\n"
12168 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12169 <<
"This ambiguity can not be solved by arts.\n"
12170 <<
"Please see the arts user guide chapter 3.\n";
12171 throw runtime_error(os.str());
12176 else if (
"CO2-CKD241"==name )
12195 const int Nparam = 1;
12196 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12198 out3 <<
"Continuum model " << name <<
" is running with \n"
12199 <<
"user defined parameters according to model " << model <<
".\n";
12208 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12211 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12212 <<
"parameters for the model " << model <<
",\n"
12213 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12214 throw runtime_error(os.str());
12217 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12219 out3 <<
"Continuum model " << name <<
" running with \n"
12220 <<
"the parameters for model " << model <<
".\n";
12229 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12232 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12233 <<
"parameters for the model " << model <<
",\n"
12234 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12235 <<
"This ambiguity can not be solved by arts.\n"
12236 <<
"Please see the arts user guide chapter 3.\n";
12237 throw runtime_error(os.str());
12242 else if (
"CO2-CKDMT100"==name )
12261 const int Nparam = 1;
12262 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12264 out3 <<
"Continuum model " << name <<
" is running with \n"
12265 <<
"user defined parameters according to model " << model <<
".\n";
12274 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12277 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12278 <<
"parameters for the model " << model <<
",\n"
12279 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12280 throw runtime_error(os.str());
12283 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12285 out3 <<
"Continuum model " << name <<
" running with \n"
12286 <<
"the parameters for model " << model <<
".\n";
12295 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12298 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12299 <<
"parameters for the model " << model <<
",\n"
12300 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12301 <<
"This ambiguity can not be solved by arts.\n"
12302 <<
"Please see the arts user guide chapter 3.\n";
12303 throw runtime_error(os.str());
12308 else if (
"CO2-SelfContPWR93"==name )
12326 const int Nparam = 2;
12327 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12329 out3 <<
"Continuum model " << name <<
" is running with \n"
12330 <<
"user defined parameters according to model " << model <<
".\n";
12340 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12343 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12344 <<
"parameters for the model " << model <<
",\n"
12345 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12346 throw runtime_error(os.str());
12349 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12351 out3 <<
"Continuum model " << name <<
" running with \n"
12352 <<
"the parameters for model " << model <<
".\n";
12362 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12365 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12366 <<
"parameters for the model " << model <<
",\n"
12367 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12368 <<
"This ambiguity can not be solved by arts.\n"
12369 <<
"Please see the arts user guide chapter 3.\n";
12370 throw runtime_error(os.str());
12375 else if (
"CO2-ForeignContPWR93"==name )
12394 const int Nparam = 2;
12395 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12397 out3 <<
"Continuum model " << name <<
" is running with \n"
12398 <<
"user defined parameters according to model " << model <<
".\n";
12409 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12412 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12413 <<
"parameters for the model " << model <<
",\n"
12414 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12415 throw runtime_error(os.str());
12418 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12420 out3 <<
"Continuum model " << name <<
" running with \n"
12421 <<
"the parameters for model " << model <<
".\n";
12432 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12435 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12436 <<
"parameters for the model " << model <<
",\n"
12437 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12438 <<
"This ambiguity can not be solved by arts.\n"
12439 <<
"Please see the arts user guide chapter 3.\n";
12440 throw runtime_error(os.str());
12445 else if (
"liquidcloud-MPM93"==name )
12475 const int Nparam = 3;
12476 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12478 out3 <<
"MPM93 liquid water cloud absorption model " << name <<
" is running with \n"
12479 <<
"user defined parameters according to model " << model <<
".\n";
12490 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12493 os <<
"MPM93 liquid water cloud absorption model " << name <<
" requires\n"
12494 << Nparam <<
" input parameter for the model " << model <<
",\n"
12495 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12496 throw runtime_error(os.str());
12499 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12501 out3 <<
"MPM93 liquid water cloud absorption model " << name <<
" running with \n"
12502 <<
"the parameter for model " << model <<
".\n";
12513 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12516 os <<
"ERROR: MPM93 liquid water cloud absorption model " << name <<
" requires NO input\n"
12517 <<
"parameters for the model " << model <<
",\n"
12518 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12519 <<
"This ambiguity can not be solved by arts.\n"
12520 <<
"Please see the arts user guide chapter 4.\n";
12521 throw runtime_error(os.str());
12526 else if (
"icecloud-MPM93"==name )
12556 const int Nparam = 3;
12557 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12559 out3 <<
"MPM93 ice water cloud absorption model " << name <<
" is running with \n"
12560 <<
"user defined parameters according to model " << model <<
".\n";
12571 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12574 os <<
"MPM93 ice water cloud absorption model " << name <<
" requires \n"
12575 << Nparam <<
" input parameter for the model " << model <<
",\n"
12576 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12577 throw runtime_error(os.str());
12580 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12582 out3 <<
"MPM93 ice water cloud absorption model " << name <<
" running with \n"
12583 <<
"the parameter for model " << model <<
".\n";
12594 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12597 os <<
"ERROR: MPM93 ice water cloud absorption model " << name <<
" requires NO input\n"
12598 <<
"parameters for the model " << model <<
",\n"
12599 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12600 <<
"This ambiguity can not be solved by arts.\n"
12601 <<
"Please see the arts user guide chapter 4.\n";
12602 throw runtime_error(os.str());
12607 else if (
"rain-MPM93"==name )
12638 const int Nparam = 3;
12639 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12641 out3 <<
"MPM93 rain extinction model " << name <<
" is running with \n"
12642 <<
"user defined parameters according to model " << model <<
".\n";
12653 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12656 os <<
"MPM93 rain extinction model " << name <<
" requires \n"
12657 << Nparam <<
" input parameter for the model " << model <<
",\n"
12658 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12659 throw runtime_error(os.str());
12662 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12664 out3 <<
"MPM93 rain extinction model " << name <<
" running with \n"
12665 <<
"the parameter for model " << model <<
".\n";
12676 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12679 os <<
"ERROR: MPM93 rain extinction model " << name <<
" requires NO input\n"
12680 <<
"parameters for the model " << model <<
",\n"
12681 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12682 <<
"This ambiguity can not be solved by arts.\n"
12683 <<
"Please see the arts user guide chapter 4.\n";
12684 throw runtime_error(os.str());
12692 os <<
"ERROR: Continuum/ full model tag `" << name <<
"' not yet implemented in arts!";
12693 throw runtime_error(os.str());
12732 bool found =
false;
12739 String specnam = i->Name();
12743 j<i->Isotope().end();
12746 String isonam = j->Name();
12753 String fullnam = specnam +
"-" + isonam;
12758 if ( 0 > j->Abundance() )
12760 valid_models.push_back(fullnam);
12763 if ( name == fullnam )
12775 os <<
"The String `" << name <<
"' matches none of the known\n"
12776 <<
"continuum models. Known continuum models are:";
12777 for ( ArrayOfString::const_iterator i=valid_models.begin();
12778 i<valid_models.end();
12783 throw runtime_error(os.str());
12796 #ifndef F2C_INCLUDE
12797 #define F2C_INCLUDE
12811 #ifdef INTEGER_STAR_8
12812 typedef long long longint;
12813 typedef unsigned long long ulongint;
12814 #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
12815 #define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
12823 #define Extern extern
12830 typedef short flag;
12946 #define abs(x) ((x) >= 0 ? (x) : -(x))
12947 #define dabs(x) (doublereal)abs(x)
12948 #define min(a,b) ((a) <= (b) ? (a) : (b))
12949 #define max(a,b) ((a) >= (b) ? (a) : (b))
12950 #define dmin(a,b) (doublereal)min(a,b)
12951 #define dmax(a,b) (doublereal)max(a,b)
12952 #define bit_test(a,b) ((a) >> (b) & 1)
12953 #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
12954 #define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
12958 #define F2C_proc_par_types 1
12960 typedef int (*U_fp)(...);
12970 typedef int (*
S_fp)(...);
12972 typedef int (*U_fp)();
12992 #ifndef Skip_f2c_Undefs
13031 #define blockin_1 blockin_
13037 #define app3a_1 app3a_
13043 #define app3b_1 app3b_
13049 #define rsilo_1 rsilo_
13055 #define bou43_1 bou43_
13066 #define bba_1 (bba_.m_1)
13067 #define bba_2 (bba_.m_2)
13086 #define like_1 (*(struct like_1_ *) &like_)
13092 #define k1k0_1 k1k0_
13105 #define energ_1 (*(struct energ_1_ *) &energ_)
13111 #define dimer_1 dimer_
13122 #define n2part_1 (*(struct n2part_1_ *) &n2part_)
13123 #define n2part_2 (*(struct n2part_2_ *) &n2part_)
13134 #define bl3_1 (bl3_.m_1)
13135 #define bl3_2 (bl3_.m_2)
13146 #define bbbb_1 (bbbb_.m_1)
13147 #define bbbb_2 (bbbb_.m_2)
13154 }
energ_ = { {-54.99996, -54.86228, -54.58697, -54.17413, -53.62391,
13155 -52.93648, -52.11211, -51.15108, -50.05374, -48.82049, -47.45179,
13156 -45.94815, -44.31014, -42.53841, -40.63365, -38.59665, -36.42824,
13157 -34.12937, -31.70105, -29.14439, -26.46061, -23.65103, -20.71709,
13158 -17.66041, -14.48271, -11.18593, -7.77221, -4.24393, -.60374,
13159 3.14531, 6.99978, 10.95566, 15.00818, 19.15136, 23.37787,
13160 27.67681, 32.03237, 36.42278, 40.83668, 45.29436, 49.79246,
13161 -31.89437, -31.77215, -31.52779, -31.16143, -30.67334, -30.06382,
13162 -29.33328, -28.48222, -27.51123, -26.42099, -25.21229, -23.88603,
13163 -22.44322, -20.88502, -19.21272, -17.42777, -15.53182, -13.52669,
13164 -11.41446, -9.1975, -6.87848, -4.46049, -1.94714, .65736, 3.34788,
13165 6.11816, 8.95978, 11.8613, 14.80383, 17.75924, 20.71774,
13166 23.71589, 0., 0., 0., 0., 0., 0., 0., 0., 0., -16.05019, -15.9464,
13167 -15.73896, -15.42815, -15.0144, -14.4983, -13.88057, -13.16213,
13168 -12.34407, -11.42771, -10.41455, -9.30639, -8.10531, -6.81376,
13169 -5.43459, -3.97121, -2.42768, -.80899, .87859, 2.62689, 4.42334,
13170 6.24733, 8.06983, 9.90464, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13171 0., 0., 0., 0., 0., 0., 0., -6.49343, -6.41131, -6.24732,
13172 -6.00202, -5.67623, -5.27111, -4.78813, -4.22919, -3.59665,
13173 -2.89345, -2.12325, -1.29074, -.40202, .5345, 1.50455, 2.48212,
13174 3.46665, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13175 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.76583, -1.70887,
13176 -1.59552, -1.427, -1.20523, -.93302, -.61434, -.25504, .13641, 0.,
13177 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13178 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13179 -.17133, -.14341, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13180 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13181 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.}, {41, 32, 24, 17, 9, 2} }
13261 #define temp (blockin_1.temp)
13262 #define fnumin (blockin_1.fnumin)
13263 #define fnumax (blockin_1.fnumax)
13264 #define dnu (blockin_1.dnu)
13265 #define slit (app3a_1.slit)
13266 #define dx (app3a_1.dx)
13267 #define rsilo (rsilo_1.rsilo)
13268 #define omeg (bba_1.omeg)
13269 #define rsi (bba_1.rsi)
13270 #define rsigg (bba_1.rsigg)
13271 #define nsol (bbc_1.nsol)
13272 #define like (like_1.like)
13273 #define ik1k0 (k1k0_1.ik1k0)
13274 #define ibound (bbb_1.ibound)
13284 double hexa[10], quad[10], freq[10], e;
13286 double s, x, t1, t2, t3, t4;
13290 double ss[1], tt[2];
13291 extern int bound32_(
double *,
double *,
int
13292 *),
bound54_(
double *,
double *,
int *);
13294 extern int spline_(
int *,
int *,
int *,
13295 double *,
double *,
double *,
double *,
13296 double *,
double *,
int *,
double *);
13297 double dtrans[10], abscoef[10];
13298 extern int addspec_(
double *,
double *,
13299 double *,
double *,
double *,
double *,
13300 double *,
int *,
double *,
double *,
int *,
13301 int *,
int *,
int *,
int *,
int *);
13302 double eps, alfatot[10];
13375 if (t < 50. || t > 300.) {
13377 os <<
"out of T range ( 50<T<300)! return without calc.!" <<
"\n";
13378 throw runtime_error(os.str());
13385 fnumin = f / 29979245800.;
13416 for (i__ = 1; i__ <= s__1; ++i__) {
13419 alfatot[i__ - 1] = 0.;
13421 abscoef[i__ - 1] = 0.;
13452 for (i__ = 1; i__ <= s__1; ++i__) {
13464 if (
rsi[i__ - 1] < 1e-60) {
13465 rsi[i__ - 1] = rslow1;
13468 rsilo[i__ - 1] = log(
rsi[i__ - 1]) + log(10.) * 80.;
13469 omeg[i__ - 1] = (double) (i__ - 1) *
dx;
13475 spline_(&
nsol, &
cs__1, &
cs__0, &eps,
omeg,
rsilo, tt, ss, &si, &nr,
rsigg)
13491 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &
cs__0, &
13494 for (i__ = 1; i__ <= s__1; ++i__) {
13495 quad[i__ - 1] = abscoef[i__ - 1];
13497 alfatot[i__ - 1] = abscoef[i__ - 1] + alfatot[i__ - 1];
13510 for (i__ = 1; i__ <= s__1; ++i__) {
13522 if (
rsi[i__ - 1] < 1e-60) {
13523 rsi[i__ - 1] = rslow1;
13526 rsilo[i__ - 1] = log(
rsi[i__ - 1]) + log(10.) * 80.;
13528 omeg[i__ - 1] = (double) (i__ - 1) *
dx;
13530 spline_(&
nsol, &
cs__1, &
cs__0, &eps,
omeg,
rsilo, tt, ss, &si, &nr,
rsigg)
13537 if (
temp >= 140.) {
13550 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &
cs__0, &
13553 for (i__ = 1; i__ <= s__1; ++i__) {
13554 hexa[i__ - 1] = abscoef[i__ - 1];
13565 alfatot[i__ - 1] += abscoef[i__ - 1];
13583 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &
cs__0, &
13586 for (i__ = 1; i__ <= s__1; ++i__) {
13587 hexa[i__ - 1] = abscoef[i__ - 1];
13598 alfatot[i__ - 1] += abscoef[i__ - 1];
13619 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &
cs__0, &
13622 for (i__ = 1; i__ <= s__1; ++i__) {
13623 dtrans[i__ - 1] = abscoef[i__ - 1];
13625 alfatot[i__ - 1] += abscoef[i__ - 1];
13651 tksabs[0] = quad[0];
13652 tksabs[1] = hexa[0];
13653 tksabs[2] = dtrans[0];
13654 tksabs[3] = alfatot[0];
13655 ret_val = alfatot[0];
13676 #define wnrmax3 (app3a_1.wnrmax3)
13677 #define rsilo (rsilo_1.rsilo)
13678 #define omeg (bba_2.omeg)
13679 #define rsigg (bba_2.rsigg)
13680 #define beta (bba_2.beta)
13681 #define nsol (bbc_1.nsol)
13682 #define ibound (bbb_1.ibound)
13683 #define q1 (n2part_1.q1)
13684 #define wn2 (n2part_1.wn2)
13685 #define b01 (n2part_1.b01)
13686 #define d01 (n2part_1.d01)
13687 #define jrange2 (n2part_1.jrange2)
13695 tau1,
double *tau2,
double *tau5,
double *tau6,
13696 double *
temp,
int *nf,
double *freq,
double *abscoef,
13697 int * ,
int *
like,
int *lambda1,
int *lambda2,
13698 int *lambda,
int * )
13702 static double closchm = 2.68675484e19;
13703 static double boltzwn = .6950304;
13704 static double hbar = 1.054588757e-27;
13705 static double pi = 3.1415926535898;
13706 static double clight = 2.997925e10;
13716 int s__1, s__2, s__3, s__4, s__5, s__6;
13728 extern double bgama_(
double *,
double *,
double *,
13729 double *,
double *,
double *,
double *);
13732 int i1, j1, i2, j2;
13733 double p1, p2, omega1, omega2;
13736 int jplusl, ip1, jp1, ip2, jp2;
13737 double fac, cgs, xbg, wkf, frq, wki;
13738 extern double specfct_(
double *,
double *,
double *,
13739 double *,
int *,
double *),
clebsqr_(
int *,
13764 twopic = 2. * pi * clight;
13772 d__2 = closchm * 1e-30;
13773 calib = twopic * (d__1 * d__1 * 4. / (hbar * 3. * clight)) * (d__2 * d__2)
13775 calib /= (double) (*
like + 1);
13779 for (i__ = 1; i__ <= s__1; ++i__) {
13801 if (*lambda1 == 0 || *lambda2 == 0) {
13816 for (i1 = 1; i1 <= s__1; ++i1) {
13819 for (ip1 = 1; ip1 <= s__2; ++ip1) {
13821 cg1s =
clebsqr_(&j1, lambda1, &jp1);
13828 s__3 = j1 * (j1 + 1);
13829 p1 = (double) (2 * j1 + 1) *
wn2[1 + j1 % 2 - 1] * exp(
13830 -1.4387859 / *
temp * ((
b01 - (
double) s__3 *
d01) * (
13831 double) s__3)) /
q1;
13835 omega1 = (
b01 - (double) s__3 *
d01) * (double) s__3 - (
13836 b01 - (
double) s__4 *
d01) * (
double) s__4;
13838 for (i2 = 1; i2 <= s__3; ++i2) {
13841 for (ip2 = 1; ip2 <= s__4; ++ip2) {
13843 cg2s =
clebsqr_(&j2, lambda2, &jp2);
13850 s__5 = j2 * (j2 + 1);
13851 p2 = (double) (2 * j2 + 1) *
wn2[1 + j2 % 2 - 1] *
13852 exp(-1.4387859 / *
temp * ((
b01 - (
double)
13853 s__5 *
d01) * (
double) s__5)) /
q1;
13856 omega2 = (
b01 - (double) s__5 *
d01) * (double)
13857 s__5 - (
b01 - (
double) s__6 *
d01) * (
13859 fac = calib * p1 * p2 * cg1s * cg2s;
13861 for (i__ = 1; i__ <= s__5; ++i__) {
13862 frq = freq[i__] - omega1 - omega2;
13863 wki = freq[i__] * (1. - exp(-
beta * freq[i__]));
13865 xbg = *g0 *
bgama_(&frq, tau1, tau2, ep, tau5, tau6,
13875 abscoef[i__] += xbg * wkf;
13892 for (i__ = 1; i__ <= s__2; ++i__) {
13895 for (ip = 1; ip <= s__1; ++ip) {
13904 s__4 = j * (j + 1);
13905 p = (double) (2 * j + 1) *
wn2[1 + j % 2 - 1] * exp(
13906 -1.4387859 / *
temp * ((
b01 - (
double) s__4 *
d01) * (
13907 double) s__4)) /
q1;
13911 omega1 = (
b01 - (double) s__4 *
d01) * (double) s__4 - (
13912 b01 - (
double) s__3 *
d01) * (
double) s__3;
13913 fac = calib * p * cgs;
13915 for (iq = 1; iq <= s__4; ++iq) {
13916 frq = freq[iq] - omega1;
13918 wki = freq[iq] * (1. - exp(-
beta * freq[iq]));
13920 xbg = *g0 *
bgama_(&frq, tau1, tau2, ep, tau5, tau6,
temp);
13928 abscoef[iq] += xbg * wkf;
13955 #define q (n2part_2.q)
13956 #define wn2 (n2part_2.wn2)
13957 #define b0 (n2part_2.b0)
13958 #define d0 (n2part_2.d0)
13959 #define jrange1 (n2part_2.jrange1)
13978 s__1 = j * (j + 1);
13979 dq = (double) (2 * j + 1) *
wn2[1 + j % 2 - 1] * exp(-1.4387859 * ((
13980 b0 - (
double) s__1 *
d0) * (
double) s__1) / *
temp);
13983 if (dq >
q / 900.) {
13999 #define slit (app3a_1.slit)
14000 #define dx (app3a_1.dx)
14001 #define wnrmax3 (app3a_1.wnrmax3)
14002 #define nsri (app3b_1.nsri)
14003 #define ns (app3b_1.ns)
14004 #define nsriup (app3b_1.nsriup)
14005 #define rsi (bl3_1.rsi)
14030 }
else if (*y == 0) {
14036 x0 =
nsri + 1. + *x /
dx;
14040 nu = (int) (x0 -
ns);
14047 no = (int) (x0 +
ns);
14061 for (i__ = nu; i__ <= s__1; ++i__) {
14063 dr = slope * (xi - (*x -
slit));
14067 rsi[i__ - 1] += dr;
14080 for (i__ = n1; i__ <= s__1; ++i__) {
14082 dr = *y - slope * (xi - *x);
14086 rsi[i__ - 1] += dr;
14111 double *phi2,
int *n,
double *rtemp)
14117 double tfac, f, gp, si;
14119 extern int ixpolat_(
int *,
int *,
int *,
14120 double *,
double *,
double *,
double *,
14121 double *,
double *,
int *,
double *);
14154 tfac = -(*rtemp) * f;
14156 if (f <= omega[*n]) {
14159 ret_val = exp(-(phi[*n - 1] - phi[*n]) * (f - omega[*n]) / (omega[*n] -
14160 omega[*n - 1]) + phi[*n] + tfac) * 1e-80;
14171 ret_val = exp(tfac + gp) * 1e-80;
14177 #define slit (app3a_1.slit)
14178 #define dx (app3a_1.dx)
14179 #define wnrmax3 (app3a_1.wnrmax3)
14180 #define nsri (app3b_1.nsri)
14181 #define ns (app3b_1.ns)
14182 #define nsriup (app3b_1.nsriup)
14183 #define eb (energ_1.eb)
14184 #define niv (energ_1.niv)
14185 #define nlines (dimer_1.nlines)
14186 #define rsibb (bl3_2.rsibb)
14187 #define ldelvi (bbbb_2.ldelvi)
14188 #define ivi (bbbb_2.ivi)
14189 #define ivip (bbbb_2.ivip)
14190 #define ldelel (bbbb_2.ldelel)
14191 #define ll (bbbb_2.ll)
14192 #define llp (bbbb_2.llp)
14199 static int ldelvis[63] = { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,
14200 1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,
14201 3,4,4,4,4,4,4,4,4 };
14202 static int ivis[63] = { 0,0,1,1,2,2,3,3,4,4,0,0,0,0,1,1,1,1,2,2,2,2,
14203 3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,0,1,2,0,1,2,0,1,0,1,0,1,2,
14205 static int ivips[63] = { 0,0,1,1,2,2,3,3,4,4,1,1,1,1,2,2,2,2,3,3,3,3,
14206 4,4,4,4,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,3,4,5,3,4,5,3,4,3,4,3,4,5,
14208 static int ldelels[63] = { 1,3,1,3,1,3,1,3,1,3,-3,-1,1,3,-3,-1,1,3,
14209 -3,-1,1,3,3,1,-1,-3,-3,-1,1,3,-3,-1,1,3,-3,-1,1,3,-1,-3,1,3,1,1,1,
14210 -1,-1,-1,-3,-3,3,3,-3,-3,-3,-3,-3,3,3,1,1,-1,-1 };
14211 static double as[63] = { 4.4844e-40,4.4356e-40,2.9345e-40,2.885e-40,
14212 1.6441e-40,1.5899e-40,7.2882e-41,6.7748e-41,1.0378e-41,1.3041e-42,
14213 1.5006e-41,1.537e-41,1.6139e-41,1.7143e-41,1.9985e-41,2.0169e-41,
14214 2.0994e-41,2.2094e-41,1.636e-41,1.6281e-41,1.6714e-41,1.7326e-41,
14215 8.0425e-42,8.0862e-42,8.0093e-42,8.1366e-42,2.4471e-42,2.5406e-42,
14216 2.6629e-42,2.8064e-42,4.6227e-42,4.715e-42,4.8513e-42,5.0133e-42,
14217 3.9968e-42,3.984e-42,3.981e-42,3.9687e-42,1.1806e-42,1.3458e-42,
14218 3.8746e-42,3.9219e-42,7.3334e-43,1.339e-42,1.3041e-42,7.1401e-43,
14219 1.3461e-42,6.5776e-43,6.9847e-43,1.3517e-42,7.5545e-43,1.3268e-42,
14220 6.9847e-43,1.3517e-42,7.464e-43,2.1322e-43,2.6037e-43,2.0823e-43,
14221 2.0632e-43,2.1067e-43,2.0531e-43,2.1218e-43,2.3006e-43 };
14222 static double bs[63] = { 4.3e-4,4.6e-4,8.3e-4,8.9e-4,.0017,.00186,
14223 .0041,.00457,0.,0.,9.99e-4,5.23e-4,1.49e-4,-1.68e-4,.001837,
14224 .001153,6.6e-4,2.54e-4,.003603,.002677,.002101,.001738,.00595,
14225 .006843,0.,.007035,.001025,6.42e-4,2.54e-4,-1.64e-4,.002342,
14226 .001975,.00164,.001328,.004943,.004999,.005461,.006839,0.,.010993,
14227 0.,0.,.001367,.005262,0.,.001601,.00451,0.,.001828,.004175,.04816,
14228 .007033,.001828,.004175,.009338,.003733,.008508,.006979,0.,
14229 .005035,0.,.004169,0. };
14230 static double twopic = 1.88365183e11;
14231 static double pi = 3.141592654;
14242 double stoke, stoki, am, pf;
14248 extern double clebsqr_(
int *,
int *,
int *);
14249 extern int profile_(
double *,
double *);
14252 #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42]
14283 for (i__ = 1; i__ <= 401; ++i__) {
14285 rsibb[i__ - 1] = 0.;
14288 alfa = 1. / (*
temp * .69519);
14289 rm = 2.32498211e-23;
14292 d__1 = rm * 1.380662e-16 * *
temp * 2. * pi / 4.3906208382975998e-53;
14300 ldelvi = ldelvis[nr - 1];
14301 ivi = ivis[nr - 1];
14302 ivip = ivips[nr - 1];
14303 ldelel = ldelels[nr - 1];
14317 nnii =
niv[iv - 1];
14320 for (l = 1; l <= s__1; ++l) {
14323 am = a * exp(-b * (
double) ((l - 1) * l));
14330 if (lp >
niv[ivp - 1] || lp < 1) {
14333 if (
eb_ref(lp, ivp) == 0.) {
14336 if (
eb_ref(l, iv) == 0.) {
14341 stoki = am * exp(-alfa *
eb_ref(l, iv)) / pf * (double) ((
ll << 1)
14349 stokip = am * exp(-alfa *
eb_ref(lp, ivp)) / pf * (double) ((
llp
14371 for (n = 1; n <= s__1; ++n) {
14381 for (i__ = 1; i__ <= s__1; ++i__) {
14412 #define slit (app3a_1.slit)
14413 #define dx (app3a_1.dx)
14414 #define wnrmax3 (app3a_1.wnrmax3)
14415 #define nsri (app3b_1.nsri)
14416 #define ns (app3b_1.ns)
14417 #define nsriup (app3b_1.nsriup)
14418 #define eb (energ_1.eb)
14419 #define niv (energ_1.niv)
14420 #define nlines (dimer_1.nlines)
14421 #define rsibb (bl3_2.rsibb)
14428 static int ldelvis[54] = { 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,
14429 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
14431 static int ivis[54] = { 0,0,0,1,1,1,2,2,2,3,3,3,0,0,0,0,0,0,1,1,1,1,
14432 1,1,2,2,2,2,2,2,3,3,3,3,3,3,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2 };
14433 static int ivips[54] = { 0,0,0,1,1,1,2,2,2,3,3,3,1,1,1,1,1,1,2,2,2,2,
14434 2,2,3,3,3,3,3,3,4,4,4,4,4,4,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4 };
14435 static int ldelels[54] = { 1,3,5,1,3,5,1,3,5,1,3,5,-5,-3,-1,1,3,5,-5,
14436 -3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1,
14437 1,3,5,-5,-3,-1,1,3,5 };
14438 static double as[54] = { 7.9332e-42,7.8207e-42,7.7235e-42,4.5815e-42,
14439 4.4834e-42,4.4059e-42,2.173e-42,2.0824e-42,2.025e-42,7.7222e-43,
14440 7.0351e-43,6.6815e-43,4.9611e-43,5.2232e-43,5.2979e-43,5.4652e-43,
14441 5.6827e-43,5.9277e-43,5.733e-43,6.062e-43,6.0862e-43,6.2104e-43,
14442 6.3809e-43,6.5698e-43,3.9501e-43,4.1599e-43,4.1033e-43,4.1097e-43,
14443 4.1339e-43,4.153e-43,1.5858e-43,1.5976e-43,1.5478e-43,1.5066e-43,
14444 1.4554e-43,1.3848e-43,9.9241e-44,1.0109e-43,1.0396e-43,1.0758e-43,
14445 1.1176e-43,1.1636e-43,1.646e-43,1.647e-43,1.6617e-43,1.6837e-43,
14446 1.7085e-43,1.7327e-43,1.1797e-43,1.1593e-43,1.1405e-43,1.1174e-43,
14447 1.0853e-43,1.0401e-43 };
14448 static double bs[54] = { 6.12e-4,6.35e-4,6.77e-4,.001137,.001201,
14449 .001341,.00229,.002449,.00287,.005426,.005876,.00745,.001,8.83e-4,
14450 6.09e-4,3.92e-4,2.07e-4,3.7e-5,.001625,.001624,.001305,.001084,
14451 9.27e-4,8.21e-4,.002978,.003273,.002994,.002954,.003153,.003668,
14452 .005799,.006423,.006733,.00796,.010937,.019179,.001229,9.93e-4,
14453 7.67e-4,5.43e-4,3.09e-4,5.1e-5,.002456,.0023,.00221,.002193,
14454 .002273,.002506,.004556,.004825,.005454,.006725,.009431,.016672 };
14455 static double twopic = 1.88365183e11;
14456 static double pi = 3.141592654;
14464 int nnii,
ivip, nsol2;
14467 double stoke, stoki, am, pf;
14473 extern double clebsqr_(
int *,
int *,
int *);
14474 extern int profile_(
double *,
double *);
14477 #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42]
14507 for (i__ = 1; i__ <= 401; ++i__) {
14509 rsibb[i__ - 1] = 0.;
14511 alfa = 1. / (*
temp * .69519);
14512 rm = 2.32498211e-23;
14515 d__1 = rm * 1.380662e-16 * *
temp * 2. * pi / 4.3906208382975998e-53;
14523 ldelvi = ldelvis[nr - 1];
14524 ivi = ivis[nr - 1];
14525 ivip = ivips[nr - 1];
14526 ldelel = ldelels[nr - 1];
14537 nnii =
niv[iv - 1];
14539 for (l = 1; l <= s__1; ++l) {
14540 am = a * exp(-b * (
double) (l * (l + 1)));
14544 if (lp >
niv[ivp - 1] || lp < 1) {
14547 if (
eb_ref(lp, ivp) == 0.) {
14550 if (
eb_ref(l, iv) == 0.) {
14555 stoki = am * exp(-alfa *
eb_ref(l, iv)) / pf * (double) ((
ll << 1)
14561 stokip = am * exp(-alfa *
eb_ref(lp, ivp)) / pf * (double) ((
llp
14580 for (n = 1; n <= s__1; ++n) {
14589 for (i__ = 1; i__ <= s__1; ++i__) {
14619 double ret_val, d__1;
14622 extern double fctl_(
int *);
14635 case 1:
goto L_threej2;
14638 fc = (double) ((*lp << 1) + 1);
14654 if (*l + *lambda < *lp || *lambda + *lp < *l || *l + *lp < *lambda) {
14657 if ((*l + *lp + *lambda) % 2 != 0) {
14660 if (*l < 0 || *lp < 0 || *lambda < 0) {
14663 f = 1. / (double) (*l + *lp + 1 - *lambda);
14664 if (*lambda == 0) {
14667 i1 = (*l + *lp + *lambda) / 2;
14668 i0 = (*l + *lp - *lambda) / 2 + 1;
14670 for (i__ = i0; i__ <= s__1; ++i__) {
14672 f = f * (double) i__ / (
double) (((i__ << 1) + 1) << 1);
14675 s__1 = *lambda + *l - *lp;
14676 s__2 = *lambda + *lp - *l;
14678 s__1 = (*lambda + *l - *lp) / 2;
14679 s__2 = (*lambda + *lp - *l) / 2;
14682 ret_val = p / (d__1 * d__1);
14693 return clebsqr_0_(1, (
int *)0, (
int *)0, (
int *)0);
14700 double ret_val, d__1;
14717 for (i__ = 2; i__ <= s__1; ++i__) {
14721 ret_val = (double) j;
14724 z__ = (double) (*n + 1);
14726 ret_val = exp(-z__) * pow(z__, d__1) * ((((-2.294720936e-4 / z__ -
14727 .00268132716) / z__ + .003472222222) / z__ + .08333333333) / z__
14728 + 1.) * 2.506628274631;
14731 #define ik1k0 (k1k0_1.ik1k0)
14733 double bgama_(
double *fnu,
double *t1,
double *t2,
double
14734 *eps,
double *t3,
double *t4,
double *
temp)
14738 static double pi = 3.1415926535898;
14739 static double clight = 29979245800.;
14740 static double hbar = 1.0545887e-27;
14741 static double boltz = 1.380662e-16;
14744 double ret_val, d__1, d__2, d__3, d__4;
14747 double omega, z__, k0, t0, bgambc, zp, xk1;
14757 omega = 2. * pi * clight * *fnu;
14758 t0 = hbar / (boltz * 2. * *
temp);
14760 d__1 = omega * *t1;
14761 z__ = sqrt((d__1 * d__1 + 1.) * (*t2 * *t2 + t0 * t0)) / *t1;
14762 if (z__ - 2. <= 0.) {
14770 d__1 = d__2 * d__2;
14773 d__3 = d__4 * d__4;
14774 xk1 = z__ * z__ * log(z__ / 2.) * ((((((3.2411e-4 * d__1 + .00301532) *
14775 d__1 + .02658733) * d__1 + .15084934) * d__1 + .51498869) * d__1
14776 + .87890594) * d__1 + .5) + ((((((-4.686e-5 * d__3 - .00110404) *
14777 d__3 - .01919402) * d__3 - .18156897) * d__3 - .67278579) * d__3
14778 + .15443144) * d__3 + 1.);
14782 xk1 = sqrt(z__) * exp(-z__) * ((((((-6.8245e-4 * d__1 + .00325614) * d__1
14783 - .00780353) * d__1 + .01504268) * d__1 - .0365562) * d__1 +
14784 .23498619) * d__1 + 1.25331414);
14787 d__1 = *t1 * omega;
14788 bgambc = *t1 / pi * exp(*t2 / *t1 + t0 * omega) * xk1 / (d__1 * d__1 + 1.)
14794 d__1 = omega * *t4;
14795 zp = sqrt((d__1 * d__1 + 1.) * (*t3 * *t3 + t0 * t0)) / *t4;
14796 if (zp - 2. <= 0.) {
14804 d__1 = d__2 * d__2;
14807 d__3 = d__4 * d__4;
14808 k0 = -log(zp / 2.) * ((((((.0045813 * d__1 + .0360768) * d__1 + .2659732)
14809 * d__1 + 1.2067492) * d__1 + 3.0899424) * d__1 + 3.5156229) *
14810 d__1 + 1.) + ((((((7.4e-6 * d__3 + 1.075e-4) * d__3 + .00262698) *
14811 d__3 + .0348859) * d__3 + .23069756) * d__3 + .4227842) * d__3 -
14816 k0 = exp(-zp) * ((((((5.3208e-4 * d__1 - .0025154) * d__1 + .00587872) *
14817 d__1 - .01062446) * d__1 + .02189568) * d__1 - .07832358) * d__1
14818 + 1.25331414) / sqrt(zp);
14820 ret_val = (bgambc + *eps * (*t3 / pi) * exp(*t3 / *t4 + t0 * omega) * k0)
14833 double *eps,
double *x,
double *y,
double *t,
14834 double *ss,
double *si,
int *nr,
double *s2)
14841 double epsi, prod, h__;
14847 double sm, delsqs, ht1, ht2, ss2, yp1, eta, ypn;
14874 case 1:
goto L_ixpolat;
14882 for (i__ = 2; i__ <= s__1; ++i__) {
14885 s2[i__] = 3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[
14886 s__2 + 1] - y[s__2]) / (x[s__2 + 1] - x[s__2])) / (x[i__ + 1]
14887 - x[i__ - 1]) / 1.5;
14899 for (i__ = 2; i__ <= s__2; ++i__) {
14900 if ((d__1 = s2[i__],
abs(d__1)) > sm) {
14901 sm = (d__2 = s2[i__],
abs(d__2));
14908 for (i__ = 2; i__ <= s__2; ++i__) {
14911 w = (3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[s__1 +
14912 1] - y[s__1]) / (x[s__1 + 1] - x[s__1])) / (x[i__ + 1] - x[
14913 i__ - 1]) - (x[i__] - x[i__ - 1]) * .5 / (x[i__ + 1] - x[i__
14914 - 1]) * s2[i__ - 1] - (.5 - (x[i__] - x[i__ - 1]) * .5 / (x[
14915 i__ + 1] - x[i__ - 1])) * s2[i__ + 1] - s2[i__]) * omega;
14917 if (
abs(w) - eta <= 0.) {
14928 if (eta - epsi >= 0.) {
14950 for (j = 1; j <= s__2; ++j) {
14954 if ((d__1 = t[j] - x[1]) < 0.) {
14956 }
else if (d__1 == 0) {
14962 if ((d__1 = t[j] - x[n]) < 0.) {
14964 }
else if (d__1 == 0) {
14970 if ((d__1 = t[j] - x[i__]) < 0.) {
14972 }
else if (d__1 == 0) {
14986 x[2]) * (s2[1] * 2. + s2[2]) / 6.;
14989 }
else if (*k == 0) {
14995 ss[j] = yp1 + ht1 * s2[1];
14998 ss[j] = y[1] + yp1 * ht1 + s2[1] * ht1 * ht1 / 2.;
15005 ht1 = t[j] - x[n1];
15007 ypn = (y[n1 + 1] - y[n1]) / (x[n1 + 1] - x[n1]) + (x[n] - x[n1]) * (
15008 s2[n1] + s2[n] * 2.) / 6.;
15011 }
else if (*k == 0) {
15017 ss[j] = ypn + ht2 * s2[n];
15020 ss[j] = y[n] + ypn * ht2 + s2[n] * ht2 * ht2 / 2.;
15031 ht1 = t[j] - x[i__];
15032 ht2 = t[j] - x[i__ + 1];
15034 s3 = (s2[i__ + 1] - s2[i__]) / (x[i__ + 1] - x[i__]);
15035 ss2 = s2[i__] + ht1 * s3;
15036 delsqs = (s2[i__] + s2[i__ + 1] + ss2) / 6.;
15040 }
else if (*k == 0) {
15046 ss[j] = y[i__] + ht1 * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]))
15050 ss[j] = (y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) + (ht1 + ht2) *
15051 delsqs + prod * s3 / 6.;
15062 for (i__ = 1; i__ <= s__2; ++i__) {
15063 h__ = x[i__ + 1] - x[i__];
15067 *si = *si + h__ * .5 * (y[i__] + y[i__ + 1]) - d__1 * (d__1 * d__1) *
15068 (s2[i__] + s2[i__ + 1]) / 24.;
15079 double *eps,
double *x,
double *y,
double *t,
15080 double *ss,
double *si,
int *nr,
double *s2)
15082 return spline_0_(0, l, m, k, eps, x, y, t, ss, si, nr, s2);
15086 double *eps,
double *x,
double *y,
double *t,
15087 double *ss,
double *si,
int *nr,
double *s2)
15089 return spline_0_(1, l, m, k, eps, x, y, t, ss, si, nr, s2);
15105 #define fh2oa_1 (*(struct fh2oa_1_ *) &fh2oa_)
15116 #define fh2ob_1 (*(struct fh2ob_1_ *) &fh2ob_)
15117 #define fh2ob_2 (*(struct fh2ob_2_ *) &fh2ob_)
15123 #define sh2oa_1 (*(struct sh2oa_1_ *) &sh2oa_)
15134 #define sh2ob_1 (*(struct sh2ob_1_ *) &sh2ob_)
15135 #define sh2ob_2 (*(struct sh2ob_2_ *) &sh2ob_)
15141 #define s260a_1 (*(struct s260a_1_ *) &s260a_)
15152 #define s260b_1 (*(struct s260b_1_ *) &s260b_)
15153 #define s260b_2 (*(struct s260b_2_ *) &s260b_)
15160 #define consts_1 (*(struct consts_1_ *) &consts_)
15166 }
fh2oa_ = { {.012859, .011715, .011038, .011715, .012859, .015326,
15167 .016999, .018321, .019402, .01957, .019432, .017572, .01676,
15168 .01548, .013984, .012266, .010467, .0094526, .0080485, .0069484,
15169 .0061416, .0050941, .0044836, .0038133, .0034608, .0031487,
15170 .0024555, .0020977, .0017266, .001492, .0012709, 9.8081e-4,
15171 8.5063e-4, 6.8822e-4, 5.3809e-4, 4.4679e-4, 3.3774e-4, 2.7979e-4,
15172 2.1047e-4, 1.6511e-4, 1.2993e-4, 9.3033e-5, 7.436e-5, 5.6428e-5,
15173 4.5442e-5, 3.4575e-5, 2.7903e-5, 2.1374e-5, 1.6075e-5, 1.3022e-5,
15174 1.0962e-5, 8.5959e-6, 6.9125e-6, 5.3808e-6, 4.3586e-6, 3.6394e-6,
15175 2.9552e-6, 2.3547e-6, 1.8463e-6, 1.6036e-6, 1.3483e-6, 1.1968e-6,
15176 1.0333e-6, 8.4484e-7, 6.7195e-7, 5.0947e-7, 4.2343e-7, 3.4453e-7,
15177 2.783e-7, 2.3063e-7, 1.9951e-7, 1.7087e-7, 1.4393e-7, 1.2575e-7,
15178 1.075e-7, 8.2325e-8, 5.7524e-8, 4.4482e-8, 3.8106e-8, 3.4315e-8,
15179 2.9422e-8, 2.5069e-8, 2.2402e-8, 1.9349e-8, 1.6152e-8, 1.2208e-8,
15180 8.966e-9, 7.1322e-9, 6.1028e-9, 5.2938e-9, 4.535e-9, 3.4977e-9,
15181 2.9511e-9, 2.4734e-9, 2.0508e-9, 1.8507e-9, 1.6373e-9, 1.5171e-9,
15182 1.3071e-9, 1.2462e-9, 1.2148e-9, 1.259e-9, 1.3153e-9, 1.3301e-9,
15183 1.4483e-9, 1.6944e-9, 2.0559e-9, 2.2954e-9, 2.6221e-9, 3.2606e-9,
15184 4.2392e-9, 5.2171e-9, 6.2553e-9, 8.2548e-9, 9.5842e-9, 1.128e-8,
15185 1.3628e-8, 1.7635e-8, 2.1576e-8, 2.4835e-8, 3.0014e-8, 3.8485e-8,
15186 4.744e-8, 5.5202e-8, 7.0897e-8, 9.6578e-8, 1.3976e-7, 1.8391e-7,
15187 2.3207e-7, 2.996e-7, 4.0408e-7, 5.926e-7, 7.8487e-7, 1.0947e-6,
15188 1.4676e-6, 1.9325e-6, 2.6587e-6, 3.4534e-6, 4.4376e-6, 5.8061e-6,
15189 7.0141e-6, 8.4937e-6, 1.0186e-5, 1.2034e-5, 1.3837e-5, 1.6595e-5,
15190 1.9259e-5, 2.162e-5, 2.3681e-5, 2.7064e-5, 3.251e-5, 3.546e-5,
15191 3.9109e-5, 4.2891e-5, 4.7757e-5, 5.0981e-5, 5.0527e-5, 4.8618e-5,
15192 4.4001e-5, 3.7982e-5, 3.2667e-5, 2.7794e-5, 2.491e-5, 2.4375e-5,
15193 2.7316e-5, 3.2579e-5, 3.5499e-5, 3.801e-5, 4.1353e-5, 4.3323e-5,
15194 4.3004e-5, 3.979e-5, 3.7718e-5, 3.636e-5, 3.2386e-5, 2.7409e-5,
15195 2.3626e-5, 2.0631e-5, 1.8371e-5, 1.5445e-5, 1.2989e-5, 1.1098e-5,
15196 9.6552e-6, 8.0649e-6, 7.2365e-6, 5.9137e-6, 5.2759e-6, 4.886e-6,
15197 4.1321e-6, 3.5918e-6, 2.764e-6, 2.4892e-6, 2.1018e-6, 1.7848e-6,
15198 1.5855e-6, 1.3569e-6, 1.1986e-6, 9.4693e-7, 7.4097e-7, 6.3443e-7,
15199 4.8131e-7, 4.0942e-7, 3.3316e-7, 2.8488e-7, 2.3461e-7, 1.7397e-7,
15200 1.4684e-7, 1.0953e-7, 8.5396e-8, 6.9261e-8, 5.4001e-8, 4.543e-8,
15201 3.2791e-8, 2.5995e-8, 2.0225e-8, 1.571e-8, 1.3027e-8, 1.0229e-8,
15202 8.5277e-9, 6.5249e-9, 5.0117e-9, 3.9906e-9, 3.2332e-9, 2.7847e-9,
15203 2.457e-9, 2.3359e-9, 2.0599e-9, 1.8436e-9, 1.6559e-9, 1.491e-9,
15204 1.2794e-9, 9.8229e-10, 8.0054e-10, 6.0769e-10, 4.5646e-10,
15205 3.3111e-10, 2.4428e-10, 1.8007e-10, 1.3291e-10, 9.7974e-11,
15206 7.8271e-11, 6.3833e-11, 5.4425e-11, 4.6471e-11, 4.0209e-11,
15207 3.5227e-11, 3.1212e-11, 2.884e-11, 2.7762e-11, 2.7935e-11,
15208 3.2012e-11, 3.9525e-11, 5.0303e-11, 6.8027e-11, 9.3954e-11,
15209 1.2986e-10, 1.8478e-10, 2.5331e-10, 3.4827e-10, 4.6968e-10,
15210 6.238e-10, 7.9106e-10, 1.0026e-9, 1.2102e-9, 1.4146e-9, 1.6154e-9,
15211 1.751e-9, 1.8575e-9, 1.8742e-9, 1.87e-9, 1.8582e-9, 1.9657e-9,
15212 2.1204e-9, 2.0381e-9, 2.0122e-9, 2.0436e-9, 2.1213e-9, 2.0742e-9,
15213 1.987e-9, 2.0465e-9, 2.1556e-9, 2.2222e-9, 2.1977e-9, 2.1047e-9,
15214 1.9334e-9, 1.7357e-9, 1.5754e-9, 1.4398e-9, 1.4018e-9, 1.5459e-9,
15215 1.7576e-9, 2.1645e-9, 2.948e-9, 4.4439e-9, 5.8341e-9, 8.0757e-9,
15216 1.1658e-8, 1.6793e-8, 2.2694e-8, 2.9468e-8, 3.9278e-8, 5.2145e-8,
15217 6.4378e-8, 7.7947e-8, 8.5321e-8, 9.7848e-8, 1.0999e-7, 1.1489e-7,
15218 1.2082e-7, 1.2822e-7, 1.4053e-7, 1.5238e-7, 1.5454e-7, 1.5018e-7,
15219 1.4048e-7, 1.2359e-7, 1.0858e-7, 9.3486e-8, 8.1638e-8, 7.769e-8,
15220 8.4625e-8, 1.0114e-7, 1.143e-7, 1.2263e-7, 1.3084e-7, 1.338e-7,
15221 1.3573e-7, 1.3441e-7, 1.2962e-7, 1.2638e-7, 1.1934e-7, 1.1371e-7,
15222 1.0871e-7, 9.8843e-8, 9.1877e-8, 9.105e-8, 9.3213e-8, 9.2929e-8,
15223 1.0155e-7, 1.1263e-7, 1.237e-7, 1.3636e-7, 1.54e-7, 1.7656e-7,
15224 2.1329e-7, 2.3045e-7, 2.5811e-7, 2.9261e-7, 3.4259e-7, 4.077e-7,
15225 4.8771e-7, 5.8081e-7, 7.2895e-7, 8.7482e-7, 1.0795e-6, 1.3384e-6,
15226 1.7208e-6, 2.0677e-6, 2.5294e-6, 3.1123e-6, 3.79e-6, 4.7752e-6,
15227 5.6891e-6, 6.6261e-6, 7.6246e-6, 8.773e-6, 9.6672e-6, 1.098e-5,
15228 1.1287e-5, 1.167e-5, 1.1635e-5, 1.1768e-5, 1.2039e-5, 1.2253e-5,
15229 1.3294e-5, 1.4005e-5, 1.3854e-5, 1.342e-5, 1.3003e-5, 1.2645e-5,
15230 1.1715e-5, 1.1258e-5, 1.1516e-5, 1.2494e-5, 1.3655e-5, 1.4931e-5,
15231 1.4649e-5, 1.3857e-5, 1.312e-5, 1.1791e-5, 1.0637e-5, 8.276e-6,
15232 6.5821e-6, 5.1959e-6, 4.0158e-6, 3.0131e-6, 2.0462e-6, 1.4853e-6,
15233 1.0365e-6, 7.3938e-7, 4.9752e-7, 3.4148e-7, 2.4992e-7, 1.8363e-7,
15234 1.4591e-7, 1.138e-7, 9.0588e-8, 7.3697e-8, 6.0252e-8, 5.1868e-8,
15235 4.266e-8, 3.6163e-8, 3.2512e-8, 2.9258e-8, 2.4238e-8, 2.1209e-8,
15236 1.6362e-8, 1.3871e-8, 1.2355e-8, 9.694e-9, 7.7735e-9, 6.2278e-9,
15237 5.2282e-9, 4.3799e-9, 3.5545e-9, 2.7527e-9, 2.095e-9, 1.6344e-9,
15238 1.2689e-9, 1.0403e-9, 8.488e-10, 6.3461e-10, 4.7657e-10,
15239 3.522e-10, 2.7879e-10, 2.3021e-10, 1.6167e-10, 1.1732e-10,
15240 8.9206e-11, 7.0596e-11, 5.831e-11, 4.4084e-11, 3.1534e-11,
15241 2.5068e-11, 2.2088e-11, 2.2579e-11, 2.2637e-11, 2.5705e-11,
15242 3.2415e-11, 4.6116e-11, 6.5346e-11, 9.4842e-11, 1.2809e-10,
15243 1.8211e-10, 2.4052e-10, 3.027e-10, 3.5531e-10, 4.2402e-10,
15244 4.673e-10, 4.7942e-10, 4.6813e-10, 4.5997e-10, 4.5788e-10,
15245 4.0311e-10, 3.7367e-10, 3.3149e-10, 2.9281e-10, 2.5231e-10,
15246 2.1152e-10, 1.9799e-10, 1.8636e-10, 1.9085e-10, 2.0786e-10,
15247 2.2464e-10, 2.3785e-10, 2.5684e-10, 2.7499e-10, 2.6962e-10,
15248 2.6378e-10, 2.6297e-10, 2.6903e-10, 2.7035e-10, 2.5394e-10,
15249 2.5655e-10, 2.7184e-10, 2.9013e-10, 3.0585e-10, 3.0791e-10,
15250 3.1667e-10, 3.4343e-10, 3.7365e-10, 4.0269e-10, 4.726e-10,
15251 5.6584e-10, 6.9791e-10, 8.6569e-10, 1.0393e-9, 1.2067e-9,
15252 1.5047e-9, 1.8583e-9, 2.2357e-9, 2.6498e-9, 3.2483e-9, 3.9927e-9,
15253 4.6618e-9, 5.5555e-9, 6.6609e-9, 8.2139e-9, 1.0285e-8, 1.3919e-8,
15254 1.8786e-8, 2.515e-8, 3.313e-8, 4.5442e-8, 6.337e-8, 9.0628e-8,
15255 1.2118e-7, 1.5927e-7, 2.1358e-7, 2.7825e-7, 3.7671e-7, 4.4894e-7,
15256 5.4442e-7, 6.224e-7, 7.3004e-7, 8.3384e-7, 8.7933e-7, 8.808e-7,
15257 8.6939e-7, 8.6541e-7, 8.2055e-7, 7.7278e-7, 7.5989e-7, 8.6909e-7,
15258 9.7945e-7, 1.0394e-6, 1.0646e-6, 1.1509e-6, 1.2017e-6, 1.1915e-6,
15259 1.1259e-6, 1.1549e-6, 1.1938e-6, 1.2356e-6, 1.2404e-6, 1.1716e-6,
15260 1.1149e-6, 1.0073e-6, 8.9845e-7, 7.6639e-7, 6.1517e-7, 5.0887e-7,
15261 4.1269e-7, 3.2474e-7, 2.5698e-7, 1.8893e-7, 1.4009e-7, 1.034e-7,
15262 7.7724e-8, 5.7302e-8, 4.2178e-8, 2.9603e-8, 2.1945e-8, 1.6301e-8,
15263 1.2806e-8, 1.0048e-8, 7.897e-9, 6.1133e-9, 4.9054e-9, 4.1985e-9,
15264 3.6944e-9, 3.2586e-9, 2.7362e-9, 2.3647e-9, 2.1249e-9, 1.8172e-9,
15265 1.6224e-9, 1.5158e-9, 1.2361e-9, 1.0682e-9, 9.2312e-10, 7.922e-10,
15266 6.8174e-10, 5.6147e-10, 4.8268e-10, 4.1534e-10, 3.3106e-10,
15267 2.8275e-10, 2.4584e-10, 2.0742e-10, 1.784e-10, 1.4664e-10,
15268 1.239e-10, 1.0497e-10, 8.5038e-11, 6.7008e-11, 5.6355e-11,
15269 4.3323e-11, 3.6914e-11, 3.2262e-11, 3.0749e-11, 3.0318e-11,
15270 2.9447e-11, 2.9918e-11, 3.0668e-11, 3.1315e-11, 3.0329e-11,
15271 2.8259e-11, 2.6065e-11, 2.3578e-11, 2.0469e-11, 1.6908e-11,
15272 1.4912e-11, 1.1867e-11, 9.973e-12, 8.1014e-12, 6.7528e-12,
15273 6.3133e-12, 5.8599e-12, 6.0145e-12, 6.5105e-12, 7.0537e-12,
15274 7.4973e-12, 7.8519e-12, 8.5039e-12, 9.1995e-12, 1.0694e-11,
15275 1.1659e-11, 1.2685e-11, 1.3087e-11, 1.3222e-11, 1.2634e-11,
15276 1.1077e-11, 9.6259e-12, 8.3202e-12, 7.4857e-12, 6.8069e-12,
15277 6.7496e-12, 7.3116e-12, 8.0171e-12, 8.6394e-12, 9.2659e-12,
15278 1.0048e-11, 1.0941e-11, 1.2226e-11, 1.3058e-11, 1.5193e-11,
15279 1.8923e-11, 2.3334e-11, 2.8787e-11, 3.6693e-11, 4.8295e-11,
15280 6.426e-11, 8.8269e-11, 1.1865e-10, 1.5961e-10, 2.0605e-10,
15281 2.7349e-10, 3.7193e-10, 4.8216e-10, 6.1966e-10, 7.715e-10,
15282 1.0195e-9, 1.2859e-9, 1.6535e-9, 2.0316e-9, 2.3913e-9, 3.0114e-9,
15283 3.7495e-9, 4.6504e-9, 5.9145e-9, 7.684e-9, 1.0304e-8, 1.301e-8,
15284 1.6441e-8, 2.1475e-8, 2.5892e-8, 2.9788e-8, 3.382e-8, 4.0007e-8,
15285 4.4888e-8, 4.5765e-8, 4.6131e-8, 4.6239e-8, 4.4849e-8, 4.0729e-8,
15286 3.6856e-8, 3.6164e-8, 3.7606e-8, 4.1457e-8, 4.375e-8, 5.115e-8,
15287 5.6054e-8, 6.1586e-8, 6.4521e-8, 6.6494e-8, 6.9024e-8, 6.8893e-8,
15288 7.0901e-8, 6.976e-8, 7.1485e-8, 7.074e-8, 7.3764e-8, 7.6618e-8,
15289 8.4182e-8, 9.3838e-8, 1.0761e-7, 1.2851e-7, 1.4748e-7, 1.8407e-7,
15290 2.2109e-7, 2.6392e-7, 2.9887e-7, 3.4493e-7, 4.0336e-7, 4.3551e-7,
15291 4.9231e-7, 5.0728e-7, 5.3781e-7, 5.3285e-7, 5.4496e-7, 5.5707e-7,
15292 5.6944e-7, 6.1123e-7, 6.4317e-7, 6.4581e-7, 6.1999e-7, 6.0191e-7,
15293 5.7762e-7, 5.7241e-7, 5.7013e-7, 6.016e-7, 6.6905e-7, 7.4095e-7,
15294 8.2121e-7, 8.0947e-7, 7.6145e-7, 7.2193e-7, 6.3722e-7, 5.4316e-7,
15295 4.2186e-7, 3.2528e-7, 2.5207e-7, 1.8213e-7, 1.2658e-7, 8.6746e-8,
15296 6.0216e-8, 4.1122e-8, 2.8899e-8, 2.174e-8, 1.799e-8, 1.5593e-8,
15297 1.397e-8, 1.2238e-8, 1.0539e-8, 9.2386e-9, 7.8481e-9, 6.8704e-9,
15298 5.7615e-9, 5.0434e-9, 4.6886e-9, 4.377e-9, 3.9768e-9, 3.5202e-9,
15299 3.1854e-9, 2.9009e-9, 2.5763e-9, 2.2135e-9, 1.9455e-9, 1.6248e-9,
15300 1.3368e-9, 1.0842e-9, 8.4254e-10, 6.7414e-10, 5.4667e-10,
15301 4.5005e-10, 3.4932e-10, 2.6745e-10, 2.2053e-10, 1.8162e-10,
15302 1.4935e-10, 1.1618e-10, 9.1888e-11, 8.0672e-11, 6.8746e-11,
15303 6.2668e-11, 5.5715e-11, 4.5074e-11, 3.7669e-11, 3.2082e-11,
15304 2.8085e-11, 2.4838e-11, 1.9791e-11, 1.6964e-11, 1.3887e-11,
15305 1.1179e-11, 9.7499e-12, 7.8255e-12, 6.3698e-12, 5.3265e-12,
15306 4.6588e-12, 4.4498e-12, 3.9984e-12, 3.7513e-12, 3.7176e-12,
15307 3.9148e-12, 4.2702e-12, 5.009e-12, 6.5801e-12, 8.7787e-12,
15308 1.2718e-11, 1.8375e-11, 2.5304e-11, 3.5403e-11, 4.8842e-11,
15309 6.484e-11, 8.0911e-11, 1.0136e-10, 1.2311e-10, 1.4203e-10,
15310 1.5869e-10, 1.8093e-10, 2.137e-10, 2.5228e-10, 2.8816e-10,
15311 3.4556e-10, 3.986e-10, 4.435e-10, 4.776e-10, 5.2357e-10,
15312 6.0827e-10, 6.3635e-10, 6.5886e-10, 6.8753e-10, 7.2349e-10,
15313 7.2789e-10, 6.8232e-10, 6.6081e-10, 6.4232e-10, 6.3485e-10,
15314 6.4311e-10, 7.2235e-10, 7.7263e-10, 8.1668e-10, 9.0324e-10,
15315 9.7643e-10, 1.0535e-9, 1.0195e-9, 1.0194e-9, 1.0156e-9,
15316 9.6792e-10, 9.2725e-10, 8.7347e-10, 8.4484e-10, 8.2647e-10,
15317 8.4363e-10, 9.1261e-10, 1.0051e-9, 1.1511e-9, 1.4037e-9,
15318 1.8066e-9, 2.4483e-9, 3.2739e-9, 4.3194e-9, 5.6902e-9, 7.7924e-9,
15319 9.7376e-9, 1.2055e-8, 1.4303e-8, 1.6956e-8, 1.9542e-8, 2.2233e-8,
15320 2.5186e-8, 2.7777e-8, 2.8943e-8, 2.8873e-8, 2.9417e-8, 2.7954e-8,
15321 2.7524e-8, 2.704e-8, 3.1254e-8, 3.6843e-8, 3.7797e-8, 3.8713e-8,
15322 4.0135e-8, 4.2824e-8, 4.3004e-8, 4.0279e-8, 4.2781e-8, 4.522e-8,
15323 4.8948e-8, 5.0172e-8, 4.8499e-8, 4.7182e-8, 4.2204e-8, 3.7701e-8,
15324 3.0972e-8, 2.4654e-8, 1.9543e-8, 1.4609e-8, 1.1171e-8, 8.3367e-9,
15325 6.3791e-9, 5.079e-9, 4.0655e-9, 3.3658e-9, 2.7882e-9, 2.4749e-9,
15326 2.2287e-9, 2.0217e-9, 1.8191e-9, 1.5897e-9, 1.4191e-9, 1.2448e-9,
15327 1.0884e-9, 9.3585e-10, 7.9429e-10, 7.3214e-10, 6.5008e-10,
15328 5.7549e-10, 5.43e-10, 4.7251e-10, 4.3451e-10, 3.8446e-10,
15329 3.5589e-10, 3.4432e-10, 2.8209e-10, 2.462e-10, 2.1278e-10,
15330 1.8406e-10, 1.6314e-10, 1.3261e-10, 1.1696e-10, 9.6865e-11,
15331 7.6814e-11, 6.6411e-11, 5.0903e-11, 4.0827e-11, 3.0476e-11,
15332 2.323e-11, 1.7707e-11, 1.3548e-11, 1.0719e-11, 9.3026e-12,
15333 8.7967e-12, 8.3136e-12, 7.3918e-12, 6.5293e-12, 5.9243e-12,
15334 5.3595e-12, 3.5266e-12, 2.2571e-12, 1.615e-12, 1.1413e-12,
15335 8.4998e-13, 7.0803e-13, 5.1747e-13, 4.0694e-13, 3.6528e-13,
15336 3.367e-13, 3.1341e-13, 2.939e-13, 2.868e-13, 3.1283e-13,
15337 3.7294e-13, 5.0194e-13, 6.7919e-13, 1.0455e-12, 1.523e-12,
15338 2.3932e-12, 3.4231e-12, 5.0515e-12, 7.3193e-12, 9.9406e-12,
15339 1.2193e-11, 1.4742e-11, 1.9269e-11, 2.1816e-11, 2.275e-11,
15340 2.2902e-11, 2.3888e-11, 2.4902e-11, 2.216e-11, 2.0381e-11,
15341 1.9903e-11, 2.0086e-11, 1.9304e-11, 2.0023e-11, 2.2244e-11,
15342 2.545e-11, 3.1228e-11, 3.456e-11, 3.6923e-11, 3.7486e-11,
15343 3.8124e-11, 3.8317e-11, 3.4737e-11, 3.3037e-11, 3.1724e-11,
15344 2.984e-11, 2.8301e-11, 2.5857e-11, 2.3708e-11, 1.9452e-11,
15345 1.6232e-11, 1.5174e-11, 1.4206e-11, 1.4408e-11, 1.5483e-11,
15346 1.8642e-11, 2.3664e-11, 3.0181e-11, 4.016e-11, 5.2287e-11,
15347 7.2754e-11, 1.0511e-10, 1.4531e-10, 2.0998e-10, 2.6883e-10,
15348 3.3082e-10, 4.2638e-10, 5.3132e-10, 6.3617e-10, 7.1413e-10,
15349 8.5953e-10, 9.9715e-10, 1.0796e-9, 1.0978e-9, 1.1052e-9,
15350 1.1095e-9, 1.0641e-9, 9.7881e-10, 9.659e-10, 1.0332e-9, 1.1974e-9,
15351 1.3612e-9, 1.5829e-9, 1.8655e-9, 2.1465e-9, 2.4779e-9, 2.737e-9,
15352 2.9915e-9, 3.3037e-9, 3.6347e-9, 3.9587e-9, 4.4701e-9, 5.0122e-9,
15353 5.8044e-9, 6.1916e-9, 6.9613e-9, 7.7863e-9, 8.282e-9, 9.4359e-9,
15354 9.7387e-9, 1.0656e-8, 1.0746e-8, 1.121e-8, 1.1905e-8, 1.2194e-8,
15355 1.3145e-8, 1.3738e-8, 1.3634e-8, 1.3011e-8, 1.2511e-8, 1.1805e-8,
15356 1.2159e-8, 1.239e-8, 1.3625e-8, 1.5678e-8, 1.7886e-8, 1.9933e-8,
15357 1.9865e-8, 1.9e-8, 1.7812e-8, 1.5521e-8, 1.2593e-8, 9.5635e-9,
15358 7.2987e-9, 5.2489e-9, 3.5673e-9, 2.4206e-9, 1.6977e-9, 1.2456e-9,
15359 9.3744e-10, 7.8379e-10, 6.996e-10, 6.6451e-10, 6.8521e-10,
15360 7.4234e-10, 8.6658e-10, 9.4972e-10, 1.0791e-9, 1.2359e-9,
15361 1.3363e-9, 1.5025e-9, 1.5368e-9, 1.6152e-9, 1.6184e-9, 1.6557e-9,
15362 1.7035e-9, 1.6916e-9, 1.7237e-9, 1.7175e-9, 1.6475e-9, 1.5335e-9,
15363 1.4272e-9, 1.3282e-9, 1.3459e-9, 1.4028e-9, 1.5192e-9, 1.7068e-9,
15364 1.9085e-9, 2.1318e-9, 2.102e-9, 1.9942e-9, 1.8654e-9, 1.6391e-9,
15365 1.3552e-9, 1.0186e-9, 7.854e-10, 5.7022e-10, 3.9247e-10,
15366 2.5441e-10, 1.6699e-10, 1.1132e-10, 6.8989e-11, 4.5255e-11,
15367 3.1106e-11, 2.3161e-11, 1.7618e-11, 1.438e-11, 1.1601e-11,
15368 9.7148e-12, 8.4519e-12, 6.5392e-12, 5.4113e-12, 4.7624e-12,
15369 4.0617e-12, 3.6173e-12, 2.8608e-12, 2.2724e-12, 1.7436e-12,
15370 1.3424e-12, 1.0358e-12, 7.3064e-13, 5.45e-13, 4.0551e-13,
15371 2.8642e-13, 2.1831e-13, 1.686e-13, 1.2086e-13, 1.015e-13,
15372 9.355e-14, 8.4105e-14, 7.3051e-14, 6.9796e-14, 7.9949e-14,
15373 1.0742e-13, 1.5639e-13, 2.1308e-13, 3.1226e-13, 4.6853e-13,
15374 6.6917e-13, 1.0088e-12, 1.4824e-12, 2.2763e-12, 3.3917e-12,
15375 4.4585e-12, 6.3187e-12, 8.4189e-12, 1.1302e-11, 1.3431e-11,
15376 1.5679e-11, 1.9044e-11, 2.2463e-11, 2.3605e-11, 2.3619e-11,
15377 2.3505e-11, 2.3805e-11, 2.2549e-11, 1.9304e-11, 1.8382e-11,
15378 1.7795e-11, 1.8439e-11, 1.9146e-11, 2.1966e-11, 2.6109e-11,
15379 3.1883e-11, 3.7872e-11, 4.3966e-11, 4.8789e-11, 5.3264e-11,
15380 5.9705e-11, 6.3744e-11, 7.0163e-11, 7.9114e-11, 8.8287e-11,
15381 9.9726e-11, 1.1498e-10, 1.37e-10, 1.6145e-10, 1.9913e-10,
15382 2.2778e-10, 2.6216e-10, 2.977e-10, 3.3405e-10, 3.7821e-10,
15383 3.9552e-10, 4.1322e-10, 4.0293e-10, 4.0259e-10, 3.8853e-10,
15384 3.7842e-10, 3.8551e-10, 4.4618e-10, 5.0527e-10, 5.0695e-10,
15385 5.1216e-10, 5.193e-10, 5.5794e-10, 5.332e-10, 5.2008e-10,
15386 5.6888e-10, 6.1883e-10, 6.9006e-10, 6.9505e-10, 6.6768e-10,
15387 6.329e-10, 5.6753e-10, 5.0327e-10, 3.983e-10, 3.1147e-10,
15388 2.4416e-10, 1.886e-10, 1.3908e-10, 9.9156e-11, 7.3779e-11,
15389 5.6048e-11, 4.2457e-11, 3.4505e-11, 2.9881e-11, 2.7865e-11,
15390 2.8471e-11, 3.1065e-11, 3.4204e-11, 3.914e-11, 4.3606e-11,
15391 4.9075e-11, 5.3069e-11, 5.5236e-11, 5.5309e-11, 5.3832e-11,
15392 5.3183e-11, 5.1783e-11, 5.2042e-11, 5.4422e-11, 5.5656e-11,
15393 5.4409e-11, 5.2659e-11, 5.1696e-11, 5.1726e-11, 4.9003e-11,
15394 4.905e-11, 5.17e-11, 5.6818e-11, 6.3129e-11, 6.6542e-11,
15395 6.4367e-11, 5.9908e-11, 5.447e-11, 4.7903e-11, 3.9669e-11,
15396 2.9651e-11, 2.2286e-11, 1.6742e-11, 1.1827e-11, 7.7739e-12,
15397 4.8805e-12, 3.1747e-12, 2.0057e-12, 1.255e-12, 8.7434e-13,
15398 6.2755e-13, 4.9752e-13, 4.0047e-13, 3.5602e-13, 3.093e-13,
15399 2.4903e-13, 1.9316e-13, 1.4995e-13, 1.2059e-13, 8.7242e-14,
15400 6.4511e-14, 5.33e-14, 4.3741e-14, 3.4916e-14, 2.656e-14,
15401 1.6923e-14, 1.1816e-14, 6.7071e-15, 3.6474e-15, 2.0686e-15,
15402 1.1925e-15, 6.8948e-16, 3.9661e-16, 2.2576e-16, 1.2669e-16,
15403 6.9908e-17, 3.7896e-17, 2.028e-17, 1.1016e-17, 6.7816e-18,
15404 6.0958e-18, 8.9913e-18, 1.7201e-17, 3.4964e-17, 7.0722e-17,
15405 1.402e-16, 2.7167e-16, 5.1478e-16, 9.55e-16, 1.7376e-15,
15406 3.1074e-15, 5.4789e-15, 9.564e-15, 1.6635e-14, 2.9145e-14,
15407 5.2179e-14, 8.8554e-14, 1.4764e-13, 2.3331e-13, 3.5996e-13,
15408 5.2132e-13, 6.3519e-13, 7.3174e-13, 8.3752e-13, 9.8916e-13,
15409 1.1515e-12, 1.4034e-12, 1.6594e-12, 2.1021e-12, 2.7416e-12,
15410 3.4135e-12, 4.5517e-12, 5.5832e-12, 7.2303e-12, 9.9484e-12,
15411 1.2724e-11, 1.6478e-11, 2.0588e-11, 2.5543e-11, 3.3625e-11,
15412 4.1788e-11, 5.0081e-11, 6.0144e-11, 6.9599e-11, 8.4408e-11,
15413 9.7143e-11, 1.0805e-10, 1.1713e-10, 1.2711e-10, 1.3727e-10,
15414 1.4539e-10, 1.6049e-10, 1.768e-10, 2.0557e-10, 2.4967e-10,
15415 3.0096e-10, 3.5816e-10, 4.0851e-10, 4.6111e-10, 5.2197e-10,
15416 5.5043e-10, 6.0324e-10, 6.4983e-10, 6.7498e-10, 7.0545e-10,
15417 7.068e-10, 7.5218e-10, 7.5723e-10, 7.784e-10, 8.0081e-10,
15418 8.0223e-10, 7.7271e-10, 7.1676e-10, 6.7819e-10, 6.4753e-10,
15419 6.5844e-10, 7.0163e-10, 7.7503e-10, 8.8152e-10, 9.9022e-10,
15420 1.0229e-9, 9.9296e-10, 8.9911e-10, 7.7813e-10, 6.3785e-10,
15421 4.7491e-10, 3.528e-10, 2.4349e-10, 1.6502e-10, 1.1622e-10,
15422 8.6715e-11, 6.736e-11, 5.391e-11, 4.5554e-11, 4.13e-11,
15423 3.9728e-11, 3.9e-11, 3.9803e-11, 4.1514e-11, 4.3374e-11,
15424 4.6831e-11, 4.8921e-11, 5.1995e-11, 5.7242e-11, 6.2759e-11,
15425 7.0801e-11, 7.4555e-11, 7.9754e-11, 8.7616e-11, 9.1171e-11,
15426 1.0349e-10, 1.1047e-10, 1.2024e-10, 1.299e-10, 1.3725e-10,
15427 1.5005e-10, 1.5268e-10, 1.5535e-10, 1.5623e-10, 1.5009e-10,
15428 1.4034e-10, 1.3002e-10, 1.2225e-10, 1.1989e-10, 1.2411e-10,
15429 1.3612e-10, 1.5225e-10, 1.7202e-10, 1.9471e-10, 1.9931e-10,
15430 1.9079e-10, 1.7478e-10, 1.5259e-10, 1.2625e-10, 9.3332e-11,
15431 6.8796e-11, 4.6466e-11, 2.9723e-11, 1.8508e-11, 1.2106e-11,
15432 8.0142e-12, 5.4066e-12, 3.9329e-12, 3.1665e-12, 2.742e-12,
15433 2.3996e-12, 2.3804e-12, 2.3242e-12, 2.4476e-12, 2.5331e-12,
15434 2.3595e-12, 2.2575e-12, 2.1298e-12, 2.0088e-12, 1.8263e-12,
15435 1.6114e-12, 1.4422e-12, 1.2946e-12, 1.0837e-12, 9.1282e-13,
15436 7.2359e-13, 5.3307e-13, 3.8837e-13, 2.6678e-13, 1.6769e-13,
15437 1.0826e-13, 7.2364e-14, 4.5201e-14, 3.0808e-14, 2.2377e-14,
15438 1.704e-14, 9.2181e-15, 5.2934e-15, 3.5774e-15, 3.1431e-15,
15439 3.7647e-15, 5.6428e-15, 9.5139e-15, 1.7322e-14, 2.8829e-14,
15440 4.7708e-14, 6.9789e-14, 9.7267e-14, 1.4662e-13, 1.9429e-13,
15441 2.5998e-13, 3.6636e-13, 4.796e-13, 6.5129e-13, 7.7638e-13,
15442 9.3774e-13, 1.1467e-12, 1.3547e-12, 1.5686e-12, 1.6893e-12,
15443 1.9069e-12, 2.1352e-12, 2.3071e-12, 2.4759e-12, 2.8247e-12,
15444 3.4365e-12, 4.3181e-12, 5.6107e-12, 7.0017e-12, 8.6408e-12,
15445 1.0974e-11, 1.3742e-11, 1.6337e-11, 2.0157e-11, 2.3441e-11,
15446 2.6733e-11, 3.0247e-11, 3.3737e-11, 3.8618e-11, 4.1343e-11,
15447 4.387e-11, 4.4685e-11, 4.4881e-11, 4.5526e-11, 4.3628e-11,
15448 4.4268e-11, 4.6865e-11, 5.3426e-11, 5.402e-11, 5.3218e-11,
15449 5.4587e-11, 5.636e-11, 5.774e-11, 5.6426e-11, 6.0399e-11,
15450 6.6981e-11, 7.4319e-11, 7.7977e-11, 7.5539e-11, 7.161e-11,
15451 6.4606e-11, 5.5498e-11, 4.3944e-11, 3.3769e-11, 2.5771e-11,
15452 1.9162e-11, 1.3698e-11, 1.0173e-11, 7.8925e-12, 6.1938e-12,
15453 4.7962e-12, 4.0811e-12, 3.3912e-12, 2.8625e-12, 2.4504e-12,
15454 2.2188e-12, 2.2139e-12, 2.2499e-12, 2.2766e-12, 2.3985e-12,
15455 2.5459e-12, 2.9295e-12, 3.4196e-12, 3.6155e-12, 4.0733e-12,
15456 4.461e-12, 4.9372e-12, 5.4372e-12, 5.7304e-12, 6.164e-12,
15457 6.1278e-12, 6.294e-12, 6.4947e-12, 6.8174e-12, 7.519e-12,
15458 8.2608e-12, 8.4971e-12, 8.3484e-12, 8.1888e-12, 7.8552e-12,
15459 7.8468e-12, 7.5943e-12, 7.9096e-12, 8.6869e-12, 9.1303e-12,
15460 9.2547e-12, 8.9322e-12, 8.2177e-12, 7.3408e-12, 5.7956e-12,
15461 4.447e-12, 3.5881e-12, 2.6748e-12, 1.7074e-12, 9.67e-13,
15462 5.2645e-13, 2.9943e-13, 1.7316e-13, 1.0039e-13, 5.7859e-14,
15463 3.2968e-14, 1.8499e-14, 1.0192e-14, 5.5015e-15, 2.904e-15,
15464 1.4968e-15, 7.5244e-16, 3.6852e-16, 1.7568e-16, 8.1464e-17,
15465 3.6717e-17, 1.6076e-17, 6.8341e-18, 2.8195e-18, 1.1286e-18, 0.,
15466 0., 0., 0., 0., 0., 0., 0., 0., 1.407e-18, 3.0405e-18, 6.4059e-18,
15467 1.3169e-17, 2.6443e-17, 5.1917e-17, 9.9785e-17, 1.8802e-16,
15468 3.4788e-16, 6.3328e-16, 1.137e-15, 2.0198e-15, 3.5665e-15,
15469 6.3053e-15, 1.1309e-14, 2.1206e-14, 3.2858e-14, 5.5165e-14,
15470 8.6231e-14, 1.2776e-13, 1.778e-13, 2.5266e-13, 3.6254e-13,
15471 5.1398e-13, 6.8289e-13, 8.7481e-13, 1.1914e-12, 1.6086e-12,
15472 2.0469e-12, 2.5761e-12, 3.4964e-12, 4.498e-12, 5.5356e-12,
15473 6.7963e-12, 8.572e-12, 1.07e-11, 1.2983e-11, 1.627e-11,
15474 1.9609e-11, 2.2668e-11, 2.5963e-11, 3.0918e-11, 3.493e-11,
15475 3.933e-11, 4.4208e-11, 4.6431e-11, 5.1141e-11, 5.4108e-11,
15476 5.8077e-11, 6.505e-11, 7.2126e-11, 8.1064e-11, 8.1973e-11,
15477 8.1694e-11, 8.3081e-11, 8.024e-11, 7.9225e-11, 7.6256e-11,
15478 7.8468e-11, 8.0041e-11, 8.1585e-11, 8.3485e-11, 8.3774e-11,
15479 8.587e-11, 8.6104e-11, 8.8516e-11, 9.0814e-11, 9.2522e-11,
15480 8.8913e-11, 7.8381e-11, 6.8568e-11, 5.6797e-11, 4.4163e-11,
15481 3.2369e-11, 2.3259e-11, 1.6835e-11, 1.1733e-11, 8.5273e-12,
15482 6.3805e-12, 4.8983e-12, 3.8831e-12, 3.261e-12, 2.8577e-12,
15483 2.521e-12, 2.2913e-12, 2.0341e-12, 1.8167e-12, 1.6395e-12,
15484 1.489e-12, 1.3516e-12, 1.2542e-12, 1.291e-12, 1.3471e-12,
15485 1.4689e-12, 1.5889e-12, 1.6989e-12, 1.8843e-12, 2.0902e-12,
15486 2.3874e-12, 2.7294e-12, 3.3353e-12, 4.0186e-12, 4.5868e-12,
15487 5.2212e-12, 5.8856e-12, 6.5991e-12, 7.2505e-12, 7.6637e-12,
15488 8.5113e-12, 9.4832e-12, 9.9678e-12, 1.0723e-11, 1.0749e-11,
15489 1.138e-11, 1.1774e-11, 1.1743e-11, 1.2493e-11, 1.2559e-11,
15490 1.2332e-11, 1.1782e-11, 1.1086e-11, 1.0945e-11, 1.1178e-11,
15491 1.2083e-11, 1.3037e-11, 1.473e-11, 1.645e-11, 1.7403e-11,
15492 1.7004e-11, 1.5117e-11, 1.3339e-11, 1.0844e-11, 8.0915e-12,
15493 5.6615e-12, 3.7196e-12, 2.5194e-12, 1.6569e-12, 1.1201e-12,
15494 8.2335e-13, 6.027e-13, 4.8205e-13, 4.1313e-13, 3.6243e-13,
15495 3.2575e-13, 2.773e-13, 2.5292e-13, 2.3062e-13, 2.1126e-13,
15496 2.1556e-13, 2.1213e-13, 2.2103e-13, 2.1927e-13, 2.0794e-13,
15497 1.9533e-13, 1.6592e-13, 1.4521e-13, 1.1393e-13, 8.3772e-14,
15498 6.2077e-14, 4.3337e-14, 2.7165e-14, 1.6821e-14, 9.5407e-15,
15499 5.3093e-15, 3.032e-15, 1.7429e-15, 9.9828e-16, 5.6622e-16,
15500 3.1672e-16, 1.7419e-16, 9.3985e-17, 4.9656e-17, 2.5652e-17,
15501 1.2942e-17, 6.3695e-18, 3.0554e-18, 1.4273e-18, -0., -0., -0.,
15502 -0., -0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15503 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15504 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15505 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15506 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15507 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15508 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15509 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15510 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15511 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15512 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15513 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.} };
15522 }
sh2oa_ = { {.11109, .10573, .10162, .10573, .11109, .12574, .13499,
15523 .14327, .15065, .15164, .15022, .13677, .13115, .12253, .11271,
15524 .1007, .087495, .080118, .06994, .062034, .056051, .047663,
15525 .04245, .03669, .033441, .030711, .025205, .022113, .01888,
15526 .016653, .014626, .012065, .010709, .0091783, .0077274, .0067302,
15527 .0056164, .0049089, .0041497, .0035823, .0031124, .0026414,
15528 .0023167, .0020156, .0017829, .0015666, .0013928, .0012338,
15529 .0010932, 9.7939e-4, 8.8241e-4, 7.9173e-4, 7.1296e-4, 6.4179e-4,
15530 5.8031e-4, 5.2647e-4, 4.7762e-4, 4.3349e-4, 3.9355e-4, 3.5887e-4,
15531 3.2723e-4, 2.9919e-4, 2.7363e-4, 2.5013e-4, 2.2876e-4, 2.0924e-4,
15532 1.9193e-4, 1.7618e-4, 1.6188e-4, 1.4891e-4, 1.3717e-4, 1.2647e-4,
15533 1.1671e-4, 1.0786e-4, 9.9785e-5, 9.235e-5, 8.5539e-5, 7.9377e-5,
15534 7.3781e-5, 6.8677e-5, 6.3993e-5, 5.9705e-5, 5.5788e-5, 5.2196e-5,
15535 4.8899e-5, 4.5865e-5, 4.3079e-5, 4.0526e-5, 3.8182e-5, 3.6025e-5,
15536 3.4038e-5, 3.2203e-5, 3.0511e-5, 2.8949e-5, 2.7505e-5, 2.617e-5,
15537 2.4933e-5, 2.3786e-5, 2.2722e-5, 2.1736e-5, 2.0819e-5, 1.9968e-5,
15538 1.9178e-5, 1.8442e-5, 1.776e-5, 1.7127e-5, 1.6541e-5, 1.5997e-5,
15539 1.5495e-5, 1.5034e-5, 1.4614e-5, 1.423e-5, 1.3883e-5, 1.3578e-5,
15540 1.3304e-5, 1.3069e-5, 1.2876e-5, 1.2732e-5, 1.2626e-5, 1.2556e-5,
15541 1.2544e-5, 1.2604e-5, 1.2719e-5, 1.2883e-5, 1.3164e-5, 1.3581e-5,
15542 1.4187e-5, 1.4866e-5, 1.5669e-5, 1.6717e-5, 1.8148e-5, 2.0268e-5,
15543 2.2456e-5, 2.5582e-5, 2.9183e-5, 3.3612e-5, 3.9996e-5, 4.6829e-5,
15544 5.5055e-5, 6.5897e-5, 7.536e-5, 8.7213e-5, 1.0046e-4, 1.1496e-4,
15545 1.2943e-4, 1.5049e-4, 1.6973e-4, 1.8711e-4, 2.0286e-4, 2.2823e-4,
15546 2.678e-4, 2.8766e-4, 3.1164e-4, 3.364e-4, 3.6884e-4, 3.9159e-4,
15547 3.8712e-4, 3.7433e-4, 3.4503e-4, 3.1003e-4, 2.8027e-4, 2.5253e-4,
15548 2.3408e-4, 2.2836e-4, 2.4442e-4, 2.7521e-4, 2.9048e-4, 3.0489e-4,
15549 3.2646e-4, 3.388e-4, 3.3492e-4, 3.0987e-4, 2.9482e-4, 2.8711e-4,
15550 2.6068e-4, 2.2683e-4, 1.9996e-4, 1.7788e-4, 1.6101e-4, 1.3911e-4,
15551 1.2013e-4, 1.0544e-4, 9.4224e-5, 8.1256e-5, 7.3667e-5, 6.2233e-5,
15552 5.5906e-5, 5.1619e-5, 4.514e-5, 4.0273e-5, 3.3268e-5, 3.0258e-5,
15553 2.644e-5, 2.3103e-5, 2.0749e-5, 1.8258e-5, 1.6459e-5, 1.4097e-5,
15554 1.2052e-5, 1.0759e-5, 9.14e-6, 8.1432e-6, 7.146e-6, 6.4006e-6,
15555 5.6995e-6, 4.9372e-6, 4.4455e-6, 3.9033e-6, 3.474e-6, 3.1269e-6,
15556 2.8059e-6, 2.5558e-6, 2.2919e-6, 2.0846e-6, 1.8983e-6, 1.7329e-6,
15557 1.5929e-6, 1.4631e-6, 1.3513e-6, 1.2461e-6, 1.1519e-6, 1.0682e-6,
15558 9.9256e-7, 9.2505e-7, 8.6367e-7, 8.0857e-7, 7.5674e-7, 7.0934e-7,
15559 6.658e-7, 6.258e-7, 5.8853e-7, 5.5333e-7, 5.2143e-7, 4.9169e-7,
15560 4.6431e-7, 4.3898e-7, 4.1564e-7, 3.9405e-7, 3.7403e-7, 3.5544e-7,
15561 3.3819e-7, 3.2212e-7, 3.0714e-7, 2.9313e-7, 2.8003e-7, 2.6777e-7,
15562 2.5628e-7, 2.4551e-7, 2.354e-7, 2.2591e-7, 2.1701e-7, 2.0866e-7,
15563 2.0082e-7, 1.9349e-7, 1.8665e-7, 1.8027e-7, 1.7439e-7, 1.6894e-7,
15564 1.64e-7, 1.5953e-7, 1.5557e-7, 1.5195e-7, 1.4888e-7, 1.4603e-7,
15565 1.4337e-7, 1.4093e-7, 1.3828e-7, 1.3569e-7, 1.327e-7, 1.2984e-7,
15566 1.2714e-7, 1.2541e-7, 1.2399e-7, 1.2102e-7, 1.1878e-7, 1.1728e-7,
15567 1.1644e-7, 1.1491e-7, 1.1305e-7, 1.1235e-7, 1.1228e-7, 1.1224e-7,
15568 1.1191e-7, 1.1151e-7, 1.1098e-7, 1.1068e-7, 1.1109e-7, 1.1213e-7,
15569 1.1431e-7, 1.1826e-7, 1.2322e-7, 1.3025e-7, 1.4066e-7, 1.5657e-7,
15570 1.7214e-7, 1.9449e-7, 2.2662e-7, 2.6953e-7, 3.1723e-7, 3.7028e-7,
15571 4.4482e-7, 5.3852e-7, 6.2639e-7, 7.2175e-7, 7.7626e-7, 8.7248e-7,
15572 9.6759e-7, 1.0102e-6, 1.062e-6, 1.1201e-6, 1.2107e-6, 1.2998e-6,
15573 1.313e-6, 1.2856e-6, 1.235e-6, 1.1489e-6, 1.0819e-6, 1.012e-6,
15574 9.4795e-7, 9.2858e-7, 9.806e-7, 1.0999e-6, 1.1967e-6, 1.2672e-6,
15575 1.3418e-6, 1.3864e-6, 1.433e-6, 1.4592e-6, 1.4598e-6, 1.4774e-6,
15576 1.4726e-6, 1.482e-6, 1.505e-6, 1.4984e-6, 1.5181e-6, 1.5888e-6,
15577 1.685e-6, 1.769e-6, 1.9277e-6, 2.1107e-6, 2.3068e-6, 2.5347e-6,
15578 2.8069e-6, 3.1345e-6, 3.5822e-6, 3.9051e-6, 4.3422e-6, 4.8704e-6,
15579 5.5351e-6, 6.3454e-6, 7.269e-6, 8.2974e-6, 9.7609e-6, 1.1237e-5,
15580 1.3187e-5, 1.5548e-5, 1.8784e-5, 2.1694e-5, 2.5487e-5, 3.0092e-5,
15581 3.5385e-5, 4.2764e-5, 4.9313e-5, 5.58e-5, 6.2968e-5, 7.106e-5,
15582 7.7699e-5, 8.7216e-5, 8.9335e-5, 9.2151e-5, 9.2779e-5, 9.4643e-5,
15583 9.7978e-5, 1.0008e-4, 1.0702e-4, 1.1026e-4, 1.0828e-4, 1.055e-4,
15584 1.0432e-4, 1.0428e-4, 9.898e-5, 9.4992e-5, 9.5159e-5, 1.0058e-4,
15585 1.0738e-4, 1.155e-4, 1.1229e-4, 1.0596e-4, 1.0062e-4, 9.1742e-5,
15586 8.4492e-5, 6.8099e-5, 5.6295e-5, 4.6502e-5, 3.8071e-5, 3.0721e-5,
15587 2.3297e-5, 1.8688e-5, 1.483e-5, 1.2049e-5, 9.6754e-6, 7.9192e-6,
15588 6.6673e-6, 5.6468e-6, 4.8904e-6, 4.2289e-6, 3.688e-6, 3.2396e-6,
15589 2.8525e-6, 2.5363e-6, 2.2431e-6, 1.9949e-6, 1.7931e-6, 1.6164e-6,
15590 1.4431e-6, 1.2997e-6, 1.1559e-6, 1.0404e-6, 9.43e-7, 8.4597e-7,
15591 7.6133e-7, 6.8623e-7, 6.2137e-7, 5.6345e-7, 5.1076e-7, 4.6246e-7,
15592 4.1906e-7, 3.8063e-7, 3.461e-7, 3.1554e-7, 2.8795e-7, 2.6252e-7,
15593 2.3967e-7, 2.1901e-7, 2.0052e-7, 1.8384e-7, 1.6847e-7, 1.5459e-7,
15594 1.4204e-7, 1.3068e-7, 1.2036e-7, 1.1095e-7, 1.0237e-7, 9.4592e-8,
15595 8.753e-8, 8.1121e-8, 7.5282e-8, 6.9985e-8, 6.5189e-8, 6.0874e-8,
15596 5.6989e-8, 5.353e-8, 5.0418e-8, 4.7745e-8, 4.5367e-8, 4.3253e-8,
15597 4.1309e-8, 3.9695e-8, 3.8094e-8, 3.6482e-8, 3.4897e-8, 3.35e-8,
15598 3.2302e-8, 3.0854e-8, 2.9698e-8, 2.8567e-8, 2.76e-8, 2.6746e-8,
15599 2.5982e-8, 2.551e-8, 2.5121e-8, 2.4922e-8, 2.4909e-8, 2.5013e-8,
15600 2.5216e-8, 2.5589e-8, 2.6049e-8, 2.6451e-8, 2.6978e-8, 2.7687e-8,
15601 2.86e-8, 2.9643e-8, 3.0701e-8, 3.2058e-8, 3.3695e-8, 3.5558e-8,
15602 3.7634e-8, 3.9875e-8, 4.2458e-8, 4.548e-8, 4.8858e-8, 5.2599e-8,
15603 5.703e-8, 6.2067e-8, 6.7911e-8, 7.4579e-8, 8.1902e-8, 8.9978e-8,
15604 9.987e-8, 1.1102e-7, 1.2343e-7, 1.3732e-7, 1.5394e-7, 1.7318e-7,
15605 1.9383e-7, 2.1819e-7, 2.4666e-7, 2.8109e-7, 3.2236e-7, 3.776e-7,
15606 4.4417e-7, 5.2422e-7, 6.1941e-7, 7.4897e-7, 9.2041e-7, 1.1574e-6,
15607 1.4126e-6, 1.7197e-6, 2.1399e-6, 2.6266e-6, 3.3424e-6, 3.8418e-6,
15608 4.514e-6, 5.0653e-6, 5.8485e-6, 6.5856e-6, 6.8937e-6, 6.9121e-6,
15609 6.9005e-6, 6.9861e-6, 6.82e-6, 6.6089e-6, 6.5809e-6, 7.3496e-6,
15610 8.0311e-6, 8.3186e-6, 8.426e-6, 9.0644e-6, 9.4965e-6, 9.4909e-6,
15611 9.016e-6, 9.1494e-6, 9.3629e-6, 9.5944e-6, 9.5459e-6, 8.9919e-6,
15612 8.604e-6, 7.8613e-6, 7.1567e-6, 6.2677e-6, 5.1899e-6, 4.4188e-6,
15613 3.7167e-6, 3.0636e-6, 2.5573e-6, 2.0317e-6, 1.6371e-6, 1.3257e-6,
15614 1.0928e-6, 8.9986e-7, 7.4653e-7, 6.1111e-7, 5.1395e-7, 4.35e-7,
15615 3.7584e-7, 3.2633e-7, 2.8413e-7, 2.4723e-7, 2.1709e-7, 1.9294e-7,
15616 1.7258e-7, 1.5492e-7, 1.382e-7, 1.2389e-7, 1.1189e-7, 1.0046e-7,
15617 9.0832e-8, 8.2764e-8, 7.4191e-8, 6.7085e-8, 6.0708e-8, 5.4963e-8,
15618 4.9851e-8, 4.5044e-8, 4.0916e-8, 3.722e-8, 3.3678e-8, 3.0663e-8,
15619 2.7979e-8, 2.5495e-8, 2.3286e-8, 2.1233e-8, 1.9409e-8, 1.777e-8,
15620 1.626e-8, 1.4885e-8, 1.3674e-8, 1.2543e-8, 1.1551e-8, 1.0655e-8,
15621 9.8585e-9, 9.1398e-9, 8.4806e-9, 7.8899e-9, 7.3547e-9, 6.867e-9,
15622 6.4131e-9, 5.993e-9, 5.6096e-9, 5.2592e-9, 4.9352e-9, 4.6354e-9,
15623 4.3722e-9, 4.125e-9, 3.9081e-9, 3.7118e-9, 3.5372e-9, 3.3862e-9,
15624 3.2499e-9, 3.1324e-9, 3.0313e-9, 2.9438e-9, 2.8686e-9, 2.805e-9,
15625 2.7545e-9, 2.7149e-9, 2.6907e-9, 2.6724e-9, 2.6649e-9, 2.6642e-9,
15626 2.6725e-9, 2.6871e-9, 2.7056e-9, 2.7357e-9, 2.7781e-9, 2.8358e-9,
15627 2.9067e-9, 2.9952e-9, 3.102e-9, 3.2253e-9, 3.3647e-9, 3.5232e-9,
15628 3.7037e-9, 3.9076e-9, 4.1385e-9, 4.3927e-9, 4.6861e-9, 5.0238e-9,
15629 5.4027e-9, 5.8303e-9, 6.3208e-9, 6.8878e-9, 7.5419e-9, 8.313e-9,
15630 9.1952e-9, 1.0228e-8, 1.1386e-8, 1.2792e-8, 1.4521e-8, 1.6437e-8,
15631 1.8674e-8, 2.116e-8, 2.4506e-8, 2.8113e-8, 3.2636e-8, 3.7355e-8,
15632 4.2234e-8, 4.9282e-8, 5.7358e-8, 6.6743e-8, 7.8821e-8, 9.4264e-8,
15633 1.1542e-7, 1.3684e-7, 1.6337e-7, 2.0056e-7, 2.3252e-7, 2.6127e-7,
15634 2.9211e-7, 3.3804e-7, 3.7397e-7, 3.8205e-7, 3.881e-7, 3.9499e-7,
15635 3.9508e-7, 3.7652e-7, 3.5859e-7, 3.6198e-7, 3.7871e-7, 4.0925e-7,
15636 4.2717e-7, 4.8241e-7, 5.2008e-7, 5.653e-7, 5.9531e-7, 6.1994e-7,
15637 6.508e-7, 6.6355e-7, 6.9193e-7, 6.993e-7, 7.3058e-7, 7.4678e-7,
15638 7.9193e-7, 8.3627e-7, 9.1267e-7, 1.0021e-6, 1.1218e-6, 1.2899e-6,
15639 1.4447e-6, 1.7268e-6, 2.0025e-6, 2.3139e-6, 2.5599e-6, 2.892e-6,
15640 3.3059e-6, 3.5425e-6, 3.9522e-6, 4.0551e-6, 4.2818e-6, 4.2892e-6,
15641 4.421e-6, 4.5614e-6, 4.6739e-6, 4.9482e-6, 5.1118e-6, 5.0986e-6,
15642 4.9417e-6, 4.9022e-6, 4.8449e-6, 4.8694e-6, 4.8111e-6, 4.9378e-6,
15643 5.3231e-6, 5.7362e-6, 6.235e-6, 6.0951e-6, 5.7281e-6, 5.4585e-6,
15644 4.9032e-6, 4.3009e-6, 3.4776e-6, 2.8108e-6, 2.2993e-6, 1.7999e-6,
15645 1.387e-6, 1.075e-6, 8.5191e-7, 6.7951e-7, 5.5336e-7, 4.6439e-7,
15646 4.0243e-7, 3.5368e-7, 3.1427e-7, 2.7775e-7, 2.4486e-7, 2.1788e-7,
15647 1.9249e-7, 1.7162e-7, 1.5115e-7, 1.3478e-7, 1.2236e-7, 1.1139e-7,
15648 1.0092e-7, 9.0795e-8, 8.2214e-8, 7.4691e-8, 6.7486e-8, 6.0414e-8,
15649 5.4584e-8, 4.8754e-8, 4.3501e-8, 3.8767e-8, 3.4363e-8, 3.0703e-8,
15650 2.7562e-8, 2.4831e-8, 2.2241e-8, 1.9939e-8, 1.8049e-8, 1.6368e-8,
15651 1.4863e-8, 1.346e-8, 1.2212e-8, 1.1155e-8, 1.0185e-8, 9.3417e-9,
15652 8.5671e-9, 7.8292e-9, 7.1749e-9, 6.5856e-9, 6.0588e-9, 5.5835e-9,
15653 5.135e-9, 4.7395e-9, 4.3771e-9, 4.0476e-9, 3.756e-9, 3.4861e-9,
15654 3.2427e-9, 3.024e-9, 2.8278e-9, 2.6531e-9, 2.4937e-9, 2.3511e-9,
15655 2.2245e-9, 2.1133e-9, 2.0159e-9, 1.933e-9, 1.8669e-9, 1.8152e-9,
15656 1.7852e-9, 1.7752e-9, 1.7823e-9, 1.8194e-9, 1.8866e-9, 1.9759e-9,
15657 2.0736e-9, 2.2083e-9, 2.3587e-9, 2.4984e-9, 2.6333e-9, 2.816e-9,
15658 3.0759e-9, 3.372e-9, 3.6457e-9, 4.0668e-9, 4.4541e-9, 4.7976e-9,
15659 5.0908e-9, 5.4811e-9, 6.1394e-9, 6.3669e-9, 6.5714e-9, 6.8384e-9,
15660 7.1918e-9, 7.3741e-9, 7.2079e-9, 7.2172e-9, 7.2572e-9, 7.3912e-9,
15661 7.6188e-9, 8.3291e-9, 8.7885e-9, 9.2412e-9, 1.0021e-8, 1.0752e-8,
15662 1.1546e-8, 1.1607e-8, 1.1949e-8, 1.2346e-8, 1.2516e-8, 1.2826e-8,
15663 1.3053e-8, 1.3556e-8, 1.4221e-8, 1.5201e-8, 1.6661e-8, 1.8385e-8,
15664 2.0585e-8, 2.3674e-8, 2.7928e-8, 3.3901e-8, 4.1017e-8, 4.9595e-8,
15665 6.0432e-8, 7.6304e-8, 9.0764e-8, 1.0798e-7, 1.2442e-7, 1.4404e-7,
15666 1.6331e-7, 1.8339e-7, 2.0445e-7, 2.2288e-7, 2.3083e-7, 2.3196e-7,
15667 2.3919e-7, 2.3339e-7, 2.3502e-7, 2.3444e-7, 2.6395e-7, 2.9928e-7,
15668 3.0025e-7, 3.0496e-7, 3.1777e-7, 3.4198e-7, 3.4739e-7, 3.2696e-7,
15669 3.41e-7, 3.5405e-7, 3.7774e-7, 3.8285e-7, 3.6797e-7, 3.58e-7,
15670 3.2283e-7, 2.9361e-7, 2.4881e-7, 2.0599e-7, 1.7121e-7, 1.3641e-7,
15671 1.1111e-7, 8.9413e-8, 7.3455e-8, 6.2078e-8, 5.2538e-8, 4.5325e-8,
15672 3.9005e-8, 3.4772e-8, 3.1203e-8, 2.8132e-8, 2.525e-8, 2.2371e-8,
15673 2.0131e-8, 1.7992e-8, 1.6076e-8, 1.4222e-8, 1.249e-8, 1.1401e-8,
15674 1.0249e-8, 9.2279e-9, 8.5654e-9, 7.6227e-9, 6.9648e-9, 6.2466e-9,
15675 5.7252e-9, 5.38e-9, 4.696e-9, 4.2194e-9, 3.7746e-9, 3.3813e-9,
15676 3.0656e-9, 2.6885e-9, 2.4311e-9, 2.1572e-9, 1.8892e-9, 1.7038e-9,
15677 1.4914e-9, 1.3277e-9, 1.1694e-9, 1.0391e-9, 9.2779e-10,
15678 8.3123e-10, 7.4968e-10, 6.8385e-10, 6.2915e-10, 5.7784e-10,
15679 5.2838e-10, 4.8382e-10, 4.4543e-10, 4.1155e-10, 3.7158e-10,
15680 3.3731e-10, 3.0969e-10, 2.8535e-10, 2.6416e-10, 2.4583e-10,
15681 2.2878e-10, 2.1379e-10, 2.0073e-10, 1.8907e-10, 1.7866e-10,
15682 1.6936e-10, 1.6119e-10, 1.5424e-10, 1.4847e-10, 1.4401e-10,
15683 1.4068e-10, 1.3937e-10, 1.3943e-10, 1.4281e-10, 1.4766e-10,
15684 1.5701e-10, 1.7079e-10, 1.8691e-10, 2.0081e-10, 2.174e-10,
15685 2.4847e-10, 2.6463e-10, 2.7087e-10, 2.7313e-10, 2.8352e-10,
15686 2.9511e-10, 2.8058e-10, 2.7227e-10, 2.7356e-10, 2.8012e-10,
15687 2.8034e-10, 2.9031e-10, 3.103e-10, 3.3745e-10, 3.8152e-10,
15688 4.0622e-10, 4.2673e-10, 4.3879e-10, 4.5488e-10, 4.7179e-10,
15689 4.614e-10, 4.6339e-10, 4.6716e-10, 4.7024e-10, 4.7931e-10,
15690 4.8503e-10, 4.9589e-10, 4.9499e-10, 5.0363e-10, 5.3184e-10,
15691 5.6451e-10, 6.0932e-10, 6.6469e-10, 7.4076e-10, 8.3605e-10,
15692 9.4898e-10, 1.0935e-9, 1.2593e-9, 1.4913e-9, 1.8099e-9, 2.1842e-9,
15693 2.7284e-9, 3.2159e-9, 3.7426e-9, 4.5226e-9, 5.3512e-9, 6.1787e-9,
15694 6.8237e-9, 7.9421e-9, 9.0002e-9, 9.6841e-9, 9.9558e-9, 1.0232e-8,
15695 1.0591e-8, 1.0657e-8, 1.0441e-8, 1.0719e-8, 1.1526e-8, 1.2962e-8,
15696 1.4336e-8, 1.615e-8, 1.8417e-8, 2.0725e-8, 2.3426e-8, 2.5619e-8,
15697 2.7828e-8, 3.0563e-8, 3.3438e-8, 3.6317e-8, 4.04e-8, 4.4556e-8,
15698 5.0397e-8, 5.3315e-8, 5.9185e-8, 6.5311e-8, 6.9188e-8, 7.7728e-8,
15699 7.9789e-8, 8.6598e-8, 8.7768e-8, 9.1773e-8, 9.7533e-8, 1.0007e-7,
15700 1.065e-7, 1.0992e-7, 1.0864e-7, 1.0494e-7, 1.0303e-7, 1.0031e-7,
15701 1.0436e-7, 1.0537e-7, 1.1184e-7, 1.2364e-7, 1.3651e-7, 1.4881e-7,
15702 1.4723e-7, 1.4118e-7, 1.3371e-7, 1.1902e-7, 1.0007e-7, 7.9628e-8,
15703 6.4362e-8, 5.0243e-8, 3.8133e-8, 2.94e-8, 2.3443e-8, 1.9319e-8,
15704 1.6196e-8, 1.4221e-8, 1.2817e-8, 1.1863e-8, 1.1383e-8, 1.1221e-8,
15705 1.1574e-8, 1.1661e-8, 1.2157e-8, 1.2883e-8, 1.3295e-8, 1.4243e-8,
15706 1.424e-8, 1.4614e-8, 1.4529e-8, 1.4685e-8, 1.4974e-8, 1.479e-8,
15707 1.489e-8, 1.4704e-8, 1.4142e-8, 1.3374e-8, 1.2746e-8, 1.2172e-8,
15708 1.2336e-8, 1.2546e-8, 1.3065e-8, 1.409e-8, 1.5215e-8, 1.654e-8,
15709 1.6144e-8, 1.5282e-8, 1.4358e-8, 1.2849e-8, 1.0998e-8, 8.6956e-9,
15710 7.0881e-9, 5.5767e-9, 4.2792e-9, 3.2233e-9, 2.502e-9, 1.9985e-9,
15711 1.5834e-9, 1.3015e-9, 1.0948e-9, 9.4141e-10, 8.1465e-10,
15712 7.1517e-10, 6.2906e-10, 5.5756e-10, 4.9805e-10, 4.3961e-10,
15713 3.9181e-10, 3.5227e-10, 3.167e-10, 2.8667e-10, 2.5745e-10,
15714 2.3212e-10, 2.0948e-10, 1.897e-10, 1.7239e-10, 1.5659e-10,
15715 1.4301e-10, 1.3104e-10, 1.2031e-10, 1.1095e-10, 1.0262e-10,
15716 9.513e-11, 8.8595e-11, 8.2842e-11, 7.7727e-11, 7.3199e-11,
15717 6.9286e-11, 6.5994e-11, 6.3316e-11, 6.1244e-11, 5.9669e-11,
15718 5.8843e-11, 5.8832e-11, 5.9547e-11, 6.1635e-11, 6.4926e-11,
15719 7.0745e-11, 7.8802e-11, 8.6724e-11, 1.0052e-10, 1.1575e-10,
15720 1.3626e-10, 1.5126e-10, 1.6751e-10, 1.9239e-10, 2.1748e-10,
15721 2.2654e-10, 2.2902e-10, 2.324e-10, 2.4081e-10, 2.393e-10,
15722 2.2378e-10, 2.2476e-10, 2.2791e-10, 2.4047e-10, 2.5305e-10,
15723 2.8073e-10, 3.1741e-10, 3.6592e-10, 4.1495e-10, 4.6565e-10,
15724 5.099e-10, 5.5607e-10, 6.1928e-10, 6.6779e-10, 7.335e-10,
15725 8.1434e-10, 8.9635e-10, 9.9678e-10, 1.1256e-9, 1.2999e-9,
15726 1.4888e-9, 1.7642e-9, 1.9606e-9, 2.2066e-9, 2.4601e-9, 2.7218e-9,
15727 3.0375e-9, 3.1591e-9, 3.2852e-9, 3.2464e-9, 3.3046e-9, 3.271e-9,
15728 3.2601e-9, 3.3398e-9, 3.7446e-9, 4.0795e-9, 4.0284e-9, 4.0584e-9,
15729 4.1677e-9, 4.5358e-9, 4.4097e-9, 4.2744e-9, 4.5449e-9, 4.8147e-9,
15730 5.2656e-9, 5.2476e-9, 5.0275e-9, 4.7968e-9, 4.3654e-9, 3.953e-9,
15731 3.2447e-9, 2.6489e-9, 2.1795e-9, 1.788e-9, 1.4309e-9, 1.1256e-9,
15732 9.1903e-10, 7.6533e-10, 6.3989e-10, 5.5496e-10, 4.9581e-10,
15733 4.5722e-10, 4.3898e-10, 4.3505e-10, 4.3671e-10, 4.5329e-10,
15734 4.6827e-10, 4.9394e-10, 5.1122e-10, 5.1649e-10, 5.0965e-10,
15735 4.9551e-10, 4.8928e-10, 4.7947e-10, 4.7989e-10, 4.9071e-10,
15736 4.8867e-10, 4.726e-10, 4.5756e-10, 4.54e-10, 4.5993e-10,
15737 4.4042e-10, 4.3309e-10, 4.4182e-10, 4.6735e-10, 5.0378e-10,
15738 5.2204e-10, 5.0166e-10, 4.6799e-10, 4.3119e-10, 3.8803e-10,
15739 3.3291e-10, 2.6289e-10, 2.1029e-10, 1.7011e-10, 1.3345e-10,
15740 1.0224e-10, 7.8207e-11, 6.2451e-11, 5.0481e-11, 4.1507e-11,
15741 3.5419e-11, 3.0582e-11, 2.69e-11, 2.3778e-11, 2.1343e-11,
15742 1.9182e-11, 1.7162e-11, 1.5391e-11, 1.3877e-11, 1.2619e-11,
15743 1.145e-11, 1.0461e-11, 9.6578e-12, 8.9579e-12, 8.3463e-12,
15744 7.8127e-12, 7.3322e-12, 6.9414e-12, 6.6037e-12, 6.3285e-12,
15745 6.1095e-12, 5.9387e-12, 5.8118e-12, 5.726e-12, 5.6794e-12,
15746 5.6711e-12, 5.7003e-12, 5.767e-12, 5.8717e-12, 6.0151e-12,
15747 6.1984e-12, 6.4232e-12, 6.6918e-12, 7.0065e-12, 7.3705e-12,
15748 7.7873e-12, 8.2612e-12, 8.7972e-12, 9.4009e-12, 1.0079e-11,
15749 1.084e-11, 1.1692e-11, 1.2648e-11, 1.3723e-11, 1.4935e-11,
15750 1.6313e-11, 1.7905e-11, 1.974e-11, 2.1898e-11, 2.4419e-11,
15751 2.7426e-11, 3.0869e-11, 3.4235e-11, 3.7841e-11, 4.1929e-11,
15752 4.6776e-11, 5.2123e-11, 5.8497e-11, 6.5294e-11, 7.4038e-11,
15753 8.4793e-11, 9.6453e-11, 1.1223e-10, 1.2786e-10, 1.4882e-10,
15754 1.7799e-10, 2.0766e-10, 2.4523e-10, 2.8591e-10, 3.3386e-10,
15755 4.0531e-10, 4.7663e-10, 5.4858e-10, 6.3377e-10, 7.1688e-10,
15756 8.4184e-10, 9.5144e-10, 1.0481e-9, 1.1356e-9, 1.2339e-9,
15757 1.3396e-9, 1.4375e-9, 1.5831e-9, 1.7323e-9, 1.9671e-9, 2.2976e-9,
15758 2.6679e-9, 3.0777e-9, 3.4321e-9, 3.8192e-9, 4.2711e-9, 4.4903e-9,
15759 4.8931e-9, 5.2253e-9, 5.404e-9, 5.6387e-9, 5.6704e-9, 6.0345e-9,
15760 6.1079e-9, 6.2576e-9, 6.4039e-9, 6.3776e-9, 6.1878e-9, 5.8616e-9,
15761 5.7036e-9, 5.584e-9, 5.6905e-9, 5.8931e-9, 6.2478e-9, 6.8291e-9,
15762 7.4528e-9, 7.6078e-9, 7.3898e-9, 6.7573e-9, 5.9827e-9, 5.0927e-9,
15763 4.0099e-9, 3.1933e-9, 2.4296e-9, 1.8485e-9, 1.4595e-9, 1.2017e-9,
15764 1.0164e-9, 8.7433e-10, 7.7108e-10, 7.0049e-10, 6.5291e-10,
15765 6.1477e-10, 5.9254e-10, 5.815e-10, 5.7591e-10, 5.849e-10,
15766 5.8587e-10, 5.9636e-10, 6.2408e-10, 6.5479e-10, 7.048e-10,
15767 7.2313e-10, 7.5524e-10, 8.0863e-10, 8.3386e-10, 9.2342e-10,
15768 9.6754e-10, 1.0293e-9, 1.0895e-9, 1.133e-9, 1.221e-9, 1.2413e-9,
15769 1.2613e-9, 1.2671e-9, 1.2225e-9, 1.1609e-9, 1.0991e-9, 1.06e-9,
15770 1.057e-9, 1.0818e-9, 1.1421e-9, 1.227e-9, 1.337e-9, 1.4742e-9,
15771 1.4946e-9, 1.4322e-9, 1.321e-9, 1.1749e-9, 1.0051e-9, 7.8387e-10,
15772 6.1844e-10, 4.6288e-10, 3.4164e-10, 2.5412e-10, 1.9857e-10,
15773 1.5876e-10, 1.2966e-10, 1.092e-10, 9.4811e-11, 8.3733e-11,
15774 7.3906e-11, 6.7259e-11, 6.1146e-11, 5.7119e-11, 5.3546e-11,
15775 4.8625e-11, 4.4749e-11, 4.1089e-11, 3.7825e-11, 3.4465e-11,
15776 3.1018e-11, 2.8109e-11, 2.561e-11, 2.2859e-11, 2.049e-11,
15777 1.8133e-11, 1.5835e-11, 1.3949e-11, 1.2295e-11, 1.0799e-11,
15778 9.6544e-12, 8.7597e-12, 7.999e-12, 7.3973e-12, 6.9035e-12,
15779 6.4935e-12, 6.1195e-12, 5.8235e-12, 5.5928e-12, 5.4191e-12,
15780 5.2993e-12, 5.2338e-12, 5.2272e-12, 5.2923e-12, 5.4252e-12,
15781 5.6523e-12, 5.9433e-12, 6.3197e-12, 6.9016e-12, 7.5016e-12,
15782 8.2885e-12, 9.405e-12, 1.0605e-11, 1.2257e-11, 1.3622e-11,
15783 1.5353e-11, 1.7543e-11, 1.9809e-11, 2.2197e-11, 2.4065e-11,
15784 2.6777e-11, 2.9751e-11, 3.2543e-11, 3.5536e-11, 3.9942e-11,
15785 4.6283e-11, 5.4556e-11, 6.549e-11, 7.6803e-11, 9.0053e-11,
15786 1.0852e-10, 1.2946e-10, 1.4916e-10, 1.7748e-10, 2.0073e-10,
15787 2.2485e-10, 2.5114e-10, 2.7715e-10, 3.1319e-10, 3.3305e-10,
15788 3.5059e-10, 3.5746e-10, 3.6311e-10, 3.7344e-10, 3.6574e-10,
15789 3.7539e-10, 3.9434e-10, 4.351e-10, 4.334e-10, 4.2588e-10,
15790 4.3977e-10, 4.6062e-10, 4.7687e-10, 4.6457e-10, 4.8578e-10,
15791 5.2344e-10, 5.6752e-10, 5.8702e-10, 5.6603e-10, 5.3784e-10,
15792 4.9181e-10, 4.3272e-10, 3.5681e-10, 2.8814e-10, 2.332e-10,
15793 1.8631e-10, 1.4587e-10, 1.1782e-10, 9.8132e-11, 8.2528e-11,
15794 6.9174e-11, 6.1056e-11, 5.3459e-11, 4.7116e-11, 4.1878e-11,
15795 3.8125e-11, 3.6347e-11, 3.5071e-11, 3.3897e-11, 3.3541e-11,
15796 3.3563e-11, 3.5469e-11, 3.8111e-11, 3.8675e-11, 4.1333e-11,
15797 4.3475e-11, 4.6476e-11, 4.9761e-11, 5.138e-11, 5.4135e-11,
15798 5.3802e-11, 5.5158e-11, 5.6864e-11, 5.9311e-11, 6.3827e-11,
15799 6.7893e-11, 6.823e-11, 6.6694e-11, 6.6018e-11, 6.4863e-11,
15800 6.5893e-11, 6.3813e-11, 6.4741e-11, 6.863e-11, 7.0255e-11,
15801 7.0667e-11, 6.881e-11, 6.4104e-11, 5.8136e-11, 4.7242e-11,
15802 3.7625e-11, 3.1742e-11, 2.5581e-11, 1.8824e-11, 1.3303e-11,
15803 9.6919e-12, 7.5353e-12, 6.0986e-12, 5.0742e-12, 4.3094e-12,
15804 3.719e-12, 3.252e-12, 2.8756e-12, 2.568e-12, 2.3139e-12,
15805 2.1025e-12, 1.9257e-12, 1.7777e-12, 1.6539e-12, 1.5508e-12,
15806 1.4657e-12, 1.3966e-12, 1.3417e-12, 1.2998e-12, 1.27e-12,
15807 1.2514e-12, 1.2437e-12, 1.2463e-12, 1.2592e-12, 1.2823e-12,
15808 1.3157e-12, 1.3596e-12, 1.4144e-12, 1.4806e-12, 1.5588e-12,
15809 1.6497e-12, 1.7544e-12, 1.8738e-12, 2.0094e-12, 2.1626e-12,
15810 2.3354e-12, 2.5297e-12, 2.7483e-12, 2.9941e-12, 3.2708e-12,
15811 3.5833e-12, 3.9374e-12, 4.3415e-12, 4.8079e-12, 5.3602e-12,
15812 5.9816e-12, 6.7436e-12, 7.6368e-12, 8.6812e-12, 9.8747e-12,
15813 1.135e-11, 1.3181e-11, 1.5406e-11, 1.7868e-11, 2.0651e-11,
15814 2.4504e-11, 2.9184e-11, 3.4159e-11, 3.9979e-11, 4.8704e-11,
15815 5.7856e-11, 6.7576e-11, 7.9103e-11, 9.437e-11, 1.1224e-10,
15816 1.3112e-10, 1.5674e-10, 1.8206e-10, 2.0576e-10, 2.3187e-10,
15817 2.7005e-10, 3.0055e-10, 3.3423e-10, 3.6956e-10, 3.8737e-10,
15818 4.263e-10, 4.5154e-10, 4.8383e-10, 5.3582e-10, 5.8109e-10,
15819 6.3741e-10, 6.3874e-10, 6.387e-10, 6.5818e-10, 6.5056e-10,
15820 6.5291e-10, 6.3159e-10, 6.3984e-10, 6.4549e-10, 6.5444e-10,
15821 6.7035e-10, 6.7665e-10, 6.9124e-10, 6.8451e-10, 6.9255e-10,
15822 6.9923e-10, 7.0396e-10, 6.7715e-10, 6.0371e-10, 5.3774e-10,
15823 4.6043e-10, 3.7635e-10, 2.9484e-10, 2.2968e-10, 1.8185e-10,
15824 1.4191e-10, 1.1471e-10, 9.479e-11, 7.9613e-11, 6.7989e-11,
15825 5.9391e-11, 5.281e-11, 4.7136e-11, 4.2618e-11, 3.8313e-11,
15826 3.4686e-11, 3.1669e-11, 2.911e-11, 2.6871e-11, 2.5074e-11,
15827 2.4368e-11, 2.3925e-11, 2.4067e-11, 2.4336e-11, 2.4704e-11,
15828 2.5823e-11, 2.7177e-11, 2.9227e-11, 3.1593e-11, 3.573e-11,
15829 4.0221e-11, 4.3994e-11, 4.8448e-11, 5.3191e-11, 5.8552e-11,
15830 6.3458e-11, 6.6335e-11, 7.2457e-11, 7.9091e-11, 8.2234e-11,
15831 8.7668e-11, 8.7951e-11, 9.2952e-11, 9.6157e-11, 9.5926e-11,
15832 1.012e-10, 1.0115e-10, 9.9577e-11, 9.6633e-11, 9.2891e-11,
15833 9.3315e-11, 9.5584e-11, 1.0064e-10, 1.0509e-10, 1.1455e-10,
15834 1.2443e-10, 1.2963e-10, 1.2632e-10, 1.1308e-10, 1.0186e-10,
15835 8.588e-11, 6.7863e-11, 5.1521e-11, 3.778e-11, 2.8842e-11,
15836 2.2052e-11, 1.7402e-11, 1.4406e-11, 1.1934e-11, 1.0223e-11,
15837 8.9544e-12, 7.9088e-12, 7.0675e-12, 6.2222e-12, 5.6051e-12,
15838 5.0502e-12, 4.5578e-12, 4.2636e-12, 3.9461e-12, 3.7599e-12,
15839 3.5215e-12, 3.2467e-12, 3.0018e-12, 2.6558e-12, 2.3928e-12,
15840 2.0707e-12, 1.7575e-12, 1.5114e-12, 1.2941e-12, 1.1004e-12,
15841 9.5175e-13, 8.2894e-13, 7.3253e-13, 6.5551e-13, 5.9098e-13,
15842 5.3548e-13, 4.8697e-13, 4.4413e-13, 4.06e-13, 3.7188e-13,
15843 3.4121e-13, 3.1356e-13, 2.8856e-13, 2.659e-13, 2.4533e-13,
15844 2.2663e-13, 2.096e-13, 1.9407e-13, 1.799e-13, 1.6695e-13,
15845 1.5512e-13, 1.4429e-13, 1.3437e-13, 1.2527e-13, 1.1693e-13,
15846 1.0927e-13, 1.0224e-13, 9.5767e-14, 8.9816e-14, 8.4335e-14,
15847 7.9285e-14, 7.4626e-14, 7.0325e-14, 6.6352e-14, 6.2676e-14,
15848 5.9274e-14, 5.6121e-14, 5.3195e-14, 5.0479e-14, 4.7953e-14,
15849 4.5602e-14, 4.3411e-14, 4.1367e-14, 3.9456e-14, 3.767e-14,
15850 3.5996e-14, 3.4427e-14, 3.2952e-14, 3.1566e-14, 3.0261e-14,
15851 2.903e-14, 2.7868e-14, 2.677e-14, 2.573e-14, 2.4745e-14,
15852 2.3809e-14, 2.2921e-14, 2.2076e-14, 2.1271e-14, 2.0504e-14,
15853 1.9772e-14, 1.9073e-14, 1.8404e-14, 1.7764e-14, 1.7151e-14,
15854 1.6564e-14, 1.6e-14, 1.5459e-14, 1.4939e-14, 1.4439e-14,
15855 1.3958e-14, 1.3495e-14, 1.3049e-14, 1.262e-14, 1.2206e-14,
15856 1.1807e-14, 1.1422e-14, 1.105e-14, 1.0691e-14, 1.0345e-14,
15857 1.001e-14, 9.687e-15, 9.3747e-15, 9.0727e-15, 8.7808e-15,
15858 8.4986e-15, 8.2257e-15, 7.9617e-15, 7.7064e-15, 7.4594e-15,
15859 7.2204e-15, 6.9891e-15, 6.7653e-15, 6.5488e-15, 6.3392e-15,
15860 6.1363e-15, 5.9399e-15, 5.7499e-15, 5.5659e-15, 5.3878e-15,
15861 5.2153e-15, 5.0484e-15, 4.8868e-15, 4.7303e-15, 4.5788e-15,
15862 4.4322e-15, 4.2902e-15, 4.1527e-15, 4.0196e-15, 3.8907e-15,
15863 3.7659e-15, 3.6451e-15, 3.5281e-15, 3.4149e-15, 3.3052e-15,
15864 3.1991e-15, 3.0963e-15, 2.9967e-15, 2.9004e-15, 2.8071e-15,
15865 2.7167e-15, 2.6293e-15, 2.5446e-15, 2.4626e-15, 2.3833e-15,
15866 2.3064e-15, 2.232e-15, 2.16e-15, 2.0903e-15, 2.0228e-15,
15867 1.9574e-15, 1.8942e-15, 1.8329e-15, 1.7736e-15, 1.7163e-15,
15868 1.6607e-15, 1.6069e-15, 1.5548e-15, 1.5044e-15, 1.4557e-15,
15869 1.4084e-15, 1.3627e-15, 1.3185e-15, 1.2757e-15, 1.2342e-15,
15870 1.1941e-15, 1.1552e-15, 1.1177e-15, 1.0813e-15, 1.0461e-15,
15871 1.012e-15, 9.79e-16, 9.4707e-16, 9.1618e-16, 8.8628e-16,
15872 8.5734e-16, 8.2933e-16, 8.0223e-16, 7.76e-16, 7.5062e-16,
15873 7.2606e-16, 7.0229e-16, 6.7929e-16, 6.5703e-16, 6.355e-16,
15874 6.1466e-16, 5.9449e-16, 5.7498e-16, 5.561e-16, 5.3783e-16,
15875 5.2015e-16, 5.0305e-16, 4.865e-16, 4.7049e-16, 4.55e-16,
15876 4.4002e-16, 4.2552e-16, 4.1149e-16, 3.9792e-16, 3.8479e-16,
15877 3.7209e-16, 3.5981e-16, 3.4792e-16, 3.3642e-16, 3.253e-16,
15878 3.1454e-16, 3.0413e-16, 2.9406e-16, 2.8432e-16, 2.749e-16,
15879 2.6579e-16, 2.5697e-16, 2.4845e-16, 2.402e-16, 2.3223e-16,
15880 2.2451e-16, 2.1705e-16, 2.0984e-16, 2.0286e-16, 1.9611e-16,
15881 1.8958e-16, 1.8327e-16, 1.7716e-16, 1.7126e-16, 1.6555e-16,
15882 1.6003e-16, 1.5469e-16, 1.4952e-16, 1.4453e-16, 1.397e-16,
15892 }
s260a_ = { {.1775, .17045, .16457, .17045, .1775, .20036, .21347, .22454,
15893 .23428, .23399, .23022, .20724, .19712, .18317, .16724, .1478,
15894 .12757, .11626, .10098, .089033, .07977, .067416, .059588,
15895 .051117, .046218, .042179, .034372, .029863, .025252, .022075,
15896 .019209, .015816, .013932, .011943, .010079, .0087667, .0074094,
15897 .0064967, .0055711, .0048444, .0042552, .0036953, .0032824,
15898 .0029124, .0026102, .002337, .00211, .0019008, .0017145, .0015573,
15899 .0014206, .0012931, .0011803, .0010774, 9.8616e-4, 9.0496e-4,
15900 8.3071e-4, 7.6319e-4, 7.0149e-4, 6.4637e-4, 5.9566e-4, 5.4987e-4,
15901 5.0768e-4, 4.688e-4, 4.3317e-4, 4.0037e-4, 3.7064e-4, 3.4325e-4,
15902 3.1809e-4, 2.9501e-4, 2.7382e-4, 2.543e-4, 2.363e-4, 2.1977e-4,
15903 2.0452e-4, 1.9042e-4, 1.774e-4, 1.6544e-4, 1.5442e-4, 1.4425e-4,
15904 1.3486e-4, 1.2618e-4, 1.1817e-4, 1.1076e-4, 1.0391e-4, 9.7563e-5,
15905 9.1696e-5, 8.6272e-5, 8.1253e-5, 7.6607e-5, 7.2302e-5, 6.8311e-5,
15906 6.4613e-5, 6.1183e-5, 5.8001e-5, 5.5048e-5, 5.2307e-5, 4.9761e-5,
15907 4.7395e-5, 4.5197e-5, 4.3155e-5, 4.1256e-5, 3.9491e-5, 3.7849e-5,
15908 3.6324e-5, 3.4908e-5, 3.3594e-5, 3.2374e-5, 3.1244e-5, 3.0201e-5,
15909 2.924e-5, 2.8356e-5, 2.7547e-5, 2.6814e-5, 2.6147e-5, 2.5551e-5,
15910 2.5029e-5, 2.4582e-5, 2.4203e-5, 2.3891e-5, 2.3663e-5, 2.3531e-5,
15911 2.3483e-5, 2.3516e-5, 2.3694e-5, 2.4032e-5, 2.4579e-5, 2.5234e-5,
15912 2.6032e-5, 2.7119e-5, 2.8631e-5, 3.0848e-5, 3.3262e-5, 3.6635e-5,
15913 4.0732e-5, 4.5923e-5, 5.3373e-5, 6.1875e-5, 7.2031e-5, 8.598e-5,
15914 9.8642e-5, 1.1469e-4, 1.3327e-4, 1.539e-4, 1.7513e-4, 2.0665e-4,
15915 2.3609e-4, 2.622e-4, 2.8677e-4, 3.259e-4, 3.8624e-4, 4.157e-4,
15916 4.5207e-4, 4.9336e-4, 5.45e-4, 5.8258e-4, 5.8086e-4, 5.6977e-4,
15917 5.3085e-4, 4.802e-4, 4.3915e-4, 4.0343e-4, 3.7853e-4, 3.7025e-4,
15918 3.9637e-4, 4.4675e-4, 4.7072e-4, 4.9022e-4, 5.2076e-4, 5.3676e-4,
15919 5.2755e-4, 4.8244e-4, 4.5473e-4, 4.3952e-4, 3.9614e-4, 3.4086e-4,
15920 2.9733e-4, 2.6367e-4, 2.3767e-4, 2.0427e-4, 1.7595e-4, 1.5493e-4,
15921 1.3851e-4, 1.1874e-4, 1.0735e-4, 9.049e-5, 8.1149e-5, 7.4788e-5,
15922 6.5438e-5, 5.8248e-5, 4.8076e-5, 4.3488e-5, 3.7856e-5, 3.3034e-5,
15923 2.9592e-5, 2.6088e-5, 2.3497e-5, 2.0279e-5, 1.7526e-5, 1.5714e-5,
15924 1.3553e-5, 1.2145e-5, 1.0802e-5, 9.7681e-6, 8.8196e-6, 7.8291e-6,
15925 7.1335e-6, 6.4234e-6, 5.8391e-6, 5.3532e-6, 4.9079e-6, 4.5378e-6,
15926 4.1716e-6, 3.8649e-6, 3.5893e-6, 3.3406e-6, 3.1199e-6, 2.9172e-6,
15927 2.7348e-6, 2.5644e-6, 2.4086e-6, 2.2664e-6, 2.1359e-6, 2.0159e-6,
15928 1.9051e-6, 1.8031e-6, 1.7074e-6, 1.6185e-6, 1.5356e-6, 1.4584e-6,
15929 1.3861e-6, 1.3179e-6, 1.2545e-6, 1.1951e-6, 1.1395e-6, 1.0873e-6,
15930 1.0384e-6, 9.925e-7, 9.4935e-7, 9.0873e-7, 8.705e-7, 8.3446e-7,
15931 8.0046e-7, 7.6834e-7, 7.38e-7, 7.0931e-7, 6.8217e-7, 6.5648e-7,
15932 6.3214e-7, 6.0909e-7, 5.8725e-7, 5.6655e-7, 5.4693e-7, 5.2835e-7,
15933 5.1077e-7, 4.9416e-7, 4.7853e-7, 4.6381e-7, 4.5007e-7, 4.3728e-7,
15934 4.255e-7, 4.145e-7, 4.0459e-7, 3.9532e-7, 3.8662e-7, 3.7855e-7,
15935 3.7041e-7, 3.6254e-7, 3.542e-7, 3.4617e-7, 3.3838e-7, 3.3212e-7,
15936 3.2655e-7, 3.1865e-7, 3.1203e-7, 3.067e-7, 3.0252e-7, 2.9749e-7,
15937 2.9184e-7, 2.8795e-7, 2.8501e-7, 2.8202e-7, 2.7856e-7, 2.7509e-7,
15938 2.7152e-7, 2.6844e-7, 2.6642e-7, 2.6548e-7, 2.6617e-7, 2.6916e-7,
15939 2.7372e-7, 2.8094e-7, 2.9236e-7, 3.1035e-7, 3.2854e-7, 3.5481e-7,
15940 3.9377e-7, 4.4692e-7, 5.0761e-7, 5.7715e-7, 6.7725e-7, 8.0668e-7,
15941 9.3716e-7, 1.0797e-6, 1.1689e-6, 1.3217e-6, 1.4814e-6, 1.5627e-6,
15942 1.6519e-6, 1.7601e-6, 1.906e-6, 2.0474e-6, 2.0716e-6, 2.0433e-6,
15943 1.9752e-6, 1.8466e-6, 1.7526e-6, 1.6657e-6, 1.587e-6, 1.5633e-6,
15944 1.652e-6, 1.8471e-6, 1.9953e-6, 2.0975e-6, 2.2016e-6, 2.2542e-6,
15945 2.3081e-6, 2.3209e-6, 2.2998e-6, 2.3056e-6, 2.2757e-6, 2.2685e-6,
15946 2.2779e-6, 2.2348e-6, 2.2445e-6, 2.3174e-6, 2.4284e-6, 2.529e-6,
15947 2.734e-6, 2.972e-6, 3.2332e-6, 3.5392e-6, 3.9013e-6, 4.3334e-6,
15948 4.9088e-6, 5.3428e-6, 5.9142e-6, 6.6106e-6, 7.4709e-6, 8.5019e-6,
15949 9.6835e-6, 1.0984e-5, 1.2831e-5, 1.4664e-5, 1.708e-5, 2.0103e-5,
15950 2.4148e-5, 2.7948e-5, 3.2855e-5, 3.9046e-5, 4.6429e-5, 5.6633e-5,
15951 6.6305e-5, 7.6048e-5, 8.7398e-5, 1.0034e-4, 1.1169e-4, 1.2813e-4,
15952 1.3354e-4, 1.3952e-4, 1.4204e-4, 1.4615e-4, 1.5144e-4, 1.5475e-4,
15953 1.6561e-4, 1.7135e-4, 1.6831e-4, 1.6429e-4, 1.6353e-4, 1.6543e-4,
15954 1.5944e-4, 1.5404e-4, 1.5458e-4, 1.6287e-4, 1.7277e-4, 1.8387e-4,
15955 1.7622e-4, 1.636e-4, 1.5273e-4, 1.3667e-4, 1.2364e-4, 9.7576e-5,
15956 7.914e-5, 6.4241e-5, 5.1826e-5, 4.1415e-5, 3.1347e-5, 2.5125e-5,
15957 2.0027e-5, 1.6362e-5, 1.3364e-5, 1.1117e-5, 9.4992e-6, 8.1581e-6,
15958 7.1512e-6, 6.2692e-6, 5.5285e-6, 4.9e-6, 4.3447e-6, 3.8906e-6,
15959 3.4679e-6, 3.1089e-6, 2.8115e-6, 2.5496e-6, 2.2982e-6, 2.0861e-6,
15960 1.8763e-6, 1.7035e-6, 1.5548e-6, 1.4107e-6, 1.2839e-6, 1.1706e-6,
15961 1.0709e-6, 9.8099e-7, 8.9901e-7, 8.2394e-7, 7.5567e-7, 6.9434e-7,
15962 6.3867e-7, 5.8845e-7, 5.4263e-7, 5.0033e-7, 4.6181e-7, 4.2652e-7,
15963 3.9437e-7, 3.6497e-7, 3.3781e-7, 3.1292e-7, 2.9011e-7, 2.6915e-7,
15964 2.4989e-7, 2.3215e-7, 2.1582e-7, 2.0081e-7, 1.87e-7, 1.7432e-7,
15965 1.6264e-7, 1.5191e-7, 1.4207e-7, 1.3306e-7, 1.2484e-7, 1.1737e-7,
15966 1.1056e-7, 1.0451e-7, 9.906e-8, 9.4135e-8, 8.9608e-8, 8.5697e-8,
15967 8.1945e-8, 7.8308e-8, 7.4808e-8, 7.1686e-8, 6.8923e-8, 6.5869e-8,
15968 6.3308e-8, 6.084e-8, 5.8676e-8, 5.6744e-8, 5.5016e-8, 5.3813e-8,
15969 5.2792e-8, 5.2097e-8, 5.1737e-8, 5.1603e-8, 5.1656e-8, 5.1989e-8,
15970 5.2467e-8, 5.2918e-8, 5.3589e-8, 5.456e-8, 5.5869e-8, 5.7403e-8,
15971 5.8968e-8, 6.0973e-8, 6.3432e-8, 6.6245e-8, 6.9353e-8, 7.2686e-8,
15972 7.6541e-8, 8.0991e-8, 8.595e-8, 9.1429e-8, 9.7851e-8, 1.0516e-7,
15973 1.1349e-7, 1.2295e-7, 1.3335e-7, 1.4488e-7, 1.5864e-7, 1.7412e-7,
15974 1.914e-7, 2.1078e-7, 2.3369e-7, 2.5996e-7, 2.8848e-7, 3.2169e-7,
15975 3.5991e-7, 4.0566e-7, 4.5969e-7, 5.3094e-7, 6.1458e-7, 7.1155e-7,
15976 8.3045e-7, 9.9021e-7, 1.2042e-6, 1.4914e-6, 1.8145e-6, 2.221e-6,
15977 2.7831e-6, 3.4533e-6, 4.4446e-6, 5.1989e-6, 6.2289e-6, 7.1167e-6,
15978 8.3949e-6, 9.6417e-6, 1.0313e-5, 1.0485e-5, 1.0641e-5, 1.0898e-5,
15979 1.0763e-5, 1.0506e-5, 1.0497e-5, 1.1696e-5, 1.2654e-5, 1.3029e-5,
15980 1.3175e-5, 1.4264e-5, 1.4985e-5, 1.4999e-5, 1.4317e-5, 1.4616e-5,
15981 1.4963e-5, 1.5208e-5, 1.4942e-5, 1.3879e-5, 1.3087e-5, 1.1727e-5,
15982 1.0515e-5, 9.0073e-6, 7.3133e-6, 6.1181e-6, 5.0623e-6, 4.1105e-6,
15983 3.3915e-6, 2.6711e-6, 2.1464e-6, 1.7335e-6, 1.4302e-6, 1.1847e-6,
15984 9.9434e-7, 8.2689e-7, 7.0589e-7, 6.075e-7, 5.3176e-7, 4.6936e-7,
15985 4.1541e-7, 3.6625e-7, 3.2509e-7, 2.9156e-7, 2.6308e-7, 2.3819e-7,
15986 2.1421e-7, 1.9366e-7, 1.7626e-7, 1.5982e-7, 1.4567e-7, 1.3354e-7,
15987 1.2097e-7, 1.1029e-7, 1.0063e-7, 9.2003e-8, 8.4245e-8, 7.7004e-8,
15988 7.0636e-8, 6.4923e-8, 5.9503e-8, 5.4742e-8, 5.045e-8, 4.647e-8,
15989 4.2881e-8, 3.955e-8, 3.6541e-8, 3.3803e-8, 3.1279e-8, 2.8955e-8,
15990 2.6858e-8, 2.4905e-8, 2.3146e-8, 2.1539e-8, 2.0079e-8, 1.8746e-8,
15991 1.7517e-8, 1.6396e-8, 1.5369e-8, 1.4426e-8, 1.3543e-8, 1.2724e-8,
15992 1.1965e-8, 1.1267e-8, 1.0617e-8, 1.001e-8, 9.4662e-9, 8.9553e-9,
15993 8.4988e-9, 8.0807e-9, 7.7043e-9, 7.3721e-9, 7.0707e-9, 6.8047e-9,
15994 6.5702e-9, 6.3634e-9, 6.1817e-9, 6.0239e-9, 5.8922e-9, 5.7824e-9,
15995 5.7019e-9, 5.6368e-9, 5.594e-9, 5.5669e-9, 5.5583e-9, 5.5653e-9,
15996 5.5837e-9, 5.6243e-9, 5.6883e-9, 5.78e-9, 5.8964e-9, 6.0429e-9,
15997 6.2211e-9, 6.4282e-9, 6.6634e-9, 6.9306e-9, 7.2336e-9, 7.5739e-9,
15998 7.9562e-9, 8.3779e-9, 8.8575e-9, 9.3992e-9, 1.0004e-8, 1.0684e-8,
15999 1.145e-8, 1.232e-8, 1.3311e-8, 1.4455e-8, 1.5758e-8, 1.7254e-8,
16000 1.8927e-8, 2.093e-8, 2.3348e-8, 2.6074e-8, 2.9221e-8, 3.277e-8,
16001 3.7485e-8, 4.2569e-8, 4.8981e-8, 5.5606e-8, 6.2393e-8, 7.1901e-8,
16002 8.2921e-8, 9.5513e-8, 1.1111e-7, 1.3143e-7, 1.5971e-7, 1.8927e-7,
16003 2.2643e-7, 2.786e-7, 3.2591e-7, 3.7024e-7, 4.2059e-7, 4.9432e-7,
16004 5.5543e-7, 5.7498e-7, 5.921e-7, 6.1005e-7, 6.1577e-7, 5.9193e-7,
16005 5.6602e-7, 5.7403e-7, 6.005e-7, 6.4723e-7, 6.7073e-7, 7.5415e-7,
16006 8.0982e-7, 8.7658e-7, 9.143e-7, 9.4459e-7, 9.8347e-7, 9.8768e-7,
16007 1.0153e-6, 1.0066e-6, 1.0353e-6, 1.0353e-6, 1.0722e-6, 1.1138e-6,
16008 1.1923e-6, 1.2947e-6, 1.4431e-6, 1.6537e-6, 1.8662e-6, 2.2473e-6,
16009 2.6464e-6, 3.1041e-6, 3.4858e-6, 4.0167e-6, 4.6675e-6, 5.0983e-6,
16010 5.7997e-6, 6.0503e-6, 6.4687e-6, 6.5396e-6, 6.7986e-6, 7.0244e-6,
16011 7.2305e-6, 7.6732e-6, 7.9783e-6, 7.9846e-6, 7.7617e-6, 7.7657e-6,
16012 7.7411e-6, 7.8816e-6, 7.8136e-6, 8.0051e-6, 8.5799e-6, 9.1659e-6,
16013 9.8646e-6, 9.492e-6, 8.767e-6, 8.2034e-6, 7.2297e-6, 6.2324e-6,
16014 4.9315e-6, 3.9128e-6, 3.1517e-6, 2.4469e-6, 1.8815e-6, 1.4627e-6,
16015 1.1698e-6, 9.4686e-7, 7.8486e-7, 6.697e-7, 5.8811e-7, 5.2198e-7,
16016 4.6809e-7, 4.1671e-7, 3.7006e-7, 3.3066e-7, 2.9387e-7, 2.6415e-7,
16017 2.3409e-7, 2.0991e-7, 1.9132e-7, 1.7519e-7, 1.5939e-7, 1.4368e-7,
16018 1.305e-7, 1.1883e-7, 1.0772e-7, 9.6884e-8, 8.7888e-8, 7.8956e-8,
16019 7.1024e-8, 6.3824e-8, 5.7256e-8, 5.1769e-8, 4.7037e-8, 4.2901e-8,
16020 3.897e-8, 3.5467e-8, 3.2502e-8, 2.9827e-8, 2.7389e-8, 2.5111e-8,
16021 2.3056e-8, 2.1267e-8, 1.961e-8, 1.8133e-8, 1.6775e-8, 1.5491e-8,
16022 1.4329e-8, 1.3265e-8, 1.23e-8, 1.142e-8, 1.0593e-8, 9.8475e-9,
16023 9.1585e-9, 8.5256e-9, 7.9525e-9, 7.4226e-9, 6.9379e-9, 6.495e-9,
16024 6.0911e-9, 5.7242e-9, 5.3877e-9, 5.0821e-9, 4.8051e-9, 4.5554e-9,
16025 4.3315e-9, 4.1336e-9, 3.9632e-9, 3.8185e-9, 3.708e-9, 3.6296e-9,
16026 3.5804e-9, 3.5776e-9, 3.6253e-9, 3.7115e-9, 3.8151e-9, 3.9804e-9,
16027 4.1742e-9, 4.3581e-9, 4.5306e-9, 4.7736e-9, 5.1297e-9, 5.5291e-9,
16028 5.9125e-9, 6.4956e-9, 7.0362e-9, 7.5318e-9, 7.9947e-9, 8.6438e-9,
16029 9.7227e-9, 1.013e-8, 1.0549e-8, 1.1064e-8, 1.1702e-8, 1.2043e-8,
16030 1.1781e-8, 1.1838e-8, 1.1917e-8, 1.2131e-8, 1.2476e-8, 1.3611e-8,
16031 1.436e-8, 1.5057e-8, 1.6247e-8, 1.7284e-8, 1.842e-8, 1.8352e-8,
16032 1.8722e-8, 1.9112e-8, 1.9092e-8, 1.9311e-8, 1.9411e-8, 1.9884e-8,
16033 2.0508e-8, 2.151e-8, 2.3143e-8, 2.505e-8, 2.7596e-8, 3.1231e-8,
16034 3.626e-8, 4.341e-8, 5.224e-8, 6.3236e-8, 7.7522e-8, 9.8688e-8,
16035 1.1859e-7, 1.4341e-7, 1.6798e-7, 1.9825e-7, 2.2898e-7, 2.6257e-7,
16036 2.9884e-7, 3.3247e-7, 3.4936e-7, 3.5583e-7, 3.715e-7, 3.658e-7,
16037 3.7124e-7, 3.703e-7, 4.1536e-7, 4.6656e-7, 4.6677e-7, 4.7507e-7,
16038 4.9653e-7, 5.3795e-7, 5.4957e-7, 5.2238e-7, 5.469e-7, 5.6569e-7,
16039 5.9844e-7, 5.9835e-7, 5.6522e-7, 5.4123e-7, 4.7904e-7, 4.2851e-7,
16040 3.5603e-7, 2.8932e-7, 2.3655e-7, 1.8592e-7, 1.4943e-7, 1.1971e-7,
16041 9.8482e-8, 8.3675e-8, 7.127e-8, 6.2496e-8, 5.4999e-8, 4.9821e-8,
16042 4.5387e-8, 4.134e-8, 3.7453e-8, 3.3298e-8, 3.012e-8, 2.7032e-8,
16043 2.4236e-8, 2.15e-8, 1.8988e-8, 1.7414e-8, 1.5706e-8, 1.4192e-8,
16044 1.3204e-8, 1.1759e-8, 1.0737e-8, 9.6309e-9, 8.8179e-9, 8.2619e-9,
16045 7.2264e-9, 6.4856e-9, 5.8037e-9, 5.2093e-9, 4.7205e-9, 4.1749e-9,
16046 3.7852e-9, 3.3915e-9, 3.0089e-9, 2.7335e-9, 2.4398e-9, 2.2031e-9,
16047 1.9786e-9, 1.789e-9, 1.6266e-9, 1.483e-9, 1.3576e-9, 1.2518e-9,
16048 1.1587e-9, 1.0726e-9, 9.9106e-10, 9.1673e-10, 8.5084e-10,
16049 7.9147e-10, 7.2882e-10, 6.7342e-10, 6.2593e-10, 5.8294e-10,
16050 5.4435e-10, 5.0997e-10, 4.7806e-10, 4.4931e-10, 4.2357e-10,
16051 4.0023e-10, 3.7909e-10, 3.5999e-10, 3.4285e-10, 3.2776e-10,
16052 3.1468e-10, 3.0377e-10, 2.9479e-10, 2.8877e-10, 2.8512e-10,
16053 2.8617e-10, 2.8976e-10, 3.0001e-10, 3.1718e-10, 3.3898e-10,
16054 3.5857e-10, 3.8358e-10, 4.3131e-10, 4.5741e-10, 4.6948e-10,
16055 4.7594e-10, 4.9529e-10, 5.1563e-10, 4.9475e-10, 4.8369e-10,
16056 4.8829e-10, 5.0047e-10, 5.0203e-10, 5.1954e-10, 5.5352e-10,
16057 5.9928e-10, 6.7148e-10, 7.1121e-10, 7.4317e-10, 7.6039e-10,
16058 7.8313e-10, 8.0684e-10, 7.8553e-10, 7.8312e-10, 7.8537e-10,
16059 7.8872e-10, 8.0185e-10, 8.1004e-10, 8.2608e-10, 8.2525e-10,
16060 8.3857e-10, 8.792e-10, 9.2451e-10, 9.8661e-10, 1.0629e-9,
16061 1.1659e-9, 1.2922e-9, 1.4387e-9, 1.6254e-9, 1.8425e-9, 2.1428e-9,
16062 2.5477e-9, 3.0379e-9, 3.757e-9, 4.4354e-9, 5.1802e-9, 6.2769e-9,
16063 7.4894e-9, 8.7474e-9, 9.8037e-9, 1.1582e-8, 1.3293e-8, 1.4471e-8,
16064 1.5025e-8, 1.558e-8, 1.6228e-8, 1.6413e-8, 1.602e-8, 1.6393e-8,
16065 1.7545e-8, 1.959e-8, 2.1449e-8, 2.3856e-8, 2.705e-8, 3.0214e-8,
16066 3.3733e-8, 3.6487e-8, 3.9353e-8, 4.266e-8, 4.6385e-8, 4.9955e-8,
16067 5.5313e-8, 6.0923e-8, 6.8948e-8, 7.3649e-8, 8.2602e-8, 9.2212e-8,
16068 9.908e-8, 1.1319e-7, 1.179e-7, 1.2941e-7, 1.3199e-7, 1.3914e-7,
16069 1.4843e-7, 1.53e-7, 1.6419e-7, 1.7095e-7, 1.6988e-7, 1.6494e-7,
16070 1.6327e-7, 1.6067e-7, 1.6909e-7, 1.7118e-7, 1.8106e-7, 1.9857e-7,
16071 2.1696e-7, 2.3385e-7, 2.2776e-7, 2.1402e-7, 1.9882e-7, 1.7362e-7,
16072 1.4308e-7, 1.1158e-7, 8.8781e-8, 6.8689e-8, 5.2062e-8, 4.0427e-8,
16073 3.2669e-8, 2.7354e-8, 2.32e-8, 2.058e-8, 1.8676e-8, 1.7329e-8,
16074 1.6621e-8, 1.6433e-8, 1.6953e-8, 1.7134e-8, 1.7948e-8, 1.9107e-8,
16075 1.9875e-8, 2.1416e-8, 2.1556e-8, 2.2265e-8, 2.2171e-8, 2.2534e-8,
16076 2.3029e-8, 2.2828e-8, 2.3143e-8, 2.2965e-8, 2.2223e-8, 2.1108e-8,
16077 2.0265e-8, 1.9516e-8, 1.9941e-8, 2.0312e-8, 2.108e-8, 2.2611e-8,
16078 2.421e-8, 2.6069e-8, 2.5097e-8, 2.3318e-8, 2.1543e-8, 1.8942e-8,
16079 1.596e-8, 1.2386e-8, 9.934e-9, 7.7502e-9, 5.9462e-9, 4.5113e-9,
16080 3.5523e-9, 2.8844e-9, 2.3394e-9, 1.9584e-9, 1.6749e-9, 1.4624e-9,
16081 1.2809e-9, 1.1359e-9, 1.0087e-9, 9.0166e-10, 8.1079e-10,
16082 7.2219e-10, 6.4922e-10, 5.8803e-10, 5.329e-10, 4.859e-10,
16083 4.4111e-10, 4.0184e-10, 3.6644e-10, 3.3529e-10, 3.0789e-10,
16084 2.8286e-10, 2.6089e-10, 2.4125e-10, 2.2355e-10, 2.0783e-10,
16085 1.937e-10, 1.8088e-10, 1.6948e-10, 1.5929e-10, 1.5013e-10,
16086 1.4193e-10, 1.347e-10, 1.2841e-10, 1.2307e-10, 1.1865e-10,
16087 1.1502e-10, 1.1243e-10, 1.1099e-10, 1.1066e-10, 1.1216e-10,
16088 1.1529e-10, 1.2171e-10, 1.3128e-10, 1.4153e-10, 1.5962e-10,
16089 1.8048e-10, 2.0936e-10, 2.3165e-10, 2.5746e-10, 2.96e-10,
16090 3.3707e-10, 3.5267e-10, 3.5953e-10, 3.6822e-10, 3.8363e-10,
16091 3.8286e-10, 3.5883e-10, 3.6154e-10, 3.6653e-10, 3.8507e-10,
16092 4.025e-10, 4.4435e-10, 4.9889e-10, 5.6932e-10, 6.3599e-10,
16093 7.0281e-10, 7.5777e-10, 8.1279e-10, 8.891e-10, 9.34e-10,
16094 1.0076e-9, 1.0945e-9, 1.1898e-9, 1.3108e-9, 1.4725e-9, 1.7028e-9,
16095 1.9619e-9, 2.3527e-9, 2.6488e-9, 3.0327e-9, 3.4396e-9, 3.8797e-9,
16096 4.4115e-9, 4.6853e-9, 4.9553e-9, 4.9551e-9, 5.1062e-9, 5.0996e-9,
16097 5.1119e-9, 5.2283e-9, 5.8297e-9, 6.3439e-9, 6.2675e-9, 6.3296e-9,
16098 6.5173e-9, 7.1685e-9, 7.0528e-9, 6.8856e-9, 7.3182e-9, 7.699e-9,
16099 8.3461e-9, 8.1946e-9, 7.7153e-9, 7.2411e-9, 6.4511e-9, 5.7336e-9,
16100 4.6105e-9, 3.6962e-9, 2.9944e-9, 2.4317e-9, 1.9399e-9, 1.5331e-9,
16101 1.2633e-9, 1.0613e-9, 9.0136e-10, 7.9313e-10, 7.1543e-10,
16102 6.6485e-10, 6.4225e-10, 6.398e-10, 6.4598e-10, 6.7428e-10,
16103 7.027e-10, 7.4694e-10, 7.7946e-10, 7.9395e-10, 7.8716e-10,
16104 7.6933e-10, 7.622e-10, 7.4825e-10, 7.4805e-10, 7.6511e-10,
16105 7.6492e-10, 7.4103e-10, 7.1979e-10, 7.1686e-10, 7.3403e-10,
16106 7.1142e-10, 7.0212e-10, 7.1548e-10, 7.5253e-10, 8.0444e-10,
16107 8.2378e-10, 7.8004e-10, 7.1712e-10, 6.4978e-10, 5.7573e-10,
16108 4.8675e-10, 3.7945e-10, 3.0118e-10, 2.4241e-10, 1.91e-10,
16109 1.4816e-10, 1.1567e-10, 9.4183e-11, 7.766e-11, 6.527e-11,
16110 5.6616e-11, 4.9576e-11, 4.4137e-11, 3.9459e-11, 3.5759e-11,
16111 3.2478e-11, 2.9419e-11, 2.6703e-11, 2.4365e-11, 2.2412e-11,
16112 2.0606e-11, 1.9067e-11, 1.78e-11, 1.6695e-11, 1.5729e-11,
16113 1.4887e-11, 1.4135e-11, 1.3519e-11, 1.2992e-11, 1.2563e-11,
16114 1.2223e-11, 1.1962e-11, 1.1775e-11, 1.1657e-11, 1.1605e-11,
16115 1.1619e-11, 1.1697e-11, 1.1839e-11, 1.2046e-11, 1.2319e-11,
16116 1.2659e-11, 1.307e-11, 1.3553e-11, 1.4113e-11, 1.4754e-11,
16117 1.548e-11, 1.6298e-11, 1.7214e-11, 1.8236e-11, 1.9372e-11,
16118 2.0635e-11, 2.2036e-11, 2.359e-11, 2.5317e-11, 2.7242e-11,
16119 2.94e-11, 3.1849e-11, 3.4654e-11, 3.7923e-11, 4.1695e-11,
16120 4.6055e-11, 5.094e-11, 5.5624e-11, 6.0667e-11, 6.6261e-11,
16121 7.2692e-11, 7.9711e-11, 8.7976e-11, 9.6884e-11, 1.0775e-10,
16122 1.2093e-10, 1.3531e-10, 1.5404e-10, 1.7315e-10, 1.9862e-10,
16123 2.3341e-10, 2.7014e-10, 3.1716e-10, 3.6957e-10, 4.3233e-10,
16124 5.2566e-10, 6.2251e-10, 7.2149e-10, 8.3958e-10, 9.5931e-10,
16125 1.1388e-9, 1.2973e-9, 1.4442e-9, 1.5638e-9, 1.6974e-9, 1.8489e-9,
16126 1.983e-9, 2.172e-9, 2.3662e-9, 2.6987e-9, 3.1697e-9, 3.6907e-9,
16127 4.2625e-9, 4.7946e-9, 5.3848e-9, 6.0897e-9, 6.473e-9, 7.1483e-9,
16128 7.7432e-9, 8.0851e-9, 8.5013e-9, 8.5909e-9, 9.189e-9, 9.3124e-9,
16129 9.5936e-9, 9.8787e-9, 9.9036e-9, 9.6712e-9, 9.2036e-9, 9.0466e-9,
16130 8.938e-9, 9.1815e-9, 9.5092e-9, 1.0027e-8, 1.0876e-8, 1.1744e-8,
16131 1.1853e-8, 1.1296e-8, 1.0134e-8, 8.8245e-9, 7.393e-9, 5.715e-9,
16132 4.4884e-9, 3.4027e-9, 2.6054e-9, 2.079e-9, 1.7267e-9, 1.4724e-9,
16133 1.2722e-9, 1.1234e-9, 1.0186e-9, 9.468e-10, 8.8854e-10,
16134 8.5127e-10, 8.3157e-10, 8.2226e-10, 8.3395e-10, 8.3294e-10,
16135 8.4725e-10, 8.8814e-10, 9.3697e-10, 1.0112e-9, 1.0412e-9,
16136 1.0948e-9, 1.181e-9, 1.2267e-9, 1.369e-9, 1.4512e-9, 1.5568e-9,
16137 1.6552e-9, 1.7321e-9, 1.8797e-9, 1.921e-9, 1.9686e-9, 1.9917e-9,
16138 1.9357e-9, 1.8486e-9, 1.7575e-9, 1.7113e-9, 1.7163e-9, 1.7623e-9,
16139 1.8536e-9, 1.9765e-9, 2.1334e-9, 2.3237e-9, 2.3259e-9, 2.1833e-9,
16140 1.9785e-9, 1.7308e-9, 1.4596e-9, 1.1198e-9, 8.7375e-10,
16141 6.5381e-10, 4.8677e-10, 3.6756e-10, 2.9155e-10, 2.3735e-10,
16142 1.959e-10, 1.6638e-10, 1.4549e-10, 1.2947e-10, 1.1511e-10,
16143 1.0548e-10, 9.6511e-11, 9.0469e-11, 8.517e-11, 7.7804e-11,
16144 7.1971e-11, 6.6213e-11, 6.1063e-11, 5.5881e-11, 5.0508e-11,
16145 4.5932e-11, 4.1997e-11, 3.7672e-11, 3.3972e-11, 3.0318e-11,
16146 2.6769e-11, 2.3874e-11, 2.1336e-11, 1.9073e-11, 1.7313e-11,
16147 1.5904e-11, 1.4684e-11, 1.3698e-11, 1.2873e-11, 1.2175e-11,
16148 1.1542e-11, 1.1024e-11, 1.0602e-11, 1.0267e-11, 1.0012e-11,
16149 9.8379e-12, 9.7482e-12, 9.7564e-12, 9.8613e-12, 1.0092e-11,
16150 1.0418e-11, 1.0868e-11, 1.1585e-11, 1.2351e-11, 1.3372e-11,
16151 1.4841e-11, 1.6457e-11, 1.8681e-11, 2.055e-11, 2.2912e-11,
16152 2.5958e-11, 2.9137e-11, 3.2368e-11, 3.4848e-11, 3.8462e-11,
16153 4.219e-11, 4.5629e-11, 4.9022e-11, 5.4232e-11, 6.19e-11,
16154 7.1953e-11, 8.5368e-11, 9.9699e-11, 1.1734e-10, 1.4185e-10,
16155 1.7017e-10, 1.9813e-10, 2.3859e-10, 2.7304e-10, 3.0971e-10,
16156 3.5129e-10, 3.9405e-10, 4.5194e-10, 4.8932e-10, 5.2436e-10,
16157 5.4098e-10, 5.5542e-10, 5.7794e-10, 5.6992e-10, 5.879e-10,
16158 6.1526e-10, 6.8034e-10, 6.7956e-10, 6.6864e-10, 6.9329e-10,
16159 7.2971e-10, 7.6546e-10, 7.5078e-10, 7.8406e-10, 8.3896e-10,
16160 9.0111e-10, 9.1994e-10, 8.7189e-10, 8.1426e-10, 7.3097e-10,
16161 6.3357e-10, 5.1371e-10, 4.0936e-10, 3.2918e-10, 2.6255e-10,
16162 2.0724e-10, 1.6879e-10, 1.4165e-10, 1.1989e-10, 1.0125e-10,
16163 8.9629e-11, 7.8458e-11, 6.8826e-11, 6.0935e-11, 5.5208e-11,
16164 5.2262e-11, 5.026e-11, 4.8457e-11, 4.7888e-11, 4.8032e-11,
16165 5.0838e-11, 5.4668e-11, 5.579e-11, 6.0056e-11, 6.3811e-11,
16166 6.8848e-11, 7.459e-11, 7.8249e-11, 8.3371e-11, 8.3641e-11,
16167 8.6591e-11, 8.9599e-11, 9.3487e-11, 1.0066e-10, 1.0765e-10,
16168 1.0851e-10, 1.0619e-10, 1.0557e-10, 1.046e-10, 1.0796e-10,
16169 1.0523e-10, 1.0674e-10, 1.1261e-10, 1.1431e-10, 1.1408e-10,
16170 1.0901e-10, 9.9105e-11, 8.8077e-11, 6.9928e-11, 5.4595e-11,
16171 4.5401e-11, 3.6313e-11, 2.6986e-11, 1.9463e-11, 1.4577e-11,
16172 1.1583e-11, 9.5492e-12, 8.077e-12, 6.9642e-12, 6.0966e-12,
16173 5.4046e-12, 4.8431e-12, 4.3815e-12, 3.9987e-12, 3.679e-12,
16174 3.4113e-12, 3.1868e-12, 2.9992e-12, 2.8434e-12, 2.7153e-12,
16175 2.612e-12, 2.5311e-12, 2.4705e-12, 2.429e-12, 2.4053e-12,
16176 2.3988e-12, 2.4087e-12, 2.4349e-12, 2.4771e-12, 2.5355e-12,
16177 2.6103e-12, 2.7019e-12, 2.811e-12, 2.9383e-12, 3.0848e-12,
16178 3.2518e-12, 3.4405e-12, 3.6527e-12, 3.8902e-12, 4.1555e-12,
16179 4.451e-12, 4.7801e-12, 5.1462e-12, 5.5539e-12, 6.0086e-12,
16180 6.5171e-12, 7.0884e-12, 7.7357e-12, 8.4831e-12, 9.3096e-12,
16181 1.0282e-11, 1.1407e-11, 1.269e-11, 1.4148e-11, 1.5888e-11,
16182 1.7992e-11, 2.0523e-11, 2.3342e-11, 2.6578e-11, 3.0909e-11,
16183 3.6228e-11, 4.2053e-11, 4.9059e-11, 5.9273e-11, 7.0166e-11,
16184 8.2298e-11, 9.7071e-11, 1.1673e-10, 1.401e-10, 1.6621e-10,
16185 2.0127e-10, 2.3586e-10, 2.705e-10, 3.095e-10, 3.6584e-10,
16186 4.1278e-10, 4.6591e-10, 5.222e-10, 5.5246e-10, 6.15e-10,
16187 6.5878e-10, 7.1167e-10, 7.9372e-10, 8.6975e-10, 9.6459e-10,
16188 9.7368e-10, 9.8142e-10, 1.0202e-9, 1.02e-9, 1.0356e-9, 1.0092e-9,
16189 1.0269e-9, 1.0366e-9, 1.049e-9, 1.0717e-9, 1.0792e-9, 1.1016e-9,
16190 1.0849e-9, 1.0929e-9, 1.0971e-9, 1.0969e-9, 1.046e-9, 9.2026e-10,
16191 8.1113e-10, 6.8635e-10, 5.5369e-10, 4.2908e-10, 3.3384e-10,
16192 2.648e-10, 2.081e-10, 1.6915e-10, 1.4051e-10, 1.1867e-10,
16193 1.0158e-10, 8.899e-11, 7.9175e-11, 7.044e-11, 6.3453e-11,
16194 5.7009e-11, 5.1662e-11, 4.7219e-11, 4.3454e-11, 4.0229e-11,
16195 3.7689e-11, 3.6567e-11, 3.5865e-11, 3.5955e-11, 3.5928e-11,
16196 3.6298e-11, 3.7629e-11, 3.93e-11, 4.1829e-11, 4.4806e-11,
16197 5.0534e-11, 5.6672e-11, 6.2138e-11, 6.8678e-11, 7.6111e-11,
16198 8.4591e-11, 9.2634e-11, 9.8085e-11, 1.083e-10, 1.1949e-10,
16199 1.2511e-10, 1.3394e-10, 1.3505e-10, 1.4342e-10, 1.4874e-10,
16200 1.492e-10, 1.5872e-10, 1.5972e-10, 1.5821e-10, 1.5425e-10,
16201 1.4937e-10, 1.5089e-10, 1.5521e-10, 1.6325e-10, 1.6924e-10,
16202 1.8265e-10, 1.9612e-10, 2.0176e-10, 1.9359e-10, 1.7085e-10,
16203 1.5197e-10, 1.2646e-10, 9.8552e-11, 7.453e-11, 5.5052e-11,
16204 4.2315e-11, 3.2736e-11, 2.6171e-11, 2.1909e-11, 1.8286e-11,
16205 1.5752e-11, 1.3859e-11, 1.2288e-11, 1.1002e-11, 9.7534e-12,
16206 8.8412e-12, 8.0169e-12, 7.2855e-12, 6.8734e-12, 6.4121e-12,
16207 6.1471e-12, 5.778e-12, 5.3478e-12, 4.9652e-12, 4.4043e-12,
16208 3.9862e-12, 3.4684e-12, 2.9681e-12, 2.5791e-12, 2.2339e-12,
16209 1.9247e-12, 1.6849e-12, 1.4863e-12, 1.3291e-12, 1.2021e-12,
16210 1.0947e-12, 1.0015e-12, 9.1935e-13, 8.4612e-13, 7.8036e-13,
16211 7.21e-13, 6.6718e-13, 6.1821e-13, 5.7353e-13, 5.3269e-13,
16212 4.9526e-13, 4.6093e-13, 4.2937e-13, 4.0034e-13, 3.7361e-13,
16213 3.4895e-13, 3.2621e-13, 3.052e-13, 2.8578e-13, 2.6782e-13,
16214 2.512e-13, 2.3581e-13, 2.2154e-13, 2.0832e-13, 1.9605e-13,
16215 1.8466e-13, 1.7408e-13, 1.6425e-13, 1.5511e-13, 1.4661e-13,
16216 1.3869e-13, 1.3131e-13, 1.2444e-13, 1.1803e-13, 1.1205e-13,
16217 1.0646e-13, 1.0124e-13, 9.6358e-14, 9.1789e-14, 8.7509e-14,
16218 8.3498e-14, 7.9735e-14, 7.6202e-14, 7.2882e-14, 6.976e-14,
16219 6.6822e-14, 6.4053e-14, 6.1442e-14, 5.8978e-14, 5.665e-14,
16220 5.4448e-14, 5.2364e-14, 5.0389e-14, 4.8516e-14, 4.6738e-14,
16221 4.5048e-14, 4.3441e-14, 4.1911e-14, 4.0453e-14, 3.9063e-14,
16222 3.7735e-14, 3.6467e-14, 3.5254e-14, 3.4093e-14, 3.298e-14,
16223 3.1914e-14, 3.0891e-14, 2.9909e-14, 2.8965e-14, 2.8058e-14,
16224 2.7185e-14, 2.6344e-14, 2.5535e-14, 2.4755e-14, 2.4002e-14,
16225 2.3276e-14, 2.2576e-14, 2.1899e-14, 2.1245e-14, 2.0613e-14,
16226 2.0002e-14, 1.9411e-14, 1.8839e-14, 1.8285e-14, 1.7749e-14,
16227 1.723e-14, 1.6727e-14, 1.624e-14, 1.5768e-14, 1.531e-14,
16228 1.4867e-14, 1.4436e-14, 1.4019e-14, 1.3614e-14, 1.3221e-14,
16229 1.284e-14, 1.2471e-14, 1.2112e-14, 1.1764e-14, 1.1425e-14,
16230 1.1097e-14, 1.0779e-14, 1.0469e-14, 1.0169e-14, 9.8775e-15,
16231 9.5943e-15, 9.3193e-15, 9.0522e-15, 8.7928e-15, 8.5409e-15,
16232 8.2962e-15, 8.0586e-15, 7.8278e-15, 7.6036e-15, 7.3858e-15,
16233 7.1742e-15, 6.9687e-15, 6.7691e-15, 6.5752e-15, 6.3868e-15,
16234 6.2038e-15, 6.026e-15, 5.8533e-15, 5.6856e-15, 5.5226e-15,
16235 5.3642e-15, 5.2104e-15, 5.061e-15, 4.9158e-15, 4.7748e-15,
16236 4.6378e-15, 4.5047e-15, 4.3753e-15, 4.2497e-15, 4.1277e-15,
16237 4.0091e-15, 3.8939e-15, 3.782e-15, 3.6733e-15, 3.5677e-15,
16238 3.4651e-15, 3.3655e-15, 3.2686e-15, 3.1746e-15, 3.0832e-15,
16239 2.9944e-15, 2.9082e-15, 2.8244e-15, 2.7431e-15, 2.664e-15,
16240 2.5872e-15, 2.5126e-15, 2.4401e-15, 2.3697e-15, 2.3014e-15,
16241 2.2349e-15, 2.1704e-15, 2.1077e-15, 2.0468e-15, 1.9877e-15,
16242 1.9302e-15, 1.8744e-15, 1.8202e-15, 1.7675e-15, 1.7164e-15,
16243 1.6667e-15, 1.6184e-15, 1.5716e-15, 1.526e-15, 1.4818e-15,
16244 1.4389e-15, 1.3971e-15, 1.3566e-15, 1.3172e-15, 1.279e-15,
16245 1.2419e-15, 1.2058e-15, 1.1708e-15, 1.1368e-15, 1.1037e-15,
16246 1.0716e-15, 1.0405e-15, 1.0102e-15, 9.8079e-16, 9.5224e-16,
16247 9.2451e-16, 8.9758e-16, 8.7142e-16, 8.4602e-16, 8.2136e-16,
16248 7.974e-16, 7.7414e-16, 7.5154e-16, 7.2961e-16, 7.083e-16,
16249 6.8761e-16, 6.6752e-16, 6.4801e-16, 6.2906e-16, 6.1066e-16,
16250 5.928e-16, 5.7545e-16, 5.586e-16, 5.4224e-16, 5.2636e-16,
16251 5.1094e-16, 4.9596e-16} };
16260 }
consts_ = { {3.1415927410125732, 6.62606876e-27, 1.3806503e-16,
16261 29979245800., 6.02214199e23, 2.6867775e19, 83144720.,
16262 1.191042722e-12, 1.4387752} };
16305 double vmrn2,
double vmro2,
double freq,
int ivc)
16309 static double xslf = 1.;
16310 static double xfrg = 1.;
16311 static double xcn2 = 1.;
16314 double ret_val=0.0e0;
16319 double w_wv__, oc_n2, radct;
16320 double w_other__, w_n2__, w_o2__;
16321 double of_wv, os_wv, p0, xn_wv__, t0, rhofac, wn, xn, xn0, tksvpt, rft;
16323 extern int initi_(
double,
double ,
double *,
16324 double *,
double *,
double *,
double *,
16325 double *,
double *,
double *,
double *,
16326 double *,
double *);
16327 extern double fwv_(
int ,
double ,
double *,
double *,
16328 double *,
double *,
double *,
double *);
16329 extern double swv_(
int ,
double ,
double ,
double *,
double *
16330 ,
double *,
double *,
double *,
double *,
16332 extern double conti_n2__(
double ,
double ,
double *,
16333 double *,
double *,
double *,
double *);
16433 tksvpt = (p * 100.0) / t;
16435 w_wv__ = vmrh2o * 7.242923e16 * tksvpt;
16436 w_o2__ = vmro2 * 7.242923e16 * tksvpt;
16437 w_n2__ = vmrn2 * 7.242923e16 * tksvpt;
16438 w_other__ = (1.0000E0-vmrh2o-vmro2-vmrn2) * 7.242923e16 * tksvpt;
16441 wn = freq / 29979245800.0;
16451 initi_(p, t, &radct, &t0, &p0, &w_wv__, &w_o2__, &w_n2__, &w_other__, &
16452 xn0, &xn, &xn_wv__, &rhofac);
16461 rft = wn * tanh(radct * wn / (t * 2));
16468 os_wv = 1.0000e2 *
swv_(2, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf);
16474 os_wv = 1.0000e2 *
swv_(3, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf);
16480 of_wv = 1.0000e2 *
fwv_(2, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg);
16486 of_wv = 1.0000e2 *
fwv_(3, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg);
16493 oc_n2 = 1.0000e2 *
conti_n2__(wn, t, &t0, &w_n2__, &rft, &rhofac, &xcn2);
16510 double fwv_(
int ivc,
double wn,
double *w_wv__,
double *rft,
16511 double *xn,
double *xn_wv__,
double *xn0,
double *xfrg)
16514 double ret_val = 0.0e0;
16517 extern double fwv24_(
double ,
double *,
double *,
16518 double *,
double *,
double *,
double *),
16520 double *,
double *,
double *,
double *);
16525 if (ivc == 2 && *w_wv__ > 0.) {
16526 ret_val =
fwv24_(wn, w_wv__, rft, xn, xn_wv__, xn0, xfrg);
16531 if (ivc == 3 && *w_wv__ > 0.) {
16539 double *xn,
double *xn_wv__,
double *xn0,
double *xfrg)
16542 double ret_val=0.0e0;
16545 extern double xlgr_(
double *,
double *);
16547 double x[4], fscal, xf;
16553 for (i__ = 1; i__ <= 4; ++i__) {
16554 x[i__ - 1] =
fh2oa_1.fh2o[j + i__ - 3];
16560 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / *
16561 xn0)) * fscal * *xfrg;
16567 double fwv24_(
double wn,
double *w_wv__,
double *rft,
16568 double *xn,
double *xn_wv__,
double *xn0,
double *
16573 static double v0f1 = 350.;
16574 static double hwsqf1 = 4e4;
16575 static double betaf1 = 5e-9;
16576 static double factrf1 = -.7;
16577 static double v0f1a = 630.;
16578 static double hwsqf1a = 4225.;
16579 static double betaf1a = 2e-8;
16580 static double factrf1a = .75;
16581 static double v0f2 = 1130.;
16582 static double hwsqf2 = 108900.;
16583 static double betaf2 = 8e-11;
16584 static double factrf2 = -.97;
16585 static double v0f3 = 1975.;
16586 static double hwsqf3 = 62500.;
16587 static double betaf3 = 5e-6;
16588 static double factrf3 = -.65;
16591 double ret_val=0.0e0;
16595 extern double xlgr_(
double *,
double *);
16597 double x[4], fscal, xf, vf2, vf4, vf6;
16602 for (i__ = 1; i__ <= 4; ++i__) {
16603 x[i__ - 1] =
fh2oa_1.fh2o[j + i__ - 3];
16613 vf6 = vf2 * vf2 * vf2;
16614 fscal = factrf1 * (hwsqf1 / (vf2 + betaf1 * vf6 + hwsqf1)) + 1.;
16618 vf6 = vf2 * vf2 * vf2;
16619 fscal *= factrf1a * (hwsqf1a / (vf2 + betaf1a * vf6 + hwsqf1a)) + 1.;
16623 vf6 = vf2 * vf2 * vf2;
16624 fscal *= factrf2 * (hwsqf2 / (vf2 + betaf2 * vf6 + hwsqf2)) + 1.;
16629 fscal *= factrf3 * (hwsqf3 / (vf2 + betaf3 * vf4 + hwsqf3)) + 1.;
16630 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / *
16631 xn0)) * fscal * *xfrg;
16640 double swv_(
int ivc,
double wn,
double t,
double *t0,
16641 double *w_wv__,
double *rft,
double *xn,
double *
16642 xn_wv__,
double *xn0,
double *xslf)
16649 ,
double *,
double *,
double *,
double *,
16650 double *,
double *);
16651 extern double swv24_(
double ,
double ,
16652 double *,
double *,
double *,
double *,
16653 double *,
double *,
double *);
16658 if (ivc == 2 && *w_wv__ > 0.) {
16660 ret_val =
swv24_(wn, t, t0, w_wv__, rft, xn, xn_wv__, xn0, xslf);
16663 if (ivc == 3 && *w_wv__ > 0.) {
16675 double swv24_(
double wn,
double t,
double *t0,
double *
16676 w_wv__,
double *rft,
double * ,
double *xn_wv__,
16677 double *xn0,
double *xslf)
16681 static double v0s1 = 0.;
16682 static double hwsq1 = 1e4;
16683 static double betas1 = 1e-4;
16684 static double factrs1 = .688;
16685 static double v0s2 = 1050.;
16686 static double hwsq2 = 4e4;
16687 static double factrs2 = -.2333;
16688 static double v0s3 = 1310.;
16689 static double hwsq3 = 14400.;
16690 static double betas3 = 5e-6;
16691 static double factrs3 = -.15;
16694 double ret_val, d__1, d__2;
16698 extern double xlgr_(
double *,
double *);
16700 double x[4], xf, vs2, vs4;
16708 d__2 = (t - *t0) / (260. - *t0);
16709 x[0] =
sh2oa_1.swv296[j - 2] * pow(d__1, d__2);
16711 d__2 = (t - *t0) / (260. - *t0);
16712 x[1] =
sh2oa_1.swv296[j - 1] * pow(d__1, d__2);
16714 d__2 = (t - *t0) / (260. - *t0);
16715 x[2] =
sh2oa_1.swv296[j] * pow(d__1, d__2);
16717 d__2 = (t - *t0) / (260. - *t0);
16718 x[3] =
sh2oa_1.swv296[j + 1] * pow(d__1, d__2);
16728 sfac *= factrs1 * (hwsq1 / (d__1 * d__1 + betas1 * vs4 + hwsq1)) + 1.;
16732 sfac *= factrs2 * (hwsq2 / (vs2 + hwsq2)) + 1.;
16737 sfac *= factrs3 * (hwsq3 / (vs2 + betas3 * vs4 + hwsq3)) + 1.;
16738 ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) *
xlgr_(&xf, x) * 1e-20 *
16745 double *w_wv__,
double *rft,
double * ,
double *
16746 xn_wv__,
double *xn0,
double *xslf)
16749 double ret_val, d__1, d__2;
16753 extern double xlgr_(
double *,
double *);
16763 d__2 = (t - *t0) / (260. - *t0);
16764 x[0] =
sh2oa_1.swv296[j - 2] * pow(d__1, d__2);
16766 d__2 = (t - *t0) / (260. - *t0);
16767 x[1] =
sh2oa_1.swv296[j - 1] * pow(d__1, d__2);
16769 d__2 = (t - *t0) / (260. - *t0);
16770 x[2] =
sh2oa_1.swv296[j] * pow(d__1, d__2);
16772 d__2 = (t - *t0) / (260. - *t0);
16773 x[3] =
sh2oa_1.swv296[j + 1] * pow(d__1, d__2);
16777 ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) *
xlgr_(&xf, x) * 1e-20 *
16786 double *w_n2__,
double *rft,
double *rhofac,
double *
16791 static double v1 = -10.;
16792 static double dv = 5.;
16793 static double ct296[73] = { 4.303e-7,4.85e-7,4.979e-7,4.85e-7,
16794 4.303e-7,3.715e-7,3.292e-7,3.086e-7,2.92e-7,2.813e-7,2.804e-7,
16795 2.738e-7,2.726e-7,2.724e-7,2.635e-7,2.621e-7,2.547e-7,2.428e-7,
16796 2.371e-7,2.228e-7,2.1e-7,1.991e-7,1.822e-7,1.697e-7,1.555e-7,
16797 1.398e-7,1.281e-7,1.138e-7,1.012e-7,9.078e-8,7.879e-8,6.944e-8,
16798 6.084e-8,5.207e-8,4.54e-8,3.897e-8,3.313e-8,2.852e-8,2.413e-8,
16799 2.045e-8,1.737e-8,1.458e-8,1.231e-8,1.031e-8,8.586e-9,7.162e-9,
16800 5.963e-9,4.999e-9,4.226e-9,3.607e-9,3.09e-9,2.669e-9,2.325e-9,
16801 2.024e-9,1.783e-9,1.574e-9,1.387e-9,1.236e-9,1.098e-9,9.777e-10,
16802 8.765e-10,7.833e-10,7.022e-10,6.317e-10,5.65e-10,5.1e-10,
16803 4.572e-10,4.115e-10,3.721e-10,3.339e-10,3.005e-10,2.715e-10,
16805 static double ct220[73] = { 4.946e-7,5.756e-7,5.964e-7,5.756e-7,
16806 4.946e-7,4.145e-7,3.641e-7,3.482e-7,3.34e-7,3.252e-7,3.299e-7,
16807 3.206e-7,3.184e-7,3.167e-7,2.994e-7,2.943e-7,2.794e-7,2.582e-7,
16808 2.468e-7,2.237e-7,2.038e-7,1.873e-7,1.641e-7,1.474e-7,1.297e-7,
16809 1.114e-7,9.813e-8,8.309e-8,7.059e-8,6.068e-8,5.008e-8,4.221e-8,
16810 3.537e-8,2.885e-8,2.407e-8,1.977e-8,1.605e-8,1.313e-8,1.057e-8,
16811 8.482e-9,6.844e-9,5.595e-9,4.616e-9,3.854e-9,3.257e-9,2.757e-9,
16812 2.372e-9,2.039e-9,1.767e-9,1.548e-9,1.346e-9,1.181e-9,1.043e-9,
16813 9.11e-10,8.103e-10,7.189e-10,6.314e-10,5.635e-10,4.976e-10,
16814 4.401e-10,3.926e-10,3.477e-10,3.085e-10,2.745e-10,2.416e-10,
16815 2.155e-10,1.895e-10,1.678e-10,1.493e-10,1.31e-10,1.154e-10,
16816 1.019e-10,8.855e-11 };
16819 double ret_val, d__1, d__2;
16822 extern double xlgr_(
double *,
double *);
16847 if (*w_n2__ == 0.) {
16852 j = (int) ((wn - v1) / dv) + 1;
16853 d__1 = ct296[j - 2] / ct220[j - 2];
16854 d__2 = (t - *t0) / (220. - *t0);
16855 x[0] = ct296[j - 2] * pow(d__1, d__2);
16856 d__1 = ct296[j - 1] / ct220[j - 1];
16857 d__2 = (t - *t0) / (220. - *t0);
16858 x[1] = ct296[j - 1] * pow(d__1, d__2);
16859 d__1 = ct296[j] / ct220[j];
16860 d__2 = (t - *t0) / (220. - *t0);
16861 x[2] = ct296[j] * pow(d__1, d__2);
16862 d__1 = ct296[j + 1] / ct220[j + 1];
16863 d__2 = (t - *t0) / (220. - *t0);
16864 x[3] = ct296[j + 1] * pow(d__1, d__2);
16865 xf = (wn - (v1 + dv * (double) (j - 1))) / dv;
16866 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_n2__ / .26867775 * *rft * *rhofac) *
16889 b = *xf * .5 * (1. - *xf);
16890 a[0] = -b * (1. - *xf);
16891 a[1] = 1. - (3. - *xf * 2.) * *xf * *xf + b * *xf;
16892 a[2] = (3. - *xf * 2.) * *xf * *xf + b * (1. - *xf);
16894 ret_val = a[0] * x[1] + a[1] * x[2] + a[2] * x[3] + a[3] * x[4];
16902 double *t0,
double *p0,
double *w_wv__,
double *
16903 w_o2__,
double *w_n2__,
double *w_other__,
double *xn0,
16904 double *xn,
double *xn_wv__,
double *rhofac)
16908 static double wvmolmass = 18.016;
16909 static double drymolmass = 28.97;
16911 double wdry, ratiomix, wvpress;
16920 *xn0 = *p0 / (
consts_1.boltz * *t0) * 1e3;
16921 *xn = p / (
consts_1.boltz * t) * 1e3;
16922 wdry = *w_o2__ + *w_n2__ + *w_other__;
16923 ratiomix = *w_wv__ * wvmolmass / (wdry * drymolmass);
16924 wvpress = ratiomix / (ratiomix + wvmolmass / drymolmass) * p;
16925 *xn_wv__ = wvpress / (
consts_1.boltz * t) * 1e3;
16926 *rhofac = *w_n2__ / (wdry + *w_wv__) * (p / *p0) * (273.15 / t);