460 { 22.235080, 0.1090, 2.143, 27.84e-3},
461 { 67.813960, 0.0011, 8.730, 27.60e-3},
462 { 119.995940, 0.0007, 8.347, 27.00e-3},
463 { 183.310117, 2.3000, 0.653, 31.64e-3},
464 { 321.225644, 0.0464, 6.156, 21.40e-3},
465 { 325.152919, 1.5400, 1.515, 29.70e-3},
466 { 336.187000, 0.0010, 9.802, 26.50e-3},
467 { 380.197372, 11.9000, 1.018, 30.36e-3},
468 { 390.134508, 0.0044, 7.318, 19.00e-3},
469 { 437.346667, 0.0637, 5.015, 13.70e-3},
470 { 439.150812, 0.9210, 3.561, 16.40e-3},
471 { 443.018295, 0.1940, 5.015, 14.40e-3},
472 { 448.001075, 10.6000, 1.370, 23.80e-3},
473 { 470.888947, 0.3300, 3.561, 18.20e-3},
474 { 474.689127, 1.2800, 2.342, 19.80e-3},
475 { 488.491133, 0.2530, 2.814, 24.90e-3},
476 { 503.568532, 0.0374, 6.693, 11.50e-3},
477 { 504.482692, 0.0125, 6.693, 11.90e-3},
478 { 556.936002, 510.0000, 0.114, 30.00e-3},
479 { 620.700807, 5.0900, 2.150, 22.30e-3},
480 { 658.006500, 0.2740, 7.767, 30.00e-3},
481 { 752.033227, 250.0000, 0.336, 28.60e-3},
482 { 841.073593, 0.0130, 8.113, 14.10e-3},
483 { 859.865000, 0.1330, 7.989, 28.60e-3},
484 { 899.407000, 0.0550, 7.845, 28.60e-3},
485 { 902.555000, 0.0380, 8.360, 26.40e-3},
486 { 906.205524, 0.1830, 5.039, 23.40e-3},
487 { 916.171582, 8.5600, 1.369, 25.30e-3},
488 { 970.315022, 9.1600, 1.842, 24.00e-3},
489 { 987.926764, 138.0000, 0.178, 28.60e-3}};
493 const Numeric CC_MPM87 = 1.00000;
494 const Numeric CL_MPM87 = 1.00000;
495 const Numeric CW_MPM87 = 1.00000;
501 if ( model ==
"MPM87" )
507 else if ( model ==
"MPM87Lines" )
513 else if ( model ==
"MPM87Continuum" )
519 else if ( model ==
"user" )
528 os <<
"H2O-MPM87: ERROR! Wrong model values given.\n"
529 <<
"Valid models are: 'MPM87', 'MPM87Lines', 'MPM87Continuum', and 'user'" <<
'\n';
530 throw runtime_error(os.str());
532 out3 <<
"H2O-MPM87: (model=" << model <<
") parameter values in use:\n"
533 <<
" CC = " << CC <<
"\n"
534 <<
" CL = " << CL <<
"\n"
535 <<
" CW = " << CW <<
"\n";
539 const Index i_first = 0;
540 const Index i_last = 29;
546 assert ( n_p==abs_t.
nelem() );
547 assert ( n_p==vmr.
nelem() );
551 assert ( n_f==pxsec.
nrows() );
552 assert ( n_p==pxsec.
ncols() );
555 for (
Index i=0; i<n_p; ++i )
561 Numeric theta = (300.0 / abs_t[i]);
567 Numeric Nppc = CC * pwv_dummy * pow(theta, (
Numeric)3.0) * 1.000e-5
568 * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (
Numeric)7.8)) );
571 for (
Index s=0; s<n_f; ++s )
579 for (
Index l = i_first; l <= i_last; ++l )
582 Numeric strength = CL * pwv_dummy * mpm87[l][1]
583 * pow(theta,(
Numeric)3.5) * exp(mpm87[l][2]*(1.000-theta));
585 Numeric gam = CW * mpm87[l][3] *
586 ( (4.80 * pwv * pow(theta, (
Numeric)1.1)) +
587 ( pda * pow(theta, (
Numeric)0.6)) );
594 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) );
646 { 22.235080, 0.1090, 2.143, 28.11, 0.69, 4.80, 1.00},
647 { 67.813960, 0.0011, 8.735, 28.58, 0.69, 4.93, 0.82},
648 { 119.995940, 0.0007, 8.356, 29.48, 0.70, 4.78, 0.79},
649 { 183.310074, 2.3000, 0.668, 28.13, 0.64, 5.30, 0.85},
650 { 321.225644, 0.0464, 6.181, 23.03, 0.67, 4.69, 0.54},
651 { 325.152919, 1.5400, 1.540, 27.83, 0.68, 4.85, 0.74},
652 { 336.187000, 0.0010, 9.829, 26.93, 0.69, 4.74, 0.61},
653 { 380.197372, 11.9000, 1.048, 28.73, 0.69, 5.38, 0.84},
654 { 390.134508, 0.0044, 7.350, 21.52, 0.63, 4.81, 0.55},
655 { 437.346667, 0.0637, 5.050, 18.45, 0.60, 4.23, 0.48},
656 { 439.150812, 0.9210, 3.596, 21.00, 0.63, 4.29, 0.52},
657 { 443.018295, 0.1940, 5.050, 18.60, 0.60, 4.23, 0.50},
658 { 448.001075, 10.6000, 1.405, 26.32, 0.66, 4.84, 0.67},
659 { 470.888947, 0.3300, 3.599, 21.52, 0.66, 4.57, 0.65},
660 { 474.689127, 1.2800, 2.381, 23.55, 0.65, 4.65, 0.64},
661 { 488.491133, 0.2530, 2.853, 26.02, 0.69, 5.04, 0.72},
662 { 503.568532, 0.0374, 6.733, 16.12, 0.61, 3.98, 0.43},
663 { 504.482692, 0.0125, 6.733, 16.12, 0.61, 4.01, 0.45},
664 { 556.936002, 510.0000, 0.159, 32.10, 0.69, 4.11, 1.00},
665 { 620.700807, 5.0900, 2.200, 24.38, 0.71, 4.68, 0.68},
666 { 658.006500, 0.2740, 7.820, 32.10, 0.69, 4.14, 1.00},
667 { 752.033227, 250.0000, 0.396, 30.60, 0.68, 4.09, 0.84},
668 { 841.073593, 0.0130, 8.180, 15.90, 0.33, 5.76, 0.45},
669 { 859.865000, 0.1330, 7.989, 30.60, 0.68, 4.09, 0.84},
670 { 899.407000, 0.0550, 7.917, 29.85, 0.68, 4.53, 0.90},
671 { 902.555000, 0.0380, 8.432, 28.65, 0.70, 5.10, 0.95},
672 { 906.205524, 0.1830, 5.111, 24.08, 0.70, 4.70, 0.53},
673 { 916.171582, 8.5600, 1.442, 26.70, 0.70, 4.78, 0.78},
674 { 970.315022, 9.1600, 1.920, 25.50, 0.64, 4.94, 0.67},
675 { 987.926764, 138.0000, 0.258, 29.85, 0.68, 4.55, 0.90}};
680 const Numeric CC_MPM89 = 1.00000;
681 const Numeric CL_MPM89 = 1.00000;
682 const Numeric CW_MPM89 = 1.00000;
688 if ( model ==
"MPM89" )
694 else if ( model ==
"MPM89Lines" )
700 else if ( model ==
"MPM89Continuum" )
706 else if ( model ==
"user" )
715 os <<
"H2O-MPM89: ERROR! Wrong model values given.\n"
716 <<
"Valid models are: 'MPM89', 'MPM89Lines', 'MPM89Continuum', and 'user'" <<
'\n';
717 throw runtime_error(os.str());
719 out3 <<
"H2O-MPM89: (model=" << model <<
") parameter values in use:\n"
720 <<
" CC = " << CC <<
"\n"
721 <<
" CL = " << CL <<
"\n"
722 <<
" CW = " << CW <<
"\n";
726 const Index i_first = 0;
727 const Index i_last = 29;
733 assert ( n_p==abs_t.
nelem() );
734 assert ( n_p==vmr.
nelem() );
738 assert ( n_f==pxsec.
nrows() );
739 assert ( n_p==pxsec.
ncols() );
742 for (
Index i=0; i<n_p; ++i )
748 Numeric theta = (300.0 / abs_t[i]);
754 Numeric Nppc = CC * pwv_dummy * pow(theta, (
Numeric)3.0) * 1.000e-5
755 * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (
Numeric)7.5)) );
758 for (
Index s=0; s<n_f; ++s )
766 for (
Index l = i_first; l <= i_last; ++l )
769 Numeric strength = CL * pwv_dummy * mpm89[l][1]
770 * pow(theta, (
Numeric)3.5) * exp(mpm89[l][2]*(1.000-theta));
772 Numeric gam = CW * mpm89[l][3] * 0.001
773 * ( mpm89[l][5] * pwv * pow(theta, mpm89[l][6]) +
774 pda * pow(theta, mpm89[l][4]) );
783 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) );
872 { 22235.0800, 0.10947, 2.1678, 2.811, 4.80, 0.69, 0.61},
873 { 67803.9600, 0.00111, 8.7518, 2.858, 4.93, 0.69, 0.82},
874 { 119995.9400, 0.00072, 8.3688, 2.948, 4.78, 0.70, 0.79},
875 { 183310.1170, 2.30351, 0.6794, 3.050, 5.30, 0.76, 0.85},
876 { 321225.6400, 0.04646, 6.1792, 2.303, 4.69, 0.67, 0.54},
877 { 325152.9190, 1.53869, 1.5408, 2.783, 4.85, 0.68, 0.74},
878 { 336227.6200, 0.00099, 9.8233, 2.693, 4.74, 0.64, 0.61},
879 { 380197.3720, 11.9079, 1.0439, 2.873, 5.38, 0.72, 0.89},
880 { 390134.5080, 0.00437, 7.3408, 2.152, 4.81, 0.63, 0.55},
881 { 437346.6670, 0.06378, 5.0384, 1.845, 4.23, 0.60, 0.48},
882 { 439150.8120, 0.92144, 3.5853, 2.100, 4.29, 0.63, 0.62},
883 { 443018.2950, 0.19384, 5.0384, 1.860, 4.23, 0.60, 0.50},
884 { 448001.0750, 10.6190, 1.3952, 2.632, 4.84, 0.66, 0.67},
885 { 470888.9470, 0.33005, 3.5853, 2.152, 4.57, 0.66, 0.65},
886 { 474689.1270, 1.27660, 2.3674, 2.355, 4.65, 0.65, 0.64},
887 { 488491.1330, 0.25312, 2.8391, 2.602, 5.04, 0.69, 0.72},
888 { 503568.5320, 0.03746, 6.7158, 1.612, 3.98, 0.61, 0.43},
889 { 504482.6920, 0.01250, 6.7158, 1.612, 4.01, 0.61, 0.45},
890 { 547676.4400, 1.01467, 0.1427, 2.600, 4.50, 0.69, 1.00},
891 { 552020.9600, 0.18668, 0.1452, 2.600, 4.50, 0.69, 1.00},
892 { 556936.0020, 510.51086, 0.1405, 3.210, 4.11, 0.69, 1.00},
893 { 620700.8070, 5.10539, 2.3673, 2.438, 4.68, 0.71, 0.68},
894 { 645905.6200, 0.00667, 8.6065, 1.800, 4.00, 0.60, 0.43},
895 { 658006.5500, 0.27451, 7.7889, 3.210, 4.14, 0.69, 1.00},
896 { 752033.2270, 249.68466, 0.3625, 3.060, 4.09, 0.68, 0.84},
897 { 841051.1620, 0.01308, 8.1347, 1.590, 5.76, 0.33, 0.45},
898 { 859965.6490, 0.13326, 8.0114, 3.060, 4.09, 0.68, 0.84},
899 { 899302.1710, 0.05492, 7.8676, 2.985, 4.53, 0.68, 0.90},
900 { 902609.4360, 0.03854, 8.3823, 2.865, 5.10, 0.70, 0.95},
901 { 906206.1180, 0.18323, 5.0628, 2.408, 4.70, 0.70, 0.53},
902 { 916171.5820, 8.56444, 1.3943, 2.670, 4.78, 0.70, 0.78},
903 { 923113.1900, 0.00784, 10.2441, 2.900, 5.00, 0.66, 0.67},
904 { 970315.0220, 9.16280, 1.8673, 2.550, 4.94, 0.64, 0.67},
905 { 987926.7640, 138.28461, 0.2045, 2.985, 4.55, 0.68, 0.90},
907 { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}};
915 const Numeric CC_MPM02 = 1.00000;
916 const Numeric CL_MPM02 = 1.00000;
917 const Numeric CW_MPM02 = 1.00000;
926 if ( model ==
"MPM02" )
934 else if ( model ==
"MPM02Lines" )
942 else if ( model ==
"MPM02Continuum" )
950 else if ( model ==
"user" )
962 os <<
"H2O-MPM02: ERROR! Wrong model values given.\n"
963 <<
"Valid models are: 'MPM02', 'MPM02Lines', 'MPM02Continuum', and 'user'" <<
'\n';
964 throw runtime_error(os.str());
966 out3 <<
"H2O-MPM02: (model=" << model <<
") parameter values in use:\n"
967 <<
" CC = " << CC <<
"\n"
968 <<
" CL = " << CL <<
"\n"
969 <<
" CW = " << CW <<
"\n";
976 assert ( n_p==abs_t.
nelem() );
977 assert ( n_p==vmr.
nelem() );
981 assert ( n_f==pxsec.
nrows() );
982 assert ( n_p==pxsec.
ncols() );
985 for (
Index i=0; i<n_p; ++i )
991 Numeric theta = (300.0 / abs_t[i]);
999 for (
Index s=0; s<n_f; ++s )
1004 for (
Index l = i_first; l <= i_last; ++l )
1010 if ( (l >= 0) && (l <= 33) )
1012 strength = CL * pwv_dummy * mpm02[l][1] *
1013 pow(theta, (
Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta));
1015 gam = CW * mpm02[l][3] * 0.001 *
1016 ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) +
1017 ( pda * pow(theta, mpm02[l][5])) );
1021 strength = CC * pwv_dummy * mpm02[l][1] *
1022 pow(theta, (
Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta));
1024 gam = mpm02[l][3] * 0.001 *
1025 ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) +
1026 ( pda * pow(theta, mpm02[l][5])) );
1031 os <<
"H2O-MPM02: wrong line number detected l=" << l <<
" (0-34)\n";
1032 throw runtime_error(os.str());
1109 const Numeric mpm93[35][7] = {
1110 { 22.235080, 0.01130, 2.143, 2.811, 4.80, 0.69, 1.00},
1111 { 67.803960, 0.00012, 8.735, 2.858, 4.93, 0.69, 0.82},
1112 { 119.995940, 0.00008, 8.356, 2.948, 4.78, 0.70, 0.79},
1113 { 183.310091, 0.24200, 0.668, 3.050, 5.30, 0.64, 0.85},
1114 { 321.225644, 0.00483, 6.181, 2.303, 4.69, 0.67, 0.54},
1115 { 325.152919, 0.14990, 1.540, 2.783, 4.85, 0.68, 0.74},
1116 { 336.222601, 0.00011, 9.829, 2.693, 4.74, 0.69, 0.61},
1117 { 380.197372, 1.15200, 1.048, 2.873, 5.38, 0.54, 0.89},
1118 { 390.134508, 0.00046, 7.350, 2.152, 4.81, 0.63, 0.55},
1119 { 437.346667, 0.00650, 5.050, 1.845, 4.23, 0.60, 0.48},
1120 { 439.150812, 0.09218, 3.596, 2.100, 4.29, 0.63, 0.52},
1121 { 443.018295, 0.01976, 5.050, 1.860, 4.23, 0.60, 0.50},
1122 { 448.001075, 1.03200, 1.405, 2.632, 4.84, 0.66, 0.67},
1123 { 470.888947, 0.03297, 3.599, 2.152, 4.57, 0.66, 0.65},
1124 { 474.689127, 0.12620, 2.381, 2.355, 4.65, 0.65, 0.64},
1125 { 488.491133, 0.02520, 2.853, 2.602, 5.04, 0.69, 0.72},
1126 { 503.568532, 0.00390, 6.733, 1.612, 3.98, 0.61, 0.43},
1127 { 504.482692, 0.00130, 6.733, 1.612, 4.01, 0.61, 0.45},
1130 { 547.676440, 0.97010*0.00199983, 0.114, 2.600, 4.50, 0.70, 1.00},
1131 { 552.020960, 1.47700*0.00037200, 0.114, 2.600, 4.50, 0.70, 1.00},
1132 { 556.936002, 48.74000, 0.159, 3.210, 4.11, 0.69, 1.00},
1133 { 620.700807, 0.50120, 2.200, 2.438, 4.68, 0.71, 0.68},
1134 { 645.866155, 0.00713, 8.580, 1.800, 4.00, 0.60, 0.50},
1135 { 658.005280, 0.03022, 7.820, 3.210, 4.14, 0.69, 1.00},
1136 { 752.033227, 23.96000, 0.396, 3.060, 4.09, 0.68, 0.84},
1137 { 841.053973, 0.00140, 8.180, 1.590, 5.76, 0.33, 0.45},
1138 { 859.962313, 0.01472, 7.989, 3.060, 4.09, 0.68, 0.84},
1139 { 899.306675, 0.00605, 7.917, 2.985, 4.53, 0.68, 0.90},
1140 { 902.616173, 0.00426, 8.432, 2.865, 5.10, 0.70, 0.95},
1141 { 906.207325, 0.01876, 5.111, 2.408, 4.70, 0.70, 0.53},
1142 { 916.171582, 0.83400, 1.442, 2.670, 4.78, 0.70, 0.78},
1143 { 923.118427, 0.00869, 10.220, 2.900, 5.00, 0.70, 0.80},
1144 { 970.315022, 0.89720, 1.920, 2.550, 4.94, 0.64, 0.67},
1145 { 987.926764, 13.21000, 0.258, 2.985, 4.55, 0.68, 0.90},
1147 { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}};
1155 const Numeric CC_MPM93 = 1.00000;
1156 const Numeric CL_MPM93 = 1.00000;
1157 const Numeric CW_MPM93 = 1.00000;
1166 if ( model ==
"MPM93" )
1174 else if ( model ==
"MPM93Lines" )
1182 else if ( model ==
"MPM93Continuum" )
1190 else if ( model ==
"user" )
1202 os <<
"H2O-MPM93: ERROR! Wrong model values given.\n"
1203 <<
"Valid models are: 'MPM93', 'MPM93Lines', 'MPM93Continuum', and 'user'" <<
'\n';
1204 throw runtime_error(os.str());
1206 out3 <<
"H2O-MPM93: (model=" << model <<
") parameter values in use:\n"
1207 <<
" CC = " << CC <<
"\n"
1208 <<
" CL = " << CL <<
"\n"
1209 <<
" CW = " << CW <<
"\n";
1216 assert ( n_p==abs_t.
nelem() );
1217 assert ( n_p==vmr.
nelem() );
1221 assert ( n_f==pxsec.
nrows() );
1222 assert ( n_p==pxsec.
ncols() );
1225 for (
Index i=0; i<n_p; ++i )
1231 Numeric theta = (300.0 / abs_t[i]);
1239 for (
Index s=0; s<n_f; ++s )
1244 for (
Index l = i_first; l <= i_last; ++l )
1250 if ( (l >= 0) && (l <= 33) )
1252 strength = CL * pwv_dummy * mpm93[l][1]
1253 * pow(theta, (
Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta));
1255 gam = CW * mpm93[l][3] * 0.001 *
1256 ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) +
1257 ( pda * pow(theta, mpm93[l][5])) );
1261 strength = CC * pwv_dummy * mpm93[l][1]
1262 * pow(theta, (
Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta));
1264 gam = mpm93[l][3] * 0.001 *
1265 ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) +
1266 ( pda * pow(theta, mpm93[l][5])) );
1271 os <<
"H2O-MPM93: wrong line number detected l=" << l <<
" (0-34)\n";
1272 throw runtime_error(os.str());
1347 const Numeric PWRfl[15] = { 22.2350800, 183.3101170, 321.2256400, 325.1529190, 380.1973720,
1348 439.1508120, 443.0182950, 448.0010750, 470.8889470, 474.6891270,
1349 488.4911330, 556.9360020, 620.7008070, 752.0332270, 916.1715820 };
1351 const Numeric PWRs1[15] = { 1.31e-14, 2.273e-12, 8.036e-14, 2.694e-12, 2.438e-11,
1352 2.179e-12, 4.624e-13, 2.562e-11, 8.369e-13, 3.263e-12,
1353 6.659e-13, 1.531e-9, 1.707e-11, 1.011e-9, 4.227e-11 };
1355 const Numeric PWRb2[15] = { 2.144, 0.668, 6.179, 1.541, 1.048,
1356 3.595, 5.048, 1.405, 3.597, 2.379,
1357 2.852, 0.159, 2.391, 0.396, 1.441 };
1359 const Numeric PWRw3[15] = { 0.00281, 0.00281, 0.00230, 0.00278, 0.00287,
1360 0.00210, 0.00186, 0.00263, 0.00215, 0.00236,
1361 0.00260, 0.00321, 0.00244, 0.00306, 0.00267 };
1363 const Numeric PWRx[15] = { 0.69, 0.64, 0.67, 0.68, 0.54,
1364 0.63, 0.60, 0.66, 0.66, 0.65,
1365 0.69, 0.69, 0.71, 0.68, 0.70 };
1367 const Numeric PWRws[15] = { 0.01349, 0.01491, 0.01080, 0.01350, 0.01541,
1368 0.00900, 0.00788, 0.01275, 0.00983, 0.01095,
1369 0.01313, 0.01320, 0.01140, 0.01253, 0.01275 };
1372 const Numeric PWRxs[15] = { 0.61, 0.85, 0.54, 0.74, 0.89,
1373 0.52, 0.50, 0.67, 0.65, 0.64,
1374 0.72, 1.00, 0.68, 0.84, 0.78 };
1378 const Numeric CC_PWR98 = 1.00000;
1379 const Numeric CL_PWR98 = 1.00000;
1380 const Numeric CW_PWR98 = 1.00000;
1386 if ( model ==
"Rosenkranz" )
1392 else if ( model ==
"RosenkranzLines" )
1398 else if ( model ==
"RosenkranzContinuum" )
1404 else if ( model ==
"user" )
1413 os <<
"H2O-PWR98: ERROR! Wrong model values given.\n"
1414 <<
"Valid models are: 'Rosenkranz', 'RosenkranzLines', 'RosenkranzContinuum', and 'user'" <<
'\n';
1415 throw runtime_error(os.str());
1417 out3 <<
"H2O-PWR98: (model=" << model <<
") parameter values in use:\n"
1418 <<
" CC = " << CC <<
"\n"
1419 <<
" CL = " << CL <<
"\n"
1420 <<
" CW = " << CW <<
"\n";
1427 assert ( n_p==abs_t.
nelem() );
1428 assert ( n_p==vmr.
nelem() );
1432 assert ( n_f==pxsec.
nrows() );
1433 assert ( n_p==pxsec.
ncols() );
1436 for (
Index i=0; i<n_p; ++i )
1451 Numeric den_dummy = 3.335e16 * (2.1667 * abs_p[i] / abs_t[i]);
1453 Numeric ti = (300.0 / abs_t[i]);
1458 * ( (0.543 * pda) + (17.96 * pvap * pow(ti, (
Numeric)4.5)) );
1461 for (
Index s=0; s<n_f; ++s )
1469 for (
Index l = 0; l < 15; l++)
1471 Numeric width = ( CW * PWRw3[l] * pda * pow(ti, PWRx[l]) ) +
1472 ( PWRws[l] * pvap * pow(ti, PWRxs[l]));
1476 Numeric strength = CL * PWRs1[l] * ti2 * exp(PWRb2[l]*(1.0 - ti));
1481 Numeric base = width / (wsq + 562500.000);
1484 if (fabs(df0) < 750.0) res += width / (df0*df0 + wsq) - base;
1485 if (fabs(df1) < 750.0) res += width / (df1*df1 + wsq) - base;
1486 sum += strength * res * pow( (ff/PWRfl[l]),
1490 Numeric absl = 0.3183e-4 * den_dummy * sum;
1493 pxsec(s,i) += 1.000e-3 * ( absl + (con * ff * ff) );
1542 const Numeric CC_CP98 = 1.2369;
1543 const Numeric CL_CP98 = 1.0639;
1544 const Numeric CW_CP98 = 1.0658;
1549 if ( model ==
"CruzPol" )
1555 else if ( model ==
"CruzPolLine" )
1561 else if ( model ==
"CruzPolContinuum" )
1567 else if ( model ==
"user" )
1576 os <<
"H2O-CP98: ERROR! Wrong model values given.\n"
1577 <<
"Valid models are: 'CruzPol', 'CruzPolLine', 'CruzPolContinuum', and 'user'" <<
"\n";
1578 throw runtime_error(os.str());
1580 out3 <<
"H2O-CP98: (model=" << model <<
") parameter values in use:\n"
1581 <<
" CC = " << CC <<
"\n"
1582 <<
" CL = " << CL <<
"\n"
1583 <<
" CW = " << CW <<
"\n";
1589 assert ( n_p==abs_t.
nelem() );
1590 assert ( n_p==vmr.
nelem() );
1594 assert ( n_f==pxsec.
nrows() );
1595 assert ( n_p==pxsec.
ncols() );
1598 for (
Index i=0; i<n_p; ++i )
1604 Numeric theta = (300.0 / abs_t[i]);
1611 * exp(2.143*(1.0-theta));
1614 ( (pda * pow(theta,(
Numeric)0.6))
1615 + (4.80 * pwv * pow(theta,(
Numeric)1.1)) );
1618 * ( (0.113 * pda) + (3.57 * pwv * pow(theta,(
Numeric)7.5)) );
1621 for (
Index s=0; s<n_f; ++s )
1627 pxsec(s,i) += 4.1907e-5 * ff * ( (TL * TSf) + (ff * TC) ) / vmr[i];
1673 const Numeric Cs_PWR = 1.796e-33;
1676 const Numeric Cs_CP = 1.851e-33;
1679 const Numeric Cs_MPM89 = 1.500e-33;
1682 const Numeric Cs_MPM87 = 1.500e-33;
1688 if ( model ==
"Rosenkranz" )
1693 else if ( model ==
"CruzPol" )
1698 else if ( model ==
"MPM89" )
1703 else if ( model ==
"MPM87" )
1708 else if ( model ==
"user" )
1716 os <<
"H2O-SelfContStandardType: ERROR! Wrong model values given.\n"
1717 <<
"allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" <<
'\n';
1718 throw runtime_error(os.str());
1720 out3 <<
"H2O-SelfContStandardType: (model=" << model <<
") parameter values in use:\n"
1721 <<
" C_s = " << C <<
"\n"
1722 <<
" x_s = " << x <<
"\n";
1730 assert ( n_p==abs_t.
nelem() );
1731 assert ( n_p==vmr.
nelem() );
1735 assert ( n_f==pxsec.
nrows() );
1736 assert ( n_p==pxsec.
ncols() );
1739 for (
Index i=0; i<n_p; ++i )
1746 * pow( abs_p[i], (
Numeric)2. ) * vmr[i];
1749 for (
Index s=0; s<n_f; ++s )
1751 pxsec(s,i) += dummy * pow( f_grid[s], (
Numeric)2. );
1797 const Numeric Cf_PWR = 5.43e-35 ;
1800 const Numeric Cf_CP = 5.85e-35;
1803 const Numeric Cf_MPM89 = 4.74e-35;
1806 const Numeric Cf_MPM87 = 4.74e-35;
1813 if ( model ==
"Rosenkranz" )
1818 else if ( model ==
"CruzPol" )
1823 else if ( model ==
"MPM89" )
1828 else if ( model ==
"MPM87" )
1833 else if ( model ==
"user" )
1841 os <<
"H2O-ForeignContStandardType: ERROR! Wrong model values given.\n"
1842 <<
"allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" <<
'\n';
1843 throw runtime_error(os.str());
1845 out3 <<
"H2O-ForeignContStandardType: (model=" << model <<
") parameter values in use:\n"
1846 <<
" C_s = " << C <<
"\n"
1847 <<
" x_s = " << x <<
"\n";
1853 assert ( n_p==abs_t.
nelem() );
1854 assert ( n_p==vmr.
nelem() );
1858 assert ( n_f==pxsec.
nrows() );
1859 assert ( n_p==pxsec.
ncols() );
1862 for (
Index i=0; i<n_p; ++i )
1865 Numeric pdry = abs_p[i] * (1.000e0-vmr[i]);
1873 for (
Index s=0; s<n_f; ++s )
1875 pxsec(s,i) += dummy * pow( f_grid[s], (
Numeric)2. );
1924 const Numeric Cf_MaTipping = 1.8590e-35;
1925 const Numeric xf_MaTipping = 4.6019;
1931 if ( model ==
"MaTipping" )
1936 else if ( model ==
"user" )
1944 os <<
"H2O-MaTipping_H2O_foreign_continuum: ERROR! Wrong model values given.\n"
1945 <<
"allowed models are: 'MaTipping', 'user'" <<
'\n';
1946 throw runtime_error(os.str());
1948 out3 <<
"H2O-MaTipping_H2O_foreign_continuum: (model=" << model <<
") parameter values in use:\n"
1949 <<
" C_s = " << C <<
"\n"
1950 <<
" x_s = " << x <<
"\n";
1956 assert ( n_p==abs_t.
nelem() );
1957 assert ( n_p==vmr.
nelem() );
1961 assert ( n_f==pxsec.
nrows() );
1962 assert ( n_p==pxsec.
ncols() );
1965 for (
Index i=0; i<n_p; ++i )
1968 Numeric pdry = abs_p[i] * (1.000e0-vmr[i]);
1976 for (
Index s=0; s<n_f; ++s )
1978 pxsec(s,i) += dummy * pow( f_grid[s], (
Numeric)2.0389 );
2010 int J = (int) ((VI-V1A)*RECDVA + ONEPL) ;
2013 Numeric C = (3.00e0-2.00e0*P) * P * P;
2014 Numeric B = 0.500e0 * P * (1.00e0-P);
2019 A[J] * (1.00e0-C+B2) +
2051 int J = (int) ((VI-V1A)*RECDVA + ONEPL) ;
2054 Numeric C = (3.00e0-2.00e0*P) * P * P;
2055 Numeric B = 0.500e0 * P * (1.00e0-P);
2060 A[J] * (1.00e0-C+B2) +
2112 if (XVIOKT <= 0.01e0)
2114 RADFN = 0.500e0 * XVIOKT * XVI;
2116 else if (XVIOKT <= 10.0e0)
2118 Numeric EXPVKT = exp(-XVIOKT);
2119 RADFN = XVI * (1.00e0-EXPVKT) / (1.00e0+EXPVKT);
2175 if ((model !=
"user") && (model !=
"CKD222"))
2179 <<
"CKDv2.2.2 H2O self continuum:\n"
2180 <<
"INPUT model name is: " << model <<
".\n"
2181 <<
"VALID model names are user and CKD222\n";
2182 throw runtime_error(os.str());
2187 Numeric ScalingFac = 1.0000e0;
2188 if ( model ==
"user" )
2199 assert ( n_p==abs_t.
nelem() );
2200 assert ( n_p==vmr.
nelem() );
2204 assert ( n_f==pxsec.
nrows() );
2205 assert ( n_p==pxsec.
ncols() );
2210 const Numeric xLosmt = 2.686763e19;
2216 const Numeric ALPHA2 = 200.000 * 200.000;
2217 const Numeric ALPHS2 = 120.000 * 120.000;
2218 const Numeric BETAS = 5.000e-06;
2224 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708,
2225 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367,
2226 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134,
2227 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295,
2228 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560,
2229 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195,
2230 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620,
2231 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000,
2232 1.00000,1.00000,1.00000};
2244 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2245 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2247 out3 <<
"WARNING:\n"
2248 <<
" CKD2.2.2 H2O self continuum:\n"
2249 <<
" input frequency vector exceeds range of model validity\n"
2260 <<
"CKD2.2.2 H2O self continuum:\n"
2261 <<
"parameter V1 not the same for different ref. temperatures.\n";
2262 throw runtime_error(os.str());
2268 <<
"CKD2.2.2 H2O self continuum:\n"
2269 <<
"parameter V2 not the same for different ref. temperatures.\n";
2270 throw runtime_error(os.str());
2276 <<
"CKD2.2.2 H2O self continuum:\n"
2277 <<
"parameter DV not the same for different ref. temperatures.\n";
2278 throw runtime_error(os.str());
2284 <<
"CKD2.2.2 H2O self continuum:\n"
2285 <<
"parameter NPT not the same for different ref. temperatures.\n";
2286 throw runtime_error(os.str());
2309 out3 <<
"WARNING:\n"
2310 <<
" CKD2.2.2 H2O self continuum:\n"
2311 <<
" no elements of internal continuum coefficients could be found for the\n"
2312 <<
" input frequency range.\n"
2313 <<
" Leave the function without calculating the absorption.";
2320 for (
Index J = 1 ; J <= NPTC ; ++J)
2342 for (
Index i = 0 ; i < n_p ; ++i )
2347 Numeric Pave = (abs_p[i]*1.000e-2);
2352 Numeric Rh2o = Patm * (TO/Tave);
2353 Numeric Tfac = (Tave-TO)/(260.0-TO);
2354 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
2356 Numeric XKT = Tave / 1.4387752e0;
2363 for (
Index J = 1 ; J <= NPTC ; ++J)
2367 if (SH2OT0[J] > 0.0e0)
2369 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
2372 if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) )
2374 int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0);
2375 if ( (JFAC >= 0) && (JFAC <= 50) )
2383 VS2 = (VJ-V0S) * (VJ-V0S);
2386 ( 1.000e0 + 0.3000e0 * (1.000e4 / ((VJ*VJ) + 1.000e4)) ) *
2387 ( 1.000e0 - 0.2333e0 * (ALPHA2 / ((VJ-1050.000e0)*(VJ-1050.000e0) + ALPHA2)) ) *
2388 ( 1.000e0 - FACTRS * (ALPHS2 / (VS2+(BETAS*VS2*VS2)+ALPHS2)) );
2396 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2403 for (
Index s = 0 ; s < n_f ; ++s )
2413 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2463 if ((model !=
"user") && (model !=
"CKD222"))
2467 <<
"CKDv2.2.2 H2O foreign continuum:\n"
2468 <<
"INPUT model name is: " << model <<
".\n"
2469 <<
"VALID model names are user and CKD222\n";
2470 throw runtime_error(os.str());
2475 Numeric ScalingFac = 1.0000e0;
2476 if ( model ==
"user" )
2487 assert ( n_p==abs_t.
nelem() );
2488 assert ( n_p==vmr.
nelem() );
2492 assert ( n_f==pxsec.
nrows() );
2493 assert ( n_p==pxsec.
ncols() );
2498 const Numeric xLosmt = 2.686763e19;
2501 const Numeric PO = 1013.000e0;
2504 const Numeric HWSQF = 330.000e0 * 330.000e0;
2505 const Numeric BETAF = 8.000e-11;
2506 const Numeric V0F = 1130.000e0;
2507 const Numeric FACTRF = 0.970e0;
2509 const Numeric V0F2 = 1900.000e0;
2510 const Numeric HWSQF2 = 150.000e0 * 150.000e0;
2511 const Numeric BETA2 = 3.000e-6;
2523 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2524 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2526 out3 <<
"WARNING:\n"
2527 <<
" CKD2.2.2 H2O foreign continuum:\n"
2528 <<
" input frequency vector exceeds range of model validity\n"
2554 out3 <<
"WARNING:\n"
2555 <<
" CKD2.2.2 H2O foreign continuum:\n"
2556 <<
" no elements of internal continuum coefficients could be found for the\n"
2557 <<
" input frequency range.\n"
2558 <<
" Leave the function without calculating the absorption.";
2564 for (
Index J = 1 ; J <= NPTC ; ++J)
2586 for (
Index i = 0 ; i < n_p ; ++i )
2591 Numeric Pave = (abs_p[i]*1.000e-2);
2594 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
2595 Numeric RFRGN = PFRGN * (TO/Tave);
2596 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
2598 Numeric XKT = Tave / 1.4387752;
2605 for (
Index J = 1 ; J <= NPTC ; ++J)
2610 VF2 = (VJ-V0F) * (VJ-V0F);
2611 VF6 = VF2 * VF2 * VF2;
2612 FSCAL = (1.000e0 - FACTRF*(HWSQF/(VF2+(BETAF*VF6)+HWSQF)));
2614 VF2 = (VJ-V0F2) * (VJ-V0F2);
2616 FSCAL = FSCAL * (1.000e0 - 0.600e0*(HWSQF2/(VF2 + BETA2*VF4 + HWSQF2)));
2618 FH2O = FH2OT0[J] * FSCAL;
2623 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2630 for (
Index s = 0 ; s < n_f ; ++s )
2634 if ( (V > 0.000e0) && (V < VABS_max) )
2640 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2689 if ((model !=
"user") && (model !=
"CKD242"))
2693 <<
"CKDv2.4.2 H2O self continuum:\n"
2694 <<
"INPUT model name is: " << model <<
".\n"
2695 <<
"VALID model names are user and CKD242\n";
2696 throw runtime_error(os.str());
2701 Numeric ScalingFac = 1.0000e0;
2702 if ( model ==
"user" )
2713 assert ( n_p==abs_t.
nelem() );
2714 assert ( n_p==vmr.
nelem() );
2718 assert ( n_f==pxsec.
nrows() );
2719 assert ( n_p==pxsec.
ncols() );
2724 const Numeric xLosmt = 2.686763e19;
2730 const Numeric V0S1 = 0.000e+00;
2731 const Numeric HWSQ1 = (1.000e+02 * 1.000e+02);
2732 const Numeric BETAS1 = 1.000e-04;
2733 const Numeric FACTRS1 = 0.688e+00;
2735 const Numeric V0S2 = 1.050e+03;
2736 const Numeric HWSQ2 = (2.000e+02 * 2.000e+02);
2737 const Numeric FACTRS2 = -0.2333e+00;
2739 const Numeric V0S3 = 1.310e+03;
2740 const Numeric HWSQ3 = (1.200e+02 * 1.200e+02);
2741 const Numeric BETAS3 = 5.000e-06;
2742 const Numeric FACTRS3 = -0.150e+00;
2745 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708,
2746 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367,
2747 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134,
2748 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295,
2749 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560,
2750 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195,
2751 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620,
2752 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000,
2753 1.00000,1.00000,1.00000};
2765 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
2766 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
2768 out3 <<
"WARNING:\n"
2769 <<
" CKD2.4.2 H2O self continuum:\n"
2770 <<
" input frequency vector exceeds range of model validity\n"
2781 <<
"CKD2.4.2 H2O self continuum:\n"
2782 <<
"parameter V1 not the same for different ref. temperatures.\n";
2783 throw runtime_error(os.str());
2789 <<
"CKD2.4.2 H2O self continuum:\n"
2790 <<
"parameter V2 not the same for different ref. temperatures.\n";
2791 throw runtime_error(os.str());
2797 <<
"CKD2.4.2 H2O self continuum:\n"
2798 <<
"parameter DV not the same for different ref. temperatures.\n";
2799 throw runtime_error(os.str());
2805 <<
"CKD2.4.2 H2O self continuum:\n"
2806 <<
"parameter NPT not the same for different ref. temperatures.\n";
2807 throw runtime_error(os.str());
2830 out3 <<
"WARNING:\n"
2831 <<
" CKDv2.4.2 H2O self continuum:\n"
2832 <<
" no elements of internal continuum coefficients could be found for the\n"
2833 <<
" input frequency range.\n"
2834 <<
" Leave the function without calculating the absorption.";
2841 for (
Index J = 1 ; J <= NPTC ; ++J)
2863 for (
Index i = 0 ; i < n_p ; ++i )
2868 Numeric Pave = (abs_p[i]*1.000e-2);
2873 Numeric Rh2o = Patm * (TO/Tave);
2874 Numeric Tfac = (Tave-TO)/(260.0-TO);
2875 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
2877 Numeric XKT = Tave / 1.4387752e0;
2884 for (
Index J = 1 ; J <= NPTC ; ++J)
2888 if (SH2OT0[J] > 0.0e0)
2890 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
2893 if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) )
2895 int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0);
2896 if ( (JFAC >= 0) && (JFAC <= 50) )
2904 VS2 = (VJ-V0S1) * (VJ-V0S1);
2907 (1.000e0 + FACTRS1*(HWSQ1/((VJ*VJ)+(BETAS1*VS4)+HWSQ1)));
2909 VS2 = (VJ-V0S2) * (VJ-V0S2);
2911 (1.000e0 + FACTRS2*(HWSQ2/(VS2+HWSQ2)));
2913 VS2 = (VJ-V0S3) * (VJ-V0S3);
2916 (1.000e0 + FACTRS3*(HWSQ3/(VS2+(BETAS3*VS4)+HWSQ3)));
2924 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
2931 for (
Index s = 0 ; s < n_f ; ++s )
2941 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
2990 if ((model !=
"user") && (model !=
"CKD242"))
2994 <<
"CKDv2.4.2 H2O foreign continuum:\n"
2995 <<
"INPUT model name is: " << model <<
".\n"
2996 <<
"VALID model names are user and CKD242\n";
2997 throw runtime_error(os.str());
3002 Numeric ScalingFac = 1.0000e0;
3003 if ( model ==
"user" )
3013 assert ( n_p==abs_t.
nelem() );
3014 assert ( n_p==vmr.
nelem() );
3018 assert ( n_f==pxsec.
nrows() );
3019 assert ( n_p==pxsec.
ncols() );
3024 const Numeric xLosmt = 2.686763e19;
3030 const Numeric V0F1 = 350.000e0;
3031 const Numeric HWSQF1 = 200.000e0 * 200.000e0;
3032 const Numeric BETAF1 = 5.000e-9 ;
3033 const Numeric FACTRF1 = -0.700e0;
3035 const Numeric V0F1a = 630.000e0;
3036 const Numeric HWSQF1a = 65.000e0*65.000e0;
3037 const Numeric BETAF1a = 2.000e-08 ;
3038 const Numeric FACTRF1a = 0.750e0;
3040 const Numeric V0F2 = 1130.000e0;
3041 const Numeric HWSQF2 = 330.000e0 * 330.000e0;
3042 const Numeric BETAF2 = 8.000e-11;
3043 const Numeric FACTRF2 = -0.970e0;
3045 const Numeric V0F3 = 1975.000e0;
3046 const Numeric HWSQF3 = 250.000e0 * 250.000e0;
3047 const Numeric BETAF3 = 5.000e-06;
3048 const Numeric FACTRF3 = -0.650e0;
3060 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3061 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3063 out3 <<
"WARNING:\n"
3064 <<
" CKDv2.4.2 H2O foreign continuum:\n"
3065 <<
" input frequency vector exceeds range of model validity\n"
3091 out3 <<
"WARNING:\n"
3092 <<
" CKDv2.4.2 H2O foreign continuum:\n"
3093 <<
" no elements of internal continuum coefficients could be found for the\n"
3094 <<
" input frequency range.\n"
3095 <<
" Leave the function without calculating the absorption.";
3101 for (
Index J = 1 ; J <= NPTC ; ++J)
3123 for (
Index i = 0 ; i < n_p ; ++i )
3128 Numeric Pave = (abs_p[i]*1.000e-2);
3131 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
3132 Numeric RFRGN = PFRGN * (TO/Tave);
3133 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3135 Numeric XKT = Tave / 1.4387752;
3142 for (
Index J = 1 ; J <= NPTC ; ++J)
3147 VF2 = (VJ-V0F1) * (VJ-V0F1);
3148 VF6 = VF2 * VF2 * VF2;
3149 FSCAL = (1.000e0 + FACTRF1*(HWSQF1/(VF2+(BETAF1*VF6)+HWSQF1)));
3151 VF2 = (VJ-V0F1a) * (VJ-V0F1a);
3152 VF6 = VF2 * VF2 * VF2;
3154 (1.000e0 + FACTRF1a*(HWSQF1a/(VF2+(BETAF1a*VF6)+HWSQF1a)));
3156 VF2 = (VJ-V0F2) * (VJ-V0F2);
3157 VF6 = VF2 * VF2 * VF2;
3159 (1.000e0 + FACTRF2*(HWSQF2/(VF2+(BETAF2*VF6)+HWSQF2)));
3161 VF2 = (VJ-V0F3) * (VJ-V0F3);
3164 (1.000e0 + FACTRF3*(HWSQF3/(VF2+BETAF3*VF4+HWSQF3)));
3166 FH2O = FH2OT0[J] * FSCAL;
3171 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3178 for (
Index s = 0 ; s < n_f ; ++s )
3182 if ( (V >= 0.000e0) && (V < VABS_max) )
3186 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3235 if ((model !=
"user") && (model !=
"CKDMT100"))
3239 <<
"CKD_MT1.00 H2O self continuum:\n"
3240 <<
"INPUT model name is: " << model <<
".\n"
3241 <<
"VALID model names are user and CKDMT100\n";
3242 throw runtime_error(os.str());
3247 Numeric ScalingFac = 1.0000e0;
3248 if ( model ==
"user" )
3259 assert ( n_p==abs_t.
nelem() );
3260 assert ( n_p==vmr.
nelem() );
3264 assert ( n_f==pxsec.
nrows() );
3265 assert ( n_p==pxsec.
ncols() );
3270 const Numeric xLosmt = 2.68675e19;
3273 const Numeric PO = 1013.000e0;
3276 {1.003, 1.009, 1.015, 1.023, 1.029,1.033,
3277 1.037, 1.039, 1.040, 1.046, 1.036,1.027,
3281 const Numeric VABS_min = -2.000e1;
3282 const Numeric VABS_max = 2.000e4;
3290 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3291 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3293 out3 <<
"WARNING:\n"
3294 <<
" CKD_MT 1.00 H2O self continuum:\n"
3295 <<
" input frequency vector exceeds range of model validity\n"
3306 <<
"CKD_MT 1.00 H2O self continuum:\n"
3307 <<
"parameter V1 not the same for different ref. temperatures.\n";
3308 throw runtime_error(os.str());
3314 <<
"CKD_MT 1.00 H2O self continuum:\n"
3315 <<
"parameter V2 not the same for different ref. temperatures.\n";
3316 throw runtime_error(os.str());
3322 <<
"CKD_MT 1.00 H2O self continuum:\n"
3323 <<
"parameter DV not the same for different ref. temperatures.\n";
3324 throw runtime_error(os.str());
3330 <<
"CKD_MT 1.00 H2O self continuum:\n"
3331 <<
"parameter NPT not the same for different ref. temperatures.\n";
3332 throw runtime_error(os.str());
3355 out3 <<
"WARNING:\n"
3356 <<
" CKD_MT 1.00 H2O self continuum:\n"
3357 <<
" no elements of internal continuum coefficients could be found for the\n"
3358 <<
" input frequency range.\n"
3359 <<
" Leave the function without calculating the absorption.";
3366 for (
Index J = 1 ; J <= NPTC ; ++J)
3381 for (
Index i = 0 ; i < n_p ; ++i )
3386 Numeric Pave = (abs_p[i]*1.000e-2);
3391 Numeric Rh2o = Patm * (TO/Tave);
3392 Numeric Tfac = (Tave-TO)/(260.0-TO);
3393 Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave);
3395 Numeric XKT = Tave / 1.4387752e0;
3401 for (
Index J = 1 ; J <= NPTC ; ++J)
3405 if (SH2OT0[J] > 0.0e0)
3407 SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac );
3410 if ( (VJ >= 820.0e0) && (VJ <= 960.0e0) )
3412 int JFAC = (int)((VJ - 820.0e0)/10.0e0 + 0.00001e0);
3413 if ( (JFAC >= 0) && (JFAC <=14) )
3414 SFAC = XFACREV[JFAC];
3423 k[J] = W1 * Rh2o * (SH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3430 for (
Index s = 0 ; s < n_f ; ++s )
3440 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3488 if ((model !=
"user") && (model !=
"CKDMT100"))
3492 <<
"CKD_MT1.00 H2O foreign continuum:\n"
3493 <<
"INPUT model name is: " << model <<
".\n"
3494 <<
"VALID model names are user and CKDMT100\n";
3495 throw runtime_error(os.str());
3500 Numeric ScalingFac = 1.0000e0;
3501 if ( model ==
"user" )
3512 assert ( n_p==abs_t.
nelem() );
3513 assert ( n_p==vmr.
nelem() );
3517 assert ( n_f==pxsec.
nrows() );
3518 assert ( n_p==pxsec.
ncols() );
3523 const Numeric xLosmt = 2.68675e19;
3526 const Numeric PO = 1013.000e0;
3529 const Numeric VABS_min = -2.000e1;
3530 const Numeric VABS_max = 2.000e4;
3538 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3539 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3541 out3 <<
"WARNING:\n"
3542 <<
" CKD_MT 1.00 H2O foreign continuum:\n"
3543 <<
" input frequency vector exceeds range of model validity\n"
3569 out3 <<
"WARNING:\n"
3570 <<
" CKD_MT 1.00 H2O foreign continuum:\n"
3571 <<
" no elements of internal continuum coefficients could be found for the\n"
3572 <<
" input frequency range.\n"
3573 <<
" Leave the function without calculating the absorption.";
3579 for (
Index J = 1 ; J <= NPTC ; ++J)
3594 for (
Index i = 0 ; i < n_p ; ++i )
3598 Numeric Pave = (abs_p[i]*1.000e-2);
3601 Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o);
3602 Numeric RFRGN = PFRGN * (TO/Tave);
3603 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3605 Numeric XKT = Tave / 1.4387752;
3611 for (
Index J = 1 ; J <= NPTC ; ++J)
3619 k[J] = WTOT * RFRGN * (FH2O*1.000e-20) *
RADFN_FUN(VJ,XKT);
3625 for (
Index s = 0 ; s < n_f ; ++s )
3629 if ( (V >= 0.000e0) && (V < VABS_max) )
3635 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3683 if ((model !=
"user") && (model !=
"CKD241"))
3687 <<
"CKDv2.4.1 CO2 continuum:\n"
3688 <<
"INPUT model name is: " << model <<
".\n"
3689 <<
"VALID model names are user and CKD241\n";
3690 throw runtime_error(os.str());
3695 Numeric ScalingFac = 0.0000e0;
3696 if ( model ==
"user" )
3702 ScalingFac = 1.0000e0;
3710 assert ( n_p==abs_t.nelem() );
3711 assert ( n_p==vmr.nelem() );
3715 assert ( n_f==pxsec.
nrows() );
3716 assert ( n_p==pxsec.
ncols() );
3721 const Numeric xLosmt = 2.686763e19;
3727 const Numeric VABS_min = -2.000e1;
3728 const Numeric VABS_max = 1.000e4;
3736 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3737 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3739 out3 <<
"WARNING:\n"
3740 <<
" CKDv2.4.1 CO2 continuum:\n"
3741 <<
" input frequency vector exceeds range of model validity\n"
3767 out3 <<
"WARNING:\n"
3768 <<
" CKDv2.4.1 CO2 continuum:\n"
3769 <<
" no elements of internal continuum coefficients could be found for the\n"
3770 <<
" input frequency range.\n"
3771 <<
" Leave the function without calculating the absorption.";
3777 for (
Index J = 1 ; J <= NPTC ; ++J)
3796 for (
Index i = 0 ; i < n_p ; ++i )
3799 Numeric Pave = (abs_p[i]*1.000e-2);
3801 Numeric Rhoave = (Pave/PO) * (TO/Tave);
3802 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3803 Numeric XKT = Tave / 1.4387752;
3811 for (
Index J = 1 ; J <= NPTC ; ++J)
3818 k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) *
RADFN_FUN(VJ,XKT));
3825 for (
Index s = 0 ; s < n_f ; ++s )
3833 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
3881 if ((model !=
"user") && (model !=
"CKDMT100"))
3885 <<
"CKD_MT.1.00 CO2 continuum:\n"
3886 <<
"INPUT model name is: " << model <<
".\n"
3887 <<
"VALID model names are user and CKDMT100\n";
3888 throw runtime_error(os.str());
3893 Numeric ScalingFac = 0.0000e0;
3894 if ( model ==
"user" )
3900 ScalingFac = 1.0000e0;
3908 assert ( n_p==abs_t.
nelem() );
3909 assert ( n_p==vmr.nelem() );
3913 assert ( n_f==pxsec.
nrows() );
3914 assert ( n_p==pxsec.
ncols() );
3919 const Numeric xLosmt = 2.686763e19;
3934 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
3935 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
3937 out3 <<
"WARNING:\n"
3938 <<
" CKD_MT 1.00 CO2 continuum:\n"
3939 <<
" input frequency vector exceeds range of model validity\n"
3965 out3 <<
"WARNING:\n"
3966 <<
" CKD_MT 1.00 CO2 continuum:\n"
3967 <<
" no elements of internal continuum coefficients could be found for the\n"
3968 <<
" input frequency range.\n"
3969 <<
" Leave the function without calculating the absorption.";
3975 for (
Index J = 1 ; J <= NPTC ; ++J)
3990 for (
Index i = 0 ; i < n_p ; ++i )
3993 Numeric Pave = (abs_p[i]*1.000e-2);
3995 Numeric Rhoave = (Pave/PO) * (TO/Tave);
3996 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
3997 Numeric XKT = Tave / 1.4387752;
4004 for (
Index J = 1 ; J <= NPTC ; ++J)
4010 if ( (VJ > 500.0e0) && (VJ < 900.0e0) )
4012 FCO2 = 7.000e0 * FCO2;
4017 k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) *
RADFN_FUN(VJ,XKT));
4024 for (
Index s = 0 ; s < n_f ; ++s )
4032 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4089 if ((model !=
"user") && (model !=
"CKDMT100"))
4093 <<
"CKD_MT1.00 N2 CIA rotational band:\n"
4094 <<
"INPUT model name is: " << model <<
".\n"
4095 <<
"VALID model names are user and CKDMT100\n";
4096 throw runtime_error(os.str());
4101 Numeric ScalingFac = 0.0000e0;
4102 if ( model ==
"user" )
4108 ScalingFac = 1.0000e0;
4116 assert ( n_p==abs_t.
nelem() );
4117 assert ( n_p==vmr.
nelem() );
4121 assert ( n_f==pxsec.
nrows() );
4122 assert ( n_p==pxsec.
ncols() );
4134 const Numeric VABS_min = -1.000e1;
4135 const Numeric VABS_max = 3.500e2;
4143 if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) ||
4144 (V2ABS < VABS_min) || (V2ABS > VABS_max) )
4146 out3 <<
"WARNING:\n"
4147 <<
" CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4148 <<
" input frequency vector exceeds range of model validity\n"
4159 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4160 <<
"parameter V1 not the same for different ref. temperatures.\n";
4161 throw runtime_error(os.str());
4167 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4168 <<
"parameter V2 not the same for different ref. temperatures.\n";
4169 throw runtime_error(os.str());
4175 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4176 <<
"parameter DV not the same for different ref. temperatures.\n";
4177 throw runtime_error(os.str());
4183 <<
"CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4184 <<
"parameter NPT not the same for different ref. temperatures.\n";
4185 throw runtime_error(os.str());
4207 out3 <<
"WARNING:\n"
4208 <<
" CKD_MT 1.00 N2-N2 CIA rotational band:\n"
4209 <<
" no elements of internal continuum coefficients could be found for the\n"
4210 <<
" input frequency range.\n"
4211 <<
" Leave the function without calculating the absorption.\n";
4218 for (
Index J = 1 ; J <= NPTC ; ++J)
4234 for (
Index i = 0 ; i < n_p ; ++i )
4237 Numeric Pave = (abs_p[i]*1.000e-2);
4239 Numeric facfac = vmrn2 * (Pave/PO) * (Pave/PO) *
4240 (T1/Tave) * (T1/Tave);
4242 Numeric XKT = Tave / 1.4387752;
4243 Numeric Tfac = (Tave - TO) / (220.0e0 - TO);
4249 for (
Index J = 1 ; J <= NPTC ; ++J)
4253 if ( (C0[J] > 0.000e0) && (C1[J] > 0.000e0) )
4255 SN2 = facfac* C0[J] * pow( (C1[J]/C0[J]), Tfac );
4265 for (
Index s = 0 ; s < n_f ; ++s )
4273 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4335 if ((model !=
"user") && (model !=
"CKDMT100"))
4339 <<
"CKD_MT1.00 N2 CIA fundamental band:\n"
4340 <<
"INPUT model name is: " << model <<
".\n"
4341 <<
"VALID model names are user and CKDMT100\n";
4342 throw runtime_error(os.str());
4347 Numeric ScalingFac = 1.0000e0;
4348 if ( model ==
"user" )
4359 assert ( n_p==abs_t.
nelem() );
4360 assert ( n_p==vmr.
nelem() );
4364 assert ( n_f==pxsec.
nrows() );
4365 assert ( n_p==pxsec.
ncols() );
4370 const Numeric xLosmt = 2.686763e19;
4386 out3 <<
"WARNING:\n"
4387 <<
" CKD_MT 1.00 N2-N2 CIA fundamental band:\n"
4388 <<
" input frequency vector exceeds range of model validity\n"
4414 out3 <<
"WARNING:\n"
4415 <<
" CKD_MT 1.00 N2-N2 CIA fundamental band:\n"
4416 <<
" no elements of internal continuum coefficients could be found for the\n"
4417 <<
" input frequency range.\n";
4424 for (
Index J = 1 ; J <= NPTC ; ++J)
4440 for (
Index i = 0 ; i < n_p ; ++i )
4443 Numeric Pave = (abs_p[i]*1.000e-2);
4445 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
4446 Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave);
4448 Numeric XKT = Tave / 1.4387752e0;
4451 Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave);
4455 factor = (1.000e0 / xLosmt) * (1.000e0/vmrn2) * (a1 - a2*(Tave/TO));
4462 for (
Index J = 1 ; J <= NPTC ; ++J)
4466 if (xn2[J] > 0.000e0)
4468 Numeric C0 = factor * xn2[J] * exp(xn2t[J]*xktfac) / VJ;
4479 for (
Index s = 0 ; s < n_f ; ++s )
4487 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4546 if ((model !=
"user") && (model !=
"CKDMT100"))
4550 <<
"CKD_MT1.00 O2 CIA fundamental band:\n"
4551 <<
"INPUT model name is: " << model <<
".\n"
4552 <<
"VALID model names are user and CKDMT100\n";
4553 throw runtime_error(os.str());
4558 Numeric ScalingFac = 1.0000e0;
4559 if ( model ==
"user" )
4570 assert ( n_p==abs_t.
nelem() );
4571 assert ( n_p==vmr.nelem() );
4575 assert ( n_f==pxsec.
nrows() );
4576 assert ( n_p==pxsec.
ncols() );
4581 const Numeric xLosmt = 2.686763e19;
4595 out3 <<
"WARNING:\n"
4596 <<
" CKD_MT 1.00 O2-O2 CIA fundamental band:\n"
4597 <<
" input frequency vector exceeds range of model validity\n"
4622 out3 <<
"WARNING:\n"
4623 <<
" CKD_MT 1.00 O2 CIA fundamental band:\n"
4624 <<
" no elements of internal continuum coefficients could be found for the\n"
4625 <<
" input frequency range.\n"
4626 <<
" Leave the function without calculating the absorption.\n";
4633 for (
Index J = 1 ; J <= NPTC ; ++J)
4649 for (
Index i = 0 ; i < n_p ; ++i )
4652 Numeric Pave = (abs_p[i]*1.000e-2);
4654 Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave);
4655 Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave);
4657 Numeric XKT = Tave / 1.4387752;
4659 Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave);
4660 Numeric factor = (1.000e0 / xLosmt);
4666 for (
Index J = 1 ; J <= NPTC ; ++J)
4672 Numeric C0 = factor * xo2[J] * exp(xo2t[J]*xktfac) / VJ;
4683 for (
Index s = 0 ; s < n_f ; ++s )
4691 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4767 if ((model !=
"user") && (model !=
"CKDMT100"))
4771 <<
"CKD_MT1.00 O2 band at 1.27 micrometer:\n"
4772 <<
"INPUT model name is: " << model <<
".\n"
4773 <<
"VALID model names are user and CKDMT100\n";
4774 throw runtime_error(os.str());
4779 Numeric ScalingFac = 1.0000e0;
4780 if ( model ==
"user" )
4790 assert ( n_p==abs_t.
nelem() );
4791 assert ( n_p==vmr.
nelem() );
4795 assert ( n_f==pxsec.
nrows() );
4796 assert ( n_p==pxsec.
ncols() );
4814 out3 <<
"WARNING:\n"
4815 <<
" CKD_MT 1.00 O2 v0<-v0 band:\n"
4816 <<
" input frequency vector exceeds range of model validity\n"
4840 out3 <<
"WARNING:\n"
4841 <<
" CKD_MT 1.00 O2 v0<-v0 band:\n"
4842 <<
" no elements of internal continuum coefficients could be found for the\n"
4843 <<
" input frequency range.\n"
4844 <<
" Leave the function without calculating the absorption.\n";
4851 for (
Index J = 1 ; J <= NPTC ; ++J)
4868 for (
Index i = 0 ; i < n_p ; ++i )
4871 Numeric Pave = (abs_p[i]*1.000e-2);
4874 Numeric ADJWO2 = (vmro2 + 0.300e0*vmrn2) / 0.446e0 *
4875 (Pave/PO) * (Pave/PO) * (T1/Tave) * (T1/Tave);
4876 Numeric XKT = Tave / 1.4387752e0;
4884 for (
Index J = 1 ; J <= NPTC ; ++J)
4890 SO2 = ADJWO2 * CO[J];
4900 for (
Index s = 0 ; s < n_f ; ++s )
4908 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
4972 if ((model !=
"user") && (model !=
"CKDMT100"))
4976 <<
"CKD_MT1.00 O2 band at 1.06 micrometer:\n"
4977 <<
"INPUT model name is: " << model <<
".\n"
4978 <<
"VALID model names are user and CKDMT100\n";
4979 throw runtime_error(os.str());
4984 Numeric ScalingFac = 1.0000e0;
4985 if ( model ==
"user" )
4995 assert ( n_p==abs_t.
nelem() );
4996 assert ( n_p==vmr.
nelem() );
5000 assert ( n_f==pxsec.
nrows() );
5001 assert ( n_p==pxsec.
ncols() );
5006 const Numeric xLosmt = 2.686763e19;
5020 const Numeric V1_osc = 9375.000e0;
5022 const Numeric V2_osc = 9439.000e0;
5036 out3 <<
"WARNING:\n"
5037 <<
" CKD_MT 1.00 O2 v1<-v0 band:\n"
5038 <<
" input frequency vector exceeds range of model validity\n"
5050 int NPTC = (int)( ((V2C-V1C)/DVC) + 3 );
5052 V2C = V1C + ( DVC * (
Numeric)(NPTC-1) );
5056 out3 <<
"WARNING:\n"
5057 <<
" CKD_MT 1.00 O2 v1<-v0 band:\n"
5058 <<
" no elements of internal continuum coefficients could be found for the\n"
5059 <<
" input frequency range.\n"
5060 <<
" Leave the function without calculating the absorption.\n";
5067 for (
Index J = 1 ; J <= NPTC ; ++J)
5072 if ( (VJ > V1S) && (VJ < V2S) )
5082 DAMP1 = exp(DV1 / 176.100e0);
5087 DAMP2 = exp(DV2 / 176.100e0);
5091 ( ((S1 * DAMP1 / HW1)/(1.000e0 + pow((DV1/HW1),(
Numeric)2.0e0) )) +
5092 ((S2 * DAMP2 / HW2)/(1.000e0 + pow((DV2/HW2),(
Numeric)2.0e0) )) ) * 1.054e0;
5102 for (
Index i = 0 ; i < n_p ; ++i )
5105 Numeric Pave = (abs_p[i]*1.000e-2);
5107 Numeric WTOT = 1.000e-20 * xLosmt * (Pave/PO) * (T1/Tave);
5108 Numeric ADJWO2 = (vmro2 / 0.209e0) * WTOT * (Pave/PO) * (TO/Tave);
5109 Numeric XKT = Tave / 1.4387752;
5116 for (
Index J = 1 ; J <= NPTC ; ++J)
5122 SO2 = ADJWO2 * C[J];
5132 for (
Index s = 0 ; s < n_f ; ++s )
5136 if ( (V > V1S) && (V < V2S) )
5140 pxsec(s,i) += ScalingFac * 1.000e2 *
XINT_FUN(V1C,V2C,DVC,k,V);
5205 extern double artsckd_(
double p,
double t,
5206 double vmrh2o,
double vmrn2,
double vmro2,
5207 double freq,
int ivc);
5215 if ((model !=
"user") && (model !=
"CKD24"))
5219 <<
"CKDv2.4.2 H2O self/foreign continuum:\n"
5220 <<
"INPUT model name is: " << model <<
".\n"
5221 <<
"VALID model names are user and CKD24\n";
5222 throw runtime_error(os.str());
5227 if ( model ==
"CKD24" )
5231 else if ( model ==
"user" )
5239 os <<
"H2O-SelfContCKD24: ERROR! Wrong model values given.\n"
5240 <<
"allowed models are: 'CKD24', 'user'" <<
'\n';
5241 throw runtime_error(os.str());
5245 os <<
"H2O-ForeignContCKD: ERROR! Wrong model values given.\n"
5246 <<
"allowed models are: 'CKD24', 'user'" <<
'\n';
5247 throw runtime_error(os.str());
5252 out3 <<
"H2O-SelfContCKD24: (model=" << model <<
") parameter values in use:\n"
5253 <<
" XFAC = " << XFAC <<
"\n";
5256 out3 <<
"H2O-ForeignContCKD: (model=" << model <<
") parameter values in use:\n"
5257 <<
" XFAC = " << XFAC <<
"\n";
5266 assert ( n_p==abs_t.
nelem() );
5267 assert ( n_p==vmr.
nelem() );
5271 assert ( n_f==pxsec.
nrows() );
5272 assert ( n_p==pxsec.
ncols() );
5288 if ((ivc != 1) && (ivc != 21) && (ivc != 22) && (ivc != 31) && (ivc != 32)) {
5290 os <<
"!!ERROR: CKD24 H2O model: wrong input parameter isf (=0,1) given!\n"
5291 <<
"retrun without calculation!" <<
"\n"
5292 <<
"actual value of isf is " << isf <<
"\n";
5293 throw runtime_error(os.str());
5299 for (
Index i=0; i<n_p; ++i )
5301 double T = (double) abs_t[i];
5302 double p = (double) (abs_p[i]*1.000e-2);
5303 double vmrh2o = (double) vmr[i];
5304 double vmrn2 = (double) abs_n2[i];
5305 double vmro2 = 0.0e0;
5315 for (
Index s=0; s<n_f; ++s )
5319 double f = (double) f_grid[s];
5321 if (abs_n2[i] > 0.0e0) {
5323 double cont =
artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc);
5324 pxsec(s,i) += (
Numeric) (cont / vmr[i]);
5328 if (vmr[i] > 0.0e0) {
5330 double cont =
artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc);
5331 pxsec(s,i) += (
Numeric) (cont / vmr[i]);
5385 if ( model ==
"ATM" )
5389 else if ( model ==
"user" )
5396 os <<
"H2O-ForeignContATM01: ERROR! Wrong model values given.\n"
5397 <<
"allowed models are: 'ATM', 'user'" <<
'\n';
5398 throw runtime_error(os.str());
5400 out3 <<
"H2O-ForeignContATM01: (model=" << model <<
") parameter values in use:\n"
5401 <<
" C_f = " << C <<
"\n";
5407 assert ( n_p==abs_t.
nelem() );
5408 assert ( n_p==vmr.
nelem() );
5412 assert ( n_f==pxsec.
nrows() );
5413 assert ( n_p==pxsec.
ncols() );
5416 for (
Index i=0; i<n_p; ++i )
5422 Numeric pd = abs_p[i] * ( 1.00000e0 - vmr[i] );
5426 for (
Index s=0; s<n_f; ++s )
5436 (pwdummy/1.01300e5);
5503 const Numeric MPM93fo_orig = 1780.000e9;
5504 const Numeric MPM93b1_orig = 22300.000;
5505 const Numeric MPM93b2_orig = 0.952;
5506 const Numeric MPM93b3_orig = 17.600e4;
5507 const Numeric MPM93b4_orig = 30.500;
5508 const Numeric MPM93b5_orig = 2.000;
5509 const Numeric MPM93b6_orig = 5.000;
5514 Numeric MPM93fopcl, MPM93b1pcl, MPM93b2pcl,
5515 MPM93b3pcl, MPM93b4pcl, MPM93b5pcl,
5517 if ( model ==
"MPM93" )
5519 MPM93fopcl = MPM93fo_orig;
5520 MPM93b1pcl = MPM93b1_orig;
5521 MPM93b2pcl = MPM93b2_orig;
5522 MPM93b3pcl = MPM93b3_orig;
5523 MPM93b4pcl = MPM93b4_orig;
5524 MPM93b5pcl = MPM93b5_orig;
5525 MPM93b6pcl = MPM93b6_orig;
5527 else if ( model ==
"user" )
5529 MPM93fopcl = fcenter;
5540 os <<
"H2O-ContMPM93: ERROR! Wrong model values given.\n"
5541 <<
"allowed models are: 'MPM93', 'user'" <<
'\n';
5542 throw runtime_error(os.str());
5544 out3 <<
"H2O-ContMPM93: (model=" << model <<
") parameter values in use:\n"
5545 <<
" fo = " << MPM93fopcl <<
"\n"
5546 <<
" b1 = " << MPM93b1pcl <<
"\n"
5547 <<
" b2 = " << MPM93b2pcl <<
"\n"
5548 <<
" b3 = " << MPM93b3pcl <<
"\n"
5549 <<
" b4 = " << MPM93b4pcl <<
"\n"
5550 <<
" b5 = " << MPM93b5pcl <<
"\n"
5551 <<
" b6 = " << MPM93b6pcl <<
"\n";
5557 assert ( n_p==abs_t.
nelem() );
5558 assert ( n_p==vmr.
nelem() );
5562 assert ( n_f==pxsec.
nrows() );
5563 assert ( n_p==pxsec.
ncols() );
5567 for (
Index i=0; i<n_p; ++i )
5569 Numeric th = 300.0 / abs_t[i];
5572 Numeric strength = MPM93b1pcl * abs_p[i] * pow( th, (
Numeric)3.5 )
5573 * exp(MPM93b2pcl * (1 - th));
5574 Numeric gam = MPM93b3pcl * 0.001 *
5575 ( MPM93b4pcl * abs_p[i] * vmr[i] * pow( th, MPM93b6pcl ) +
5576 abs_p[i]*(1.000-vmr[i]) * pow( th, MPM93b5pcl ) );
5578 for (
Index s=0; s<n_f; ++s )
5582 f_grid[s] * strength *
5641 const Numeric mpm85[48][7] = {
5642 { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 5.600 , 1.700 },
5643 { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 5.600 , 1.700 },
5644 { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 5.600 , 1.700 },
5645 { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 5.500 , 1.700 },
5646 { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 5.600 , 1.800 },
5647 { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 5.500 , 1.800 },
5648 { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 5.700 , 1.800 },
5649 { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.300 , 1.900 },
5650 { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800 },
5651 { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 4.800 , 2.000 },
5652 { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.800 , 1.900 },
5653 { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.170 , 2.100 },
5654 { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 3.750 , 2.100 },
5655 { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 7.740 , 0.900 },
5656 { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 2.970 , 2.300 },
5657 { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 2.120 , 2.500 },
5658 { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 0.940 , 3.700 },
5659 { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.550 , -3.100 },
5660 { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 5.970 , 0.800 },
5661 { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -2.440 , 0.100 },
5662 { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 3.440 , 0.500 },
5663 { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -4.130 , 0.700 },
5664 { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 1.320 , -1.000 },
5665 { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -0.360 , 5.800 },
5666 { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -1.590 , 2.900 },
5667 { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -2.660 , 2.300 },
5668 { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.770 , 0.900 },
5669 { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -3.340 , 2.200 },
5670 { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.170 , 2.000 },
5671 { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.480 , 2.000 },
5672 { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.100 , 1.800 },
5673 { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.100 , 1.900 },
5674 { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.700 , 1.800 },
5675 { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.500 , 1.800 },
5676 { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -5.900 , 1.700 },
5677 { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -5.600 , 1.800 },
5678 { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -5.800 , 1.700 },
5679 { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -5.700 , 1.700 },
5680 { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -5.600 , 1.700 },
5681 { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -5.600 , 1.700 },
5682 { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -5.600 , 1.700 },
5683 { 118.750341 , 945.00 , 0.000 , 15.92 , 0.0 , -0.440 , 0.900 },
5684 { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000 },
5685 { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000 },
5686 { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000 },
5687 { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000 },
5688 { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 },
5689 { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 },
5693 const Index i_first = 0;
5694 const Index i_last = 47;
5700 const Numeric CC_MPM85 = 1.00000;
5701 const Numeric CL_MPM85 = 1.00000;
5702 const Numeric CW_MPM85 = 1.00000;
5703 const Numeric CO_MPM85 = 1.00000;
5710 if ( model ==
"MPM85" )
5717 else if ( model ==
"MPM85Lines" )
5724 else if ( model ==
"MPM85Continuum" )
5731 else if ( model ==
"MPM85NoCoupling" )
5738 else if ( model ==
"MPM85NoCutoff" )
5746 else if ( model ==
"user" )
5756 os <<
"O2-MPM85: ERROR! Wrong model values given.\n"
5757 <<
"Valid models are: 'MPM85' 'MPM85Lines' 'MPM85Continuum' 'MPM85NoCoupling' 'MPM85NoCutoff'"
5758 <<
"and 'user'" <<
'\n';
5759 throw runtime_error(os.str());
5761 out3 <<
"O2-MPM85: (model=" << model <<
") parameter values in use:\n"
5762 <<
" CC = " << CC <<
"\n"
5763 <<
" CL = " << CL <<
"\n"
5764 <<
" CW = " << CW <<
"\n"
5765 <<
" CO = " << CO <<
"\n";
5780 const Numeric VMRISO = 0.2085;
5783 assert ( n_p==abs_t.
nelem() );
5784 assert ( n_p==vmr.
nelem() );
5788 assert ( n_f==pxsec.
nrows() );
5789 assert ( n_p==pxsec.
ncols() );
5792 for (
Index i=0; i<n_p; ++i )
5798 os <<
"ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of "
5799 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
5800 <<
"Therefore no calculation is performed.\n";
5801 throw runtime_error(os.str());
5806 Numeric theta = (300.0 / abs_t[i]);
5815 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
5817 Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 );
5820 for (
Index s=0; s<n_f; ++s )
5831 Numeric Nppc = CC * strength_cont * FAC * ff * gam_cont /
5833 + pow( gam_cont, (
Numeric)2.) );
5837 for (
Index l = i_first; l <= i_last; ++l )
5840 Numeric strength = CL * mpm85[l][1] * 1.000e-6 * pda_dummy *
5841 pow(theta, (
Numeric)3.) * exp(mpm85[l][2]*(1.000-theta)) /
5844 Numeric gam = CW * ( mpm85[l][3] * 1.000e-3 *
5845 ( ( pda * pow(theta, ((
Numeric)0.80-mpm85[l][4]))) +
5846 (1.10 * pwv * theta) ) );
5848 Numeric delta = CO * mpm85[l][5] * 1.000e-3 *
5849 pda * pow(theta, mpm85[l][6]);
5860 if (Nppl < 0.000) Nppl = 0.0000;
5866 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
5926 const Numeric mpm87[48][7] = {
5927 { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 6.600 , 1.700},
5928 { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 6.600 , 1.700},
5929 { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 6.600 , 1.700},
5930 { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 6.500 , 1.700},
5931 { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 6.627 , 1.800},
5932 { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 6.347 , 1.800},
5933 { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 6.046 , 1.800},
5934 { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.719 , 1.900},
5935 { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800},
5936 { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 5.157 , 2.000},
5937 { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.783 , 1.900},
5938 { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.339 , 2.100},
5939 { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 4.011 , 2.100},
5940 { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 2.772 , 0.900},
5941 { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 3.922 , 2.300},
5942 { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 3.398 , 2.500},
5943 { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 1.145 , 3.200},
5944 { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.317 , -2.500},
5945 { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 6.270 , 0.800},
5946 { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -4.119 , 0.100},
5947 { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 6.766 , 0.500},
5948 { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -6.183 , 0.700},
5949 { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 3.290 , -0.400},
5950 { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -1.591 , 3.500},
5951 { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -2.068 , 2.900},
5952 { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -4.158 , 2.300},
5953 { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.068 , 0.900},
5954 { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -4.482 , 2.200},
5955 { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.442 , 2.000},
5956 { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.687 , 2.000},
5957 { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.074 , 1.800},
5958 { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.403 , 1.900},
5959 { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.610 , 1.800},
5960 { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.896 , 1.800},
5961 { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -6.194 , 1.700},
5962 { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -6.468 , 1.800},
5963 { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -6.718 , 1.700},
5964 { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -6.700 , 1.700},
5965 { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -6.600 , 1.700},
5966 { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -6.600 , 1.700},
5967 { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -6.600 , 1.700},
5968 { 118.750341 , 945.00 , 0.000 , 16.30 , 0.0 , -0.134 , 0.800},
5969 { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000},
5970 { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000},
5971 { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000},
5972 { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000},
5973 { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000},
5974 { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000}
5978 const Index i_first = 0;
5979 const Index i_last = 47;
5985 const Numeric CC_MPM87 = 1.00000;
5986 const Numeric CL_MPM87 = 1.00000;
5987 const Numeric CW_MPM87 = 1.00000;
5988 const Numeric CO_MPM87 = 1.00000;
5995 if ( model ==
"MPM87" )
6002 else if ( model ==
"MPM87Lines" )
6009 else if ( model ==
"MPM87Continuum" )
6016 else if ( model ==
"MPM87NoCoupling" )
6023 else if ( model ==
"MPM87NoCutoff" )
6034 else if ( model ==
"user" )
6044 os <<
"O2-MPM87: ERROR! Wrong model values given.\n"
6045 <<
"Valid models are: 'MPM87' 'MPM87Lines' 'MPM87Continuum' 'MPM87NoCoupling' 'MPM87NoCutoff'"
6046 <<
"and 'user'" <<
'\n';
6047 throw runtime_error(os.str());
6049 out3 <<
"O2-MPM87: (model=" << model <<
") parameter values in use:\n"
6050 <<
" CC = " << CC <<
"\n"
6051 <<
" CL = " << CL <<
"\n"
6052 <<
" CW = " << CW <<
"\n"
6053 <<
" CO = " << CO <<
"\n";
6068 const Numeric VMRISO = 0.2085;
6071 assert ( n_p==abs_t.
nelem() );
6072 assert ( n_p==vmr.
nelem() );
6076 assert ( n_f==pxsec.
nrows() );
6077 assert ( n_p==pxsec.
ncols() );
6080 for (
Index i=0; i<n_p; ++i )
6086 os <<
"ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of "
6087 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6088 <<
"Therefore no calculation is performed.\n";
6089 throw runtime_error(os.str());
6094 Numeric theta = (300.0 / abs_t[i]);
6103 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6105 Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 );
6108 for (
Index s=0; s<n_f; ++s )
6115 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6120 for (
Index l = i_first; l <= i_last; ++l )
6123 Numeric strength = CL * mpm87[l][1] * 1.000e-6 * pda_dummy *
6124 pow(theta, (
Numeric)3.) * exp(mpm87[l][2]*(1.000-theta)) /
6127 Numeric gam = CW * ( mpm87[l][3] * 1.000e-3 *
6128 ( ( pda * pow(theta, ((
Numeric)0.80-mpm87[l][4]))) +
6129 (1.10 * pwv * theta) ) );
6131 Numeric delta = CO * mpm87[l][5] * 1.000e-3 *
6132 pda * pow(theta, mpm87[l][6]);
6140 if (Nppl < 0.000) Nppl = 0.0000;
6146 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6203 const Numeric mpm89[44][7] = {
6204 { 50.474238, 0.94 , 9.694 , 8.60 , 0.0 , 1.600 , 5.520 },
6205 { 50.987749, 2.46 , 8.694 , 8.70 , 0.0 , 1.400 , 5.520 },
6206 { 51.503350, 6.08 , 7.744 , 8.90 , 0.0 , 1.165 , 5.520 },
6207 { 52.021410, 14.14 , 6.844 , 9.20 , 0.0 , 0.883 , 5.520 },
6208 { 52.542394, 31.02 , 6.004 , 9.40 , 0.0 , 0.579 , 5.520 },
6209 { 53.066907, 64.10 , 5.224 , 9.70 , 0.0 , 0.252 , 5.520 },
6210 { 53.595749, 124.70 , 4.484 , 10.00 , 0.0 , -0.066 , 5.520 },
6211 { 54.130000, 228.00 , 3.814 , 10.20 , 0.0 , -0.314 , 5.520 },
6212 { 54.671159, 391.80 , 3.194 , 10.50 , 0.0 , -0.706 , 5.520 },
6213 { 55.221367, 631.60 , 2.624 , 10.79 , 0.0 , -1.151 , 5.514 },
6214 { 55.783802, 953.50 , 2.119 , 11.10 , 0.0 , -0.920 , 5.025 },
6215 { 56.264775, 548.90 , 0.015 , 16.46 , 0.0 , 2.881 , -0.069 },
6216 { 56.363389, 1344.00 , 1.660 , 11.44 , 0.0 , -0.596 , 4.750 },
6217 { 56.968206, 1763.00 , 1.260 , 11.81 , 0.0 , -0.556 , 4.104 },
6218 { 57.612484, 2141.00 , 0.915 , 12.21 , 0.0 , -2.414 , 3.536 },
6219 { 58.323877, 2386.00 , 0.626 , 12.66 , 0.0 , -2.635 , 2.686 },
6220 { 58.446590, 1457.00 , 0.084 , 14.49 , 0.0 , 6.848 , -0.647 },
6221 { 59.164207, 2404.00 , 0.391 , 13.19 , 0.0 , -6.032 , 1.858 },
6222 { 59.590983, 2112.00 , 0.212 , 13.60 , 0.0 , 8.266 , -1.413 },
6223 { 60.306061, 2124.00 , 0.212 , 13.82 , 0.0 , -7.170 , 0.916 },
6224 { 60.434776, 2461.00 , 0.391 , 12.97 , 0.0 , 5.664 , -2.323 },
6225 { 61.150560, 2504.00 , 0.626 , 12.48 , 0.0 , 1.731 , -3.039 },
6226 { 61.800154, 2298.00 , 0.915 , 12.07 , 0.0 , 1.738 , -3.797 },
6227 { 62.411215, 1933.00 , 1.260 , 11.71 , 0.0 , -0.048 , -4.277 },
6228 { 62.486260, 1517.00 , 0.083 , 14.68 , 0.0 , -4.290 , 0.238 },
6229 { 62.997977, 1503.00 , 1.665 , 11.39 , 0.0 , 0.134 , -4.860 },
6230 { 63.568518, 1087.00 , 2.115 , 11.08 , 0.0 , 0.541 , -5.079 },
6231 { 64.127767, 733.50 , 2.620 , 10.78 , 0.0 , 0.814 , -5.525 },
6232 { 64.678903, 463.50 , 3.195 , 10.50 , 0.0 , 0.415 , -5.520 },
6233 { 65.224071, 274.80 , 3.815 , 10.20 , 0.0 , 0.069 , -5.520 },
6234 { 65.764772, 153.00 , 4.485 , 10.00 , 0.0 , -0.143 , -5.520 },
6235 { 66.302091, 80.09 , 5.225 , 9.70 , 0.0 , -0.428 , -5.520 },
6236 { 66.836830, 39.46 , 6.005 , 9.40 , 0.0 , -0.726 , -5.520 },
6237 { 67.369598, 18.32 , 6.845 , 9.20 , 0.0 , -1.002 , -5.520 },
6238 { 67.900867, 8.01 , 7.745 , 8.90 , 0.0 , -1.255 , -5.520 },
6239 { 68.431005, 3.30 , 8.695 , 8.70 , 0.0 , -1.500 , -5.520 },
6240 { 68.960311, 1.28 , 9.695 , 8.60 , 0.0 , -1.700 , -5.520 },
6241 { 118.750343, 945.00 , 0.009 , 16.30 , 0.0 , -0.247 , 0.003 },
6242 { 368.498350, 67.90 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 },
6243 { 424.763124, 638.00 , 0.044 , 19.16 , 0.6 , 0.000 , 0.000 },
6244 { 487.249370, 235.00 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 },
6245 { 715.393150, 99.60 , 0.145 , 18.10 , 0.6 , 0.000 , 0.000 },
6246 { 773.839675, 671.00 , 0.130 , 18.10 , 0.6 , 0.000 , 0.000 },
6247 { 834.145330, 180.00 , 0.147 , 18.10 , 0.6 , 0.000 , 0.000 }
6251 const Index i_first = 0;
6252 const Index i_last = 43;
6258 const Numeric CC_MPM89 = 1.00000;
6259 const Numeric CL_MPM89 = 1.00000;
6260 const Numeric CW_MPM89 = 1.00000;
6261 const Numeric CO_MPM89 = 1.00000;
6268 if ( model ==
"MPM89" )
6275 else if ( model ==
"MPM89Lines" )
6282 else if ( model ==
"MPM89Continuum" )
6289 else if ( model ==
"MPM89NoCoupling" )
6296 else if ( model ==
"MPM89NoCutoff" )
6304 else if ( model ==
"user" )
6314 os <<
"O2-MPM89: ERROR! Wrong model values given.\n"
6315 <<
"Valid models are: 'MPM89' 'MPM89Lines' 'MPM89Continuum' 'MPM89NoCoupling' 'MPM89NoCutoff'"
6316 <<
"and 'user'" <<
'\n';
6317 throw runtime_error(os.str());
6319 out3 <<
"O2-MPM89: (model=" << model <<
") parameter values in use:\n"
6320 <<
" CC = " << CC <<
"\n"
6321 <<
" CL = " << CL <<
"\n"
6322 <<
" CW = " << CW <<
"\n"
6323 <<
" CO = " << CO <<
"\n";
6338 const Numeric VMRISO = 0.2085;
6341 assert ( n_p==abs_t.
nelem() );
6342 assert ( n_p==vmr.
nelem() );
6346 assert ( n_f==pxsec.
nrows() );
6347 assert ( n_p==pxsec.
ncols() );
6350 for (
Index i=0; i<n_p; ++i )
6356 os <<
"ERROR: MPM89 O2 full absorption model has detected a O2 volume mixing ratio of "
6357 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6358 <<
"Therefore no calculation is performed.\n";
6359 throw runtime_error(os.str());
6364 Numeric theta = (300.0 / abs_t[i]);
6373 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6375 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6378 for (
Index s=0; s<n_f; ++s )
6385 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6390 for (
Index l = i_first; l <= i_last; ++l )
6393 Numeric strength = CL * mpm89[l][1] * 1.000e-6 * pda_dummy *
6394 pow(theta, (
Numeric)3.) * exp(mpm89[l][2]*(1.000-theta)) /
6397 Numeric gam = CW * ( mpm89[l][3] * 1.000e-3 *
6398 ( ( pda * pow(theta, ((
Numeric)0.80-mpm89[l][4]))) +
6399 (1.10 * pwv * theta) ) );
6401 Numeric delta = CO * ( (mpm89[l][5] + mpm89[l][6] * theta) * 1.000e-3 *
6402 pda * pow(theta, (
Numeric)0.8) );
6410 if (Nppl < 0.000) Nppl = 0.0000;
6416 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6475 const Numeric mpm92[44][7] = {
6476 { 50.474238, 0.094, 9.694, 0.850, 0.0, 0.210, 0.685},
6477 { 50.987749, 0.246, 8.694, 0.870, 0.0, 0.190, 0.680},
6478 { 51.503350, 0.608, 7.744, 0.890, 0.0, 0.171, 0.673},
6479 { 52.021410, 1.414, 6.844, 0.920, 0.0, 0.144, 0.664},
6480 { 52.542394, 3.102, 6.004, 0.940, 0.0, 0.118, 0.653},
6481 { 53.066907, 6.410, 5.224, 0.970, 0.0, 0.114, 0.621},
6482 { 53.595749, 12.470, 4.484, 1.000, 0.0, 0.200, 0.508},
6483 { 54.130000, 22.800, 3.814, 1.020, 0.0, 0.291, 0.375},
6484 { 54.671159, 39.180, 3.194, 1.050, 0.0, 0.325, 0.265},
6485 { 55.221367, 63.160, 2.624, 1.080, 0.0, 0.224, 0.295},
6486 { 55.783802, 95.350, 2.119, 1.110, 0.0, -0.144, 0.613},
6487 { 56.264775, 54.890, 0.015, 1.646, 0.0, 0.339, -0.098},
6488 { 56.363389, 134.400, 1.660, 1.144, 0.0, -0.258, 0.655},
6489 { 56.968206, 176.300, 1.260, 1.181, 0.0, -0.362, 0.645},
6490 { 57.612484, 214.100, 0.915, 1.221, 0.0, -0.533, 0.606},
6491 { 58.323877, 238.600, 0.626, 1.266, 0.0, -0.178, 0.044},
6492 { 58.446590, 145.700, 0.084, 1.449, 0.0, 0.650, -0.127},
6493 { 59.164207, 240.400, 0.391, 1.319, 0.0, -0.628, 0.231},
6494 { 59.590983, 211.200, 0.212, 1.360, 0.0, 0.665, -0.078},
6495 { 60.306061, 212.400, 0.212, 1.382, 0.0, -0.613, 0.070},
6496 { 60.434776, 246.100, 0.391, 1.297, 0.0, 0.606, -0.282},
6497 { 61.150560, 250.400, 0.626, 1.248, 0.0, 0.090, -0.058},
6498 { 61.800154, 229.800, 0.915, 1.207, 0.0, 0.496, -0.662},
6499 { 62.411215, 193.300, 1.260, 1.171, 0.0, 0.313, -0.676},
6500 { 62.486260, 151.700, 0.083, 1.468, 0.0, -0.433, 0.084},
6501 { 62.997977, 150.300, 1.665, 1.139, 0.0, 0.208, -0.668},
6502 { 63.568518, 108.700, 2.115, 1.110, 0.0, 0.094, -0.614},
6503 { 64.127767, 73.350, 2.620, 1.080, 0.0, -0.270, -0.289},
6504 { 64.678903, 46.350, 3.195, 1.050, 0.0, -0.366, -0.259},
6505 { 65.224071, 27.480, 3.815, 1.020, 0.0, -0.326, -0.368},
6506 { 65.764772, 15.300, 4.485, 1.000, 0.0, -0.232, -0.500},
6507 { 66.302091, 8.009, 5.225, 0.970, 0.0, -0.146, -0.609},
6508 { 66.836830, 3.946, 6.005, 0.940, 0.0, -0.147, -0.639},
6509 { 67.369598, 1.832, 6.845, 0.920, 0.0, -0.174, -0.647},
6510 { 67.900867, 0.801, 7.745, 0.890, 0.0, -0.198, -0.655},
6511 { 68.431005, 0.330, 8.695, 0.870, 0.0, -0.210, -0.660},
6512 { 68.960311, 0.128, 9.695, 0.850, 0.0, -0.220, -0.665},
6513 { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.031, 0.008},
6514 { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000},
6515 { 424.763124, 63.800, 0.044, 1.926, 0.6, 0.000, 0.000},
6516 { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000},
6517 { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000},
6518 { 773.839675, 67.100, 0.130, 1.810, 0.6, 0.000, 0.000},
6519 { 834.145330, 18.000, 0.147, 1.810, 0.6, 0.000, 0.000}};
6522 const Index i_first = 0;
6523 const Index i_last = 43;
6529 const Numeric CC_MPM92 = 1.00000;
6530 const Numeric CL_MPM92 = 1.00000;
6531 const Numeric CW_MPM92 = 1.00000;
6532 const Numeric CO_MPM92 = 1.00000;
6539 if ( model ==
"MPM92" )
6546 else if ( model ==
"MPM92Lines" )
6553 else if ( model ==
"MPM92Continuum" )
6560 else if ( model ==
"MPM92NoCoupling" )
6567 else if ( model ==
"MPM92NoCutoff" )
6575 else if ( model ==
"user" )
6585 os <<
"O2-MPM92: ERROR! Wrong model values given.\n"
6586 <<
"Valid models are: 'MPM92' 'MPM92Lines' 'MPM92Continuum' 'MPM92NoCoupling' 'MPM92NoCutoff'"
6587 <<
"and 'user'" <<
'\n';
6588 throw runtime_error(os.str());
6590 out3 <<
"O2-MPM92: (model=" << model <<
") parameter values in use:\n"
6591 <<
" CC = " << CC <<
"\n"
6592 <<
" CL = " << CL <<
"\n"
6593 <<
" CW = " << CW <<
"\n"
6594 <<
" CO = " << CO <<
"\n";
6601 const Numeric VMRISO = 0.2085;
6612 assert ( n_p==abs_t.
nelem() );
6613 assert ( n_p==vmr.
nelem() );
6617 assert ( n_f==pxsec.
nrows() );
6618 assert ( n_p==pxsec.
ncols() );
6621 for (
Index i=0; i<n_p; ++i )
6627 os <<
"ERROR: MPM92 O2 full absorption model has detected a O2 volume mixing ratio of "
6628 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6629 <<
"Therefore no calculation is performed.\n";
6630 throw runtime_error(os.str());
6635 Numeric theta = (300.0 / abs_t[i]);
6644 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6646 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6649 for (
Index s=0; s<n_f; ++s )
6656 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6661 for (
Index l = i_first; l <= i_last; ++l )
6664 Numeric strength = CL * 1.000e-6 * pda_dummy * mpm92[l][1] / mpm92[l][0] *
6665 pow(theta, (
Numeric)3.) * exp(mpm92[l][2]*(1.0-theta));
6667 Numeric gam = CW * ( mpm92[l][3] * 0.001 *
6668 ( ( pda * pow(theta, ((
Numeric)0.8-mpm92[l][4]))) +
6669 (1.10 * pwv * theta) ) );
6672 Numeric delta = CO * ( (mpm92[l][5] + mpm92[l][6] * theta) *
6673 (pda+pwv) * 0.001 * pow(theta, (
Numeric)0.8) );
6681 if (Nppl < 0.000) Nppl = 0.0000;
6687 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
6746 const Numeric mpm93[44][7] = {
6747 { 50.474238, 0.094, 9.694, 0.890, 0.0, 0.240, 0.790},
6748 { 50.987749, 0.246, 8.694, 0.910, 0.0, 0.220, 0.780},
6749 { 51.503350, 0.608, 7.744, 0.940, 0.0, 0.197, 0.774},
6750 { 52.021410, 1.414, 6.844, 0.970, 0.0, 0.166, 0.764},
6751 { 52.542394, 3.102, 6.004, 0.990, 0.0, 0.136, 0.751},
6752 { 53.066907, 6.410, 5.224, 1.020, 0.0, 0.131, 0.714},
6753 { 53.595749, 12.470, 4.484, 1.050, 0.0, 0.230, 0.584},
6754 { 54.130000, 22.800, 3.814, 1.070, 0.0, 0.335, 0.431},
6755 { 54.671159, 39.180, 3.194, 1.100, 0.0, 0.374, 0.305},
6756 { 55.221367, 63.160, 2.624, 1.130, 0.0, 0.258, 0.339},
6757 { 55.783802, 95.350, 2.119, 1.170, 0.0, -0.166, 0.705},
6758 { 56.264775, 54.890, 0.015, 1.730, 0.0, 0.390, -0.113},
6759 { 56.363389, 134.400, 1.660, 1.200, 0.0, -0.297, 0.753},
6760 { 56.968206, 176.300, 1.260, 1.240, 0.0, -0.416, 0.742},
6761 { 57.612484, 214.100, 0.915, 1.280, 0.0, -0.613, 0.697},
6762 { 58.323877, 238.600, 0.626, 1.330, 0.0, -0.205, 0.051},
6763 { 58.446590, 145.700, 0.084, 1.520, 0.0, 0.748, -0.146},
6764 { 59.164207, 240.400, 0.391, 1.390, 0.0, -0.722, 0.266},
6765 { 59.590983, 211.200, 0.212, 1.430, 0.0, 0.765, -0.090},
6766 { 60.306061, 212.400, 0.212, 1.450, 0.0, -0.705, 0.081},
6767 { 60.434776, 246.100, 0.391, 1.360, 0.0, 0.697, -0.324},
6768 { 61.150560, 250.400, 0.626, 1.310, 0.0, 0.104, -0.067},
6769 { 61.800154, 229.800, 0.915, 1.270, 0.0, 0.570, -0.761},
6770 { 62.411215, 193.300, 1.260, 1.230, 0.0, 0.360, -0.777},
6771 { 62.486260, 151.700, 0.083, 1.540, 0.0, -0.498, 0.097},
6772 { 62.997977, 150.300, 1.665, 1.200, 0.0, 0.239, -0.768},
6773 { 63.568518, 108.700, 2.115, 1.170, 0.0, 0.108, -0.706},
6774 { 64.127767, 73.350, 2.620, 1.130, 0.0, -0.311, -0.332},
6775 { 64.678903, 46.350, 3.195, 1.100, 0.0, -0.421, -0.298},
6776 { 65.224071, 27.480, 3.815, 1.070, 0.0, -0.375, -0.423},
6777 { 65.764772, 15.300, 4.485, 1.050, 0.0, -0.267, -0.575},
6778 { 66.302091, 8.009, 5.225, 1.020, 0.0, -0.168, -0.700},
6779 { 66.836830, 3.946, 6.005, 0.990, 0.0, -0.169, -0.735},
6780 { 67.369598, 1.832, 6.845, 0.970, 0.0, -0.200, -0.744},
6781 { 67.900867, 0.801, 7.745, 0.940, 0.0, -0.228, -0.753},
6782 { 68.431005, 0.330, 8.695, 0.920, 0.0, -0.240, -0.760},
6783 { 68.960311, 0.128, 9.695, 0.900, 0.0, -0.250, -0.765},
6784 { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.036, 0.009},
6785 { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000},
6786 { 424.763124, 63.800, 0.044, 1.930, 0.6, 0.000, 0.000},
6787 { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000},
6788 { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000},
6789 { 773.839675, 67.100, 0.130, 1.820, 0.6, 0.000, 0.000},
6790 { 834.145330, 18.000, 0.147, 1.810 , 0.6, 0.000, 0.000}};
6792 const Index i_first = 0;
6793 const Index i_last = 43;
6799 const Numeric CC_MPM93 = 1.00000;
6800 const Numeric CL_MPM93 = 1.00000;
6801 const Numeric CW_MPM93 = 1.00000;
6802 const Numeric CO_MPM93 = 1.00000;
6809 if ( model ==
"MPM93" )
6816 else if ( model ==
"MPM93Lines" )
6823 else if ( model ==
"MPM93Continuum" )
6830 else if ( model ==
"MPM93NoCoupling" )
6837 else if ( model ==
"MPM93NoCutoff" )
6848 else if ( model ==
"user" )
6858 os <<
"O2-MPM93: ERROR! Wrong model values given.\n"
6859 <<
"Valid models are: 'MPM93' 'MPM93Lines' 'MPM93Continuum' 'MPM93NoCoupling' 'MPM93NoCutoff'"
6860 <<
"and 'user'" <<
'\n';
6861 throw runtime_error(os.str());
6863 out3 <<
"O2-MPM93: (model=" << model <<
") parameter values in use:\n"
6864 <<
" CC = " << CC <<
"\n"
6865 <<
" CL = " << CL <<
"\n"
6866 <<
" CW = " << CW <<
"\n"
6867 <<
" CO = " << CO <<
"\n";
6874 const Numeric VMRISO = 0.2085;
6885 assert ( n_p==abs_t.
nelem() );
6886 assert ( n_p==vmr.
nelem() );
6890 assert ( n_f==pxsec.
nrows() );
6891 assert ( n_p==pxsec.
ncols() );
6894 for (
Index i=0; i<n_p; ++i )
6900 os <<
"ERROR: MPM93 O2 full absorption model has detected a O2 volume mixing ratio of "
6901 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
6902 <<
"Therefore no calculation is performed.\n";
6903 throw runtime_error(os.str());
6908 Numeric theta = (300.0 / abs_t[i]);
6918 Numeric strength_cont = S0 * pda_dummy * pow( theta, (
Numeric)2. );
6920 Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 );
6923 for (
Index s=0; s<n_f; ++s )
6930 Numeric Nppc = CC * strength_cont * ff * gam_cont /
6932 + pow( gam_cont, (
Numeric)2.) );
6936 for (
Index l = i_first; l <= i_last; ++l )
6939 Numeric strength = CL * 1.000e-6 * pda_dummy *
6940 mpm93[l][1] / mpm93[l][0] *
6941 pow(theta, (
Numeric)3.) * exp(mpm93[l][2]*(1.0-theta));
6943 Numeric gam = CW * ( mpm93[l][3] * 0.001 *
6944 ( ( pda * pow(theta, ((
Numeric)0.8-mpm93[l][4]))) +
6945 (1.10 * pwv * theta) ) );
6948 Numeric delta = CO * ( (mpm93[l][5] + mpm93[l][6] * theta) *
6949 (pda+pwv) * pow(theta, (
Numeric)0.8)
6958 if (Nppl < 0.000) Nppl = 0.0000;
6964 pxsec(s,i) +=
dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO;
7040 const Index n_lines = 40;
7044 const Numeric F93[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466,
7045 60.3061, 59.5910, 59.1642, 60.4348,
7046 58.3239, 61.1506, 57.6125, 61.8002,
7047 56.9682, 62.4112, 56.3634, 62.9980,
7048 55.7838, 63.5685, 55.2214, 64.1278,
7049 54.6712, 64.6789, 54.1300, 65.2241,
7050 53.5957, 65.7648, 53.0669, 66.3021,
7051 52.5424, 66.8368, 52.0214, 67.3696,
7052 51.5034, 67.9009, 368.4984, 424.7631,
7053 487.2494, 715.3932, 773.8397, 834.1453};
7056 const Numeric F98[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466, 60.3061, 59.5910,
7057 59.1642, 60.4348, 58.3239, 61.1506, 57.6125, 61.8002,
7058 56.9682, 62.4112, 56.3634, 62.9980, 55.7838, 63.5685,
7059 55.2214, 64.1278, 54.6712, 64.6789, 54.1300, 65.2241,
7060 53.5957, 65.7648, 53.0669, 66.3021, 52.5424, 66.8368,
7061 52.0214, 67.3696, 51.5034, 67.9009, 368.4984, 424.7632,
7062 487.2494, 715.3931, 773.8397, 834.1458};
7066 const Numeric S93[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14,
7067 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14,
7068 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14,
7069 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14,
7070 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14,
7071 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15,
7072 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15,
7073 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16,
7074 0.8191E-17, 0.1423E-16, 0.6460E-15, 0.7047E-14,
7075 0.3011E-14, 0.1826E-14, 0.1152E-13, 0.3971E-14};
7078 const Numeric S98[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14,
7079 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14,
7080 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14,
7081 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14,
7082 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14,
7083 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15,
7084 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15,
7085 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16,
7086 0.8191E-17, 0.1423E-16, 0.6494E-15, 0.7083E-14,
7087 0.3025E-14, 0.1835E-14, 0.1158E-13, 0.3993E-14};
7090 const Numeric BE[n_lines] = { 0.009, 0.015, 0.083, 0.084,
7091 0.212, 0.212, 0.391, 0.391,
7092 0.626, 0.626, 0.915, 0.915,
7093 1.260, 1.260, 1.660, 1.665,
7094 2.119, 2.115, 2.624, 2.625,
7095 3.194, 3.194, 3.814, 3.814,
7096 4.484, 4.484, 5.224, 5.224,
7097 6.004, 6.004, 6.844, 6.844,
7098 7.744, 7.744, 0.048, 0.044,
7099 0.049, 0.145, 0.141, 0.145};
7106 const Numeric W300[n_lines] = { 1.630, 1.646, 1.468, 1.449,
7107 1.382, 1.360, 1.319, 1.297,
7108 1.266, 1.248, 1.221, 1.207,
7109 1.181, 1.171, 1.144, 1.139,
7110 1.110, 1.108, 1.079, 1.078,
7111 1.050, 1.050, 1.020, 1.020,
7112 1.000, 1.000, 0.970, 0.970,
7113 0.940, 0.940, 0.920, 0.920,
7114 0.890, 0.890, 1.920, 1.920,
7115 1.920, 1.810, 1.810, 1.810};
7118 const Numeric Y93[n_lines] = { -0.0233, 0.2408, -0.3486, 0.5227,
7119 -0.5430, 0.5877, -0.3970, 0.3237,
7120 -0.1348, 0.0311, 0.0725, -0.1663,
7121 0.2832, -0.3629, 0.3970, -0.4599,
7122 0.4695, -0.5199, 0.5187, -0.5597,
7123 0.5903, -0.6246, 0.6656, -0.6942,
7124 0.7086, -0.7325, 0.7348, -0.7546,
7125 0.7702, -0.7864, 0.8083, -0.8210,
7126 0.8439, -0.8529, 0.0000, 0.0000,
7127 0.0000, 0.0000, 0.0000, 0.0000};
7132 const Numeric Y88[n_lines] = { -0.0244, 0.2772, -0.4068, 0.6270,
7133 -0.6183, 0.6766, -0.4119, 0.3290,
7134 0.0317, -0.1591, 0.1145, -0.2068,
7135 0.3398, -0.4158, 0.3922, -0.4482,
7136 0.4011, -0.4442, 0.4339, -0.4687,
7137 0.4783, -0.5074, 0.5157, -0.5403,
7138 0.5400, -0.5610, 0.5719, -0.5896,
7139 0.6046, -0.6194, 0.6347, -0.6468,
7140 0.6627, -0.6718, 0.0000, 0.0000,
7141 0.0000, 0.0000, 0.0000, 0.0000};
7144 const Numeric V[n_lines] ={ 0.0079, -0.0978, 0.0844, -0.1273,
7145 0.0699, -0.0776, 0.2309, -0.2825,
7146 0.0436, -0.0584, 0.6056, -0.6619,
7147 0.6451, -0.6759, 0.6547, -0.6675,
7148 0.6135, -0.6139, 0.2952, -0.2895,
7149 0.2654, -0.2590, 0.3750, -0.3680,
7150 0.5085, -0.5002, 0.6206, -0.6091,
7151 0.6526, -0.6393, 0.6640, -0.6475,
7152 0.6729, -0.6545, 0.0000, 0.0000,
7153 0.0000, 0.0000, 0.0000, 0.0000};
7155 const Index first_line = 0;
7156 const Index last_line = 39;
7162 const Numeric CC_PWR93 = 1.00000;
7163 const Numeric CL_PWR93 = 1.00000;
7164 const Numeric CW_PWR93 = 1.00000;
7165 const Numeric CO_PWR93 = 1.00000;
7170 Numeric CC, CL, CW, CO, Y300[n_lines], S300[n_lines], F[n_lines];
7173 if ( model ==
"Rosenkranz" )
7180 else if ( model ==
"RosenkranzLines" )
7187 else if ( model ==
"RosenkranzContinuum" )
7194 else if ( model ==
"RosenkranzNoCoupling" )
7201 else if ( model ==
"user" )
7211 os <<
"O2-PWR93: ERROR! Wrong model values given.\n"
7212 <<
"Valid models are: 'Rosenkranz', 'RosenkranzLines', RosenkranzContinuum, "
7213 <<
"'RosenkranzNoCoupling', and 'user'" <<
'\n';
7214 throw runtime_error(os.str());
7216 out3 <<
"O2-PWR93: (model=" << model <<
") parameter values in use:\n"
7217 <<
" CC = " << CC <<
"\n"
7218 <<
" CL = " << CL <<
"\n"
7219 <<
" CW = " << CW <<
"\n"
7220 <<
" CO = " << CO <<
"\n";
7224 if ( (version !=
"PWR98") && (version !=
"PWR93") && (version !=
"PWR88") )
7227 os <<
"O2-PWR93/PWR88: ERROR! Wrong version is selected.\n"
7228 <<
"Valid versions are:\n"
7229 <<
" 'PWR98' updates of F and S to HISTRAN96 and M.J.Schwartz, MIT, 1997\n"
7230 <<
" suggestions implemented.\n"
7231 <<
" 'PWR93' for the oxygen absorption model described in \n"
7232 <<
" P. W. Rosenkranz, Chapter 2, in M. A. Janssen,\n"
7233 <<
" Atmospheric Remote Sensing by Microwave Radiometry,\n"
7234 <<
" John Wiley & Sons, Inc., 1993.\n"
7235 <<
" 'PWR88' for the oxygen absorption model described in \n"
7236 <<
" P. W. Rosenkranz, Interference coefficients for the \n"
7237 <<
" overlapping oxygen lines in air, \n"
7238 <<
" JQSRT, 1988, Volume 39, 287-297.\n";
7239 throw runtime_error(os.str());
7244 if ( version ==
"PWR88" ) {
7245 for (
Index i=0; i<n_lines; ++i )
7252 if ( version ==
"PWR93" ) {
7253 for (
Index i=0; i<n_lines; ++i )
7260 if ( version ==
"PWR98" ) {
7261 for (
Index i=0; i<n_lines; ++i )
7273 assert ( n_p==abs_t.
nelem() );
7274 assert ( n_p==vmr.
nelem() );
7278 assert ( n_f==pxsec.
nrows() );
7279 assert ( n_p==pxsec.
ncols() );
7282 for (
Index i=0; i<n_p; ++i )
7288 os <<
"ERROR: PWR93 O2 full absorption model has detected a O2 volume mixing ratio of "
7289 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
7290 <<
"Therefore no calculation is performed.\n";
7291 throw runtime_error(os.str());
7295 Numeric TH = 3.0000e2 / abs_t[i];
7301 Numeric DEN = 0.001*(PRESDA*B + 1.1*PRESWV*TH);
7302 Numeric DENS = 0.001*(PRESDA + 1.1*PRESWV)*TH;
7306 Numeric CCONT = CC * 1.23e-10 * pow( TH, (
Numeric)2. ) * abs_p[i];
7309 for (
Index s=0; s<n_f; ++s )
7318 Numeric CONT = CCONT * (ff * ff * DFNR / (ff*ff + DFNR*DFNR));
7322 for (
Index l=first_line; l<=last_line; ++l )
7324 Numeric DF = CW * W300[l] * DEN;
7326 if ( (version ==
"PWR98") && (fabs((F[l]-118.75)) < 0.10) )
7328 DF = CW * W300[l] * DENS;
7330 Numeric Y = CO * 0.001 * 0.01 * abs_p[i] * B * ( Y300[l] + V[l]*TH1 );
7331 Numeric STR = CL * S300[l] * exp(-BE[l] * TH1);
7332 Numeric SF1 = ( DF + (ff-F[l])*Y ) / ( (ff-F[l])*(ff-F[l]) + DF*DF );
7333 Numeric SF2 = ( DF - (ff+F[l])*Y ) / ( (ff+F[l])*(ff+F[l]) + DF*DF );
7334 SUM += STR * (SF1+SF2) * (ff/F[l]) * (ff/F[l]);
7348 pxsec(s,i) += CONT + (2.414322e7 * SUM * abs_p[i] * pow(TH, (
Numeric)3.) /
PI);
7415 const Numeric S0_MPM93 = 6.140e-13;
7416 const Numeric G0_MPM93 = 0.560e4;
7417 const Numeric XS0_MPM93 = 2.000;
7418 const Numeric XG0_MPM93 = 0.800;
7424 if ( model ==
"MPM93" )
7431 else if ( model ==
"user" )
7441 os <<
"O2-SelfContMPM93: ERROR! Wrong model values given.\n"
7442 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
7443 throw runtime_error(os.str());
7445 out3 <<
"O2-SelfContMPM93: (model=" << model <<
") parameter values in use:\n"
7446 <<
" S0 = " << S0 <<
"\n"
7447 <<
" G0 = " << G0 <<
"\n"
7448 <<
" XS0 = " << XS0 <<
"\n"
7449 <<
" XG0 = " << XG0 <<
"\n";
7456 assert ( n_p==abs_t.
nelem() );
7457 assert ( n_p==vmr.
nelem() );
7461 assert ( n_f==pxsec.
nrows() );
7462 assert ( n_p==pxsec.
ncols() );
7468 const Numeric VMRISO = 0.2085;
7472 for (
Index i=0; i<n_p; ++i )
7477 os <<
"ERROR: MPM93 O2 continuum absorption model has detected a O2 volume mixing ratio of "
7478 << vmr[i] <<
" which is below the threshold of " <<
VMRCalcLimit <<
".\n"
7479 <<
"Therefore no calculation is performed.\n";
7480 throw runtime_error(os.str());
7483 Numeric th = 300.0 / abs_t[i];
7485 Numeric strength = S0 * abs_p[i] * (1.0000 - abs_h2o[i]) * pow( th, XS0 );
7487 Numeric gamma = G0 * abs_p[i] * pow( th, XG0 );
7490 for (
Index s=0; s<n_f; ++s )
7495 (strength / VMRISO) *
7496 ( pow( f_grid[s], (
Numeric)2.) * gamma /
7560 const Numeric S0_PWR93 = 1.11e-14;
7561 const Numeric G0_PWR93 = 5600.000;
7562 const Numeric XS0_PWR93 = 2.000;
7563 const Numeric XG0_PWR93 = 0.800;
7568 if ( model ==
"Rosenkranz" )
7575 else if ( model ==
"user" )
7585 os <<
"O2-SelfContPWR93: ERROR! Wrong model values given.\n"
7586 <<
"Valid models are: 'Rosenkranz' and 'user'" <<
'\n';
7587 throw runtime_error(os.str());
7589 out3 <<
"O2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
7590 <<
" S0 = " << S0 <<
"\n"
7591 <<
" G0 = " << G0 <<
"\n"
7592 <<
" XS0 = " << XS0 <<
"\n"
7593 <<
" XG0 = " << XG0 <<
"\n";
7600 assert ( n_p==abs_t.
nelem() );
7601 assert ( n_p==vmr.nelem() );
7605 assert ( n_f==pxsec.
nrows() );
7606 assert ( n_p==pxsec.
ncols() );
7609 for (
Index i=0; i<n_p; ++i )
7611 Numeric TH = 300.00 / abs_t[i];
7613 Numeric ph2o = abs_p[i] * abs_h2o[i];
7614 Numeric pdry = abs_p[i] - ph2o;
7618 Numeric gamma = G0 * (pdry * pow( TH, XG0 ) + 1.100 * ph2o * TH);
7621 for (
Index s=0; s<n_f; ++s )
7625 pxsec(s,i) += S0 * abs_p[i] / pow( abs_t[i], XS0 ) *
7626 ( pow( f_grid[s], (
Numeric)2. )
7627 * gamma / ( pow( f_grid[s], 2 )
7628 + pow( gamma, (
Numeric)2. ) ) ) ;
7695 const Numeric G0_PWR93 = 5600.000;
7696 const Numeric G0A_PWR93 = 1.000;
7697 const Numeric G0B_PWR93 = 1.100;
7698 const Numeric XG0d_PWR93 = 0.800;
7699 const Numeric XG0w_PWR93 = 1.000;
7709 const Numeric G0_MPM93 = 5600.000;
7710 const Numeric G0A_MPM93 = 1.000;
7711 const Numeric G0B_MPM93 = 1.000;
7712 const Numeric XG0d_MPM93 = 0.800;
7713 const Numeric XG0w_MPM93 = 0.800;
7717 Numeric C, G0, G0A, G0B, XG0d, XG0w;
7718 if ( model ==
"Rosenkranz" )
7727 else if ( model ==
"MPM93" )
7736 else if ( model ==
"user" )
7748 os <<
"O2-GenerealCont: ERROR! Wrong model values given.\n"
7749 <<
"Valid models are: 'Rosenkranz', 'MPM93' and 'user'" <<
'\n';
7750 throw runtime_error(os.str());
7752 out3 <<
"O2-GeneralCont: (model=" << model <<
") parameter values in use:\n"
7753 <<
" C = " << C <<
"\n"
7754 <<
" G0 = " << G0 <<
"\n"
7755 <<
" G0A = " << G0A <<
"\n"
7756 <<
" G0B = " << G0B <<
"\n"
7757 <<
" XG0d = " << XG0d <<
"\n"
7758 <<
" XG0w = " << XG0w <<
"\n";
7765 assert ( n_p==abs_t.
nelem() );
7766 assert ( n_p==vmr.nelem() );
7770 assert ( n_f==pxsec.
nrows() );
7771 assert ( n_p==pxsec.
ncols() );
7780 for (
Index i=0; i<n_p; ++i )
7782 Numeric TH = 3.0e2 / abs_t[i];
7784 Numeric ph2o = abs_p[i] * abs_h2o[i];
7785 Numeric pdry = abs_p[i] - ph2o;
7789 Numeric gamma = G0 * (G0A * pdry * pow( TH, XG0d ) + G0B * ph2o * pow( TH, XG0w ));
7792 for (
Index s=0; s<n_f; ++s )
7796 pxsec(s,i) += C * abs_p[i] * pow( TH, (
Numeric)2. ) *
7797 ( gamma * pow( f_grid[s], (
Numeric)2. ) /
7798 ( pow( f_grid[s], 2 ) + pow( gamma, (
Numeric)2. ) ) );
7862 if ( model ==
"BF86" )
7866 else if ( model ==
"user" )
7873 os <<
"N2-SelfContBorysow: ERROR! Wrong model values given.\n"
7874 <<
"allowed models are: 'BF86', 'user'" <<
'\n';
7875 throw runtime_error(os.str());
7878 out3 <<
"N2-SelfContBorysow: (model=" << model <<
") parameter values in use:\n"
7879 <<
" XFAC = " << XFAC <<
"\n";
7885 const Numeric AMAG2DEN = 44.53807;
7886 const Numeric RIDGAS = 8.314510;
7889 assert ( n_p==abs_t.
nelem() );
7890 assert ( n_p==vmr.
nelem() );
7894 assert ( n_f==pxsec.
nrows() );
7895 assert ( n_p==pxsec.
ncols() );
7898 for (
Index i=0; i<n_p; ++i )
7901 double T = (double) abs_t[i];
7905 Numeric XAMA = (abs_p[i]) / ( AMAG2DEN * RIDGAS * abs_t[i] );
7910 for (
Index s=0; s<n_f; ++s )
7914 double f = (double) f_grid[s];
7917 pxsec(s,i) += (
Numeric) (cont * 1.000e2 * vmr[i] * XAMA2);
7983 const Numeric xT_MPM93 = 3.500;
7984 const Numeric xf_MPM93 = 1.500;
7985 const Numeric gxf_MPM93 = 9.000*xf_MPM93;
7986 const Numeric S_MPM93 = 2.296e-31;
7987 const Numeric G_MPM93 = 1.930e-5*pow((
Numeric)10.000, -gxf_MPM93);
7992 if ( model ==
"MPM93" )
8000 else if ( model ==
"MPM93Scale" )
8008 else if ( model ==
"user" )
8019 os <<
"N2-SelfContMPM93 : ERROR! Wrong model values given.\n"
8020 <<
"allowed models are: 'MPM93', 'MPM93Scale' or 'user'" <<
'\n';
8021 throw runtime_error(os.str());
8024 out3 <<
"N2-SelfContMPM93: (model=" << model <<
") parameter values in use:\n"
8025 <<
" S0 = " << S0 <<
"\n"
8026 <<
" G0 = " << G0 <<
"\n"
8027 <<
" xT = " << xT <<
"\n"
8028 <<
" xf = " << xf <<
"\n";
8038 assert ( n_p==abs_t.
nelem() );
8039 assert ( n_p==vmr.
nelem() );
8043 assert ( n_f==pxsec.
nrows() );
8044 assert ( n_p==pxsec.
ncols() );
8048 for (
Index i=0; i<n_p; ++i )
8050 Numeric th = 300.0 / abs_t[i];
8052 pow( (abs_p[i] * ((
Numeric)1.0000 - abs_h2o[i])),
8057 for (
Index s=0; s<n_f; ++s )
8062 pxsec(s,i) +=
fac * strength *
8064 ( 1.000 + G0 * pow( f_grid[s], xf) ) *
8113 const Numeric C_ATM = 2.612e-6;
8118 if ( model ==
"ATM" )
8122 else if ( model ==
"user" )
8129 os <<
"N2-DryContATM01: ERROR! Wrong model values given.\n"
8130 <<
"allowed models are: 'ATM', 'user'" <<
'\n';
8131 throw runtime_error(os.str());
8133 out3 <<
"N2-DryContATM01: (model=" << model <<
") parameter values in use:\n"
8134 <<
" C_s = " << C <<
"\n";
8140 assert ( n_p==abs_t.
nelem() );
8141 assert ( n_p==vmr.
nelem() );
8145 assert ( n_f==pxsec.
nrows() );
8146 assert ( n_p==pxsec.
ncols() );
8149 for (
Index i=0; i<n_p; ++i )
8155 Numeric pd = abs_p[i] * ( 1.00000e0 - h2ovmr[i] );
8159 for (
Index s=0; s<n_f; ++s )
8218 const Numeric C_PWR = 1.05e-38;
8224 if ( model ==
"Rosenkranz" )
8229 else if ( model ==
"user" )
8237 os <<
"N2-SelfContPWR93: ERROR! Wrong model values given.\n"
8238 <<
"allowed models are: 'Rosenkranz', 'user'" <<
'\n';
8239 throw runtime_error(os.str());
8241 out3 <<
"N2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
8242 <<
" C_s = " << C <<
"\n"
8243 <<
" x_s = " << x <<
"\n";
8249 assert ( n_p==abs_t.
nelem() );
8250 assert ( n_p==vmr.
nelem() );
8254 assert ( n_f==pxsec.
nrows() );
8255 assert ( n_p==pxsec.
ncols() );
8258 for (
Index i=0; i<n_p; ++i )
8261 for (
Index s=0; s<n_f; ++s )
8266 pow( f_grid[s], (
Numeric)2. ) *
8267 pow( (
Numeric)300.0/abs_t[i], x ) *
8268 pow( abs_p[i], (
Numeric)2. ) *
8326 const Numeric C_GM = 1.05e-38;
8334 if ( model ==
"Rosenkranz" )
8341 else if ( model ==
"user" )
8351 os <<
"N2-SelfContStandardType: ERROR! Wrong model values given.\n"
8352 <<
"allowed models are: 'Rosenkranz', 'user'" <<
'\n';
8353 throw runtime_error(os.str());
8355 out3 <<
"N2-SelfContStandardType: (model=" << model <<
") parameter values in use:\n"
8356 <<
" C = " << C <<
"\n"
8357 <<
" xt = " << xt <<
"\n"
8358 <<
" xf = " << xf <<
"\n"
8359 <<
" xp = " << xp <<
"\n";
8366 assert ( n_p==abs_t.
nelem() );
8367 assert ( n_p==vmr.
nelem() );
8371 assert ( n_f==pxsec.
nrows() );
8372 assert ( n_p==pxsec.
ncols() );
8375 for (
Index i=0; i<n_p; ++i )
8379 for (
Index s=0; s<n_f; ++s )
8384 pow( ((
Numeric)300.00/abs_t[i]), xt ) *
8385 pow( f_grid[s], xf ) *
8386 pow( abs_p[i], xp ) *
8387 pow( vmr[i], (xp-(
Numeric)1.) );
8438 const Numeric C_PWR = 7.43e-37;
8444 if ( model ==
"Rosenkranz" )
8449 else if ( model ==
"user" )
8457 os <<
"CO2-SelfContPWR93 : ERROR! Wrong model values given.\n"
8458 <<
"allowed models are: 'Rosenkranz', 'user'" <<
"\n";
8459 throw runtime_error(os.str());
8462 out3 <<
"CO2-SelfContPWR93: (model=" << model <<
") parameter values in use:\n"
8463 <<
" C = " << C <<
"\n"
8464 <<
" x = " << x <<
"\n";
8470 assert ( n_p==abs_t.
nelem() );
8471 assert ( n_p==vmr.
nelem() );
8475 assert ( n_f==pxsec.
nrows() );
8476 assert ( n_p==pxsec.
ncols() );
8479 for (
Index i=0; i<n_p; ++i )
8485 C * pow( (
Numeric)300./abs_t[i], x ) * pow( abs_p[i], (
Numeric)2. ) * vmr[i];
8488 for (
Index s=0; s<n_f; ++s )
8490 pxsec(s,i) += dummy * pow( f_grid[s], (
Numeric)2. );
8539 const Numeric C_PWR = 2.71e-37;
8545 if ( model ==
"Rosenkranz" )
8550 else if ( model ==
"user" )
8558 os <<
"CO2-ForeignContPWR93: ERROR! Wrong model values given.\n"
8559 <<
"allowed models are: 'Rosenkranz', 'user'" <<
"\n";
8560 throw runtime_error(os.str());
8563 out3 <<
"CO2-ForeignContPWR93: (model=" << model <<
") parameter values in use:\n"
8564 <<
" C = " << C <<
"\n"
8565 <<
" x = " << x <<
"\n";
8571 assert ( n_p==abs_t.
nelem() );
8572 assert ( n_p==vmr.nelem() );
8576 assert ( n_f==pxsec.
nrows() );
8577 assert ( n_p==pxsec.
ncols() );
8580 for (
Index i=0; i<n_p; ++i )
8585 Numeric dummy = C * pow( (
Numeric)300./abs_t[i], x ) * abs_p[i] * abs_p[i] * abs_n2[i];
8588 for (
Index s=0; s<n_f; ++s )
8590 pxsec(s,i) += dummy * pow( f_grid[s], (
Numeric)2. );
8649 const Numeric CC_MPM93 = 1.00000;
8650 const Numeric CG_MPM93 = 1.00000;
8651 const Numeric CE_MPM93 = 1.00000;
8657 if ( model ==
"MPM93" )
8663 else if ( model ==
"user" )
8672 os <<
"liquidcloud-MPM93: ERROR! Wrong model values given.\n"
8673 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
8674 throw runtime_error(os.str());
8676 out3 <<
"liquidcloud-MPM93: (model=" << model <<
") parameter values in use:\n"
8677 <<
" CC = " << CC <<
"\n"
8678 <<
" CG = " << CG <<
"\n"
8679 <<
" CE = " << CE <<
"\n";
8683 const Numeric low_lim_den = 0.000;
8684 const Numeric high_lim_den = 10.00e-3;
8690 assert ( n_p==abs_t.
nelem() );
8691 assert ( n_p==vmr.
nelem() );
8695 assert ( n_f==pxsec.
nrows() );
8696 assert ( n_p==pxsec.
ncols() );
8699 for (
Index i=0; i<n_p; ++i )
8709 if ( (vmr[i] > low_lim_den) && (vmr[i] < high_lim_den) )
8712 Numeric theta = 300.000 / abs_t[i];
8714 Numeric gamma1 = CG * 20.20 - 146.40*(theta-1.000) + 316.00*(theta-1.000)*(theta-1.000);
8716 Numeric gamma2 = 39.80 * gamma1;
8718 Numeric epsilon0 = CE * 103.30 * (theta-1.000) + 77.66;
8719 Numeric epsilon1 = 0.0671 * epsilon0;
8723 for (
Index s=0; s<n_f; ++s )
8726 Numeric Reepsilon = epsilon0 -
8728 ( ((epsilon0-epsilon1)/
8731 ((epsilon1-epsilon2)/
8733 + pow(gamma2,(
Numeric)2.))) );
8736 ( (gamma1*(epsilon0-epsilon1)/
8739 (gamma2*(epsilon1-epsilon2)/
8741 + pow(gamma2,(
Numeric)2.))) );
8752 + pow(Imepsilon,(
Numeric)2.) ) );
8761 if ( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) )
8764 os <<
"ERROR in MPM93WaterDropletAbs:\n"
8765 <<
" suspended water droplet density (valid range 0.00-10.00e-3 kg/m3):" << vmr[i] <<
"\n"
8766 <<
" ==> no calculation performed!\n";
8767 throw runtime_error(os.str());
8827 const Numeric CC_MPM93 = 1.00000;
8828 const Numeric CA_MPM93 = 1.00000;
8829 const Numeric CB_MPM93 = 1.00000;
8835 if ( model ==
"MPM93" )
8841 else if ( model ==
"user" )
8850 os <<
"icecloud-MPM93: ERROR! Wrong model values given.\n"
8851 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
8852 throw runtime_error(os.str());
8854 out3 <<
"icecloud-MPM93: (model=" << model <<
") parameter values in use:\n"
8855 <<
" CC = " << CC <<
"\n"
8856 <<
" CA = " << CA <<
"\n"
8857 <<
" CB = " << CB <<
"\n";
8861 const Numeric low_lim_den = 0.000;
8862 const Numeric high_lim_den = 10.00e-3;
8868 assert ( n_p==abs_t.
nelem() );
8869 assert ( n_p==vmr.
nelem() );
8873 assert ( n_f==pxsec.
nrows() );
8874 assert ( n_p==pxsec.
ncols() );
8879 for (
Index i=0; i<n_p; ++i )
8889 if ( (vmr[i] > low_lim_den) && (vmr[i] < high_lim_den) )
8892 Numeric theta = 300.000 / abs_t[i];
8894 Numeric ai = CA * (62.000 * theta - 11.600) * exp(-22.100 * (theta-1.000)) * 1.000e-4;
8897 ( -24.17 + (116.79/theta)
8901 for (
Index s=0; s<n_f; ++s )
8918 + pow(Imepsilon,(
Numeric)2.) ) );
8927 if ( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) )
8930 os <<
"ERROR in MPM93IceCrystalAbs:\n"
8931 <<
" suspended ice particle density (valid range: 0-10.0e-3 kg/m3):" << vmr[i] <<
"\n"
8932 <<
" ==> no calculation performed!\n";
8933 throw runtime_error(os.str());
8988 const Numeric CE_MPM93 = 1.00000;
8989 const Numeric CA_MPM93 = 1.00000;
8990 const Numeric CB_MPM93 = 1.00000;
8996 if ( model ==
"MPM93" )
9002 else if ( model ==
"user" )
9011 os <<
"rain-MPM93: ERROR! Wrong model values given.\n"
9012 <<
"Valid models are: 'MPM93' and 'user'" <<
'\n';
9013 throw runtime_error(os.str());
9015 out3 <<
"rain-MPM93: (model=" << model <<
") parameter values in use:\n"
9016 <<
" CE = " << CE <<
"\n"
9017 <<
" CA = " << CA <<
"\n"
9018 <<
" CB = " << CB <<
"\n";
9021 const Numeric low_lim_rr = 0.000;
9022 const Numeric high_lim_rr = 150.000;
9028 assert ( n_p==abs_t.nelem() );
9029 assert ( n_p==vmr.
nelem() );
9033 assert ( n_f==pxsec.
nrows() );
9034 assert ( n_p==pxsec.
ncols() );
9037 for (
Index i=0; i<n_p; ++i )
9053 if ( (vmr[i] >= low_lim_rr) && (vmr[i] < high_lim_rr) )
9056 for (
Index s=0; s<n_f; ++s )
9065 if ( f_grid[s] <= 2.9e9 )
9070 else if ( f_grid[s] <= 54.0e9 )
9075 else if ( f_grid[s] <= 180e9 )
9080 else if ( f_grid[s] <= 1000e9 )
9088 os <<
"ERROR in MPM93RainExt:\n"
9089 <<
" frequency (valid range 0-1000 GHz):" << f_grid[s]*
Hz_to_GHz <<
"\n"
9090 <<
" ==> no calculation performed!\n";
9091 throw runtime_error(os.str());
9094 if ( f_grid[s] <= 8.5e9 )
9099 else if ( f_grid[s] <= 25.0e9 )
9104 else if ( f_grid[s] <= 164.0e9 )
9109 else if ( f_grid[s] <= 1000e9 )
9117 os <<
"ERROR in MPM93RainExt:\n"
9118 <<
" frequency (valid range 0-1000 GHz):" << f_grid[s]*
Hz_to_GHz <<
"\n"
9119 <<
" ==> no calculation performed!\n";
9120 throw runtime_error(os.str());
9124 else if (vmr[i] > 25)
9127 if ( f_grid[s] <= 4.9e9 )
9132 else if ( f_grid[s] <= 10.7e9 )
9137 else if ( f_grid[s] <= 40.1e9 )
9142 else if ( f_grid[s] <= 59.1e9 )
9147 else if ( f_grid[s] <= 100e9 )
9155 os <<
"ERROR in MPM93RainExt:\n"
9156 <<
" frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" << f_grid[s]*
Hz_to_GHz <<
"\n"
9157 <<
" ==> no calculation performed!\n";
9158 throw runtime_error(os.str());
9161 if ( f_grid[s] <= 6.2e9 )
9166 else if ( f_grid[s] <= 23.8e9 )
9171 else if ( f_grid[s] <= 48.4e9 )
9176 else if ( f_grid[s] <= 68.2e9 )
9181 else if ( f_grid[s] <= 100e9 )
9189 os <<
"ERROR in MPM93RainExt:\n"
9190 <<
" frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" << f_grid[s]*
Hz_to_GHz <<
"\n"
9191 <<
" ==> no calculation performed!\n";
9192 throw runtime_error(os.str());
9201 Numeric ext_rain = CA * a_rain * pow(vmr[i],(CB*b_rain));
9210 if ( (vmr[i] < low_lim_rr) || (vmr[i] > high_lim_rr) )
9213 os <<
"ERROR in MPM93RainExt:\n"
9214 <<
" rain rate (valid range 0.00-150.00 mm/h):" << vmr[i] <<
"\n"
9215 <<
" ==> no calculation performed!\n";
9216 throw runtime_error(os.str());
9266 double f_minus, f_plus ;
9270 f_minus = 1.000 / ((f-fl)*(f-fl) + gamma*gamma);
9273 f_plus = 1.000 / ((f+fl)*(f+fl) + gamma*gamma);
9276 value = fabs(f/fl) * gamma * (f_minus + f_plus);
9325 double f_minus, f_plus ;
9329 f_minus = (gamma - delta * (fl-f)) / ((fl-f)*(fl-f) + gamma*gamma);
9332 f_plus = (gamma - delta * (fl+f)) / ((fl+f)*(fl+f) + gamma*gamma);
9335 value = f * (f_minus + f_plus);
9371 os <<
"In WVSatPressureLiquidWater:\n"
9372 <<
"temperature negative: T=" << t <<
"K \n";
9373 throw runtime_error(os.str());
9388 Numeric exponent = ( -7.90298 * (theta-1.000) +
9389 5.02808 * log10(theta) -
9390 1.3816e-7 * ( pow( (
Numeric)10.00,
9395 8.1328e-3 * ( pow( (
Numeric)10.00,
9436 os <<
"In WVSatPressureIce:\n"
9437 <<
"temperature negative: T=" << t <<
"K \n";
9438 throw runtime_error(os.str());
9443 Numeric exponent = (-9.09718 * (theta-1.000) -
9444 3.56654 * log10(theta) +
9445 0.876793 * (1.000-(1.000/theta)) +
9561 if (
"H2O-SelfContStandardType"==name )
9575 const int Nparam = 2;
9576 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9578 out3 <<
"Continuum model " << name <<
" is running with \n"
9579 <<
"user defined parameters according to model " << model <<
".\n";
9590 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9593 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9594 <<
"parameters for the model " << model <<
",\n"
9595 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9596 throw runtime_error(os.str());
9598 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9600 out3 <<
"Continuum model " << name <<
" running with \n"
9601 <<
"the parameters for model " << model <<
".\n";
9612 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9615 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9616 <<
"parameters for the model " << model <<
",\n"
9617 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9618 <<
"This ambiguity can not be solved by arts.\n"
9619 <<
"Please see the arts user guide chapter 3.\n";
9620 throw runtime_error(os.str());
9624 else if (
"H2O-ForeignContStandardType"==name )
9638 const int Nparam = 2;
9639 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9641 out3 <<
"Continuum model " << name <<
" is running with \n"
9642 <<
"user defined parameters according to model " << model <<
".\n";
9653 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9656 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9657 <<
"parameters for the model " << model <<
",\n"
9658 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9659 throw runtime_error(os.str());
9661 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9663 out3 <<
"Continuum model " << name <<
" running with \n"
9664 <<
"the parameters for model " << model <<
".\n";
9675 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9678 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9679 <<
"parameters for the model " << model <<
",\n"
9680 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9681 <<
"This ambiguity can not be solved by arts.\n"
9682 <<
"Please see the arts user guide chapter 3.\n";
9683 throw runtime_error(os.str());
9687 else if (
"H2O-ForeignContMaTippingType"==name )
9701 const int Nparam = 2;
9702 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9704 out3 <<
"Continuum model " << name <<
" is running with \n"
9705 <<
"user defined parameters according to model " << model <<
".\n";
9716 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9719 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9720 <<
"parameters for the model " << model <<
",\n"
9721 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9722 throw runtime_error(os.str());
9724 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9726 out3 <<
"Continuum model " << name <<
" running with \n"
9727 <<
"the parameters for model " << model <<
".\n";
9738 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9741 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9742 <<
"parameters for the model " << model <<
",\n"
9743 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9744 <<
"This ambiguity can not be solved by arts.\n"
9745 <<
"Please see the arts user guide chapter 3.\n";
9746 throw runtime_error(os.str());
9750 else if (
"H2O-ContMPM93"==name )
9772 const int Nparam = 7;
9773 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9775 out3 <<
"Continuum model " << name <<
" is running with \n"
9776 <<
"user defined parameters according to model " << model <<
".\n";
9792 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9795 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9796 <<
"parameters for the model " << model <<
",\n"
9797 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9798 throw runtime_error(os.str());
9800 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9802 out3 <<
"Continuum model " << name <<
" running with \n"
9803 <<
"the parameters for model " << model <<
".\n";
9819 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9822 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9823 <<
"parameters for the model " << model <<
",\n"
9824 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
9825 <<
"This ambiguity can not be solved by arts.\n"
9826 <<
"Please see the arts user guide chapter 3.\n";
9827 throw runtime_error(os.str());
9831 else if (
"H2O-ForeignContATM01"==name )
9848 const int Nparam = 1;
9849 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9851 out3 <<
"Continuum model " << name <<
" is running with \n"
9852 <<
"user defined parameters according to model " << model <<
".\n";
9862 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9865 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9866 <<
"parameters for the model " << model <<
",\n"
9867 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9868 throw runtime_error(os.str());
9870 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9872 out3 <<
"Continuum model " << name <<
" running with \n"
9873 <<
"the parameters for model " << model <<
".\n";
9883 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9886 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
9887 <<
"parameters for the model " << model <<
",\n"
9888 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
9889 <<
"This ambiguity can not be solved by arts.\n"
9890 <<
"Please see the arts user guide chapter 3.\n";
9891 throw runtime_error(os.str());
9895 else if (
"H2O-SelfContCKD222"==name )
9912 const int Nparam = 1;
9913 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9915 out3 <<
"Continuum model " << name <<
" is running with \n"
9916 <<
"user defined parameters according to model " << model <<
".\n";
9927 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9930 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9931 <<
"parameters for the model " << model <<
",\n"
9932 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9933 throw runtime_error(os.str());
9935 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
9937 out3 <<
"Continuum model " << name <<
" running with \n"
9938 <<
"the parameters for model " << model <<
".\n";
9949 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
9952 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
9953 <<
"parameters for the model " << model <<
",\n"
9954 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
9955 <<
"This ambiguity can not be solved by arts.\n"
9956 <<
"Please see the arts user guide chapter 3.\n";
9957 throw runtime_error(os.str());
9961 else if (
"H2O-ForeignContCKD222"==name )
9978 const int Nparam = 1;
9979 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
9981 out3 <<
"Continuum model " << name <<
" is running with \n"
9982 <<
"user defined parameters according to model " << model <<
".\n";
9993 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
9996 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
9997 <<
"parameters for the model " << model <<
",\n"
9998 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
9999 throw runtime_error(os.str());
10001 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10003 out3 <<
"Continuum model " << name <<
" running with \n"
10004 <<
"the parameters for model " << model <<
".\n";
10015 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10018 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10019 <<
"parameters for the model " << model <<
",\n"
10020 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10021 <<
"This ambiguity can not be solved by arts.\n"
10022 <<
"Please see the arts user guide chapter 3.\n";
10023 throw runtime_error(os.str());
10027 else if (
"H2O-SelfContCKD242"==name )
10044 const int Nparam = 1;
10045 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10047 out3 <<
"Continuum model " << name <<
" is running with \n"
10048 <<
"user defined parameters according to model " << model <<
".\n";
10059 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10062 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10063 <<
"parameters for the model " << model <<
",\n"
10064 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10065 throw runtime_error(os.str());
10067 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10069 out3 <<
"Continuum model " << name <<
" running with \n"
10070 <<
"the parameters for model " << model <<
".\n";
10081 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10084 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10085 <<
"parameters for the model " << model <<
",\n"
10086 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10087 <<
"This ambiguity can not be solved by arts.\n"
10088 <<
"Please see the arts user guide chapter 3.\n";
10089 throw runtime_error(os.str());
10093 else if (
"H2O-ForeignContCKD242"==name )
10110 const int Nparam = 1;
10111 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10113 out3 <<
"Continuum model " << name <<
" is running with \n"
10114 <<
"user defined parameters according to model " << model <<
".\n";
10125 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10128 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10129 <<
"parameters for the model " << model <<
",\n"
10130 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10131 throw runtime_error(os.str());
10133 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10135 out3 <<
"Continuum model " << name <<
" running with \n"
10136 <<
"the parameters for model " << model <<
".\n";
10147 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10150 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10151 <<
"parameters for the model " << model <<
",\n"
10152 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10153 <<
"This ambiguity can not be solved by arts.\n"
10154 <<
"Please see the arts user guide chapter 3.\n";
10155 throw runtime_error(os.str());
10159 else if (
"H2O-SelfContCKDMT100"==name )
10176 const int Nparam = 1;
10177 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10179 out3 <<
"Continuum model " << name <<
" is running with \n"
10180 <<
"user defined parameters according to model " << model <<
".\n";
10191 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10194 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10195 <<
"parameters for the model " << model <<
",\n"
10196 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10197 throw runtime_error(os.str());
10199 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10201 out3 <<
"Continuum model " << name <<
" running with \n"
10202 <<
"the parameters for model " << model <<
".\n";
10213 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10216 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10217 <<
"parameters for the model " << model <<
",\n"
10218 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10219 <<
"This ambiguity can not be solved by arts.\n"
10220 <<
"Please see the arts user guide chapter 3.\n";
10221 throw runtime_error(os.str());
10225 else if (
"H2O-ForeignContCKDMT100"==name )
10242 const int Nparam = 1;
10243 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10245 out3 <<
"Continuum model " << name <<
" is running with \n"
10246 <<
"user defined parameters according to model " << model <<
".\n";
10257 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10260 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10261 <<
"parameters for the model " << model <<
",\n"
10262 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10263 throw runtime_error(os.str());
10265 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10267 out3 <<
"Continuum model " << name <<
" running with \n"
10268 <<
"the parameters for model " << model <<
".\n";
10279 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10282 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10283 <<
"parameters for the model " << model <<
",\n"
10284 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10285 <<
"This ambiguity can not be solved by arts.\n"
10286 <<
"Please see the arts user guide chapter 3.\n";
10287 throw runtime_error(os.str());
10291 else if (
"H2O-SelfContCKD24"==name )
10308 const int Nparam = 1;
10309 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10311 out3 <<
"Continuum model " << name <<
" is running with \n"
10312 <<
"user defined parameters according to model " << model <<
".\n";
10324 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10327 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10328 <<
"parameters for the model " << model <<
",\n"
10329 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10330 throw runtime_error(os.str());
10332 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10334 out3 <<
"Continuum model " << name <<
" running with \n"
10335 <<
"the parameters for model " << model <<
".\n";
10347 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10350 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10351 <<
"parameters for the model " << model <<
",\n"
10352 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10353 <<
"This ambiguity can not be solved by arts.\n"
10354 <<
"Please see the arts user guide chapter 3.\n";
10355 throw runtime_error(os.str());
10359 else if (
"H2O-ForeignContCKD24"==name )
10376 const int Nparam = 1;
10377 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10379 out3 <<
"Continuum model " << name <<
" is running with \n"
10380 <<
"user defined parameters according to model " << model <<
".\n";
10392 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10395 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10396 <<
"parameters for the model " << model <<
",\n"
10397 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10398 throw runtime_error(os.str());
10400 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10402 out3 <<
"Continuum model " << name <<
" running with \n"
10403 <<
"the parameters for model " << model <<
".\n";
10415 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10418 os <<
"ERROR: continuum model " << name <<
" requires NO input\n"
10419 <<
"parameters for the model " << model <<
",\n"
10420 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10421 <<
"This ambiguity can not be solved by arts.\n"
10422 <<
"Please see the arts user guide chapter 3.\n";
10423 throw runtime_error(os.str());
10427 else if (
"H2O-CP98"==name )
10442 const int Nparam = 3;
10443 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10445 out3 <<
"Full model " << name <<
" is running with \n"
10446 <<
"user defined parameters according to model " << model <<
".\n";
10458 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10461 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10462 <<
"parameters for the model " << model <<
",\n"
10463 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10464 throw runtime_error(os.str());
10466 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10468 out3 <<
"Full model " << name <<
" running with \n"
10469 <<
"the parameters for model " << model <<
".\n";
10481 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10484 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10485 <<
"parameters for the model " << model <<
",\n"
10486 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10487 <<
"This ambiguity can not be solved by arts.\n"
10488 <<
"Please see the arts user guide chapter 3.\n";
10489 throw runtime_error(os.str());
10493 else if (
"H2O-MPM87"==name )
10508 const int Nparam = 3;
10509 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10511 out3 <<
"Full model " << name <<
" is running with \n"
10512 <<
"user defined parameters according to model " << model <<
".\n";
10524 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10527 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10528 <<
"parameters for the model " << model <<
",\n"
10529 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10530 throw runtime_error(os.str());
10532 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10534 out3 <<
"Full model " << name <<
" running with \n"
10535 <<
"the parameters for model " << model <<
".\n";
10547 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10550 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10551 <<
"parameters for the model " << model <<
",\n"
10552 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10553 <<
"This ambiguity can not be solved by arts.\n"
10554 <<
"Please see the arts user guide chapter 3.\n";
10555 throw runtime_error(os.str());
10559 else if (
"H2O-MPM89"==name )
10574 const int Nparam = 3;
10575 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10577 out3 <<
"Full model " << name <<
" is running with \n"
10578 <<
"user defined parameters according to model " << model <<
".\n";
10590 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10593 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10594 <<
"parameters for the model " << model <<
",\n"
10595 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10596 throw runtime_error(os.str());
10598 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10600 out3 <<
"Full model " << name <<
" running with \n"
10601 <<
"the parameters for model " << model <<
".\n";
10613 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10616 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10617 <<
"parameters for the model " << model <<
",\n"
10618 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10619 <<
"This ambiguity can not be solved by arts.\n"
10620 <<
"Please see the arts user guide chapter 3.\n";
10621 throw runtime_error(os.str());
10625 else if (
"H2O-MPM93"==name )
10640 const int Nparam = 3;
10641 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10643 out3 <<
"Full model " << name <<
" is running with \n"
10644 <<
"user defined parameters according to model " << model <<
".\n";
10656 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10659 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10660 <<
"parameters for the model " << model <<
",\n"
10661 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10662 throw runtime_error(os.str());
10664 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10666 out3 <<
"Full model " << name <<
" running with \n"
10667 <<
"the parameters for model " << model <<
".\n";
10679 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10682 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10683 <<
"parameters for the model " << model <<
",\n"
10684 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10685 <<
"This ambiguity can not be solved by arts.\n"
10686 <<
"Please see the arts user guide chapter 3.\n";
10687 throw runtime_error(os.str());
10691 else if (
"H2O-PWR98"==name )
10705 const int Nparam = 3;
10706 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10708 out3 <<
"Full model " << name <<
" is running with \n"
10709 <<
"user defined parameters according to model " << model <<
".\n";
10721 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10724 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
10725 <<
"parameters for the model " << model <<
",\n"
10726 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10727 throw runtime_error(os.str());
10729 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10731 out3 <<
"Full model " << name <<
" running with \n"
10732 <<
"the parameters for model " << model <<
".\n";
10744 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10747 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
10748 <<
"parameters for the model " << model <<
",\n"
10749 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10750 <<
"This ambiguity can not be solved by arts.\n"
10751 <<
"Please see the arts user guide chapter 3.\n";
10752 throw runtime_error(os.str());
10756 else if (
"O2-CIAfunCKDMT100"==name )
10777 const int Nparam = 1;
10778 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10780 out3 <<
"Continuum model " << name <<
" is running with \n"
10781 <<
"user defined parameters according to model " << model <<
".\n";
10791 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10794 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10795 <<
"parameters for the model " << model <<
",\n"
10796 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10797 throw runtime_error(os.str());
10799 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10801 out3 <<
"Continuum model " << name <<
" running with \n"
10802 <<
"the parameters for model " << model <<
".\n";
10812 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10815 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10816 <<
"parameters for the model " << model <<
",\n"
10817 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10818 <<
"This ambiguity can not be solved by arts.\n"
10819 <<
"Please see the arts user guide chapter 3.\n";
10820 throw runtime_error(os.str());
10824 else if (
"O2-v0v0CKDMT100"==name )
10845 const int Nparam = 1;
10846 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10848 out3 <<
"Continuum model " << name <<
" is running with \n"
10849 <<
"user defined parameters according to model " << model <<
".\n";
10860 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10863 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10864 <<
"parameters for the model " << model <<
",\n"
10865 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10866 throw runtime_error(os.str());
10868 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10870 out3 <<
"Continuum model " << name <<
" running with \n"
10871 <<
"the parameters for model " << model <<
".\n";
10882 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10885 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10886 <<
"parameters for the model " << model <<
",\n"
10887 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10888 <<
"This ambiguity can not be solved by arts.\n"
10889 <<
"Please see the arts user guide chapter 3.\n";
10890 throw runtime_error(os.str());
10894 else if (
"O2-v1v0CKDMT100"==name )
10914 const int Nparam = 1;
10915 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10917 out3 <<
"Continuum model " << name <<
" is running with \n"
10918 <<
"user defined parameters according to model " << model <<
".\n";
10928 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
10931 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
10932 <<
"parameters for the model " << model <<
",\n"
10933 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
10934 throw runtime_error(os.str());
10936 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
10938 out3 <<
"Continuum model " << name <<
" running with \n"
10939 <<
"the parameters for model " << model <<
".\n";
10949 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
10952 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
10953 <<
"parameters for the model " << model <<
",\n"
10954 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
10955 <<
"This ambiguity can not be solved by arts.\n"
10956 <<
"Please see the arts user guide chapter 3.\n";
10957 throw runtime_error(os.str());
10961 else if (
"O2-SelfContStandardType"==name )
10992 const int Nparam = 6;
10993 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
10995 out3 <<
"Continuum model " << name <<
" is running with \n"
10996 <<
"user defined parameters according to model " << model <<
".\n";
11012 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11015 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11016 <<
"parameters for the model " << model <<
",\n"
11017 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11018 throw runtime_error(os.str());
11020 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11022 out3 <<
"Continuum model " << name <<
" running with \n"
11023 <<
"the parameters for model " << model <<
".\n";
11039 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11042 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11043 <<
"parameters for the model " << model <<
",\n"
11044 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11045 <<
"This ambiguity can not be solved by arts.\n"
11046 <<
"Please see the arts user guide chapter 3.\n";
11047 throw runtime_error(os.str());
11051 else if (
"O2-SelfContMPM93"==name )
11072 const int Nparam = 4;
11073 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11075 out3 <<
"Continuum model " << name <<
" is running with \n"
11076 <<
"user defined parameters according to model " << model <<
".\n";
11090 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11093 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11094 <<
"parameters for the model " << model <<
",\n"
11095 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11096 throw runtime_error(os.str());
11098 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11100 out3 <<
"Continuum model " << name <<
" running with \n"
11101 <<
"the parameters for model " << model <<
".\n";
11115 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11118 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11119 <<
"parameters for the model " << model <<
",\n"
11120 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11121 <<
"This ambiguity can not be solved by arts.\n"
11122 <<
"Please see the arts user guide chapter 3.\n";
11123 throw runtime_error(os.str());
11127 else if (
"O2-SelfContPWR93"==name )
11146 const int Nparam = 4;
11147 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11149 out3 <<
"Continuum model " << name <<
" is running with \n"
11150 <<
"user defined parameters according to model " << model <<
".\n";
11164 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11167 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11168 <<
"parameters for the model " << model <<
",\n"
11169 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11170 throw runtime_error(os.str());
11172 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11174 out3 <<
"Continuum model " << name <<
" running with \n"
11175 <<
"the parameters for model " << model <<
".\n";
11189 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11192 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11193 <<
"parameters for the model " << model <<
",\n"
11194 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11195 <<
"This ambiguity can not be solved by arts.\n"
11196 <<
"Please see the arts user guide chapter 3.\n";
11197 throw runtime_error(os.str());
11201 else if (
"O2-PWR88"==name )
11230 const int Nparam = 4;
11231 const char *version=
"PWR88";
11232 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11234 out3 <<
"Full model " << name <<
" is running with \n"
11235 <<
"user defined parameters according to model " << model <<
".\n";
11250 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11253 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11254 <<
"parameters for the model " << model <<
",\n"
11255 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11256 throw runtime_error(os.str());
11258 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11260 out3 <<
"Full model " << name <<
" running with \n"
11261 <<
"the parameters for model " << model <<
".\n";
11276 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11279 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11280 <<
"parameters for the model " << model <<
",\n"
11281 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11282 <<
"This ambiguity can not be solved by arts.\n"
11283 <<
"Please see the arts user guide chapter 3.\n";
11284 throw runtime_error(os.str());
11288 else if (
"O2-PWR93"==name )
11310 const int Nparam = 4;
11311 const char *version=
"PWR93";
11312 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11314 out3 <<
"Full model " << name <<
" is running with \n"
11315 <<
"user defined parameters according to model " << model <<
".\n";
11330 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11333 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11334 <<
"parameters for the model " << model <<
",\n"
11335 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11336 throw runtime_error(os.str());
11338 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11340 out3 <<
"Full model " << name <<
" running with \n"
11341 <<
"the parameters for model " << model <<
".\n";
11356 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11359 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11360 <<
"parameters for the model " << model <<
",\n"
11361 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11362 <<
"This ambiguity can not be solved by arts.\n"
11363 <<
"Please see the arts user guide chapter 3.\n";
11364 throw runtime_error(os.str());
11368 else if (
"O2-PWR98"==name )
11396 const int Nparam = 4;
11397 const char *version=
"PWR98";
11398 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11400 out3 <<
"Full model " << name <<
" is running with \n"
11401 <<
"user defined parameters according to model " << model <<
".\n";
11416 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11419 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11420 <<
"parameters for the model " << model <<
",\n"
11421 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11422 throw runtime_error(os.str());
11424 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11426 out3 <<
"Full model " << name <<
" running with \n"
11427 <<
"the parameters for model " << model <<
".\n";
11442 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11445 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11446 <<
"parameters for the model " << model <<
",\n"
11447 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11448 <<
"This ambiguity can not be solved by arts.\n"
11449 <<
"Please see the arts user guide chapter 3.\n";
11450 throw runtime_error(os.str());
11454 else if (
"O2-MPM93"==name )
11476 const int Nparam = 4;
11477 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11479 out3 <<
"Full model " << name <<
" is running with \n"
11480 <<
"user defined parameters according to model " << model <<
".\n";
11494 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11497 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11498 <<
"parameters for the model " << model <<
",\n"
11499 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11500 throw runtime_error(os.str());
11502 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11504 out3 <<
"Full model " << name <<
" running with \n"
11505 <<
"the parameters for model " << model <<
".\n";
11519 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11522 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11523 <<
"parameters for the model " << model <<
",\n"
11524 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11525 <<
"This ambiguity can not be solved by arts.\n"
11526 <<
"Please see the arts user guide chapter 3.\n";
11527 throw runtime_error(os.str());
11531 else if (
"O2-MPM92"==name )
11552 const int Nparam = 4;
11553 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11555 out3 <<
"Full model " << name <<
" is running with \n"
11556 <<
"user defined parameters according to model " << model <<
".\n";
11570 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11573 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11574 <<
"parameters for the model " << model <<
",\n"
11575 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11576 throw runtime_error(os.str());
11578 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11580 out3 <<
"Full model " << name <<
" running with \n"
11581 <<
"the parameters for model " << model <<
".\n";
11595 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11598 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11599 <<
"parameters for the model " << model <<
",\n"
11600 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11601 <<
"This ambiguity can not be solved by arts.\n"
11602 <<
"Please see the arts user guide chapter 3.\n";
11603 throw runtime_error(os.str());
11607 else if (
"O2-MPM89"==name )
11627 const int Nparam = 4;
11628 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11630 out3 <<
"Full model " << name <<
" is running with \n"
11631 <<
"user defined parameters according to model " << model <<
".\n";
11645 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11648 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11649 <<
"parameters for the model " << model <<
",\n"
11650 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11651 throw runtime_error(os.str());
11653 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11655 out3 <<
"Full model " << name <<
" running with \n"
11656 <<
"the parameters for model " << model <<
".\n";
11670 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11673 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11674 <<
"parameters for the model " << model <<
",\n"
11675 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11676 <<
"This ambiguity can not be solved by arts.\n"
11677 <<
"Please see the arts user guide chapter 3.\n";
11678 throw runtime_error(os.str());
11682 else if (
"O2-MPM87"==name )
11706 const int Nparam = 4;
11707 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11709 out3 <<
"Full model " << name <<
" is running with \n"
11710 <<
"user defined parameters according to model " << model <<
".\n";
11724 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11727 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11728 <<
"parameters for the model " << model <<
",\n"
11729 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11730 throw runtime_error(os.str());
11732 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11734 out3 <<
"Full model " << name <<
" running with \n"
11735 <<
"the parameters for model " << model <<
".\n";
11749 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11752 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11753 <<
"parameters for the model " << model <<
",\n"
11754 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11755 <<
"This ambiguity can not be solved by arts.\n"
11756 <<
"Please see the arts user guide chapter 3.\n";
11757 throw runtime_error(os.str());
11761 else if (
"O2-MPM85"==name )
11781 const int Nparam = 4;
11782 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11784 out3 <<
"Full model " << name <<
" is running with \n"
11785 <<
"user defined parameters according to model " << model <<
".\n";
11799 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11802 os <<
"Full model " << name <<
" requires " << Nparam <<
" input\n"
11803 <<
"parameters for the model " << model <<
",\n"
11804 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11805 throw runtime_error(os.str());
11807 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11809 out3 <<
"Full model " << name <<
" running with \n"
11810 <<
"the parameters for model " << model <<
".\n";
11824 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11827 os <<
"ERROR: Full model " << name <<
" requires NO input\n"
11828 <<
"parameters for the model " << model <<
",\n"
11829 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
11830 <<
"This ambiguity can not be solved by arts.\n"
11831 <<
"Please see the arts user guide chapter 3.\n";
11832 throw runtime_error(os.str());
11836 else if (
"N2-SelfContMPM93"==name )
11858 const int Nparam = 4;
11859 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11861 out3 <<
"Continuum model " << name <<
" is running with \n"
11862 <<
"user defined parameters according to model " << model <<
".\n";
11876 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11879 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11880 <<
"parameters for the model " << model <<
",\n"
11881 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11882 throw runtime_error(os.str());
11884 else if ( (model ==
"MPM93Scale") && (
parameters.nelem() == 1) )
11886 out3 <<
"Continuum model " << name <<
" running with \n"
11887 <<
"the parameters for model " << model <<
".\n";
11901 else if ( (model ==
"MPM93Scale") && (
parameters.nelem() != 1) )
11904 os <<
"Continuum model " << name <<
" requires 1 scaling input\n"
11905 <<
"parameters for the model " << model <<
",\n"
11906 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11907 throw runtime_error(os.str());
11909 else if ( (model !=
"user") && (model !=
"MPM93Scale") && (
parameters.nelem() == 0) )
11911 out3 <<
"Continuum model " << name <<
" running with \n"
11912 <<
"the parameters for model " << model <<
".\n";
11940 else if (
"N2-DryContATM01"==name )
11957 const int Nparam = 1;
11958 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
11960 out3 <<
"Continuum model " << name <<
" is running with \n"
11961 <<
"user defined parameters according to model " << model <<
".\n";
11972 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
11975 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
11976 <<
"parameters for the model " << model <<
",\n"
11977 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
11978 throw runtime_error(os.str());
11980 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
11982 out3 <<
"Continuum model " << name <<
" running with \n"
11983 <<
"the parameters for model " << model <<
".\n";
11994 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
11997 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
11998 <<
"parameters for the model " << model <<
",\n"
11999 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12000 <<
"This ambiguity can not be solved by arts.\n"
12001 <<
"Please see the arts user guide chapter 3.\n";
12002 throw runtime_error(os.str());
12006 else if (
"N2-SelfContPWR93"==name )
12024 const int Nparam = 2;
12025 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12027 out3 <<
"Continuum model " << name <<
" is running with \n"
12028 <<
"user defined parameters according to model " << model <<
".\n";
12039 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12042 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12043 <<
"parameters for the model " << model <<
",\n"
12044 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12045 throw runtime_error(os.str());
12047 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12049 out3 <<
"Continuum model " << name <<
" running with \n"
12050 <<
"the parameters for model " << model <<
".\n";
12061 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12064 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12065 <<
"parameters for the model " << model <<
",\n"
12066 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12067 <<
"This ambiguity can not be solved by arts.\n"
12068 <<
"Please see the arts user guide chapter 3.\n";
12069 throw runtime_error(os.str());
12073 else if (
"N2-SelfContStandardType"==name )
12090 const int Nparam = 4;
12091 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12093 out3 <<
"Continuum model " << name <<
" is running with \n"
12094 <<
"user defined parameters according to model " << model <<
".\n";
12107 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12110 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12111 <<
"parameters for the model " << model <<
",\n"
12112 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12113 throw runtime_error(os.str());
12115 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12117 out3 <<
"Continuum model " << name <<
" running with \n"
12118 <<
"the parameters for model " << model <<
".\n";
12131 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12134 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12135 <<
"parameters for the model " << model <<
",\n"
12136 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12137 <<
"This ambiguity can not be solved by arts.\n"
12138 <<
"Please see the arts user guide chapter 3.\n";
12139 throw runtime_error(os.str());
12143 else if (
"N2-SelfContBorysow"==name )
12148 const int Nparam = 1;
12149 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12151 out3 <<
"Continuum model " << name <<
" is running with \n"
12152 <<
"user defined parameters according to model " << model <<
".\n";
12162 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12165 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12166 <<
"parameters for the model " << model <<
",\n"
12167 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12168 throw runtime_error(os.str());
12170 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12172 out3 <<
"Continuum model " << name <<
" running with \n"
12173 <<
"the parameters for model " << model <<
".\n";
12183 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12186 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12187 <<
"parameters for the model " << model <<
",\n"
12188 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12189 <<
"This ambiguity can not be solved by arts.\n"
12190 <<
"Please see the arts user guide chapter 3.\n";
12191 throw runtime_error(os.str());
12195 else if (
"N2-CIArotCKDMT100"==name )
12200 const int Nparam = 1;
12201 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12203 out3 <<
"Continuum model " << name <<
" is running with \n"
12204 <<
"user defined parameters according to model " << model <<
".\n";
12214 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12217 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12218 <<
"parameters for the model " << model <<
",\n"
12219 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12220 throw runtime_error(os.str());
12222 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12224 out3 <<
"Continuum model " << name <<
" running with \n"
12225 <<
"the parameters for model " << model <<
".\n";
12235 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12238 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12239 <<
"parameters for the model " << model <<
",\n"
12240 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12241 <<
"This ambiguity can not be solved by arts.\n"
12242 <<
"Please see the arts user guide chapter 3.\n";
12243 throw runtime_error(os.str());
12247 else if (
"N2-CIAfunCKDMT100"==name )
12256 const int Nparam = 1;
12257 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12259 out3 <<
"Continuum model " << name <<
" is running with \n"
12260 <<
"user defined parameters according to model " << model <<
".\n";
12270 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12273 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12274 <<
"parameters for the model " << model <<
",\n"
12275 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12276 throw runtime_error(os.str());
12278 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12280 out3 <<
"Continuum model " << name <<
" running with \n"
12281 <<
"the parameters for model " << model <<
".\n";
12291 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12294 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12295 <<
"parameters for the model " << model <<
",\n"
12296 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12297 <<
"This ambiguity can not be solved by arts.\n"
12298 <<
"Please see the arts user guide chapter 3.\n";
12299 throw runtime_error(os.str());
12303 else if (
"CO2-CKD241"==name )
12322 const int Nparam = 1;
12323 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12325 out3 <<
"Continuum model " << name <<
" is running with \n"
12326 <<
"user defined parameters according to model " << model <<
".\n";
12336 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12339 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12340 <<
"parameters for the model " << model <<
",\n"
12341 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12342 throw runtime_error(os.str());
12344 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12346 out3 <<
"Continuum model " << name <<
" running with \n"
12347 <<
"the parameters for model " << model <<
".\n";
12357 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12360 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12361 <<
"parameters for the model " << model <<
",\n"
12362 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12363 <<
"This ambiguity can not be solved by arts.\n"
12364 <<
"Please see the arts user guide chapter 3.\n";
12365 throw runtime_error(os.str());
12369 else if (
"CO2-CKDMT100"==name )
12388 const int Nparam = 1;
12389 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12391 out3 <<
"Continuum model " << name <<
" is running with \n"
12392 <<
"user defined parameters according to model " << model <<
".\n";
12402 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12405 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12406 <<
"parameters for the model " << model <<
",\n"
12407 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12408 throw runtime_error(os.str());
12410 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12412 out3 <<
"Continuum model " << name <<
" running with \n"
12413 <<
"the parameters for model " << model <<
".\n";
12423 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12426 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12427 <<
"parameters for the model " << model <<
",\n"
12428 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12429 <<
"This ambiguity can not be solved by arts.\n"
12430 <<
"Please see the arts user guide chapter 3.\n";
12431 throw runtime_error(os.str());
12435 else if (
"CO2-SelfContPWR93"==name )
12453 const int Nparam = 2;
12454 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12456 out3 <<
"Continuum model " << name <<
" is running with \n"
12457 <<
"user defined parameters according to model " << model <<
".\n";
12468 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12471 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12472 <<
"parameters for the model " << model <<
",\n"
12473 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12474 throw runtime_error(os.str());
12476 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12478 out3 <<
"Continuum model " << name <<
" running with \n"
12479 <<
"the parameters for model " << model <<
".\n";
12490 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12493 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12494 <<
"parameters for the model " << model <<
",\n"
12495 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12496 <<
"This ambiguity can not be solved by arts.\n"
12497 <<
"Please see the arts user guide chapter 3.\n";
12498 throw runtime_error(os.str());
12502 else if (
"CO2-ForeignContPWR93"==name )
12521 const int Nparam = 2;
12522 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12524 out3 <<
"Continuum model " << name <<
" is running with \n"
12525 <<
"user defined parameters according to model " << model <<
".\n";
12537 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12540 os <<
"Continuum model " << name <<
" requires " << Nparam <<
" input\n"
12541 <<
"parameters for the model " << model <<
",\n"
12542 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12543 throw runtime_error(os.str());
12545 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12547 out3 <<
"Continuum model " << name <<
" running with \n"
12548 <<
"the parameters for model " << model <<
".\n";
12560 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12563 os <<
"ERROR: Continuum model " << name <<
" requires NO input\n"
12564 <<
"parameters for the model " << model <<
",\n"
12565 <<
"but you specified " <<
parameters.nelem() <<
" parameters. " <<
"\n"
12566 <<
"This ambiguity can not be solved by arts.\n"
12567 <<
"Please see the arts user guide chapter 3.\n";
12568 throw runtime_error(os.str());
12572 else if (
"liquidcloud-MPM93"==name )
12602 const int Nparam = 3;
12603 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12605 out3 <<
"MPM93 liquid water cloud absorption model " << name <<
" is running with \n"
12606 <<
"user defined parameters according to model " << model <<
".\n";
12618 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12621 os <<
"MPM93 liquid water cloud absorption model " << name <<
" requires\n"
12622 << Nparam <<
" input parameter for the model " << model <<
",\n"
12623 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12624 throw runtime_error(os.str());
12626 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12628 out3 <<
"MPM93 liquid water cloud absorption model " << name <<
" running with \n"
12629 <<
"the parameter for model " << model <<
".\n";
12641 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12644 os <<
"ERROR: MPM93 liquid water cloud absorption model " << name <<
" requires NO input\n"
12645 <<
"parameters for the model " << model <<
",\n"
12646 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12647 <<
"This ambiguity can not be solved by arts.\n"
12648 <<
"Please see the arts user guide chapter 4.\n";
12649 throw runtime_error(os.str());
12653 else if (
"icecloud-MPM93"==name )
12683 const int Nparam = 3;
12684 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12686 out3 <<
"MPM93 ice water cloud absorption model " << name <<
" is running with \n"
12687 <<
"user defined parameters according to model " << model <<
".\n";
12699 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12702 os <<
"MPM93 ice water cloud absorption model " << name <<
" requires \n"
12703 << Nparam <<
" input parameter for the model " << model <<
",\n"
12704 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12705 throw runtime_error(os.str());
12707 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12709 out3 <<
"MPM93 ice water cloud absorption model " << name <<
" running with \n"
12710 <<
"the parameter for model " << model <<
".\n";
12722 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12725 os <<
"ERROR: MPM93 ice water cloud absorption model " << name <<
" requires NO input\n"
12726 <<
"parameters for the model " << model <<
",\n"
12727 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12728 <<
"This ambiguity can not be solved by arts.\n"
12729 <<
"Please see the arts user guide chapter 4.\n";
12730 throw runtime_error(os.str());
12734 else if (
"rain-MPM93"==name )
12765 const int Nparam = 3;
12766 if ( (model ==
"user") && (
parameters.nelem() == Nparam) )
12768 out3 <<
"MPM93 rain extinction model " << name <<
" is running with \n"
12769 <<
"user defined parameters according to model " << model <<
".\n";
12781 else if ( (model ==
"user") && (
parameters.nelem() != Nparam) )
12784 os <<
"MPM93 rain extinction model " << name <<
" requires \n"
12785 << Nparam <<
" input parameter for the model " << model <<
",\n"
12786 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n";
12787 throw runtime_error(os.str());
12789 else if ( (model !=
"user") && (
parameters.nelem() == 0) )
12791 out3 <<
"MPM93 rain extinction model " << name <<
" running with \n"
12792 <<
"the parameter for model " << model <<
".\n";
12804 else if ( (model !=
"user") && (
parameters.nelem() != 0) )
12807 os <<
"ERROR: MPM93 rain extinction model " << name <<
" requires NO input\n"
12808 <<
"parameters for the model " << model <<
",\n"
12809 <<
"but you specified " <<
parameters.nelem() <<
" parameters.\n"
12810 <<
"This ambiguity can not be solved by arts.\n"
12811 <<
"Please see the arts user guide chapter 4.\n";
12812 throw runtime_error(os.str());
12819 os <<
"ERROR: Continuum/ full model tag `" << name <<
"' not yet implemented in arts!";
12820 throw runtime_error(os.str());
12833 const Numeric p_i = abs_p[i];
12834 const Numeric t_i = abs_t[i];
12842 pxsec(
joker,i) /= n;
12880 bool found =
false;
12887 String specnam = i->Name();
12891 j<i->Isotope().end();
12894 String isonam = j->Name();
12901 String fullnam = specnam +
"-" + isonam;
12906 if ( 0 > j->Abundance() )
12908 valid_models.push_back(fullnam);
12911 if ( name == fullnam )
12923 os <<
"The String `" << name <<
"' matches none of the known\n"
12924 <<
"continuum models. Known continuum models are:";
12925 for ( ArrayOfString::const_iterator i=valid_models.begin();
12926 i<valid_models.end();
12931 throw runtime_error(os.str());
12944 #ifndef F2C_INCLUDE
12945 #define F2C_INCLUDE
12959 #ifdef INTEGER_STAR_8
12960 typedef long long longint;
12961 typedef unsigned long long ulongint;
12962 #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
12963 #define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
12971 #define Extern extern
12978 typedef short flag;
13094 #define abs(x) ((x) >= 0 ? (x) : -(x))
13095 #define dabs(x) (doublereal)abs(x)
13096 #define min(a,b) ((a) <= (b) ? (a) : (b))
13097 #define max(a,b) ((a) >= (b) ? (a) : (b))
13098 #define dmin(a,b) (doublereal)min(a,b)
13099 #define dmax(a,b) (doublereal)max(a,b)
13100 #define bit_test(a,b) ((a) >> (b) & 1)
13101 #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
13102 #define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
13106 #define F2C_proc_par_types 1
13108 typedef int (*U_fp)(...);
13118 typedef int (*
S_fp)(...);
13120 typedef int (*U_fp)();
13140 #ifndef Skip_f2c_Undefs
13179 #define blockin_1 blockin_
13185 #define app3a_1 app3a_
13191 #define app3b_1 app3b_
13197 #define rsilo_1 rsilo_
13203 #define bou43_1 bou43_
13214 #define bba_1 (bba_.m_1)
13215 #define bba_2 (bba_.m_2)
13234 #define like_1 (*(struct like_1_ *) &like_)
13240 #define k1k0_1 k1k0_
13253 #define energ_1 (*(struct energ_1_ *) &energ_)
13259 #define dimer_1 dimer_
13270 #define n2part_1 (*(struct n2part_1_ *) &n2part_)
13271 #define n2part_2 (*(struct n2part_2_ *) &n2part_)
13282 #define bl3_1 (bl3_.m_1)
13283 #define bl3_2 (bl3_.m_2)
13294 #define bbbb_1 (bbbb_.m_1)
13295 #define bbbb_2 (bbbb_.m_2)
13302 }
energ_ = { {-54.99996, -54.86228, -54.58697, -54.17413, -53.62391,
13303 -52.93648, -52.11211, -51.15108, -50.05374, -48.82049, -47.45179,
13304 -45.94815, -44.31014, -42.53841, -40.63365, -38.59665, -36.42824,
13305 -34.12937, -31.70105, -29.14439, -26.46061, -23.65103, -20.71709,
13306 -17.66041, -14.48271, -11.18593, -7.77221, -4.24393, -.60374,
13307 3.14531, 6.99978, 10.95566, 15.00818, 19.15136, 23.37787,
13308 27.67681, 32.03237, 36.42278, 40.83668, 45.29436, 49.79246,
13309 -31.89437, -31.77215, -31.52779, -31.16143, -30.67334, -30.06382,
13310 -29.33328, -28.48222, -27.51123, -26.42099, -25.21229, -23.88603,
13311 -22.44322, -20.88502, -19.21272, -17.42777, -15.53182, -13.52669,
13312 -11.41446, -9.1975, -6.87848, -4.46049, -1.94714, .65736, 3.34788,
13313 6.11816, 8.95978, 11.8613, 14.80383, 17.75924, 20.71774,
13314 23.71589, 0., 0., 0., 0., 0., 0., 0., 0., 0., -16.05019, -15.9464,
13315 -15.73896, -15.42815, -15.0144, -14.4983, -13.88057, -13.16213,
13316 -12.34407, -11.42771, -10.41455, -9.30639, -8.10531, -6.81376,
13317 -5.43459, -3.97121, -2.42768, -.80899, .87859, 2.62689, 4.42334,
13318 6.24733, 8.06983, 9.90464, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13319 0., 0., 0., 0., 0., 0., 0., -6.49343, -6.41131, -6.24732,
13320 -6.00202, -5.67623, -5.27111, -4.78813, -4.22919, -3.59665,
13321 -2.89345, -2.12325, -1.29074, -.40202, .5345, 1.50455, 2.48212,
13322 3.46665, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13323 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.76583, -1.70887,
13324 -1.59552, -1.427, -1.20523, -.93302, -.61434, -.25504, .13641, 0.,
13325 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13326 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13327 -.17133, -.14341, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13328 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
13329 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.}, {41, 32, 24, 17, 9, 2} }
13349 static int cs__1 = 1;
13350 static int cs__0 = 0;
13351 static double c_b24 = 2.9723;
13352 static double c_b25 = -.99569;
13353 static double c_b26 = .09464;
13354 static double c_b27 = 1.2962e-12;
13355 static double c_b28 = -.13048;
13356 static double c_b29 = -.03128;
13357 static double c_b30 = 3.7969e-14;
13358 static double c_b31 = 1.03681;
13359 static double c_b32 = -.14336;
13360 static int cs__2 = 2;
13361 static int cs__3 = 3;
13362 static double c_b43 = .180926;
13363 static double c_b44 = -1.69153;
13364 static double c_b45 = .18605;
13365 static double c_b46 = .3;
13366 static double c_b47 = 0.;
13367 static double c_b49 = 6.6017e-16;
13368 static double c_b50 = 2.59982;
13369 static double c_b51 = -.31831;
13370 static double c_b52 = 1.2481e-12;
13371 static double c_b53 = -.57028;
13372 static double c_b54 = .05983;
13373 static double c_b55 = 5.2681e-13;
13374 static double c_b56 = -.24719;
13375 static double c_b57 = .00519;
13376 static double c_b58 = 2.7518e15;
13377 static double c_b59 = -25.38969;
13378 static double c_b60 = 2.46542;
13379 static int cs__4 = 4;
13380 static int cs__5 = 5;
13382 static double c_b78 = .0825299;
13383 static double c_b79 = -1.25562;
13384 static double c_b80 = .12981;
13385 static double c_b84 = 3.6611e-15;
13386 static double c_b85 = 1.47688;
13387 static double c_b86 = -.16537;
13388 static double c_b87 = 6.1264e-10;
13389 static double c_b88 = -2.25011;
13390 static double c_b89 = .15289;
13391 static double c_b90 = 7.982e-10;
13392 static double c_b91 = -2.76152;
13393 static double c_b92 = .21847;
13394 static double c_b93 = 5.2868e-22;
13395 static double c_b94 = 7.66253;
13396 static double c_b95 = -.77527;
13397 static double c_b112 = 119.261;
13398 static double c_b113 = -3.78587;
13399 static double c_b114 = .34024;
13400 static double c_b115 = 9.3777e-12;
13401 static double c_b116 = -.66548;
13402 static double c_b117 = .0033;
13403 static double c_b118 = 3.0395e-13;
13404 static double c_b119 = .24728;
13405 static double c_b120 = -.06607;
13406 static double c_b183 = 1e-6;
13407 static double c_b186 = 1.5;
13409 #define temp (blockin_1.temp)
13410 #define fnumin (blockin_1.fnumin)
13411 #define fnumax (blockin_1.fnumax)
13412 #define dnu (blockin_1.dnu)
13413 #define slit (app3a_1.slit)
13414 #define dx (app3a_1.dx)
13415 #define rsilo (rsilo_1.rsilo)
13416 #define omeg (bba_1.omeg)
13417 #define rsi (bba_1.rsi)
13418 #define rsigg (bba_1.rsigg)
13419 #define nsol (bbc_1.nsol)
13420 #define like (like_1.like)
13421 #define ik1k0 (k1k0_1.ik1k0)
13422 #define ibound (bbb_1.ibound)
13432 double hexa[10], quad[10], freq[10], e;
13434 double s, x, t1, t2, t3, t4;
13438 double ss[1], tt[2];
13439 extern int bound32_(
double *,
double *,
int
13440 *),
bound54_(
double *,
double *,
int *);
13442 extern int spline_(
int *,
int *,
int *,
13443 double *,
double *,
double *,
double *,
13444 double *,
double *,
int *,
double *);
13445 double dtrans[10], abscoef[10];
13446 extern int addspec_(
double *,
double *,
13447 double *,
double *,
double *,
double *,
13448 double *,
int *,
double *,
double *,
int *,
13449 int *,
int *,
int *,
int *,
int *);
13450 double eps, alfatot[10];
13523 if (t < 50. || t > 300.) {
13525 os <<
"out of T range ( 50<T<300)! return without calc.!" <<
"\n";
13526 throw runtime_error(os.str());
13533 fnumin = f / 29979245800.;
13564 for (i__ = 1; i__ <= s__1; ++i__) {
13567 alfatot[i__ - 1] = 0.;
13569 abscoef[i__ - 1] = 0.;
13600 for (i__ = 1; i__ <= s__1; ++i__) {
13612 if (
rsi[i__ - 1] < 1e-60) {
13613 rsi[i__ - 1] = rslow1;
13616 rsilo[i__ - 1] = log(
rsi[i__ - 1]) + log(10.) * 80.;
13617 omeg[i__ - 1] = (double) (i__ - 1) *
dx;
13623 spline_(&
nsol, &cs__1, &cs__0, &eps,
omeg,
rsilo, tt, ss, &si, &nr,
rsigg)
13632 s = c_b24 * exp((c_b26 * x + c_b25) * x);
13633 t1 = c_b27 * exp((c_b29 * x + c_b28) * x);
13634 t2 = c_b30 * exp((c_b32 * x + c_b31) * x);
13639 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &cs__0, &
13640 like, &cs__2, &cs__0, &cs__2, &cs__3);
13642 for (i__ = 1; i__ <= s__1; ++i__) {
13643 quad[i__ - 1] = abscoef[i__ - 1];
13645 alfatot[i__ - 1] = abscoef[i__ - 1] + alfatot[i__ - 1];
13658 for (i__ = 1; i__ <= s__1; ++i__) {
13670 if (
rsi[i__ - 1] < 1e-60) {
13671 rsi[i__ - 1] = rslow1;
13674 rsilo[i__ - 1] = log(
rsi[i__ - 1]) + log(10.) * 80.;
13676 omeg[i__ - 1] = (double) (i__ - 1) *
dx;
13678 spline_(&
nsol, &cs__1, &cs__0, &eps,
omeg,
rsilo, tt, ss, &si, &nr,
rsigg)
13685 if (
temp >= 140.) {
13689 s = c_b43 * exp((c_b45 * x + c_b44) * x);
13690 e = c_b46 * exp((c_b47 * x + c_b47) * x);
13691 t1 = c_b49 * exp((c_b51 * x + c_b50) * x);
13692 t2 = c_b52 * exp((c_b54 * x + c_b53) * x);
13693 t3 = c_b55 * exp((c_b57 * x + c_b56) * x);
13694 t4 = c_b58 * exp((c_b60 * x + c_b59) * x);
13698 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &cs__0, &
13699 like, &cs__4, &cs__0, &cs__4, &cs__5);
13701 for (i__ = 1; i__ <= s__1; ++i__) {
13702 hexa[i__ - 1] = abscoef[i__ - 1];
13713 alfatot[i__ - 1] += abscoef[i__ - 1];
13724 s = c_b78 * exp((c_b80 * x + c_b79) * x);
13725 e = c_b46 * exp((c_b47 * x + c_b47) * x);
13726 t1 = c_b84 * exp((c_b86 * x + c_b85) * x);
13727 t2 = c_b87 * exp((c_b89 * x + c_b88) * x);
13728 t3 = c_b90 * exp((c_b92 * x + c_b91) * x);
13729 t4 = c_b93 * exp((c_b95 * x + c_b94) * x);
13731 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &cs__0, &
13732 like, &cs__4, &cs__0, &cs__4, &cs__5);
13734 for (i__ = 1; i__ <= s__1; ++i__) {
13735 hexa[i__ - 1] = abscoef[i__ - 1];
13746 alfatot[i__ - 1] += abscoef[i__ - 1];
13762 s = c_b112 * exp((c_b114 * x + c_b113) * x);
13763 t1 = c_b115 * exp((c_b117 * x + c_b116) * x);
13764 t2 = c_b118 * exp((c_b120 * x + c_b119) * x);
13767 addspec_(&s, &e, &t1, &t2, &t3, &t4, &
temp, &nf, freq, abscoef, &cs__0, &
13768 like, &cs__2, &cs__2, &cs__3, &cs__3);
13770 for (i__ = 1; i__ <= s__1; ++i__) {
13771 dtrans[i__ - 1] = abscoef[i__ - 1];
13773 alfatot[i__ - 1] += abscoef[i__ - 1];
13799 tksabs[0] = quad[0];
13800 tksabs[1] = hexa[0];
13801 tksabs[2] = dtrans[0];
13802 tksabs[3] = alfatot[0];
13803 ret_val = alfatot[0];
13824 #define wnrmax3 (app3a_1.wnrmax3)
13825 #define rsilo (rsilo_1.rsilo)
13826 #define omeg (bba_2.omeg)
13827 #define rsigg (bba_2.rsigg)
13828 #define beta (bba_2.beta)
13829 #define nsol (bbc_1.nsol)
13830 #define ibound (bbb_1.ibound)
13831 #define q1 (n2part_1.q1)
13832 #define wn2 (n2part_1.wn2)
13833 #define b01 (n2part_1.b01)
13834 #define d01 (n2part_1.d01)
13835 #define jrange2 (n2part_1.jrange2)
13843 tau1,
double *tau2,
double *tau5,
double *tau6,
13844 double *
temp,
int *nf,
double *freq,
double *abscoef,
13845 int * ,
int *
like,
int *lambda1,
int *lambda2,
13846 int *lambda,
int * )
13850 static double closchm = 2.68675484e19;
13851 static double boltzwn = .6950304;
13852 static double hbar = 1.054588757e-27;
13853 static double pi = 3.1415926535898;
13854 static double clight = 2.997925e10;
13864 int s__1, s__2, s__3, s__4, s__5, s__6;
13875 int list, jsum = 0;
13876 extern double bgama_(
double *,
double *,
double *,
13877 double *,
double *,
double *,
double *);
13880 int i1, j1, i2, j2;
13881 double p1, p2, omega1, omega2;
13884 int jplusl, ip1, jp1, ip2, jp2;
13885 double fac, cgs, xbg, wkf, frq, wki;
13886 extern double specfct_(
double *,
double *,
double *,
13887 double *,
int *,
double *),
clebsqr_(
int *,
13912 twopic = 2. * pi * clight;
13920 d__2 = closchm * 1e-30;
13921 calib = twopic * (d__1 * d__1 * 4. / (hbar * 3. * clight)) * (d__2 * d__2)
13923 calib /= (double) (*
like + 1);
13927 for (i__ = 1; i__ <= s__1; ++i__) {
13949 if (*lambda1 == 0 || *lambda2 == 0) {
13964 for (i1 = 1; i1 <= s__1; ++i1) {
13967 for (ip1 = 1; ip1 <= s__2; ++ip1) {
13969 cg1s =
clebsqr_(&j1, lambda1, &jp1);
13976 s__3 = j1 * (j1 + 1);
13977 p1 = (double) (2 * j1 + 1) *
wn2[1 + j1 % 2 - 1] * exp(
13978 -1.4387859 / *
temp * ((
b01 - (
double) s__3 *
d01) * (
13979 double) s__3)) /
q1;
13983 omega1 = (
b01 - (double) s__3 *
d01) * (double) s__3 - (
13984 b01 - (
double) s__4 *
d01) * (
double) s__4;
13986 for (i2 = 1; i2 <= s__3; ++i2) {
13989 for (ip2 = 1; ip2 <= s__4; ++ip2) {
13991 cg2s =
clebsqr_(&j2, lambda2, &jp2);
13998 s__5 = j2 * (j2 + 1);
13999 p2 = (double) (2 * j2 + 1) *
wn2[1 + j2 % 2 - 1] *
14000 exp(-1.4387859 / *
temp * ((
b01 - (
double)
14001 s__5 *
d01) * (
double) s__5)) /
q1;
14004 omega2 = (
b01 - (double) s__5 *
d01) * (double)
14005 s__5 - (
b01 - (
double) s__6 *
d01) * (
14007 fac = calib * p1 * p2 * cg1s * cg2s;
14009 for (i__ = 1; i__ <= s__5; ++i__) {
14010 frq = freq[i__] - omega1 - omega2;
14011 wki = freq[i__] * (1. - exp(-
beta * freq[i__]));
14013 xbg = *g0 *
bgama_(&frq, tau1, tau2, ep, tau5, tau6,
14023 abscoef[i__] += xbg * wkf;
14040 for (i__ = 1; i__ <= s__2; ++i__) {
14043 for (ip = 1; ip <= s__1; ++ip) {
14052 s__4 = j * (j + 1);
14053 p = (double) (2 * j + 1) *
wn2[1 + j % 2 - 1] * exp(
14054 -1.4387859 / *
temp * ((
b01 - (
double) s__4 *
d01) * (
14055 double) s__4)) /
q1;
14059 omega1 = (
b01 - (double) s__4 *
d01) * (double) s__4 - (
14060 b01 - (
double) s__3 *
d01) * (
double) s__3;
14061 fac = calib * p * cgs;
14063 for (iq = 1; iq <= s__4; ++iq) {
14064 frq = freq[iq] - omega1;
14066 wki = freq[iq] * (1. - exp(-
beta * freq[iq]));
14068 xbg = *g0 *
bgama_(&frq, tau1, tau2, ep, tau5, tau6,
temp);
14076 abscoef[iq] += xbg * wkf;
14103 #define q (n2part_2.q)
14104 #define wn2 (n2part_2.wn2)
14105 #define b0 (n2part_2.b0)
14106 #define d0 (n2part_2.d0)
14107 #define jrange1 (n2part_2.jrange1)
14126 s__1 = j * (j + 1);
14127 dq = (double) (2 * j + 1) *
wn2[1 + j % 2 - 1] * exp(-1.4387859 * ((
14128 b0 - (
double) s__1 *
d0) * (
double) s__1) / *
temp);
14131 if (dq >
q / 900.) {
14147 #define slit (app3a_1.slit)
14148 #define dx (app3a_1.dx)
14149 #define wnrmax3 (app3a_1.wnrmax3)
14150 #define nsri (app3b_1.nsri)
14151 #define ns (app3b_1.ns)
14152 #define nsriup (app3b_1.nsriup)
14153 #define rsi (bl3_1.rsi)
14178 }
else if (*y == 0) {
14184 x0 =
nsri + 1. + *x /
dx;
14188 nu = (int) (x0 -
ns);
14195 no = (int) (x0 +
ns);
14209 for (i__ = nu; i__ <= s__1; ++i__) {
14211 dr = slope * (xi - (*x -
slit));
14215 rsi[i__ - 1] += dr;
14228 for (i__ = n1; i__ <= s__1; ++i__) {
14230 dr = *y - slope * (xi - *x);
14234 rsi[i__ - 1] += dr;
14259 double *phi2,
int *n,
double *rtemp)
14265 double tfac, f, gp, si;
14267 extern int ixpolat_(
int *,
int *,
int *,
14268 double *,
double *,
double *,
double *,
14269 double *,
double *,
int *,
double *);
14302 tfac = -(*rtemp) * f;
14304 if (f <= omega[*n]) {
14307 ret_val = exp(-(phi[*n - 1] - phi[*n]) * (f - omega[*n]) / (omega[*n] -
14308 omega[*n - 1]) + phi[*n] + tfac) * 1e-80;
14317 ixpolat_(n, &cs__1, &cs__0, &c_b183, &omega[1], &phi[1], &f, &gp, &si, &
14319 ret_val = exp(tfac + gp) * 1e-80;
14325 #define slit (app3a_1.slit)
14326 #define dx (app3a_1.dx)
14327 #define wnrmax3 (app3a_1.wnrmax3)
14328 #define nsri (app3b_1.nsri)
14329 #define ns (app3b_1.ns)
14330 #define nsriup (app3b_1.nsriup)
14331 #define eb (energ_1.eb)
14332 #define niv (energ_1.niv)
14333 #define nlines (dimer_1.nlines)
14334 #define rsibb (bl3_2.rsibb)
14335 #define ldelvi (bbbb_2.ldelvi)
14336 #define ivi (bbbb_2.ivi)
14337 #define ivip (bbbb_2.ivip)
14338 #define ldelel (bbbb_2.ldelel)
14339 #define ll (bbbb_2.ll)
14340 #define llp (bbbb_2.llp)
14347 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,
14348 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,
14349 3,4,4,4,4,4,4,4,4 };
14350 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,
14351 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,
14353 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,
14354 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,
14356 static int ldelels[63] = { 1,3,1,3,1,3,1,3,1,3,-3,-1,1,3,-3,-1,1,3,
14357 -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,
14358 -1,-1,-1,-3,-3,3,3,-3,-3,-3,-3,-3,3,3,1,1,-1,-1 };
14359 static double as[63] = { 4.4844e-40,4.4356e-40,2.9345e-40,2.885e-40,
14360 1.6441e-40,1.5899e-40,7.2882e-41,6.7748e-41,1.0378e-41,1.3041e-42,
14361 1.5006e-41,1.537e-41,1.6139e-41,1.7143e-41,1.9985e-41,2.0169e-41,
14362 2.0994e-41,2.2094e-41,1.636e-41,1.6281e-41,1.6714e-41,1.7326e-41,
14363 8.0425e-42,8.0862e-42,8.0093e-42,8.1366e-42,2.4471e-42,2.5406e-42,
14364 2.6629e-42,2.8064e-42,4.6227e-42,4.715e-42,4.8513e-42,5.0133e-42,
14365 3.9968e-42,3.984e-42,3.981e-42,3.9687e-42,1.1806e-42,1.3458e-42,
14366 3.8746e-42,3.9219e-42,7.3334e-43,1.339e-42,1.3041e-42,7.1401e-43,
14367 1.3461e-42,6.5776e-43,6.9847e-43,1.3517e-42,7.5545e-43,1.3268e-42,
14368 6.9847e-43,1.3517e-42,7.464e-43,2.1322e-43,2.6037e-43,2.0823e-43,
14369 2.0632e-43,2.1067e-43,2.0531e-43,2.1218e-43,2.3006e-43 };
14370 static double bs[63] = { 4.3e-4,4.6e-4,8.3e-4,8.9e-4,.0017,.00186,
14371 .0041,.00457,0.,0.,9.99e-4,5.23e-4,1.49e-4,-1.68e-4,.001837,
14372 .001153,6.6e-4,2.54e-4,.003603,.002677,.002101,.001738,.00595,
14373 .006843,0.,.007035,.001025,6.42e-4,2.54e-4,-1.64e-4,.002342,
14374 .001975,.00164,.001328,.004943,.004999,.005461,.006839,0.,.010993,
14375 0.,0.,.001367,.005262,0.,.001601,.00451,0.,.001828,.004175,.04816,
14376 .007033,.001828,.004175,.009338,.003733,.008508,.006979,0.,
14377 .005035,0.,.004169,0. };
14378 static double twopic = 1.88365183e11;
14379 static double pi = 3.141592654;
14390 double stoke, stoki, am, pf;
14396 extern double clebsqr_(
int *,
int *,
int *);
14397 extern int profile_(
double *,
double *);
14400 #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42]
14431 for (i__ = 1; i__ <= 401; ++i__) {
14433 rsibb[i__ - 1] = 0.;
14436 alfa = 1. / (*
temp * .69519);
14437 rm = 2.32498211e-23;
14440 d__1 = rm * 1.380662e-16 * *
temp * 2. * pi / 4.3906208382975998e-53;
14441 pf = pow(d__1, c_b186);
14448 ldelvi = ldelvis[nr - 1];
14449 ivi = ivis[nr - 1];
14450 ivip = ivips[nr - 1];
14451 ldelel = ldelels[nr - 1];
14465 nnii =
niv[iv - 1];
14468 for (l = 1; l <= s__1; ++l) {
14471 am = a * exp(-b * (
double) ((l - 1) * l));
14478 if (lp >
niv[ivp - 1] || lp < 1) {
14481 if (
eb_ref(lp, ivp) == 0.) {
14484 if (
eb_ref(l, iv) == 0.) {
14489 stoki = am * exp(-alfa *
eb_ref(l, iv)) / pf * (double) ((
ll << 1)
14497 stokip = am * exp(-alfa *
eb_ref(lp, ivp)) / pf * (double) ((
llp
14519 for (n = 1; n <= s__1; ++n) {
14529 for (i__ = 1; i__ <= s__1; ++i__) {
14560 #define slit (app3a_1.slit)
14561 #define dx (app3a_1.dx)
14562 #define wnrmax3 (app3a_1.wnrmax3)
14563 #define nsri (app3b_1.nsri)
14564 #define ns (app3b_1.ns)
14565 #define nsriup (app3b_1.nsriup)
14566 #define eb (energ_1.eb)
14567 #define niv (energ_1.niv)
14568 #define nlines (dimer_1.nlines)
14569 #define rsibb (bl3_2.rsibb)
14576 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,
14577 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
14579 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,
14580 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 };
14581 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,
14582 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 };
14583 static int ldelels[54] = { 1,3,5,1,3,5,1,3,5,1,3,5,-5,-3,-1,1,3,5,-5,
14584 -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,
14585 1,3,5,-5,-3,-1,1,3,5 };
14586 static double as[54] = { 7.9332e-42,7.8207e-42,7.7235e-42,4.5815e-42,
14587 4.4834e-42,4.4059e-42,2.173e-42,2.0824e-42,2.025e-42,7.7222e-43,
14588 7.0351e-43,6.6815e-43,4.9611e-43,5.2232e-43,5.2979e-43,5.4652e-43,
14589 5.6827e-43,5.9277e-43,5.733e-43,6.062e-43,6.0862e-43,6.2104e-43,
14590 6.3809e-43,6.5698e-43,3.9501e-43,4.1599e-43,4.1033e-43,4.1097e-43,
14591 4.1339e-43,4.153e-43,1.5858e-43,1.5976e-43,1.5478e-43,1.5066e-43,
14592 1.4554e-43,1.3848e-43,9.9241e-44,1.0109e-43,1.0396e-43,1.0758e-43,
14593 1.1176e-43,1.1636e-43,1.646e-43,1.647e-43,1.6617e-43,1.6837e-43,
14594 1.7085e-43,1.7327e-43,1.1797e-43,1.1593e-43,1.1405e-43,1.1174e-43,
14595 1.0853e-43,1.0401e-43 };
14596 static double bs[54] = { 6.12e-4,6.35e-4,6.77e-4,.001137,.001201,
14597 .001341,.00229,.002449,.00287,.005426,.005876,.00745,.001,8.83e-4,
14598 6.09e-4,3.92e-4,2.07e-4,3.7e-5,.001625,.001624,.001305,.001084,
14599 9.27e-4,8.21e-4,.002978,.003273,.002994,.002954,.003153,.003668,
14600 .005799,.006423,.006733,.00796,.010937,.019179,.001229,9.93e-4,
14601 7.67e-4,5.43e-4,3.09e-4,5.1e-5,.002456,.0023,.00221,.002193,
14602 .002273,.002506,.004556,.004825,.005454,.006725,.009431,.016672 };
14603 static double twopic = 1.88365183e11;
14604 static double pi = 3.141592654;
14612 int nnii,
ivip, nsol2;
14615 double stoke, stoki, am, pf;
14621 extern double clebsqr_(
int *,
int *,
int *);
14622 extern int profile_(
double *,
double *);
14625 #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42]
14655 for (i__ = 1; i__ <= 401; ++i__) {
14657 rsibb[i__ - 1] = 0.;
14659 alfa = 1. / (*
temp * .69519);
14660 rm = 2.32498211e-23;
14663 d__1 = rm * 1.380662e-16 * *
temp * 2. * pi / 4.3906208382975998e-53;
14664 pf = pow(d__1, c_b186);
14671 ldelvi = ldelvis[nr - 1];
14672 ivi = ivis[nr - 1];
14673 ivip = ivips[nr - 1];
14674 ldelel = ldelels[nr - 1];
14685 nnii =
niv[iv - 1];
14687 for (l = 1; l <= s__1; ++l) {
14688 am = a * exp(-b * (
double) (l * (l + 1)));
14692 if (lp >
niv[ivp - 1] || lp < 1) {
14695 if (
eb_ref(lp, ivp) == 0.) {
14698 if (
eb_ref(l, iv) == 0.) {
14703 stoki = am * exp(-alfa *
eb_ref(l, iv)) / pf * (double) ((
ll << 1)
14709 stokip = am * exp(-alfa *
eb_ref(lp, ivp)) / pf * (double) ((
llp
14728 for (n = 1; n <= s__1; ++n) {
14737 for (i__ = 1; i__ <= s__1; ++i__) {
14767 double ret_val, d__1;
14770 extern double fctl_(
int *);
14783 case 1:
goto L_threej2;
14786 fc = (double) ((*lp << 1) + 1);
14802 if (*l + *lambda < *lp || *lambda + *lp < *l || *l + *lp < *lambda) {
14805 if ((*l + *lp + *lambda) % 2 != 0) {
14808 if (*l < 0 || *lp < 0 || *lambda < 0) {
14811 f = 1. / (double) (*l + *lp + 1 - *lambda);
14812 if (*lambda == 0) {
14815 i1 = (*l + *lp + *lambda) / 2;
14816 i0 = (*l + *lp - *lambda) / 2 + 1;
14818 for (i__ = i0; i__ <= s__1; ++i__) {
14820 f = f * (double) i__ / (
double) (((i__ << 1) + 1) << 1);
14823 s__1 = *lambda + *l - *lp;
14824 s__2 = *lambda + *lp - *l;
14826 s__1 = (*lambda + *l - *lp) / 2;
14827 s__2 = (*lambda + *lp - *l) / 2;
14830 ret_val = p / (d__1 * d__1);
14841 return clebsqr_0_(1, (
int *)0, (
int *)0, (
int *)0);
14848 double ret_val, d__1;
14865 for (i__ = 2; i__ <= s__1; ++i__) {
14869 ret_val = (double) j;
14872 z__ = (double) (*n + 1);
14874 ret_val = exp(-z__) * pow(z__, d__1) * ((((-2.294720936e-4 / z__ -
14875 .00268132716) / z__ + .003472222222) / z__ + .08333333333) / z__
14876 + 1.) * 2.506628274631;
14879 #define ik1k0 (k1k0_1.ik1k0)
14881 double bgama_(
double *fnu,
double *t1,
double *t2,
double
14882 *eps,
double *t3,
double *t4,
double *
temp)
14886 static double pi = 3.1415926535898;
14887 static double clight = 29979245800.;
14888 static double hbar = 1.0545887e-27;
14889 static double boltz = 1.380662e-16;
14892 double ret_val, d__1, d__2, d__3, d__4;
14895 double omega, z__, k0, t0, bgambc, zp, xk1;
14905 omega = 2. * pi * clight * *fnu;
14906 t0 = hbar / (boltz * 2. * *
temp);
14908 d__1 = omega * *t1;
14909 z__ = sqrt((d__1 * d__1 + 1.) * (*t2 * *t2 + t0 * t0)) / *t1;
14910 if (z__ - 2. <= 0.) {
14918 d__1 = d__2 * d__2;
14921 d__3 = d__4 * d__4;
14922 xk1 = z__ * z__ * log(z__ / 2.) * ((((((3.2411e-4 * d__1 + .00301532) *
14923 d__1 + .02658733) * d__1 + .15084934) * d__1 + .51498869) * d__1
14924 + .87890594) * d__1 + .5) + ((((((-4.686e-5 * d__3 - .00110404) *
14925 d__3 - .01919402) * d__3 - .18156897) * d__3 - .67278579) * d__3
14926 + .15443144) * d__3 + 1.);
14930 xk1 = sqrt(z__) * exp(-z__) * ((((((-6.8245e-4 * d__1 + .00325614) * d__1
14931 - .00780353) * d__1 + .01504268) * d__1 - .0365562) * d__1 +
14932 .23498619) * d__1 + 1.25331414);
14935 d__1 = *t1 * omega;
14936 bgambc = *t1 / pi * exp(*t2 / *t1 + t0 * omega) * xk1 / (d__1 * d__1 + 1.)
14942 d__1 = omega * *t4;
14943 zp = sqrt((d__1 * d__1 + 1.) * (*t3 * *t3 + t0 * t0)) / *t4;
14944 if (zp - 2. <= 0.) {
14952 d__1 = d__2 * d__2;
14955 d__3 = d__4 * d__4;
14956 k0 = -log(zp / 2.) * ((((((.0045813 * d__1 + .0360768) * d__1 + .2659732)
14957 * d__1 + 1.2067492) * d__1 + 3.0899424) * d__1 + 3.5156229) *
14958 d__1 + 1.) + ((((((7.4e-6 * d__3 + 1.075e-4) * d__3 + .00262698) *
14959 d__3 + .0348859) * d__3 + .23069756) * d__3 + .4227842) * d__3 -
14964 k0 = exp(-zp) * ((((((5.3208e-4 * d__1 - .0025154) * d__1 + .00587872) *
14965 d__1 - .01062446) * d__1 + .02189568) * d__1 - .07832358) * d__1
14966 + 1.25331414) / sqrt(zp);
14968 ret_val = (bgambc + *eps * (*t3 / pi) * exp(*t3 / *t4 + t0 * omega) * k0)
14981 double *eps,
double *x,
double *y,
double *t,
14982 double *ss,
double *si,
int *nr,
double *s2)
14989 double epsi, prod, h__;
14995 double sm, delsqs, ht1, ht2, ss2, yp1, eta, ypn;
15022 case 1:
goto L_ixpolat;
15030 for (i__ = 2; i__ <= s__1; ++i__) {
15033 s2[i__] = 3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[
15034 s__2 + 1] - y[s__2]) / (x[s__2 + 1] - x[s__2])) / (x[i__ + 1]
15035 - x[i__ - 1]) / 1.5;
15047 for (i__ = 2; i__ <= s__2; ++i__) {
15048 if ((d__1 = s2[i__],
abs(d__1)) > sm) {
15049 sm = (d__2 = s2[i__],
abs(d__2));
15056 for (i__ = 2; i__ <= s__2; ++i__) {
15059 w = (3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[s__1 +
15060 1] - y[s__1]) / (x[s__1 + 1] - x[s__1])) / (x[i__ + 1] - x[
15061 i__ - 1]) - (x[i__] - x[i__ - 1]) * .5 / (x[i__ + 1] - x[i__
15062 - 1]) * s2[i__ - 1] - (.5 - (x[i__] - x[i__ - 1]) * .5 / (x[
15063 i__ + 1] - x[i__ - 1])) * s2[i__ + 1] - s2[i__]) * omega;
15065 if (
abs(w) - eta <= 0.) {
15076 if (eta - epsi >= 0.) {
15098 for (j = 1; j <= s__2; ++j) {
15102 if ((d__1 = t[j] - x[1]) < 0.) {
15104 }
else if (d__1 == 0) {
15110 if ((d__1 = t[j] - x[n]) < 0.) {
15112 }
else if (d__1 == 0) {
15118 if ((d__1 = t[j] - x[i__]) < 0.) {
15120 }
else if (d__1 == 0) {
15133 yp1 = (y[cs__1 + 1] - y[cs__1]) / (x[cs__1 + 1] - x[cs__1]) + (x[1] -
15134 x[2]) * (s2[1] * 2. + s2[2]) / 6.;
15137 }
else if (*k == 0) {
15143 ss[j] = yp1 + ht1 * s2[1];
15146 ss[j] = y[1] + yp1 * ht1 + s2[1] * ht1 * ht1 / 2.;
15153 ht1 = t[j] - x[n1];
15155 ypn = (y[n1 + 1] - y[n1]) / (x[n1 + 1] - x[n1]) + (x[n] - x[n1]) * (
15156 s2[n1] + s2[n] * 2.) / 6.;
15159 }
else if (*k == 0) {
15165 ss[j] = ypn + ht2 * s2[n];
15168 ss[j] = y[n] + ypn * ht2 + s2[n] * ht2 * ht2 / 2.;
15179 ht1 = t[j] - x[i__];
15180 ht2 = t[j] - x[i__ + 1];
15182 s3 = (s2[i__ + 1] - s2[i__]) / (x[i__ + 1] - x[i__]);
15183 ss2 = s2[i__] + ht1 * s3;
15184 delsqs = (s2[i__] + s2[i__ + 1] + ss2) / 6.;
15188 }
else if (*k == 0) {
15194 ss[j] = y[i__] + ht1 * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]))
15198 ss[j] = (y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) + (ht1 + ht2) *
15199 delsqs + prod * s3 / 6.;
15210 for (i__ = 1; i__ <= s__2; ++i__) {
15211 h__ = x[i__ + 1] - x[i__];
15215 *si = *si + h__ * .5 * (y[i__] + y[i__ + 1]) - d__1 * (d__1 * d__1) *
15216 (s2[i__] + s2[i__ + 1]) / 24.;
15227 double *eps,
double *x,
double *y,
double *t,
15228 double *ss,
double *si,
int *nr,
double *s2)
15230 return spline_0_(0, l, m, k, eps, x, y, t, ss, si, nr, s2);
15234 double *eps,
double *x,
double *y,
double *t,
15235 double *ss,
double *si,
int *nr,
double *s2)
15237 return spline_0_(1, l, m, k, eps, x, y, t, ss, si, nr, s2);
15253 #define fh2oa_1 (*(struct fh2oa_1_ *) &fh2oa_)
15264 #define fh2ob_1 (*(struct fh2ob_1_ *) &fh2ob_)
15265 #define fh2ob_2 (*(struct fh2ob_2_ *) &fh2ob_)
15271 #define sh2oa_1 (*(struct sh2oa_1_ *) &sh2oa_)
15282 #define sh2ob_1 (*(struct sh2ob_1_ *) &sh2ob_)
15283 #define sh2ob_2 (*(struct sh2ob_2_ *) &sh2ob_)
15289 #define s260a_1 (*(struct s260a_1_ *) &s260a_)
15300 #define s260b_1 (*(struct s260b_1_ *) &s260b_)
15301 #define s260b_2 (*(struct s260b_2_ *) &s260b_)
15308 #define consts_1 (*(struct consts_1_ *) &consts_)
15314 }
fh2oa_ = { {.012859, .011715, .011038, .011715, .012859, .015326,
15315 .016999, .018321, .019402, .01957, .019432, .017572, .01676,
15316 .01548, .013984, .012266, .010467, .0094526, .0080485, .0069484,
15317 .0061416, .0050941, .0044836, .0038133, .0034608, .0031487,
15318 .0024555, .0020977, .0017266, .001492, .0012709, 9.8081e-4,
15319 8.5063e-4, 6.8822e-4, 5.3809e-4, 4.4679e-4, 3.3774e-4, 2.7979e-4,
15320 2.1047e-4, 1.6511e-4, 1.2993e-4, 9.3033e-5, 7.436e-5, 5.6428e-5,
15321 4.5442e-5, 3.4575e-5, 2.7903e-5, 2.1374e-5, 1.6075e-5, 1.3022e-5,
15322 1.0962e-5, 8.5959e-6, 6.9125e-6, 5.3808e-6, 4.3586e-6, 3.6394e-6,
15323 2.9552e-6, 2.3547e-6, 1.8463e-6, 1.6036e-6, 1.3483e-6, 1.1968e-6,
15324 1.0333e-6, 8.4484e-7, 6.7195e-7, 5.0947e-7, 4.2343e-7, 3.4453e-7,
15325 2.783e-7, 2.3063e-7, 1.9951e-7, 1.7087e-7, 1.4393e-7, 1.2575e-7,
15326 1.075e-7, 8.2325e-8, 5.7524e-8, 4.4482e-8, 3.8106e-8, 3.4315e-8,
15327 2.9422e-8, 2.5069e-8, 2.2402e-8, 1.9349e-8, 1.6152e-8, 1.2208e-8,
15328 8.966e-9, 7.1322e-9, 6.1028e-9, 5.2938e-9, 4.535e-9, 3.4977e-9,
15329 2.9511e-9, 2.4734e-9, 2.0508e-9, 1.8507e-9, 1.6373e-9, 1.5171e-9,
15330 1.3071e-9, 1.2462e-9, 1.2148e-9, 1.259e-9, 1.3153e-9, 1.3301e-9,
15331 1.4483e-9, 1.6944e-9, 2.0559e-9, 2.2954e-9, 2.6221e-9, 3.2606e-9,
15332 4.2392e-9, 5.2171e-9, 6.2553e-9, 8.2548e-9, 9.5842e-9, 1.128e-8,
15333 1.3628e-8, 1.7635e-8, 2.1576e-8, 2.4835e-8, 3.0014e-8, 3.8485e-8,
15334 4.744e-8, 5.5202e-8, 7.0897e-8, 9.6578e-8, 1.3976e-7, 1.8391e-7,
15335 2.3207e-7, 2.996e-7, 4.0408e-7, 5.926e-7, 7.8487e-7, 1.0947e-6,
15336 1.4676e-6, 1.9325e-6, 2.6587e-6, 3.4534e-6, 4.4376e-6, 5.8061e-6,
15337 7.0141e-6, 8.4937e-6, 1.0186e-5, 1.2034e-5, 1.3837e-5, 1.6595e-5,
15338 1.9259e-5, 2.162e-5, 2.3681e-5, 2.7064e-5, 3.251e-5, 3.546e-5,
15339 3.9109e-5, 4.2891e-5, 4.7757e-5, 5.0981e-5, 5.0527e-5, 4.8618e-5,
15340 4.4001e-5, 3.7982e-5, 3.2667e-5, 2.7794e-5, 2.491e-5, 2.4375e-5,
15341 2.7316e-5, 3.2579e-5, 3.5499e-5, 3.801e-5, 4.1353e-5, 4.3323e-5,
15342 4.3004e-5, 3.979e-5, 3.7718e-5, 3.636e-5, 3.2386e-5, 2.7409e-5,
15343 2.3626e-5, 2.0631e-5, 1.8371e-5, 1.5445e-5, 1.2989e-5, 1.1098e-5,
15344 9.6552e-6, 8.0649e-6, 7.2365e-6, 5.9137e-6, 5.2759e-6, 4.886e-6,
15345 4.1321e-6, 3.5918e-6, 2.764e-6, 2.4892e-6, 2.1018e-6, 1.7848e-6,
15346 1.5855e-6, 1.3569e-6, 1.1986e-6, 9.4693e-7, 7.4097e-7, 6.3443e-7,
15347 4.8131e-7, 4.0942e-7, 3.3316e-7, 2.8488e-7, 2.3461e-7, 1.7397e-7,
15348 1.4684e-7, 1.0953e-7, 8.5396e-8, 6.9261e-8, 5.4001e-8, 4.543e-8,
15349 3.2791e-8, 2.5995e-8, 2.0225e-8, 1.571e-8, 1.3027e-8, 1.0229e-8,
15350 8.5277e-9, 6.5249e-9, 5.0117e-9, 3.9906e-9, 3.2332e-9, 2.7847e-9,
15351 2.457e-9, 2.3359e-9, 2.0599e-9, 1.8436e-9, 1.6559e-9, 1.491e-9,
15352 1.2794e-9, 9.8229e-10, 8.0054e-10, 6.0769e-10, 4.5646e-10,
15353 3.3111e-10, 2.4428e-10, 1.8007e-10, 1.3291e-10, 9.7974e-11,
15354 7.8271e-11, 6.3833e-11, 5.4425e-11, 4.6471e-11, 4.0209e-11,
15355 3.5227e-11, 3.1212e-11, 2.884e-11, 2.7762e-11, 2.7935e-11,
15356 3.2012e-11, 3.9525e-11, 5.0303e-11, 6.8027e-11, 9.3954e-11,
15357 1.2986e-10, 1.8478e-10, 2.5331e-10, 3.4827e-10, 4.6968e-10,
15358 6.238e-10, 7.9106e-10, 1.0026e-9, 1.2102e-9, 1.4146e-9, 1.6154e-9,
15359 1.751e-9, 1.8575e-9, 1.8742e-9, 1.87e-9, 1.8582e-9, 1.9657e-9,
15360 2.1204e-9, 2.0381e-9, 2.0122e-9, 2.0436e-9, 2.1213e-9, 2.0742e-9,
15361 1.987e-9, 2.0465e-9, 2.1556e-9, 2.2222e-9, 2.1977e-9, 2.1047e-9,
15362 1.9334e-9, 1.7357e-9, 1.5754e-9, 1.4398e-9, 1.4018e-9, 1.5459e-9,
15363 1.7576e-9, 2.1645e-9, 2.948e-9, 4.4439e-9, 5.8341e-9, 8.0757e-9,
15364 1.1658e-8, 1.6793e-8, 2.2694e-8, 2.9468e-8, 3.9278e-8, 5.2145e-8,
15365 6.4378e-8, 7.7947e-8, 8.5321e-8, 9.7848e-8, 1.0999e-7, 1.1489e-7,
15366 1.2082e-7, 1.2822e-7, 1.4053e-7, 1.5238e-7, 1.5454e-7, 1.5018e-7,
15367 1.4048e-7, 1.2359e-7, 1.0858e-7, 9.3486e-8, 8.1638e-8, 7.769e-8,
15368 8.4625e-8, 1.0114e-7, 1.143e-7, 1.2263e-7, 1.3084e-7, 1.338e-7,
15369 1.3573e-7, 1.3441e-7, 1.2962e-7, 1.2638e-7, 1.1934e-7, 1.1371e-7,
15370 1.0871e-7, 9.8843e-8, 9.1877e-8, 9.105e-8, 9.3213e-8, 9.2929e-8,
15371 1.0155e-7, 1.1263e-7, 1.237e-7, 1.3636e-7, 1.54e-7, 1.7656e-7,
15372 2.1329e-7, 2.3045e-7, 2.5811e-7, 2.9261e-7, 3.4259e-7, 4.077e-7,
15373 4.8771e-7, 5.8081e-7, 7.2895e-7, 8.7482e-7, 1.0795e-6, 1.3384e-6,
15374 1.7208e-6, 2.0677e-6, 2.5294e-6, 3.1123e-6, 3.79e-6, 4.7752e-6,
15375 5.6891e-6, 6.6261e-6, 7.6246e-6, 8.773e-6, 9.6672e-6, 1.098e-5,
15376 1.1287e-5, 1.167e-5, 1.1635e-5, 1.1768e-5, 1.2039e-5, 1.2253e-5,
15377 1.3294e-5, 1.4005e-5, 1.3854e-5, 1.342e-5, 1.3003e-5, 1.2645e-5,
15378 1.1715e-5, 1.1258e-5, 1.1516e-5, 1.2494e-5, 1.3655e-5, 1.4931e-5,
15379 1.4649e-5, 1.3857e-5, 1.312e-5, 1.1791e-5, 1.0637e-5, 8.276e-6,
15380 6.5821e-6, 5.1959e-6, 4.0158e-6, 3.0131e-6, 2.0462e-6, 1.4853e-6,
15381 1.0365e-6, 7.3938e-7, 4.9752e-7, 3.4148e-7, 2.4992e-7, 1.8363e-7,
15382 1.4591e-7, 1.138e-7, 9.0588e-8, 7.3697e-8, 6.0252e-8, 5.1868e-8,
15383 4.266e-8, 3.6163e-8, 3.2512e-8, 2.9258e-8, 2.4238e-8, 2.1209e-8,
15384 1.6362e-8, 1.3871e-8, 1.2355e-8, 9.694e-9, 7.7735e-9, 6.2278e-9,
15385 5.2282e-9, 4.3799e-9, 3.5545e-9, 2.7527e-9, 2.095e-9, 1.6344e-9,
15386 1.2689e-9, 1.0403e-9, 8.488e-10, 6.3461e-10, 4.7657e-10,
15387 3.522e-10, 2.7879e-10, 2.3021e-10, 1.6167e-10, 1.1732e-10,
15388 8.9206e-11, 7.0596e-11, 5.831e-11, 4.4084e-11, 3.1534e-11,
15389 2.5068e-11, 2.2088e-11, 2.2579e-11, 2.2637e-11, 2.5705e-11,
15390 3.2415e-11, 4.6116e-11, 6.5346e-11, 9.4842e-11, 1.2809e-10,
15391 1.8211e-10, 2.4052e-10, 3.027e-10, 3.5531e-10, 4.2402e-10,
15392 4.673e-10, 4.7942e-10, 4.6813e-10, 4.5997e-10, 4.5788e-10,
15393 4.0311e-10, 3.7367e-10, 3.3149e-10, 2.9281e-10, 2.5231e-10,
15394 2.1152e-10, 1.9799e-10, 1.8636e-10, 1.9085e-10, 2.0786e-10,
15395 2.2464e-10, 2.3785e-10, 2.5684e-10, 2.7499e-10, 2.6962e-10,
15396 2.6378e-10, 2.6297e-10, 2.6903e-10, 2.7035e-10, 2.5394e-10,
15397 2.5655e-10, 2.7184e-10, 2.9013e-10, 3.0585e-10, 3.0791e-10,
15398 3.1667e-10, 3.4343e-10, 3.7365e-10, 4.0269e-10, 4.726e-10,
15399 5.6584e-10, 6.9791e-10, 8.6569e-10, 1.0393e-9, 1.2067e-9,
15400 1.5047e-9, 1.8583e-9, 2.2357e-9, 2.6498e-9, 3.2483e-9, 3.9927e-9,
15401 4.6618e-9, 5.5555e-9, 6.6609e-9, 8.2139e-9, 1.0285e-8, 1.3919e-8,
15402 1.8786e-8, 2.515e-8, 3.313e-8, 4.5442e-8, 6.337e-8, 9.0628e-8,
15403 1.2118e-7, 1.5927e-7, 2.1358e-7, 2.7825e-7, 3.7671e-7, 4.4894e-7,
15404 5.4442e-7, 6.224e-7, 7.3004e-7, 8.3384e-7, 8.7933e-7, 8.808e-7,
15405 8.6939e-7, 8.6541e-7, 8.2055e-7, 7.7278e-7, 7.5989e-7, 8.6909e-7,
15406 9.7945e-7, 1.0394e-6, 1.0646e-6, 1.1509e-6, 1.2017e-6, 1.1915e-6,
15407 1.1259e-6, 1.1549e-6, 1.1938e-6, 1.2356e-6, 1.2404e-6, 1.1716e-6,
15408 1.1149e-6, 1.0073e-6, 8.9845e-7, 7.6639e-7, 6.1517e-7, 5.0887e-7,
15409 4.1269e-7, 3.2474e-7, 2.5698e-7, 1.8893e-7, 1.4009e-7, 1.034e-7,
15410 7.7724e-8, 5.7302e-8, 4.2178e-8, 2.9603e-8, 2.1945e-8, 1.6301e-8,
15411 1.2806e-8, 1.0048e-8, 7.897e-9, 6.1133e-9, 4.9054e-9, 4.1985e-9,
15412 3.6944e-9, 3.2586e-9, 2.7362e-9, 2.3647e-9, 2.1249e-9, 1.8172e-9,
15413 1.6224e-9, 1.5158e-9, 1.2361e-9, 1.0682e-9, 9.2312e-10, 7.922e-10,
15414 6.8174e-10, 5.6147e-10, 4.8268e-10, 4.1534e-10, 3.3106e-10,
15415 2.8275e-10, 2.4584e-10, 2.0742e-10, 1.784e-10, 1.4664e-10,
15416 1.239e-10, 1.0497e-10, 8.5038e-11, 6.7008e-11, 5.6355e-11,
15417 4.3323e-11, 3.6914e-11, 3.2262e-11, 3.0749e-11, 3.0318e-11,
15418 2.9447e-11, 2.9918e-11, 3.0668e-11, 3.1315e-11, 3.0329e-11,
15419 2.8259e-11, 2.6065e-11, 2.3578e-11, 2.0469e-11, 1.6908e-11,
15420 1.4912e-11, 1.1867e-11, 9.973e-12, 8.1014e-12, 6.7528e-12,
15421 6.3133e-12, 5.8599e-12, 6.0145e-12, 6.5105e-12, 7.0537e-12,
15422 7.4973e-12, 7.8519e-12, 8.5039e-12, 9.1995e-12, 1.0694e-11,
15423 1.1659e-11, 1.2685e-11, 1.3087e-11, 1.3222e-11, 1.2634e-11,
15424 1.1077e-11, 9.6259e-12, 8.3202e-12, 7.4857e-12, 6.8069e-12,
15425 6.7496e-12, 7.3116e-12, 8.0171e-12, 8.6394e-12, 9.2659e-12,
15426 1.0048e-11, 1.0941e-11, 1.2226e-11, 1.3058e-11, 1.5193e-11,
15427 1.8923e-11, 2.3334e-11, 2.8787e-11, 3.6693e-11, 4.8295e-11,
15428 6.426e-11, 8.8269e-11, 1.1865e-10, 1.5961e-10, 2.0605e-10,
15429 2.7349e-10, 3.7193e-10, 4.8216e-10, 6.1966e-10, 7.715e-10,
15430 1.0195e-9, 1.2859e-9, 1.6535e-9, 2.0316e-9, 2.3913e-9, 3.0114e-9,
15431 3.7495e-9, 4.6504e-9, 5.9145e-9, 7.684e-9, 1.0304e-8, 1.301e-8,
15432 1.6441e-8, 2.1475e-8, 2.5892e-8, 2.9788e-8, 3.382e-8, 4.0007e-8,
15433 4.4888e-8, 4.5765e-8, 4.6131e-8, 4.6239e-8, 4.4849e-8, 4.0729e-8,
15434 3.6856e-8, 3.6164e-8, 3.7606e-8, 4.1457e-8, 4.375e-8, 5.115e-8,
15435 5.6054e-8, 6.1586e-8, 6.4521e-8, 6.6494e-8, 6.9024e-8, 6.8893e-8,
15436 7.0901e-8, 6.976e-8, 7.1485e-8, 7.074e-8, 7.3764e-8, 7.6618e-8,
15437 8.4182e-8, 9.3838e-8, 1.0761e-7, 1.2851e-7, 1.4748e-7, 1.8407e-7,
15438 2.2109e-7, 2.6392e-7, 2.9887e-7, 3.4493e-7, 4.0336e-7, 4.3551e-7,
15439 4.9231e-7, 5.0728e-7, 5.3781e-7, 5.3285e-7, 5.4496e-7, 5.5707e-7,
15440 5.6944e-7, 6.1123e-7, 6.4317e-7, 6.4581e-7, 6.1999e-7, 6.0191e-7,
15441 5.7762e-7, 5.7241e-7, 5.7013e-7, 6.016e-7, 6.6905e-7, 7.4095e-7,
15442 8.2121e-7, 8.0947e-7, 7.6145e-7, 7.2193e-7, 6.3722e-7, 5.4316e-7,
15443 4.2186e-7, 3.2528e-7, 2.5207e-7, 1.8213e-7, 1.2658e-7, 8.6746e-8,
15444 6.0216e-8, 4.1122e-8, 2.8899e-8, 2.174e-8, 1.799e-8, 1.5593e-8,
15445 1.397e-8, 1.2238e-8, 1.0539e-8, 9.2386e-9, 7.8481e-9, 6.8704e-9,
15446 5.7615e-9, 5.0434e-9, 4.6886e-9, 4.377e-9, 3.9768e-9, 3.5202e-9,
15447 3.1854e-9, 2.9009e-9, 2.5763e-9, 2.2135e-9, 1.9455e-9, 1.6248e-9,
15448 1.3368e-9, 1.0842e-9, 8.4254e-10, 6.7414e-10, 5.4667e-10,
15449 4.5005e-10, 3.4932e-10, 2.6745e-10, 2.2053e-10, 1.8162e-10,
15450 1.4935e-10, 1.1618e-10, 9.1888e-11, 8.0672e-11, 6.8746e-11,
15451 6.2668e-11, 5.5715e-11, 4.5074e-11, 3.7669e-11, 3.2082e-11,
15452 2.8085e-11, 2.4838e-11, 1.9791e-11, 1.6964e-11, 1.3887e-11,
15453 1.1179e-11, 9.7499e-12, 7.8255e-12, 6.3698e-12, 5.3265e-12,
15454 4.6588e-12, 4.4498e-12, 3.9984e-12, 3.7513e-12, 3.7176e-12,
15455 3.9148e-12, 4.2702e-12, 5.009e-12, 6.5801e-12, 8.7787e-12,
15456 1.2718e-11, 1.8375e-11, 2.5304e-11, 3.5403e-11, 4.8842e-11,
15457 6.484e-11, 8.0911e-11, 1.0136e-10, 1.2311e-10, 1.4203e-10,
15458 1.5869e-10, 1.8093e-10, 2.137e-10, 2.5228e-10, 2.8816e-10,
15459 3.4556e-10, 3.986e-10, 4.435e-10, 4.776e-10, 5.2357e-10,
15460 6.0827e-10, 6.3635e-10, 6.5886e-10, 6.8753e-10, 7.2349e-10,
15461 7.2789e-10, 6.8232e-10, 6.6081e-10, 6.4232e-10, 6.3485e-10,
15462 6.4311e-10, 7.2235e-10, 7.7263e-10, 8.1668e-10, 9.0324e-10,
15463 9.7643e-10, 1.0535e-9, 1.0195e-9, 1.0194e-9, 1.0156e-9,
15464 9.6792e-10, 9.2725e-10, 8.7347e-10, 8.4484e-10, 8.2647e-10,
15465 8.4363e-10, 9.1261e-10, 1.0051e-9, 1.1511e-9, 1.4037e-9,
15466 1.8066e-9, 2.4483e-9, 3.2739e-9, 4.3194e-9, 5.6902e-9, 7.7924e-9,
15467 9.7376e-9, 1.2055e-8, 1.4303e-8, 1.6956e-8, 1.9542e-8, 2.2233e-8,
15468 2.5186e-8, 2.7777e-8, 2.8943e-8, 2.8873e-8, 2.9417e-8, 2.7954e-8,
15469 2.7524e-8, 2.704e-8, 3.1254e-8, 3.6843e-8, 3.7797e-8, 3.8713e-8,
15470 4.0135e-8, 4.2824e-8, 4.3004e-8, 4.0279e-8, 4.2781e-8, 4.522e-8,
15471 4.8948e-8, 5.0172e-8, 4.8499e-8, 4.7182e-8, 4.2204e-8, 3.7701e-8,
15472 3.0972e-8, 2.4654e-8, 1.9543e-8, 1.4609e-8, 1.1171e-8, 8.3367e-9,
15473 6.3791e-9, 5.079e-9, 4.0655e-9, 3.3658e-9, 2.7882e-9, 2.4749e-9,
15474 2.2287e-9, 2.0217e-9, 1.8191e-9, 1.5897e-9, 1.4191e-9, 1.2448e-9,
15475 1.0884e-9, 9.3585e-10, 7.9429e-10, 7.3214e-10, 6.5008e-10,
15476 5.7549e-10, 5.43e-10, 4.7251e-10, 4.3451e-10, 3.8446e-10,
15477 3.5589e-10, 3.4432e-10, 2.8209e-10, 2.462e-10, 2.1278e-10,
15478 1.8406e-10, 1.6314e-10, 1.3261e-10, 1.1696e-10, 9.6865e-11,
15479 7.6814e-11, 6.6411e-11, 5.0903e-11, 4.0827e-11, 3.0476e-11,
15480 2.323e-11, 1.7707e-11, 1.3548e-11, 1.0719e-11, 9.3026e-12,
15481 8.7967e-12, 8.3136e-12, 7.3918e-12, 6.5293e-12, 5.9243e-12,
15482 5.3595e-12, 3.5266e-12, 2.2571e-12, 1.615e-12, 1.1413e-12,
15483 8.4998e-13, 7.0803e-13, 5.1747e-13, 4.0694e-13, 3.6528e-13,
15484 3.367e-13, 3.1341e-13, 2.939e-13, 2.868e-13, 3.1283e-13,
15485 3.7294e-13, 5.0194e-13, 6.7919e-13, 1.0455e-12, 1.523e-12,
15486 2.3932e-12, 3.4231e-12, 5.0515e-12, 7.3193e-12, 9.9406e-12,
15487 1.2193e-11, 1.4742e-11, 1.9269e-11, 2.1816e-11, 2.275e-11,
15488 2.2902e-11, 2.3888e-11, 2.4902e-11, 2.216e-11, 2.0381e-11,
15489 1.9903e-11, 2.0086e-11, 1.9304e-11, 2.0023e-11, 2.2244e-11,
15490 2.545e-11, 3.1228e-11, 3.456e-11, 3.6923e-11, 3.7486e-11,
15491 3.8124e-11, 3.8317e-11, 3.4737e-11, 3.3037e-11, 3.1724e-11,
15492 2.984e-11, 2.8301e-11, 2.5857e-11, 2.3708e-11, 1.9452e-11,
15493 1.6232e-11, 1.5174e-11, 1.4206e-11, 1.4408e-11, 1.5483e-11,
15494 1.8642e-11, 2.3664e-11, 3.0181e-11, 4.016e-11, 5.2287e-11,
15495 7.2754e-11, 1.0511e-10, 1.4531e-10, 2.0998e-10, 2.6883e-10,
15496 3.3082e-10, 4.2638e-10, 5.3132e-10, 6.3617e-10, 7.1413e-10,
15497 8.5953e-10, 9.9715e-10, 1.0796e-9, 1.0978e-9, 1.1052e-9,
15498 1.1095e-9, 1.0641e-9, 9.7881e-10, 9.659e-10, 1.0332e-9, 1.1974e-9,
15499 1.3612e-9, 1.5829e-9, 1.8655e-9, 2.1465e-9, 2.4779e-9, 2.737e-9,
15500 2.9915e-9, 3.3037e-9, 3.6347e-9, 3.9587e-9, 4.4701e-9, 5.0122e-9,
15501 5.8044e-9, 6.1916e-9, 6.9613e-9, 7.7863e-9, 8.282e-9, 9.4359e-9,
15502 9.7387e-9, 1.0656e-8, 1.0746e-8, 1.121e-8, 1.1905e-8, 1.2194e-8,
15503 1.3145e-8, 1.3738e-8, 1.3634e-8, 1.3011e-8, 1.2511e-8, 1.1805e-8,
15504 1.2159e-8, 1.239e-8, 1.3625e-8, 1.5678e-8, 1.7886e-8, 1.9933e-8,
15505 1.9865e-8, 1.9e-8, 1.7812e-8, 1.5521e-8, 1.2593e-8, 9.5635e-9,
15506 7.2987e-9, 5.2489e-9, 3.5673e-9, 2.4206e-9, 1.6977e-9, 1.2456e-9,
15507 9.3744e-10, 7.8379e-10, 6.996e-10, 6.6451e-10, 6.8521e-10,
15508 7.4234e-10, 8.6658e-10, 9.4972e-10, 1.0791e-9, 1.2359e-9,
15509 1.3363e-9, 1.5025e-9, 1.5368e-9, 1.6152e-9, 1.6184e-9, 1.6557e-9,
15510 1.7035e-9, 1.6916e-9, 1.7237e-9, 1.7175e-9, 1.6475e-9, 1.5335e-9,
15511 1.4272e-9, 1.3282e-9, 1.3459e-9, 1.4028e-9, 1.5192e-9, 1.7068e-9,
15512 1.9085e-9, 2.1318e-9, 2.102e-9, 1.9942e-9, 1.8654e-9, 1.6391e-9,
15513 1.3552e-9, 1.0186e-9, 7.854e-10, 5.7022e-10, 3.9247e-10,
15514 2.5441e-10, 1.6699e-10, 1.1132e-10, 6.8989e-11, 4.5255e-11,
15515 3.1106e-11, 2.3161e-11, 1.7618e-11, 1.438e-11, 1.1601e-11,
15516 9.7148e-12, 8.4519e-12, 6.5392e-12, 5.4113e-12, 4.7624e-12,
15517 4.0617e-12, 3.6173e-12, 2.8608e-12, 2.2724e-12, 1.7436e-12,
15518 1.3424e-12, 1.0358e-12, 7.3064e-13, 5.45e-13, 4.0551e-13,
15519 2.8642e-13, 2.1831e-13, 1.686e-13, 1.2086e-13, 1.015e-13,
15520 9.355e-14, 8.4105e-14, 7.3051e-14, 6.9796e-14, 7.9949e-14,
15521 1.0742e-13, 1.5639e-13, 2.1308e-13, 3.1226e-13, 4.6853e-13,
15522 6.6917e-13, 1.0088e-12, 1.4824e-12, 2.2763e-12, 3.3917e-12,
15523 4.4585e-12, 6.3187e-12, 8.4189e-12, 1.1302e-11, 1.3431e-11,
15524 1.5679e-11, 1.9044e-11, 2.2463e-11, 2.3605e-11, 2.3619e-11,
15525 2.3505e-11, 2.3805e-11, 2.2549e-11, 1.9304e-11, 1.8382e-11,
15526 1.7795e-11, 1.8439e-11, 1.9146e-11, 2.1966e-11, 2.6109e-11,
15527 3.1883e-11, 3.7872e-11, 4.3966e-11, 4.8789e-11, 5.3264e-11,
15528 5.9705e-11, 6.3744e-11, 7.0163e-11, 7.9114e-11, 8.8287e-11,
15529 9.9726e-11, 1.1498e-10, 1.37e-10, 1.6145e-10, 1.9913e-10,
15530 2.2778e-10, 2.6216e-10, 2.977e-10, 3.3405e-10, 3.7821e-10,
15531 3.9552e-10, 4.1322e-10, 4.0293e-10, 4.0259e-10, 3.8853e-10,
15532 3.7842e-10, 3.8551e-10, 4.4618e-10, 5.0527e-10, 5.0695e-10,
15533 5.1216e-10, 5.193e-10, 5.5794e-10, 5.332e-10, 5.2008e-10,
15534 5.6888e-10, 6.1883e-10, 6.9006e-10, 6.9505e-10, 6.6768e-10,
15535 6.329e-10, 5.6753e-10, 5.0327e-10, 3.983e-10, 3.1147e-10,
15536 2.4416e-10, 1.886e-10, 1.3908e-10, 9.9156e-11, 7.3779e-11,
15537 5.6048e-11, 4.2457e-11, 3.4505e-11, 2.9881e-11, 2.7865e-11,
15538 2.8471e-11, 3.1065e-11, 3.4204e-11, 3.914e-11, 4.3606e-11,
15539 4.9075e-11, 5.3069e-11, 5.5236e-11, 5.5309e-11, 5.3832e-11,
15540 5.3183e-11, 5.1783e-11, 5.2042e-11, 5.4422e-11, 5.5656e-11,
15541 5.4409e-11, 5.2659e-11, 5.1696e-11, 5.1726e-11, 4.9003e-11,
15542 4.905e-11, 5.17e-11, 5.6818e-11, 6.3129e-11, 6.6542e-11,
15543 6.4367e-11, 5.9908e-11, 5.447e-11, 4.7903e-11, 3.9669e-11,
15544 2.9651e-11, 2.2286e-11, 1.6742e-11, 1.1827e-11, 7.7739e-12,
15545 4.8805e-12, 3.1747e-12, 2.0057e-12, 1.255e-12, 8.7434e-13,
15546 6.2755e-13, 4.9752e-13, 4.0047e-13, 3.5602e-13, 3.093e-13,
15547 2.4903e-13, 1.9316e-13, 1.4995e-13, 1.2059e-13, 8.7242e-14,
15548 6.4511e-14, 5.33e-14, 4.3741e-14, 3.4916e-14, 2.656e-14,
15549 1.6923e-14, 1.1816e-14, 6.7071e-15, 3.6474e-15, 2.0686e-15,
15550 1.1925e-15, 6.8948e-16, 3.9661e-16, 2.2576e-16, 1.2669e-16,
15551 6.9908e-17, 3.7896e-17, 2.028e-17, 1.1016e-17, 6.7816e-18,
15552 6.0958e-18, 8.9913e-18, 1.7201e-17, 3.4964e-17, 7.0722e-17,
15553 1.402e-16, 2.7167e-16, 5.1478e-16, 9.55e-16, 1.7376e-15,
15554 3.1074e-15, 5.4789e-15, 9.564e-15, 1.6635e-14, 2.9145e-14,
15555 5.2179e-14, 8.8554e-14, 1.4764e-13, 2.3331e-13, 3.5996e-13,
15556 5.2132e-13, 6.3519e-13, 7.3174e-13, 8.3752e-13, 9.8916e-13,
15557 1.1515e-12, 1.4034e-12, 1.6594e-12, 2.1021e-12, 2.7416e-12,
15558 3.4135e-12, 4.5517e-12, 5.5832e-12, 7.2303e-12, 9.9484e-12,
15559 1.2724e-11, 1.6478e-11, 2.0588e-11, 2.5543e-11, 3.3625e-11,
15560 4.1788e-11, 5.0081e-11, 6.0144e-11, 6.9599e-11, 8.4408e-11,
15561 9.7143e-11, 1.0805e-10, 1.1713e-10, 1.2711e-10, 1.3727e-10,
15562 1.4539e-10, 1.6049e-10, 1.768e-10, 2.0557e-10, 2.4967e-10,
15563 3.0096e-10, 3.5816e-10, 4.0851e-10, 4.6111e-10, 5.2197e-10,
15564 5.5043e-10, 6.0324e-10, 6.4983e-10, 6.7498e-10, 7.0545e-10,
15565 7.068e-10, 7.5218e-10, 7.5723e-10, 7.784e-10, 8.0081e-10,
15566 8.0223e-10, 7.7271e-10, 7.1676e-10, 6.7819e-10, 6.4753e-10,
15567 6.5844e-10, 7.0163e-10, 7.7503e-10, 8.8152e-10, 9.9022e-10,
15568 1.0229e-9, 9.9296e-10, 8.9911e-10, 7.7813e-10, 6.3785e-10,
15569 4.7491e-10, 3.528e-10, 2.4349e-10, 1.6502e-10, 1.1622e-10,
15570 8.6715e-11, 6.736e-11, 5.391e-11, 4.5554e-11, 4.13e-11,
15571 3.9728e-11, 3.9e-11, 3.9803e-11, 4.1514e-11, 4.3374e-11,
15572 4.6831e-11, 4.8921e-11, 5.1995e-11, 5.7242e-11, 6.2759e-11,
15573 7.0801e-11, 7.4555e-11, 7.9754e-11, 8.7616e-11, 9.1171e-11,
15574 1.0349e-10, 1.1047e-10, 1.2024e-10, 1.299e-10, 1.3725e-10,
15575 1.5005e-10, 1.5268e-10, 1.5535e-10, 1.5623e-10, 1.5009e-10,
15576 1.4034e-10, 1.3002e-10, 1.2225e-10, 1.1989e-10, 1.2411e-10,
15577 1.3612e-10, 1.5225e-10, 1.7202e-10, 1.9471e-10, 1.9931e-10,
15578 1.9079e-10, 1.7478e-10, 1.5259e-10, 1.2625e-10, 9.3332e-11,
15579 6.8796e-11, 4.6466e-11, 2.9723e-11, 1.8508e-11, 1.2106e-11,
15580 8.0142e-12, 5.4066e-12, 3.9329e-12, 3.1665e-12, 2.742e-12,
15581 2.3996e-12, 2.3804e-12, 2.3242e-12, 2.4476e-12, 2.5331e-12,
15582 2.3595e-12, 2.2575e-12, 2.1298e-12, 2.0088e-12, 1.8263e-12,
15583 1.6114e-12, 1.4422e-12, 1.2946e-12, 1.0837e-12, 9.1282e-13,
15584 7.2359e-13, 5.3307e-13, 3.8837e-13, 2.6678e-13, 1.6769e-13,
15585 1.0826e-13, 7.2364e-14, 4.5201e-14, 3.0808e-14, 2.2377e-14,
15586 1.704e-14, 9.2181e-15, 5.2934e-15, 3.5774e-15, 3.1431e-15,
15587 3.7647e-15, 5.6428e-15, 9.5139e-15, 1.7322e-14, 2.8829e-14,
15588 4.7708e-14, 6.9789e-14, 9.7267e-14, 1.4662e-13, 1.9429e-13,
15589 2.5998e-13, 3.6636e-13, 4.796e-13, 6.5129e-13, 7.7638e-13,
15590 9.3774e-13, 1.1467e-12, 1.3547e-12, 1.5686e-12, 1.6893e-12,
15591 1.9069e-12, 2.1352e-12, 2.3071e-12, 2.4759e-12, 2.8247e-12,
15592 3.4365e-12, 4.3181e-12, 5.6107e-12, 7.0017e-12, 8.6408e-12,
15593 1.0974e-11, 1.3742e-11, 1.6337e-11, 2.0157e-11, 2.3441e-11,
15594 2.6733e-11, 3.0247e-11, 3.3737e-11, 3.8618e-11, 4.1343e-11,
15595 4.387e-11, 4.4685e-11, 4.4881e-11, 4.5526e-11, 4.3628e-11,
15596 4.4268e-11, 4.6865e-11, 5.3426e-11, 5.402e-11, 5.3218e-11,
15597 5.4587e-11, 5.636e-11, 5.774e-11, 5.6426e-11, 6.0399e-11,
15598 6.6981e-11, 7.4319e-11, 7.7977e-11, 7.5539e-11, 7.161e-11,
15599 6.4606e-11, 5.5498e-11, 4.3944e-11, 3.3769e-11, 2.5771e-11,
15600 1.9162e-11, 1.3698e-11, 1.0173e-11, 7.8925e-12, 6.1938e-12,
15601 4.7962e-12, 4.0811e-12, 3.3912e-12, 2.8625e-12, 2.4504e-12,
15602 2.2188e-12, 2.2139e-12, 2.2499e-12, 2.2766e-12, 2.3985e-12,
15603 2.5459e-12, 2.9295e-12, 3.4196e-12, 3.6155e-12, 4.0733e-12,
15604 4.461e-12, 4.9372e-12, 5.4372e-12, 5.7304e-12, 6.164e-12,
15605 6.1278e-12, 6.294e-12, 6.4947e-12, 6.8174e-12, 7.519e-12,
15606 8.2608e-12, 8.4971e-12, 8.3484e-12, 8.1888e-12, 7.8552e-12,
15607 7.8468e-12, 7.5943e-12, 7.9096e-12, 8.6869e-12, 9.1303e-12,
15608 9.2547e-12, 8.9322e-12, 8.2177e-12, 7.3408e-12, 5.7956e-12,
15609 4.447e-12, 3.5881e-12, 2.6748e-12, 1.7074e-12, 9.67e-13,
15610 5.2645e-13, 2.9943e-13, 1.7316e-13, 1.0039e-13, 5.7859e-14,
15611 3.2968e-14, 1.8499e-14, 1.0192e-14, 5.5015e-15, 2.904e-15,
15612 1.4968e-15, 7.5244e-16, 3.6852e-16, 1.7568e-16, 8.1464e-17,
15613 3.6717e-17, 1.6076e-17, 6.8341e-18, 2.8195e-18, 1.1286e-18, 0.,
15614 0., 0., 0., 0., 0., 0., 0., 0., 1.407e-18, 3.0405e-18, 6.4059e-18,
15615 1.3169e-17, 2.6443e-17, 5.1917e-17, 9.9785e-17, 1.8802e-16,
15616 3.4788e-16, 6.3328e-16, 1.137e-15, 2.0198e-15, 3.5665e-15,
15617 6.3053e-15, 1.1309e-14, 2.1206e-14, 3.2858e-14, 5.5165e-14,
15618 8.6231e-14, 1.2776e-13, 1.778e-13, 2.5266e-13, 3.6254e-13,
15619 5.1398e-13, 6.8289e-13, 8.7481e-13, 1.1914e-12, 1.6086e-12,
15620 2.0469e-12, 2.5761e-12, 3.4964e-12, 4.498e-12, 5.5356e-12,
15621 6.7963e-12, 8.572e-12, 1.07e-11, 1.2983e-11, 1.627e-11,
15622 1.9609e-11, 2.2668e-11, 2.5963e-11, 3.0918e-11, 3.493e-11,
15623 3.933e-11, 4.4208e-11, 4.6431e-11, 5.1141e-11, 5.4108e-11,
15624 5.8077e-11, 6.505e-11, 7.2126e-11, 8.1064e-11, 8.1973e-11,
15625 8.1694e-11, 8.3081e-11, 8.024e-11, 7.9225e-11, 7.6256e-11,
15626 7.8468e-11, 8.0041e-11, 8.1585e-11, 8.3485e-11, 8.3774e-11,
15627 8.587e-11, 8.6104e-11, 8.8516e-11, 9.0814e-11, 9.2522e-11,
15628 8.8913e-11, 7.8381e-11, 6.8568e-11, 5.6797e-11, 4.4163e-11,
15629 3.2369e-11, 2.3259e-11, 1.6835e-11, 1.1733e-11, 8.5273e-12,
15630 6.3805e-12, 4.8983e-12, 3.8831e-12, 3.261e-12, 2.8577e-12,
15631 2.521e-12, 2.2913e-12, 2.0341e-12, 1.8167e-12, 1.6395e-12,
15632 1.489e-12, 1.3516e-12, 1.2542e-12, 1.291e-12, 1.3471e-12,
15633 1.4689e-12, 1.5889e-12, 1.6989e-12, 1.8843e-12, 2.0902e-12,
15634 2.3874e-12, 2.7294e-12, 3.3353e-12, 4.0186e-12, 4.5868e-12,
15635 5.2212e-12, 5.8856e-12, 6.5991e-12, 7.2505e-12, 7.6637e-12,
15636 8.5113e-12, 9.4832e-12, 9.9678e-12, 1.0723e-11, 1.0749e-11,
15637 1.138e-11, 1.1774e-11, 1.1743e-11, 1.2493e-11, 1.2559e-11,
15638 1.2332e-11, 1.1782e-11, 1.1086e-11, 1.0945e-11, 1.1178e-11,
15639 1.2083e-11, 1.3037e-11, 1.473e-11, 1.645e-11, 1.7403e-11,
15640 1.7004e-11, 1.5117e-11, 1.3339e-11, 1.0844e-11, 8.0915e-12,
15641 5.6615e-12, 3.7196e-12, 2.5194e-12, 1.6569e-12, 1.1201e-12,
15642 8.2335e-13, 6.027e-13, 4.8205e-13, 4.1313e-13, 3.6243e-13,
15643 3.2575e-13, 2.773e-13, 2.5292e-13, 2.3062e-13, 2.1126e-13,
15644 2.1556e-13, 2.1213e-13, 2.2103e-13, 2.1927e-13, 2.0794e-13,
15645 1.9533e-13, 1.6592e-13, 1.4521e-13, 1.1393e-13, 8.3772e-14,
15646 6.2077e-14, 4.3337e-14, 2.7165e-14, 1.6821e-14, 9.5407e-15,
15647 5.3093e-15, 3.032e-15, 1.7429e-15, 9.9828e-16, 5.6622e-16,
15648 3.1672e-16, 1.7419e-16, 9.3985e-17, 4.9656e-17, 2.5652e-17,
15649 1.2942e-17, 6.3695e-18, 3.0554e-18, 1.4273e-18, -0., -0., -0.,
15650 -0., -0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15651 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15652 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15653 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15654 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15655 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15656 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15657 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15658 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15659 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15660 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
15661 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.} };
15670 }
sh2oa_ = { {.11109, .10573, .10162, .10573, .11109, .12574, .13499,
15671 .14327, .15065, .15164, .15022, .13677, .13115, .12253, .11271,
15672 .1007, .087495, .080118, .06994, .062034, .056051, .047663,
15673 .04245, .03669, .033441, .030711, .025205, .022113, .01888,
15674 .016653, .014626, .012065, .010709, .0091783, .0077274, .0067302,
15675 .0056164, .0049089, .0041497, .0035823, .0031124, .0026414,
15676 .0023167, .0020156, .0017829, .0015666, .0013928, .0012338,
15677 .0010932, 9.7939e-4, 8.8241e-4, 7.9173e-4, 7.1296e-4, 6.4179e-4,
15678 5.8031e-4, 5.2647e-4, 4.7762e-4, 4.3349e-4, 3.9355e-4, 3.5887e-4,
15679 3.2723e-4, 2.9919e-4, 2.7363e-4, 2.5013e-4, 2.2876e-4, 2.0924e-4,
15680 1.9193e-4, 1.7618e-4, 1.6188e-4, 1.4891e-4, 1.3717e-4, 1.2647e-4,
15681 1.1671e-4, 1.0786e-4, 9.9785e-5, 9.235e-5, 8.5539e-5, 7.9377e-5,
15682 7.3781e-5, 6.8677e-5, 6.3993e-5, 5.9705e-5, 5.5788e-5, 5.2196e-5,
15683 4.8899e-5, 4.5865e-5, 4.3079e-5, 4.0526e-5, 3.8182e-5, 3.6025e-5,
15684 3.4038e-5, 3.2203e-5, 3.0511e-5, 2.8949e-5, 2.7505e-5, 2.617e-5,
15685 2.4933e-5, 2.3786e-5, 2.2722e-5, 2.1736e-5, 2.0819e-5, 1.9968e-5,
15686 1.9178e-5, 1.8442e-5, 1.776e-5, 1.7127e-5, 1.6541e-5, 1.5997e-5,
15687 1.5495e-5, 1.5034e-5, 1.4614e-5, 1.423e-5, 1.3883e-5, 1.3578e-5,
15688 1.3304e-5, 1.3069e-5, 1.2876e-5, 1.2732e-5, 1.2626e-5, 1.2556e-5,
15689 1.2544e-5, 1.2604e-5, 1.2719e-5, 1.2883e-5, 1.3164e-5, 1.3581e-5,
15690 1.4187e-5, 1.4866e-5, 1.5669e-5, 1.6717e-5, 1.8148e-5, 2.0268e-5,
15691 2.2456e-5, 2.5582e-5, 2.9183e-5, 3.3612e-5, 3.9996e-5, 4.6829e-5,
15692 5.5055e-5, 6.5897e-5, 7.536e-5, 8.7213e-5, 1.0046e-4, 1.1496e-4,
15693 1.2943e-4, 1.5049e-4, 1.6973e-4, 1.8711e-4, 2.0286e-4, 2.2823e-4,
15694 2.678e-4, 2.8766e-4, 3.1164e-4, 3.364e-4, 3.6884e-4, 3.9159e-4,
15695 3.8712e-4, 3.7433e-4, 3.4503e-4, 3.1003e-4, 2.8027e-4, 2.5253e-4,
15696 2.3408e-4, 2.2836e-4, 2.4442e-4, 2.7521e-4, 2.9048e-4, 3.0489e-4,
15697 3.2646e-4, 3.388e-4, 3.3492e-4, 3.0987e-4, 2.9482e-4, 2.8711e-4,
15698 2.6068e-4, 2.2683e-4, 1.9996e-4, 1.7788e-4, 1.6101e-4, 1.3911e-4,
15699 1.2013e-4, 1.0544e-4, 9.4224e-5, 8.1256e-5, 7.3667e-5, 6.2233e-5,
15700 5.5906e-5, 5.1619e-5, 4.514e-5, 4.0273e-5, 3.3268e-5, 3.0258e-5,
15701 2.644e-5, 2.3103e-5, 2.0749e-5, 1.8258e-5, 1.6459e-5, 1.4097e-5,
15702 1.2052e-5, 1.0759e-5, 9.14e-6, 8.1432e-6, 7.146e-6, 6.4006e-6,
15703 5.6995e-6, 4.9372e-6, 4.4455e-6, 3.9033e-6, 3.474e-6, 3.1269e-6,
15704 2.8059e-6, 2.5558e-6, 2.2919e-6, 2.0846e-6, 1.8983e-6, 1.7329e-6,
15705 1.5929e-6, 1.4631e-6, 1.3513e-6, 1.2461e-6, 1.1519e-6, 1.0682e-6,
15706 9.9256e-7, 9.2505e-7, 8.6367e-7, 8.0857e-7, 7.5674e-7, 7.0934e-7,
15707 6.658e-7, 6.258e-7, 5.8853e-7, 5.5333e-7, 5.2143e-7, 4.9169e-7,
15708 4.6431e-7, 4.3898e-7, 4.1564e-7, 3.9405e-7, 3.7403e-7, 3.5544e-7,
15709 3.3819e-7, 3.2212e-7, 3.0714e-7, 2.9313e-7, 2.8003e-7, 2.6777e-7,
15710 2.5628e-7, 2.4551e-7, 2.354e-7, 2.2591e-7, 2.1701e-7, 2.0866e-7,
15711 2.0082e-7, 1.9349e-7, 1.8665e-7, 1.8027e-7, 1.7439e-7, 1.6894e-7,
15712 1.64e-7, 1.5953e-7, 1.5557e-7, 1.5195e-7, 1.4888e-7, 1.4603e-7,
15713 1.4337e-7, 1.4093e-7, 1.3828e-7, 1.3569e-7, 1.327e-7, 1.2984e-7,
15714 1.2714e-7, 1.2541e-7, 1.2399e-7, 1.2102e-7, 1.1878e-7, 1.1728e-7,
15715 1.1644e-7, 1.1491e-7, 1.1305e-7, 1.1235e-7, 1.1228e-7, 1.1224e-7,
15716 1.1191e-7, 1.1151e-7, 1.1098e-7, 1.1068e-7, 1.1109e-7, 1.1213e-7,
15717 1.1431e-7, 1.1826e-7, 1.2322e-7, 1.3025e-7, 1.4066e-7, 1.5657e-7,
15718 1.7214e-7, 1.9449e-7, 2.2662e-7, 2.6953e-7, 3.1723e-7, 3.7028e-7,
15719 4.4482e-7, 5.3852e-7, 6.2639e-7, 7.2175e-7, 7.7626e-7, 8.7248e-7,
15720 9.6759e-7, 1.0102e-6, 1.062e-6, 1.1201e-6, 1.2107e-6, 1.2998e-6,
15721 1.313e-6, 1.2856e-6, 1.235e-6, 1.1489e-6, 1.0819e-6, 1.012e-6,
15722 9.4795e-7, 9.2858e-7, 9.806e-7, 1.0999e-6, 1.1967e-6, 1.2672e-6,
15723 1.3418e-6, 1.3864e-6, 1.433e-6, 1.4592e-6, 1.4598e-6, 1.4774e-6,
15724 1.4726e-6, 1.482e-6, 1.505e-6, 1.4984e-6, 1.5181e-6, 1.5888e-6,
15725 1.685e-6, 1.769e-6, 1.9277e-6, 2.1107e-6, 2.3068e-6, 2.5347e-6,
15726 2.8069e-6, 3.1345e-6, 3.5822e-6, 3.9051e-6, 4.3422e-6, 4.8704e-6,
15727 5.5351e-6, 6.3454e-6, 7.269e-6, 8.2974e-6, 9.7609e-6, 1.1237e-5,
15728 1.3187e-5, 1.5548e-5, 1.8784e-5, 2.1694e-5, 2.5487e-5, 3.0092e-5,
15729 3.5385e-5, 4.2764e-5, 4.9313e-5, 5.58e-5, 6.2968e-5, 7.106e-5,
15730 7.7699e-5, 8.7216e-5, 8.9335e-5, 9.2151e-5, 9.2779e-5, 9.4643e-5,
15731 9.7978e-5, 1.0008e-4, 1.0702e-4, 1.1026e-4, 1.0828e-4, 1.055e-4,
15732 1.0432e-4, 1.0428e-4, 9.898e-5, 9.4992e-5, 9.5159e-5, 1.0058e-4,
15733 1.0738e-4, 1.155e-4, 1.1229e-4, 1.0596e-4, 1.0062e-4, 9.1742e-5,
15734 8.4492e-5, 6.8099e-5, 5.6295e-5, 4.6502e-5, 3.8071e-5, 3.0721e-5,
15735 2.3297e-5, 1.8688e-5, 1.483e-5, 1.2049e-5, 9.6754e-6, 7.9192e-6,
15736 6.6673e-6, 5.6468e-6, 4.8904e-6, 4.2289e-6, 3.688e-6, 3.2396e-6,
15737 2.8525e-6, 2.5363e-6, 2.2431e-6, 1.9949e-6, 1.7931e-6, 1.6164e-6,
15738 1.4431e-6, 1.2997e-6, 1.1559e-6, 1.0404e-6, 9.43e-7, 8.4597e-7,
15739 7.6133e-7, 6.8623e-7, 6.2137e-7, 5.6345e-7, 5.1076e-7, 4.6246e-7,
15740 4.1906e-7, 3.8063e-7, 3.461e-7, 3.1554e-7, 2.8795e-7, 2.6252e-7,
15741 2.3967e-7, 2.1901e-7, 2.0052e-7, 1.8384e-7, 1.6847e-7, 1.5459e-7,
15742 1.4204e-7, 1.3068e-7, 1.2036e-7, 1.1095e-7, 1.0237e-7, 9.4592e-8,
15743 8.753e-8, 8.1121e-8, 7.5282e-8, 6.9985e-8, 6.5189e-8, 6.0874e-8,
15744 5.6989e-8, 5.353e-8, 5.0418e-8, 4.7745e-8, 4.5367e-8, 4.3253e-8,
15745 4.1309e-8, 3.9695e-8, 3.8094e-8, 3.6482e-8, 3.4897e-8, 3.35e-8,
15746 3.2302e-8, 3.0854e-8, 2.9698e-8, 2.8567e-8, 2.76e-8, 2.6746e-8,
15747 2.5982e-8, 2.551e-8, 2.5121e-8, 2.4922e-8, 2.4909e-8, 2.5013e-8,
15748 2.5216e-8, 2.5589e-8, 2.6049e-8, 2.6451e-8, 2.6978e-8, 2.7687e-8,
15749 2.86e-8, 2.9643e-8, 3.0701e-8, 3.2058e-8, 3.3695e-8, 3.5558e-8,
15750 3.7634e-8, 3.9875e-8, 4.2458e-8, 4.548e-8, 4.8858e-8, 5.2599e-8,
15751 5.703e-8, 6.2067e-8, 6.7911e-8, 7.4579e-8, 8.1902e-8, 8.9978e-8,
15752 9.987e-8, 1.1102e-7, 1.2343e-7, 1.3732e-7, 1.5394e-7, 1.7318e-7,
15753 1.9383e-7, 2.1819e-7, 2.4666e-7, 2.8109e-7, 3.2236e-7, 3.776e-7,
15754 4.4417e-7, 5.2422e-7, 6.1941e-7, 7.4897e-7, 9.2041e-7, 1.1574e-6,
15755 1.4126e-6, 1.7197e-6, 2.1399e-6, 2.6266e-6, 3.3424e-6, 3.8418e-6,
15756 4.514e-6, 5.0653e-6, 5.8485e-6, 6.5856e-6, 6.8937e-6, 6.9121e-6,
15757 6.9005e-6, 6.9861e-6, 6.82e-6, 6.6089e-6, 6.5809e-6, 7.3496e-6,
15758 8.0311e-6, 8.3186e-6, 8.426e-6, 9.0644e-6, 9.4965e-6, 9.4909e-6,
15759 9.016e-6, 9.1494e-6, 9.3629e-6, 9.5944e-6, 9.5459e-6, 8.9919e-6,
15760 8.604e-6, 7.8613e-6, 7.1567e-6, 6.2677e-6, 5.1899e-6, 4.4188e-6,
15761 3.7167e-6, 3.0636e-6, 2.5573e-6, 2.0317e-6, 1.6371e-6, 1.3257e-6,
15762 1.0928e-6, 8.9986e-7, 7.4653e-7, 6.1111e-7, 5.1395e-7, 4.35e-7,
15763 3.7584e-7, 3.2633e-7, 2.8413e-7, 2.4723e-7, 2.1709e-7, 1.9294e-7,
15764 1.7258e-7, 1.5492e-7, 1.382e-7, 1.2389e-7, 1.1189e-7, 1.0046e-7,
15765 9.0832e-8, 8.2764e-8, 7.4191e-8, 6.7085e-8, 6.0708e-8, 5.4963e-8,
15766 4.9851e-8, 4.5044e-8, 4.0916e-8, 3.722e-8, 3.3678e-8, 3.0663e-8,
15767 2.7979e-8, 2.5495e-8, 2.3286e-8, 2.1233e-8, 1.9409e-8, 1.777e-8,
15768 1.626e-8, 1.4885e-8, 1.3674e-8, 1.2543e-8, 1.1551e-8, 1.0655e-8,
15769 9.8585e-9, 9.1398e-9, 8.4806e-9, 7.8899e-9, 7.3547e-9, 6.867e-9,
15770 6.4131e-9, 5.993e-9, 5.6096e-9, 5.2592e-9, 4.9352e-9, 4.6354e-9,
15771 4.3722e-9, 4.125e-9, 3.9081e-9, 3.7118e-9, 3.5372e-9, 3.3862e-9,
15772 3.2499e-9, 3.1324e-9, 3.0313e-9, 2.9438e-9, 2.8686e-9, 2.805e-9,
15773 2.7545e-9, 2.7149e-9, 2.6907e-9, 2.6724e-9, 2.6649e-9, 2.6642e-9,
15774 2.6725e-9, 2.6871e-9, 2.7056e-9, 2.7357e-9, 2.7781e-9, 2.8358e-9,
15775 2.9067e-9, 2.9952e-9, 3.102e-9, 3.2253e-9, 3.3647e-9, 3.5232e-9,
15776 3.7037e-9, 3.9076e-9, 4.1385e-9, 4.3927e-9, 4.6861e-9, 5.0238e-9,
15777 5.4027e-9, 5.8303e-9, 6.3208e-9, 6.8878e-9, 7.5419e-9, 8.313e-9,
15778 9.1952e-9, 1.0228e-8, 1.1386e-8, 1.2792e-8, 1.4521e-8, 1.6437e-8,
15779 1.8674e-8, 2.116e-8, 2.4506e-8, 2.8113e-8, 3.2636e-8, 3.7355e-8,
15780 4.2234e-8, 4.9282e-8, 5.7358e-8, 6.6743e-8, 7.8821e-8, 9.4264e-8,
15781 1.1542e-7, 1.3684e-7, 1.6337e-7, 2.0056e-7, 2.3252e-7, 2.6127e-7,
15782 2.9211e-7, 3.3804e-7, 3.7397e-7, 3.8205e-7, 3.881e-7, 3.9499e-7,
15783 3.9508e-7, 3.7652e-7, 3.5859e-7, 3.6198e-7, 3.7871e-7, 4.0925e-7,
15784 4.2717e-7, 4.8241e-7, 5.2008e-7, 5.653e-7, 5.9531e-7, 6.1994e-7,
15785 6.508e-7, 6.6355e-7, 6.9193e-7, 6.993e-7, 7.3058e-7, 7.4678e-7,
15786 7.9193e-7, 8.3627e-7, 9.1267e-7, 1.0021e-6, 1.1218e-6, 1.2899e-6,
15787 1.4447e-6, 1.7268e-6, 2.0025e-6, 2.3139e-6, 2.5599e-6, 2.892e-6,
15788 3.3059e-6, 3.5425e-6, 3.9522e-6, 4.0551e-6, 4.2818e-6, 4.2892e-6,
15789 4.421e-6, 4.5614e-6, 4.6739e-6, 4.9482e-6, 5.1118e-6, 5.0986e-6,
15790 4.9417e-6, 4.9022e-6, 4.8449e-6, 4.8694e-6, 4.8111e-6, 4.9378e-6,
15791 5.3231e-6, 5.7362e-6, 6.235e-6, 6.0951e-6, 5.7281e-6, 5.4585e-6,
15792 4.9032e-6, 4.3009e-6, 3.4776e-6, 2.8108e-6, 2.2993e-6, 1.7999e-6,
15793 1.387e-6, 1.075e-6, 8.5191e-7, 6.7951e-7, 5.5336e-7, 4.6439e-7,
15794 4.0243e-7, 3.5368e-7, 3.1427e-7, 2.7775e-7, 2.4486e-7, 2.1788e-7,
15795 1.9249e-7, 1.7162e-7, 1.5115e-7, 1.3478e-7, 1.2236e-7, 1.1139e-7,
15796 1.0092e-7, 9.0795e-8, 8.2214e-8, 7.4691e-8, 6.7486e-8, 6.0414e-8,
15797 5.4584e-8, 4.8754e-8, 4.3501e-8, 3.8767e-8, 3.4363e-8, 3.0703e-8,
15798 2.7562e-8, 2.4831e-8, 2.2241e-8, 1.9939e-8, 1.8049e-8, 1.6368e-8,
15799 1.4863e-8, 1.346e-8, 1.2212e-8, 1.1155e-8, 1.0185e-8, 9.3417e-9,
15800 8.5671e-9, 7.8292e-9, 7.1749e-9, 6.5856e-9, 6.0588e-9, 5.5835e-9,
15801 5.135e-9, 4.7395e-9, 4.3771e-9, 4.0476e-9, 3.756e-9, 3.4861e-9,
15802 3.2427e-9, 3.024e-9, 2.8278e-9, 2.6531e-9, 2.4937e-9, 2.3511e-9,
15803 2.2245e-9, 2.1133e-9, 2.0159e-9, 1.933e-9, 1.8669e-9, 1.8152e-9,
15804 1.7852e-9, 1.7752e-9, 1.7823e-9, 1.8194e-9, 1.8866e-9, 1.9759e-9,
15805 2.0736e-9, 2.2083e-9, 2.3587e-9, 2.4984e-9, 2.6333e-9, 2.816e-9,
15806 3.0759e-9, 3.372e-9, 3.6457e-9, 4.0668e-9, 4.4541e-9, 4.7976e-9,
15807 5.0908e-9, 5.4811e-9, 6.1394e-9, 6.3669e-9, 6.5714e-9, 6.8384e-9,
15808 7.1918e-9, 7.3741e-9, 7.2079e-9, 7.2172e-9, 7.2572e-9, 7.3912e-9,
15809 7.6188e-9, 8.3291e-9, 8.7885e-9, 9.2412e-9, 1.0021e-8, 1.0752e-8,
15810 1.1546e-8, 1.1607e-8, 1.1949e-8, 1.2346e-8, 1.2516e-8, 1.2826e-8,
15811 1.3053e-8, 1.3556e-8, 1.4221e-8, 1.5201e-8, 1.6661e-8, 1.8385e-8,
15812 2.0585e-8, 2.3674e-8, 2.7928e-8, 3.3901e-8, 4.1017e-8, 4.9595e-8,
15813 6.0432e-8, 7.6304e-8, 9.0764e-8, 1.0798e-7, 1.2442e-7, 1.4404e-7,
15814 1.6331e-7, 1.8339e-7, 2.0445e-7, 2.2288e-7, 2.3083e-7, 2.3196e-7,
15815 2.3919e-7, 2.3339e-7, 2.3502e-7, 2.3444e-7, 2.6395e-7, 2.9928e-7,
15816 3.0025e-7, 3.0496e-7, 3.1777e-7, 3.4198e-7, 3.4739e-7, 3.2696e-7,
15817 3.41e-7, 3.5405e-7, 3.7774e-7, 3.8285e-7, 3.6797e-7, 3.58e-7,
15818 3.2283e-7, 2.9361e-7, 2.4881e-7, 2.0599e-7, 1.7121e-7, 1.3641e-7,
15819 1.1111e-7, 8.9413e-8, 7.3455e-8, 6.2078e-8, 5.2538e-8, 4.5325e-8,
15820 3.9005e-8, 3.4772e-8, 3.1203e-8, 2.8132e-8, 2.525e-8, 2.2371e-8,
15821 2.0131e-8, 1.7992e-8, 1.6076e-8, 1.4222e-8, 1.249e-8, 1.1401e-8,
15822 1.0249e-8, 9.2279e-9, 8.5654e-9, 7.6227e-9, 6.9648e-9, 6.2466e-9,
15823 5.7252e-9, 5.38e-9, 4.696e-9, 4.2194e-9, 3.7746e-9, 3.3813e-9,
15824 3.0656e-9, 2.6885e-9, 2.4311e-9, 2.1572e-9, 1.8892e-9, 1.7038e-9,
15825 1.4914e-9, 1.3277e-9, 1.1694e-9, 1.0391e-9, 9.2779e-10,
15826 8.3123e-10, 7.4968e-10, 6.8385e-10, 6.2915e-10, 5.7784e-10,
15827 5.2838e-10, 4.8382e-10, 4.4543e-10, 4.1155e-10, 3.7158e-10,
15828 3.3731e-10, 3.0969e-10, 2.8535e-10, 2.6416e-10, 2.4583e-10,
15829 2.2878e-10, 2.1379e-10, 2.0073e-10, 1.8907e-10, 1.7866e-10,
15830 1.6936e-10, 1.6119e-10, 1.5424e-10, 1.4847e-10, 1.4401e-10,
15831 1.4068e-10, 1.3937e-10, 1.3943e-10, 1.4281e-10, 1.4766e-10,
15832 1.5701e-10, 1.7079e-10, 1.8691e-10, 2.0081e-10, 2.174e-10,
15833 2.4847e-10, 2.6463e-10, 2.7087e-10, 2.7313e-10, 2.8352e-10,
15834 2.9511e-10, 2.8058e-10, 2.7227e-10, 2.7356e-10, 2.8012e-10,
15835 2.8034e-10, 2.9031e-10, 3.103e-10, 3.3745e-10, 3.8152e-10,
15836 4.0622e-10, 4.2673e-10, 4.3879e-10, 4.5488e-10, 4.7179e-10,
15837 4.614e-10, 4.6339e-10, 4.6716e-10, 4.7024e-10, 4.7931e-10,
15838 4.8503e-10, 4.9589e-10, 4.9499e-10, 5.0363e-10, 5.3184e-10,
15839 5.6451e-10, 6.0932e-10, 6.6469e-10, 7.4076e-10, 8.3605e-10,
15840 9.4898e-10, 1.0935e-9, 1.2593e-9, 1.4913e-9, 1.8099e-9, 2.1842e-9,
15841 2.7284e-9, 3.2159e-9, 3.7426e-9, 4.5226e-9, 5.3512e-9, 6.1787e-9,
15842 6.8237e-9, 7.9421e-9, 9.0002e-9, 9.6841e-9, 9.9558e-9, 1.0232e-8,
15843 1.0591e-8, 1.0657e-8, 1.0441e-8, 1.0719e-8, 1.1526e-8, 1.2962e-8,
15844 1.4336e-8, 1.615e-8, 1.8417e-8, 2.0725e-8, 2.3426e-8, 2.5619e-8,
15845 2.7828e-8, 3.0563e-8, 3.3438e-8, 3.6317e-8, 4.04e-8, 4.4556e-8,
15846 5.0397e-8, 5.3315e-8, 5.9185e-8, 6.5311e-8, 6.9188e-8, 7.7728e-8,
15847 7.9789e-8, 8.6598e-8, 8.7768e-8, 9.1773e-8, 9.7533e-8, 1.0007e-7,
15848 1.065e-7, 1.0992e-7, 1.0864e-7, 1.0494e-7, 1.0303e-7, 1.0031e-7,
15849 1.0436e-7, 1.0537e-7, 1.1184e-7, 1.2364e-7, 1.3651e-7, 1.4881e-7,
15850 1.4723e-7, 1.4118e-7, 1.3371e-7, 1.1902e-7, 1.0007e-7, 7.9628e-8,
15851 6.4362e-8, 5.0243e-8, 3.8133e-8, 2.94e-8, 2.3443e-8, 1.9319e-8,
15852 1.6196e-8, 1.4221e-8, 1.2817e-8, 1.1863e-8, 1.1383e-8, 1.1221e-8,
15853 1.1574e-8, 1.1661e-8, 1.2157e-8, 1.2883e-8, 1.3295e-8, 1.4243e-8,
15854 1.424e-8, 1.4614e-8, 1.4529e-8, 1.4685e-8, 1.4974e-8, 1.479e-8,
15855 1.489e-8, 1.4704e-8, 1.4142e-8, 1.3374e-8, 1.2746e-8, 1.2172e-8,
15856 1.2336e-8, 1.2546e-8, 1.3065e-8, 1.409e-8, 1.5215e-8, 1.654e-8,
15857 1.6144e-8, 1.5282e-8, 1.4358e-8, 1.2849e-8, 1.0998e-8, 8.6956e-9,
15858 7.0881e-9, 5.5767e-9, 4.2792e-9, 3.2233e-9, 2.502e-9, 1.9985e-9,
15859 1.5834e-9, 1.3015e-9, 1.0948e-9, 9.4141e-10, 8.1465e-10,
15860 7.1517e-10, 6.2906e-10, 5.5756e-10, 4.9805e-10, 4.3961e-10,
15861 3.9181e-10, 3.5227e-10, 3.167e-10, 2.8667e-10, 2.5745e-10,
15862 2.3212e-10, 2.0948e-10, 1.897e-10, 1.7239e-10, 1.5659e-10,
15863 1.4301e-10, 1.3104e-10, 1.2031e-10, 1.1095e-10, 1.0262e-10,
15864 9.513e-11, 8.8595e-11, 8.2842e-11, 7.7727e-11, 7.3199e-11,
15865 6.9286e-11, 6.5994e-11, 6.3316e-11, 6.1244e-11, 5.9669e-11,
15866 5.8843e-11, 5.8832e-11, 5.9547e-11, 6.1635e-11, 6.4926e-11,
15867 7.0745e-11, 7.8802e-11, 8.6724e-11, 1.0052e-10, 1.1575e-10,
15868 1.3626e-10, 1.5126e-10, 1.6751e-10, 1.9239e-10, 2.1748e-10,
15869 2.2654e-10, 2.2902e-10, 2.324e-10, 2.4081e-10, 2.393e-10,
15870 2.2378e-10, 2.2476e-10, 2.2791e-10, 2.4047e-10, 2.5305e-10,
15871 2.8073e-10, 3.1741e-10, 3.6592e-10, 4.1495e-10, 4.6565e-10,
15872 5.099e-10, 5.5607e-10, 6.1928e-10, 6.6779e-10, 7.335e-10,
15873 8.1434e-10, 8.9635e-10, 9.9678e-10, 1.1256e-9, 1.2999e-9,
15874 1.4888e-9, 1.7642e-9, 1.9606e-9, 2.2066e-9, 2.4601e-9, 2.7218e-9,
15875 3.0375e-9, 3.1591e-9, 3.2852e-9, 3.2464e-9, 3.3046e-9, 3.271e-9,
15876 3.2601e-9, 3.3398e-9, 3.7446e-9, 4.0795e-9, 4.0284e-9, 4.0584e-9,
15877 4.1677e-9, 4.5358e-9, 4.4097e-9, 4.2744e-9, 4.5449e-9, 4.8147e-9,
15878 5.2656e-9, 5.2476e-9, 5.0275e-9, 4.7968e-9, 4.3654e-9, 3.953e-9,
15879 3.2447e-9, 2.6489e-9, 2.1795e-9, 1.788e-9, 1.4309e-9, 1.1256e-9,
15880 9.1903e-10, 7.6533e-10, 6.3989e-10, 5.5496e-10, 4.9581e-10,
15881 4.5722e-10, 4.3898e-10, 4.3505e-10, 4.3671e-10, 4.5329e-10,
15882 4.6827e-10, 4.9394e-10, 5.1122e-10, 5.1649e-10, 5.0965e-10,
15883 4.9551e-10, 4.8928e-10, 4.7947e-10, 4.7989e-10, 4.9071e-10,
15884 4.8867e-10, 4.726e-10, 4.5756e-10, 4.54e-10, 4.5993e-10,
15885 4.4042e-10, 4.3309e-10, 4.4182e-10, 4.6735e-10, 5.0378e-10,
15886 5.2204e-10, 5.0166e-10, 4.6799e-10, 4.3119e-10, 3.8803e-10,
15887 3.3291e-10, 2.6289e-10, 2.1029e-10, 1.7011e-10, 1.3345e-10,
15888 1.0224e-10, 7.8207e-11, 6.2451e-11, 5.0481e-11, 4.1507e-11,
15889 3.5419e-11, 3.0582e-11, 2.69e-11, 2.3778e-11, 2.1343e-11,
15890 1.9182e-11, 1.7162e-11, 1.5391e-11, 1.3877e-11, 1.2619e-11,
15891 1.145e-11, 1.0461e-11, 9.6578e-12, 8.9579e-12, 8.3463e-12,
15892 7.8127e-12, 7.3322e-12, 6.9414e-12, 6.6037e-12, 6.3285e-12,
15893 6.1095e-12, 5.9387e-12, 5.8118e-12, 5.726e-12, 5.6794e-12,
15894 5.6711e-12, 5.7003e-12, 5.767e-12, 5.8717e-12, 6.0151e-12,
15895 6.1984e-12, 6.4232e-12, 6.6918e-12, 7.0065e-12, 7.3705e-12,
15896 7.7873e-12, 8.2612e-12, 8.7972e-12, 9.4009e-12, 1.0079e-11,
15897 1.084e-11, 1.1692e-11, 1.2648e-11, 1.3723e-11, 1.4935e-11,
15898 1.6313e-11, 1.7905e-11, 1.974e-11, 2.1898e-11, 2.4419e-11,
15899 2.7426e-11, 3.0869e-11, 3.4235e-11, 3.7841e-11, 4.1929e-11,
15900 4.6776e-11, 5.2123e-11, 5.8497e-11, 6.5294e-11, 7.4038e-11,
15901 8.4793e-11, 9.6453e-11, 1.1223e-10, 1.2786e-10, 1.4882e-10,
15902 1.7799e-10, 2.0766e-10, 2.4523e-10, 2.8591e-10, 3.3386e-10,
15903 4.0531e-10, 4.7663e-10, 5.4858e-10, 6.3377e-10, 7.1688e-10,
15904 8.4184e-10, 9.5144e-10, 1.0481e-9, 1.1356e-9, 1.2339e-9,
15905 1.3396e-9, 1.4375e-9, 1.5831e-9, 1.7323e-9, 1.9671e-9, 2.2976e-9,
15906 2.6679e-9, 3.0777e-9, 3.4321e-9, 3.8192e-9, 4.2711e-9, 4.4903e-9,
15907 4.8931e-9, 5.2253e-9, 5.404e-9, 5.6387e-9, 5.6704e-9, 6.0345e-9,
15908 6.1079e-9, 6.2576e-9, 6.4039e-9, 6.3776e-9, 6.1878e-9, 5.8616e-9,
15909 5.7036e-9, 5.584e-9, 5.6905e-9, 5.8931e-9, 6.2478e-9, 6.8291e-9,
15910 7.4528e-9, 7.6078e-9, 7.3898e-9, 6.7573e-9, 5.9827e-9, 5.0927e-9,
15911 4.0099e-9, 3.1933e-9, 2.4296e-9, 1.8485e-9, 1.4595e-9, 1.2017e-9,
15912 1.0164e-9, 8.7433e-10, 7.7108e-10, 7.0049e-10, 6.5291e-10,
15913 6.1477e-10, 5.9254e-10, 5.815e-10, 5.7591e-10, 5.849e-10,
15914 5.8587e-10, 5.9636e-10, 6.2408e-10, 6.5479e-10, 7.048e-10,
15915 7.2313e-10, 7.5524e-10, 8.0863e-10, 8.3386e-10, 9.2342e-10,
15916 9.6754e-10, 1.0293e-9, 1.0895e-9, 1.133e-9, 1.221e-9, 1.2413e-9,
15917 1.2613e-9, 1.2671e-9, 1.2225e-9, 1.1609e-9, 1.0991e-9, 1.06e-9,
15918 1.057e-9, 1.0818e-9, 1.1421e-9, 1.227e-9, 1.337e-9, 1.4742e-9,
15919 1.4946e-9, 1.4322e-9, 1.321e-9, 1.1749e-9, 1.0051e-9, 7.8387e-10,
15920 6.1844e-10, 4.6288e-10, 3.4164e-10, 2.5412e-10, 1.9857e-10,
15921 1.5876e-10, 1.2966e-10, 1.092e-10, 9.4811e-11, 8.3733e-11,
15922 7.3906e-11, 6.7259e-11, 6.1146e-11, 5.7119e-11, 5.3546e-11,
15923 4.8625e-11, 4.4749e-11, 4.1089e-11, 3.7825e-11, 3.4465e-11,
15924 3.1018e-11, 2.8109e-11, 2.561e-11, 2.2859e-11, 2.049e-11,
15925 1.8133e-11, 1.5835e-11, 1.3949e-11, 1.2295e-11, 1.0799e-11,
15926 9.6544e-12, 8.7597e-12, 7.999e-12, 7.3973e-12, 6.9035e-12,
15927 6.4935e-12, 6.1195e-12, 5.8235e-12, 5.5928e-12, 5.4191e-12,
15928 5.2993e-12, 5.2338e-12, 5.2272e-12, 5.2923e-12, 5.4252e-12,
15929 5.6523e-12, 5.9433e-12, 6.3197e-12, 6.9016e-12, 7.5016e-12,
15930 8.2885e-12, 9.405e-12, 1.0605e-11, 1.2257e-11, 1.3622e-11,
15931 1.5353e-11, 1.7543e-11, 1.9809e-11, 2.2197e-11, 2.4065e-11,
15932 2.6777e-11, 2.9751e-11, 3.2543e-11, 3.5536e-11, 3.9942e-11,
15933 4.6283e-11, 5.4556e-11, 6.549e-11, 7.6803e-11, 9.0053e-11,
15934 1.0852e-10, 1.2946e-10, 1.4916e-10, 1.7748e-10, 2.0073e-10,
15935 2.2485e-10, 2.5114e-10, 2.7715e-10, 3.1319e-10, 3.3305e-10,
15936 3.5059e-10, 3.5746e-10, 3.6311e-10, 3.7344e-10, 3.6574e-10,
15937 3.7539e-10, 3.9434e-10, 4.351e-10, 4.334e-10, 4.2588e-10,
15938 4.3977e-10, 4.6062e-10, 4.7687e-10, 4.6457e-10, 4.8578e-10,
15939 5.2344e-10, 5.6752e-10, 5.8702e-10, 5.6603e-10, 5.3784e-10,
15940 4.9181e-10, 4.3272e-10, 3.5681e-10, 2.8814e-10, 2.332e-10,
15941 1.8631e-10, 1.4587e-10, 1.1782e-10, 9.8132e-11, 8.2528e-11,
15942 6.9174e-11, 6.1056e-11, 5.3459e-11, 4.7116e-11, 4.1878e-11,
15943 3.8125e-11, 3.6347e-11, 3.5071e-11, 3.3897e-11, 3.3541e-11,
15944 3.3563e-11, 3.5469e-11, 3.8111e-11, 3.8675e-11, 4.1333e-11,
15945 4.3475e-11, 4.6476e-11, 4.9761e-11, 5.138e-11, 5.4135e-11,
15946 5.3802e-11, 5.5158e-11, 5.6864e-11, 5.9311e-11, 6.3827e-11,
15947 6.7893e-11, 6.823e-11, 6.6694e-11, 6.6018e-11, 6.4863e-11,
15948 6.5893e-11, 6.3813e-11, 6.4741e-11, 6.863e-11, 7.0255e-11,
15949 7.0667e-11, 6.881e-11, 6.4104e-11, 5.8136e-11, 4.7242e-11,
15950 3.7625e-11, 3.1742e-11, 2.5581e-11, 1.8824e-11, 1.3303e-11,
15951 9.6919e-12, 7.5353e-12, 6.0986e-12, 5.0742e-12, 4.3094e-12,
15952 3.719e-12, 3.252e-12, 2.8756e-12, 2.568e-12, 2.3139e-12,
15953 2.1025e-12, 1.9257e-12, 1.7777e-12, 1.6539e-12, 1.5508e-12,
15954 1.4657e-12, 1.3966e-12, 1.3417e-12, 1.2998e-12, 1.27e-12,
15955 1.2514e-12, 1.2437e-12, 1.2463e-12, 1.2592e-12, 1.2823e-12,
15956 1.3157e-12, 1.3596e-12, 1.4144e-12, 1.4806e-12, 1.5588e-12,
15957 1.6497e-12, 1.7544e-12, 1.8738e-12, 2.0094e-12, 2.1626e-12,
15958 2.3354e-12, 2.5297e-12, 2.7483e-12, 2.9941e-12, 3.2708e-12,
15959 3.5833e-12, 3.9374e-12, 4.3415e-12, 4.8079e-12, 5.3602e-12,
15960 5.9816e-12, 6.7436e-12, 7.6368e-12, 8.6812e-12, 9.8747e-12,
15961 1.135e-11, 1.3181e-11, 1.5406e-11, 1.7868e-11, 2.0651e-11,
15962 2.4504e-11, 2.9184e-11, 3.4159e-11, 3.9979e-11, 4.8704e-11,
15963 5.7856e-11, 6.7576e-11, 7.9103e-11, 9.437e-11, 1.1224e-10,
15964 1.3112e-10, 1.5674e-10, 1.8206e-10, 2.0576e-10, 2.3187e-10,
15965 2.7005e-10, 3.0055e-10, 3.3423e-10, 3.6956e-10, 3.8737e-10,
15966 4.263e-10, 4.5154e-10, 4.8383e-10, 5.3582e-10, 5.8109e-10,
15967 6.3741e-10, 6.3874e-10, 6.387e-10, 6.5818e-10, 6.5056e-10,
15968 6.5291e-10, 6.3159e-10, 6.3984e-10, 6.4549e-10, 6.5444e-10,
15969 6.7035e-10, 6.7665e-10, 6.9124e-10, 6.8451e-10, 6.9255e-10,
15970 6.9923e-10, 7.0396e-10, 6.7715e-10, 6.0371e-10, 5.3774e-10,
15971 4.6043e-10, 3.7635e-10, 2.9484e-10, 2.2968e-10, 1.8185e-10,
15972 1.4191e-10, 1.1471e-10, 9.479e-11, 7.9613e-11, 6.7989e-11,
15973 5.9391e-11, 5.281e-11, 4.7136e-11, 4.2618e-11, 3.8313e-11,
15974 3.4686e-11, 3.1669e-11, 2.911e-11, 2.6871e-11, 2.5074e-11,
15975 2.4368e-11, 2.3925e-11, 2.4067e-11, 2.4336e-11, 2.4704e-11,
15976 2.5823e-11, 2.7177e-11, 2.9227e-11, 3.1593e-11, 3.573e-11,
15977 4.0221e-11, 4.3994e-11, 4.8448e-11, 5.3191e-11, 5.8552e-11,
15978 6.3458e-11, 6.6335e-11, 7.2457e-11, 7.9091e-11, 8.2234e-11,
15979 8.7668e-11, 8.7951e-11, 9.2952e-11, 9.6157e-11, 9.5926e-11,
15980 1.012e-10, 1.0115e-10, 9.9577e-11, 9.6633e-11, 9.2891e-11,
15981 9.3315e-11, 9.5584e-11, 1.0064e-10, 1.0509e-10, 1.1455e-10,
15982 1.2443e-10, 1.2963e-10, 1.2632e-10, 1.1308e-10, 1.0186e-10,
15983 8.588e-11, 6.7863e-11, 5.1521e-11, 3.778e-11, 2.8842e-11,
15984 2.2052e-11, 1.7402e-11, 1.4406e-11, 1.1934e-11, 1.0223e-11,
15985 8.9544e-12, 7.9088e-12, 7.0675e-12, 6.2222e-12, 5.6051e-12,
15986 5.0502e-12, 4.5578e-12, 4.2636e-12, 3.9461e-12, 3.7599e-12,
15987 3.5215e-12, 3.2467e-12, 3.0018e-12, 2.6558e-12, 2.3928e-12,
15988 2.0707e-12, 1.7575e-12, 1.5114e-12, 1.2941e-12, 1.1004e-12,
15989 9.5175e-13, 8.2894e-13, 7.3253e-13, 6.5551e-13, 5.9098e-13,
15990 5.3548e-13, 4.8697e-13, 4.4413e-13, 4.06e-13, 3.7188e-13,
15991 3.4121e-13, 3.1356e-13, 2.8856e-13, 2.659e-13, 2.4533e-13,
15992 2.2663e-13, 2.096e-13, 1.9407e-13, 1.799e-13, 1.6695e-13,
15993 1.5512e-13, 1.4429e-13, 1.3437e-13, 1.2527e-13, 1.1693e-13,
15994 1.0927e-13, 1.0224e-13, 9.5767e-14, 8.9816e-14, 8.4335e-14,
15995 7.9285e-14, 7.4626e-14, 7.0325e-14, 6.6352e-14, 6.2676e-14,
15996 5.9274e-14, 5.6121e-14, 5.3195e-14, 5.0479e-14, 4.7953e-14,
15997 4.5602e-14, 4.3411e-14, 4.1367e-14, 3.9456e-14, 3.767e-14,
15998 3.5996e-14, 3.4427e-14, 3.2952e-14, 3.1566e-14, 3.0261e-14,
15999 2.903e-14, 2.7868e-14, 2.677e-14, 2.573e-14, 2.4745e-14,
16000 2.3809e-14, 2.2921e-14, 2.2076e-14, 2.1271e-14, 2.0504e-14,
16001 1.9772e-14, 1.9073e-14, 1.8404e-14, 1.7764e-14, 1.7151e-14,
16002 1.6564e-14, 1.6e-14, 1.5459e-14, 1.4939e-14, 1.4439e-14,
16003 1.3958e-14, 1.3495e-14, 1.3049e-14, 1.262e-14, 1.2206e-14,
16004 1.1807e-14, 1.1422e-14, 1.105e-14, 1.0691e-14, 1.0345e-14,
16005 1.001e-14, 9.687e-15, 9.3747e-15, 9.0727e-15, 8.7808e-15,
16006 8.4986e-15, 8.2257e-15, 7.9617e-15, 7.7064e-15, 7.4594e-15,
16007 7.2204e-15, 6.9891e-15, 6.7653e-15, 6.5488e-15, 6.3392e-15,
16008 6.1363e-15, 5.9399e-15, 5.7499e-15, 5.5659e-15, 5.3878e-15,
16009 5.2153e-15, 5.0484e-15, 4.8868e-15, 4.7303e-15, 4.5788e-15,
16010 4.4322e-15, 4.2902e-15, 4.1527e-15, 4.0196e-15, 3.8907e-15,
16011 3.7659e-15, 3.6451e-15, 3.5281e-15, 3.4149e-15, 3.3052e-15,
16012 3.1991e-15, 3.0963e-15, 2.9967e-15, 2.9004e-15, 2.8071e-15,
16013 2.7167e-15, 2.6293e-15, 2.5446e-15, 2.4626e-15, 2.3833e-15,
16014 2.3064e-15, 2.232e-15, 2.16e-15, 2.0903e-15, 2.0228e-15,
16015 1.9574e-15, 1.8942e-15, 1.8329e-15, 1.7736e-15, 1.7163e-15,
16016 1.6607e-15, 1.6069e-15, 1.5548e-15, 1.5044e-15, 1.4557e-15,
16017 1.4084e-15, 1.3627e-15, 1.3185e-15, 1.2757e-15, 1.2342e-15,
16018 1.1941e-15, 1.1552e-15, 1.1177e-15, 1.0813e-15, 1.0461e-15,
16019 1.012e-15, 9.79e-16, 9.4707e-16, 9.1618e-16, 8.8628e-16,
16020 8.5734e-16, 8.2933e-16, 8.0223e-16, 7.76e-16, 7.5062e-16,
16021 7.2606e-16, 7.0229e-16, 6.7929e-16, 6.5703e-16, 6.355e-16,
16022 6.1466e-16, 5.9449e-16, 5.7498e-16, 5.561e-16, 5.3783e-16,
16023 5.2015e-16, 5.0305e-16, 4.865e-16, 4.7049e-16, 4.55e-16,
16024 4.4002e-16, 4.2552e-16, 4.1149e-16, 3.9792e-16, 3.8479e-16,
16025 3.7209e-16, 3.5981e-16, 3.4792e-16, 3.3642e-16, 3.253e-16,
16026 3.1454e-16, 3.0413e-16, 2.9406e-16, 2.8432e-16, 2.749e-16,
16027 2.6579e-16, 2.5697e-16, 2.4845e-16, 2.402e-16, 2.3223e-16,
16028 2.2451e-16, 2.1705e-16, 2.0984e-16, 2.0286e-16, 1.9611e-16,
16029 1.8958e-16, 1.8327e-16, 1.7716e-16, 1.7126e-16, 1.6555e-16,
16030 1.6003e-16, 1.5469e-16, 1.4952e-16, 1.4453e-16, 1.397e-16,
16040 }
s260a_ = { {.1775, .17045, .16457, .17045, .1775, .20036, .21347, .22454,
16041 .23428, .23399, .23022, .20724, .19712, .18317, .16724, .1478,
16042 .12757, .11626, .10098, .089033, .07977, .067416, .059588,
16043 .051117, .046218, .042179, .034372, .029863, .025252, .022075,
16044 .019209, .015816, .013932, .011943, .010079, .0087667, .0074094,
16045 .0064967, .0055711, .0048444, .0042552, .0036953, .0032824,
16046 .0029124, .0026102, .002337, .00211, .0019008, .0017145, .0015573,
16047 .0014206, .0012931, .0011803, .0010774, 9.8616e-4, 9.0496e-4,
16048 8.3071e-4, 7.6319e-4, 7.0149e-4, 6.4637e-4, 5.9566e-4, 5.4987e-4,
16049 5.0768e-4, 4.688e-4, 4.3317e-4, 4.0037e-4, 3.7064e-4, 3.4325e-4,
16050 3.1809e-4, 2.9501e-4, 2.7382e-4, 2.543e-4, 2.363e-4, 2.1977e-4,
16051 2.0452e-4, 1.9042e-4, 1.774e-4, 1.6544e-4, 1.5442e-4, 1.4425e-4,
16052 1.3486e-4, 1.2618e-4, 1.1817e-4, 1.1076e-4, 1.0391e-4, 9.7563e-5,
16053 9.1696e-5, 8.6272e-5, 8.1253e-5, 7.6607e-5, 7.2302e-5, 6.8311e-5,
16054 6.4613e-5, 6.1183e-5, 5.8001e-5, 5.5048e-5, 5.2307e-5, 4.9761e-5,
16055 4.7395e-5, 4.5197e-5, 4.3155e-5, 4.1256e-5, 3.9491e-5, 3.7849e-5,
16056 3.6324e-5, 3.4908e-5, 3.3594e-5, 3.2374e-5, 3.1244e-5, 3.0201e-5,
16057 2.924e-5, 2.8356e-5, 2.7547e-5, 2.6814e-5, 2.6147e-5, 2.5551e-5,
16058 2.5029e-5, 2.4582e-5, 2.4203e-5, 2.3891e-5, 2.3663e-5, 2.3531e-5,
16059 2.3483e-5, 2.3516e-5, 2.3694e-5, 2.4032e-5, 2.4579e-5, 2.5234e-5,
16060 2.6032e-5, 2.7119e-5, 2.8631e-5, 3.0848e-5, 3.3262e-5, 3.6635e-5,
16061 4.0732e-5, 4.5923e-5, 5.3373e-5, 6.1875e-5, 7.2031e-5, 8.598e-5,
16062 9.8642e-5, 1.1469e-4, 1.3327e-4, 1.539e-4, 1.7513e-4, 2.0665e-4,
16063 2.3609e-4, 2.622e-4, 2.8677e-4, 3.259e-4, 3.8624e-4, 4.157e-4,
16064 4.5207e-4, 4.9336e-4, 5.45e-4, 5.8258e-4, 5.8086e-4, 5.6977e-4,
16065 5.3085e-4, 4.802e-4, 4.3915e-4, 4.0343e-4, 3.7853e-4, 3.7025e-4,
16066 3.9637e-4, 4.4675e-4, 4.7072e-4, 4.9022e-4, 5.2076e-4, 5.3676e-4,
16067 5.2755e-4, 4.8244e-4, 4.5473e-4, 4.3952e-4, 3.9614e-4, 3.4086e-4,
16068 2.9733e-4, 2.6367e-4, 2.3767e-4, 2.0427e-4, 1.7595e-4, 1.5493e-4,
16069 1.3851e-4, 1.1874e-4, 1.0735e-4, 9.049e-5, 8.1149e-5, 7.4788e-5,
16070 6.5438e-5, 5.8248e-5, 4.8076e-5, 4.3488e-5, 3.7856e-5, 3.3034e-5,
16071 2.9592e-5, 2.6088e-5, 2.3497e-5, 2.0279e-5, 1.7526e-5, 1.5714e-5,
16072 1.3553e-5, 1.2145e-5, 1.0802e-5, 9.7681e-6, 8.8196e-6, 7.8291e-6,
16073 7.1335e-6, 6.4234e-6, 5.8391e-6, 5.3532e-6, 4.9079e-6, 4.5378e-6,
16074 4.1716e-6, 3.8649e-6, 3.5893e-6, 3.3406e-6, 3.1199e-6, 2.9172e-6,
16075 2.7348e-6, 2.5644e-6, 2.4086e-6, 2.2664e-6, 2.1359e-6, 2.0159e-6,
16076 1.9051e-6, 1.8031e-6, 1.7074e-6, 1.6185e-6, 1.5356e-6, 1.4584e-6,
16077 1.3861e-6, 1.3179e-6, 1.2545e-6, 1.1951e-6, 1.1395e-6, 1.0873e-6,
16078 1.0384e-6, 9.925e-7, 9.4935e-7, 9.0873e-7, 8.705e-7, 8.3446e-7,
16079 8.0046e-7, 7.6834e-7, 7.38e-7, 7.0931e-7, 6.8217e-7, 6.5648e-7,
16080 6.3214e-7, 6.0909e-7, 5.8725e-7, 5.6655e-7, 5.4693e-7, 5.2835e-7,
16081 5.1077e-7, 4.9416e-7, 4.7853e-7, 4.6381e-7, 4.5007e-7, 4.3728e-7,
16082 4.255e-7, 4.145e-7, 4.0459e-7, 3.9532e-7, 3.8662e-7, 3.7855e-7,
16083 3.7041e-7, 3.6254e-7, 3.542e-7, 3.4617e-7, 3.3838e-7, 3.3212e-7,
16084 3.2655e-7, 3.1865e-7, 3.1203e-7, 3.067e-7, 3.0252e-7, 2.9749e-7,
16085 2.9184e-7, 2.8795e-7, 2.8501e-7, 2.8202e-7, 2.7856e-7, 2.7509e-7,
16086 2.7152e-7, 2.6844e-7, 2.6642e-7, 2.6548e-7, 2.6617e-7, 2.6916e-7,
16087 2.7372e-7, 2.8094e-7, 2.9236e-7, 3.1035e-7, 3.2854e-7, 3.5481e-7,
16088 3.9377e-7, 4.4692e-7, 5.0761e-7, 5.7715e-7, 6.7725e-7, 8.0668e-7,
16089 9.3716e-7, 1.0797e-6, 1.1689e-6, 1.3217e-6, 1.4814e-6, 1.5627e-6,
16090 1.6519e-6, 1.7601e-6, 1.906e-6, 2.0474e-6, 2.0716e-6, 2.0433e-6,
16091 1.9752e-6, 1.8466e-6, 1.7526e-6, 1.6657e-6, 1.587e-6, 1.5633e-6,
16092 1.652e-6, 1.8471e-6, 1.9953e-6, 2.0975e-6, 2.2016e-6, 2.2542e-6,
16093 2.3081e-6, 2.3209e-6, 2.2998e-6, 2.3056e-6, 2.2757e-6, 2.2685e-6,
16094 2.2779e-6, 2.2348e-6, 2.2445e-6, 2.3174e-6, 2.4284e-6, 2.529e-6,
16095 2.734e-6, 2.972e-6, 3.2332e-6, 3.5392e-6, 3.9013e-6, 4.3334e-6,
16096 4.9088e-6, 5.3428e-6, 5.9142e-6, 6.6106e-6, 7.4709e-6, 8.5019e-6,
16097 9.6835e-6, 1.0984e-5, 1.2831e-5, 1.4664e-5, 1.708e-5, 2.0103e-5,
16098 2.4148e-5, 2.7948e-5, 3.2855e-5, 3.9046e-5, 4.6429e-5, 5.6633e-5,
16099 6.6305e-5, 7.6048e-5, 8.7398e-5, 1.0034e-4, 1.1169e-4, 1.2813e-4,
16100 1.3354e-4, 1.3952e-4, 1.4204e-4, 1.4615e-4, 1.5144e-4, 1.5475e-4,
16101 1.6561e-4, 1.7135e-4, 1.6831e-4, 1.6429e-4, 1.6353e-4, 1.6543e-4,
16102 1.5944e-4, 1.5404e-4, 1.5458e-4, 1.6287e-4, 1.7277e-4, 1.8387e-4,
16103 1.7622e-4, 1.636e-4, 1.5273e-4, 1.3667e-4, 1.2364e-4, 9.7576e-5,
16104 7.914e-5, 6.4241e-5, 5.1826e-5, 4.1415e-5, 3.1347e-5, 2.5125e-5,
16105 2.0027e-5, 1.6362e-5, 1.3364e-5, 1.1117e-5, 9.4992e-6, 8.1581e-6,
16106 7.1512e-6, 6.2692e-6, 5.5285e-6, 4.9e-6, 4.3447e-6, 3.8906e-6,
16107 3.4679e-6, 3.1089e-6, 2.8115e-6, 2.5496e-6, 2.2982e-6, 2.0861e-6,
16108 1.8763e-6, 1.7035e-6, 1.5548e-6, 1.4107e-6, 1.2839e-6, 1.1706e-6,
16109 1.0709e-6, 9.8099e-7, 8.9901e-7, 8.2394e-7, 7.5567e-7, 6.9434e-7,
16110 6.3867e-7, 5.8845e-7, 5.4263e-7, 5.0033e-7, 4.6181e-7, 4.2652e-7,
16111 3.9437e-7, 3.6497e-7, 3.3781e-7, 3.1292e-7, 2.9011e-7, 2.6915e-7,
16112 2.4989e-7, 2.3215e-7, 2.1582e-7, 2.0081e-7, 1.87e-7, 1.7432e-7,
16113 1.6264e-7, 1.5191e-7, 1.4207e-7, 1.3306e-7, 1.2484e-7, 1.1737e-7,
16114 1.1056e-7, 1.0451e-7, 9.906e-8, 9.4135e-8, 8.9608e-8, 8.5697e-8,
16115 8.1945e-8, 7.8308e-8, 7.4808e-8, 7.1686e-8, 6.8923e-8, 6.5869e-8,
16116 6.3308e-8, 6.084e-8, 5.8676e-8, 5.6744e-8, 5.5016e-8, 5.3813e-8,
16117 5.2792e-8, 5.2097e-8, 5.1737e-8, 5.1603e-8, 5.1656e-8, 5.1989e-8,
16118 5.2467e-8, 5.2918e-8, 5.3589e-8, 5.456e-8, 5.5869e-8, 5.7403e-8,
16119 5.8968e-8, 6.0973e-8, 6.3432e-8, 6.6245e-8, 6.9353e-8, 7.2686e-8,
16120 7.6541e-8, 8.0991e-8, 8.595e-8, 9.1429e-8, 9.7851e-8, 1.0516e-7,
16121 1.1349e-7, 1.2295e-7, 1.3335e-7, 1.4488e-7, 1.5864e-7, 1.7412e-7,
16122 1.914e-7, 2.1078e-7, 2.3369e-7, 2.5996e-7, 2.8848e-7, 3.2169e-7,
16123 3.5991e-7, 4.0566e-7, 4.5969e-7, 5.3094e-7, 6.1458e-7, 7.1155e-7,
16124 8.3045e-7, 9.9021e-7, 1.2042e-6, 1.4914e-6, 1.8145e-6, 2.221e-6,
16125 2.7831e-6, 3.4533e-6, 4.4446e-6, 5.1989e-6, 6.2289e-6, 7.1167e-6,
16126 8.3949e-6, 9.6417e-6, 1.0313e-5, 1.0485e-5, 1.0641e-5, 1.0898e-5,
16127 1.0763e-5, 1.0506e-5, 1.0497e-5, 1.1696e-5, 1.2654e-5, 1.3029e-5,
16128 1.3175e-5, 1.4264e-5, 1.4985e-5, 1.4999e-5, 1.4317e-5, 1.4616e-5,
16129 1.4963e-5, 1.5208e-5, 1.4942e-5, 1.3879e-5, 1.3087e-5, 1.1727e-5,
16130 1.0515e-5, 9.0073e-6, 7.3133e-6, 6.1181e-6, 5.0623e-6, 4.1105e-6,
16131 3.3915e-6, 2.6711e-6, 2.1464e-6, 1.7335e-6, 1.4302e-6, 1.1847e-6,
16132 9.9434e-7, 8.2689e-7, 7.0589e-7, 6.075e-7, 5.3176e-7, 4.6936e-7,
16133 4.1541e-7, 3.6625e-7, 3.2509e-7, 2.9156e-7, 2.6308e-7, 2.3819e-7,
16134 2.1421e-7, 1.9366e-7, 1.7626e-7, 1.5982e-7, 1.4567e-7, 1.3354e-7,
16135 1.2097e-7, 1.1029e-7, 1.0063e-7, 9.2003e-8, 8.4245e-8, 7.7004e-8,
16136 7.0636e-8, 6.4923e-8, 5.9503e-8, 5.4742e-8, 5.045e-8, 4.647e-8,
16137 4.2881e-8, 3.955e-8, 3.6541e-8, 3.3803e-8, 3.1279e-8, 2.8955e-8,
16138 2.6858e-8, 2.4905e-8, 2.3146e-8, 2.1539e-8, 2.0079e-8, 1.8746e-8,
16139 1.7517e-8, 1.6396e-8, 1.5369e-8, 1.4426e-8, 1.3543e-8, 1.2724e-8,
16140 1.1965e-8, 1.1267e-8, 1.0617e-8, 1.001e-8, 9.4662e-9, 8.9553e-9,
16141 8.4988e-9, 8.0807e-9, 7.7043e-9, 7.3721e-9, 7.0707e-9, 6.8047e-9,
16142 6.5702e-9, 6.3634e-9, 6.1817e-9, 6.0239e-9, 5.8922e-9, 5.7824e-9,
16143 5.7019e-9, 5.6368e-9, 5.594e-9, 5.5669e-9, 5.5583e-9, 5.5653e-9,
16144 5.5837e-9, 5.6243e-9, 5.6883e-9, 5.78e-9, 5.8964e-9, 6.0429e-9,
16145 6.2211e-9, 6.4282e-9, 6.6634e-9, 6.9306e-9, 7.2336e-9, 7.5739e-9,
16146 7.9562e-9, 8.3779e-9, 8.8575e-9, 9.3992e-9, 1.0004e-8, 1.0684e-8,
16147 1.145e-8, 1.232e-8, 1.3311e-8, 1.4455e-8, 1.5758e-8, 1.7254e-8,
16148 1.8927e-8, 2.093e-8, 2.3348e-8, 2.6074e-8, 2.9221e-8, 3.277e-8,
16149 3.7485e-8, 4.2569e-8, 4.8981e-8, 5.5606e-8, 6.2393e-8, 7.1901e-8,
16150 8.2921e-8, 9.5513e-8, 1.1111e-7, 1.3143e-7, 1.5971e-7, 1.8927e-7,
16151 2.2643e-7, 2.786e-7, 3.2591e-7, 3.7024e-7, 4.2059e-7, 4.9432e-7,
16152 5.5543e-7, 5.7498e-7, 5.921e-7, 6.1005e-7, 6.1577e-7, 5.9193e-7,
16153 5.6602e-7, 5.7403e-7, 6.005e-7, 6.4723e-7, 6.7073e-7, 7.5415e-7,
16154 8.0982e-7, 8.7658e-7, 9.143e-7, 9.4459e-7, 9.8347e-7, 9.8768e-7,
16155 1.0153e-6, 1.0066e-6, 1.0353e-6, 1.0353e-6, 1.0722e-6, 1.1138e-6,
16156 1.1923e-6, 1.2947e-6, 1.4431e-6, 1.6537e-6, 1.8662e-6, 2.2473e-6,
16157 2.6464e-6, 3.1041e-6, 3.4858e-6, 4.0167e-6, 4.6675e-6, 5.0983e-6,
16158 5.7997e-6, 6.0503e-6, 6.4687e-6, 6.5396e-6, 6.7986e-6, 7.0244e-6,
16159 7.2305e-6, 7.6732e-6, 7.9783e-6, 7.9846e-6, 7.7617e-6, 7.7657e-6,
16160 7.7411e-6, 7.8816e-6, 7.8136e-6, 8.0051e-6, 8.5799e-6, 9.1659e-6,
16161 9.8646e-6, 9.492e-6, 8.767e-6, 8.2034e-6, 7.2297e-6, 6.2324e-6,
16162 4.9315e-6, 3.9128e-6, 3.1517e-6, 2.4469e-6, 1.8815e-6, 1.4627e-6,
16163 1.1698e-6, 9.4686e-7, 7.8486e-7, 6.697e-7, 5.8811e-7, 5.2198e-7,
16164 4.6809e-7, 4.1671e-7, 3.7006e-7, 3.3066e-7, 2.9387e-7, 2.6415e-7,
16165 2.3409e-7, 2.0991e-7, 1.9132e-7, 1.7519e-7, 1.5939e-7, 1.4368e-7,
16166 1.305e-7, 1.1883e-7, 1.0772e-7, 9.6884e-8, 8.7888e-8, 7.8956e-8,
16167 7.1024e-8, 6.3824e-8, 5.7256e-8, 5.1769e-8, 4.7037e-8, 4.2901e-8,
16168 3.897e-8, 3.5467e-8, 3.2502e-8, 2.9827e-8, 2.7389e-8, 2.5111e-8,
16169 2.3056e-8, 2.1267e-8, 1.961e-8, 1.8133e-8, 1.6775e-8, 1.5491e-8,
16170 1.4329e-8, 1.3265e-8, 1.23e-8, 1.142e-8, 1.0593e-8, 9.8475e-9,
16171 9.1585e-9, 8.5256e-9, 7.9525e-9, 7.4226e-9, 6.9379e-9, 6.495e-9,
16172 6.0911e-9, 5.7242e-9, 5.3877e-9, 5.0821e-9, 4.8051e-9, 4.5554e-9,
16173 4.3315e-9, 4.1336e-9, 3.9632e-9, 3.8185e-9, 3.708e-9, 3.6296e-9,
16174 3.5804e-9, 3.5776e-9, 3.6253e-9, 3.7115e-9, 3.8151e-9, 3.9804e-9,
16175 4.1742e-9, 4.3581e-9, 4.5306e-9, 4.7736e-9, 5.1297e-9, 5.5291e-9,
16176 5.9125e-9, 6.4956e-9, 7.0362e-9, 7.5318e-9, 7.9947e-9, 8.6438e-9,
16177 9.7227e-9, 1.013e-8, 1.0549e-8, 1.1064e-8, 1.1702e-8, 1.2043e-8,
16178 1.1781e-8, 1.1838e-8, 1.1917e-8, 1.2131e-8, 1.2476e-8, 1.3611e-8,
16179 1.436e-8, 1.5057e-8, 1.6247e-8, 1.7284e-8, 1.842e-8, 1.8352e-8,
16180 1.8722e-8, 1.9112e-8, 1.9092e-8, 1.9311e-8, 1.9411e-8, 1.9884e-8,
16181 2.0508e-8, 2.151e-8, 2.3143e-8, 2.505e-8, 2.7596e-8, 3.1231e-8,
16182 3.626e-8, 4.341e-8, 5.224e-8, 6.3236e-8, 7.7522e-8, 9.8688e-8,
16183 1.1859e-7, 1.4341e-7, 1.6798e-7, 1.9825e-7, 2.2898e-7, 2.6257e-7,
16184 2.9884e-7, 3.3247e-7, 3.4936e-7, 3.5583e-7, 3.715e-7, 3.658e-7,
16185 3.7124e-7, 3.703e-7, 4.1536e-7, 4.6656e-7, 4.6677e-7, 4.7507e-7,
16186 4.9653e-7, 5.3795e-7, 5.4957e-7, 5.2238e-7, 5.469e-7, 5.6569e-7,
16187 5.9844e-7, 5.9835e-7, 5.6522e-7, 5.4123e-7, 4.7904e-7, 4.2851e-7,
16188 3.5603e-7, 2.8932e-7, 2.3655e-7, 1.8592e-7, 1.4943e-7, 1.1971e-7,
16189 9.8482e-8, 8.3675e-8, 7.127e-8, 6.2496e-8, 5.4999e-8, 4.9821e-8,
16190 4.5387e-8, 4.134e-8, 3.7453e-8, 3.3298e-8, 3.012e-8, 2.7032e-8,
16191 2.4236e-8, 2.15e-8, 1.8988e-8, 1.7414e-8, 1.5706e-8, 1.4192e-8,
16192 1.3204e-8, 1.1759e-8, 1.0737e-8, 9.6309e-9, 8.8179e-9, 8.2619e-9,
16193 7.2264e-9, 6.4856e-9, 5.8037e-9, 5.2093e-9, 4.7205e-9, 4.1749e-9,
16194 3.7852e-9, 3.3915e-9, 3.0089e-9, 2.7335e-9, 2.4398e-9, 2.2031e-9,
16195 1.9786e-9, 1.789e-9, 1.6266e-9, 1.483e-9, 1.3576e-9, 1.2518e-9,
16196 1.1587e-9, 1.0726e-9, 9.9106e-10, 9.1673e-10, 8.5084e-10,
16197 7.9147e-10, 7.2882e-10, 6.7342e-10, 6.2593e-10, 5.8294e-10,
16198 5.4435e-10, 5.0997e-10, 4.7806e-10, 4.4931e-10, 4.2357e-10,
16199 4.0023e-10, 3.7909e-10, 3.5999e-10, 3.4285e-10, 3.2776e-10,
16200 3.1468e-10, 3.0377e-10, 2.9479e-10, 2.8877e-10, 2.8512e-10,
16201 2.8617e-10, 2.8976e-10, 3.0001e-10, 3.1718e-10, 3.3898e-10,
16202 3.5857e-10, 3.8358e-10, 4.3131e-10, 4.5741e-10, 4.6948e-10,
16203 4.7594e-10, 4.9529e-10, 5.1563e-10, 4.9475e-10, 4.8369e-10,
16204 4.8829e-10, 5.0047e-10, 5.0203e-10, 5.1954e-10, 5.5352e-10,
16205 5.9928e-10, 6.7148e-10, 7.1121e-10, 7.4317e-10, 7.6039e-10,
16206 7.8313e-10, 8.0684e-10, 7.8553e-10, 7.8312e-10, 7.8537e-10,
16207 7.8872e-10, 8.0185e-10, 8.1004e-10, 8.2608e-10, 8.2525e-10,
16208 8.3857e-10, 8.792e-10, 9.2451e-10, 9.8661e-10, 1.0629e-9,
16209 1.1659e-9, 1.2922e-9, 1.4387e-9, 1.6254e-9, 1.8425e-9, 2.1428e-9,
16210 2.5477e-9, 3.0379e-9, 3.757e-9, 4.4354e-9, 5.1802e-9, 6.2769e-9,
16211 7.4894e-9, 8.7474e-9, 9.8037e-9, 1.1582e-8, 1.3293e-8, 1.4471e-8,
16212 1.5025e-8, 1.558e-8, 1.6228e-8, 1.6413e-8, 1.602e-8, 1.6393e-8,
16213 1.7545e-8, 1.959e-8, 2.1449e-8, 2.3856e-8, 2.705e-8, 3.0214e-8,
16214 3.3733e-8, 3.6487e-8, 3.9353e-8, 4.266e-8, 4.6385e-8, 4.9955e-8,
16215 5.5313e-8, 6.0923e-8, 6.8948e-8, 7.3649e-8, 8.2602e-8, 9.2212e-8,
16216 9.908e-8, 1.1319e-7, 1.179e-7, 1.2941e-7, 1.3199e-7, 1.3914e-7,
16217 1.4843e-7, 1.53e-7, 1.6419e-7, 1.7095e-7, 1.6988e-7, 1.6494e-7,
16218 1.6327e-7, 1.6067e-7, 1.6909e-7, 1.7118e-7, 1.8106e-7, 1.9857e-7,
16219 2.1696e-7, 2.3385e-7, 2.2776e-7, 2.1402e-7, 1.9882e-7, 1.7362e-7,
16220 1.4308e-7, 1.1158e-7, 8.8781e-8, 6.8689e-8, 5.2062e-8, 4.0427e-8,
16221 3.2669e-8, 2.7354e-8, 2.32e-8, 2.058e-8, 1.8676e-8, 1.7329e-8,
16222 1.6621e-8, 1.6433e-8, 1.6953e-8, 1.7134e-8, 1.7948e-8, 1.9107e-8,
16223 1.9875e-8, 2.1416e-8, 2.1556e-8, 2.2265e-8, 2.2171e-8, 2.2534e-8,
16224 2.3029e-8, 2.2828e-8, 2.3143e-8, 2.2965e-8, 2.2223e-8, 2.1108e-8,
16225 2.0265e-8, 1.9516e-8, 1.9941e-8, 2.0312e-8, 2.108e-8, 2.2611e-8,
16226 2.421e-8, 2.6069e-8, 2.5097e-8, 2.3318e-8, 2.1543e-8, 1.8942e-8,
16227 1.596e-8, 1.2386e-8, 9.934e-9, 7.7502e-9, 5.9462e-9, 4.5113e-9,
16228 3.5523e-9, 2.8844e-9, 2.3394e-9, 1.9584e-9, 1.6749e-9, 1.4624e-9,
16229 1.2809e-9, 1.1359e-9, 1.0087e-9, 9.0166e-10, 8.1079e-10,
16230 7.2219e-10, 6.4922e-10, 5.8803e-10, 5.329e-10, 4.859e-10,
16231 4.4111e-10, 4.0184e-10, 3.6644e-10, 3.3529e-10, 3.0789e-10,
16232 2.8286e-10, 2.6089e-10, 2.4125e-10, 2.2355e-10, 2.0783e-10,
16233 1.937e-10, 1.8088e-10, 1.6948e-10, 1.5929e-10, 1.5013e-10,
16234 1.4193e-10, 1.347e-10, 1.2841e-10, 1.2307e-10, 1.1865e-10,
16235 1.1502e-10, 1.1243e-10, 1.1099e-10, 1.1066e-10, 1.1216e-10,
16236 1.1529e-10, 1.2171e-10, 1.3128e-10, 1.4153e-10, 1.5962e-10,
16237 1.8048e-10, 2.0936e-10, 2.3165e-10, 2.5746e-10, 2.96e-10,
16238 3.3707e-10, 3.5267e-10, 3.5953e-10, 3.6822e-10, 3.8363e-10,
16239 3.8286e-10, 3.5883e-10, 3.6154e-10, 3.6653e-10, 3.8507e-10,
16240 4.025e-10, 4.4435e-10, 4.9889e-10, 5.6932e-10, 6.3599e-10,
16241 7.0281e-10, 7.5777e-10, 8.1279e-10, 8.891e-10, 9.34e-10,
16242 1.0076e-9, 1.0945e-9, 1.1898e-9, 1.3108e-9, 1.4725e-9, 1.7028e-9,
16243 1.9619e-9, 2.3527e-9, 2.6488e-9, 3.0327e-9, 3.4396e-9, 3.8797e-9,
16244 4.4115e-9, 4.6853e-9, 4.9553e-9, 4.9551e-9, 5.1062e-9, 5.0996e-9,
16245 5.1119e-9, 5.2283e-9, 5.8297e-9, 6.3439e-9, 6.2675e-9, 6.3296e-9,
16246 6.5173e-9, 7.1685e-9, 7.0528e-9, 6.8856e-9, 7.3182e-9, 7.699e-9,
16247 8.3461e-9, 8.1946e-9, 7.7153e-9, 7.2411e-9, 6.4511e-9, 5.7336e-9,
16248 4.6105e-9, 3.6962e-9, 2.9944e-9, 2.4317e-9, 1.9399e-9, 1.5331e-9,
16249 1.2633e-9, 1.0613e-9, 9.0136e-10, 7.9313e-10, 7.1543e-10,
16250 6.6485e-10, 6.4225e-10, 6.398e-10, 6.4598e-10, 6.7428e-10,
16251 7.027e-10, 7.4694e-10, 7.7946e-10, 7.9395e-10, 7.8716e-10,
16252 7.6933e-10, 7.622e-10, 7.4825e-10, 7.4805e-10, 7.6511e-10,
16253 7.6492e-10, 7.4103e-10, 7.1979e-10, 7.1686e-10, 7.3403e-10,
16254 7.1142e-10, 7.0212e-10, 7.1548e-10, 7.5253e-10, 8.0444e-10,
16255 8.2378e-10, 7.8004e-10, 7.1712e-10, 6.4978e-10, 5.7573e-10,
16256 4.8675e-10, 3.7945e-10, 3.0118e-10, 2.4241e-10, 1.91e-10,
16257 1.4816e-10, 1.1567e-10, 9.4183e-11, 7.766e-11, 6.527e-11,
16258 5.6616e-11, 4.9576e-11, 4.4137e-11, 3.9459e-11, 3.5759e-11,
16259 3.2478e-11, 2.9419e-11, 2.6703e-11, 2.4365e-11, 2.2412e-11,
16260 2.0606e-11, 1.9067e-11, 1.78e-11, 1.6695e-11, 1.5729e-11,
16261 1.4887e-11, 1.4135e-11, 1.3519e-11, 1.2992e-11, 1.2563e-11,
16262 1.2223e-11, 1.1962e-11, 1.1775e-11, 1.1657e-11, 1.1605e-11,
16263 1.1619e-11, 1.1697e-11, 1.1839e-11, 1.2046e-11, 1.2319e-11,
16264 1.2659e-11, 1.307e-11, 1.3553e-11, 1.4113e-11, 1.4754e-11,
16265 1.548e-11, 1.6298e-11, 1.7214e-11, 1.8236e-11, 1.9372e-11,
16266 2.0635e-11, 2.2036e-11, 2.359e-11, 2.5317e-11, 2.7242e-11,
16267 2.94e-11, 3.1849e-11, 3.4654e-11, 3.7923e-11, 4.1695e-11,
16268 4.6055e-11, 5.094e-11, 5.5624e-11, 6.0667e-11, 6.6261e-11,
16269 7.2692e-11, 7.9711e-11, 8.7976e-11, 9.6884e-11, 1.0775e-10,
16270 1.2093e-10, 1.3531e-10, 1.5404e-10, 1.7315e-10, 1.9862e-10,
16271 2.3341e-10, 2.7014e-10, 3.1716e-10, 3.6957e-10, 4.3233e-10,
16272 5.2566e-10, 6.2251e-10, 7.2149e-10, 8.3958e-10, 9.5931e-10,
16273 1.1388e-9, 1.2973e-9, 1.4442e-9, 1.5638e-9, 1.6974e-9, 1.8489e-9,
16274 1.983e-9, 2.172e-9, 2.3662e-9, 2.6987e-9, 3.1697e-9, 3.6907e-9,
16275 4.2625e-9, 4.7946e-9, 5.3848e-9, 6.0897e-9, 6.473e-9, 7.1483e-9,
16276 7.7432e-9, 8.0851e-9, 8.5013e-9, 8.5909e-9, 9.189e-9, 9.3124e-9,
16277 9.5936e-9, 9.8787e-9, 9.9036e-9, 9.6712e-9, 9.2036e-9, 9.0466e-9,
16278 8.938e-9, 9.1815e-9, 9.5092e-9, 1.0027e-8, 1.0876e-8, 1.1744e-8,
16279 1.1853e-8, 1.1296e-8, 1.0134e-8, 8.8245e-9, 7.393e-9, 5.715e-9,
16280 4.4884e-9, 3.4027e-9, 2.6054e-9, 2.079e-9, 1.7267e-9, 1.4724e-9,
16281 1.2722e-9, 1.1234e-9, 1.0186e-9, 9.468e-10, 8.8854e-10,
16282 8.5127e-10, 8.3157e-10, 8.2226e-10, 8.3395e-10, 8.3294e-10,
16283 8.4725e-10, 8.8814e-10, 9.3697e-10, 1.0112e-9, 1.0412e-9,
16284 1.0948e-9, 1.181e-9, 1.2267e-9, 1.369e-9, 1.4512e-9, 1.5568e-9,
16285 1.6552e-9, 1.7321e-9, 1.8797e-9, 1.921e-9, 1.9686e-9, 1.9917e-9,
16286 1.9357e-9, 1.8486e-9, 1.7575e-9, 1.7113e-9, 1.7163e-9, 1.7623e-9,
16287 1.8536e-9, 1.9765e-9, 2.1334e-9, 2.3237e-9, 2.3259e-9, 2.1833e-9,
16288 1.9785e-9, 1.7308e-9, 1.4596e-9, 1.1198e-9, 8.7375e-10,
16289 6.5381e-10, 4.8677e-10, 3.6756e-10, 2.9155e-10, 2.3735e-10,
16290 1.959e-10, 1.6638e-10, 1.4549e-10, 1.2947e-10, 1.1511e-10,
16291 1.0548e-10, 9.6511e-11, 9.0469e-11, 8.517e-11, 7.7804e-11,
16292 7.1971e-11, 6.6213e-11, 6.1063e-11, 5.5881e-11, 5.0508e-11,
16293 4.5932e-11, 4.1997e-11, 3.7672e-11, 3.3972e-11, 3.0318e-11,
16294 2.6769e-11, 2.3874e-11, 2.1336e-11, 1.9073e-11, 1.7313e-11,
16295 1.5904e-11, 1.4684e-11, 1.3698e-11, 1.2873e-11, 1.2175e-11,
16296 1.1542e-11, 1.1024e-11, 1.0602e-11, 1.0267e-11, 1.0012e-11,
16297 9.8379e-12, 9.7482e-12, 9.7564e-12, 9.8613e-12, 1.0092e-11,
16298 1.0418e-11, 1.0868e-11, 1.1585e-11, 1.2351e-11, 1.3372e-11,
16299 1.4841e-11, 1.6457e-11, 1.8681e-11, 2.055e-11, 2.2912e-11,
16300 2.5958e-11, 2.9137e-11, 3.2368e-11, 3.4848e-11, 3.8462e-11,
16301 4.219e-11, 4.5629e-11, 4.9022e-11, 5.4232e-11, 6.19e-11,
16302 7.1953e-11, 8.5368e-11, 9.9699e-11, 1.1734e-10, 1.4185e-10,
16303 1.7017e-10, 1.9813e-10, 2.3859e-10, 2.7304e-10, 3.0971e-10,
16304 3.5129e-10, 3.9405e-10, 4.5194e-10, 4.8932e-10, 5.2436e-10,
16305 5.4098e-10, 5.5542e-10, 5.7794e-10, 5.6992e-10, 5.879e-10,
16306 6.1526e-10, 6.8034e-10, 6.7956e-10, 6.6864e-10, 6.9329e-10,
16307 7.2971e-10, 7.6546e-10, 7.5078e-10, 7.8406e-10, 8.3896e-10,
16308 9.0111e-10, 9.1994e-10, 8.7189e-10, 8.1426e-10, 7.3097e-10,
16309 6.3357e-10, 5.1371e-10, 4.0936e-10, 3.2918e-10, 2.6255e-10,
16310 2.0724e-10, 1.6879e-10, 1.4165e-10, 1.1989e-10, 1.0125e-10,
16311 8.9629e-11, 7.8458e-11, 6.8826e-11, 6.0935e-11, 5.5208e-11,
16312 5.2262e-11, 5.026e-11, 4.8457e-11, 4.7888e-11, 4.8032e-11,
16313 5.0838e-11, 5.4668e-11, 5.579e-11, 6.0056e-11, 6.3811e-11,
16314 6.8848e-11, 7.459e-11, 7.8249e-11, 8.3371e-11, 8.3641e-11,
16315 8.6591e-11, 8.9599e-11, 9.3487e-11, 1.0066e-10, 1.0765e-10,
16316 1.0851e-10, 1.0619e-10, 1.0557e-10, 1.046e-10, 1.0796e-10,
16317 1.0523e-10, 1.0674e-10, 1.1261e-10, 1.1431e-10, 1.1408e-10,
16318 1.0901e-10, 9.9105e-11, 8.8077e-11, 6.9928e-11, 5.4595e-11,
16319 4.5401e-11, 3.6313e-11, 2.6986e-11, 1.9463e-11, 1.4577e-11,
16320 1.1583e-11, 9.5492e-12, 8.077e-12, 6.9642e-12, 6.0966e-12,
16321 5.4046e-12, 4.8431e-12, 4.3815e-12, 3.9987e-12, 3.679e-12,
16322 3.4113e-12, 3.1868e-12, 2.9992e-12, 2.8434e-12, 2.7153e-12,
16323 2.612e-12, 2.5311e-12, 2.4705e-12, 2.429e-12, 2.4053e-12,
16324 2.3988e-12, 2.4087e-12, 2.4349e-12, 2.4771e-12, 2.5355e-12,
16325 2.6103e-12, 2.7019e-12, 2.811e-12, 2.9383e-12, 3.0848e-12,
16326 3.2518e-12, 3.4405e-12, 3.6527e-12, 3.8902e-12, 4.1555e-12,
16327 4.451e-12, 4.7801e-12, 5.1462e-12, 5.5539e-12, 6.0086e-12,
16328 6.5171e-12, 7.0884e-12, 7.7357e-12, 8.4831e-12, 9.3096e-12,
16329 1.0282e-11, 1.1407e-11, 1.269e-11, 1.4148e-11, 1.5888e-11,
16330 1.7992e-11, 2.0523e-11, 2.3342e-11, 2.6578e-11, 3.0909e-11,
16331 3.6228e-11, 4.2053e-11, 4.9059e-11, 5.9273e-11, 7.0166e-11,
16332 8.2298e-11, 9.7071e-11, 1.1673e-10, 1.401e-10, 1.6621e-10,
16333 2.0127e-10, 2.3586e-10, 2.705e-10, 3.095e-10, 3.6584e-10,
16334 4.1278e-10, 4.6591e-10, 5.222e-10, 5.5246e-10, 6.15e-10,
16335 6.5878e-10, 7.1167e-10, 7.9372e-10, 8.6975e-10, 9.6459e-10,
16336 9.7368e-10, 9.8142e-10, 1.0202e-9, 1.02e-9, 1.0356e-9, 1.0092e-9,
16337 1.0269e-9, 1.0366e-9, 1.049e-9, 1.0717e-9, 1.0792e-9, 1.1016e-9,
16338 1.0849e-9, 1.0929e-9, 1.0971e-9, 1.0969e-9, 1.046e-9, 9.2026e-10,
16339 8.1113e-10, 6.8635e-10, 5.5369e-10, 4.2908e-10, 3.3384e-10,
16340 2.648e-10, 2.081e-10, 1.6915e-10, 1.4051e-10, 1.1867e-10,
16341 1.0158e-10, 8.899e-11, 7.9175e-11, 7.044e-11, 6.3453e-11,
16342 5.7009e-11, 5.1662e-11, 4.7219e-11, 4.3454e-11, 4.0229e-11,
16343 3.7689e-11, 3.6567e-11, 3.5865e-11, 3.5955e-11, 3.5928e-11,
16344 3.6298e-11, 3.7629e-11, 3.93e-11, 4.1829e-11, 4.4806e-11,
16345 5.0534e-11, 5.6672e-11, 6.2138e-11, 6.8678e-11, 7.6111e-11,
16346 8.4591e-11, 9.2634e-11, 9.8085e-11, 1.083e-10, 1.1949e-10,
16347 1.2511e-10, 1.3394e-10, 1.3505e-10, 1.4342e-10, 1.4874e-10,
16348 1.492e-10, 1.5872e-10, 1.5972e-10, 1.5821e-10, 1.5425e-10,
16349 1.4937e-10, 1.5089e-10, 1.5521e-10, 1.6325e-10, 1.6924e-10,
16350 1.8265e-10, 1.9612e-10, 2.0176e-10, 1.9359e-10, 1.7085e-10,
16351 1.5197e-10, 1.2646e-10, 9.8552e-11, 7.453e-11, 5.5052e-11,
16352 4.2315e-11, 3.2736e-11, 2.6171e-11, 2.1909e-11, 1.8286e-11,
16353 1.5752e-11, 1.3859e-11, 1.2288e-11, 1.1002e-11, 9.7534e-12,
16354 8.8412e-12, 8.0169e-12, 7.2855e-12, 6.8734e-12, 6.4121e-12,
16355 6.1471e-12, 5.778e-12, 5.3478e-12, 4.9652e-12, 4.4043e-12,
16356 3.9862e-12, 3.4684e-12, 2.9681e-12, 2.5791e-12, 2.2339e-12,
16357 1.9247e-12, 1.6849e-12, 1.4863e-12, 1.3291e-12, 1.2021e-12,
16358 1.0947e-12, 1.0015e-12, 9.1935e-13, 8.4612e-13, 7.8036e-13,
16359 7.21e-13, 6.6718e-13, 6.1821e-13, 5.7353e-13, 5.3269e-13,
16360 4.9526e-13, 4.6093e-13, 4.2937e-13, 4.0034e-13, 3.7361e-13,
16361 3.4895e-13, 3.2621e-13, 3.052e-13, 2.8578e-13, 2.6782e-13,
16362 2.512e-13, 2.3581e-13, 2.2154e-13, 2.0832e-13, 1.9605e-13,
16363 1.8466e-13, 1.7408e-13, 1.6425e-13, 1.5511e-13, 1.4661e-13,
16364 1.3869e-13, 1.3131e-13, 1.2444e-13, 1.1803e-13, 1.1205e-13,
16365 1.0646e-13, 1.0124e-13, 9.6358e-14, 9.1789e-14, 8.7509e-14,
16366 8.3498e-14, 7.9735e-14, 7.6202e-14, 7.2882e-14, 6.976e-14,
16367 6.6822e-14, 6.4053e-14, 6.1442e-14, 5.8978e-14, 5.665e-14,
16368 5.4448e-14, 5.2364e-14, 5.0389e-14, 4.8516e-14, 4.6738e-14,
16369 4.5048e-14, 4.3441e-14, 4.1911e-14, 4.0453e-14, 3.9063e-14,
16370 3.7735e-14, 3.6467e-14, 3.5254e-14, 3.4093e-14, 3.298e-14,
16371 3.1914e-14, 3.0891e-14, 2.9909e-14, 2.8965e-14, 2.8058e-14,
16372 2.7185e-14, 2.6344e-14, 2.5535e-14, 2.4755e-14, 2.4002e-14,
16373 2.3276e-14, 2.2576e-14, 2.1899e-14, 2.1245e-14, 2.0613e-14,
16374 2.0002e-14, 1.9411e-14, 1.8839e-14, 1.8285e-14, 1.7749e-14,
16375 1.723e-14, 1.6727e-14, 1.624e-14, 1.5768e-14, 1.531e-14,
16376 1.4867e-14, 1.4436e-14, 1.4019e-14, 1.3614e-14, 1.3221e-14,
16377 1.284e-14, 1.2471e-14, 1.2112e-14, 1.1764e-14, 1.1425e-14,
16378 1.1097e-14, 1.0779e-14, 1.0469e-14, 1.0169e-14, 9.8775e-15,
16379 9.5943e-15, 9.3193e-15, 9.0522e-15, 8.7928e-15, 8.5409e-15,
16380 8.2962e-15, 8.0586e-15, 7.8278e-15, 7.6036e-15, 7.3858e-15,
16381 7.1742e-15, 6.9687e-15, 6.7691e-15, 6.5752e-15, 6.3868e-15,
16382 6.2038e-15, 6.026e-15, 5.8533e-15, 5.6856e-15, 5.5226e-15,
16383 5.3642e-15, 5.2104e-15, 5.061e-15, 4.9158e-15, 4.7748e-15,
16384 4.6378e-15, 4.5047e-15, 4.3753e-15, 4.2497e-15, 4.1277e-15,
16385 4.0091e-15, 3.8939e-15, 3.782e-15, 3.6733e-15, 3.5677e-15,
16386 3.4651e-15, 3.3655e-15, 3.2686e-15, 3.1746e-15, 3.0832e-15,
16387 2.9944e-15, 2.9082e-15, 2.8244e-15, 2.7431e-15, 2.664e-15,
16388 2.5872e-15, 2.5126e-15, 2.4401e-15, 2.3697e-15, 2.3014e-15,
16389 2.2349e-15, 2.1704e-15, 2.1077e-15, 2.0468e-15, 1.9877e-15,
16390 1.9302e-15, 1.8744e-15, 1.8202e-15, 1.7675e-15, 1.7164e-15,
16391 1.6667e-15, 1.6184e-15, 1.5716e-15, 1.526e-15, 1.4818e-15,
16392 1.4389e-15, 1.3971e-15, 1.3566e-15, 1.3172e-15, 1.279e-15,
16393 1.2419e-15, 1.2058e-15, 1.1708e-15, 1.1368e-15, 1.1037e-15,
16394 1.0716e-15, 1.0405e-15, 1.0102e-15, 9.8079e-16, 9.5224e-16,
16395 9.2451e-16, 8.9758e-16, 8.7142e-16, 8.4602e-16, 8.2136e-16,
16396 7.974e-16, 7.7414e-16, 7.5154e-16, 7.2961e-16, 7.083e-16,
16397 6.8761e-16, 6.6752e-16, 6.4801e-16, 6.2906e-16, 6.1066e-16,
16398 5.928e-16, 5.7545e-16, 5.586e-16, 5.4224e-16, 5.2636e-16,
16399 5.1094e-16, 4.9596e-16} };
16408 }
consts_ = { {3.1415927410125732, 6.62606876e-27, 1.3806503e-16,
16409 29979245800., 6.02214199e23, 2.6867775e19, 83144720.,
16410 1.191042722e-12, 1.4387752} };
16453 double vmrn2,
double vmro2,
double freq,
int ivc)
16457 static double xslf = 1.;
16458 static double xfrg = 1.;
16459 static double xcn2 = 1.;
16462 double ret_val=0.0e0;
16467 double w_wv__, oc_n2, radct;
16468 double w_other__, w_n2__, w_o2__;
16469 double of_wv, os_wv, p0, xn_wv__, t0, rhofac, wn, xn, xn0, tksvpt, rft;
16471 extern int initi_(
double,
double ,
double *,
16472 double *,
double *,
double *,
double *,
16473 double *,
double *,
double *,
double *,
16474 double *,
double *);
16475 extern double fwv_(
int ,
double ,
double *,
double *,
16476 double *,
double *,
double *,
double *);
16477 extern double swv_(
int ,
double ,
double ,
double *,
double *
16478 ,
double *,
double *,
double *,
double *,
16480 extern double conti_n2__(
double ,
double ,
double *,
16481 double *,
double *,
double *,
double *);
16581 tksvpt = (p * 100.0) / t;
16583 w_wv__ = vmrh2o * 7.242923e16 * tksvpt;
16584 w_o2__ = vmro2 * 7.242923e16 * tksvpt;
16585 w_n2__ = vmrn2 * 7.242923e16 * tksvpt;
16586 w_other__ = (1.0000E0-vmrh2o-vmro2-vmrn2) * 7.242923e16 * tksvpt;
16589 wn = freq / 29979245800.0;
16599 initi_(p, t, &radct, &t0, &p0, &w_wv__, &w_o2__, &w_n2__, &w_other__, &
16600 xn0, &xn, &xn_wv__, &rhofac);
16609 rft = wn * tanh(radct * wn / (t * 2));
16616 os_wv = 1.0000e2 *
swv_(2, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf);
16622 os_wv = 1.0000e2 *
swv_(3, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf);
16628 of_wv = 1.0000e2 *
fwv_(2, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg);
16634 of_wv = 1.0000e2 *
fwv_(3, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg);
16641 oc_n2 = 1.0000e2 *
conti_n2__(wn, t, &t0, &w_n2__, &rft, &rhofac, &xcn2);
16658 double fwv_(
int ivc,
double wn,
double *w_wv__,
double *rft,
16659 double *xn,
double *xn_wv__,
double *xn0,
double *xfrg)
16662 double ret_val = 0.0e0;
16665 extern double fwv24_(
double ,
double *,
double *,
16666 double *,
double *,
double *,
double *),
16668 double *,
double *,
double *,
double *);
16673 if (ivc == 2 && *w_wv__ > 0.) {
16674 ret_val =
fwv24_(wn, w_wv__, rft, xn, xn_wv__, xn0, xfrg);
16679 if (ivc == 3 && *w_wv__ > 0.) {
16687 double *xn,
double *xn_wv__,
double *xn0,
double *xfrg)
16690 double ret_val=0.0e0;
16693 extern double xlgr_(
double *,
double *);
16695 double x[4], fscal, xf;
16701 for (i__ = 1; i__ <= 4; ++i__) {
16702 x[i__ - 1] =
fh2oa_1.fh2o[j + i__ - 3];
16708 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / *
16709 xn0)) * fscal * *xfrg;
16715 double fwv24_(
double wn,
double *w_wv__,
double *rft,
16716 double *xn,
double *xn_wv__,
double *xn0,
double *
16721 static double v0f1 = 350.;
16722 static double hwsqf1 = 4e4;
16723 static double betaf1 = 5e-9;
16724 static double factrf1 = -.7;
16725 static double v0f1a = 630.;
16726 static double hwsqf1a = 4225.;
16727 static double betaf1a = 2e-8;
16728 static double factrf1a = .75;
16729 static double v0f2 = 1130.;
16730 static double hwsqf2 = 108900.;
16731 static double betaf2 = 8e-11;
16732 static double factrf2 = -.97;
16733 static double v0f3 = 1975.;
16734 static double hwsqf3 = 62500.;
16735 static double betaf3 = 5e-6;
16736 static double factrf3 = -.65;
16739 double ret_val=0.0e0;
16743 extern double xlgr_(
double *,
double *);
16745 double x[4], fscal, xf, vf2, vf4, vf6;
16750 for (i__ = 1; i__ <= 4; ++i__) {
16751 x[i__ - 1] =
fh2oa_1.fh2o[j + i__ - 3];
16761 vf6 = vf2 * vf2 * vf2;
16762 fscal = factrf1 * (hwsqf1 / (vf2 + betaf1 * vf6 + hwsqf1)) + 1.;
16766 vf6 = vf2 * vf2 * vf2;
16767 fscal *= factrf1a * (hwsqf1a / (vf2 + betaf1a * vf6 + hwsqf1a)) + 1.;
16771 vf6 = vf2 * vf2 * vf2;
16772 fscal *= factrf2 * (hwsqf2 / (vf2 + betaf2 * vf6 + hwsqf2)) + 1.;
16777 fscal *= factrf3 * (hwsqf3 / (vf2 + betaf3 * vf4 + hwsqf3)) + 1.;
16778 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / *
16779 xn0)) * fscal * *xfrg;
16788 double swv_(
int ivc,
double wn,
double t,
double *t0,
16789 double *w_wv__,
double *rft,
double *xn,
double *
16790 xn_wv__,
double *xn0,
double *xslf)
16797 ,
double *,
double *,
double *,
double *,
16798 double *,
double *);
16799 extern double swv24_(
double ,
double ,
16800 double *,
double *,
double *,
double *,
16801 double *,
double *,
double *);
16806 if (ivc == 2 && *w_wv__ > 0.) {
16808 ret_val =
swv24_(wn, t, t0, w_wv__, rft, xn, xn_wv__, xn0, xslf);
16811 if (ivc == 3 && *w_wv__ > 0.) {
16823 double swv24_(
double wn,
double t,
double *t0,
double *
16824 w_wv__,
double *rft,
double * ,
double *xn_wv__,
16825 double *xn0,
double *xslf)
16829 static double v0s1 = 0.;
16830 static double hwsq1 = 1e4;
16831 static double betas1 = 1e-4;
16832 static double factrs1 = .688;
16833 static double v0s2 = 1050.;
16834 static double hwsq2 = 4e4;
16835 static double factrs2 = -.2333;
16836 static double v0s3 = 1310.;
16837 static double hwsq3 = 14400.;
16838 static double betas3 = 5e-6;
16839 static double factrs3 = -.15;
16842 double ret_val, d__1, d__2;
16846 extern double xlgr_(
double *,
double *);
16848 double x[4], xf, vs2, vs4;
16856 d__2 = (t - *t0) / (260. - *t0);
16857 x[0] =
sh2oa_1.swv296[j - 2] * pow(d__1, d__2);
16859 d__2 = (t - *t0) / (260. - *t0);
16860 x[1] =
sh2oa_1.swv296[j - 1] * pow(d__1, d__2);
16862 d__2 = (t - *t0) / (260. - *t0);
16863 x[2] =
sh2oa_1.swv296[j] * pow(d__1, d__2);
16865 d__2 = (t - *t0) / (260. - *t0);
16866 x[3] =
sh2oa_1.swv296[j + 1] * pow(d__1, d__2);
16876 sfac *= factrs1 * (hwsq1 / (d__1 * d__1 + betas1 * vs4 + hwsq1)) + 1.;
16880 sfac *= factrs2 * (hwsq2 / (vs2 + hwsq2)) + 1.;
16885 sfac *= factrs3 * (hwsq3 / (vs2 + betas3 * vs4 + hwsq3)) + 1.;
16886 ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) *
xlgr_(&xf, x) * 1e-20 *
16893 double *w_wv__,
double *rft,
double * ,
double *
16894 xn_wv__,
double *xn0,
double *xslf)
16897 double ret_val, d__1, d__2;
16901 extern double xlgr_(
double *,
double *);
16911 d__2 = (t - *t0) / (260. - *t0);
16912 x[0] =
sh2oa_1.swv296[j - 2] * pow(d__1, d__2);
16914 d__2 = (t - *t0) / (260. - *t0);
16915 x[1] =
sh2oa_1.swv296[j - 1] * pow(d__1, d__2);
16917 d__2 = (t - *t0) / (260. - *t0);
16918 x[2] =
sh2oa_1.swv296[j] * pow(d__1, d__2);
16920 d__2 = (t - *t0) / (260. - *t0);
16921 x[3] =
sh2oa_1.swv296[j + 1] * pow(d__1, d__2);
16925 ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) *
xlgr_(&xf, x) * 1e-20 *
16934 double *w_n2__,
double *rft,
double *rhofac,
double *
16939 static double v1 = -10.;
16940 static double dv = 5.;
16941 static double ct296[73] = { 4.303e-7,4.85e-7,4.979e-7,4.85e-7,
16942 4.303e-7,3.715e-7,3.292e-7,3.086e-7,2.92e-7,2.813e-7,2.804e-7,
16943 2.738e-7,2.726e-7,2.724e-7,2.635e-7,2.621e-7,2.547e-7,2.428e-7,
16944 2.371e-7,2.228e-7,2.1e-7,1.991e-7,1.822e-7,1.697e-7,1.555e-7,
16945 1.398e-7,1.281e-7,1.138e-7,1.012e-7,9.078e-8,7.879e-8,6.944e-8,
16946 6.084e-8,5.207e-8,4.54e-8,3.897e-8,3.313e-8,2.852e-8,2.413e-8,
16947 2.045e-8,1.737e-8,1.458e-8,1.231e-8,1.031e-8,8.586e-9,7.162e-9,
16948 5.963e-9,4.999e-9,4.226e-9,3.607e-9,3.09e-9,2.669e-9,2.325e-9,
16949 2.024e-9,1.783e-9,1.574e-9,1.387e-9,1.236e-9,1.098e-9,9.777e-10,
16950 8.765e-10,7.833e-10,7.022e-10,6.317e-10,5.65e-10,5.1e-10,
16951 4.572e-10,4.115e-10,3.721e-10,3.339e-10,3.005e-10,2.715e-10,
16953 static double ct220[73] = { 4.946e-7,5.756e-7,5.964e-7,5.756e-7,
16954 4.946e-7,4.145e-7,3.641e-7,3.482e-7,3.34e-7,3.252e-7,3.299e-7,
16955 3.206e-7,3.184e-7,3.167e-7,2.994e-7,2.943e-7,2.794e-7,2.582e-7,
16956 2.468e-7,2.237e-7,2.038e-7,1.873e-7,1.641e-7,1.474e-7,1.297e-7,
16957 1.114e-7,9.813e-8,8.309e-8,7.059e-8,6.068e-8,5.008e-8,4.221e-8,
16958 3.537e-8,2.885e-8,2.407e-8,1.977e-8,1.605e-8,1.313e-8,1.057e-8,
16959 8.482e-9,6.844e-9,5.595e-9,4.616e-9,3.854e-9,3.257e-9,2.757e-9,
16960 2.372e-9,2.039e-9,1.767e-9,1.548e-9,1.346e-9,1.181e-9,1.043e-9,
16961 9.11e-10,8.103e-10,7.189e-10,6.314e-10,5.635e-10,4.976e-10,
16962 4.401e-10,3.926e-10,3.477e-10,3.085e-10,2.745e-10,2.416e-10,
16963 2.155e-10,1.895e-10,1.678e-10,1.493e-10,1.31e-10,1.154e-10,
16964 1.019e-10,8.855e-11 };
16967 double ret_val, d__1, d__2;
16970 extern double xlgr_(
double *,
double *);
16995 if (*w_n2__ == 0.) {
17000 j = (int) ((wn - v1) / dv) + 1;
17001 d__1 = ct296[j - 2] / ct220[j - 2];
17002 d__2 = (t - *t0) / (220. - *t0);
17003 x[0] = ct296[j - 2] * pow(d__1, d__2);
17004 d__1 = ct296[j - 1] / ct220[j - 1];
17005 d__2 = (t - *t0) / (220. - *t0);
17006 x[1] = ct296[j - 1] * pow(d__1, d__2);
17007 d__1 = ct296[j] / ct220[j];
17008 d__2 = (t - *t0) / (220. - *t0);
17009 x[2] = ct296[j] * pow(d__1, d__2);
17010 d__1 = ct296[j + 1] / ct220[j + 1];
17011 d__2 = (t - *t0) / (220. - *t0);
17012 x[3] = ct296[j + 1] * pow(d__1, d__2);
17013 xf = (wn - (v1 + dv * (double) (j - 1))) / dv;
17014 ret_val =
xlgr_(&xf, x) * 1e-20 * (*w_n2__ / .26867775 * *rft * *rhofac) *
17037 b = *xf * .5 * (1. - *xf);
17038 a[0] = -b * (1. - *xf);
17039 a[1] = 1. - (3. - *xf * 2.) * *xf * *xf + b * *xf;
17040 a[2] = (3. - *xf * 2.) * *xf * *xf + b * (1. - *xf);
17042 ret_val = a[0] * x[1] + a[1] * x[2] + a[2] * x[3] + a[3] * x[4];
17050 double *t0,
double *p0,
double *w_wv__,
double *
17051 w_o2__,
double *w_n2__,
double *w_other__,
double *xn0,
17052 double *xn,
double *xn_wv__,
double *rhofac)
17056 static double wvmolmass = 18.016;
17057 static double drymolmass = 28.97;
17059 double wdry, ratiomix, wvpress;
17068 *xn0 = *p0 / (
consts_1.boltz * *t0) * 1e3;
17069 *xn = p / (
consts_1.boltz * t) * 1e3;
17070 wdry = *w_o2__ + *w_n2__ + *w_other__;
17071 ratiomix = *w_wv__ * wvmolmass / (wdry * drymolmass);
17072 wvpress = ratiomix / (ratiomix + wvmolmass / drymolmass) * p;
17073 *xn_wv__ = wvpress / (
consts_1.boltz * t) * 1e3;
17074 *rhofac = *w_n2__ / (wdry + *w_wv__) * (p / *p0) * (273.15 / t);