Manticore  Version 1.5.3
Physics of Molecular Clouds
Dust.cc
Go to the documentation of this file.
1 
8 #include <cmath>
9 
10 #include "Dust.h"
11 #include "manticore.h"
12 
13 namespace mu = mutils;
14 
15 
16 namespace manticore {
17 
19 namespace dust {
20 
29 { // {nu0(Hz), kappa0(cm^2/g @ g/d=100)}
30  {8.321743e+09, 2.286790e-05},
31  {1.248261e+10, 4.744500e-05},
32  {1.872392e+10, 9.843610e-05},
33  {2.304483e+10, 1.430450e-04},
34  {2.723480e+10, 1.932250e-04},
35  {4.048416e+10, 3.944150e-04},
36  {5.991655e+10, 7.987750e-04},
37  {8.559507e+10, 1.517920e-03},
38  {8.942755e+10, 1.642440e-03},
39  {1.097373e+11, 2.373980e-03},
40  {1.152241e+11, 2.591900e-03},
41  {1.331476e+11, 3.362340e-03},
42  {1.497914e+11, 4.156390e-03},
43  {1.997218e+11, 6.975990e-03},
44  {2.304483e+11, 9.025520e-03},
45  {2.995828e+11, 1.369980e-02},
46  {4.279754e+11, 2.569960e-02},
47  {5.991655e+11, 5.039920e-02},
48  {8.559507e+11, 1.009980e-01},
49  {1.325589e+12, 2.169970e-01},
50  {1.621122e+12, 3.076000e-01},
51  {1.890111e+12, 4.066510e-01},
52  {2.204437e+12, 5.256380e-01},
53  {2.569312e+12, 6.786530e-01},
54  {2.995828e+12, 8.649890e-01},
55  {3.492859e+12, 1.180770e+00},
56  {4.072078e+12, 1.581190e+00},
57  {4.747743e+12, 2.109970e+00},
58 /* lambda < 70 micron:
59  {5.535526e+12, 2.798060e+00},
60  {6.453742e+12, 3.866420e+00},
61  {6.968660e+12, 4.210170e+00},
62  {7.525308e+12, 4.269800e+00},
63  {8.125382e+12, 4.341700e+00},
64  {8.772556e+12, 4.506770e+00},
65  {1.022816e+13, 5.454030e+00},
66  {1.192606e+13, 7.666310e+00},
67  {1.390174e+13, 1.094070e+01},
68  {1.501665e+13, 1.347080e+01},
69  {1.621122e+13, 1.579020e+01},
70  {1.750920e+13, 1.510520e+01},
71  {1.890111e+13, 1.336780e+01},
72  {2.040751e+13, 1.354000e+01},
73  {2.204437e+13, 1.603100e+01},
74  {2.379532e+13, 1.965150e+01},
75  {2.569312e+13, 2.513110e+01},
76  {2.670067e+13, 2.548350e+01},
77  {2.773904e+13, 2.480020e+01},
78  {2.883368e+13, 2.521440e+01},
79  {2.995828e+13, 2.579990e+01},
80  {3.053850e+13, 2.679960e+01},
81  {3.113194e+13, 2.207110e+01},
82  {3.234883e+13, 1.721290e+01},
83  {3.361565e+13, 1.431590e+01},
84  {3.492859e+13, 1.396440e+01},
85  {3.771657e+13, 1.331150e+01},
86  {4.072631e+13, 1.268920e+01},
87  {4.397222e+13, 1.209670e+01},
88  {4.747743e+13, 1.153170e+01},
89  {5.127208e+13, 1.369520e+01},
90  {5.535526e+13, 1.290380e+01},
91  {5.977308e+13, 1.419280e+01},
92  {6.453742e+13, 1.628710e+01},
93  {6.968660e+13, 1.760470e+01},
94  {7.525308e+13, 1.929400e+01},
95  {7.819966e+13, 2.029280e+01},
96  {8.125382e+13, 2.133790e+01},
97  {8.443693e+13, 2.322900e+01},
98  {8.775124e+13, 2.533260e+01},
99  {9.116944e+13, 2.974520e+01},
100  {9.474451e+13, 4.313220e+01},
101  {9.844981e+13, 6.182070e+01},
102  {1.022816e+14, 6.525970e+01},
103  {1.063105e+14, 3.606000e+01},
104  {1.104656e+14, 3.394000e+01},
105  {1.192606e+14, 3.894270e+01},
106  {1.390819e+14, 5.063830e+01},
107  {1.621122e+14, 6.449570e+01},
108  {1.890111e+14, 7.974990e+01},
109  {2.204437e+14, 9.807170e+01},
110  {2.569312e+14, 1.143450e+02},
111  {2.995828e+14, 1.309990e+02},
112  {3.153503e+14, 1.370850e+02},
113  {3.328697e+14, 1.438060e+02},
114  {3.524503e+14, 1.512710e+02},
115  {3.744784e+14, 1.596120e+02},
116  {3.994437e+14, 1.689970e+02},
117  {4.279754e+14, 1.796410e+02},
118  {4.608965e+14, 1.918230e+02},
119  {4.993046e+14, 2.059090e+02},
120  {5.446959e+14, 2.223980e+02},
121  {5.991655e+14, 2.419780e+02},
122  {6.657394e+14, 2.656360e+02},
123  {7.489569e+14, 2.948310e+02},
124  {8.559507e+14, 3.318290e+02},
125  {9.986092e+14, 3.803510e+02},
126  {1.198331e+15, 4.469770e+02},
127  {1.497914e+15, 5.446050e+02},
128  {1.997218e+15, 7.025750e+02},
129  {2.995828e+15, 1.005980e+03},
130  {5.991655e+15, 1.858230e+03},
131 */
132 };
133 
138 { // {nu0(Hz), kappa0(cm^2/g @ g/d=100)}
139  {2.997925e+10, 6.553000e-05},
140  {3.067756e+10, 6.815000e-05},
141  {3.139211e+10, 7.086000e-05},
142  {3.212335e+10, 7.368000e-05},
143  {3.287158e+10, 7.660000e-05},
144  {3.363726e+10, 7.961000e-05},
145  {3.442076e+10, 8.273000e-05},
146  {3.522254e+10, 8.596000e-05},
147  {3.604297e+10, 8.933000e-05},
148  {3.688251e+10, 9.282000e-05},
149  {3.774165e+10, 9.645000e-05},
150  {3.862076e+10, 1.002000e-04},
151  {3.952032e+10, 1.041000e-04},
152  {4.044090e+10, 1.082000e-04},
153  {4.138288e+10, 1.124000e-04},
154  {4.234680e+10, 1.168000e-04},
155  {4.333319e+10, 1.214000e-04},
156  {4.434255e+10, 1.261000e-04},
157  {4.537546e+10, 1.311000e-04},
158  {4.643237e+10, 1.362000e-04},
159  {4.751393e+10, 1.415000e-04},
160  {4.862064e+10, 1.470000e-04},
161  {4.975313e+10, 1.528000e-04},
162  {5.091203e+10, 1.587000e-04},
163  {5.209795e+10, 1.649000e-04},
164  {5.331151e+10, 1.714000e-04},
165  {5.455325e+10, 1.781000e-04},
166  {5.582395e+10, 1.850000e-04},
167  {5.712433e+10, 1.923000e-04},
168  {5.845491e+10, 1.998000e-04},
169  {5.981649e+10, 2.076000e-04},
170  {6.120974e+10, 2.157000e-04},
171  {6.263553e+10, 2.241000e-04},
172  {6.409451e+10, 2.329000e-04},
173  {6.558747e+10, 2.420000e-04},
174  {6.711511e+10, 2.514000e-04},
175  {6.867846e+10, 2.612000e-04},
176  {7.027813e+10, 2.714000e-04},
177  {7.191527e+10, 2.820000e-04},
178  {7.359037e+10, 2.931000e-04},
179  {7.530449e+10, 3.045000e-04},
180  {7.705856e+10, 3.163000e-04},
181  {7.885353e+10, 3.287000e-04},
182  {8.069023e+10, 3.414000e-04},
183  {8.256971e+10, 3.547000e-04},
184  {8.449309e+10, 3.685000e-04},
185  {8.646105e+10, 3.829000e-04},
186  {8.847507e+10, 3.978000e-04},
187  {9.053591e+10, 4.133000e-04},
188  {9.264463e+10, 4.294000e-04},
189  {9.480263e+10, 4.461000e-04},
190  {9.701079e+10, 4.634000e-04},
191  {9.927067e+10, 4.814000e-04},
192  {1.015829e+11, 5.001000e-04},
193  {1.039491e+11, 5.195000e-04},
194  {1.063705e+11, 5.396000e-04},
195  {1.088480e+11, 5.606000e-04},
196  {1.113837e+11, 5.823000e-04},
197  {1.139778e+11, 6.049000e-04},
198  {1.166326e+11, 6.283000e-04},
199  {1.193494e+11, 6.526000e-04},
200  {1.221295e+11, 6.778000e-04},
201  {1.249744e+11, 7.039000e-04},
202  {1.278853e+11, 7.310000e-04},
203  {1.308640e+11, 7.591000e-04},
204  {1.339124e+11, 7.883000e-04},
205  {1.370317e+11, 8.187000e-04},
206  {1.402236e+11, 8.502000e-04},
207  {1.434894e+11, 8.829000e-04},
208  {1.468318e+11, 9.169000e-04},
209  {1.502523e+11, 9.521000e-04},
210  {1.537523e+11, 9.887000e-04},
211  {1.573334e+11, 1.027000e-03},
212  {1.609978e+11, 1.066000e-03},
213  {1.647483e+11, 1.107000e-03},
214  {1.685856e+11, 1.149000e-03},
215  {1.725126e+11, 1.193000e-03},
216  {1.765313e+11, 1.239000e-03},
217  {1.806425e+11, 1.287000e-03},
218  {1.848505e+11, 1.336000e-03},
219  {1.891566e+11, 1.387000e-03},
220  {1.935618e+11, 1.440000e-03},
221  {1.980711e+11, 1.495000e-03},
222  {2.026844e+11, 1.552000e-03},
223  {2.074057e+11, 1.612000e-03},
224  {2.122364e+11, 1.674000e-03},
225  {2.171811e+11, 1.738000e-03},
226  {2.222397e+11, 1.804000e-03},
227  {2.274153e+11, 1.873000e-03},
228  {2.327130e+11, 1.944000e-03},
229  {2.381327e+11, 2.018000e-03},
230  {2.436802e+11, 2.096000e-03},
231  {2.493574e+11, 2.176000e-03},
232  {2.551642e+11, 2.259000e-03},
233  {2.611091e+11, 2.345000e-03},
234  {2.671899e+11, 2.434000e-03},
235  {2.734135e+11, 2.527000e-03},
236  {2.797824e+11, 2.623000e-03},
237  {2.862992e+11, 2.724000e-03},
238  {2.929692e+11, 2.828000e-03},
239  {2.997925e+11, 2.936000e-03},
240  {3.067756e+11, 3.048000e-03},
241  {3.139211e+11, 3.165000e-03},
242  {3.212335e+11, 3.286000e-03},
243  {3.287158e+11, 3.412000e-03},
244  {3.363726e+11, 3.542000e-03},
245  {3.442076e+11, 3.678000e-03},
246  {3.522254e+11, 3.818000e-03},
247  {3.604297e+11, 3.964000e-03},
248  {3.688251e+11, 4.115000e-03},
249  {3.774165e+11, 4.272000e-03},
250  {3.862076e+11, 4.435000e-03},
251  {3.952032e+11, 4.604000e-03},
252  {4.044090e+11, 4.781000e-03},
253  {4.138288e+11, 4.965000e-03},
254  {4.234680e+11, 5.157000e-03},
255  {4.333319e+11, 5.358000e-03},
256  {4.434255e+11, 5.568000e-03},
257  {4.537546e+11, 5.789000e-03},
258  {4.643237e+11, 6.019000e-03},
259  {4.751393e+11, 6.261000e-03},
260  {4.862064e+11, 6.515000e-03},
261  {4.975313e+11, 6.781000e-03},
262  {5.091203e+11, 7.059000e-03},
263  {5.209795e+11, 7.351000e-03},
264  {5.331151e+11, 7.658000e-03},
265  {5.455325e+11, 7.980000e-03},
266  {5.582395e+11, 8.318000e-03},
267  {5.712433e+11, 8.674000e-03},
268  {5.845491e+11, 9.048000e-03},
269  {5.981649e+11, 9.441000e-03},
270  {6.120974e+11, 9.854000e-03},
271  {6.263553e+11, 1.029000e-02},
272  {6.409451e+11, 1.075000e-02},
273  {6.558747e+11, 1.123000e-02},
274  {6.711511e+11, 1.174000e-02},
275  {6.867846e+11, 1.227000e-02},
276  {7.027813e+11, 1.283000e-02},
277  {7.191527e+11, 1.342000e-02},
278  {7.359037e+11, 1.405000e-02},
279  {7.530449e+11, 1.471000e-02},
280  {7.705856e+11, 1.541000e-02},
281  {7.885353e+11, 1.614000e-02},
282  {8.069023e+11, 1.692000e-02},
283  {8.256971e+11, 1.774000e-02},
284  {8.449309e+11, 1.861000e-02},
285  {8.646105e+11, 1.953000e-02},
286  {8.847507e+11, 2.050000e-02},
287  {9.053591e+11, 2.153000e-02},
288  {9.264463e+11, 2.262000e-02},
289  {9.480263e+11, 2.377000e-02},
290  {9.701079e+11, 2.499000e-02},
291  {9.927067e+11, 2.628000e-02},
292  {1.015829e+12, 2.764000e-02},
293  {1.039491e+12, 2.909000e-02},
294  {1.063705e+12, 3.063000e-02},
295  {1.088480e+12, 3.225000e-02},
296  {1.113837e+12, 3.399000e-02},
297  {1.139778e+12, 3.583000e-02},
298  {1.166326e+12, 3.778000e-02},
299  {1.193494e+12, 3.983000e-02},
300  {1.221295e+12, 4.187000e-02},
301  {1.249744e+12, 4.395000e-02},
302  {1.278853e+12, 4.604000e-02},
303  {1.308640e+12, 4.825000e-02},
304  {1.339124e+12, 5.056000e-02},
305  {1.370317e+12, 5.300000e-02},
306  {1.402236e+12, 5.556000e-02},
307  {1.434894e+12, 5.825000e-02},
308  {1.468318e+12, 6.108000e-02},
309  {1.502523e+12, 6.404000e-02},
310  {1.537523e+12, 6.716000e-02},
311  {1.573334e+12, 7.043000e-02},
312  {1.609978e+12, 7.388000e-02},
313  {1.647483e+12, 7.751000e-02},
314  {1.685856e+12, 8.133000e-02},
315  {1.725126e+12, 8.537000e-02},
316  {1.765313e+12, 8.963000e-02},
317  {1.806425e+12, 9.415000e-02},
318  {1.848505e+12, 9.895000e-02},
319  {1.891566e+12, 1.041000e-01},
320  {1.935618e+12, 1.096000e-01},
321  {1.980711e+12, 1.155000e-01},
322  {2.026844e+12, 1.219000e-01},
323  {2.074057e+12, 1.288000e-01},
324  {2.122364e+12, 1.361000e-01},
325  {2.171811e+12, 1.433000e-01},
326  {2.222397e+12, 1.499000e-01},
327  {2.274153e+12, 1.560000e-01},
328  {2.327130e+12, 1.623000e-01},
329  {2.381327e+12, 1.691000e-01},
330  {2.436802e+12, 1.765000e-01},
331  {2.493574e+12, 1.845000e-01},
332  {2.551642e+12, 1.931000e-01},
333  {2.611091e+12, 2.024000e-01},
334  {2.671899e+12, 2.123000e-01},
335  {2.734135e+12, 2.228000e-01},
336  {2.797824e+12, 2.339000e-01},
337  {2.862992e+12, 2.457000e-01},
338  {2.929692e+12, 2.582000e-01},
339  {2.997925e+12, 2.715000e-01},
340  {3.067756e+12, 2.855000e-01},
341  {3.139211e+12, 3.003000e-01},
342  {3.212335e+12, 3.160000e-01},
343  {3.287158e+12, 3.325000e-01},
344  {3.363726e+12, 3.499000e-01},
345  {3.442076e+12, 3.684000e-01},
346  {3.522254e+12, 3.881000e-01},
347  {3.604297e+12, 4.088000e-01},
348  {3.688251e+12, 4.308000e-01},
349  {3.774165e+12, 4.540000e-01},
350  {3.862076e+12, 4.785000e-01},
351  {3.952032e+12, 5.044000e-01},
352  {4.044090e+12, 5.318000e-01},
353  {4.138288e+12, 5.607000e-01},
354  {4.234680e+12, 5.911000e-01},
355  {4.333319e+12, 6.235000e-01},
356 /* lambda < 70 micron:
357  {4.434255e+12, 6.578000e-01},
358  {4.537546e+12, 6.941000e-01},
359  {4.643237e+12, 7.323000e-01},
360  {4.751393e+12, 7.728000e-01},
361  {4.862064e+12, 8.157000e-01},
362  {4.975313e+12, 8.611000e-01},
363  {5.091203e+12, 9.091000e-01},
364  {5.209795e+12, 9.600000e-01},
365  {5.331151e+12, 1.014000e+00},
366  {5.455325e+12, 1.071000e+00},
367  {5.582395e+12, 1.132000e+00},
368  {5.712433e+12, 1.197000e+00},
369  {5.845491e+12, 1.265000e+00},
370  {5.981649e+12, 1.338000e+00},
371  {6.120974e+12, 1.415000e+00},
372  {6.263553e+12, 1.498000e+00},
373  {6.409451e+12, 1.586000e+00},
374  {6.558747e+12, 1.680000e+00},
375  {6.711511e+12, 1.780000e+00},
376  {6.867846e+12, 1.887000e+00},
377  {7.027813e+12, 2.001000e+00},
378  {7.191527e+12, 2.122000e+00},
379  {7.359037e+12, 2.249000e+00},
380  {7.530449e+12, 2.383000e+00},
381  {7.705856e+12, 2.523000e+00},
382  {7.885353e+12, 2.668000e+00},
383 */
384 };
385 
390 { // {nu0(Hz), kappa0(cm^2/g @ g/d=100)}
391  {2.997925e+10, 8.052000e-05},
392  {3.067756e+10, 8.377000e-05},
393  {3.139211e+10, 8.715000e-05},
394  {3.212335e+10, 9.066000e-05},
395  {3.287158e+10, 9.430000e-05},
396  {3.363726e+10, 9.806000e-05},
397  {3.442076e+10, 1.019000e-04},
398  {3.522254e+10, 1.060000e-04},
399  {3.604297e+10, 1.102000e-04},
400  {3.688251e+10, 1.145000e-04},
401  {3.774165e+10, 1.191000e-04},
402  {3.862076e+10, 1.238000e-04},
403  {3.952032e+10, 1.286000e-04},
404  {4.044090e+10, 1.337000e-04},
405  {4.138288e+10, 1.390000e-04},
406  {4.234680e+10, 1.444000e-04},
407  {4.333319e+10, 1.501000e-04},
408  {4.434255e+10, 1.560000e-04},
409  {4.537546e+10, 1.621000e-04},
410  {4.643237e+10, 1.684000e-04},
411  {4.751393e+10, 1.750000e-04},
412  {4.862064e+10, 1.818000e-04},
413  {4.975313e+10, 1.889000e-04},
414  {5.091203e+10, 1.963000e-04},
415  {5.209795e+10, 2.039000e-04},
416  {5.331151e+10, 2.118000e-04},
417  {5.455325e+10, 2.200000e-04},
418  {5.582395e+10, 2.286000e-04},
419  {5.712433e+10, 2.374000e-04},
420  {5.845491e+10, 2.466000e-04},
421  {5.981649e+10, 2.561000e-04},
422  {6.120974e+10, 2.659000e-04},
423  {6.263553e+10, 2.761000e-04},
424  {6.409451e+10, 2.867000e-04},
425  {6.558747e+10, 2.977000e-04},
426  {6.711511e+10, 3.091000e-04},
427  {6.867846e+10, 3.208000e-04},
428  {7.027813e+10, 3.331000e-04},
429  {7.191527e+10, 3.457000e-04},
430  {7.359037e+10, 3.589000e-04},
431  {7.530449e+10, 3.725000e-04},
432  {7.705856e+10, 3.865000e-04},
433  {7.885353e+10, 4.011000e-04},
434  {8.069023e+10, 4.161000e-04},
435  {8.256971e+10, 4.318000e-04},
436  {8.449309e+10, 4.479000e-04},
437  {8.646105e+10, 4.647000e-04},
438  {8.847507e+10, 4.821000e-04},
439  {9.053591e+10, 5.000000e-04},
440  {9.264463e+10, 5.186000e-04},
441  {9.480263e+10, 5.379000e-04},
442  {9.701079e+10, 5.578000e-04},
443  {9.927067e+10, 5.784000e-04},
444  {1.015829e+11, 5.998000e-04},
445  {1.039491e+11, 6.219000e-04},
446  {1.063705e+11, 6.447000e-04},
447  {1.088480e+11, 6.684000e-04},
448  {1.113837e+11, 6.929000e-04},
449  {1.139778e+11, 7.183000e-04},
450  {1.166326e+11, 7.445000e-04},
451  {1.193494e+11, 7.716000e-04},
452  {1.221295e+11, 7.997000e-04},
453  {1.249744e+11, 8.286000e-04},
454  {1.278853e+11, 8.586000e-04},
455  {1.308640e+11, 8.896000e-04},
456  {1.339124e+11, 9.217000e-04},
457  {1.370317e+11, 9.550000e-04},
458  {1.402236e+11, 9.894000e-04},
459  {1.434894e+11, 1.025000e-03},
460  {1.468318e+11, 1.062000e-03},
461  {1.502523e+11, 1.100000e-03},
462  {1.537523e+11, 1.140000e-03},
463  {1.573334e+11, 1.180000e-03},
464  {1.609978e+11, 1.223000e-03},
465  {1.647483e+11, 1.266000e-03},
466  {1.685856e+11, 1.312000e-03},
467  {1.725126e+11, 1.359000e-03},
468  {1.765313e+11, 1.408000e-03},
469  {1.806425e+11, 1.458000e-03},
470  {1.848505e+11, 1.510000e-03},
471  {1.891566e+11, 1.564000e-03},
472  {1.935618e+11, 1.620000e-03},
473  {1.980711e+11, 1.678000e-03},
474  {2.026844e+11, 1.738000e-03},
475  {2.074057e+11, 1.801000e-03},
476  {2.122364e+11, 1.865000e-03},
477  {2.171811e+11, 1.932000e-03},
478  {2.222397e+11, 2.001000e-03},
479  {2.274153e+11, 2.073000e-03},
480  {2.327130e+11, 2.147000e-03},
481  {2.381327e+11, 2.224000e-03},
482  {2.436802e+11, 2.304000e-03},
483  {2.493574e+11, 2.388000e-03},
484  {2.551642e+11, 2.473000e-03},
485  {2.611091e+11, 2.562000e-03},
486  {2.671899e+11, 2.655000e-03},
487  {2.734135e+11, 2.750000e-03},
488  {2.797824e+11, 2.850000e-03},
489  {2.862992e+11, 2.953000e-03},
490  {2.929692e+11, 3.060000e-03},
491  {2.997925e+11, 3.171000e-03},
492  {3.067756e+11, 3.286000e-03},
493  {3.139211e+11, 3.406000e-03},
494  {3.212335e+11, 3.530000e-03},
495  {3.287158e+11, 3.659000e-03},
496  {3.363726e+11, 3.793000e-03},
497  {3.442076e+11, 3.931000e-03},
498  {3.522254e+11, 4.075000e-03},
499  {3.604297e+11, 4.224000e-03},
500  {3.688251e+11, 4.379000e-03},
501  {3.774165e+11, 4.539000e-03},
502  {3.862076e+11, 4.705000e-03},
503  {3.952032e+11, 4.878000e-03},
504  {4.044090e+11, 5.058000e-03},
505  {4.138288e+11, 5.246000e-03},
506  {4.234680e+11, 5.442000e-03},
507  {4.333319e+11, 5.646000e-03},
508  {4.434255e+11, 5.861000e-03},
509  {4.537546e+11, 6.086000e-03},
510  {4.643237e+11, 6.321000e-03},
511  {4.751393e+11, 6.567000e-03},
512  {4.862064e+11, 6.826000e-03},
513  {4.975313e+11, 7.097000e-03},
514  {5.091203e+11, 7.380000e-03},
515  {5.209795e+11, 7.678000e-03},
516  {5.331151e+11, 7.990000e-03},
517  {5.455325e+11, 8.318000e-03},
518  {5.582395e+11, 8.663000e-03},
519  {5.712433e+11, 9.026000e-03},
520  {5.845491e+11, 9.407000e-03},
521  {5.981649e+11, 9.808000e-03},
522  {6.120974e+11, 1.023000e-02},
523  {6.263553e+11, 1.067000e-02},
524  {6.409451e+11, 1.114000e-02},
525  {6.558747e+11, 1.163000e-02},
526  {6.711511e+11, 1.215000e-02},
527  {6.867846e+11, 1.269000e-02},
528  {7.027813e+11, 1.327000e-02},
529  {7.191527e+11, 1.387000e-02},
530  {7.359037e+11, 1.451000e-02},
531  {7.530449e+11, 1.518000e-02},
532  {7.705856e+11, 1.590000e-02},
533  {7.885353e+11, 1.665000e-02},
534  {8.069023e+11, 1.744000e-02},
535  {8.256971e+11, 1.828000e-02},
536  {8.449309e+11, 1.917000e-02},
537  {8.646105e+11, 2.011000e-02},
538  {8.847507e+11, 2.110000e-02},
539  {9.053591e+11, 2.215000e-02},
540  {9.264463e+11, 2.326000e-02},
541  {9.480263e+11, 2.444000e-02},
542  {9.701079e+11, 2.568000e-02},
543  {9.927067e+11, 2.700000e-02},
544  {1.015829e+12, 2.840000e-02},
545  {1.039491e+12, 2.988000e-02},
546  {1.063705e+12, 3.145000e-02},
547  {1.088480e+12, 3.312000e-02},
548  {1.113837e+12, 3.489000e-02},
549  {1.139778e+12, 3.678000e-02},
550  {1.166326e+12, 3.877000e-02},
551  {1.193494e+12, 4.087000e-02},
552  {1.221295e+12, 4.297000e-02},
553  {1.249744e+12, 4.508000e-02},
554  {1.278853e+12, 4.722000e-02},
555  {1.308640e+12, 4.948000e-02},
556  {1.339124e+12, 5.184000e-02},
557  {1.370317e+12, 5.433000e-02},
558  {1.402236e+12, 5.694000e-02},
559  {1.434894e+12, 5.969000e-02},
560  {1.468318e+12, 6.257000e-02},
561  {1.502523e+12, 6.560000e-02},
562  {1.537523e+12, 6.877000e-02},
563  {1.573334e+12, 7.211000e-02},
564  {1.609978e+12, 7.563000e-02},
565  {1.647483e+12, 7.933000e-02},
566  {1.685856e+12, 8.322000e-02},
567  {1.725126e+12, 8.734000e-02},
568  {1.765313e+12, 9.168000e-02},
569  {1.806425e+12, 9.628000e-02},
570  {1.848505e+12, 1.012000e-01},
571  {1.891566e+12, 1.064000e-01},
572  {1.935618e+12, 1.120000e-01},
573  {1.980711e+12, 1.181000e-01},
574  {2.026844e+12, 1.248000e-01},
575  {2.074057e+12, 1.322000e-01},
576  {2.122364e+12, 1.402000e-01},
577  {2.171811e+12, 1.483000e-01},
578  {2.222397e+12, 1.551000e-01},
579  {2.274153e+12, 1.611000e-01},
580  {2.327130e+12, 1.673000e-01},
581  {2.381327e+12, 1.741000e-01},
582  {2.436802e+12, 1.818000e-01},
583  {2.493574e+12, 1.901000e-01},
584  {2.551642e+12, 1.992000e-01},
585  {2.611091e+12, 2.090000e-01},
586  {2.671899e+12, 2.195000e-01},
587  {2.734135e+12, 2.308000e-01},
588  {2.797824e+12, 2.428000e-01},
589  {2.862992e+12, 2.556000e-01},
590  {2.929692e+12, 2.693000e-01},
591  {2.997925e+12, 2.838000e-01},
592  {3.067756e+12, 2.992000e-01},
593  {3.139211e+12, 3.154000e-01},
594  {3.212335e+12, 3.327000e-01},
595  {3.287158e+12, 3.510000e-01},
596  {3.363726e+12, 3.703000e-01},
597  {3.442076e+12, 3.909000e-01},
598  {3.522254e+12, 4.128000e-01},
599  {3.604297e+12, 4.358000e-01},
600  {3.688251e+12, 4.602000e-01},
601  {3.774165e+12, 4.858000e-01},
602  {3.862076e+12, 5.127000e-01},
603  {3.952032e+12, 5.411000e-01},
604  {4.044090e+12, 5.708000e-01},
605  {4.138288e+12, 6.020000e-01},
606  {4.234680e+12, 6.348000e-01},
607  {4.333319e+12, 6.694000e-01},
608 /* lambda < 70 micron:
609  {4.434255e+12, 7.058000e-01},
610  {4.537546e+12, 7.442000e-01},
611  {4.643237e+12, 7.844000e-01},
612  {4.751393e+12, 8.267000e-01},
613  {4.862064e+12, 8.714000e-01},
614  {4.975313e+12, 9.183000e-01},
615  {5.091203e+12, 9.678000e-01},
616  {5.209795e+12, 1.020000e+00},
617  {5.331151e+12, 1.075000e+00},
618  {5.455325e+12, 1.134000e+00},
619  {5.582395e+12, 1.196000e+00},
620  {5.712433e+12, 1.261000e+00},
621  {5.845491e+12, 1.330000e+00},
622  {5.981649e+12, 1.403000e+00},
623  {6.120974e+12, 1.481000e+00},
624  {6.263553e+12, 1.564000e+00},
625  {6.409451e+12, 1.653000e+00},
626  {6.558747e+12, 1.747000e+00},
627  {6.711511e+12, 1.848000e+00},
628  {6.867846e+12, 1.955000e+00},
629  {7.027813e+12, 2.069000e+00},
630  {7.191527e+12, 2.191000e+00},
631  {7.359037e+12, 2.319000e+00},
632  {7.530449e+12, 2.454000e+00},
633  {7.705856e+12, 2.595000e+00},
634  {7.885353e+12, 2.740000e+00},
635 */
636 };
637 
638 
639 // Register new models here as needed.
642 {
643  {"OH5", dust::modelOH5},
644  {"DL3", dust::modelDL3},
645  {"DL5", dust::modelDL5},
646 };
647 
648 
655 {
656  // Find dust model option.
657  for (auto &entry: opts) {
658  if (entry.shortName == name) {
659  entry.helpText += "\n(Available models:";
660  for (auto &model: modelMap) { entry.helpText += " " + model.first; }
661  entry.helpText += ")";
662  }
663  }
664 }
665 
666 } // namespace dust
667 
668 
669 
670 void Dust::setModel(const std::string &model, double rho)
671 {
672  const char *const fn = "Dust::setModel";
673 
674  // Special power law construct pow:nu0_GHz:kappa0:beta.
675  if (model.find("pow:") == 0) {
676  double nu0 = 1.0, kappa0 = 0.0, beta = 1.0;
677  if (3 != sscanf(model.c_str(), "pow:%lf:%lf:%lf", &nu0, &kappa0, &beta)) {
678  MU_ERROR(fn, "Invalid power law '%s', using default.", model);
679  } else {
680  Dust::setModel(1e9*nu0, kappa0, beta);
681  return;
682  }
683  }
684 
685  auto mp = dust::modelMap.find(model);
686  if (mp == dust::modelMap.end()) {
687  mp = dust::modelMap.begin();
688  MU_ERROR(fn, "Unknown dust model '%s', using '%s'", model, mp->first);
689  }
690 
691  name_ = mp->first;
692  rho_ = rho;
693 
694  auto table = mp->second;
695  if (rho != 100.0) {
696  double scale = 100.0/rho;
697  for (auto &entry: table) { entry.second *= scale; }
698  }
699 
700  // Release old model.
701  if (spline_) {
702  gsl_spline_free(spline_);
703  spline_ = nullptr;
704  }
705 
706  // For small tables use the logarithm to better track power laws.
707  ln_ = (table.size() < 128);
708 
709  // Limit interpolator table size.
710  spline_ = initSpline(table, ln_,
711  std::max(1UL, std::min(table.size()/64, 4UL)));
712 
713  // Invalidate fixed power law.
714  opacity_ = Opacity{0.0, 0.0, 0.0};
715 }
716 
717 
718 void Dust::setModel(double nu0, double kappa0, double beta)
719 {
720  char name[64];
721  snprintf(name, sizeof(name), "pow:%.6g:%.6g:%.6g", 1e-9*nu0, kappa0, beta);
722  name_ = name;
723 
724  opacity_ = Opacity{1.0/nu0, kappa0, beta};
725 
726  // Ratio not meaningful here.
727  rho_ = 0.0;
728 
729  // Free old model.
730  if (spline_) {
731  gsl_spline_free(spline_);
732  spline_ = nullptr;
733  ln_ = false;
734  }
735 }
736 
737 
745 double Dust::kappa(double nu, gsl_interp_accel *acc) const
746 {
747  if (spline_) {
748  double k = gsl_spline_eval(spline_, nu, acc);
749  return (ln_ ? exp(k) : k);
750  } else {
751  // Fixed power law.
752  return opacity_.kappa0 * pow(nu*opacity_.inu0, opacity_.beta);
753  }
754 }
755 
756 } // namespace manticore
#define MU_ERROR(src, msg,...)
Log a message at level Log::ERROR.
Definition: Log.h:164
const std::string & name() const noexcept
Current model name.
Definition: Dust.h:65
void setModel(const std::string &model, double rho=100.0)
Set dust properties model (table-based).
Definition: Dust.cc:670
Fixed power-law opacity parameters.
Definition: Dust.h:72
Package namespace.
Definition: Detector.cc:15
T min(T... args)
std::string name_
Current model name.
Definition: Dust.h:75
void printModels(std::vector< mu::CommandLine::Option > &opts, char name)
Add available dust model names to options summary.
Definition: Dust.cc:654
std::map< std::string, manticore::tableType > modelMap
Definition: Dust.cc:641
MathUtils package.
Definition: CommandLine.cc:10
T max(T... args)
const manticore::tableType modelDL3
Draine & Lee R=3.1 model.
Definition: Dust.cc:137
T find(T... args)
const manticore::tableType modelDL5
Draine & Lee R=5.5 model.
Definition: Dust.cc:389
double kappa(double nu, gsl_interp_accel *acc=nullptr) const
Gas/dust extinction opacity (cm^2/g).
Definition: Dust.cc:745
T c_str(T... args)
double rho_
Current model gas-to-dust ratio.
Definition: Dust.h:78
const manticore::tableType modelOH5
OH5 model.
Definition: Dust.cc:28
gsl_spline * initSpline(const tableType &table, bool ln, unsigned stride)
Initializes cubic spline interpolator.
Definition: manticore.cc:81
gsl_spline * spline_
Table interpolator.
Definition: Dust.h:84
Opacity opacity_
Fixed power law.
Definition: Dust.h:81
double rho() const noexcept
Current model gas-to-dust ratio.
Definition: Dust.h:68
bool ln_
Whether to interpolate in log space.
Definition: Dust.h:87