public class CHF { public static double[,,] QLUT = new double[15, 21, 23]; static CHF() { #region Look-up-table-2006 data ///p = 100.0 ///G=0~8000 double[] G_0 = new double[23] { 8111, 7252, 6302, 4802, 4086, 3057, 1990, 1142, 637, 415, 284, 223, 188, 165, 152, 142, 133, 123, 114, 110, 96, 55, 0.0 }; double[] G_50 = new double[23] { 8317, 7271, 6326, 5035, 4236, 3453, 2420, 1570, 1011, 784, 641, 587, 553, 531, 475, 443, 419, 387, 347, 277, 239, 204, 0.0 }; double[] G_100 = new double[23] { 8390, 7295, 6371, 5322, 4586, 3640, 2942, 2103, 1558, 1275, 1013, 885, 847, 811, 789, 758, 745, 715, 700, 600, 459, 359, 0.0 }; double[] G_300 = new double[23] { 10698, 9288, 7795, 6020, 5009, 3865, 3196, 2479, 1961, 1707, 1317, 1177, 1172, 1159, 1150, 1100, 1085, 1041, 1031, 675, 517, 366, 0.0 }; double[] G_500 = new double[23] { 12882, 10946, 9224, 6791, 5348, 3938, 3369, 2685, 2087, 1808, 1412, 1347, 1311, 1303, 1282, 1260, 1212, 1193, 1071, 605, 450, 295, 0.0 }; double[] G_750 = new double[23] { 16982, 14405, 11641, 7496, 5662, 4234, 3471, 2780, 2229, 1970, 1649, 1606, 1591, 1563, 1510, 1495, 1400, 1280, 595, 415, 243, 206, 0.0 }; double[] G_1000 = new double[23] { 19441, 16278, 13255, 8232, 5971, 4495, 3533, 3012, 2653, 2349, 2070, 2000, 1980, 1930, 1715, 1550, 1359, 1165, 503, 322, 172, 105, 0.0 }; double[] G_1500 = new double[23] { 22781, 19225, 15465, 9100, 6603, 5358, 3741, 3524, 3166, 2917, 2635, 2572, 2467, 2378, 1908, 1350, 1005, 815, 302, 210, 126, 51, 0.0 }; double[] G_2000 = new double[23] { 25268, 21321, 17143, 9141, 7059, 6036, 4074, 3855, 3556, 3402, 3167, 2986, 2720, 2549, 1696, 1105, 805, 595, 247, 105, 87, 39, 0.0 }; double[] G_2500 = new double[23] { 28026, 23599, 18346, 9503, 7506, 6516, 4502, 4047, 3852, 3599, 3228, 3019, 2676, 2458, 1148, 956, 708, 485, 290, 120, 46, 22, 0.0 }; double[] G_3000 = new double[23] { 30294, 25465, 19383, 9779, 8063, 7088, 4826, 4182, 3976, 3389, 2968, 2706, 2369, 1829, 940, 846, 665, 532, 302, 159, 55, 20, 0.0 }; double[] G_3500 = new double[23] { 32227, 27043, 21068, 10156, 8518, 7302, 5113, 4384, 4106, 3196, 2769, 2557, 2311, 1729, 1158, 891, 817, 670, 402, 210, 75, 28, 0.0 }; double[] G_4000 = new double[23] { 33928, 28471, 22722, 10512, 8728, 7528, 5582, 4709, 4228, 3119, 2736, 2504, 2282, 1850, 1470, 1160, 1030, 823, 475, 248, 96, 38, 0.0 }; double[] G_4500 = new double[23] { 35406, 29774, 23890, 10945, 9088, 8067, 6267, 5013, 4272, 3287, 2769, 2541, 2304, 1972, 1718, 1405, 1185, 969, 585, 289, 129, 61, 0.0 }; double[] G_5000 = new double[23] { 36808, 30988, 24979, 11185, 9592, 8576, 6748, 5113, 4342, 3410, 2890, 2629, 2355, 2066, 1779, 1498, 1247, 1030, 647, 347, 167, 81, 0.0 }; double[] G_5500 = new double[23] { 38232, 32141, 25791, 11929, 10084, 8940, 6867, 5175, 4389, 3465, 2954, 2680, 2406, 2128, 1848, 1595, 1334, 1118, 729, 409, 206, 101, 0.0 }; double[] G_6000 = new double[23] { 39525, 33222, 26637, 13026, 10396, 9347, 6919, 5241, 4423, 3580, 2921, 2681, 2447, 2170, 1908, 1651, 1418, 1204, 807, 468, 244, 121, 0.0 }; double[] G_6500 = new double[23] { 40727, 34244, 27480, 14371, 10748, 9701, 6995, 5295, 4491, 3620, 2918, 2694, 2477, 2209, 1965, 1719, 1493, 1281, 878, 523, 282, 142, 0.0 }; double[] G_7000 = new double[23] { 41950, 35224, 28165, 15045, 11091, 10522, 7062, 5370, 4513, 3668, 2958, 2724, 2501, 2247, 2013, 1780, 1559, 1349, 943, 576, 319, 162, 0.0 }; double[] G_7500 = new double[23] { 43448, 36075, 28604, 15822, 11538, 10726, 7087, 5381, 4585, 3699, 2996, 2751, 2526, 2285, 2060, 1838, 1622, 1414, 1000, 615, 347, 180, 0.0 }; double[] G_8000 = new double[23] { 44338, 36803, 29089, 16599, 12085, 10900, 7313, 5392, 4689, 3780, 3031, 2778, 2553, 2320, 2103, 1890, 1679, 1473, 1054, 651, 371, 196, 0.0 }; Matrix<double> p_100 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 300.0 G_0 = new double[23] { 8027, 7043, 6206, 4761, 4106, 3131, 2483, 1374, 883, 606, 420, 313, 248, 205, 180, 165, 148, 141, 135, 131, 125, 67, 0.0 }; G_50 = new double[23] { 8153, 7058, 6287, 5304, 4564, 3729, 2847, 2071, 1587, 1315, 1052, 871, 709, 599, 516, 499, 457, 389, 372, 362, 274, 207, 0.0 }; G_100 = new double[23] { 8418, 7315, 6499, 5509, 4883, 4013, 3238, 2638, 2150, 1869, 1528, 1373, 1262, 1183, 1127, 1065, 1057, 1033, 902, 691, 502, 394, 0.0 }; G_300 = new double[23] { 10397, 9094, 7805, 6085, 5320, 4107, 3429, 3011, 2617, 2263, 1862, 1657, 1614, 1576, 1513, 1480, 1446, 1403, 1193, 722, 572, 419, 0.0 }; G_500 = new double[23] { 12787, 10894, 9193, 6962, 5664, 4134, 3563, 3285, 2821, 2405, 2001, 1832, 1688, 1663, 1610, 1610, 1520, 1504, 1112, 616, 452, 297, 0.0 }; G_750 = new double[23] { 16084, 13658, 11132, 7493, 5853, 4282, 3743, 3512, 2987, 2538, 2062, 1868, 1698, 1676, 1636, 1598, 1447, 1300, 656, 440, 253, 207, 0.0 }; G_1000 = new double[23] { 17866, 15378, 12753, 8194, 6038, 4572, 3898, 3610, 3224, 2791, 2450, 2230, 2070, 1990, 1805, 1570, 1369, 1173, 523, 334, 184, 112, 0.0 }; G_1500 = new double[23] { 21559, 18208, 14718, 9252, 7091, 6091, 4818, 4243, 3557, 3134, 2981, 2720, 2658, 2491, 2042, 1365, 1016, 813, 308, 210, 130, 57, 0.0 }; G_2000 = new double[23] { 23993, 20257, 16367, 10134, 8179, 6790, 5171, 4462, 3759, 3490, 3410, 3232, 2894, 2672, 1803, 1108, 822, 599, 254, 118, 88, 41, 0.0 }; G_2500 = new double[23] { 26215, 22280, 18013, 10477, 8534, 7134, 5245, 4519, 3951, 3681, 3444, 3248, 2846, 2521, 1168, 981, 732, 488, 292, 132, 47, 23, 0.0 }; G_3000 = new double[23] { 27747, 23975, 19028, 10840, 8691, 7393, 5326, 4551, 4081, 3502, 3082, 2977, 2523, 1868, 945, 852, 681, 534, 304, 161, 56, 21, 0.0 }; G_3500 = new double[23] { 29254, 25440, 20427, 10948, 8793, 7585, 5600, 4681, 4195, 3283, 2967, 2695, 2389, 1788, 1170, 895, 820, 675, 410, 226, 76, 29, 0.0 }; G_4000 = new double[23] { 30763, 26771, 21520, 11006, 8997, 8017, 6253, 5184, 4271, 3344, 2951, 2648, 2383, 1960, 1500, 1170, 1050, 850, 499, 264, 97, 39, 0.0 }; G_4500 = new double[23] { 32150, 27994, 22599, 11137, 9388, 8517, 6725, 5594, 4329, 3504, 2981, 2677, 2408, 2094, 1746, 1423, 1228, 998, 600, 304, 126, 59, 0.0 }; G_5000 = new double[23] { 33465, 29133, 23700, 11600, 9705, 8845, 7103, 6052, 4369, 3655, 3048, 2739, 2449, 2139, 1843, 1542, 1289, 1061, 665, 358, 165, 80, 0.0 }; G_5500 = new double[23] { 34919, 30223, 24325, 12512, 10147, 9115, 7281, 6122, 4427, 3720, 3070, 2776, 2501, 2200, 1881, 1636, 1377, 1153, 748, 418, 206, 100, 0.0 }; G_6000 = new double[23] { 36122, 31241, 25169, 13522, 10870, 9576, 7398, 6323, 4481, 3685, 3104, 2773, 2543, 2247, 1942, 1708, 1462, 1241, 828, 476, 244, 121, 0.0 }; G_6500 = new double[23] { 37231, 32198, 25960, 14708, 11330, 10024, 7446, 6440, 4571, 3705, 3123, 2783, 2578, 2288, 2004, 1783, 1543, 1320, 902, 532, 268, 142, 0.0 }; G_7000 = new double[23] { 38099, 33093, 26558, 15513, 11759, 10532, 7599, 6469, 4650, 3772, 3155, 2812, 2605, 2327, 2037, 1844, 1611, 1391, 970, 586, 303, 150, 0.0 }; G_7500 = new double[23] { 38989, 34027, 27283, 16123, 12062, 10765, 7689, 6500, 4702, 3784, 3221, 2839, 2625, 2361, 2095, 1898, 1673, 1456, 1029, 627, 331, 166, 0.0 }; G_8000 = new double[23] { 39744, 34510, 27900, 16757, 12891, 11128, 7784, 6544, 4760, 3892, 3228, 2867, 2649, 2395, 2126, 1946, 1728, 1514, 1083, 664, 356, 181, 0.0 }; Matrix<double> p_300 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 500.0 G_0 = new double[23] { 7743, 6834, 5910, 4720, 4136, 3342, 2518, 1607, 1129, 798, 557, 404, 308, 245, 209, 188, 163, 159, 157, 156, 137, 105, 0.0 }; G_50 = new double[23] { 7983, 7004, 6274, 5355, 4711, 3853, 2989, 2170, 1731, 1344, 1119, 958, 852, 775, 684, 556, 495, 465, 407, 395, 282, 235, 0.0 }; G_100 = new double[23] { 8478, 7421, 6632, 5627, 5080, 4057, 3317, 2754, 2270, 1988, 1704, 1399, 1316, 1229, 1188, 1122, 1116, 1109, 940, 711, 523, 417, 0.0 }; G_300 = new double[23] { 10280, 8983, 7804, 6235, 5491, 4193, 3498, 3165, 2835, 2537, 2243, 2028, 1826, 1647, 1611, 1545, 1503, 1464, 1255, 749, 592, 449, 0.0 }; G_500 = new double[23] { 12694, 10885, 9073, 7008, 5780, 4281, 3671, 3339, 3157, 2811, 2462, 2253, 1933, 1711, 1651, 1630, 1534, 1506, 1177, 676, 476, 300, 0.0 }; G_750 = new double[23] { 15186, 12992, 10624, 7610, 5957, 4356, 3855, 3630, 3442, 2994, 2680, 2379, 1982, 1740, 1699, 1615, 1469, 1307, 684, 503, 274, 209, 0.0 }; G_1000 = new double[23] { 17460, 14778, 12051, 8057, 6145, 4629, 4062, 3870, 3684, 3304, 3109, 2885, 2613, 2251, 1927, 1599, 1399, 1179, 540, 362, 186, 119, 0.0 }; G_1500 = new double[23] { 20438, 17191, 13972, 9365, 7340, 6298, 5248, 4711, 4048, 3594, 3491, 3278, 3149, 2774, 2123, 1382, 1056, 833, 310, 215, 134, 65, 0.0 }; G_2000 = new double[23] { 22719, 19293, 15591, 10327, 8310, 7309, 5675, 5017, 4215, 3772, 3693, 3578, 3169, 2795, 1850, 1115, 832, 603, 260, 132, 89, 43, 0.0 }; G_2500 = new double[23] { 25104, 20961, 17081, 10751, 8703, 7675, 5987, 5151, 4435, 3863, 3759, 3478, 3017, 2647, 1176, 1009, 780, 492, 296, 145, 48, 24, 0.0 }; G_3000 = new double[23] { 26621, 22486, 18273, 11002, 8920, 8034, 6194, 5168, 4595, 3955, 3690, 3216, 2761, 1905, 948, 862, 698, 560, 306, 163, 58, 22, 0.0 }; G_3500 = new double[23] { 28248, 23838, 19186, 11141, 9008, 8154, 6399, 5384, 4757, 3992, 3489, 3066, 2723, 1856, 1201, 899, 825, 681, 420, 229, 77, 30, 0.0 }; G_4000 = new double[23] { 29719, 25071, 20019, 11201, 9267, 8238, 6955, 5858, 4922, 4029, 3355, 2991, 2692, 2090, 1540, 1180, 1060, 870, 532, 271, 98, 39, 0.0 }; G_4500 = new double[23] { 31075, 26215, 20508, 11429, 9919, 8968, 7201, 6212, 5083, 4098, 3257, 2958, 2663, 2204, 1776, 1437, 1240, 1003, 612, 315, 124, 54, 0.0 }; G_5000 = new double[23] { 32376, 27279, 21190, 11913, 10245, 9208, 7321, 6399, 5162, 4132, 3186, 2907, 2639, 2230, 1858, 1551, 1310, 1085, 693, 368, 153, 70, 0.0 }; G_5500 = new double[23] { 33684, 28306, 22359, 12695, 10581, 9306, 7407, 6209, 5291, 4141, 3175, 2896, 2637, 2259, 1927, 1651, 1401, 1178, 772, 423, 186, 86, 0.0 }; G_6000 = new double[23] { 34756, 29261, 23302, 14018, 11114, 9598, 7526, 6332, 5399, 4190, 3180, 2913, 2652, 2287, 1985, 1728, 1482, 1263, 850, 478, 220, 103, 0.0 }; G_6500 = new double[23] { 35781, 30153, 24141, 14945, 11567, 9948, 7751, 6496, 5481, 4230, 3246, 2935, 2666, 2319, 2029, 1797, 1560, 1342, 927, 534, 254, 121, 0.0 }; G_7000 = new double[23] { 36804, 30962, 24952, 15581, 12151, 10333, 8027, 6828, 5588, 4307, 3294, 2939, 2682, 2361, 2077, 1864, 1632, 1416, 997, 588, 288, 139, 0.0 }; G_7500 = new double[23] { 38036, 31979, 25663, 16185, 12686, 10753, 8176, 6845, 5700, 4370, 3351, 2947, 2697, 2398, 2127, 1918, 1695, 1480, 1060, 631, 315, 153, 0.0 }; G_8000 = new double[23] { 39197, 33017, 26712, 17016, 13200, 11107, 8256, 6896, 5794, 4485, 3389, 3069, 2734, 2442, 2177, 1967, 1751, 1540, 1120, 672, 342, 166, 0.0 }; Matrix<double> p_500 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 1000.0 G_0 = new double[23] { 7347, 6383, 5570, 4657, 4175, 3535, 2776, 2159, 1820, 1320, 940, 678, 492, 377, 318, 291, 269, 254, 231, 220, 193, 145, 0.0 }; G_50 = new double[23] { 7700, 6956, 6204, 5406, 4891, 4169, 3412, 2702, 2473, 1966, 1607, 1351, 1179, 1068, 933, 770, 723, 706, 586, 522, 369, 282, 0.0 }; G_100 = new double[23] { 8581, 7702, 6906, 5824, 5173, 4600, 4000, 3609, 3069, 2549, 2380, 2216, 2087, 1949, 1798, 1700, 1652, 1541, 1280, 1078, 708, 501, 0.0 }; G_300 = new double[23] { 10093, 8830, 7796, 6476, 5710, 4793, 4140, 4013, 3901, 3685, 3471, 3372, 3276, 3172, 2993, 2871, 2766, 2594, 1727, 1302, 815, 514, 0.0 }; G_500 = new double[23] { 12148, 10478, 8703, 7200, 6004, 4837, 4259, 4124, 4063, 3995, 3980, 3953, 3938, 3790, 3678, 3579, 3537, 3445, 1564, 1067, 649, 377, 0.0 }; G_750 = new double[23] { 14675, 12510, 10033, 7775, 6255, 4896, 4378, 4337, 4228, 4200, 4162, 4083, 3997, 3851, 3810, 3473, 3291, 3102, 832, 623, 322, 213, 0.0 }; G_1000 = new double[23] { 17023, 14042, 11114, 8024, 6275, 4978, 4804, 4736, 4616, 4351, 4177, 4099, 3998, 3896, 3708, 3148, 2620, 1199, 636, 391, 189, 128, 0.0 }; G_1500 = new double[23] { 20026, 16859, 13366, 9481, 7659, 6918, 6497, 5831, 5246, 4610, 4271, 4057, 3704, 3655, 3049, 1601, 1238, 843, 315, 218, 138, 75, 0.0 }; G_2000 = new double[23] { 22495, 18764, 14921, 10539, 9084, 7740, 6830, 6373, 5480, 4704, 4407, 3992, 3596, 3330, 1957, 1122, 873, 624, 268, 155, 90, 46, 0.0 }; G_2500 = new double[23] { 24717, 20601, 16332, 11001, 9794, 8318, 7090, 6583, 5633, 4794, 4338, 3811, 3566, 2927, 1197, 1012, 823, 521, 300, 149, 49, 26, 0.0 }; G_3000 = new double[23] { 26264, 22053, 17370, 11532, 10209, 8496, 7195, 6673, 5671, 4871, 4244, 3718, 3325, 2007, 977, 895, 701, 583, 313, 168, 59, 24, 0.0 }; G_3500 = new double[23] { 27894, 23473, 18245, 11516, 10075, 8480, 7278, 6704, 5714, 4887, 4229, 3597, 3109, 1924, 1223, 919, 831, 690, 431, 247, 80, 33, 0.0 }; G_4000 = new double[23] { 29406, 24586, 18990, 11029, 9419, 8550, 7359, 6714, 5752, 4750, 4075, 3520, 3031, 2210, 1620, 1230, 1090, 890, 545, 300, 101, 40, 0.0 }; G_4500 = new double[23] { 30773, 25743, 19791, 11226, 9952, 9143, 7572, 6924, 5778, 4571, 3881, 3430, 2986, 2349, 1805, 1456, 1249, 1030, 629, 331, 122, 51, 0.0 }; G_5000 = new double[23] { 31994, 26863, 20592, 12193, 10358, 9185, 7623, 6934, 5919, 4492, 3722, 3317, 2924, 2357, 1874, 1562, 1337, 1109, 703, 372, 146, 64, 0.0 }; G_5500 = new double[23] { 33271, 27872, 21588, 13122, 10898, 9280, 7551, 6744, 6006, 4590, 3694, 3272, 2887, 2358, 1938, 1664, 1428, 1200, 781, 427, 173, 78, 0.0 }; G_6000 = new double[23] { 34314, 28814, 22490, 14247, 11388, 9491, 7633, 6655, 6024, 4616, 3548, 3236, 2856, 2372, 2006, 1746, 1506, 1280, 856, 477, 204, 95, 0.0 }; G_6500 = new double[23] { 35402, 29678, 23127, 14949, 11882, 9883, 7866, 6765, 6151, 4649, 3592, 3194, 2864, 2403, 2060, 1829, 1587, 1362, 935, 530, 236, 112, 0.0 }; G_7000 = new double[23] { 36417, 30478, 23637, 15247, 12338, 10051, 8088, 6875, 6185, 4676, 3617, 3231, 2818, 2445, 2122, 1909, 1670, 1445, 1008, 583, 269, 129, 0.0 }; G_7500 = new double[23] { 37289, 31065, 24195, 16170, 12803, 10604, 8228, 6965, 6238, 4694, 3628, 3251, 2897, 2480, 2219, 1968, 1736, 1512, 1074, 630, 291, 140, 0.0 }; G_8000 = new double[23] { 38003, 31712, 25017, 17157, 13534, 11049, 8426, 6995, 6294, 4822, 3674, 3301, 2917, 2547, 2272, 2021, 1794, 1573, 1136, 668, 312, 150, 0.0 }; Matrix<double> p_1000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p=2000 // G_0 = new double[23] { 7060, 6243, 5413, 4622, 4189, 3713, 3173, 2594, 2165, 1704, 1302, 970, 745, 587, 491, 438, 380, 361, 323, 317, 232, 170, 0.0 }; G_50 = new double[23] { 7497, 6756, 6040, 5351, 4927, 4460, 3982, 3450, 3005, 2552, 2160, 1834, 1613, 1447, 1331, 1209, 1089, 1069, 924, 845, 658, 373, 0.0 }; G_100 = new double[23] { 8767, 7820, 7040, 6207, 5946, 5556, 5241, 4757, 4071, 3657, 3326, 3072, 2933, 2801, 2599, 2487, 2393, 2313, 1996, 1720, 1123, 594, 0.0 }; G_300 = new double[23] { 9784, 8590, 7775, 7108, 6722, 6403, 6064, 5659, 5220, 4908, 4646, 4362, 4026, 3725, 3563, 3475, 3375, 3276, 2998, 2266, 1252, 690, 0.0 }; G_500 = new double[23] { 11464, 9687, 8430, 7528, 6977, 6611, 6260, 6084, 5540, 5280, 4924, 4584, 4373, 4197, 4076, 3929, 3828, 3695, 3362, 1898, 1109, 609, 0.0 }; G_750 = new double[23] { 13730, 11557, 9579, 7868, 7076, 6656, 6388, 6097, 5696, 5338, 5083, 4870, 4700, 4590, 4478, 4396, 4033, 3811, 1948, 1194, 700, 229, 0.0 }; G_1000 = new double[23] { 16027, 13171, 10583, 7982, 7118, 6692, 6371, 6185, 5781, 5417, 5197, 5083, 4992, 4961, 4792, 4196, 3311, 2751, 1260, 597, 359, 174, 0.0 }; G_1500 = new double[23] { 18947, 15537, 12233, 9416, 8215, 7670, 7342, 6660, 6095, 5463, 5141, 4871, 4766, 4524, 4389, 2926, 1903, 897, 512, 288, 163, 97, 0.0 }; G_2000 = new double[23] { 21106, 17297, 13588, 10513, 9584, 8982, 8305, 7261, 6199, 5406, 4996, 4595, 4283, 3824, 3026, 1357, 1172, 682, 418, 196, 97, 60, 0.0 }; G_2500 = new double[23] { 23353, 19098, 14933, 11161, 10279, 8996, 8116, 7196, 5976, 5302, 4856, 4552, 3943, 3328, 1613, 1237, 958, 556, 313, 157, 53, 29, 0.0 }; G_3000 = new double[23] { 25197, 20509, 15816, 11602, 10578, 8792, 7549, 7112, 5860, 5169, 4798, 4483, 3798, 2570, 1185, 1020, 731, 594, 331, 172, 59, 27, 0.0 }; G_3500 = new double[23] { 26816, 21723, 16526, 11317, 10169, 8672, 7475, 7057, 5794, 5042, 4687, 4310, 3476, 2403, 1342, 979, 839, 697, 442, 254, 83, 36, 0.0 }; G_4000 = new double[23] { 28328, 22765, 16902, 10802, 9806, 8752, 7542, 7103, 5878, 4951, 4485, 3868, 3301, 2367, 1642, 1318, 1147, 996, 606, 318, 104, 40, 0.0 }; G_4500 = new double[23] { 29717, 23920, 17644, 10857, 9984, 8899, 7663, 7149, 5913, 4875, 4223, 3760, 3206, 2375, 1758, 1445, 1258, 1062, 653, 340, 119, 47, 0.0 }; G_5000 = new double[23] { 30638, 24767, 18164, 11811, 10290, 9037, 7624, 7195, 5997, 4789, 4069, 3605, 3089, 2389, 1803, 1545, 1346, 1131, 712, 380, 134, 56, 0.0 }; G_5500 = new double[23] { 32102, 25866, 18832, 12769, 10862, 9069, 7652, 7041, 6021, 4783, 3970, 3532, 3006, 2379, 1897, 1647, 1440, 1212, 781, 412, 153, 67, 0.0 }; G_6000 = new double[23] { 33085, 26751, 19986, 13576, 11244, 9316, 7681, 6987, 6065, 4800, 3812, 3481, 2959, 2391, 1992, 1742, 1516, 1287, 848, 452, 177, 80, 0.0 }; G_6500 = new double[23] { 34156, 27592, 20946, 14138, 11703, 9812, 7927, 6933, 6099, 4851, 3728, 3431, 2947, 2452, 2094, 1842, 1602, 1371, 928, 499, 205, 95, 0.0 }; G_7000 = new double[23] { 35131, 28383, 21563, 14625, 12253, 10016, 8186, 6988, 6134, 4932, 3753, 3344, 2933, 2513, 2190, 1935, 1692, 1458, 1006, 551, 233, 110, 0.0 }; G_7500 = new double[23] { 35897, 29010, 22130, 15499, 12704, 10558, 8396, 7041, 6198, 5027, 3844, 3322, 2983, 2581, 2286, 2013, 1767, 1530, 1073, 599, 247, 118, 0.0 }; G_8000 = new double[23] { 36663, 29609, 22628, 16442, 13306, 10940, 8676, 7070, 6292, 5167, 3886, 3403, 3098, 2696, 2363, 2077, 1827, 1595, 1134, 633, 259, 123, 0.0 }; Matrix<double> p_2000 = Matrix<double>.Build.DenseOfRowArrays(G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000); // //p=3000 G_0 = new double[23] { 6741, 6001, 5272, 4593, 4213, 3873, 3447, 2943, 2431, 1979, 1551, 1181, 929, 741, 615, 539, 482, 443, 396, 350, 247, 178, 0.0 }; G_50 = new double[23] { 7222, 6535, 5910, 5303, 4961, 4653, 4297, 3850, 3325, 2890, 2482, 2126, 1884, 1693, 1549, 1449, 1361, 1333, 1219, 1105, 704, 429, 0.0 }; G_100 = new double[23] { 8514, 7599, 6831, 6315, 6057, 5809, 5525, 5121, 4495, 3921, 3575, 3415, 3262, 3171, 3010, 2948, 2926, 2771, 2483, 2059, 1264, 672, 0.0 }; G_300 = new double[23] { 9536, 8324, 7523, 7171, 7064, 6874, 6780, 6474, 6115, 5666, 5165, 4849, 4508, 4218, 3971, 3752, 3545, 3485, 3140, 2620, 1630, 893, 0.0 }; G_500 = new double[23] { 10708, 9149, 8018, 7426, 7188, 7073, 6950, 6649, 6453, 5959, 5439, 5061, 4767, 4432, 4259, 4150, 3967, 3742, 3589, 2645, 1604, 956, 0.0 }; G_750 = new double[23] { 12850, 10680, 8910, 7794, 7444, 7249, 7010, 6753, 6553, 6159, 5644, 5287, 4988, 4677, 4591, 4477, 4271, 3926, 3069, 1951, 930, 382, 0.0 }; G_1000 = new double[23] { 14637, 12105, 9835, 7934, 7668, 7280, 7085, 6777, 6547, 6178, 5762, 5420, 5207, 4928, 4690, 4459, 3879, 3581, 2405, 1146, 587, 270, 0.0 }; G_1500 = new double[23] { 17032, 14038, 11355, 9127, 8517, 8118, 7806, 7186, 6517, 6030, 5546, 5170, 4998, 4699, 4281, 3622, 3030, 2756, 755, 656, 256, 139, 0.0 }; G_2000 = new double[23] { 18967, 15630, 12632, 10069, 9300, 8626, 8094, 7373, 6337, 5718, 5192, 4738, 4342, 3782, 3448, 2612, 1739, 938, 499, 279, 115, 82, 0.0 }; G_2500 = new double[23] { 21002, 17244, 13569, 10901, 9793, 8745, 7997, 7221, 6085, 5432, 4993, 4483, 3959, 3547, 2900, 1819, 978, 657, 342, 169, 63, 39, 0.0 }; G_3000 = new double[23] { 22678, 18551, 14553, 11208, 10022, 8672, 7642, 6860, 5771, 5187, 4839, 4355, 3698, 3152, 2289, 1188, 774, 578, 348, 179, 63, 32, 0.0 }; G_3500 = new double[23] { 24225, 19619, 15027, 10936, 9909, 8471, 7428, 6681, 5567, 5023, 4646, 4230, 3567, 2745, 1684, 1107, 859, 717, 458, 268, 92, 39, 0.0 }; G_4000 = new double[23] { 25515, 20591, 15544, 10471, 9773, 8428, 7236, 6508, 5489, 4877, 4475, 3897, 3404, 2484, 1609, 1338, 1175, 1004, 625, 334, 110, 41, 0.0 }; G_4500 = new double[23] { 26660, 21487, 15956, 10512, 9920, 8426, 7206, 6588, 5452, 4690, 4299, 3747, 3179, 2366, 1680, 1410, 1235, 1079, 668, 355, 119, 47, 0.0 }; G_5000 = new double[23] { 27501, 22290, 16371, 11621, 10005, 8768, 7328, 6596, 5395, 4583, 4141, 3624, 3095, 2314, 1740, 1498, 1329, 1142, 717, 382, 131, 54, 0.0 }; G_5500 = new double[23] { 28809, 23183, 17231, 12402, 10644, 8980, 7486, 6632, 5297, 4509, 3993, 3593, 3009, 2318, 1828, 1606, 1429, 1215, 781, 400, 147, 63, 0.0 }; G_6000 = new double[23] { 29772, 24039, 18048, 13154, 11082, 9224, 7628, 6695, 5194, 4444, 3860, 3543, 2963, 2333, 1936, 1719, 1506, 1282, 839, 434, 168, 75, 0.0 }; G_6500 = new double[23] { 30660, 24751, 18858, 13660, 11303, 9721, 7856, 6714, 5329, 4555, 3791, 3514, 2974, 2439, 2068, 1835, 1598, 1364, 917, 479, 194, 89, 0.0 }; G_7000 = new double[23] { 31524, 25478, 19488, 14216, 11986, 10000, 8174, 6762, 5540, 4605, 3787, 3398, 2974, 2535, 2197, 1944, 1696, 1457, 999, 531, 223, 104, 0.0 }; G_7500 = new double[23] { 32450, 26191, 20150, 14817, 12357, 10509, 8486, 6885, 5646, 4685, 3850, 3328, 3008, 2644, 2326, 2034, 1775, 1531, 1067, 574, 239, 112, 0.0 }; G_8000 = new double[23] { 33419, 26895, 20708, 15335, 12944, 10989, 8752, 6939, 5798, 4902, 3882, 3428, 3160, 2801, 2418, 2105, 1838, 1597, 1129, 605, 253, 119, 0.0 }; Matrix<double> p_3000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p=5000 G_0 = new double[23] { 6044, 5513, 4986, 4500, 4239, 3976, 3666, 3277, 2677, 2242, 1808, 1417, 1154, 944, 795, 694, 619, 561, 456, 366, 257, 191, 0.0 }; G_50 = new double[23] { 6547, 6028, 5573, 5138, 4921, 4675, 4407, 4046, 3467, 3055, 2662, 2309, 2065, 1869, 1715, 1595, 1493, 1387, 1330, 1160, 608, 385, 0.0 }; G_100 = new double[23] { 7615, 6922, 6388, 6040, 5888, 5703, 5517, 5192, 4529, 3997, 3709, 3524, 3374, 3240, 3148, 3053, 3000, 2837, 2575, 2202, 1460, 753, 0.0 }; G_300 = new double[23] { 8492, 7453, 6937, 6709, 6623, 6510, 6401, 6207, 5915, 5395, 4980, 4709, 4502, 4302, 3938, 3662, 3502, 3255, 2890, 2511, 1670, 989, 0.0 }; G_500 = new double[23] { 9226, 7886, 7222, 6839, 6746, 6655, 6577, 6460, 6113, 5594, 5196, 4866, 4637, 4339, 4140, 3882, 3686, 3517, 3085, 2490, 1880, 1104, 0.0 }; G_750 = new double[23] { 10677, 9042, 7794, 7085, 6908, 6789, 6666, 6491, 6126, 5749, 5213, 4906, 4675, 4350, 4160, 3851, 3574, 3330, 2760, 2380, 1519, 814, 0.0 }; G_1000 = new double[23] { 12213, 10204, 8466, 7447, 7095, 6989, 6834, 6568, 6028, 5726, 5182, 4796, 4545, 4194, 3883, 3496, 3281, 2974, 2476, 1683, 690, 379, 0.0 }; G_1500 = new double[23] { 14030, 11668, 9617, 8115, 7597, 7296, 7024, 6470, 5710, 5375, 4875, 4438, 4167, 3795, 3357, 2941, 2531, 2290, 914, 592, 393, 200, 0.0 }; G_2000 = new double[23] { 15633, 12936, 10401, 8530, 7889, 7408, 6946, 6107, 5170, 4836, 4340, 3913, 3599, 3257, 2909, 2412, 1979, 1182, 638, 354, 188, 130, 0.0 }; G_2500 = new double[23] { 17335, 14268, 11308, 8887, 7972, 7432, 6712, 5661, 4880, 4445, 4017, 3662, 3295, 2876, 2689, 1915, 955, 651, 447, 195, 99, 51, 0.0 }; G_3000 = new double[23] { 18794, 15433, 12150, 9231, 8180, 7463, 6490, 5427, 4718, 4265, 3857, 3476, 3104, 2578, 2283, 1429, 708, 533, 405, 179, 73, 41, 0.0 }; G_3500 = new double[23] { 19936, 16374, 12894, 9768, 8306, 7477, 6368, 5026, 4484, 3984, 3644, 3312, 2932, 2394, 1781, 1164, 910, 706, 513, 290, 103, 42, 0.0 }; G_4000 = new double[23] { 20949, 17217, 13569, 9991, 8683, 7658, 6295, 4783, 4200, 3584, 3367, 3140, 2745, 2274, 1402, 1188, 1060, 922, 593, 320, 111, 44, 0.0 }; G_4500 = new double[23] { 21962, 18016, 14114, 10137, 9063, 7837, 6323, 4905, 4130, 3522, 3305, 3023, 2672, 2065, 1424, 1245, 1128, 1046, 649, 346, 117, 46, 0.0 }; G_5000 = new double[23] { 22867, 18766, 14525, 10880, 9540, 8183, 6486, 5030, 4103, 3487, 3287, 3017, 2684, 2024, 1455, 1329, 1224, 1112, 695, 362, 124, 51, 0.0 }; G_5500 = new double[23] { 23661, 19456, 15309, 11569, 10048, 8548, 6741, 5245, 4051, 3480, 3299, 3060, 2672, 2047, 1628, 1480, 1351, 1176, 743, 379, 135, 57, 0.0 }; G_6000 = new double[23] { 24391, 20103, 15958, 12239, 10650, 8921, 7328, 5430, 4008, 3507, 3314, 3079, 2696, 2057, 1747, 1598, 1449, 1240, 793, 405, 152, 67, 0.0 }; G_6500 = new double[23] { 25098, 20718, 16511, 12734, 10892, 9511, 7643, 5637, 4183, 3523, 3357, 3128, 2771, 2258, 1947, 1783, 1549, 1314, 855, 437, 172, 78, 0.0 }; G_7000 = new double[23] { 25860, 21312, 16907, 13189, 11608, 9908, 7949, 5781, 4373, 3553, 3386, 3182, 2857, 2430, 2136, 1893, 1639, 1396, 926, 482, 197, 91, 0.0 }; G_7500 = new double[23] { 26597, 21982, 17360, 13563, 11914, 10298, 8281, 6006, 4572, 3786, 3444, 3201, 2944, 2603, 2250, 1988, 1716, 1466, 990, 512, 211, 98, 0.0 }; G_8000 = new double[23] { 27254, 22428, 17865, 13912, 12316, 10851, 8676, 6217, 4805, 4010, 3629, 3362, 3178, 2817, 2409, 2068, 1783, 1533, 1052, 543, 225, 105, 0.0 }; Matrix<double> p_5000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 7000.0 G_0 = new double[23] { 5445, 5059, 4676, 4323, 4139, 3937, 3677, 3322, 2696, 2256, 1848, 1479, 1243, 1036, 891, 778, 692, 621, 525, 389, 267, 209, 0.0 }; G_50 = new double[23] { 5919, 5536, 5191, 4863, 4698, 4520, 4306, 3998, 3399, 2986, 2624, 2264, 2042, 1859, 1712, 1588, 1477, 1366, 1151, 1010, 473, 325, 0.0 }; G_100 = new double[23] { 6912, 6301, 5871, 5584, 5462, 5261, 5095, 4849, 4271, 3776, 3499, 3290, 3142, 3034, 2906, 2850, 2651, 2486, 2123, 1673, 1205, 768, 0.0 }; G_300 = new double[23] { 7445, 6709, 6259, 6020, 5914, 5761, 5662, 5495, 5182, 4752, 4464, 4070, 3764, 3611, 3417, 3250, 3028, 2738, 2286, 1994, 1408, 869, 0.0 }; G_500 = new double[23] { 7842, 6895, 6435, 6188, 5996, 5931, 5818, 5672, 5408, 4922, 4521, 4196, 3989, 3812, 3602, 3459, 3221, 2905, 2482, 1985, 1547, 869, 0.0 }; G_750 = new double[23] { 9129, 7841, 6867, 6263, 6154, 5998, 5895, 5776, 5430, 4987, 4538, 4131, 3918, 3709, 3464, 3327, 3118, 2770, 2312, 1904, 1400, 742, 0.0 }; G_1000 = new double[23] { 10186, 8774, 7390, 6532, 6313, 6276, 6162, 5864, 5366, 4920, 4399, 3935, 3723, 3447, 3112, 2884, 2713, 2432, 2085, 767, 506, 341, 0.0 }; G_1500 = new double[23] { 11920, 10072, 8460, 7262, 6915, 6647, 6308, 5729, 5059, 4561, 4039, 3612, 3279, 2991, 2698, 2490, 2264, 1591, 599, 372, 318, 191, 0.0 }; G_2000 = new double[23] { 13294, 11209, 9172, 7557, 7279, 6769, 6187, 5327, 4570, 4020, 3552, 3174, 2864, 2566, 2353, 1919, 1406, 793, 483, 267, 197, 134, 0.0 }; G_2500 = new double[23] { 14680, 12245, 9774, 7920, 7382, 6765, 5895, 4977, 4178, 3639, 3207, 2867, 2552, 2211, 1941, 1487, 813, 521, 342, 177, 103, 58, 0.0 }; G_3000 = new double[23] { 15871, 13214, 10463, 8259, 7522, 6778, 5785, 4761, 3971, 3366, 3014, 2640, 2333, 2111, 1685, 951, 493, 429, 307, 157, 77, 43, 0.0, }; G_3500 = new double[23] { 16889, 14072, 11223, 8783, 7744, 6972, 5738, 4518, 3739, 3127, 2816, 2482, 2188, 1798, 1357, 851, 631, 531, 388, 224, 96, 44, 0.0 }; G_4000 = new double[23] { 17783, 14824, 11868, 9277, 8077, 7118, 5593, 4226, 3539, 2855, 2616, 2362, 2104, 1710, 1251, 957, 789, 681, 444, 255, 99, 44, 0.0 }; G_4500 = new double[23] { 18619, 15498, 12439, 9619, 8281, 7208, 5381, 4156, 3422, 2650, 2472, 2268, 2057, 1647, 1239, 1006, 867, 779, 487, 266, 102, 45, 0.0 }; G_5000 = new double[23] { 19434, 16132, 12870, 10084, 8686, 7415, 5486, 4350, 3409, 2611, 2486, 2251, 2040, 1619, 1279, 1052, 950, 854, 526, 277, 106, 47, 0.0 }; G_5500 = new double[23] { 20138, 16733, 13579, 10563, 9272, 7844, 6153, 4649, 3405, 2688, 2460, 2325, 2076, 1662, 1397, 1217, 1065, 933, 576, 298, 115, 52, 0.0 }; G_6000 = new double[23] { 20703, 17309, 14047, 11354, 9947, 8657, 6697, 4756, 3417, 2725, 2487, 2353, 2087, 1697, 1476, 1339, 1184, 1018, 637, 327, 131, 60, 0.0 }; G_6500 = new double[23] { 21284, 17855, 14610, 11951, 10355, 9156, 7135, 4905, 3437, 2733, 2525, 2442, 2241, 1938, 1688, 1515, 1303, 1103, 702, 360, 149, 69, 0.0 }; G_7000 = new double[23] { 21889, 18357, 15013, 12260, 10817, 9456, 7309, 4949, 3504, 2872, 2648, 2499, 2348, 2094, 1852, 1615, 1393, 1182, 771, 401, 170, 80, 0.0 }; G_7500 = new double[23] { 22505, 18841, 15385, 12539, 11244, 9779, 7455, 5004, 3629, 3017, 2792, 2596, 2488, 2263, 2039, 1776, 1504, 1264, 838, 433, 182, 86, 0.0 }; G_8000 = new double[23] { 23064, 19305, 15794, 12917, 11519, 10059, 7792, 5163, 3777, 3222, 3120, 3063, 2927, 2605, 2282, 1893, 1592, 1345, 904, 463, 193, 91, 0.0 }; Matrix<double> p_7000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 10000.0 G_0 = new double[23] { 4624, 4375, 4128, 3896, 3774, 3627, 3426, 3122, 2501, 2018, 1664, 1365, 1208, 1041, 910, 809, 734, 677, 582, 404, 244, 205, 0.0 }; G_50 = new double[23] { 5040, 4787, 4542, 4302, 4182, 4042, 3857, 3586, 2977, 2514, 2217, 1984, 1824, 1678, 1583, 1501, 1402, 1250, 1018, 758, 386, 281, 0.0 }; G_100 = new double[23] { 5711, 5424, 5083, 4812, 4696, 4507, 4371, 4158, 3699, 3259, 2970, 2830, 2654, 2505, 2354, 2059, 1840, 1620, 1293, 999, 668, 467, 0.0 }; G_300 = new double[23] { 6240, 5751, 5329, 5036, 4934, 4777, 4690, 4523, 4197, 3777, 3361, 3136, 2994, 2803, 2635, 2398, 2250, 1922, 1707, 1267, 915, 505, 0.0 }; G_500 = new double[23] { 6422, 5774, 5441, 5059, 4945, 4837, 4744, 4583, 4328, 3920, 3461, 3206, 3005, 2804, 2640, 2386, 2147, 1830, 1528, 1203, 806, 431, 0.0 }; G_750 = new double[23] { 7259, 6426, 5740, 5233, 5035, 4842, 4761, 4501, 4263, 3879, 3404, 3093, 2879, 2640, 2443, 2071, 1760, 1455, 1080, 713, 347, 238, 0.0 }; G_1000 = new double[23] { 8156, 7090, 6125, 5478, 5179, 4985, 4762, 4439, 4149, 3793, 3295, 2886, 2595, 2280, 1986, 1783, 1465, 1183, 356, 156, 108, 105, 0.0 }; G_1500 = new double[23] { 9449, 8185, 7053, 6227, 5689, 5217, 4781, 4311, 3892, 3446, 2977, 2526, 2095, 1865, 1547, 1203, 378, 295, 176, 79, 59, 51, 0.0 }; G_2000 = new double[23] { 10490, 8949, 7655, 6479, 5965, 5398, 4762, 4131, 3467, 2960, 2452, 2020, 1708, 1391, 1054, 393, 247, 183, 125, 65, 50, 46, 0.0 }; G_2500 = new double[23] { 11536, 9833, 8292, 6889, 6216, 5619, 4784, 4013, 3282, 2691, 2188, 1776, 1469, 1177, 738, 342, 288, 182, 140, 80, 54, 39, 0.0 }; G_3000 = new double[23] { 12449, 10561, 8790, 7196, 6491, 5789, 4822, 3893, 3116, 2432, 1939, 1580, 1354, 998, 675, 396, 337, 232, 176, 98, 50, 32, 0.0 }; G_3500 = new double[23] { 13181, 11191, 9261, 7712, 6887, 6007, 4842, 3862, 2998, 2277, 1809, 1526, 1314, 1076, 775, 528, 406, 365, 254, 131, 75, 38, 0.0 }; G_4000 = new double[23] { 13882, 11788, 9761, 8080, 7079, 6163, 4875, 3813, 2936, 2079, 1704, 1521, 1251, 1153, 881, 694, 525, 445, 299, 153, 76, 39, 0.0 }; G_4500 = new double[23] { 14555, 12363, 10227, 8450, 7344, 6374, 4885, 3798, 2877, 2027, 1709, 1562, 1331, 1279, 1048, 763, 611, 513, 342, 174, 81, 40, 0.0 }; G_5000 = new double[23] { 15087, 12776, 10637, 8882, 7723, 6804, 4955, 3928, 2889, 2082, 1715, 1608, 1460, 1314, 1073, 832, 683, 575, 395, 200, 87, 42, 0.0 }; G_5500 = new double[23] { 15617, 13257, 11054, 9422, 8279, 7203, 5517, 4119, 2942, 2106, 1824, 1763, 1638, 1478, 1261, 964, 822, 681, 453, 231, 96, 45, 0.0 }; G_6000 = new double[23] { 16191, 13799, 11553, 9797, 8723, 7611, 5821, 4226, 3014, 2189, 1975, 1867, 1723, 1539, 1323, 1109, 963, 816, 526, 267, 111, 52, 0.0 }; G_6500 = new double[23] { 16692, 14162, 11890, 10082, 9097, 7925, 5990, 4326, 3023, 2297, 2073, 2020, 1843, 1697, 1500, 1314, 1098, 923, 595, 305, 129, 60, 0.0 }; G_7000 = new double[23] { 17149, 14598, 12284, 10292, 9215, 8047, 6128, 4397, 3082, 2339, 2209, 2103, 2006, 1850, 1618, 1394, 1179, 1004, 658, 343, 147, 70, 0.0 }; G_7500 = new double[23] { 17628, 15027, 12656, 10529, 9450, 8245, 6145, 4440, 3190, 2370, 2320, 2190, 2170, 2000, 1740, 1491, 1270, 1084, 719, 373, 159, 75, 0.0 }; G_8000 = new double[23] { 18123, 15428, 12988, 10706, 9587, 8466, 6263, 4626, 3587, 3056, 2981, 2800, 2700, 2347, 2006, 1665, 1403, 1174, 781, 402, 170, 80, 0.0 }; Matrix<double> p_10000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 12000.0 G_0 = new double[23] { 4070, 3883, 3698, 3525, 3433, 3322, 3163, 2914, 2391, 1936, 1606, 1334, 1173, 1026, 909, 814, 745, 694, 588, 397, 225, 141, 0.0 }; G_50 = new double[23] { 4436, 4247, 4061, 3869, 3770, 3658, 3506, 3285, 2784, 2367, 2081, 1857, 1694, 1565, 1498, 1357, 1200, 1087, 867, 667, 381, 242, 0.0 }; G_100 = new double[23] { 5023, 4806, 4538, 4290, 4171, 3983, 3844, 3645, 3267, 2878, 2711, 2500, 2257, 2069, 1905, 1622, 1460, 1290, 977, 772, 446, 301, 0.0 }; G_300 = new double[23] { 5366, 5081, 4741, 4434, 4269, 4138, 3950, 3838, 3516, 3199, 2912, 2701, 2467, 2285, 2108, 1940, 1830, 1630, 1250, 840, 500, 316, 0.0 }; G_500 = new double[23] { 5647, 5188, 4869, 4445, 4298, 4131, 3988, 3819, 3555, 3240, 2951, 2724, 2500, 2310, 2160, 1875, 1678, 1474, 1011, 423, 296, 205, 0.0 }; G_750 = new double[23] { 6233, 5596, 5072, 4528, 4310, 4067, 3904, 3659, 3418, 3067, 2773, 2526, 2277, 2039, 1798, 1396, 1180, 989, 312, 251, 211, 131, 0.0 }; G_1000 = new double[23] { 7031, 6267, 5500, 4700, 4430, 4100, 3855, 3447, 3243, 2878, 2516, 2291, 1905, 1640, 1420, 1073, 920, 310, 214, 118, 78, 76, 0.0 }; G_1500 = new double[23] { 8214, 7105, 6221, 5242, 4662, 4271, 3813, 3405, 2952, 2526, 2112, 1723, 1389, 1096, 918, 377, 315, 205, 105, 41, 39, 36, 0.0 }; G_2000 = new double[23] { 8959, 7711, 6598, 5472, 4982, 4417, 3841, 3375, 2830, 2300, 1816, 1410, 1109, 911, 385, 119, 110, 77, 71, 50, 37, 31, 0.0 }; G_2500 = new double[23] { 9851, 8471, 7225, 5977, 5407, 4720, 3900, 3367, 2739, 2119, 1603, 1215, 971, 753, 293, 172, 139, 119, 99, 59, 40, 27, 0.0 }; G_3000 = new double[23] { 10436, 9128, 7655, 6409, 5706, 4923, 3949, 3364, 2690, 1985, 1492, 1101, 889, 689, 354, 300, 245, 195, 154, 81, 45, 26, 0.0 }; G_3500 = new double[23] { 11000, 9572, 7966, 6675, 5958, 5076, 4002, 3360, 2680, 1910, 1409, 1138, 922, 772, 414, 404, 329, 294, 221, 109, 66, 35, 0.0 }; G_4000 = new double[23] { 11291, 9879, 8449, 7028, 6239, 5226, 4061, 3326, 2680, 1904, 1456, 1244, 1077, 923, 693, 586, 454, 361, 251, 131, 70, 36, 0.0 }; G_4500 = new double[23] { 11695, 10442, 8797, 7329, 6398, 5397, 4163, 3353, 2698, 1927, 1529, 1383, 1174, 1097, 862, 685, 539, 418, 294, 154, 75, 38, 0.0 }; G_5000 = new double[23] { 12117, 10856, 9117, 7579, 6726, 5903, 4418, 3478, 2772, 2010, 1637, 1431, 1254, 1154, 921, 726, 573, 465, 341, 183, 82, 40, 0.0 }; G_5500 = new double[23] { 12466, 11071, 9431, 7831, 7005, 6089, 4517, 3728, 2908, 2140, 1867, 1621, 1469, 1345, 1105, 909, 704, 564, 401, 214, 91, 43, 0.0 }; G_6000 = new double[23] { 13176, 11559, 9782, 8050, 7166, 6225, 4603, 3885, 3060, 2229, 1986, 1781, 1627, 1472, 1254, 1065, 868, 721, 483, 252, 105, 49, 0.0 }; G_6500 = new double[23] { 14034, 12051, 10061, 8249, 7390, 6426, 4668, 3941, 3128, 2355, 2150, 1949, 1811, 1623, 1447, 1220, 1023, 852, 558, 290, 122, 57, 0.0 }; G_7000 = new double[23] { 14607, 12508, 10487, 8532, 7609, 6605, 4731, 4011, 3192, 2432, 2217, 2093, 1955, 1730, 1554, 1342, 1126, 945, 622, 326, 140, 66, 0.0 }; G_7500 = new double[23] { 14975, 12908, 10907, 8703, 7863, 6710, 4821, 4080, 3250, 2490, 2284, 2170, 2077, 1921, 1676, 1441, 1227, 1034, 683, 355, 152, 72, 0.0 }; G_8000 = new double[23] { 15432, 13298, 11407, 8898, 8033, 6904, 4932, 4219, 3398, 2827, 2737, 2527, 2420, 2168, 1912, 1606, 1370, 1142, 749, 384, 162, 76, 0.0 }; Matrix<double> p_12000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 14000.0 G_0 = new double[23] { 3505, 3372, 3240, 3113, 3046, 2965, 2846, 2654, 2242, 1848, 1544, 1296, 1129, 992, 884, 799, 736, 691, 585, 384, 202, 113, 0.0 }; G_50 = new double[23] { 3808, 3676, 3552, 3413, 3338, 3250, 3129, 2951, 2557, 2195, 1919, 1710, 1527, 1363, 1230, 1114, 1035, 930, 790, 565, 310, 185, 0.0 }; G_100 = new double[23] { 4244, 4060, 3897, 3721, 3617, 3500, 3371, 3206, 2909, 2586, 2280, 1961, 1791, 1575, 1469, 1262, 1193, 1023, 811, 595, 342, 204, 0.0 }; G_300 = new double[23] { 4479, 4268, 4074, 3858, 3727, 3586, 3448, 3301, 2996, 2701, 2358, 2100, 1970, 1756, 1651, 1481, 1308, 1143, 842, 615, 347, 217, 0.0 }; G_500 = new double[23] { 4680, 4404, 4184, 3876, 3713, 3545, 3401, 3249, 3001, 2641, 2373, 2089, 1825, 1559, 1422, 1273, 1087, 1017, 319, 298, 192, 119, 0.0 }; G_750 = new double[23] { 5155, 4929, 4487, 3917, 3666, 3417, 3241, 3056, 2841, 2505, 2177, 1849, 1591, 1332, 1131, 885, 769, 502, 265, 135, 79, 77, 0.0 }; G_1000 = new double[23] { 6001, 5588, 4980, 4089, 3670, 3378, 3049, 2693, 2399, 2051, 1731, 1466, 1244, 1017, 854, 745, 649, 295, 224, 102, 67, 49, 0.0 }; G_1500 = new double[23] { 6787, 6145, 5185, 4364, 3798, 3406, 3003, 2583, 2218, 1807, 1498, 1200, 971, 765, 555, 196, 180, 138, 119, 53, 43, 34, 0.0 }; G_2000 = new double[23] { 7188, 6465, 5394, 4496, 3995, 3628, 3201, 2686, 2221, 1751, 1444, 1121, 879, 603, 419, 176, 125, 108, 93, 58, 41, 26, 0.0 }; G_2500 = new double[23] { 7630, 6781, 5886, 4902, 4465, 4006, 3295, 2832, 2224, 1773, 1391, 1024, 831, 564, 312, 213, 139, 119, 102, 62, 42, 27, 0.0 }; G_3000 = new double[23] { 7824, 7031, 6139, 5394, 4701, 4236, 3320, 2894, 2333, 1831, 1396, 1082, 865, 604, 318, 275, 237, 201, 146, 80, 47, 31, 0.0 }; G_3500 = new double[23] { 8111, 7338, 6268, 5532, 4884, 4356, 3417, 2963, 2433, 1897, 1444, 1140, 927, 710, 491, 420, 340, 281, 200, 108, 61, 32, 0.0 }; G_4000 = new double[23] { 8329, 7457, 6488, 5706, 5185, 4498, 3518, 2992, 2511, 2029, 1603, 1307, 1103, 854, 722, 590, 467, 365, 245, 125, 65, 33, 0.0 }; G_4500 = new double[23] { 8718, 7543, 6537, 5730, 5344, 4748, 3789, 3092, 2558, 2105, 1709, 1449, 1207, 1005, 835, 676, 558, 421, 287, 148, 70, 34, 0.0 }; G_5000 = new double[23] { 8978, 7649, 6594, 5732, 5451, 4912, 3963, 3214, 2692, 2161, 1745, 1510, 1280, 1062, 916, 746, 599, 465, 329, 174, 76, 36, 0.0 }; G_5500 = new double[23] { 9249, 7760, 6609, 5753, 5505, 4944, 4043, 3419, 3026, 2433, 1989, 1746, 1475, 1298, 1107, 940, 746, 572, 390, 206, 87, 40, 0.0 }; G_6000 = new double[23] { 9831, 8166, 6738, 5864, 5509, 4956, 4110, 3463, 3170, 2575, 2209, 1986, 1686, 1420, 1253, 1082, 893, 709, 468, 242, 101, 47, 0.0 }; G_6500 = new double[23] { 10687, 8715, 6808, 5894, 5553, 4972, 4129, 3544, 3208, 2617, 2326, 2201, 1908, 1609, 1448, 1241, 1034, 834, 539, 280, 118, 55, 0.0 }; G_7000 = new double[23] { 11414, 9448, 7169, 6008, 5694, 4993, 4140, 3605, 3202, 2682, 2339, 2261, 2018, 1745, 1556, 1343, 1129, 924, 603, 317, 136, 64, 0.0 }; G_7500 = new double[23] { 12199, 10064, 7714, 6137, 5700, 5016, 4159, 3729, 3240, 2689, 2350, 2270, 2120, 1836, 1638, 1433, 1216, 1013, 666, 347, 148, 70, 0.0 }; G_8000 = new double[23] { 12874, 10581, 8108, 6231, 5878, 5214, 4370, 3809, 3276, 2806, 2508, 2342, 2217, 2033, 1803, 1565, 1338, 1116, 733, 376, 159, 75, 0.0 }; Matrix<double> p_14000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 16000.0 G_0 = new double[23] { 2869, 2780, 2691, 2603, 2556, 2500, 2417, 2276, 1978, 1667, 1411, 1199, 1036, 903, 820, 739, 668, 640, 535, 317, 165, 92, 0.0 }; G_50 = new double[23] { 3101, 3014, 2934, 2837, 2785, 2723, 2645, 2508, 2242, 1962, 1719, 1460, 1271, 1132, 982, 882, 821, 750, 569, 391, 219, 145, 0.0 }; G_100 = new double[23] { 3434, 3308, 3154, 3001, 2897, 2804, 2716, 2551, 2331, 2102, 1818, 1590, 1419, 1254, 1153, 1024, 951, 846, 617, 418, 244, 166, 0.0 }; G_300 = new double[23] { 3612, 3465, 3314, 3127, 2988, 2833, 2733, 2585, 2414, 2206, 1909, 1718, 1562, 1451, 1257, 1129, 1019, 859, 618, 463, 259, 164, 0.0 }; G_500 = new double[23] { 3761, 3553, 3386, 3152, 2997, 2819, 2693, 2534, 2417, 2180, 1909, 1595, 1406, 1261, 1052, 926, 793, 598, 392, 286, 127, 90, 0.0 }; G_750 = new double[23] { 4113, 3800, 3588, 3251, 3055, 2798, 2610, 2387, 2251, 1985, 1703, 1280, 1113, 978, 780, 694, 578, 432, 229, 150, 89, 69, 0.0 }; G_1000 = new double[23] { 4785, 4471, 4003, 3460, 3102, 2756, 2504, 2201, 1918, 1634, 1353, 1039, 952, 814, 665, 530, 455, 325, 192, 90, 59, 45, 0.0 }; G_1500 = new double[23] { 5406, 4726, 4165, 3659, 3280, 2939, 2419, 2111, 1888, 1505, 1226, 1005, 879, 671, 522, 364, 231, 168, 134, 67, 46, 33, 0.0 }; G_2000 = new double[23] { 5808, 5019, 4352, 3777, 3449, 3071, 2740, 2250, 1921, 1623, 1328, 1118, 918, 715, 502, 244, 203, 172, 127, 84, 51, 28, 0.0 }; G_2500 = new double[23] { 6312, 5514, 4978, 4407, 3973, 3504, 2954, 2494, 2086, 1747, 1450, 1213, 1004, 795, 531, 347, 265, 211, 153, 93, 52, 28, 0.0 }; G_3000 = new double[23] { 6858, 5972, 5429, 4894, 4332, 3748, 3146, 2611, 2209, 1857, 1533, 1269, 1101, 817, 655, 481, 380, 300, 216, 113, 57, 29, 0.0 }; G_3500 = new double[23] { 7286, 6326, 5695, 5018, 4511, 3907, 3255, 2653, 2311, 1956, 1614, 1345, 1170, 831, 717, 541, 435, 353, 248, 123, 59, 29, 0.0 }; G_4000 = new double[23] { 7568, 6686, 5875, 5296, 4700, 4136, 3392, 2756, 2428, 2157, 1828, 1560, 1325, 1030, 886, 710, 607, 453, 297, 138, 62, 30, 0.0 }; G_4500 = new double[23] { 8015, 6902, 6071, 5483, 4889, 4352, 3511, 2876, 2569, 2225, 1960, 1684, 1465, 1164, 988, 808, 674, 525, 335, 155, 66, 31, 0.0 }; G_5000 = new double[23] { 8249, 7179, 6183, 5529, 5058, 4562, 3707, 3017, 2698, 2293, 2024, 1777, 1574, 1220, 1041, 890, 731, 567, 377, 182, 72, 33, 0.0 }; G_5500 = new double[23] { 8569, 7489, 6212, 5601, 5064, 4609, 3752, 3226, 2913, 2638, 2244, 2036, 1731, 1424, 1265, 1067, 870, 666, 427, 207, 84, 39, 0.0 }; G_6000 = new double[23] { 9059, 7714, 6377, 5610, 5103, 4624, 3812, 3382, 3073, 2798, 2412, 2191, 1900, 1600, 1392, 1180, 981, 764, 491, 246, 99, 46, 0.0 }; G_6500 = new double[23] { 9480, 8189, 6573, 5714, 5255, 4650, 3828, 3484, 3126, 2883, 2531, 2275, 2016, 1716, 1524, 1290, 1086, 854, 549, 278, 116, 54, 0.0 }; G_7000 = new double[23] { 9832, 8567, 6874, 5878, 5336, 4677, 3850, 3511, 3183, 2888, 2549, 2298, 2068, 1801, 1573, 1376, 1167, 933, 607, 314, 135, 63, 0.0 }; G_7500 = new double[23] { 10170, 8880, 7084, 5947, 5402, 4698, 3872, 3520, 3190, 2890, 2571, 2325, 2104, 1848, 1618, 1440, 1229, 1012, 662, 344, 147, 69, 0.0 }; G_8000 = new double[23] { 10566, 9241, 7422, 6073, 5475, 4741, 3960, 3663, 3204, 2928, 2610, 2356, 2160, 1938, 1739, 1538, 1321, 1098, 722, 373, 158, 74, 0.0 }; Matrix<double> p_16000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 18000.0 G_0 = new double[23] { 2198, 2136, 2076, 1999, 1970, 1955, 1900, 1809, 1617, 1402, 1218, 1063, 936, 822, 732, 660, 599, 569, 434, 260, 138, 84, 0.0 }; G_50 = new double[23] { 2377, 2295, 2209, 2043, 2002, 1960, 1886, 1782, 1647, 1408, 1260, 1138, 1042, 922, 824, 744, 684, 620, 474, 310, 177, 117, 0.0 }; G_100 = new double[23] { 2416, 2316, 2220, 2084, 2003, 1944, 1847, 1733, 1653, 1405, 1278, 1157, 1065, 958, 886, 784, 744, 648, 521, 331, 185, 132, 0.0 }; G_300 = new double[23] { 2566, 2353, 2230, 2083, 1952, 1895, 1783, 1646, 1558, 1407, 1285, 1149, 1076, 1009, 933, 821, 775, 661, 527, 322, 175, 119, 0.0 }; G_500 = new double[23] { 2609, 2392, 2232, 1998, 1899, 1775, 1655, 1447, 1350, 1196, 1113, 1025, 938, 826, 732, 648, 579, 454, 297, 214, 142, 66, 0.0 }; G_750 = new double[23] { 2878, 2510, 2247, 1993, 1892, 1754, 1607, 1429, 1277, 1153, 1052, 903, 794, 680, 578, 516, 450, 334, 169, 144, 90, 49, 0.0 }; G_1000 = new double[23] { 3081, 2635, 2312, 1971, 1877, 1728, 1574, 1448, 1279, 1145, 1018, 870, 749, 670, 550, 426, 394, 260, 137, 80, 56, 36, 0.0 }; G_1500 = new double[23] { 3760, 3260, 2858, 2479, 2206, 2032, 1847, 1599, 1404, 1231, 1102, 903, 794, 681, 524, 379, 274, 215, 151, 90, 53, 29, 0.0 }; G_2000 = new double[23] { 4277, 3648, 3255, 2811, 2566, 2287, 2119, 1844, 1640, 1469, 1351, 1222, 1093, 956, 757, 420, 307, 267, 162, 98, 51, 25, 0.0 }; G_2500 = new double[23] { 4845, 4453, 4036, 3480, 3095, 2681, 2407, 2016, 1838, 1623, 1470, 1319, 1149, 1025, 832, 523, 406, 338, 226, 119, 52, 25, 0.0 }; G_3000 = new double[23] { 5472, 4760, 4329, 3736, 3279, 2831, 2533, 2167, 1945, 1728, 1516, 1352, 1216, 1094, 876, 629, 493, 426, 287, 137, 55, 25, 0.0 }; G_3500 = new double[23] { 5983, 5028, 4457, 3802, 3381, 2894, 2615, 2280, 2042, 1825, 1550, 1453, 1243, 1123, 899, 743, 571, 500, 384, 166, 59, 26, 0.0 }; G_4000 = new double[23] { 6459, 5438, 4798, 4007, 3533, 3059, 2685, 2383, 2241, 2004, 1738, 1639, 1446, 1216, 1029, 876, 710, 621, 453, 183, 61, 27, 0.0 }; G_4500 = new double[23] { 6562, 5560, 4925, 4189, 3748, 3266, 2801, 2496, 2325, 2136, 1926, 1736, 1565, 1316, 1102, 957, 751, 676, 482, 195, 64, 28, 0.0 }; G_5000 = new double[23] { 6719, 5688, 5048, 4297, 3973, 3492, 2895, 2606, 2414, 2245, 2083, 1796, 1648, 1388, 1186, 1009, 795, 720, 489, 213, 72, 31, 0.0 }; G_5500 = new double[23] { 6820, 5875, 5205, 4521, 4157, 3696, 3053, 2937, 2717, 2510, 2265, 2077, 1861, 1603, 1360, 1192, 966, 770, 539, 237, 84, 37, 0.0 }; G_6000 = new double[23] { 7067, 6118, 5412, 4662, 4293, 3757, 3123, 3002, 2856, 2696, 2421, 2216, 1969, 1727, 1465, 1300, 1063, 861, 585, 266, 99, 44, 0.0 }; G_6500 = new double[23] { 7342, 6385, 5570, 4764, 4337, 3813, 3140, 3018, 2907, 2781, 2531, 2305, 2073, 1825, 1560, 1376, 1158, 912, 611, 292, 116, 53, 0.0 }; G_7000 = new double[23] { 7625, 6606, 5716, 4835, 4412, 3893, 3166, 3061, 2921, 2794, 2536, 2308, 2080, 1840, 1594, 1415, 1208, 968, 640, 320, 133, 62, 0.0 }; G_7500 = new double[23] { 7930, 6835, 5901, 4941, 4486, 3929, 3216, 3070, 2954, 2636, 2471, 2326, 2095, 1875, 1609, 1443, 1248, 1022, 670, 342, 143, 67, 0.0 }; G_8000 = new double[23] { 8158, 7075, 6071, 5107, 4545, 4009, 3308, 3110, 2958, 2771, 2602, 2356, 2130, 1923, 1698, 1501, 1304, 1084, 711, 364, 152, 71, 0.0 }; Matrix<double> p_18000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 20000.0 G_0 = new double[23] { 1654, 1497, 1378, 1240, 1185, 1179, 1141, 1092, 992, 947, 900, 872, 787, 719, 646, 568, 493, 438, 347, 213, 94, 55, 0.0 }; G_50 = new double[23] { 1692, 1489, 1356, 1213, 1172, 1163, 1123, 1077, 1004, 950, 898, 848, 780, 715, 659, 575, 528, 451, 345, 230, 118, 73, 0.0 }; G_100 = new double[23] { 1706, 1438, 1300, 1188, 1163, 1141, 1114, 1072, 1028, 974, 914, 840, 784, 709, 656, 595, 540, 470, 343, 234, 137, 75, 0.0 }; G_300 = new double[23] { 1739, 1427, 1208, 1130, 1110, 1080, 1070, 1020, 990, 945, 900, 830, 780, 700, 640, 600, 542, 468, 288, 224, 131, 72, 0.0 }; G_500 = new double[23] { 1744, 1338, 1183, 1030, 975, 940, 903, 879, 835, 797, 761, 729, 680, 624, 545, 488, 438, 388, 204, 153, 90, 53, 0.0 }; G_750 = new double[23] { 1796, 1502, 1237, 1106, 1029, 968, 914, 810, 766, 730, 695, 637, 585, 550, 502, 444, 342, 292, 170, 109, 75, 41, 0.0 }; G_1000 = new double[23] { 1882, 1636, 1409, 1200, 1133, 1086, 1026, 965, 876, 817, 761, 650, 607, 561, 508, 419, 293, 246, 126, 74, 49, 27, 0.0 }; G_1500 = new double[23] { 2459, 2183, 1889, 1665, 1549, 1428, 1318, 1166, 1045, 982, 905, 835, 763, 700, 620, 439, 286, 224, 130, 75, 42, 22, 0.0 }; G_2000 = new double[23] { 3017, 2693, 2372, 2088, 1927, 1729, 1584, 1395, 1284, 1221, 1133, 1046, 977, 872, 812, 611, 423, 268, 152, 89, 44, 21, 0.0 }; G_2500 = new double[23] { 3580, 3154, 2849, 2542, 2239, 1971, 1775, 1612, 1465, 1360, 1230, 1154, 1105, 971, 853, 688, 473, 377, 228, 117, 46, 21, 0.0 }; G_3000 = new double[23] { 3946, 3437, 3038, 2636, 2359, 2051, 1906, 1702, 1562, 1423, 1270, 1202, 1157, 1033, 915, 703, 569, 450, 290, 134, 50, 21, 0.0 }; G_3500 = new double[23] { 4162, 3558, 3067, 2640, 2400, 2139, 2011, 1828, 1658, 1510, 1380, 1264, 1190, 1069, 961, 791, 617, 536, 367, 159, 54, 22, 0.0 }; G_4000 = new double[23] { 4261, 3767, 3268, 2802, 2543, 2280, 2138, 1992, 1875, 1702, 1585, 1465, 1341, 1244, 1086, 920, 741, 649, 439, 178, 57, 23, 0.0 }; G_4500 = new double[23] { 4358, 3923, 3486, 2992, 2700, 2470, 2247, 2101, 1915, 1788, 1674, 1539, 1441, 1344, 1129, 992, 819, 690, 457, 189, 61, 24, 0.0 }; G_5000 = new double[23] { 4517, 4139, 3648, 3114, 2874, 2595, 2381, 2211, 1995, 1818, 1716, 1631, 1517, 1390, 1167, 1081, 829, 739, 476, 208, 68, 28, 0.0 }; G_5500 = new double[23] { 4718, 4385, 3876, 3323, 3012, 2758, 2579, 2409, 2214, 2051, 1957, 1834, 1687, 1561, 1328, 1215, 987, 799, 521, 230, 79, 33, 0.0 }; G_6000 = new double[23] { 4922, 4545, 3983, 3420, 3175, 2922, 2691, 2519, 2353, 2183, 2082, 1969, 1796, 1639, 1413, 1311, 1080, 884, 576, 259, 94, 40, 0.0 }; G_6500 = new double[23] { 5124, 4667, 4071, 3515, 3249, 3017, 2812, 2638, 2469, 2247, 2159, 2024, 1893, 1721, 1514, 1362, 1155, 939, 607, 280, 109, 47, 0.0 }; G_7000 = new double[23] { 5323, 4730, 4120, 3536, 3303, 3069, 2878, 2731, 2531, 2333, 2205, 2098, 1934, 1757, 1553, 1404, 1201, 986, 639, 302, 123, 52, 0.0 }; G_7500 = new double[23] { 5538, 4808, 4165, 3580, 3336, 3093, 2892, 2771, 2599, 2396, 2282, 2128, 1964, 1774, 1588, 1436, 1244, 1028, 679, 322, 128, 56, 0.0 }; G_8000 = new double[23] { 5768, 4925, 4220, 3625, 3375, 3155, 2951, 2843, 2697, 2484, 2345, 2177, 2017, 1850, 1667, 1484, 1289, 1074, 699, 330, 130, 57, 0.0 }; Matrix<double> p_20000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 21000.0 G_0 = new double[23] { 1584, 1462, 1324, 1222, 1184, 1147, 1084, 1008, 939, 904, 821, 733, 644, 570, 501, 440, 415, 366, 309, 194, 84, 45, 0.0 }; G_50 = new double[23] { 1587, 1456, 1301, 1194, 1164, 1119, 1062, 999, 938, 900, 823, 736, 685, 650, 578, 501, 457, 411, 303, 197, 99, 53, 0.0 }; G_100 = new double[23] { 1589, 1439, 1270, 1177, 1124, 1111, 1060, 992, 948, 894, 826, 739, 697, 668, 599, 527, 469, 417, 300, 198, 102, 55, 0.0 }; G_300 = new double[23] { 1601, 1314, 1133, 1114, 1102, 1069, 1037, 959, 925, 857, 801, 730, 700, 669, 600, 510, 473, 399, 278, 169, 97, 56, 0.0 }; G_500 = new double[23] { 1617, 1307, 990, 981, 959, 925, 878, 828, 789, 727, 661, 608, 587, 556, 524, 459, 400, 327, 180, 142, 70, 50, 0.0 }; G_750 = new double[23] { 1643, 1411, 1153, 1045, 1007, 949, 900, 799, 712, 652, 616, 553, 530, 515, 479, 418, 324, 236, 115, 97, 57, 33, 0.0, }; G_1000 = new double[23] { 1787, 1566, 1328, 1211, 1130, 1045, 992, 908, 807, 765, 708, 628, 583, 533, 470, 375, 280, 209, 111, 69, 42, 21, 0.0 }; G_1500 = new double[23] { 2261, 1991, 1764, 1570, 1422, 1344, 1228, 1115, 998, 943, 894, 800, 758, 675, 545, 404, 251, 209, 117, 71, 36, 17, 0.0 }; G_2000 = new double[23] { 2689, 2248, 1983, 1711, 1594, 1490, 1395, 1327, 1225, 1193, 1101, 971, 874, 812, 741, 526, 343, 230, 150, 88, 35, 15, 0.0 }; G_2500 = new double[23] { 2997, 2554, 2223, 1903, 1733, 1609, 1519, 1426, 1314, 1260, 1183, 1109, 988, 900, 816, 623, 445, 349, 214, 102, 36, 15, 0.0 }; G_3000 = new double[23] { 3238, 2847, 2465, 2068, 1880, 1706, 1644, 1547, 1457, 1302, 1193, 1170, 1053, 958, 884, 681, 535, 425, 286, 119, 39, 15, 0.0 }; G_3500 = new double[23] { 3393, 2953, 2590, 2193, 2012, 1859, 1772, 1672, 1543, 1397, 1284, 1215, 1130, 993, 933, 773, 601, 516, 343, 138, 42, 16, 0.0 }; G_4000 = new double[23] { 3482, 3160, 2776, 2356, 2159, 2004, 1924, 1794, 1654, 1541, 1428, 1347, 1256, 1155, 1027, 891, 726, 627, 389, 155, 45, 17, 0.0 }; G_4500 = new double[23] { 3532, 3270, 2896, 2517, 2289, 2142, 2028, 1906, 1752, 1624, 1544, 1500, 1348, 1274, 1100, 973, 809, 674, 421, 167, 49, 18, 0.0 }; G_5000 = new double[23] { 3660, 3436, 3101, 2646, 2456, 2256, 2172, 2016, 1834, 1742, 1660, 1596, 1457, 1350, 1160, 1063, 818, 711, 451, 181, 54, 21, 0.0 }; G_5500 = new double[23] { 3803, 3603, 3229, 2831, 2608, 2447, 2288, 2165, 1973, 1880, 1808, 1726, 1603, 1482, 1300, 1184, 939, 793, 492, 199, 61, 24, 0.0 }; G_6000 = new double[23] { 3955, 3698, 3320, 2917, 2733, 2544, 2379, 2256, 2073, 1965, 1884, 1823, 1695, 1572, 1379, 1277, 1038, 867, 544, 221, 70, 28, 0.0 }; G_6500 = new double[23] { 4116, 3784, 3378, 2975, 2801, 2599, 2485, 2355, 2203, 2056, 1990, 1903, 1780, 1652, 1478, 1334, 1100, 924, 579, 239, 78, 32, 0.0 }; G_7000 = new double[23] { 4275, 3839, 3393, 2985, 2850, 2658, 2529, 2447, 2294, 2117, 2050, 1971, 1835, 1693, 1523, 1373, 1163, 969, 601, 254, 85, 35, 0.0 }; G_7500 = new double[23] { 4471, 3887, 3394, 3000, 2880, 2700, 2589, 2496, 2361, 2216, 2129, 2033, 1872, 1737, 1566, 1403, 1214, 1003, 640, 272, 91, 39, 0.0 }; G_8000 = new double[23] { 4689, 3970, 3405, 3030, 2900, 2740, 2598, 2498, 2410, 2287, 2170, 2067, 1902, 1790, 1622, 1439, 1260, 1026, 667, 290, 96, 42, 0.0 }; Matrix<double> p_21000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); #endregion var data = new List<Matrix<double>> { p_100, p_300, p_500, p_1000, p_2000, p_3000, p_5000, p_7000, p_10000, p_12000, p_14000, p_16000, p_18000, p_20000, p_21000 }; //i=P j=g k=x; for (int i = 0; i < 15; i++) { var matrix = data[i]; for (int j = 0; j < 21; j++) { for (int k = 0; k < 23; k++) { QLUT[i, j, k] = matrix[j, k]; } } } } public CHF() { } /// <summary> /// LookUpTable临界热流密度关系式:BASED ON CONSTANT LOCAL CONDITIONS(II.E., CONSTANT CRITICAL QUALITY) /// </summary> /// <param name="PP">SYSTEM PRESSURE UNIT:Mpa</param> /// <param name="GMASS">SYSTEM FLOW RATE UNIT: kg / (m^2.s)</param> /// <param name="XX">QUALITY</param> /// <param name="DE">HYDRAULIC DIAMETER UNIT: m</param> /// <returns>临界热流密度CRITICAL HEAT FLUX UNIT: W / m^2</returns> public static double LookUpTable_Formula( double PP, double GMASS, double XX, double DE = 0.008 ) { #region Look-up-table-2006 data ///p = 100.0 ///G=0~8000 double[] G_0 = new double[23] { 8111, 7252, 6302, 4802, 4086, 3057, 1990, 1142, 637, 415, 284, 223, 188, 165, 152, 142, 133, 123, 114, 110, 96, 55, 0.0 }; double[] G_50 = new double[23] { 8317, 7271, 6326, 5035, 4236, 3453, 2420, 1570, 1011, 784, 641, 587, 553, 531, 475, 443, 419, 387, 347, 277, 239, 204, 0.0 }; double[] G_100 = new double[23] { 8390, 7295, 6371, 5322, 4586, 3640, 2942, 2103, 1558, 1275, 1013, 885, 847, 811, 789, 758, 745, 715, 700, 600, 459, 359, 0.0 }; double[] G_300 = new double[23] { 10698, 9288, 7795, 6020, 5009, 3865, 3196, 2479, 1961, 1707, 1317, 1177, 1172, 1159, 1150, 1100, 1085, 1041, 1031, 675, 517, 366, 0.0 }; double[] G_500 = new double[23] { 12882, 10946, 9224, 6791, 5348, 3938, 3369, 2685, 2087, 1808, 1412, 1347, 1311, 1303, 1282, 1260, 1212, 1193, 1071, 605, 450, 295, 0.0 }; double[] G_750 = new double[23] { 16982, 14405, 11641, 7496, 5662, 4234, 3471, 2780, 2229, 1970, 1649, 1606, 1591, 1563, 1510, 1495, 1400, 1280, 595, 415, 243, 206, 0.0 }; double[] G_1000 = new double[23] { 19441, 16278, 13255, 8232, 5971, 4495, 3533, 3012, 2653, 2349, 2070, 2000, 1980, 1930, 1715, 1550, 1359, 1165, 503, 322, 172, 105, 0.0 }; double[] G_1500 = new double[23] { 22781, 19225, 15465, 9100, 6603, 5358, 3741, 3524, 3166, 2917, 2635, 2572, 2467, 2378, 1908, 1350, 1005, 815, 302, 210, 126, 51, 0.0 }; double[] G_2000 = new double[23] { 25268, 21321, 17143, 9141, 7059, 6036, 4074, 3855, 3556, 3402, 3167, 2986, 2720, 2549, 1696, 1105, 805, 595, 247, 105, 87, 39, 0.0 }; double[] G_2500 = new double[23] { 28026, 23599, 18346, 9503, 7506, 6516, 4502, 4047, 3852, 3599, 3228, 3019, 2676, 2458, 1148, 956, 708, 485, 290, 120, 46, 22, 0.0 }; double[] G_3000 = new double[23] { 30294, 25465, 19383, 9779, 8063, 7088, 4826, 4182, 3976, 3389, 2968, 2706, 2369, 1829, 940, 846, 665, 532, 302, 159, 55, 20, 0.0 }; double[] G_3500 = new double[23] { 32227, 27043, 21068, 10156, 8518, 7302, 5113, 4384, 4106, 3196, 2769, 2557, 2311, 1729, 1158, 891, 817, 670, 402, 210, 75, 28, 0.0 }; double[] G_4000 = new double[23] { 33928, 28471, 22722, 10512, 8728, 7528, 5582, 4709, 4228, 3119, 2736, 2504, 2282, 1850, 1470, 1160, 1030, 823, 475, 248, 96, 38, 0.0 }; double[] G_4500 = new double[23] { 35406, 29774, 23890, 10945, 9088, 8067, 6267, 5013, 4272, 3287, 2769, 2541, 2304, 1972, 1718, 1405, 1185, 969, 585, 289, 129, 61, 0.0 }; double[] G_5000 = new double[23] { 36808, 30988, 24979, 11185, 9592, 8576, 6748, 5113, 4342, 3410, 2890, 2629, 2355, 2066, 1779, 1498, 1247, 1030, 647, 347, 167, 81, 0.0 }; double[] G_5500 = new double[23] { 38232, 32141, 25791, 11929, 10084, 8940, 6867, 5175, 4389, 3465, 2954, 2680, 2406, 2128, 1848, 1595, 1334, 1118, 729, 409, 206, 101, 0.0 }; double[] G_6000 = new double[23] { 39525, 33222, 26637, 13026, 10396, 9347, 6919, 5241, 4423, 3580, 2921, 2681, 2447, 2170, 1908, 1651, 1418, 1204, 807, 468, 244, 121, 0.0 }; double[] G_6500 = new double[23] { 40727, 34244, 27480, 14371, 10748, 9701, 6995, 5295, 4491, 3620, 2918, 2694, 2477, 2209, 1965, 1719, 1493, 1281, 878, 523, 282, 142, 0.0 }; double[] G_7000 = new double[23] { 41950, 35224, 28165, 15045, 11091, 10522, 7062, 5370, 4513, 3668, 2958, 2724, 2501, 2247, 2013, 1780, 1559, 1349, 943, 576, 319, 162, 0.0 }; double[] G_7500 = new double[23] { 43448, 36075, 28604, 15822, 11538, 10726, 7087, 5381, 4585, 3699, 2996, 2751, 2526, 2285, 2060, 1838, 1622, 1414, 1000, 615, 347, 180, 0.0 }; double[] G_8000 = new double[23] { 44338, 36803, 29089, 16599, 12085, 10900, 7313, 5392, 4689, 3780, 3031, 2778, 2553, 2320, 2103, 1890, 1679, 1473, 1054, 651, 371, 196, 0.0 }; Matrix<double> p_100 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 300.0 G_0 = new double[23] { 8027, 7043, 6206, 4761, 4106, 3131, 2483, 1374, 883, 606, 420, 313, 248, 205, 180, 165, 148, 141, 135, 131, 125, 67, 0.0 }; G_50 = new double[23] { 8153, 7058, 6287, 5304, 4564, 3729, 2847, 2071, 1587, 1315, 1052, 871, 709, 599, 516, 499, 457, 389, 372, 362, 274, 207, 0.0 }; G_100 = new double[23] { 8418, 7315, 6499, 5509, 4883, 4013, 3238, 2638, 2150, 1869, 1528, 1373, 1262, 1183, 1127, 1065, 1057, 1033, 902, 691, 502, 394, 0.0 }; G_300 = new double[23] { 10397, 9094, 7805, 6085, 5320, 4107, 3429, 3011, 2617, 2263, 1862, 1657, 1614, 1576, 1513, 1480, 1446, 1403, 1193, 722, 572, 419, 0.0 }; G_500 = new double[23] { 12787, 10894, 9193, 6962, 5664, 4134, 3563, 3285, 2821, 2405, 2001, 1832, 1688, 1663, 1610, 1610, 1520, 1504, 1112, 616, 452, 297, 0.0 }; G_750 = new double[23] { 16084, 13658, 11132, 7493, 5853, 4282, 3743, 3512, 2987, 2538, 2062, 1868, 1698, 1676, 1636, 1598, 1447, 1300, 656, 440, 253, 207, 0.0 }; G_1000 = new double[23] { 17866, 15378, 12753, 8194, 6038, 4572, 3898, 3610, 3224, 2791, 2450, 2230, 2070, 1990, 1805, 1570, 1369, 1173, 523, 334, 184, 112, 0.0 }; G_1500 = new double[23] { 21559, 18208, 14718, 9252, 7091, 6091, 4818, 4243, 3557, 3134, 2981, 2720, 2658, 2491, 2042, 1365, 1016, 813, 308, 210, 130, 57, 0.0 }; G_2000 = new double[23] { 23993, 20257, 16367, 10134, 8179, 6790, 5171, 4462, 3759, 3490, 3410, 3232, 2894, 2672, 1803, 1108, 822, 599, 254, 118, 88, 41, 0.0 }; G_2500 = new double[23] { 26215, 22280, 18013, 10477, 8534, 7134, 5245, 4519, 3951, 3681, 3444, 3248, 2846, 2521, 1168, 981, 732, 488, 292, 132, 47, 23, 0.0 }; G_3000 = new double[23] { 27747, 23975, 19028, 10840, 8691, 7393, 5326, 4551, 4081, 3502, 3082, 2977, 2523, 1868, 945, 852, 681, 534, 304, 161, 56, 21, 0.0 }; G_3500 = new double[23] { 29254, 25440, 20427, 10948, 8793, 7585, 5600, 4681, 4195, 3283, 2967, 2695, 2389, 1788, 1170, 895, 820, 675, 410, 226, 76, 29, 0.0 }; G_4000 = new double[23] { 30763, 26771, 21520, 11006, 8997, 8017, 6253, 5184, 4271, 3344, 2951, 2648, 2383, 1960, 1500, 1170, 1050, 850, 499, 264, 97, 39, 0.0 }; G_4500 = new double[23] { 32150, 27994, 22599, 11137, 9388, 8517, 6725, 5594, 4329, 3504, 2981, 2677, 2408, 2094, 1746, 1423, 1228, 998, 600, 304, 126, 59, 0.0 }; G_5000 = new double[23] { 33465, 29133, 23700, 11600, 9705, 8845, 7103, 6052, 4369, 3655, 3048, 2739, 2449, 2139, 1843, 1542, 1289, 1061, 665, 358, 165, 80, 0.0 }; G_5500 = new double[23] { 34919, 30223, 24325, 12512, 10147, 9115, 7281, 6122, 4427, 3720, 3070, 2776, 2501, 2200, 1881, 1636, 1377, 1153, 748, 418, 206, 100, 0.0 }; G_6000 = new double[23] { 36122, 31241, 25169, 13522, 10870, 9576, 7398, 6323, 4481, 3685, 3104, 2773, 2543, 2247, 1942, 1708, 1462, 1241, 828, 476, 244, 121, 0.0 }; G_6500 = new double[23] { 37231, 32198, 25960, 14708, 11330, 10024, 7446, 6440, 4571, 3705, 3123, 2783, 2578, 2288, 2004, 1783, 1543, 1320, 902, 532, 268, 142, 0.0 }; G_7000 = new double[23] { 38099, 33093, 26558, 15513, 11759, 10532, 7599, 6469, 4650, 3772, 3155, 2812, 2605, 2327, 2037, 1844, 1611, 1391, 970, 586, 303, 150, 0.0 }; G_7500 = new double[23] { 38989, 34027, 27283, 16123, 12062, 10765, 7689, 6500, 4702, 3784, 3221, 2839, 2625, 2361, 2095, 1898, 1673, 1456, 1029, 627, 331, 166, 0.0 }; G_8000 = new double[23] { 39744, 34510, 27900, 16757, 12891, 11128, 7784, 6544, 4760, 3892, 3228, 2867, 2649, 2395, 2126, 1946, 1728, 1514, 1083, 664, 356, 181, 0.0 }; Matrix<double> p_300 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 500.0 G_0 = new double[23] { 7743, 6834, 5910, 4720, 4136, 3342, 2518, 1607, 1129, 798, 557, 404, 308, 245, 209, 188, 163, 159, 157, 156, 137, 105, 0.0 }; G_50 = new double[23] { 7983, 7004, 6274, 5355, 4711, 3853, 2989, 2170, 1731, 1344, 1119, 958, 852, 775, 684, 556, 495, 465, 407, 395, 282, 235, 0.0 }; G_100 = new double[23] { 8478, 7421, 6632, 5627, 5080, 4057, 3317, 2754, 2270, 1988, 1704, 1399, 1316, 1229, 1188, 1122, 1116, 1109, 940, 711, 523, 417, 0.0 }; G_300 = new double[23] { 10280, 8983, 7804, 6235, 5491, 4193, 3498, 3165, 2835, 2537, 2243, 2028, 1826, 1647, 1611, 1545, 1503, 1464, 1255, 749, 592, 449, 0.0 }; G_500 = new double[23] { 12694, 10885, 9073, 7008, 5780, 4281, 3671, 3339, 3157, 2811, 2462, 2253, 1933, 1711, 1651, 1630, 1534, 1506, 1177, 676, 476, 300, 0.0 }; G_750 = new double[23] { 15186, 12992, 10624, 7610, 5957, 4356, 3855, 3630, 3442, 2994, 2680, 2379, 1982, 1740, 1699, 1615, 1469, 1307, 684, 503, 274, 209, 0.0 }; G_1000 = new double[23] { 17460, 14778, 12051, 8057, 6145, 4629, 4062, 3870, 3684, 3304, 3109, 2885, 2613, 2251, 1927, 1599, 1399, 1179, 540, 362, 186, 119, 0.0 }; G_1500 = new double[23] { 20438, 17191, 13972, 9365, 7340, 6298, 5248, 4711, 4048, 3594, 3491, 3278, 3149, 2774, 2123, 1382, 1056, 833, 310, 215, 134, 65, 0.0 }; G_2000 = new double[23] { 22719, 19293, 15591, 10327, 8310, 7309, 5675, 5017, 4215, 3772, 3693, 3578, 3169, 2795, 1850, 1115, 832, 603, 260, 132, 89, 43, 0.0 }; G_2500 = new double[23] { 25104, 20961, 17081, 10751, 8703, 7675, 5987, 5151, 4435, 3863, 3759, 3478, 3017, 2647, 1176, 1009, 780, 492, 296, 145, 48, 24, 0.0 }; G_3000 = new double[23] { 26621, 22486, 18273, 11002, 8920, 8034, 6194, 5168, 4595, 3955, 3690, 3216, 2761, 1905, 948, 862, 698, 560, 306, 163, 58, 22, 0.0 }; G_3500 = new double[23] { 28248, 23838, 19186, 11141, 9008, 8154, 6399, 5384, 4757, 3992, 3489, 3066, 2723, 1856, 1201, 899, 825, 681, 420, 229, 77, 30, 0.0 }; G_4000 = new double[23] { 29719, 25071, 20019, 11201, 9267, 8238, 6955, 5858, 4922, 4029, 3355, 2991, 2692, 2090, 1540, 1180, 1060, 870, 532, 271, 98, 39, 0.0 }; G_4500 = new double[23] { 31075, 26215, 20508, 11429, 9919, 8968, 7201, 6212, 5083, 4098, 3257, 2958, 2663, 2204, 1776, 1437, 1240, 1003, 612, 315, 124, 54, 0.0 }; G_5000 = new double[23] { 32376, 27279, 21190, 11913, 10245, 9208, 7321, 6399, 5162, 4132, 3186, 2907, 2639, 2230, 1858, 1551, 1310, 1085, 693, 368, 153, 70, 0.0 }; G_5500 = new double[23] { 33684, 28306, 22359, 12695, 10581, 9306, 7407, 6209, 5291, 4141, 3175, 2896, 2637, 2259, 1927, 1651, 1401, 1178, 772, 423, 186, 86, 0.0 }; G_6000 = new double[23] { 34756, 29261, 23302, 14018, 11114, 9598, 7526, 6332, 5399, 4190, 3180, 2913, 2652, 2287, 1985, 1728, 1482, 1263, 850, 478, 220, 103, 0.0 }; G_6500 = new double[23] { 35781, 30153, 24141, 14945, 11567, 9948, 7751, 6496, 5481, 4230, 3246, 2935, 2666, 2319, 2029, 1797, 1560, 1342, 927, 534, 254, 121, 0.0 }; G_7000 = new double[23] { 36804, 30962, 24952, 15581, 12151, 10333, 8027, 6828, 5588, 4307, 3294, 2939, 2682, 2361, 2077, 1864, 1632, 1416, 997, 588, 288, 139, 0.0 }; G_7500 = new double[23] { 38036, 31979, 25663, 16185, 12686, 10753, 8176, 6845, 5700, 4370, 3351, 2947, 2697, 2398, 2127, 1918, 1695, 1480, 1060, 631, 315, 153, 0.0 }; G_8000 = new double[23] { 39197, 33017, 26712, 17016, 13200, 11107, 8256, 6896, 5794, 4485, 3389, 3069, 2734, 2442, 2177, 1967, 1751, 1540, 1120, 672, 342, 166, 0.0 }; Matrix<double> p_500 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 1000.0 G_0 = new double[23] { 7347, 6383, 5570, 4657, 4175, 3535, 2776, 2159, 1820, 1320, 940, 678, 492, 377, 318, 291, 269, 254, 231, 220, 193, 145, 0.0 }; G_50 = new double[23] { 7700, 6956, 6204, 5406, 4891, 4169, 3412, 2702, 2473, 1966, 1607, 1351, 1179, 1068, 933, 770, 723, 706, 586, 522, 369, 282, 0.0 }; G_100 = new double[23] { 8581, 7702, 6906, 5824, 5173, 4600, 4000, 3609, 3069, 2549, 2380, 2216, 2087, 1949, 1798, 1700, 1652, 1541, 1280, 1078, 708, 501, 0.0 }; G_300 = new double[23] { 10093, 8830, 7796, 6476, 5710, 4793, 4140, 4013, 3901, 3685, 3471, 3372, 3276, 3172, 2993, 2871, 2766, 2594, 1727, 1302, 815, 514, 0.0 }; G_500 = new double[23] { 12148, 10478, 8703, 7200, 6004, 4837, 4259, 4124, 4063, 3995, 3980, 3953, 3938, 3790, 3678, 3579, 3537, 3445, 1564, 1067, 649, 377, 0.0 }; G_750 = new double[23] { 14675, 12510, 10033, 7775, 6255, 4896, 4378, 4337, 4228, 4200, 4162, 4083, 3997, 3851, 3810, 3473, 3291, 3102, 832, 623, 322, 213, 0.0 }; G_1000 = new double[23] { 17023, 14042, 11114, 8024, 6275, 4978, 4804, 4736, 4616, 4351, 4177, 4099, 3998, 3896, 3708, 3148, 2620, 1199, 636, 391, 189, 128, 0.0 }; G_1500 = new double[23] { 20026, 16859, 13366, 9481, 7659, 6918, 6497, 5831, 5246, 4610, 4271, 4057, 3704, 3655, 3049, 1601, 1238, 843, 315, 218, 138, 75, 0.0 }; G_2000 = new double[23] { 22495, 18764, 14921, 10539, 9084, 7740, 6830, 6373, 5480, 4704, 4407, 3992, 3596, 3330, 1957, 1122, 873, 624, 268, 155, 90, 46, 0.0 }; G_2500 = new double[23] { 24717, 20601, 16332, 11001, 9794, 8318, 7090, 6583, 5633, 4794, 4338, 3811, 3566, 2927, 1197, 1012, 823, 521, 300, 149, 49, 26, 0.0 }; G_3000 = new double[23] { 26264, 22053, 17370, 11532, 10209, 8496, 7195, 6673, 5671, 4871, 4244, 3718, 3325, 2007, 977, 895, 701, 583, 313, 168, 59, 24, 0.0 }; G_3500 = new double[23] { 27894, 23473, 18245, 11516, 10075, 8480, 7278, 6704, 5714, 4887, 4229, 3597, 3109, 1924, 1223, 919, 831, 690, 431, 247, 80, 33, 0.0 }; G_4000 = new double[23] { 29406, 24586, 18990, 11029, 9419, 8550, 7359, 6714, 5752, 4750, 4075, 3520, 3031, 2210, 1620, 1230, 1090, 890, 545, 300, 101, 40, 0.0 }; G_4500 = new double[23] { 30773, 25743, 19791, 11226, 9952, 9143, 7572, 6924, 5778, 4571, 3881, 3430, 2986, 2349, 1805, 1456, 1249, 1030, 629, 331, 122, 51, 0.0 }; G_5000 = new double[23] { 31994, 26863, 20592, 12193, 10358, 9185, 7623, 6934, 5919, 4492, 3722, 3317, 2924, 2357, 1874, 1562, 1337, 1109, 703, 372, 146, 64, 0.0 }; G_5500 = new double[23] { 33271, 27872, 21588, 13122, 10898, 9280, 7551, 6744, 6006, 4590, 3694, 3272, 2887, 2358, 1938, 1664, 1428, 1200, 781, 427, 173, 78, 0.0 }; G_6000 = new double[23] { 34314, 28814, 22490, 14247, 11388, 9491, 7633, 6655, 6024, 4616, 3548, 3236, 2856, 2372, 2006, 1746, 1506, 1280, 856, 477, 204, 95, 0.0 }; G_6500 = new double[23] { 35402, 29678, 23127, 14949, 11882, 9883, 7866, 6765, 6151, 4649, 3592, 3194, 2864, 2403, 2060, 1829, 1587, 1362, 935, 530, 236, 112, 0.0 }; G_7000 = new double[23] { 36417, 30478, 23637, 15247, 12338, 10051, 8088, 6875, 6185, 4676, 3617, 3231, 2818, 2445, 2122, 1909, 1670, 1445, 1008, 583, 269, 129, 0.0 }; G_7500 = new double[23] { 37289, 31065, 24195, 16170, 12803, 10604, 8228, 6965, 6238, 4694, 3628, 3251, 2897, 2480, 2219, 1968, 1736, 1512, 1074, 630, 291, 140, 0.0 }; G_8000 = new double[23] { 38003, 31712, 25017, 17157, 13534, 11049, 8426, 6995, 6294, 4822, 3674, 3301, 2917, 2547, 2272, 2021, 1794, 1573, 1136, 668, 312, 150, 0.0 }; Matrix<double> p_1000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p=2000 G_0 = new double[23] { 7060, 6243, 5413, 4622, 4189, 3713, 3173, 2594, 2165, 1704, 1302, 970, 745, 587, 491, 438, 380, 361, 323, 317, 232, 170, 0.0 }; G_50 = new double[23] { 7497, 6756, 6040, 5351, 4927, 4460, 3982, 3450, 3005, 2552, 2160, 1834, 1613, 1447, 1331, 1209, 1089, 1069, 924, 845, 658, 373, 0.0 }; G_100 = new double[23] { 8767, 7820, 7040, 6207, 5946, 5556, 5241, 4757, 4071, 3657, 3326, 3072, 2933, 2801, 2599, 2487, 2393, 2313, 1996, 1720, 1123, 594, 0.0 }; G_300 = new double[23] { 9784, 8590, 7775, 7108, 6722, 6403, 6064, 5659, 5220, 4908, 4646, 4362, 4026, 3725, 3563, 3475, 3375, 3276, 2998, 2266, 1252, 690, 0.0 }; G_500 = new double[23] { 11464, 9687, 8430, 7528, 6977, 6611, 6260, 6084, 5540, 5280, 4924, 4584, 4373, 4197, 4076, 3929, 3828, 3695, 3362, 1898, 1109, 609, 0.0 }; G_750 = new double[23] { 13730, 11557, 9579, 7868, 7076, 6656, 6388, 6097, 5696, 5338, 5083, 4870, 4700, 4590, 4478, 4396, 4033, 3811, 1948, 1194, 700, 229, 0.0 }; G_1000 = new double[23] { 16027, 13171, 10583, 7982, 7118, 6692, 6371, 6185, 5781, 5417, 5197, 5083, 4992, 4961, 4792, 4196, 3311, 2751, 1260, 597, 359, 174, 0.0 }; G_1500 = new double[23] { 18947, 15537, 12233, 9416, 8215, 7670, 7342, 6660, 6095, 5463, 5141, 4871, 4766, 4524, 4389, 2926, 1903, 897, 512, 288, 163, 97, 0.0 }; G_2000 = new double[23] { 21106, 17297, 13588, 10513, 9584, 8982, 8305, 7261, 6199, 5406, 4996, 4595, 4283, 3824, 3026, 1357, 1172, 682, 418, 196, 97, 60, 0.0 }; G_2500 = new double[23] { 23353, 19098, 14933, 11161, 10279, 8996, 8116, 7196, 5976, 5302, 4856, 4552, 3943, 3328, 1613, 1237, 958, 556, 313, 157, 53, 29, 0.0 }; G_3000 = new double[23] { 25197, 20509, 15816, 11602, 10578, 8792, 7549, 7112, 5860, 5169, 4798, 4483, 3798, 2570, 1185, 1020, 731, 594, 331, 172, 59, 27, 0.0 }; G_3500 = new double[23] { 26816, 21723, 16526, 11317, 10169, 8672, 7475, 7057, 5794, 5042, 4687, 4310, 3476, 2403, 1342, 979, 839, 697, 442, 254, 83, 36, 0.0 }; G_4000 = new double[23] { 28328, 22765, 16902, 10802, 9806, 8752, 7542, 7103, 5878, 4951, 4485, 3868, 3301, 2367, 1642, 1318, 1147, 996, 606, 318, 104, 40, 0.0 }; G_4500 = new double[23] { 29717, 23920, 17644, 10857, 9984, 8899, 7663, 7149, 5913, 4875, 4223, 3760, 3206, 2375, 1758, 1445, 1258, 1062, 653, 340, 119, 47, 0.0 }; G_5000 = new double[23] { 30638, 24767, 18164, 11811, 10290, 9037, 7624, 7195, 5997, 4789, 4069, 3605, 3089, 2389, 1803, 1545, 1346, 1131, 712, 380, 134, 56, 0.0 }; G_5500 = new double[23] { 32102, 25866, 18832, 12769, 10862, 9069, 7652, 7041, 6021, 4783, 3970, 3532, 3006, 2379, 1897, 1647, 1440, 1212, 781, 412, 153, 67, 0.0 }; G_6000 = new double[23] { 33085, 26751, 19986, 13576, 11244, 9316, 7681, 6987, 6065, 4800, 3812, 3481, 2959, 2391, 1992, 1742, 1516, 1287, 848, 452, 177, 80, 0.0 }; G_6500 = new double[23] { 34156, 27592, 20946, 14138, 11703, 9812, 7927, 6933, 6099, 4851, 3728, 3431, 2947, 2452, 2094, 1842, 1602, 1371, 928, 499, 205, 95, 0.0 }; G_7000 = new double[23] { 35131, 28383, 21563, 14625, 12253, 10016, 8186, 6988, 6134, 4932, 3753, 3344, 2933, 2513, 2190, 1935, 1692, 1458, 1006, 551, 233, 110, 0.0 }; G_7500 = new double[23] { 35897, 29010, 22130, 15499, 12704, 10558, 8396, 7041, 6198, 5027, 3844, 3322, 2983, 2581, 2286, 2013, 1767, 1530, 1073, 599, 247, 118, 0.0 }; G_8000 = new double[23] { 36663, 29609, 22628, 16442, 13306, 10940, 8676, 7070, 6292, 5167, 3886, 3403, 3098, 2696, 2363, 2077, 1827, 1595, 1134, 633, 259, 123, 0.0 }; Matrix<double> p_2000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p=3000 G_0 = new double[23] { 6741, 6001, 5272, 4593, 4213, 3873, 3447, 2943, 2431, 1979, 1551, 1181, 929, 741, 615, 539, 482, 443, 396, 350, 247, 178, 0.0 }; G_50 = new double[23] { 7222, 6535, 5910, 5303, 4961, 4653, 4297, 3850, 3325, 2890, 2482, 2126, 1884, 1693, 1549, 1449, 1361, 1333, 1219, 1105, 704, 429, 0.0 }; G_100 = new double[23] { 8514, 7599, 6831, 6315, 6057, 5809, 5525, 5121, 4495, 3921, 3575, 3415, 3262, 3171, 3010, 2948, 2926, 2771, 2483, 2059, 1264, 672, 0.0 }; G_300 = new double[23] { 9536, 8324, 7523, 7171, 7064, 6874, 6780, 6474, 6115, 5666, 5165, 4849, 4508, 4218, 3971, 3752, 3545, 3485, 3140, 2620, 1630, 893, 0.0 }; G_500 = new double[23] { 10708, 9149, 8018, 7426, 7188, 7073, 6950, 6649, 6453, 5959, 5439, 5061, 4767, 4432, 4259, 4150, 3967, 3742, 3589, 2645, 1604, 956, 0.0 }; G_750 = new double[23] { 12850, 10680, 8910, 7794, 7444, 7249, 7010, 6753, 6553, 6159, 5644, 5287, 4988, 4677, 4591, 4477, 4271, 3926, 3069, 1951, 930, 382, 0.0 }; G_1000 = new double[23] { 14637, 12105, 9835, 7934, 7668, 7280, 7085, 6777, 6547, 6178, 5762, 5420, 5207, 4928, 4690, 4459, 3879, 3581, 2405, 1146, 587, 270, 0.0 }; G_1500 = new double[23] { 17032, 14038, 11355, 9127, 8517, 8118, 7806, 7186, 6517, 6030, 5546, 5170, 4998, 4699, 4281, 3622, 3030, 2756, 755, 656, 256, 139, 0.0 }; G_2000 = new double[23] { 18967, 15630, 12632, 10069, 9300, 8626, 8094, 7373, 6337, 5718, 5192, 4738, 4342, 3782, 3448, 2612, 1739, 938, 499, 279, 115, 82, 0.0 }; G_2500 = new double[23] { 21002, 17244, 13569, 10901, 9793, 8745, 7997, 7221, 6085, 5432, 4993, 4483, 3959, 3547, 2900, 1819, 978, 657, 342, 169, 63, 39, 0.0 }; G_3000 = new double[23] { 22678, 18551, 14553, 11208, 10022, 8672, 7642, 6860, 5771, 5187, 4839, 4355, 3698, 3152, 2289, 1188, 774, 578, 348, 179, 63, 32, 0.0 }; G_3500 = new double[23] { 24225, 19619, 15027, 10936, 9909, 8471, 7428, 6681, 5567, 5023, 4646, 4230, 3567, 2745, 1684, 1107, 859, 717, 458, 268, 92, 39, 0.0 }; G_4000 = new double[23] { 25515, 20591, 15544, 10471, 9773, 8428, 7236, 6508, 5489, 4877, 4475, 3897, 3404, 2484, 1609, 1338, 1175, 1004, 625, 334, 110, 41, 0.0 }; G_4500 = new double[23] { 26660, 21487, 15956, 10512, 9920, 8426, 7206, 6588, 5452, 4690, 4299, 3747, 3179, 2366, 1680, 1410, 1235, 1079, 668, 355, 119, 47, 0.0 }; G_5000 = new double[23] { 27501, 22290, 16371, 11621, 10005, 8768, 7328, 6596, 5395, 4583, 4141, 3624, 3095, 2314, 1740, 1498, 1329, 1142, 717, 382, 131, 54, 0.0 }; G_5500 = new double[23] { 28809, 23183, 17231, 12402, 10644, 8980, 7486, 6632, 5297, 4509, 3993, 3593, 3009, 2318, 1828, 1606, 1429, 1215, 781, 400, 147, 63, 0.0 }; G_6000 = new double[23] { 29772, 24039, 18048, 13154, 11082, 9224, 7628, 6695, 5194, 4444, 3860, 3543, 2963, 2333, 1936, 1719, 1506, 1282, 839, 434, 168, 75, 0.0 }; G_6500 = new double[23] { 30660, 24751, 18858, 13660, 11303, 9721, 7856, 6714, 5329, 4555, 3791, 3514, 2974, 2439, 2068, 1835, 1598, 1364, 917, 479, 194, 89, 0.0 }; G_7000 = new double[23] { 31524, 25478, 19488, 14216, 11986, 10000, 8174, 6762, 5540, 4605, 3787, 3398, 2974, 2535, 2197, 1944, 1696, 1457, 999, 531, 223, 104, 0.0 }; G_7500 = new double[23] { 32450, 26191, 20150, 14817, 12357, 10509, 8486, 6885, 5646, 4685, 3850, 3328, 3008, 2644, 2326, 2034, 1775, 1531, 1067, 574, 239, 112, 0.0 }; G_8000 = new double[23] { 33419, 26895, 20708, 15335, 12944, 10989, 8752, 6939, 5798, 4902, 3882, 3428, 3160, 2801, 2418, 2105, 1838, 1597, 1129, 605, 253, 119, 0.0 }; Matrix<double> p_3000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p=5000 G_0 = new double[23] { 6044, 5513, 4986, 4500, 4239, 3976, 3666, 3277, 2677, 2242, 1808, 1417, 1154, 944, 795, 694, 619, 561, 456, 366, 257, 191, 0.0 }; G_50 = new double[23] { 6547, 6028, 5573, 5138, 4921, 4675, 4407, 4046, 3467, 3055, 2662, 2309, 2065, 1869, 1715, 1595, 1493, 1387, 1330, 1160, 608, 385, 0.0 }; G_100 = new double[23] { 7615, 6922, 6388, 6040, 5888, 5703, 5517, 5192, 4529, 3997, 3709, 3524, 3374, 3240, 3148, 3053, 3000, 2837, 2575, 2202, 1460, 753, 0.0 }; G_300 = new double[23] { 8492, 7453, 6937, 6709, 6623, 6510, 6401, 6207, 5915, 5395, 4980, 4709, 4502, 4302, 3938, 3662, 3502, 3255, 2890, 2511, 1670, 989, 0.0 }; G_500 = new double[23] { 9226, 7886, 7222, 6839, 6746, 6655, 6577, 6460, 6113, 5594, 5196, 4866, 4637, 4339, 4140, 3882, 3686, 3517, 3085, 2490, 1880, 1104, 0.0 }; G_750 = new double[23] { 10677, 9042, 7794, 7085, 6908, 6789, 6666, 6491, 6126, 5749, 5213, 4906, 4675, 4350, 4160, 3851, 3574, 3330, 2760, 2380, 1519, 814, 0.0 }; G_1000 = new double[23] { 12213, 10204, 8466, 7447, 7095, 6989, 6834, 6568, 6028, 5726, 5182, 4796, 4545, 4194, 3883, 3496, 3281, 2974, 2476, 1683, 690, 379, 0.0 }; G_1500 = new double[23] { 14030, 11668, 9617, 8115, 7597, 7296, 7024, 6470, 5710, 5375, 4875, 4438, 4167, 3795, 3357, 2941, 2531, 2290, 914, 592, 393, 200, 0.0 }; G_2000 = new double[23] { 15633, 12936, 10401, 8530, 7889, 7408, 6946, 6107, 5170, 4836, 4340, 3913, 3599, 3257, 2909, 2412, 1979, 1182, 638, 354, 188, 130, 0.0 }; G_2500 = new double[23] { 17335, 14268, 11308, 8887, 7972, 7432, 6712, 5661, 4880, 4445, 4017, 3662, 3295, 2876, 2689, 1915, 955, 651, 447, 195, 99, 51, 0.0 }; G_3000 = new double[23] { 18794, 15433, 12150, 9231, 8180, 7463, 6490, 5427, 4718, 4265, 3857, 3476, 3104, 2578, 2283, 1429, 708, 533, 405, 179, 73, 41, 0.0 }; G_3500 = new double[23] { 19936, 16374, 12894, 9768, 8306, 7477, 6368, 5026, 4484, 3984, 3644, 3312, 2932, 2394, 1781, 1164, 910, 706, 513, 290, 103, 42, 0.0 }; G_4000 = new double[23] { 20949, 17217, 13569, 9991, 8683, 7658, 6295, 4783, 4200, 3584, 3367, 3140, 2745, 2274, 1402, 1188, 1060, 922, 593, 320, 111, 44, 0.0 }; G_4500 = new double[23] { 21962, 18016, 14114, 10137, 9063, 7837, 6323, 4905, 4130, 3522, 3305, 3023, 2672, 2065, 1424, 1245, 1128, 1046, 649, 346, 117, 46, 0.0 }; G_5000 = new double[23] { 22867, 18766, 14525, 10880, 9540, 8183, 6486, 5030, 4103, 3487, 3287, 3017, 2684, 2024, 1455, 1329, 1224, 1112, 695, 362, 124, 51, 0.0 }; G_5500 = new double[23] { 23661, 19456, 15309, 11569, 10048, 8548, 6741, 5245, 4051, 3480, 3299, 3060, 2672, 2047, 1628, 1480, 1351, 1176, 743, 379, 135, 57, 0.0 }; G_6000 = new double[23] { 24391, 20103, 15958, 12239, 10650, 8921, 7328, 5430, 4008, 3507, 3314, 3079, 2696, 2057, 1747, 1598, 1449, 1240, 793, 405, 152, 67, 0.0 }; G_6500 = new double[23] { 25098, 20718, 16511, 12734, 10892, 9511, 7643, 5637, 4183, 3523, 3357, 3128, 2771, 2258, 1947, 1783, 1549, 1314, 855, 437, 172, 78, 0.0 }; G_7000 = new double[23] { 25860, 21312, 16907, 13189, 11608, 9908, 7949, 5781, 4373, 3553, 3386, 3182, 2857, 2430, 2136, 1893, 1639, 1396, 926, 482, 197, 91, 0.0 }; G_7500 = new double[23] { 26597, 21982, 17360, 13563, 11914, 10298, 8281, 6006, 4572, 3786, 3444, 3201, 2944, 2603, 2250, 1988, 1716, 1466, 990, 512, 211, 98, 0.0 }; G_8000 = new double[23] { 27254, 22428, 17865, 13912, 12316, 10851, 8676, 6217, 4805, 4010, 3629, 3362, 3178, 2817, 2409, 2068, 1783, 1533, 1052, 543, 225, 105, 0.0 }; Matrix<double> p_5000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 7000.0 G_0 = new double[23] { 5445, 5059, 4676, 4323, 4139, 3937, 3677, 3322, 2696, 2256, 1848, 1479, 1243, 1036, 891, 778, 692, 621, 525, 389, 267, 209, 0.0 }; G_50 = new double[23] { 5919, 5536, 5191, 4863, 4698, 4520, 4306, 3998, 3399, 2986, 2624, 2264, 2042, 1859, 1712, 1588, 1477, 1366, 1151, 1010, 473, 325, 0.0 }; G_100 = new double[23] { 6912, 6301, 5871, 5584, 5462, 5261, 5095, 4849, 4271, 3776, 3499, 3290, 3142, 3034, 2906, 2850, 2651, 2486, 2123, 1673, 1205, 768, 0.0 }; G_300 = new double[23] { 7445, 6709, 6259, 6020, 5914, 5761, 5662, 5495, 5182, 4752, 4464, 4070, 3764, 3611, 3417, 3250, 3028, 2738, 2286, 1994, 1408, 869, 0.0 }; G_500 = new double[23] { 7842, 6895, 6435, 6188, 5996, 5931, 5818, 5672, 5408, 4922, 4521, 4196, 3989, 3812, 3602, 3459, 3221, 2905, 2482, 1985, 1547, 869, 0.0 }; G_750 = new double[23] { 9129, 7841, 6867, 6263, 6154, 5998, 5895, 5776, 5430, 4987, 4538, 4131, 3918, 3709, 3464, 3327, 3118, 2770, 2312, 1904, 1400, 742, 0.0 }; G_1000 = new double[23] { 10186, 8774, 7390, 6532, 6313, 6276, 6162, 5864, 5366, 4920, 4399, 3935, 3723, 3447, 3112, 2884, 2713, 2432, 2085, 767, 506, 341, 0.0 }; G_1500 = new double[23] { 11920, 10072, 8460, 7262, 6915, 6647, 6308, 5729, 5059, 4561, 4039, 3612, 3279, 2991, 2698, 2490, 2264, 1591, 599, 372, 318, 191, 0.0 }; G_2000 = new double[23] { 13294, 11209, 9172, 7557, 7279, 6769, 6187, 5327, 4570, 4020, 3552, 3174, 2864, 2566, 2353, 1919, 1406, 793, 483, 267, 197, 134, 0.0 }; G_2500 = new double[23] { 14680, 12245, 9774, 7920, 7382, 6765, 5895, 4977, 4178, 3639, 3207, 2867, 2552, 2211, 1941, 1487, 813, 521, 342, 177, 103, 58, 0.0 }; G_3000 = new double[23] { 15871, 13214, 10463, 8259, 7522, 6778, 5785, 4761, 3971, 3366, 3014, 2640, 2333, 2111, 1685, 951, 493, 429, 307, 157, 77, 43, 0.0, }; G_3500 = new double[23] { 16889, 14072, 11223, 8783, 7744, 6972, 5738, 4518, 3739, 3127, 2816, 2482, 2188, 1798, 1357, 851, 631, 531, 388, 224, 96, 44, 0.0 }; G_4000 = new double[23] { 17783, 14824, 11868, 9277, 8077, 7118, 5593, 4226, 3539, 2855, 2616, 2362, 2104, 1710, 1251, 957, 789, 681, 444, 255, 99, 44, 0.0 }; G_4500 = new double[23] { 18619, 15498, 12439, 9619, 8281, 7208, 5381, 4156, 3422, 2650, 2472, 2268, 2057, 1647, 1239, 1006, 867, 779, 487, 266, 102, 45, 0.0 }; G_5000 = new double[23] { 19434, 16132, 12870, 10084, 8686, 7415, 5486, 4350, 3409, 2611, 2486, 2251, 2040, 1619, 1279, 1052, 950, 854, 526, 277, 106, 47, 0.0 }; G_5500 = new double[23] { 20138, 16733, 13579, 10563, 9272, 7844, 6153, 4649, 3405, 2688, 2460, 2325, 2076, 1662, 1397, 1217, 1065, 933, 576, 298, 115, 52, 0.0 }; G_6000 = new double[23] { 20703, 17309, 14047, 11354, 9947, 8657, 6697, 4756, 3417, 2725, 2487, 2353, 2087, 1697, 1476, 1339, 1184, 1018, 637, 327, 131, 60, 0.0 }; G_6500 = new double[23] { 21284, 17855, 14610, 11951, 10355, 9156, 7135, 4905, 3437, 2733, 2525, 2442, 2241, 1938, 1688, 1515, 1303, 1103, 702, 360, 149, 69, 0.0 }; G_7000 = new double[23] { 21889, 18357, 15013, 12260, 10817, 9456, 7309, 4949, 3504, 2872, 2648, 2499, 2348, 2094, 1852, 1615, 1393, 1182, 771, 401, 170, 80, 0.0 }; G_7500 = new double[23] { 22505, 18841, 15385, 12539, 11244, 9779, 7455, 5004, 3629, 3017, 2792, 2596, 2488, 2263, 2039, 1776, 1504, 1264, 838, 433, 182, 86, 0.0 }; G_8000 = new double[23] { 23064, 19305, 15794, 12917, 11519, 10059, 7792, 5163, 3777, 3222, 3120, 3063, 2927, 2605, 2282, 1893, 1592, 1345, 904, 463, 193, 91, 0.0 }; Matrix<double> p_7000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 10000.0 G_0 = new double[23] { 4624, 4375, 4128, 3896, 3774, 3627, 3426, 3122, 2501, 2018, 1664, 1365, 1208, 1041, 910, 809, 734, 677, 582, 404, 244, 205, 0.0 }; G_50 = new double[23] { 5040, 4787, 4542, 4302, 4182, 4042, 3857, 3586, 2977, 2514, 2217, 1984, 1824, 1678, 1583, 1501, 1402, 1250, 1018, 758, 386, 281, 0.0 }; G_100 = new double[23] { 5711, 5424, 5083, 4812, 4696, 4507, 4371, 4158, 3699, 3259, 2970, 2830, 2654, 2505, 2354, 2059, 1840, 1620, 1293, 999, 668, 467, 0.0 }; G_300 = new double[23] { 6240, 5751, 5329, 5036, 4934, 4777, 4690, 4523, 4197, 3777, 3361, 3136, 2994, 2803, 2635, 2398, 2250, 1922, 1707, 1267, 915, 505, 0.0 }; G_500 = new double[23] { 6422, 5774, 5441, 5059, 4945, 4837, 4744, 4583, 4328, 3920, 3461, 3206, 3005, 2804, 2640, 2386, 2147, 1830, 1528, 1203, 806, 431, 0.0 }; G_750 = new double[23] { 7259, 6426, 5740, 5233, 5035, 4842, 4761, 4501, 4263, 3879, 3404, 3093, 2879, 2640, 2443, 2071, 1760, 1455, 1080, 713, 347, 238, 0.0 }; G_1000 = new double[23] { 8156, 7090, 6125, 5478, 5179, 4985, 4762, 4439, 4149, 3793, 3295, 2886, 2595, 2280, 1986, 1783, 1465, 1183, 356, 156, 108, 105, 0.0 }; G_1500 = new double[23] { 9449, 8185, 7053, 6227, 5689, 5217, 4781, 4311, 3892, 3446, 2977, 2526, 2095, 1865, 1547, 1203, 378, 295, 176, 79, 59, 51, 0.0 }; G_2000 = new double[23] { 10490, 8949, 7655, 6479, 5965, 5398, 4762, 4131, 3467, 2960, 2452, 2020, 1708, 1391, 1054, 393, 247, 183, 125, 65, 50, 46, 0.0 }; G_2500 = new double[23] { 11536, 9833, 8292, 6889, 6216, 5619, 4784, 4013, 3282, 2691, 2188, 1776, 1469, 1177, 738, 342, 288, 182, 140, 80, 54, 39, 0.0 }; G_3000 = new double[23] { 12449, 10561, 8790, 7196, 6491, 5789, 4822, 3893, 3116, 2432, 1939, 1580, 1354, 998, 675, 396, 337, 232, 176, 98, 50, 32, 0.0 }; G_3500 = new double[23] { 13181, 11191, 9261, 7712, 6887, 6007, 4842, 3862, 2998, 2277, 1809, 1526, 1314, 1076, 775, 528, 406, 365, 254, 131, 75, 38, 0.0 }; G_4000 = new double[23] { 13882, 11788, 9761, 8080, 7079, 6163, 4875, 3813, 2936, 2079, 1704, 1521, 1251, 1153, 881, 694, 525, 445, 299, 153, 76, 39, 0.0 }; G_4500 = new double[23] { 14555, 12363, 10227, 8450, 7344, 6374, 4885, 3798, 2877, 2027, 1709, 1562, 1331, 1279, 1048, 763, 611, 513, 342, 174, 81, 40, 0.0 }; G_5000 = new double[23] { 15087, 12776, 10637, 8882, 7723, 6804, 4955, 3928, 2889, 2082, 1715, 1608, 1460, 1314, 1073, 832, 683, 575, 395, 200, 87, 42, 0.0 }; G_5500 = new double[23] { 15617, 13257, 11054, 9422, 8279, 7203, 5517, 4119, 2942, 2106, 1824, 1763, 1638, 1478, 1261, 964, 822, 681, 453, 231, 96, 45, 0.0 }; G_6000 = new double[23] { 16191, 13799, 11553, 9797, 8723, 7611, 5821, 4226, 3014, 2189, 1975, 1867, 1723, 1539, 1323, 1109, 963, 816, 526, 267, 111, 52, 0.0 }; G_6500 = new double[23] { 16692, 14162, 11890, 10082, 9097, 7925, 5990, 4326, 3023, 2297, 2073, 2020, 1843, 1697, 1500, 1314, 1098, 923, 595, 305, 129, 60, 0.0 }; G_7000 = new double[23] { 17149, 14598, 12284, 10292, 9215, 8047, 6128, 4397, 3082, 2339, 2209, 2103, 2006, 1850, 1618, 1394, 1179, 1004, 658, 343, 147, 70, 0.0 }; G_7500 = new double[23] { 17628, 15027, 12656, 10529, 9450, 8245, 6145, 4440, 3190, 2370, 2320, 2190, 2170, 2000, 1740, 1491, 1270, 1084, 719, 373, 159, 75, 0.0 }; G_8000 = new double[23] { 18123, 15428, 12988, 10706, 9587, 8466, 6263, 4626, 3587, 3056, 2981, 2800, 2700, 2347, 2006, 1665, 1403, 1174, 781, 402, 170, 80, 0.0 }; Matrix<double> p_10000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 12000.0 G_0 = new double[23] { 4070, 3883, 3698, 3525, 3433, 3322, 3163, 2914, 2391, 1936, 1606, 1334, 1173, 1026, 909, 814, 745, 694, 588, 397, 225, 141, 0.0 }; G_50 = new double[23] { 4436, 4247, 4061, 3869, 3770, 3658, 3506, 3285, 2784, 2367, 2081, 1857, 1694, 1565, 1498, 1357, 1200, 1087, 867, 667, 381, 242, 0.0 }; G_100 = new double[23] { 5023, 4806, 4538, 4290, 4171, 3983, 3844, 3645, 3267, 2878, 2711, 2500, 2257, 2069, 1905, 1622, 1460, 1290, 977, 772, 446, 301, 0.0 }; G_300 = new double[23] { 5366, 5081, 4741, 4434, 4269, 4138, 3950, 3838, 3516, 3199, 2912, 2701, 2467, 2285, 2108, 1940, 1830, 1630, 1250, 840, 500, 316, 0.0 }; G_500 = new double[23] { 5647, 5188, 4869, 4445, 4298, 4131, 3988, 3819, 3555, 3240, 2951, 2724, 2500, 2310, 2160, 1875, 1678, 1474, 1011, 423, 296, 205, 0.0 }; G_750 = new double[23] { 6233, 5596, 5072, 4528, 4310, 4067, 3904, 3659, 3418, 3067, 2773, 2526, 2277, 2039, 1798, 1396, 1180, 989, 312, 251, 211, 131, 0.0 }; G_1000 = new double[23] { 7031, 6267, 5500, 4700, 4430, 4100, 3855, 3447, 3243, 2878, 2516, 2291, 1905, 1640, 1420, 1073, 920, 310, 214, 118, 78, 76, 0.0 }; G_1500 = new double[23] { 8214, 7105, 6221, 5242, 4662, 4271, 3813, 3405, 2952, 2526, 2112, 1723, 1389, 1096, 918, 377, 315, 205, 105, 41, 39, 36, 0.0 }; G_2000 = new double[23] { 8959, 7711, 6598, 5472, 4982, 4417, 3841, 3375, 2830, 2300, 1816, 1410, 1109, 911, 385, 119, 110, 77, 71, 50, 37, 31, 0.0 }; G_2500 = new double[23] { 9851, 8471, 7225, 5977, 5407, 4720, 3900, 3367, 2739, 2119, 1603, 1215, 971, 753, 293, 172, 139, 119, 99, 59, 40, 27, 0.0 }; G_3000 = new double[23] { 10436, 9128, 7655, 6409, 5706, 4923, 3949, 3364, 2690, 1985, 1492, 1101, 889, 689, 354, 300, 245, 195, 154, 81, 45, 26, 0.0 }; G_3500 = new double[23] { 11000, 9572, 7966, 6675, 5958, 5076, 4002, 3360, 2680, 1910, 1409, 1138, 922, 772, 414, 404, 329, 294, 221, 109, 66, 35, 0.0 }; G_4000 = new double[23] { 11291, 9879, 8449, 7028, 6239, 5226, 4061, 3326, 2680, 1904, 1456, 1244, 1077, 923, 693, 586, 454, 361, 251, 131, 70, 36, 0.0 }; G_4500 = new double[23] { 11695, 10442, 8797, 7329, 6398, 5397, 4163, 3353, 2698, 1927, 1529, 1383, 1174, 1097, 862, 685, 539, 418, 294, 154, 75, 38, 0.0 }; G_5000 = new double[23] { 12117, 10856, 9117, 7579, 6726, 5903, 4418, 3478, 2772, 2010, 1637, 1431, 1254, 1154, 921, 726, 573, 465, 341, 183, 82, 40, 0.0 }; G_5500 = new double[23] { 12466, 11071, 9431, 7831, 7005, 6089, 4517, 3728, 2908, 2140, 1867, 1621, 1469, 1345, 1105, 909, 704, 564, 401, 214, 91, 43, 0.0 }; G_6000 = new double[23] { 13176, 11559, 9782, 8050, 7166, 6225, 4603, 3885, 3060, 2229, 1986, 1781, 1627, 1472, 1254, 1065, 868, 721, 483, 252, 105, 49, 0.0 }; G_6500 = new double[23] { 14034, 12051, 10061, 8249, 7390, 6426, 4668, 3941, 3128, 2355, 2150, 1949, 1811, 1623, 1447, 1220, 1023, 852, 558, 290, 122, 57, 0.0 }; G_7000 = new double[23] { 14607, 12508, 10487, 8532, 7609, 6605, 4731, 4011, 3192, 2432, 2217, 2093, 1955, 1730, 1554, 1342, 1126, 945, 622, 326, 140, 66, 0.0 }; G_7500 = new double[23] { 14975, 12908, 10907, 8703, 7863, 6710, 4821, 4080, 3250, 2490, 2284, 2170, 2077, 1921, 1676, 1441, 1227, 1034, 683, 355, 152, 72, 0.0 }; G_8000 = new double[23] { 15432, 13298, 11407, 8898, 8033, 6904, 4932, 4219, 3398, 2827, 2737, 2527, 2420, 2168, 1912, 1606, 1370, 1142, 749, 384, 162, 76, 0.0 }; Matrix<double> p_12000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 14000.0 G_0 = new double[23] { 3505, 3372, 3240, 3113, 3046, 2965, 2846, 2654, 2242, 1848, 1544, 1296, 1129, 992, 884, 799, 736, 691, 585, 384, 202, 113, 0.0 }; G_50 = new double[23] { 3808, 3676, 3552, 3413, 3338, 3250, 3129, 2951, 2557, 2195, 1919, 1710, 1527, 1363, 1230, 1114, 1035, 930, 790, 565, 310, 185, 0.0 }; G_100 = new double[23] { 4244, 4060, 3897, 3721, 3617, 3500, 3371, 3206, 2909, 2586, 2280, 1961, 1791, 1575, 1469, 1262, 1193, 1023, 811, 595, 342, 204, 0.0 }; G_300 = new double[23] { 4479, 4268, 4074, 3858, 3727, 3586, 3448, 3301, 2996, 2701, 2358, 2100, 1970, 1756, 1651, 1481, 1308, 1143, 842, 615, 347, 217, 0.0 }; G_500 = new double[23] { 4680, 4404, 4184, 3876, 3713, 3545, 3401, 3249, 3001, 2641, 2373, 2089, 1825, 1559, 1422, 1273, 1087, 1017, 319, 298, 192, 119, 0.0 }; G_750 = new double[23] { 5155, 4929, 4487, 3917, 3666, 3417, 3241, 3056, 2841, 2505, 2177, 1849, 1591, 1332, 1131, 885, 769, 502, 265, 135, 79, 77, 0.0 }; G_1000 = new double[23] { 6001, 5588, 4980, 4089, 3670, 3378, 3049, 2693, 2399, 2051, 1731, 1466, 1244, 1017, 854, 745, 649, 295, 224, 102, 67, 49, 0.0 }; G_1500 = new double[23] { 6787, 6145, 5185, 4364, 3798, 3406, 3003, 2583, 2218, 1807, 1498, 1200, 971, 765, 555, 196, 180, 138, 119, 53, 43, 34, 0.0 }; G_2000 = new double[23] { 7188, 6465, 5394, 4496, 3995, 3628, 3201, 2686, 2221, 1751, 1444, 1121, 879, 603, 419, 176, 125, 108, 93, 58, 41, 26, 0.0 }; G_2500 = new double[23] { 7630, 6781, 5886, 4902, 4465, 4006, 3295, 2832, 2224, 1773, 1391, 1024, 831, 564, 312, 213, 139, 119, 102, 62, 42, 27, 0.0 }; G_3000 = new double[23] { 7824, 7031, 6139, 5394, 4701, 4236, 3320, 2894, 2333, 1831, 1396, 1082, 865, 604, 318, 275, 237, 201, 146, 80, 47, 31, 0.0 }; G_3500 = new double[23] { 8111, 7338, 6268, 5532, 4884, 4356, 3417, 2963, 2433, 1897, 1444, 1140, 927, 710, 491, 420, 340, 281, 200, 108, 61, 32, 0.0 }; G_4000 = new double[23] { 8329, 7457, 6488, 5706, 5185, 4498, 3518, 2992, 2511, 2029, 1603, 1307, 1103, 854, 722, 590, 467, 365, 245, 125, 65, 33, 0.0 }; G_4500 = new double[23] { 8718, 7543, 6537, 5730, 5344, 4748, 3789, 3092, 2558, 2105, 1709, 1449, 1207, 1005, 835, 676, 558, 421, 287, 148, 70, 34, 0.0 }; G_5000 = new double[23] { 8978, 7649, 6594, 5732, 5451, 4912, 3963, 3214, 2692, 2161, 1745, 1510, 1280, 1062, 916, 746, 599, 465, 329, 174, 76, 36, 0.0 }; G_5500 = new double[23] { 9249, 7760, 6609, 5753, 5505, 4944, 4043, 3419, 3026, 2433, 1989, 1746, 1475, 1298, 1107, 940, 746, 572, 390, 206, 87, 40, 0.0 }; G_6000 = new double[23] { 9831, 8166, 6738, 5864, 5509, 4956, 4110, 3463, 3170, 2575, 2209, 1986, 1686, 1420, 1253, 1082, 893, 709, 468, 242, 101, 47, 0.0 }; G_6500 = new double[23] { 10687, 8715, 6808, 5894, 5553, 4972, 4129, 3544, 3208, 2617, 2326, 2201, 1908, 1609, 1448, 1241, 1034, 834, 539, 280, 118, 55, 0.0 }; G_7000 = new double[23] { 11414, 9448, 7169, 6008, 5694, 4993, 4140, 3605, 3202, 2682, 2339, 2261, 2018, 1745, 1556, 1343, 1129, 924, 603, 317, 136, 64, 0.0 }; G_7500 = new double[23] { 12199, 10064, 7714, 6137, 5700, 5016, 4159, 3729, 3240, 2689, 2350, 2270, 2120, 1836, 1638, 1433, 1216, 1013, 666, 347, 148, 70, 0.0 }; G_8000 = new double[23] { 12874, 10581, 8108, 6231, 5878, 5214, 4370, 3809, 3276, 2806, 2508, 2342, 2217, 2033, 1803, 1565, 1338, 1116, 733, 376, 159, 75, 0.0 }; Matrix<double> p_14000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 16000.0 G_0 = new double[23] { 2869, 2780, 2691, 2603, 2556, 2500, 2417, 2276, 1978, 1667, 1411, 1199, 1036, 903, 820, 739, 668, 640, 535, 317, 165, 92, 0.0 }; G_50 = new double[23] { 3101, 3014, 2934, 2837, 2785, 2723, 2645, 2508, 2242, 1962, 1719, 1460, 1271, 1132, 982, 882, 821, 750, 569, 391, 219, 145, 0.0 }; G_100 = new double[23] { 3434, 3308, 3154, 3001, 2897, 2804, 2716, 2551, 2331, 2102, 1818, 1590, 1419, 1254, 1153, 1024, 951, 846, 617, 418, 244, 166, 0.0 }; G_300 = new double[23] { 3612, 3465, 3314, 3127, 2988, 2833, 2733, 2585, 2414, 2206, 1909, 1718, 1562, 1451, 1257, 1129, 1019, 859, 618, 463, 259, 164, 0.0 }; G_500 = new double[23] { 3761, 3553, 3386, 3152, 2997, 2819, 2693, 2534, 2417, 2180, 1909, 1595, 1406, 1261, 1052, 926, 793, 598, 392, 286, 127, 90, 0.0 }; G_750 = new double[23] { 4113, 3800, 3588, 3251, 3055, 2798, 2610, 2387, 2251, 1985, 1703, 1280, 1113, 978, 780, 694, 578, 432, 229, 150, 89, 69, 0.0 }; G_1000 = new double[23] { 4785, 4471, 4003, 3460, 3102, 2756, 2504, 2201, 1918, 1634, 1353, 1039, 952, 814, 665, 530, 455, 325, 192, 90, 59, 45, 0.0 }; G_1500 = new double[23] { 5406, 4726, 4165, 3659, 3280, 2939, 2419, 2111, 1888, 1505, 1226, 1005, 879, 671, 522, 364, 231, 168, 134, 67, 46, 33, 0.0 }; G_2000 = new double[23] { 5808, 5019, 4352, 3777, 3449, 3071, 2740, 2250, 1921, 1623, 1328, 1118, 918, 715, 502, 244, 203, 172, 127, 84, 51, 28, 0.0 }; G_2500 = new double[23] { 6312, 5514, 4978, 4407, 3973, 3504, 2954, 2494, 2086, 1747, 1450, 1213, 1004, 795, 531, 347, 265, 211, 153, 93, 52, 28, 0.0 }; G_3000 = new double[23] { 6858, 5972, 5429, 4894, 4332, 3748, 3146, 2611, 2209, 1857, 1533, 1269, 1101, 817, 655, 481, 380, 300, 216, 113, 57, 29, 0.0 }; G_3500 = new double[23] { 7286, 6326, 5695, 5018, 4511, 3907, 3255, 2653, 2311, 1956, 1614, 1345, 1170, 831, 717, 541, 435, 353, 248, 123, 59, 29, 0.0 }; G_4000 = new double[23] { 7568, 6686, 5875, 5296, 4700, 4136, 3392, 2756, 2428, 2157, 1828, 1560, 1325, 1030, 886, 710, 607, 453, 297, 138, 62, 30, 0.0 }; G_4500 = new double[23] { 8015, 6902, 6071, 5483, 4889, 4352, 3511, 2876, 2569, 2225, 1960, 1684, 1465, 1164, 988, 808, 674, 525, 335, 155, 66, 31, 0.0 }; G_5000 = new double[23] { 8249, 7179, 6183, 5529, 5058, 4562, 3707, 3017, 2698, 2293, 2024, 1777, 1574, 1220, 1041, 890, 731, 567, 377, 182, 72, 33, 0.0 }; G_5500 = new double[23] { 8569, 7489, 6212, 5601, 5064, 4609, 3752, 3226, 2913, 2638, 2244, 2036, 1731, 1424, 1265, 1067, 870, 666, 427, 207, 84, 39, 0.0 }; G_6000 = new double[23] { 9059, 7714, 6377, 5610, 5103, 4624, 3812, 3382, 3073, 2798, 2412, 2191, 1900, 1600, 1392, 1180, 981, 764, 491, 246, 99, 46, 0.0 }; G_6500 = new double[23] { 9480, 8189, 6573, 5714, 5255, 4650, 3828, 3484, 3126, 2883, 2531, 2275, 2016, 1716, 1524, 1290, 1086, 854, 549, 278, 116, 54, 0.0 }; G_7000 = new double[23] { 9832, 8567, 6874, 5878, 5336, 4677, 3850, 3511, 3183, 2888, 2549, 2298, 2068, 1801, 1573, 1376, 1167, 933, 607, 314, 135, 63, 0.0 }; G_7500 = new double[23] { 10170, 8880, 7084, 5947, 5402, 4698, 3872, 3520, 3190, 2890, 2571, 2325, 2104, 1848, 1618, 1440, 1229, 1012, 662, 344, 147, 69, 0.0 }; G_8000 = new double[23] { 10566, 9241, 7422, 6073, 5475, 4741, 3960, 3663, 3204, 2928, 2610, 2356, 2160, 1938, 1739, 1538, 1321, 1098, 722, 373, 158, 74, 0.0 }; Matrix<double> p_16000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 18000.0 G_0 = new double[23] { 2198, 2136, 2076, 1999, 1970, 1955, 1900, 1809, 1617, 1402, 1218, 1063, 936, 822, 732, 660, 599, 569, 434, 260, 138, 84, 0.0 }; G_50 = new double[23] { 2377, 2295, 2209, 2043, 2002, 1960, 1886, 1782, 1647, 1408, 1260, 1138, 1042, 922, 824, 744, 684, 620, 474, 310, 177, 117, 0.0 }; G_100 = new double[23] { 2416, 2316, 2220, 2084, 2003, 1944, 1847, 1733, 1653, 1405, 1278, 1157, 1065, 958, 886, 784, 744, 648, 521, 331, 185, 132, 0.0 }; G_300 = new double[23] { 2566, 2353, 2230, 2083, 1952, 1895, 1783, 1646, 1558, 1407, 1285, 1149, 1076, 1009, 933, 821, 775, 661, 527, 322, 175, 119, 0.0 }; G_500 = new double[23] { 2609, 2392, 2232, 1998, 1899, 1775, 1655, 1447, 1350, 1196, 1113, 1025, 938, 826, 732, 648, 579, 454, 297, 214, 142, 66, 0.0 }; G_750 = new double[23] { 2878, 2510, 2247, 1993, 1892, 1754, 1607, 1429, 1277, 1153, 1052, 903, 794, 680, 578, 516, 450, 334, 169, 144, 90, 49, 0.0 }; G_1000 = new double[23] { 3081, 2635, 2312, 1971, 1877, 1728, 1574, 1448, 1279, 1145, 1018, 870, 749, 670, 550, 426, 394, 260, 137, 80, 56, 36, 0.0 }; G_1500 = new double[23] { 3760, 3260, 2858, 2479, 2206, 2032, 1847, 1599, 1404, 1231, 1102, 903, 794, 681, 524, 379, 274, 215, 151, 90, 53, 29, 0.0 }; G_2000 = new double[23] { 4277, 3648, 3255, 2811, 2566, 2287, 2119, 1844, 1640, 1469, 1351, 1222, 1093, 956, 757, 420, 307, 267, 162, 98, 51, 25, 0.0 }; G_2500 = new double[23] { 4845, 4453, 4036, 3480, 3095, 2681, 2407, 2016, 1838, 1623, 1470, 1319, 1149, 1025, 832, 523, 406, 338, 226, 119, 52, 25, 0.0 }; G_3000 = new double[23] { 5472, 4760, 4329, 3736, 3279, 2831, 2533, 2167, 1945, 1728, 1516, 1352, 1216, 1094, 876, 629, 493, 426, 287, 137, 55, 25, 0.0 }; G_3500 = new double[23] { 5983, 5028, 4457, 3802, 3381, 2894, 2615, 2280, 2042, 1825, 1550, 1453, 1243, 1123, 899, 743, 571, 500, 384, 166, 59, 26, 0.0 }; G_4000 = new double[23] { 6459, 5438, 4798, 4007, 3533, 3059, 2685, 2383, 2241, 2004, 1738, 1639, 1446, 1216, 1029, 876, 710, 621, 453, 183, 61, 27, 0.0 }; G_4500 = new double[23] { 6562, 5560, 4925, 4189, 3748, 3266, 2801, 2496, 2325, 2136, 1926, 1736, 1565, 1316, 1102, 957, 751, 676, 482, 195, 64, 28, 0.0 }; G_5000 = new double[23] { 6719, 5688, 5048, 4297, 3973, 3492, 2895, 2606, 2414, 2245, 2083, 1796, 1648, 1388, 1186, 1009, 795, 720, 489, 213, 72, 31, 0.0 }; G_5500 = new double[23] { 6820, 5875, 5205, 4521, 4157, 3696, 3053, 2937, 2717, 2510, 2265, 2077, 1861, 1603, 1360, 1192, 966, 770, 539, 237, 84, 37, 0.0 }; G_6000 = new double[23] { 7067, 6118, 5412, 4662, 4293, 3757, 3123, 3002, 2856, 2696, 2421, 2216, 1969, 1727, 1465, 1300, 1063, 861, 585, 266, 99, 44, 0.0 }; G_6500 = new double[23] { 7342, 6385, 5570, 4764, 4337, 3813, 3140, 3018, 2907, 2781, 2531, 2305, 2073, 1825, 1560, 1376, 1158, 912, 611, 292, 116, 53, 0.0 }; G_7000 = new double[23] { 7625, 6606, 5716, 4835, 4412, 3893, 3166, 3061, 2921, 2794, 2536, 2308, 2080, 1840, 1594, 1415, 1208, 968, 640, 320, 133, 62, 0.0 }; G_7500 = new double[23] { 7930, 6835, 5901, 4941, 4486, 3929, 3216, 3070, 2954, 2636, 2471, 2326, 2095, 1875, 1609, 1443, 1248, 1022, 670, 342, 143, 67, 0.0 }; G_8000 = new double[23] { 8158, 7075, 6071, 5107, 4545, 4009, 3308, 3110, 2958, 2771, 2602, 2356, 2130, 1923, 1698, 1501, 1304, 1084, 711, 364, 152, 71, 0.0 }; Matrix<double> p_18000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 20000.0 G_0 = new double[23] { 1654, 1497, 1378, 1240, 1185, 1179, 1141, 1092, 992, 947, 900, 872, 787, 719, 646, 568, 493, 438, 347, 213, 94, 55, 0.0 }; G_50 = new double[23] { 1692, 1489, 1356, 1213, 1172, 1163, 1123, 1077, 1004, 950, 898, 848, 780, 715, 659, 575, 528, 451, 345, 230, 118, 73, 0.0 }; G_100 = new double[23] { 1706, 1438, 1300, 1188, 1163, 1141, 1114, 1072, 1028, 974, 914, 840, 784, 709, 656, 595, 540, 470, 343, 234, 137, 75, 0.0 }; G_300 = new double[23] { 1739, 1427, 1208, 1130, 1110, 1080, 1070, 1020, 990, 945, 900, 830, 780, 700, 640, 600, 542, 468, 288, 224, 131, 72, 0.0 }; G_500 = new double[23] { 1744, 1338, 1183, 1030, 975, 940, 903, 879, 835, 797, 761, 729, 680, 624, 545, 488, 438, 388, 204, 153, 90, 53, 0.0 }; G_750 = new double[23] { 1796, 1502, 1237, 1106, 1029, 968, 914, 810, 766, 730, 695, 637, 585, 550, 502, 444, 342, 292, 170, 109, 75, 41, 0.0 }; G_1000 = new double[23] { 1882, 1636, 1409, 1200, 1133, 1086, 1026, 965, 876, 817, 761, 650, 607, 561, 508, 419, 293, 246, 126, 74, 49, 27, 0.0 }; G_1500 = new double[23] { 2459, 2183, 1889, 1665, 1549, 1428, 1318, 1166, 1045, 982, 905, 835, 763, 700, 620, 439, 286, 224, 130, 75, 42, 22, 0.0 }; G_2000 = new double[23] { 3017, 2693, 2372, 2088, 1927, 1729, 1584, 1395, 1284, 1221, 1133, 1046, 977, 872, 812, 611, 423, 268, 152, 89, 44, 21, 0.0 }; G_2500 = new double[23] { 3580, 3154, 2849, 2542, 2239, 1971, 1775, 1612, 1465, 1360, 1230, 1154, 1105, 971, 853, 688, 473, 377, 228, 117, 46, 21, 0.0 }; G_3000 = new double[23] { 3946, 3437, 3038, 2636, 2359, 2051, 1906, 1702, 1562, 1423, 1270, 1202, 1157, 1033, 915, 703, 569, 450, 290, 134, 50, 21, 0.0 }; G_3500 = new double[23] { 4162, 3558, 3067, 2640, 2400, 2139, 2011, 1828, 1658, 1510, 1380, 1264, 1190, 1069, 961, 791, 617, 536, 367, 159, 54, 22, 0.0 }; G_4000 = new double[23] { 4261, 3767, 3268, 2802, 2543, 2280, 2138, 1992, 1875, 1702, 1585, 1465, 1341, 1244, 1086, 920, 741, 649, 439, 178, 57, 23, 0.0 }; G_4500 = new double[23] { 4358, 3923, 3486, 2992, 2700, 2470, 2247, 2101, 1915, 1788, 1674, 1539, 1441, 1344, 1129, 992, 819, 690, 457, 189, 61, 24, 0.0 }; G_5000 = new double[23] { 4517, 4139, 3648, 3114, 2874, 2595, 2381, 2211, 1995, 1818, 1716, 1631, 1517, 1390, 1167, 1081, 829, 739, 476, 208, 68, 28, 0.0 }; G_5500 = new double[23] { 4718, 4385, 3876, 3323, 3012, 2758, 2579, 2409, 2214, 2051, 1957, 1834, 1687, 1561, 1328, 1215, 987, 799, 521, 230, 79, 33, 0.0 }; G_6000 = new double[23] { 4922, 4545, 3983, 3420, 3175, 2922, 2691, 2519, 2353, 2183, 2082, 1969, 1796, 1639, 1413, 1311, 1080, 884, 576, 259, 94, 40, 0.0 }; G_6500 = new double[23] { 5124, 4667, 4071, 3515, 3249, 3017, 2812, 2638, 2469, 2247, 2159, 2024, 1893, 1721, 1514, 1362, 1155, 939, 607, 280, 109, 47, 0.0 }; G_7000 = new double[23] { 5323, 4730, 4120, 3536, 3303, 3069, 2878, 2731, 2531, 2333, 2205, 2098, 1934, 1757, 1553, 1404, 1201, 986, 639, 302, 123, 52, 0.0 }; G_7500 = new double[23] { 5538, 4808, 4165, 3580, 3336, 3093, 2892, 2771, 2599, 2396, 2282, 2128, 1964, 1774, 1588, 1436, 1244, 1028, 679, 322, 128, 56, 0.0 }; G_8000 = new double[23] { 5768, 4925, 4220, 3625, 3375, 3155, 2951, 2843, 2697, 2484, 2345, 2177, 2017, 1850, 1667, 1484, 1289, 1074, 699, 330, 130, 57, 0.0 }; Matrix<double> p_20000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); //p = 21000.0 G_0 = new double[23] { 1584, 1462, 1324, 1222, 1184, 1147, 1084, 1008, 939, 904, 821, 733, 644, 570, 501, 440, 415, 366, 309, 194, 84, 45, 0.0 }; G_50 = new double[23] { 1587, 1456, 1301, 1194, 1164, 1119, 1062, 999, 938, 900, 823, 736, 685, 650, 578, 501, 457, 411, 303, 197, 99, 53, 0.0 }; G_100 = new double[23] { 1589, 1439, 1270, 1177, 1124, 1111, 1060, 992, 948, 894, 826, 739, 697, 668, 599, 527, 469, 417, 300, 198, 102, 55, 0.0 }; G_300 = new double[23] { 1601, 1314, 1133, 1114, 1102, 1069, 1037, 959, 925, 857, 801, 730, 700, 669, 600, 510, 473, 399, 278, 169, 97, 56, 0.0 }; G_500 = new double[23] { 1617, 1307, 990, 981, 959, 925, 878, 828, 789, 727, 661, 608, 587, 556, 524, 459, 400, 327, 180, 142, 70, 50, 0.0 }; G_750 = new double[23] { 1643, 1411, 1153, 1045, 1007, 949, 900, 799, 712, 652, 616, 553, 530, 515, 479, 418, 324, 236, 115, 97, 57, 33, 0.0, }; G_1000 = new double[23] { 1787, 1566, 1328, 1211, 1130, 1045, 992, 908, 807, 765, 708, 628, 583, 533, 470, 375, 280, 209, 111, 69, 42, 21, 0.0 }; G_1500 = new double[23] { 2261, 1991, 1764, 1570, 1422, 1344, 1228, 1115, 998, 943, 894, 800, 758, 675, 545, 404, 251, 209, 117, 71, 36, 17, 0.0 }; G_2000 = new double[23] { 2689, 2248, 1983, 1711, 1594, 1490, 1395, 1327, 1225, 1193, 1101, 971, 874, 812, 741, 526, 343, 230, 150, 88, 35, 15, 0.0 }; G_2500 = new double[23] { 2997, 2554, 2223, 1903, 1733, 1609, 1519, 1426, 1314, 1260, 1183, 1109, 988, 900, 816, 623, 445, 349, 214, 102, 36, 15, 0.0 }; G_3000 = new double[23] { 3238, 2847, 2465, 2068, 1880, 1706, 1644, 1547, 1457, 1302, 1193, 1170, 1053, 958, 884, 681, 535, 425, 286, 119, 39, 15, 0.0 }; G_3500 = new double[23] { 3393, 2953, 2590, 2193, 2012, 1859, 1772, 1672, 1543, 1397, 1284, 1215, 1130, 993, 933, 773, 601, 516, 343, 138, 42, 16, 0.0 }; G_4000 = new double[23] { 3482, 3160, 2776, 2356, 2159, 2004, 1924, 1794, 1654, 1541, 1428, 1347, 1256, 1155, 1027, 891, 726, 627, 389, 155, 45, 17, 0.0 }; G_4500 = new double[23] { 3532, 3270, 2896, 2517, 2289, 2142, 2028, 1906, 1752, 1624, 1544, 1500, 1348, 1274, 1100, 973, 809, 674, 421, 167, 49, 18, 0.0 }; G_5000 = new double[23] { 3660, 3436, 3101, 2646, 2456, 2256, 2172, 2016, 1834, 1742, 1660, 1596, 1457, 1350, 1160, 1063, 818, 711, 451, 181, 54, 21, 0.0 }; G_5500 = new double[23] { 3803, 3603, 3229, 2831, 2608, 2447, 2288, 2165, 1973, 1880, 1808, 1726, 1603, 1482, 1300, 1184, 939, 793, 492, 199, 61, 24, 0.0 }; G_6000 = new double[23] { 3955, 3698, 3320, 2917, 2733, 2544, 2379, 2256, 2073, 1965, 1884, 1823, 1695, 1572, 1379, 1277, 1038, 867, 544, 221, 70, 28, 0.0 }; G_6500 = new double[23] { 4116, 3784, 3378, 2975, 2801, 2599, 2485, 2355, 2203, 2056, 1990, 1903, 1780, 1652, 1478, 1334, 1100, 924, 579, 239, 78, 32, 0.0 }; G_7000 = new double[23] { 4275, 3839, 3393, 2985, 2850, 2658, 2529, 2447, 2294, 2117, 2050, 1971, 1835, 1693, 1523, 1373, 1163, 969, 601, 254, 85, 35, 0.0 }; G_7500 = new double[23] { 4471, 3887, 3394, 3000, 2880, 2700, 2589, 2496, 2361, 2216, 2129, 2033, 1872, 1737, 1566, 1403, 1214, 1003, 640, 272, 91, 39, 0.0 }; G_8000 = new double[23] { 4689, 3970, 3405, 3030, 2900, 2740, 2598, 2498, 2410, 2287, 2170, 2067, 1902, 1790, 1622, 1439, 1260, 1026, 667, 290, 96, 42, 0.0 }; Matrix<double> p_21000 = Matrix<double>.Build.DenseOfRowArrays( G_0, G_50, G_100, G_300, G_500, G_750, G_1000, G_1500, G_2000, G_2500, G_3000, G_3500, G_4000, G_4500, G_5000, G_5500, G_6000, G_6500, G_7000, G_7500, G_8000 ); #endregion var PPTEMP = PP * 1000.0; //CONVERT MPA TO KPA var GG = GMASS; double[] P = new double[15] { 100.0, 300.0, 500.0, 1000.0, 2000.0, 3000.0, 5000.0, 7000.0, 10000.0, 12000.0, 14000.0, 16000.0, 18000.0, 20000.0, 21000.0 }; double[] G = new double[21] { 0.0, 50.0, 100.0, 300.0, 500.0, 750.0, 1000.0, 1500.0, 2000.0, 2500.0, 3000.0, 3500.0, 4000.0, 4500.0, 5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0 }; double[] XE = new double[23] { -0.50, -0.40, -0.30, -0.20, -0.15, -0.10, -0.05, 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.60, 0.70, 0.80, 0.90, 1.00 }; int II = 0; int JJ = 0; int KK = 0; //1) FIND THE MATRIX INDEXES FOR INTERPOLATION do { II += 1; if (II >= P.Length - 1) { II = P.Length - 1; } } while (PPTEMP > P[II]); //PPTEMP WILL BE IN BETWEEN P(II - 1) AND P(II) do { JJ = JJ + 1; if (JJ >= G.Length - 1) { JJ = G.Length - 1; } } while (GG > G[JJ]); //GG WILL BE IN BETWEEN G(JJ - 1) AND G(JJ) do { KK = KK + 1; if (KK >= XE.Length - 1) { KK = XE.Length - 1; } } while (XX > XE[KK]); //Debug.WriteLine("pOs:"+II+JJ+KK); var QQ1 = (XX - XE[KK - 1]) / (XE[KK] - XE[KK - 1]) * (QLUT[II - 1, JJ - 1, KK] - QLUT[II - 1, JJ - 1, KK - 1]) + QLUT[II - 1, JJ - 1, KK - 1]; var QQ2 = (XX - XE[KK - 1]) / (XE[KK] - XE[KK - 1]) * (QLUT[II - 1, JJ, KK] - QLUT[II - 1, JJ, KK - 1]) + QLUT[II - 1, JJ, KK - 1]; var Q1 = (GG - G[JJ - 1]) / (G[JJ] - G[JJ - 1]) * (QQ2 - QQ1) + QQ1; QQ1 = (XX - XE[KK - 1]) / (XE[KK] - XE[KK - 1]) * (QLUT[II, JJ - 1, KK] - QLUT[II, JJ - 1, KK - 1]) + QLUT[II, JJ - 1, KK - 1]; QQ2 = (XX - XE[KK - 1]) / (XE[KK] - XE[KK - 1]) * (QLUT[II, JJ, KK] - QLUT[II, JJ, KK - 1]) + QLUT[II, JJ, KK - 1]; var Q2 = (GG - G[JJ - 1]) / (G[JJ] - G[JJ - 1]) * (QQ2 - QQ1) + QQ1; var QCHF = (PPTEMP - P[II - 1]) / (P[II] - P[II - 1]) * (Q2 - Q1) + Q1; QCHF = QCHF * 1000; //KW / M2--->W / M2 QCHF = QCHF * Math.Pow((DE / 0.008), -0.5); //DIAMETER EFFECT VERIFICATION. //0.008 IS THE COMMON DIAMETER USED IN THE GROENEVELD'S LOOK-UP TABLE(2006), NAMELY, D_TABLE=0.008 M. return QCHF; } //int i,j; //double P, G, x; //double[] Tabulated_Pressures = new double[14]; //double[] Tabulated_MassFlux = new double[20]; //double[] Tabulated_Quality = new double[22]; //double[] Reverse_Tabulated_Pressures = new double[14]; //double[] Reverse_Tabulated_MassFlux = new double[20]; //double[] Reverse_Tabulated_Quality = new double[22]; // int iPMatch, iPLow, iPHigh; // int iGMatch, iGLow, iGHigh; // int ixMatch, ixLow, ixHigh; // int plength, glength, xlength; // int x_column, P_row; // double[,] xgp = new double[3,1]; // double pinterp; // double _CHF; // double[,] interpColors= new double[3, 1]; // int Red, Blue, Green, White; // double[] ICU = new double[7]; //string ThreatLevel; public static object CHF_Lin_Terp(double P, double G, double x) { StringBuilder sb = new StringBuilder(); //string msg; if (P < 0.1 || P > 21) { sb.AppendLine( "Input Pressure is outside of table range. Please enter a value 0.1 <= P <= 21 MPa" ); return sb.ToString(); } else if (G < 0 || G > 8000) { sb.AppendLine( "Input mass flux is outside of table range. Please enter a value 0 <= G <= 8000 kg/m^2-s" ); return sb.ToString(); } else if (x < -0.5 || x > 1) { sb.AppendLine( "Input quality is outside of table range. Please enter a value -0.5 <= x <= 1.0" ); return sb.ToString(); } //========================================================================== //The following program takes user input from excel worksheet and then finds and linearly interpolates between the appropriate values. //'The output CHF value is then placed on the sheet below the input with a color coding associtated to the color scheme of the Legend //'as defined in the Groeneveld LUT. //'A table of the values used in interpolation is provided to get a visual check of what the values the program uses //'Much optimazation of the program could be done via condensing repeated ideas into loops but the author did not deem it necessary as //'computational time and storage is not an issue in this program. //'If desired add buttons/options for unit control //'Author: M. Scott Greenwood //'Date: November 16, 2012 //'========================================================================== //'Find all input variables from worksheet //P = Sheet1.Range("P4").Value 'Select user inputed pressure [MPa] - between 0.1 and 21 //G = Sheet1.Range("P5").Value 'Select user inputed mass flux [kg/m^2-s] - between 0 and 8000 //x =Sheet1.Range("P6").Value 'Select user inputed quality [unitless] - between -0.5 and 1.0 // //int plength = 14;// Length of pressure entries //int glength = 20;//Length of flux entries //int xlength = 22;//Length of quality entries var Tabulated_Pressures = new double[] { 0.1, 0.3, 0.5, 1.0, 2.0, 3.0, 5.0, 7.0, 10, 12.0, 14, 16.0, 18, 20.0, 21.0, }; var Tabulated_MassFlux = new double[] { 0, 50, 100, 300, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000 }; var Tabulated_Quality = new double[] { -0.50, -0.40, -0.30, -0.20, -0.15, -0.10, -0.05, 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.60, 0.70, 0.80, 0.90, 1.00 }; double Plow, Phigh, Glow, Ghigh, xlow, xhigh; var plh = GetLowHigh(P, Tabulated_Pressures); Plow = plh.low_value; Phigh = plh.high_value; var glh = GetLowHigh(G, Tabulated_MassFlux); Glow = glh.low_value; Ghigh = glh.high_value; var xlh = GetLowHigh(x, Tabulated_Quality); xlow = xlh.low_value; xhigh = xlh.high_value; //double highCHf,lowCHf; //lowCHf = QLUT[plh.low_index,glh.low_index,xlh.low_index]; //highCHf = QLUT[plh.high_index, glh.high_index, xlh.high_index]; //Finds the CHF value at the low pressure, low quality, and low mass flux and returns the value and cell color //QLUT p g x //double lll = QLUT[plh.low_index, xlh.low_index, glh.low_index]; ////Finds the CHF value at the low pressure, low quality, and high mass flux and returns the value and cell color //double llh = QLUT[plh.low_index, xlh.low_index, glh.high_index]; ////Finds the CHF value at the low pressure, high quality, and low mass flux and returns the value and cell color //double lhl = QLUT[plh.low_index, xlh.high_index, glh.low_index]; ////Finds the CHF value at the low pressure, high quality, and high mass flux and returns the value and cell color //double lhh = QLUT[plh.low_index, xlh.high_index, glh.high_index]; ////Finds the CHF value at the high pressure, low quality, and low mass flux and returns the value and cell color //double hll = QLUT[plh.high_index, xlh.low_index, glh.low_index]; ////Finds the CHF value at the high pressure, low quality, and high mass flux and returns the value and cell color //double hlh = QLUT[plh.high_index, xlh.low_index, glh.high_index]; ////Finds the CHF value at the high pressure, high quality, and low mass flux and returns the value and cell color //double hhl = QLUT[plh.high_index, xlh.high_index, glh.low_index]; //double hhh = QLUT[plh.high_index, xlh.high_index, glh.high_index]; double lll = QLUT[plh.low_index, glh.low_index, xlh.low_index]; //Finds the CHF value at the low pressure, low quality, and high mass flux and returns the value and cell color double llh = QLUT[plh.low_index, glh.low_index, xlh.high_index]; //Finds the CHF value at the low pressure, high quality, and low mass flux and returns the value and cell color double lhl = QLUT[plh.low_index, glh.high_index, xlh.low_index]; //Finds the CHF value at the low pressure, high quality, and high mass flux and returns the value and cell color double lhh = QLUT[plh.low_index, glh.high_index, xlh.high_index]; //Finds the CHF value at the high pressure, low quality, and low mass flux and returns the value and cell color double hll = QLUT[plh.high_index, glh.low_index, xlh.low_index]; //Finds the CHF value at the high pressure, low quality, and high mass flux and returns the value and cell color double hlh = QLUT[plh.high_index, glh.low_index, xlh.high_index]; //Finds the CHF value at the high pressure, high quality, and low mass flux and returns the value and cell color double hhl = QLUT[plh.high_index, glh.high_index, xlh.low_index]; double hhh = QLUT[plh.high_index, glh.high_index, xlh.high_index]; //The following section contains the actual interpolation based on the values obtained from the main Groeneveld table //and put into the small interpolation table displayed at the top of the excel worksheet. // _xgp(0, 0) = lll// //_xgp(0, 1) = llh //_xgp(1, 0) = lhl //_xgp(1, 1) = lhh //_xgp(2, 0) = hll //_xgp(2, 1) = hlh //_xgp(3, 0) = hhl //_xgp(3, 1) = hhh //========================================================================== //Check for identical search locations which would cause normal interpoltion to divide by zero double pinterp; double[] xinterp = new double[4]; double[] ginterp = new double[2]; if (xhigh == xlow && Ghigh == Glow && Phigh == Plow) { pinterp = lll; } else if (xhigh == xlow && Ghigh == Glow) { pinterp = lll - ((lll - hhl) / (Phigh - Plow) * (P - Plow)); } else if (xhigh == xlow && Phigh == Plow) { ginterp[0] = lll - ((lll - lhl) / (Ghigh - Glow) * (G - Glow)); pinterp = ginterp[0]; } else if (Ghigh == Glow && Phigh == Plow) { xinterp[0] = lll - ((lll - llh) / (xhigh - xlow) * (x - xlow)); pinterp = xinterp[0]; } else if (xhigh == xlow) { //Interpolate according to mass flux with new interpolated quality value ginterp[0] = lll - ((lll - lhl) / (Ghigh - Glow) * (G - Glow)); ginterp[1] = hll - ((hll - hhl) / (Ghigh - Glow) * (G - Glow)); //Interpolate according to pressure with new interpolated mass flux value pinterp = ginterp[0] - ((ginterp[0] - ginterp[1]) / (Phigh - Plow) * (P - Plow)); } else if (Ghigh == Glow) { //Interpolate according to quality xinterp[0] = lll - ((lll - llh) / (xhigh - xlow) * (x - xlow)); xinterp[1] = lhl - ((lhl - lhh) / (xhigh - xlow) * (x - xlow)); xinterp[2] = hll - ((hll - hlh) / (xhigh - xlow) * (x - xlow)); xinterp[3] = hhl - ((hhl - hhh) / (xhigh - xlow) * (x - xlow)); // //Interpolate according to pressure with new interpolated mass flux value pinterp = xinterp[0] - ((xinterp[0] - xinterp[3]) / (Phigh - Plow) * (P - Plow)); //pinterp = xinterp(0) - ((xinterp(0) - xinterp(3)) / (Phigh - Plow) * (P - Plow)) } else if (Phigh == Plow) { //Interpolate according to quality xinterp[0] = lll - ((lll - llh) / (xhigh - xlow) * (x - xlow)); xinterp[1] = lhl - ((lhl - lhh) / (xhigh - xlow) * (x - xlow)); xinterp[2] = hll - ((hll - hlh) / (xhigh - xlow) * (x - xlow)); xinterp[3] = hhl - ((hhl - hhh) / (xhigh - xlow) * (x - xlow)); //Interpolate according to mass flux with new interpolated quality value ginterp[0] = xinterp[0] - ((xinterp[0] - xinterp[1]) / (Ghigh - Glow) * (G - Glow)); pinterp = ginterp[0]; } else { //Interpolate according to quality xinterp[0] = lll - ((lll - llh) / (xhigh - xlow) * (x - xlow)); xinterp[1] = lhl - ((lhl - lhh) / (xhigh - xlow) * (x - xlow)); xinterp[2] = hll - ((hll - hlh) / (xhigh - xlow) * (x - xlow)); xinterp[3] = hhl - ((hhl - hhh) / (xhigh - xlow) * (x - xlow)); //Interpolate according to mass flux with new interpolated quality value ginterp[0] = xinterp[0] - ((xinterp[0] - xinterp[1]) / (Ghigh - Glow) * (G - Glow)); ginterp[1] = xinterp[2] - ((xinterp[2] - xinterp[3]) / (Ghigh - Glow) * (G - Glow)); //Interpolate according to pressure with new interpolated mass flux value pinterp = ginterp[0] - ((ginterp[0] - ginterp[1]) / (Phigh - Plow) * (P - Plow)); } return pinterp; } static SortValue GetLowHigh(double v, double[] data) { SortValue return_value = new SortValue(); //double low = 0; //double high = 0; for (int i = 0; i < data.Length - 1; i++) { if (v >= data[i] && v <= data[i + 1]) { if (v == data[i]) { return_value.low_value = data[i]; return_value.high_value = data[i]; return_value.low_index = i; return_value.high_index = i; } else if (v == data[i + 1]) { return_value.low_value = data[i + 1]; return_value.high_value = data[i + 1]; return_value.low_index = i + 1; return_value.high_index = i + 1; } else { return_value.low_value = data[i]; return_value.high_value = data[i + 1]; return_value.low_index = i; return_value.high_index = i + 1; } break; } } return return_value; } } struct SortValue { public int high_index; public int low_index; public double high_value; public double low_value; }
LookUpTable2006查表法CHF代码(C#)
分类: