cloudy trunk
Loading...
Searching...
No Matches
abundances.cpp
Go to the documentation of this file.
1/* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2 * others. For conditions of distribution and use see copyright notice in license.txt */
3/*AbundancesPrt print all abundances, both gas phase and grains */
4/*AbundancesSet sets initial abundances after parameters are entered by reading input */
5/*AbundancesTable interpolate on table of points to do 'element table' command, */
6/*PrtElem print chemical composition at start of calculation */
7#include "cddefines.h"
8#include "physconst.h"
9#include "phycon.h"
10#include "called.h"
11#include "stopcalc.h"
12#include "thermal.h"
13#include "trace.h"
14#include "elementnames.h"
15#include "dense.h"
16#include "radius.h"
17#include "grainvar.h"
18#include "abund.h"
19
20/*PrtElem print chemical composition at start of calculation */
21STATIC void PrtElem(
22 /* the job to do, the options are "init", "fill", "flus" */
23 const char *chJob,
24 /* label for the element */
25 const char *chLabl,
26 /* its abundance */
27 double abund_prt);
28
29/*AbundancesPrt print all abundances, both gas phase and grains */
30void AbundancesPrt( void )
31{
32 long int i;
33 double GrainNumRelHydrSilicate ,
34 GrainNumRelHydrCarbonaceous ,
35 GrainNumRelHydr_PAH,
36 GrainMassRelHydrSilicate,
37 GrainMassRelHydrCarbonaceous,
38 GrainMassRelHydr_PAH;
39
40 DEBUG_ENTRY( "AbundancesPrt()" );
41
42 /* this is main loop to print abundances of each element */
43 if( called.lgTalk )
44 {
45 PrtElem("initG"," ",0.);/* initialize print routine for gas*/
46 for( i=0; i < LIMELM; i++ )
47 {
48 if( dense.lgElmtOn[i] )
49 {
50 /* fill in print buffer with abundances */
51 PrtElem("fill",(char*)elementnames.chElementSym[i],
52 abund.solar[i]);
53 }
54 }
55
56 /* flush the print buffer */
57 PrtElem("flus"," ",0.);
58 /* final carriage return */
59 fprintf( ioQQQ, " \n" );
60
61 /* now grains if present */
62 if( gv.lgDustOn() )
63 {
64 /* we will first print the total abundances of each element locked up in grains */
65 /* initialize print routine for dust*/
66 PrtElem("initD"," ",0.);
67 for( i=0; i < LIMELM; i++ )
68 {
69 if( gv.elmSumAbund[i]>SMALLFLOAT )
70 {
71 /* fill in print buffer with abundances */
72 PrtElem("fill",(char*)elementnames.chElementSym[i],
73 gv.elmSumAbund[i]/dense.gas_phase[ipHYDROGEN]);
74 }
75 }
76 /* flush the print buffer */
77 PrtElem("flus"," ",0.);
78 /* final carriage return */
79 fprintf( ioQQQ, " \n" );
80
81 /* this is used to store grain number density per hydrogen */
82 GrainNumRelHydrSilicate = 0.;
83 GrainNumRelHydrCarbonaceous = 0;
84 GrainNumRelHydr_PAH = 0.;
85 GrainMassRelHydrSilicate = 0.;
86 GrainMassRelHydrCarbonaceous = 0;
87 GrainMassRelHydr_PAH = 0.;
88
89 for( size_t nd=0; nd < gv.bin.size(); nd++ )
90 {
91
92 /* number density of grains per hydrogen, the ratio
93 * gv.bin[nd]->IntVol/gv.bin[nd]->AvVol is the number of grain particles
94 * per H at standard grain abundance*/
95 realnum DensityNumberPerHydrogen =
96 (gv.bin[nd]->IntVol/gv.bin[nd]->AvVol)*gv.bin[nd]->dstAbund /
97 gv.bin[nd]->GrnDpth;
98 /* mass of grains per hydrogen */
99 realnum DensityMassPerHydrogen =
100 gv.bin[nd]->IntVol*gv.bin[nd]->dustp[0]*gv.bin[nd]->dstAbund/
101 (realnum)ATOMIC_MASS_UNIT / gv.bin[nd]->GrnDpth;
102
103 /* >>chng 06 mar 05, fix expression for calculating grain number density, PvH */
104 if( gv.bin[nd]->matType == MAT_CAR || gv.bin[nd]->matType == MAT_CAR2 )
105 {
106 /* carbonaceous grains */
107 GrainNumRelHydrCarbonaceous += DensityNumberPerHydrogen;
108 GrainMassRelHydrCarbonaceous += DensityMassPerHydrogen;
109 }
110 else if( gv.bin[nd]->matType == MAT_SIL || gv.bin[nd]->matType == MAT_SIL2 )
111 {
112 /* silicate grains */
113 GrainNumRelHydrSilicate += DensityNumberPerHydrogen;
114 GrainMassRelHydrSilicate += DensityMassPerHydrogen;
115 }
116 else if( gv.bin[nd]->matType == MAT_PAH || gv.bin[nd]->matType == MAT_PAH2 )
117 {
118 /* PAHs - full abundance - remove possible factor accounting for
119 * variation of abundances with physical conditions - this will
120 * be the PAH abundance with scale factor of unity */
121 GrainNumRelHydr_PAH += DensityNumberPerHydrogen;
122 GrainMassRelHydr_PAH += DensityMassPerHydrogen;
123 }
124 else
126 }
127
128 /* now print total number of grains of each type */
129 fprintf(ioQQQ," Number of grains per hydrogen (scale=1) Mass of grains per hydrogen (scale=1)\n");
130 fprintf(ioQQQ," Carbonaceous: %.3f Silicate: %.3f PAH: %.3f Carbonaceous: %.3f Silicate: %.3f PAH: %.3f\n\n" ,
131 log10( MAX2( 1e-30, GrainNumRelHydrCarbonaceous ) ) ,
132 log10( MAX2( 1e-30, GrainNumRelHydrSilicate ) ) ,
133 log10( MAX2( 1e-30, GrainNumRelHydr_PAH ) ) ,
134 log10( MAX2( 1e-30, GrainMassRelHydrCarbonaceous ) ) ,
135 log10( MAX2( 1e-30, GrainMassRelHydrSilicate ) ) ,
136 log10( MAX2( 1e-30, GrainMassRelHydr_PAH ) ) );
137 }
138 }
139 return;
140}
141
142/*AbundancesSet print all abundances, both gas phase and grains */
144{
145 long int i,
146 nelem;
147 double fac;
148 static bool lgFirstCall=true;
149 static bool lgElOnOff[LIMELM];
150
151 DEBUG_ENTRY( "AbundancesSet()" );
152
153 /* if this is the first call to this routine in this core load,
154 * save the state of the lgElmOn array, so that it is possible
155 * to turn off elements in later models, but not turn on an
156 * element that was initially turned off. This is necessary since
157 * the Create... routines that create space for elements will
158 * not be revisited in later models. You can turn off an initially
159 * enabled element, but not turn a disabled one on. */
160
161 if( lgFirstCall )
162 {
163 /* first call - save the initial state of the lgElmtOn vector */
164 for( i=0; i<LIMELM; ++i )
165 {
166 lgElOnOff[i] = dense.lgElmtOn[i];
167 }
168 }
169 lgFirstCall = false;
170
171 /* make sure that initially false elements remain off, while letting
172 * enabled elements be turned off */
173 for( i=ipHYDROGEN; i<LIMELM; ++i )
174 {
175 dense.lgElmtOn[i] = lgElOnOff[i] && dense.lgElmtOn[i];
176 }
177
178 /* rescale so that abundances are H=1 */
179 for( i=ipHELIUM; i < LIMELM; i++ )
180 {
181 abund.solar[i] /= abund.solar[0];
182 }
183 abund.solar[ipHYDROGEN] = 1.;
184
185 /* set current abundances to "solar" times metals scale factor
186 * and grain depletion factor */
187 abund.solar[ipHELIUM] *= abund.depset[1]*abund.ScaleElement[1];
188
189 /* option for density or abundance variations, this flag is true by default,
190 * set in zero, but set false if variations are enabled AND these
191 * are not density variations, but rather abundances */
192 if( dense.lgDenFlucOn )
193 {
194 /* usual case - either density fluctuations or none at all */
195 fac = 1.;
196 }
197 else
198 {
199 /* abundance fluctuations enabled, set initial value */
200 fac = dense.cfirst*cos(dense.flcPhase) + dense.csecnd;
201 }
202
203 for( i=ipLITHIUM; i < LIMELM; i++ )
204 {
205 abund.solar[i] *= (realnum)(abund.ScaleMetals*abund.depset[i]*
206 abund.ScaleElement[i]*fac);
207 }
208
209 /* now fix abundance of any element with element table set */
210 if( abund.lgAbTaON )
211 {
212 for( nelem=ipHELIUM; nelem < LIMELM; ++nelem )
213 {
214 if( abund.lgAbunTabl[nelem] )
215 {
216 abund.solar[nelem] = (realnum)(AbundancesTable(radius.Radius,
217 radius.depth,nelem+1));
218 }
219 }
220 }
221
222 /* dense.gas_phase[nelem] contains total abundance of element */
223 /* the density of hydrogen itself has already been set at this point -
224 * it is set when commands parsed, most likely by the hden command -
225 * set all heavier elements */
226 /* if abund.solar[ipHYDROGEN] == 1, consistency doesn't hurt that much */
227 for( nelem=ipHYDROGEN; nelem < LIMELM; ++nelem )
228 {
229 /* this implements the element off limit xxx command, where
230 * xxx is the limit to the smallest n(A)/n(H) that will remain on */
231 if( abund.solar[nelem] < dense.AbundanceLimit )
232 dense.lgElmtOn[nelem] = false;
233
234 if( dense.lgElmtOn[nelem] )
235 {
236 dense.SetGasPhaseDensity( nelem, abund.solar[nelem]*dense.gas_phase[ipHYDROGEN] );
237 if( dense.gas_phase[nelem] <= 0. )
238 {
239 fprintf( ioQQQ, " Abundances must be greater than zero. "
240 "Check entered abundance for element%3ld = %2.2s\n",
241 nelem, elementnames.chElementSym[nelem] );
243 }
244 else if( dense.gas_phase[nelem] < SMALLFLOAT )
245 {
246 fprintf(ioQQQ," Abundance for %s is %.2e, less than lower "
247 "limit of %.3e, so turning element off.\n",
248 elementnames.chElementSym[nelem],
249 dense.gas_phase[nelem],
250 SMALLFLOAT );
251 dense.lgElmtOn[nelem] = false;
252 }
253 else if( dense.gas_phase[nelem] > MAX_DENSITY )
254 {
255 fprintf(ioQQQ," Abundance for %s is %.2e. This version of Cloudy does not "
256 "permit densities greater than %e cm-3.\n",
257 elementnames.chElementSym[nelem],
258 dense.gas_phase[nelem],
259 MAX_DENSITY );
261 }
262 }
263 if( !dense.lgElmtOn[nelem] )
264 {
265 /* >>chng 04 apr 20, set to zero if element is off */
266 dense.SetGasPhaseDensity( nelem, 0. );
267 }
268
269 /* Set all neutral ions to maintain invariant */
270 dense.xIonDense[nelem][0] = dense.gas_phase[nelem];
271 for( long int ion=1; ion < LIMELM+1; ion++ )
272 {
273 dense.xIonDense[nelem][ion] = 0.;
274 }
275
276 }
277
278 SumDensities();
279
280 /* if stop temp set below default then we are going into cold and possibly
281 * molecular gas - check some parameters in this case */
282 if( called.lgTalk && (StopCalc.TempLoStopZone < phycon.TEMP_STOP_DEFAULT ||
283 /* thermal.ConstTemp def is zero, set pos when used */
284 (thermal.ConstTemp > 0. && thermal.ConstTemp < phycon.TEMP_STOP_DEFAULT ) ) )
285 {
286
287 /* print warning if temperature set below default but C > O */
288 if( dense.lgElmtOn[ipOXYGEN] && dense.gas_phase[ipCARBON]/SDIV( dense.gas_phase[ipOXYGEN]) >= 1. )
289 {
290 fprintf( ioQQQ, "\n >>> \n"
291 " >>> The simulation is going into possibly molecular gas but the carbon/oxygen abundance ratio is greater than unity.\n" );
292 fprintf( ioQQQ, " >>> Standard interstellar chemistry networks are designed for environments with C/O < 1.\n" );
293 fprintf( ioQQQ, " >>> The chemistry network may (or may not) collapse deep in molecular regions where CO is fully formed.\n" );
294 fprintf( ioQQQ, " >>> \n\n\n\n\n" );
295 }
296 }
297
298 if( trace.lgTrace )
299 {
300 realnum sumx , sumy , sumz = 0.;
301
302 sumx = dense.gas_phase[ipHYDROGEN]*dense.AtomicWeight[ipHYDROGEN];
303 sumy = dense.gas_phase[ipHELIUM]*dense.AtomicWeight[ipHELIUM];
304
305 fprintf( ioQQQ, "\n AbundancesSet sets following densities (cm^-3); \n" );
306 for( i=0; i<3; i++ )
307 {
308 for( nelem=i*10; nelem < i*10+10; nelem++ )
309 {
310 fprintf( ioQQQ, " %2.2s", elementnames.chElementSym[nelem] );
311 PrintE82( ioQQQ, dense.gas_phase[nelem] );
312 if( nelem>ipHELIUM )
313 sumz += dense.gas_phase[nelem]*dense.AtomicWeight[nelem];
314 }
315 fprintf( ioQQQ, " \n" );
316 }
317 fprintf( ioQQQ, "\n AbundancesSet sets following abundances rel to H; \n" );
318 for( i=0; i<3; i++ )
319 {
320 for( nelem=i*10; nelem < i*10+10; nelem++ )
321 {
322 fprintf( ioQQQ, " %2.2s", elementnames.chElementSym[nelem] );
323 PrintE82( ioQQQ, dense.gas_phase[nelem]/dense.gas_phase[ipHYDROGEN] );
324 }
325 fprintf( ioQQQ, " \n" );
326 }
327 fprintf( ioQQQ, " \n" );
328 fprintf(ioQQQ," Gas-phase mass fractions, X:%.3e Y:%.3e Z:%.3e\n\n",
329 sumx/SDIV(sumx+sumy+sumz) ,
330 sumy/SDIV(sumx+sumy+sumz) ,
331 sumz/SDIV(sumx+sumy+sumz) );
332 }
333 return;
334}
335
336/* this is number of elements across one line */
337#define NELEM1LINE 9
338
339/*PrtElem print chemical composition at start of calculation */
341 /* the job to do, the options are "init", "fill", "flus" */
342 const char *chJob,
343 /* label for the element */
344 const char *chLabl,
345 /* its abundance */
346 double abund_prt)
347{
348 static char chAllLabels[NELEM1LINE][14];/* buffer where elements will be stored*/
349 long int i,
350 noffset;
351 static long int nelem; /* counter for number of elements read in*/
352
353 DEBUG_ENTRY( "PrtElem()" );
354
355 if( strcmp(chJob,"initG") == 0 )
356 {
357 /* gas phase abundances */
358 nelem = 0;
359 fprintf( ioQQQ,
360 " Gas Phase Chemical Composition\n" );
361 }
362 else if( strcmp(chJob,"initD") == 0 )
363 {
364 /* abundances in grains */
365 nelem = 0;
366 fprintf( ioQQQ,
367 " Grain Chemical Composition\n" );
368 }
369
370 else if( strcmp(chJob,"fill") == 0 )
371 {
372 /* print log of abundance to avoid exponential output */
373 abund_prt = log10( abund_prt );
374 /* stuff in labels and abundances */
375 sprintf( chAllLabels[nelem], " %2.2s:%8.4f", chLabl, abund_prt );
376 if( nelem == NELEM1LINE-1 )
377 {
378 /* we hit as many as it will hold - print it out and reset*/
379 fprintf( ioQQQ, " " );
380 for( i=0; i < NELEM1LINE; i++ )
381 {
382 fprintf( ioQQQ, "%13.13s", chAllLabels[i] );
383 }
384 fprintf( ioQQQ, "\n" );
385 /* reset counter to zero */
386 nelem = 0;
387 }
388 else
389 {
390 /* just increment */
391 ++nelem;
392 }
393 }
394
395# if 0
396 /* Do this if you want to know about PAH number abundance */
397 else if( strcmp(chJob,"fillp") == 0 )
398 {
399 /* print log of abundance to avoid exponential output */
400 abund_prt = log10( abund_prt );
401
402 /* stuff in labels and abundances */
403 sprintf( chAllLabels[nelem], " %2.2s:%8.4f", chLabl, abund_prt );
404 if( nelem == NELEM1LINE-1 )
405 {
406 /* we hit as many as it will hold - print it out and reset*/
407 fprintf( ioQQQ, " " );
408 for( i=0; i < NELEM1LINE; i++ )
409 {
410 fprintf( ioQQQ, "%13.13s", chAllLabels[i] );
411 }
412 fprintf( ioQQQ, "\n" );
413 /* reset counter to zero */
414 nelem = 0;
415 }
416 else
417 {
418 /* just increment */
419 ++nelem;
420 }
421 }
422# endif
423
424 else if( strcmp(chJob,"flus") == 0 )
425 {
426 /* flush the stack */
427 i = NELEM1LINE - (nelem - 2);
428 noffset = i/2-1;
429 /* make format pretty */
430 fprintf( ioQQQ, " " );
431
432 for(i=0; i < noffset; i++)
433 {
434 /* skip out this many fields */
435 fprintf( ioQQQ, " " );
436 }
437
438 /* if nelem is even we need to space out another 8 */
439 if( !(nelem%2) && nelem > 0)
440 fprintf( ioQQQ," ");
441
442 for( i=0; i < nelem; i++ )
443 {
444 fprintf( ioQQQ, "%13.13s", chAllLabels[i] );
445 }
446
447 fprintf( ioQQQ, "\n" );
448 }
449 else
450 {
451 fprintf( ioQQQ, " PrtElem does not understand job=%4.4s\n",
452 chJob );
454 }
455 return;
456}
457
458
459/*AbundancesTable interpolate on table of points to do 'element table' command, */
460double AbundancesTable(double r0,
461 double depth,
462 long int iel)
463{
464 bool lgHit;
465 long int j;
466 double frac,
467 tababun_v,
468 x;
469
470 DEBUG_ENTRY( "AbundancesTable()" );
471 /* interpolate on table of points to do 'element table' command, based
472 * on code by K Volk, each line is log radius and abundance. */
473
474 /* interpolate on radius or depth? */
475 if( abund.lgAbTaDepth[iel-1] )
476 {
477 /* depth key appeared = we want depth */
478 x = log10(depth);
479 }
480 else
481 {
482 /* use radius */
483 x = log10(r0);
484 }
485
486 /* this will be reset below, but is here as a safety check */
487 tababun_v = -DBL_MAX;
488
489 if( x < abund.AbTabRad[0][iel-1] || x >= abund.AbTabRad[abund.nAbunTabl-1][iel-1] )
490 {
491 fprintf( ioQQQ, " requested radius outside range of AbundancesTable\n" );
492 fprintf( ioQQQ, " radius was%10.2e min, max=%10.2e%10.2e\n",
493 x, abund.AbTabRad[0][iel-1], abund.AbTabRad[abund.nAbunTabl-1][iel-1] );
495 }
496
497 else
498 {
499 lgHit = false;
500 j = 1;
501
502 while( !lgHit && j <= abund.nAbunTabl - 1 )
503 {
504 if( abund.AbTabRad[j-1][iel-1] <= (realnum)x &&
505 abund.AbTabRad[j][iel-1] > (realnum)x )
506 {
507 frac = (x - abund.AbTabRad[j-1][iel-1])/(abund.AbTabRad[j][iel-1] -
508 abund.AbTabRad[j-1][iel-1]);
509 tababun_v = abund.AbTabFac[j-1][iel-1] + frac*
510 (abund.AbTabFac[j][iel-1] - abund.AbTabFac[j-1][iel-1]);
511 lgHit = true;
512 }
513 ++j;
514 }
515
516 if( !lgHit )
517 {
518 fprintf( ioQQQ, " radius outran dlaw table scale, requested=%6.2f largest=%6.2f\n",
519 x, abund.AbTabRad[abund.nAbunTabl-1][iel-1] );
521 }
522 }
523
524 /* got it, now return value, not log of density */
525 tababun_v = pow(10.,tababun_v);
526 return( tababun_v );
527}
528
529#ifdef _MSC_VER
530# pragma warning( disable : 4305 )/* disable const double to float warning in MS VS -
531 very large number of warns result */
532#endif
533/*AbundancesZero set initial abundances for different mixes */
535{
536 long int i;
537
538 DEBUG_ENTRY( "AbundancesZero()" );
539
540 // option to turn off an element by default, many have no abundances
541 // and assume 1e-30 - better to turn the element off and same time
542 for( int nelem=ipHYDROGEN; nelem<LIMELM; ++nelem )
543 {
544 abund.lgElmONapn[nelem] = true;
545 abund.lgElmONahii[nelem] = true;
546 abund.lgElmONaism[nelem] = true;
547 abund.lgElmONaCrab[nelem] = true;
548 }
549
550 // Crab Nebula abundances from constant density model M1 of Table 3
551 //>>refer Crab abund Pequignot, D., & Dennefeld, M. 1983, A&A, 120, 249
552 abund.aCrab[ipHYDROGEN] = 1.0;
553 abund.aCrab[ipHELIUM] = 7000e-4;
554 abund.aCrab[ipLITHIUM] = 2.04e-9;
555 abund.lgElmONaCrab[ipLITHIUM] = false;
556 abund.aCrab[ipBERYLLIUM] = 2.63e-11;
557 abund.lgElmONaCrab[ipBERYLLIUM] = false;
558 abund.aCrab[ipBORON] = 7.59e-10;
559 abund.lgElmONaCrab[ipBORON] = false;
560 abund.aCrab[ipCARBON] = 70e-4;
561 abund.aCrab[ipNITROGEN] = 1.23e-4;
562 abund.aCrab[ipOXYGEN] = 17e-4;
563 abund.aCrab[ipFLUORINE] = 3.02e-8;
564 abund.lgElmONaCrab[ipFLUORINE] = false;
565 abund.aCrab[ipNEON] = 5.33e-4;
566 abund.aCrab[ipSODIUM] = 2.06e-6;
567 abund.lgElmONaCrab[ipSODIUM] = false;
568 abund.aCrab[ipMAGNESIUM] = 0.80e-4;
569 abund.aCrab[ipALUMINIUM] = 2.95e-6;
570 abund.lgElmONaCrab[ipALUMINIUM] = false;
571 abund.aCrab[ipSILICON] = 3.55e-5;
572 abund.lgElmONaCrab[ipSILICON] = false;
573 abund.aCrab[ipPHOSPHORUS] = 3.73e-7;
574 abund.lgElmONaCrab[ipPHOSPHORUS] = false;
575 abund.aCrab[ipSULPHUR] = 0.35e-4;
576 abund.aCrab[ipCHLORINE] = 1.88e-7;
577 abund.lgElmONaCrab[ipCHLORINE] = false;
578 abund.aCrab[ipARGON] = 3.98e-6;
579 abund.lgElmONaCrab[ipARGON] = false;
580 abund.aCrab[ipPOTASSIUM] = 1.35e-7;
581 abund.lgElmONaCrab[ipPOTASSIUM] = false;
582 abund.aCrab[ipCALCIUM] = 2.29e-6;
583 abund.lgElmONaCrab[ipCALCIUM] = false;
584 abund.aCrab[ipSCANDIUM] = 1.58e-9;
585 abund.lgElmONaCrab[ipSCANDIUM] = false;
586 abund.aCrab[ipTITANIUM] = 1.10e-7;
587 abund.lgElmONaCrab[ipTITANIUM] = false;
588 abund.aCrab[ipVANADIUM] = 1.05e-8;
589 abund.lgElmONaCrab[ipVANADIUM] = false;
590 abund.aCrab[ipCHROMIUM] = 4.84e-7;
591 abund.lgElmONaCrab[ipCHROMIUM] = false;
592 abund.aCrab[ipMANGANESE] = 3.42e-7;
593 abund.lgElmONaCrab[ipMANGANESE] = false;
594 abund.aCrab[ipIRON] = 3.24e-5;
595 abund.aCrab[ipCOBALT] = 8.32e-8;
596 abund.lgElmONaCrab[ipCOBALT] = false;
597 abund.aCrab[ipNICKEL] = 1.76e-6;
598 abund.lgElmONaCrab[ipNICKEL] = false;
599 abund.aCrab[ipCOPPER] = 1.87e-8;
600 abund.lgElmONaCrab[ipCOPPER] = false;
601 abund.aCrab[ipZINC] = 4.52e-8;
602 abund.lgElmONaCrab[ipZINC] = false;
603
604 /* solar abundances
605 * >>refer Solar abund Grevesse, N., & Sauval, A. J. 2001, Space Sci. Rev., 85, 161-174 */
606 /* >>chng 02 aug 20, update to these values */
607 abund.SolarSave[ipHYDROGEN] = 1.0f;
608 abund.SolarSave[ipHELIUM] = 0.100f;
609 abund.SolarSave[ipLITHIUM] = 2.04e-9f;
610 abund.SolarSave[ipBERYLLIUM] = 2.63e-11f;
611 abund.SolarSave[ipBORON] = 6.17E-10f;
612 /* >>chng 02 jul 30, from 3.55 to 2.45, */
613 /* >>refer C abund Allende Prieto, C., Lambert, D. L., & Asplund, M. 2002, ApJ, 573, L137 */
614 abund.SolarSave[ipCARBON] = 2.45e-4f;
615 /* >>chng 02 jul 30, from 9.33 to 8.53, */
616 /* >>refer N abund Holweger, H. 2001, in AIP Conf. Proc. 598, Solar and Galactic Composition: A
617 * >>refercon Joint SOHO/ACE Workshop, ed. R.F. Wimmer-Schweingruber
618 * >>refercon (Melville, NY: AIP), 23 */
619 abund.SolarSave[ipNITROGEN] = 8.51e-5f;
620 /* >>chng 02 jul 30, from 7.41 to 4.90, */
621 /* >>refer O abund Allende Prieto, C., Lambert, D. L., & Asplund, M. 2001, ApJ, 556, L63 */
622 abund.SolarSave[ipOXYGEN] = 4.90e-4f;
623 abund.SolarSave[ipFLUORINE] = 3.02e-8f;
624 /* >>chng 02 jul 30, from 1.17 to 1.00, */
625 /* >>refer Ne abund Holweger, H. 2001, in AIP Conf. Proc. 598, Solar and Galactic Composition: A
626 * >>refercon Joint SOHO/ACE Workshop, ed. R.F. Wimmer-Schweingruber
627 * >>refercon (Melville, NY: AIP), 23 */
628 abund.SolarSave[ipNEON] = 1.00e-4f;
629 abund.SolarSave[ipSODIUM] = 2.14e-6f;
630 /* >>chng 02 jul 30, from 3.80 to 3.45, */
631 /* >>refer Mg abund Holweger, H. 2001, in AIP Conf. Proc. 598, Solar and Galactic Composition: A
632 * >>refercon Joint SOHO/ACE Workshop, ed. R.F. Wimmer-Schweingruber
633 * >>refercon (Melville, NY: AIP), 23 */
634 abund.SolarSave[ipMAGNESIUM] = 3.47e-5f;
635 abund.SolarSave[ipALUMINIUM] = 2.95e-6f;
636 /* >>chng 02 jul 30, from 3.55 to 3.44, */
637 /* >>refer Si abund Holweger, H. 2001, in AIP Conf. Proc. 598, Solar and Galactic Composition: A
638 * >>refercon Joint SOHO/ACE Workshop, ed. R.F. Wimmer-Schweingruber
639 * >>refercon (Melville, NY: AIP), 23 */
640 abund.SolarSave[ipSILICON] = 3.47e-5f;
641 abund.SolarSave[ipPHOSPHORUS] = 3.20e-7f;
642 abund.SolarSave[ipSULPHUR] = 1.84e-5f;
643 abund.SolarSave[ipCHLORINE] = 1.91e-7f;
644 abund.SolarSave[ipARGON] = 2.51e-6f;
645 abund.SolarSave[ipPOTASSIUM] = 1.32e-7f;
646 abund.SolarSave[ipCALCIUM] = 2.29e-6f;
647 abund.SolarSave[ipSCANDIUM] = 1.48e-9f;
648 abund.SolarSave[ipTITANIUM] = 1.05e-7f;
649 abund.SolarSave[ipVANADIUM] = 1.00e-8f;
650 abund.SolarSave[ipCHROMIUM] = 4.68e-7f;
651 abund.SolarSave[ipMANGANESE] = 2.88e-7f;
652 /* >>chng 02 jul 30, from 3.24 to 2.81, */
653 /* >>refer Fe abund Holweger, H. 2001, in AIP Conf. Proc. 598, Solar and Galactic Composition: A
654 * >>refercon Joint SOHO/ACE Workshop, ed. R.F. Wimmer-Schweingruber
655 * >>refercon (Melville, NY: AIP), 23 */
656 abund.SolarSave[ipIRON] = 2.82e-5f;
657 abund.SolarSave[ipCOBALT] = 8.32e-8f;
658 abund.SolarSave[ipNICKEL] = 1.78e-6f;
659 abund.SolarSave[ipCOPPER] = 1.62e-8f;
660 abund.SolarSave[ipZINC] = 3.98e-8f;
661
662 /* abundance set from pre-c96 */
663 /* solar abundances Grevesse and Anders 1989, Grevesse and Noel 1993 */
664 abund.OldSolar84[ipHYDROGEN] = 1.0;
665 abund.OldSolar84[ipHELIUM] = 0.100;
666 abund.OldSolar84[ipLITHIUM] = 2.04e-9;
667 abund.OldSolar84[ipBERYLLIUM] = 2.63e-11;
668 abund.OldSolar84[ipBORON] = 7.59e-10;
669 abund.OldSolar84[ipCARBON] = 3.55e-4;
670 abund.OldSolar84[ipNITROGEN] = 9.33e-5;
671 abund.OldSolar84[ipOXYGEN] = 7.41e-4;
672 abund.OldSolar84[ipFLUORINE] = 3.02e-8;
673 abund.OldSolar84[ipNEON] = 1.17e-4;
674 abund.OldSolar84[ipSODIUM] = 2.06e-6;
675 abund.OldSolar84[ipMAGNESIUM] = 3.80e-5;
676 abund.OldSolar84[ipALUMINIUM] = 2.95e-6;
677 abund.OldSolar84[ipSILICON] = 3.55e-5;
678 abund.OldSolar84[ipPHOSPHORUS] = 3.73e-7;
679 abund.OldSolar84[ipSULPHUR] = 1.62e-5;
680 abund.OldSolar84[ipCHLORINE] = 1.88e-7;
681 abund.OldSolar84[ipARGON] = 3.98e-6;
682 abund.OldSolar84[ipPOTASSIUM] = 1.35e-7;
683 abund.OldSolar84[ipCALCIUM] = 2.29e-6;
684 abund.OldSolar84[ipSCANDIUM] = 1.58e-9;
685 abund.OldSolar84[ipTITANIUM] = 1.10e-7;
686 abund.OldSolar84[ipVANADIUM] = 1.05e-8;
687 abund.OldSolar84[ipCHROMIUM] = 4.84e-7;
688 abund.OldSolar84[ipMANGANESE] = 3.42e-7;
689 abund.OldSolar84[ipIRON] = 3.24e-5;
690 abund.OldSolar84[ipCOBALT] = 8.32e-8;
691 abund.OldSolar84[ipNICKEL] = 1.76e-6;
692 abund.OldSolar84[ipCOPPER] = 1.87e-8;
693 abund.OldSolar84[ipZINC] = 4.52e-8;
694
695
696 /* Grevesse, Asplund, Sauval, and Scott Solar Abundances 2010 */
697 /* >>refer Solar abund Grevesse, N., Asplund, M., Sauval, A. J., & Scott, P. 2010, Ap&SS, 48 */
698 abund.GASS10[ipHYDROGEN] = 1.0;
699 abund.GASS10[ipHELIUM] = 8.51e-02;
700 abund.GASS10[ipLITHIUM] = 1.12e-11;
701 abund.GASS10[ipBERYLLIUM] = 2.40e-11;
702 abund.GASS10[ipBORON] = 5.01e-10;
703 abund.GASS10[ipCARBON] = 2.69e-04;
704 abund.GASS10[ipNITROGEN] = 6.76e-05;
705 abund.GASS10[ipOXYGEN] = 4.90e-04;
706 abund.GASS10[ipFLUORINE] = 3.63e-08;
707 abund.GASS10[ipNEON] = 8.51e-05;
708 abund.GASS10[ipSODIUM] = 1.74e-06;
709 abund.GASS10[ipMAGNESIUM] = 3.98e-05;
710 abund.GASS10[ipALUMINIUM] = 2.82e-06;
711 abund.GASS10[ipSILICON] = 3.24e-05;
712 abund.GASS10[ipPHOSPHORUS] = 2.57e-07;
713 abund.GASS10[ipSULPHUR] = 1.32e-05;
714 abund.GASS10[ipCHLORINE] = 3.16e-07;
715 abund.GASS10[ipARGON] = 2.51e-06;
716 abund.GASS10[ipPOTASSIUM] = 1.07e-07;
717 abund.GASS10[ipCALCIUM] = 2.19e-06;
718 abund.GASS10[ipSCANDIUM] = 1.41e-09;
719 abund.GASS10[ipTITANIUM] = 8.91e-08;
720 abund.GASS10[ipVANADIUM] = 8.51e-09;
721 abund.GASS10[ipCHROMIUM] = 4.37e-07;
722 abund.GASS10[ipMANGANESE] = 2.69e-07;
723 abund.GASS10[ipIRON] = 3.16e-05;
724 abund.GASS10[ipCOBALT] = 9.77e-08;
725 abund.GASS10[ipNICKEL] = 1.66e-06;
726 abund.GASS10[ipCOPPER] = 1.55e-08;
727 abund.GASS10[ipZINC] = 3.63e-08;
728
729 /* Nova Cyg 75 abundances, C, O, NE UP 20, NIT UP 100, REST SOLAR AR */
730 abund.anova[ipHYDROGEN] = 1.0;
731 abund.anova[ipHELIUM] = 0.098;
732 abund.anova[ipLITHIUM] = 2.04e-9;
733 abund.anova[ipBERYLLIUM] = 2.6e-11;
734 abund.anova[ipBORON] = 7.60e-9;
735 abund.anova[ipCARBON] = 9.4e-4;
736 abund.anova[ipNITROGEN] = 9.8e-3;
737 abund.anova[ipOXYGEN] = 1.7e-2;
738 abund.anova[ipFLUORINE] = 3.02e-8;
739 abund.anova[ipNEON] = 2.03e-3;
740 abund.anova[ipSODIUM] = 2.06e-6;
741 abund.anova[ipMAGNESIUM] = 3.80e-5;
742 abund.anova[ipALUMINIUM] = 2.95e-6;
743 abund.anova[ipSILICON] = 3.55e-5;
744 abund.anova[ipPHOSPHORUS] = 3.73e-7;
745 abund.anova[ipSULPHUR] = 1.62e-5;
746 abund.anova[ipCHLORINE] = 1.88e-7;
747 abund.anova[ipARGON] = 3.63e-6;
748 abund.anova[ipPOTASSIUM] = 1.35e-7;
749 abund.anova[ipCALCIUM] = 2.29e-6;
750 abund.anova[ipSCANDIUM] = 1.22e-9;
751 abund.anova[ipTITANIUM] = 8.60e-8;
752 abund.anova[ipVANADIUM] = 1.05e-8;
753 abund.anova[ipCHROMIUM] = 4.84e-7;
754 abund.anova[ipMANGANESE] = 3.42e-7;
755 abund.anova[ipIRON] = 4.68e-5;
756 abund.anova[ipCOBALT] = 2.24e-9;
757 abund.anova[ipNICKEL] = 1.76e-6;
758 abund.anova[ipCOPPER] = 1.87e-8;
759 abund.anova[ipZINC] = 4.52e-8;
760
761 /* primordial abundances */
762 abund.aprim[ipHYDROGEN] = 1.0;
763 abund.aprim[ipHELIUM] = 0.072;
764 abund.aprim[ipLITHIUM] = 1e-10;
765 abund.aprim[ipBERYLLIUM] = 1e-16;
766
767 for( i=4; i < LIMELM; i++ )
768 {
769 abund.aprim[i] = 1e-25;
770 }
771
772 /* typical ISM abundances, mean of Table 3, Cowie+Songaila, Ann Rev '86
773 * also Table 5, Savage and Sembach, Ann Rev 1996 */
774 abund.aism[ipHYDROGEN] = 1.;
775 abund.aism[ipHELIUM] = 0.098;
776 abund.aism[ipLITHIUM] = 5.4e-11;
777 abund.aism[ipBERYLLIUM] = 1e-20;
778 abund.lgElmONaism[ipBERYLLIUM] = false;
779 abund.aism[ipBORON] = 8.9e-11;
780 abund.aism[ipCARBON] = 2.51e-4;
781 abund.aism[ipNITROGEN] = 7.94e-5;
782 /* >>chng >>01 feb 19, from 5.01e-4 to 3.19e-4, value from */
783 /* >>refer O abund Meyers, D. M., Jura, M., & Cardelli, J. A. 1998, ApJ, 493, 222-229 */
784 /* they quote 3.19 +/- 0.14 e-4 */
785 abund.aism[ipOXYGEN] = 3.19e-4;
786 /* >>chng 10 jul 22 -- NPA. F abundance slightly depleted (0.1 to -0.6 dex) relative to the solar
787 * F/H ratio of 3.6e-8 (reference below). Use value of 3e-8 */
788 /* >>refer F abund Snow, T. P., Destree, J. D., & Jensen, A. G. 2007, ApJ, 655, 285 */
789 abund.aism[ipFLUORINE] = 2.0e-8;
790 abund.aism[ipNEON] = 1.23e-4;
791 abund.aism[ipSODIUM] = 3.16e-7;
792 abund.aism[ipMAGNESIUM] = 1.26e-5;
793 abund.aism[ipALUMINIUM] = 7.94e-8;
794 abund.aism[ipSILICON] = 3.16e-6;
795 abund.aism[ipPHOSPHORUS] = 1.6e-7;
796 abund.aism[ipSULPHUR] = 3.24e-5;
797 abund.aism[ipCHLORINE] = 1e-7;
798 abund.aism[ipARGON] = 2.82e-6;
799 abund.aism[ipPOTASSIUM] = 1.1e-8;
800 abund.aism[ipCALCIUM] = 4.1e-10;
801 abund.aism[ipSCANDIUM] = 1e-20;
802 abund.lgElmONaism[ipSCANDIUM] = false;
803 abund.aism[ipTITANIUM] = 5.8e-10;
804 abund.aism[ipVANADIUM] = 1.0e-10;
805 abund.aism[ipCHROMIUM] = 1.0e-8;
806 abund.aism[ipMANGANESE] = 2.3e-8;
807 abund.aism[ipIRON] = 6.31e-7;
808 /* >>chng 10 jul 22 -- NPA. Co/H ratio in cold and warm phases towards rho Oph are derived by reference
809 * below to be 6.4e-10 and 1.1e-8, respectively. Average of two comes out to 5.8e-9 */
810 /* >>refer Co abund Mullman, K. L., et al. 1998, ApJ, 500, 1064 */
811 abund.aism[ipCOBALT] = 5.9e-9;
812 abund.aism[ipNICKEL] = 1.82e-8;
813 abund.aism[ipCOPPER] = 1.5e-9;
814 abund.aism[ipZINC] = 2.0e-8;
815
816 /* HII region abundances, Orion mean of Baldwin et al, Rubin et al,
817 * and DEO et al, all 1991 apj
818 * also Table 5, Savage and Sembach, Ann Rev 1996 for ism */
819 abund.ahii[ipHYDROGEN] = 1.;
820 abund.ahii[ipHELIUM] = 0.095;
821 abund.ahii[ipLITHIUM] = 5.4e-11;
822 abund.ahii[ipBERYLLIUM] = 1e-20;
823 abund.lgElmONahii[ipBERYLLIUM] = false;
824 abund.ahii[ipBORON] = 8.9e-11;
825 abund.ahii[ipCARBON] = 3.e-4;
826 abund.ahii[ipNITROGEN] = 7.0e-5;
827 abund.ahii[ipOXYGEN] = 4.0e-4;
828 abund.ahii[ipFLUORINE] = 1e-20;
829 abund.lgElmONahii[ipFLUORINE] = false;
830 abund.ahii[ipNEON] = 6e-5;
831 abund.ahii[ipSODIUM] = 3e-7;
832 abund.ahii[ipMAGNESIUM] = 3.e-6;
833 abund.ahii[ipALUMINIUM] = 2.e-7;
834 abund.ahii[ipSILICON] = 4.e-6;
835 abund.ahii[ipPHOSPHORUS] = 1.6e-7;
836 abund.ahii[ipSULPHUR] = 1.0e-5;
837 abund.ahii[ipCHLORINE] = 1.e-7;
838 abund.ahii[ipARGON] = 3.e-6;
839 abund.ahii[ipPOTASSIUM] = 1.1e-8;
840 abund.ahii[ipCALCIUM] = 2.e-8;
841 abund.ahii[ipSCANDIUM] = 1e-20;
842 abund.lgElmONahii[ipSCANDIUM] = false;
843 abund.ahii[ipTITANIUM] = 5.8e-10;
844 abund.ahii[ipVANADIUM] = 1.0e-10;
845 abund.ahii[ipCHROMIUM] = 1.0e-8;
846 abund.ahii[ipMANGANESE] = 2.3e-8;
847 abund.ahii[ipIRON] = 3.0e-6;
848 abund.ahii[ipCOBALT] = 1e-20;
849 abund.lgElmONahii[ipCOBALT] = false;
850 abund.ahii[ipNICKEL] = 1e-7;
851 abund.ahii[ipCOPPER] = 1.5e-9;
852 abund.ahii[ipZINC] = 2.0e-8;
853
854 /* PN abund from */
855 /* >>refer PN abund Aller, L. H., & Czyzak, S. J. 1983, ApJS, 51, 211 */
856 abund.apn[ipHYDROGEN] = 1.;
857 abund.apn[ipHELIUM] = 0.1;
858 abund.apn[ipLITHIUM] = 1e-20;
859 abund.lgElmONapn[ipLITHIUM] = false;
860 abund.apn[ipBERYLLIUM] = 1e-20;
861 abund.lgElmONapn[ipBERYLLIUM] = false;
862 abund.apn[ipBORON] = 1e-20;
863 abund.lgElmONapn[ipBORON] = false;
864 abund.apn[ipCARBON] = 7.8e-4;
865 abund.apn[ipNITROGEN] = 1.8e-4;
866 abund.apn[ipOXYGEN] = 4.4e-4;
867 abund.apn[ipFLUORINE] = 3e-7;
868 abund.apn[ipNEON] = 1.1e-4;
869 abund.apn[ipSODIUM] = 1.9e-6;
870 abund.apn[ipMAGNESIUM] = 1.6e-6;
871 abund.apn[ipALUMINIUM] = 2.7e-7;
872 abund.apn[ipSILICON] = 1e-5;
873 abund.apn[ipPHOSPHORUS] = 2e-7;
874 abund.apn[ipSULPHUR] = 1e-5;
875 abund.apn[ipCHLORINE] = 1.7e-7;
876 abund.apn[ipARGON] = 2.7e-6;
877 abund.apn[ipPOTASSIUM] = 1.2e-7;
878 abund.apn[ipCALCIUM] = 1.2e-8;
879 abund.apn[ipSCANDIUM] = 1e-20;
880 abund.lgElmONapn[ipSCANDIUM] = false;
881 abund.apn[ipTITANIUM] = 1e-20;
882 abund.lgElmONapn[ipTITANIUM] = false;
883 abund.apn[ipVANADIUM] = 1e-20;
884 abund.lgElmONapn[ipVANADIUM] = false;
885 abund.apn[ipCHROMIUM] = 1e-20;
886 abund.lgElmONapn[ipCHROMIUM] = false;
887 abund.apn[ipMANGANESE] = 1e-20;
888 abund.lgElmONapn[ipMANGANESE] = false;
889 abund.apn[ipIRON] = 5.0e-7;
890 abund.apn[ipCOBALT] = 1e-20;
891 abund.lgElmONapn[ipCOBALT] = false;
892 abund.apn[ipNICKEL] = 1.8e-8;
893 abund.apn[ipCOPPER] = 1e-20;
894 abund.lgElmONapn[ipCOPPER] = false;
895 abund.apn[ipZINC] = 1e-20;
896 abund.lgElmONapn[ipZINC] = false;
897
898 /* mix from Cameron 1982, in "Essays on Nuclear Astro" */
899 abund.camern[ipHYDROGEN] = 1.;
900 abund.camern[ipHELIUM] = .0677;
901 abund.camern[ipLITHIUM] = 2.2e-9;
902 abund.camern[ipBERYLLIUM] = 4.5e-11;
903 abund.camern[ipBORON] = 3.4e-10;
904 abund.camern[ipCARBON] = 4.22e-4;
905 abund.camern[ipNITROGEN] = 8.72e-5;
906 abund.camern[ipOXYGEN] = 6.93e-4;
907 abund.camern[ipFLUORINE] = 2.9e-8;
908 abund.camern[ipNEON] = 9.77e-5;
909 abund.camern[ipSODIUM] = 2.25e-6;
910 abund.camern[ipMAGNESIUM] = 3.98e-5;
911 abund.camern[ipALUMINIUM] = 3.20e-6;
912 abund.camern[ipSILICON] = 3.76e-5;
913 abund.camern[ipPHOSPHORUS] = 2.4e-7;
914 abund.camern[ipSULPHUR] = 1.88e-5;
915 abund.camern[ipCHLORINE] = 1.78e-7;
916 abund.camern[ipARGON] = 3.99e-6;
917 abund.camern[ipPOTASSIUM] = 1.3e-7;
918 abund.camern[ipCALCIUM] = 2.35e-6;
919 abund.camern[ipSCANDIUM] = 1.16e-9;
920 abund.camern[ipTITANIUM] = 9.0e-8;
921 abund.camern[ipVANADIUM] = 9.5e-9;
922 abund.camern[ipCHROMIUM] = 4.8e-7;
923 abund.camern[ipMANGANESE] = 3.5e-7;
924 abund.camern[ipIRON] = 3.38e-5;
925 abund.camern[ipCOBALT] = 8.27e-8;
926 abund.camern[ipNICKEL] = 1.80e-6;
927 abund.camern[ipCOPPER] = 2.0e-8;
928 abund.camern[ipZINC] = 4.7e-8;
929
930 /* set logical flags saying whether to include element in AGN tables */
931 /* first set all false, since most not included */
932 for( i=0; i < LIMELM; i++ )
933 {
934 abund.lgAGN[i] = false;
935 }
936 abund.lgAGN[ipHYDROGEN] = true;
937 abund.lgAGN[ipHELIUM] = true;
938 abund.lgAGN[ipCARBON] = true;
939 abund.lgAGN[ipNITROGEN] = true;
940 abund.lgAGN[ipOXYGEN] = true;
941 abund.lgAGN[ipNEON] = true;
942 abund.lgAGN[ipMAGNESIUM] = true;
943 abund.lgAGN[ipSILICON] = true;
944 abund.lgAGN[ipSULPHUR] = true;
945 abund.lgAGN[ipARGON] = true;
946 abund.lgAGN[ipIRON] = true;
947 return;
948}
949
t_abund abund
Definition abund.cpp:5
#define NELEM1LINE
double AbundancesTable(double r0, double depth, long int iel)
void AbundancesSet(void)
void AbundancesPrt(void)
STATIC void PrtElem(const char *chJob, const char *chLabl, double abund_prt)
void AbundancesZero(void)
t_called called
Definition called.cpp:5
FILE * ioQQQ
Definition cddefines.cpp:7
const int ipSILICON
Definition cddefines.h:318
#define STATIC
Definition cddefines.h:97
const int ipBERYLLIUM
Definition cddefines.h:308
const double MAX_DENSITY
Definition cddefines.h:269
const int ipCHROMIUM
Definition cddefines.h:328
const int ipNITROGEN
Definition cddefines.h:311
const int ipZINC
Definition cddefines.h:334
const int ipIRON
Definition cddefines.h:330
const int ipCARBON
Definition cddefines.h:310
const int ipSCANDIUM
Definition cddefines.h:325
const int ipALUMINIUM
Definition cddefines.h:317
const int ipOXYGEN
Definition cddefines.h:312
const int ipCOPPER
Definition cddefines.h:333
void PrintE82(FILE *, double)
Definition service.cpp:739
const int LIMELM
Definition cddefines.h:258
const int ipPHOSPHORUS
Definition cddefines.h:319
const int ipLITHIUM
Definition cddefines.h:307
const int ipMAGNESIUM
Definition cddefines.h:316
#define EXIT_FAILURE
Definition cddefines.h:140
const int ipVANADIUM
Definition cddefines.h:327
const int ipBORON
Definition cddefines.h:309
const int ipSODIUM
Definition cddefines.h:315
const int ipTITANIUM
Definition cddefines.h:326
const int ipCOBALT
Definition cddefines.h:331
#define cdEXIT(FAIL)
Definition cddefines.h:434
const int ipHELIUM
Definition cddefines.h:306
float realnum
Definition cddefines.h:103
const int ipFLUORINE
Definition cddefines.h:313
#define MAX2
Definition cddefines.h:782
const int ipNICKEL
Definition cddefines.h:332
const int ipSULPHUR
Definition cddefines.h:320
const int ipCALCIUM
Definition cddefines.h:324
const int ipPOTASSIUM
Definition cddefines.h:323
NORETURN void TotalInsanity(void)
Definition service.cpp:886
sys_float SDIV(sys_float x)
Definition cddefines.h:952
const int ipHYDROGEN
Definition cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition cddefines.h:684
const int ipNEON
Definition cddefines.h:314
const int ipCHLORINE
Definition cddefines.h:321
const int ipMANGANESE
Definition cddefines.h:329
const int ipARGON
Definition cddefines.h:322
const realnum SMALLFLOAT
Definition cpu.h:191
t_dense dense
Definition dense.cpp:24
void SumDensities(void)
Definition dense.cpp:200
t_elementnames elementnames
GrainVar gv
Definition grainvar.cpp:5
@ MAT_PAH
Definition grainvar.h:103
@ MAT_SIL
Definition grainvar.h:102
@ MAT_PAH2
Definition grainvar.h:106
@ MAT_SIL2
Definition grainvar.h:105
@ MAT_CAR2
Definition grainvar.h:104
@ MAT_CAR
Definition grainvar.h:101
t_phycon phycon
Definition phycon.cpp:6
UNUSED const double ATOMIC_MASS_UNIT
Definition physconst.h:88
t_radius radius
Definition radius.cpp:5
t_StopCalc StopCalc
Definition stopcalc.cpp:5
t_thermal thermal
Definition thermal.cpp:5
t_trace trace
Definition trace.cpp:5