15 const int DeltaDegree = 6;
17 double MMCollisionInt::delta[8] = {0.0, 0.25, 0.50, 0.75, 1.0,
21 doublereal quadInterp(doublereal x0, doublereal* x, doublereal* y)
23 doublereal dx21, dx32, dx31, dy32, dy21, a;
29 a = (dx21*dy32 - dy21*dx32)/(dx21*dx31*dx32);
30 return a*(x0 - x[0])*(x0 - x[1]) + (dy21/dx21)*(x0 - x[1]) + y[1];
33 double MMCollisionInt::tstar22[37] = {
34 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,
35 1.2, 1.4, 1.6, 1.8, 2.0, 2.5, 3.0, 3.5, 4.0,
36 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 14.0, 16.0,
37 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 50.0, 75.0, 100.0
40 double MMCollisionInt::omega22_table[37*8] = {
41 4.1005, 4.266, 4.833, 5.742, 6.729, 8.624, 10.34, 11.89,
42 3.2626, 3.305, 3.516, 3.914, 4.433, 5.57, 6.637, 7.618,
43 2.8399, 2.836, 2.936, 3.168, 3.511, 4.329, 5.126, 5.874,
44 2.531, 2.522, 2.586, 2.749, 3.004, 3.64, 4.282, 4.895,
45 2.2837, 2.277, 2.329, 2.46, 2.665, 3.187, 3.727, 4.249,
46 2.0838, 2.081, 2.13, 2.243, 2.417, 2.862, 3.329, 3.786,
47 1.922, 1.924, 1.97, 2.072, 2.225, 2.614, 3.028, 3.435,
48 1.7902, 1.795, 1.84, 1.934, 2.07, 2.417, 2.788, 3.156,
49 1.6823, 1.689, 1.733, 1.82, 1.944, 2.258, 2.596, 2.933,
50 1.5929, 1.601, 1.644, 1.725, 1.838, 2.124, 2.435, 2.746,
51 1.4551, 1.465, 1.504, 1.574, 1.67, 1.913, 2.181, 2.451,
52 1.3551, 1.365, 1.4, 1.461, 1.544, 1.754, 1.989, 2.228,
53 1.28, 1.289, 1.321, 1.374, 1.447, 1.63, 1.838, 2.053,
54 1.2219, 1.231, 1.259, 1.306, 1.37, 1.532, 1.718, 1.912,
55 1.1757, 1.184, 1.209, 1.251, 1.307, 1.451, 1.618, 1.795,
56 1.0933, 1.1, 1.119, 1.15, 1.193, 1.304, 1.435, 1.578,
57 1.0388, 1.044, 1.059, 1.083, 1.117, 1.204, 1.31, 1.428,
58 0.99963, 1.004, 1.016, 1.035, 1.062, 1.133, 1.22, 1.319,
59 0.96988, 0.9732, 0.983, 0.9991, 1.021, 1.079, 1.153, 1.236,
60 0.92676, 0.9291, 0.936, 0.9473, 0.9628, 1.005, 1.058, 1.121,
61 0.89616, 0.8979, 0.903, 0.9114, 0.923, 0.9545, 0.9955, 1.044,
62 0.87272, 0.8741, 0.878, 0.8845, 0.8935, 0.9181, 0.9505, 0.9893,
63 0.85379, 0.8549, 0.858, 0.8632, 0.8703, 0.8901, 0.9164, 0.9482,
64 0.83795, 0.8388, 0.8414, 0.8456, 0.8515, 0.8678, 0.8895, 0.916,
65 0.82435, 0.8251, 0.8273, 0.8308, 0.8356, 0.8493, 0.8676, 0.8901,
66 0.80184, 0.8024, 0.8039, 0.8065, 0.8101, 0.8201, 0.8337, 0.8504,
67 0.78363, 0.784, 0.7852, 0.7872, 0.7899, 0.7976, 0.8081, 0.8212,
68 0.76834, 0.7687, 0.7696, 0.7712, 0.7733, 0.7794, 0.7878, 0.7983,
69 0.75518, 0.7554, 0.7562, 0.7575, 0.7592, 0.7642, 0.7711, 0.7797,
70 0.74364, 0.7438, 0.7445, 0.7455, 0.747, 0.7512, 0.7569, 0.7642,
71 0.71982, 0.72, 0.7204, 0.7211, 0.7221, 0.725, 0.7289, 0.7339,
72 0.70097, 0.7011, 0.7014, 0.7019, 0.7026, 0.7047, 0.7076, 0.7112,
73 0.68545, 0.6855, 0.6858, 0.6861, 0.6867, 0.6883, 0.6905, 0.6932,
74 0.67232, 0.6724, 0.6726, 0.6728, 0.6733, 0.6743, 0.6762, 0.6784,
75 0.65099, 0.651, 0.6512, 0.6513, 0.6516, 0.6524, 0.6534, 0.6546,
76 0.61397, 0.6141, 0.6143, 0.6145, 0.6147, 0.6148, 0.6148, 0.6147,
77 0.5887, 0.5889, 0.5894, 0.59, 0.5903, 0.5901, 0.5895, 0.5885
81 double MMCollisionInt::tstar[39] = {
82 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,
83 1.2, 1.4, 1.6, 1.8, 2.0, 2.5, 3.0, 3.5, 4.0,
84 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 14.0, 16.0,
85 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 50.0, 75.0, 100.0, 500.0
88 double MMCollisionInt::astar_table[39*8] = {
89 1.0065, 1.0840, 1.0840, 1.0840, 1.0840, 1.0840, 1.0840, 1.0840,
90 1.0231, 1.0660, 1.0380, 1.0400, 1.0430, 1.0500, 1.0520, 1.0510,
91 1.0424, 1.0450, 1.0480, 1.0520, 1.0560, 1.0650, 1.0660, 1.0640,
92 1.0719, 1.0670, 1.0600, 1.0550, 1.0580, 1.0680, 1.0710, 1.0710,
93 1.0936, 1.0870, 1.0770, 1.0690, 1.0680, 1.0750, 1.0780, 1.0780,
94 1.1053, 1.0980, 1.0880, 1.0800, 1.0780, 1.0820, 1.0840, 1.0840,
95 1.1104, 1.1040, 1.0960, 1.0890, 1.0860, 1.0890, 1.0900, 1.0900,
96 1.1114, 1.1070, 1.1000, 1.0950, 1.0930, 1.0950, 1.0960, 1.0950,
97 1.1104, 1.1070, 1.1020, 1.0990, 1.0980, 1.1000, 1.1000, 1.0990,
98 1.1086, 1.1060, 1.1020, 1.1010, 1.1010, 1.1050, 1.1050, 1.1040,
99 1.1063, 1.1040, 1.1030, 1.1030, 1.1040, 1.1080, 1.1090, 1.1080,
100 1.1020, 1.1020, 1.1030, 1.1050, 1.1070, 1.1120, 1.1150, 1.1150,
101 1.0985, 1.0990, 1.1010, 1.1040, 1.1080, 1.1150, 1.1190, 1.1200,
102 1.0960, 1.0960, 1.0990, 1.1030, 1.1080, 1.1160, 1.1210, 1.1240,
103 1.0943, 1.0950, 1.0990, 1.1020, 1.1080, 1.1170, 1.1230, 1.1260,
104 1.0934, 1.0940, 1.0970, 1.1020, 1.1070, 1.1160, 1.1230, 1.1280,
105 1.0926, 1.0940, 1.0970, 1.0990, 1.1050, 1.1150, 1.1230, 1.1300,
106 1.0934, 1.0950, 1.0970, 1.0990, 1.1040, 1.1130, 1.1220, 1.1290,
107 1.0948, 1.0960, 1.0980, 1.1000, 1.1030, 1.1120, 1.1190, 1.1270,
108 1.0965, 1.0970, 1.0990, 1.1010, 1.1040, 1.1100, 1.1180, 1.1260,
109 1.0997, 1.1000, 1.1010, 1.1020, 1.1050, 1.1100, 1.1160, 1.1230,
110 1.1025, 1.1030, 1.1040, 1.1050, 1.1060, 1.1100, 1.1150, 1.1210,
111 1.1050, 1.1050, 1.1060, 1.1070, 1.1080, 1.1110, 1.1150, 1.1200,
112 1.1072, 1.1070, 1.1080, 1.1080, 1.1090, 1.1120, 1.1150, 1.1190,
113 1.1091, 1.1090, 1.1090, 1.1100, 1.1110, 1.1130, 1.1150, 1.1190,
114 1.1107, 1.1110, 1.1110, 1.1110, 1.1120, 1.1140, 1.1160, 1.1190,
115 1.1133, 1.1140, 1.1130, 1.1140, 1.1140, 1.1150, 1.1170, 1.1190,
116 1.1154, 1.1150, 1.1160, 1.1160, 1.1160, 1.1170, 1.1180, 1.1200,
117 1.1172, 1.1170, 1.1170, 1.1180, 1.1180, 1.1180, 1.1190, 1.1200,
118 1.1186, 1.1190, 1.1190, 1.1190, 1.1190, 1.1190, 1.1200, 1.1210,
119 1.1199, 1.1200, 1.1200, 1.1200, 1.1200, 1.1210, 1.1210, 1.1220,
120 1.1223, 1.1220, 1.1220, 1.1220, 1.1220, 1.1230, 1.1230, 1.1240,
121 1.1243, 1.1240, 1.1240, 1.1240, 1.1240, 1.1240, 1.1250, 1.1250,
122 1.1259, 1.1260, 1.1260, 1.1260, 1.1260, 1.1260, 1.1260, 1.1260,
123 1.1273, 1.1270, 1.1270, 1.1270, 1.1270, 1.1270, 1.1270, 1.1280,
124 1.1297, 1.1300, 1.1300, 1.1300, 1.1300, 1.1300, 1.1300, 1.1290,
125 1.1339, 1.1340, 1.1340, 1.1350, 1.1350, 1.1340, 1.1340, 1.1320,
126 1.1364, 1.1370, 1.1370, 1.1380, 1.1390, 1.1380, 1.1370, 1.1350,
127 1.14187, 1.14187, 1.14187, 1.14187, 1.14187, 1.14187, 1.14187,
131 double MMCollisionInt::bstar_table[39*8] = {
132 1.1852, 1.2963, 1.2963, 1.2963, 1.2963, 1.2963,1.2963, 1.2963,
133 1.1960, 1.216, 1.237, 1.269, 1.285, 1.290, 1.297, 1.294,
134 1.2451, 1.257, 1.340, 1.389, 1.366, 1.327, 1.314, 1.278,
135 1.2900, 1.294, 1.272, 1.258, 1.262, 1.282, 1.290, 1.299,
136 1.2986, 1.291, 1.284, 1.278, 1.277, 1.288, 1.294, 1.297,
137 1.2865, 1.281, 1.276, 1.272, 1.277, 1.286, 1.292, 1.298,
138 1.2665, 1.264, 1.261, 1.263, 1.269, 1.284, 1.292, 1.298,
139 1.2455, 1.244, 1.248, 1.255, 1.262, 1.278, 1.289, 1.296,
140 1.2253, 1.225, 1.234, 1.240, 1.252, 1.271, 1.284, 1.295,
141 1.2078, 1.210, 1.216, 1.227, 1.242, 1.264, 1.281, 1.292,
142 1.1919, 1.192, 1.205, 1.216, 1.230, 1.256, 1.273, 1.287,
143 1.1678, 1.172, 1.181, 1.195, 1.209, 1.237, 1.261, 1.277,
144 1.1496, 1.155, 1.161, 1.174, 1.189, 1.221, 1.246, 1.266,
145 1.1366, 1.141, 1.147, 1.159, 1.174, 1.202, 1.231, 1.256,
146 1.1270, 1.130, 1.138, 1.148, 1.162, 1.191, 1.218, 1.242,
147 1.1197, 1.122, 1.129, 1.140, 1.149, 1.178, 1.205, 1.231,
148 1.1080, 1.110, 1.116, 1.122, 1.132, 1.154, 1.180, 1.205,
149 1.1016, 1.103, 1.107, 1.112, 1.120, 1.138, 1.160, 1.183,
150 1.0980, 1.099, 1.102, 1.106, 1.112, 1.127, 1.145, 1.165,
151 1.0958, 1.097, 1.099, 1.102, 1.107, 1.119, 1.135, 1.153,
152 1.0935, 1.094, 1.095, 1.097, 1.100, 1.109, 1.120, 1.134,
153 1.0925, 1.092, 1.094, 1.095, 1.098, 1.104, 1.112, 1.122,
154 1.0922, 1.092, 1.093, 1.094, 1.096, 1.100, 1.106, 1.115,
155 1.0922, 1.092, 1.093, 1.093, 1.095, 1.098, 1.103, 1.110,
156 1.0923, 1.092, 1.093, 1.093, 1.094, 1.097, 1.101, 1.106,
157 1.0923, 1.092, 1.092, 1.093, 1.094, 1.096, 1.099, 1.103,
158 1.0927, 1.093, 1.093, 1.093, 1.094, 1.095, 1.098, 1.101,
159 1.0930, 1.093, 1.093, 1.093, 1.094, 1.094, 1.096, 1.099,
160 1.0933, 1.094, 1.093, 1.094, 1.094, 1.095, 1.096, 1.098,
161 1.0937, 1.093, 1.094, 1.094, 1.094, 1.094, 1.096, 1.097,
162 1.0939, 1.094, 1.094, 1.094, 1.094, 1.095, 1.095, 1.097,
163 1.0943, 1.094, 1.094, 1.094, 1.095, 1.095, 1.096, 1.096,
164 1.0944, 1.095, 1.094, 1.094, 1.094, 1.095, 1.095, 1.096,
165 1.0944, 1.094, 1.095, 1.094, 1.094, 1.095, 1.096, 1.096,
166 1.0943, 1.095, 1.094, 1.094, 1.095, 1.095, 1.095, 1.095,
167 1.0941, 1.094, 1.094, 1.094, 1.094, 1.094, 1.094, 1.096,
168 1.0947, 1.095, 1.094, 1.094, 1.093, 1.093, 1.094, 1.095,
169 1.0957, 1.095, 1.094, 1.093, 1.092, 1.093, 1.093, 1.094,
170 1.10185, 1.10185, 1.10185, 1.10185, 1.10185, 1.10185, 1.10185,
174 double MMCollisionInt::cstar_table[39*8] = {
175 0.8889, 0.77778, 0.77778,0.77778,0.77778,0.77778,0.77778,0.77778,
176 0.88575, 0.8988, 0.8378, 0.8029, 0.7876, 0.7805, 0.7799, 0.7801,
177 0.87268, 0.8692,0.8647,0.8479,0.8237,0.7975,0.7881,0.7784,
178 0.85182, 0.8525,0.8366,0.8198,0.8054,0.7903,0.7839,0.782,
179 0.83542, 0.8362,0.8306,0.8196,0.8076,0.7918,0.7842,0.7806,
180 0.82629, 0.8278,0.8252,0.8169,0.8074,0.7916,0.7838,0.7802,
181 0.82299, 0.8249,0.823,0.8165,0.8072,0.7922,0.7839,0.7798,
182 0.82357, 0.8257,0.8241,0.8178,0.8084,0.7927,0.7839,0.7794,
183 0.82657, 0.828,0.8264,0.8199,0.8107,0.7939,0.7842,0.7796,
184 0.8311, 0.8234,0.8295,0.8228,0.8136,0.796,0.7854,0.7798,
185 0.8363, 0.8366,0.8342,0.8267,0.8168,0.7986,0.7864,0.7805,
186 0.84762, 0.8474,0.8438,0.8358,0.825,0.8041,0.7904,0.7822,
187 0.85846, 0.8583,0.853,0.8444,0.8336,0.8118,0.7957,0.7854,
188 0.8684, 0.8674,0.8619,0.8531,0.8423,0.8186,0.8011,0.7898,
189 0.87713, 0.8755,0.8709,0.8616,0.8504,0.8265,0.8072,0.7939,
190 0.88479, 0.8831,0.8779,0.8695,0.8578,0.8338,0.8133,0.799,
191 0.89972, 0.8986,0.8936,0.8846,0.8742,0.8504,0.8294,0.8125,
192 0.91028, 0.9089,0.9043,0.8967,0.8869,0.8649,0.8438,0.8253,
193 0.91793, 0.9166,0.9125,0.9058,0.897,0.8768,0.8557,0.8372,
194 0.92371, 0.9226,0.9189,0.9128,0.905,0.8861,0.8664,0.8484,
195 0.93135, 0.9304,0.9274,0.9226,0.9164,0.9006,0.8833,0.8662,
196 0.93607, 0.9353,0.9329,0.9291,0.924,0.9109,0.8958,0.8802,
197 0.93927, 0.9387,0.9366,0.9334,0.9292,0.9162,0.905,0.8911,
198 0.94149, 0.9409,0.9393,0.9366,0.9331,0.9236,0.9122,0.8997,
199 0.94306, 0.9426,0.9412,0.9388,0.9357,0.9276,0.9175,0.9065,
200 0.94419, 0.9437,0.9425,0.9406,0.938,0.9308,0.9219,0.9119,
201 0.94571, 0.9455,0.9445,0.943,0.9409,0.9353,0.9283,0.9201,
202 0.94662, 0.9464,0.9456,0.9444,0.9428,0.9382,0.9325,0.9258,
203 0.94723, 0.9471,0.9464,0.9455,0.9442,0.9405,0.9355,0.9298,
204 0.94764, 0.9474,0.9469,0.9462,0.945,0.9418,0.9378,0.9328,
205 0.9479, 0.9478,0.9474,0.9465,0.9457,0.943,0.9394,0.9352,
206 0.94827, 0.9481,0.948,0.9472,0.9467,0.9447,0.9422,0.9391,
207 0.94842, 0.9484,0.9481,0.9478,0.9472,0.9458,0.9437,0.9415,
208 0.94852, 0.9484,0.9483,0.948,0.9475,0.9465,0.9449,0.943,
209 0.94861, 0.9487,0.9484,0.9481,0.9479,0.9468,0.9455,0.943,
210 0.94872, 0.9486,0.9486,0.9483,0.9482,0.9475,0.9464,0.9452,
211 0.94881, 0.9488,0.9489,0.949,0.9487,0.9482,0.9476,0.9468,
212 0.94863, 0.9487,0.9489,0.9491,0.9493,0.9491,0.9483,0.9476,
213 0.94444, 0.94444,0.94444,0.94444,0.94444,0.94444,0.94444,0.94444
216 void MMCollisionInt::init(doublereal tsmin, doublereal tsmax,
int log_level)
218 m_loglevel = log_level;
219 if (DEBUG_MODE_ENABLED && m_loglevel > 0) {
220 writelog(
"Collision Integral Polynomial Fits\n");
225 for (
int n = 0; n < 37; n++) {
226 if (tsmin > tstar[n+1]) {
229 if (tsmax > tstar[n+1]) {
233 if (m_nmin < 0 || m_nmin >= 36 || m_nmax < 0 || m_nmax > 36) {
237 if (DEBUG_MODE_ENABLED && m_loglevel > 0) {
238 writelogf(
"T*_min = %g\n", tstar[m_nmin + 1]);
239 writelogf(
"T*_max = %g\n", tstar[m_nmax + 1]);
241 m_logTemp.resize(37);
242 doublereal rmserr, e22 = 0.0, ea = 0.0, eb = 0.0, ec = 0.0;
244 if (DEBUG_MODE_ENABLED && m_loglevel > 0) {
245 writelog(
"Collision integral fits at each tabulated T* vs. delta*.\n"
246 "These polynomial fits are used to interpolate between "
247 "columns (delta*)\n in the Monchick and Mason tables."
248 " They are only used for nonzero delta*.\n");
250 writelog(
"polynomial coefficients not printed (log_level < 4)\n");
254 for (
int i = 0; i < 37; i++) {
255 m_logTemp[i] = log(tstar[i+1]);
258 rmserr = fitDelta(0, i, DeltaDegree,
DATA_PTR(c));
259 if (DEBUG_MODE_ENABLED && log_level > 3) {
260 writelogf(
"\ndelta* fit at T* = %.6g\n", tstar[i+1]);
263 m_o22poly.push_back(c);
264 e22 = std::max(e22, rmserr);
266 rmserr = fitDelta(1, i, DeltaDegree,
DATA_PTR(c));
267 m_apoly.push_back(c);
268 if (DEBUG_MODE_ENABLED && log_level > 3) {
271 ea = std::max(ea, rmserr);
273 rmserr = fitDelta(2, i, DeltaDegree,
DATA_PTR(c));
274 m_bpoly.push_back(c);
275 if (DEBUG_MODE_ENABLED && log_level > 3) {
278 eb = std::max(eb, rmserr);
280 rmserr = fitDelta(3, i, DeltaDegree,
DATA_PTR(c));
281 m_cpoly.push_back(c);
282 if (DEBUG_MODE_ENABLED && log_level > 3) {
285 ec = std::max(ec, rmserr);
287 if (DEBUG_MODE_ENABLED && log_level > 0) {
288 writelogf(
"max RMS errors in fits vs. delta*:\n"
289 " omega_22 = %12.6g \n"
292 " C* = %12.6g \n", e22, ea, eb, ec);
297 doublereal MMCollisionInt::fitDelta(
int table,
int ntstar,
int degree, doublereal* c)
300 doublereal* begin = 0;
304 begin = omega22_table + 8*ntstar;
307 begin = astar_table + 8*(ntstar + 1);
310 begin = bstar_table + 8*(ntstar + 1);
313 begin = cstar_table + 8*(ntstar + 1);
322 doublereal MMCollisionInt::omega22(
double ts,
double deltastar)
325 for (i = 0; i < 37; i++)
if (ts < tstar22[i]) {
329 i1 = std::max(i - 1, 0);
336 for (i = i1; i < i2; i++) {
337 if (deltastar == 0.0) {
338 values[i-i1] = omega22_table[8*i];
343 return quadInterp(log(ts),
DATA_PTR(m_logTemp)
347 doublereal MMCollisionInt::astar(
double ts,
double deltastar)
350 for (i = 0; i < 37; i++)
if (ts < tstar22[i]) {
354 i1 = std::max(i - 1, 0);
361 for (i = i1; i < i2; i++) {
362 if (deltastar == 0.0) {
363 values[i-i1] = astar_table[8*(i + 1)];
368 return quadInterp(log(ts),
DATA_PTR(m_logTemp)
372 doublereal MMCollisionInt::bstar(
double ts,
double deltastar)
375 for (i = 0; i < 37; i++)
if (ts < tstar22[i]) {
379 i1 = std::max(i - 1, 0);
386 for (i = i1; i < i2; i++) {
387 if (deltastar == 0.0) {
388 values[i-i1] = bstar_table[8*(i + 1)];
393 return quadInterp(log(ts),
DATA_PTR(m_logTemp) + i1,
397 doublereal MMCollisionInt::cstar(
double ts,
double deltastar)
400 for (i = 0; i < 37; i++)
if (ts < tstar22[i]) {
404 i1 = std::max(i - 1,0);
411 for (i = i1; i < i2; i++) {
412 if (deltastar == 0.0) {
413 values[i-i1] = cstar_table[8*(i + 1)];
418 return quadInterp(log(ts),
DATA_PTR(m_logTemp) + i1,
422 void MMCollisionInt::fit_omega22(
int degree, doublereal deltastar,
425 int i, n = m_nmax - m_nmin + 1;
430 doublereal* logT =
DATA_PTR(m_logTemp) + m_nmin;
431 for (i = 0; i < n; i++) {
432 if (deltastar == 0.0) {
433 values[i] = omega22_table[8*(i + m_nmin)];
440 DATA_PTR(w), degree, ndeg, 0.0, o22);
441 if (DEBUG_MODE_ENABLED && m_loglevel > 0 && rmserr > 0.01) {
442 writelogf(
"Warning: RMS error = %12.6g in omega_22 fit"
443 "with delta* = %12.6g\n", rmserr, deltastar);
447 void MMCollisionInt::fit(
int degree, doublereal deltastar,
448 doublereal* a, doublereal* b, doublereal* c)
450 int i, n = m_nmax - m_nmin + 1;
455 doublereal* logT =
DATA_PTR(m_logTemp) + m_nmin;
456 for (i = 0; i < n; i++) {
457 if (deltastar == 0.0) {
458 values[i] = astar_table[8*(i + m_nmin + 1)];
467 for (i = 0; i < n; i++) {
468 if (deltastar == 0.0) {
469 values[i] = bstar_table[8*(i + m_nmin + 1)];
478 for (i = 0; i < n; i++) {
479 if (deltastar == 0.0) {
480 values[i] = cstar_table[8*(i + m_nmin + 1)];
488 if (DEBUG_MODE_ENABLED && m_loglevel > 2) {
489 writelogf(
"\nT* fit at delta* = %.6g\n", deltastar);
493 writelogf(
"Warning: RMS error = %12.6g for A* fit\n", rmserr);
498 writelogf(
"Warning: RMS error = %12.6g for B* fit\n", rmserr);
503 writelogf(
"Warning: RMS error = %12.6g for C* fit\n", rmserr);
std::string vec2str(const vector_fp &v, const std::string &fmt, const std::string &sep)
Convert a vector to a string (separated by commas)
Various templated functions that carry out common vector operations (see Templated Utility Functions)...
R poly5(D x, R *c)
Templated evaluation of a polynomial of order 5.
C interface for Fortran DPOLFT subroutine.
Monk and Monchick collision integrals.
doublereal polyfit(int n, doublereal *x, doublereal *y, doublereal *w, int maxdeg, int &ndeg, doublereal eps, doublereal *r)
Fits a polynomial function to a set of data points.
void writelogf(const char *fmt,...)
Write a formatted message to the screen.
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
Contains declarations for string manipulation functions within Cantera.
#define DATA_PTR(vec)
Creates a pointer to the start of the raw data for a vector.
void writelog(const std::string &msg)
Write a message to the screen.