cloudy  trunk
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 */
21 STATIC 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 */
30 void 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],
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
125  TotalInsanity();
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 */
143 void AbundancesSet(void)
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 */
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  {
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  {
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  {
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 */
283  /* thermal.ConstTemp def is zero, set pos when used */
285  {
286 
287  /* print warning if temperature set below default but C > O */
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 
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] );
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, */
460 double 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 */
534 void AbundancesZero(void)
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;
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 
thermal.h
ipOXYGEN
const int ipOXYGEN
Definition: cddefines.h:312
AbundancesSet
void AbundancesSet(void)
Definition: abundances.cpp:143
t_abund::nAbunTabl
long int nAbunTabl
Definition: abund.h:87
StopCalc
t_StopCalc StopCalc
Definition: stopcalc.cpp:5
AbundancesZero
void AbundancesZero(void)
Definition: abundances.cpp:534
dense
t_dense dense
Definition: dense.cpp:24
ipMANGANESE
const int ipMANGANESE
Definition: cddefines.h:329
elementnames.h
ipBERYLLIUM
const int ipBERYLLIUM
Definition: cddefines.h:308
t_abund::ScaleElement
realnum ScaleElement[LIMELM]
Definition: abund.h:94
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
elementnames
t_elementnames elementnames
Definition: elementnames.cpp:5
ipBORON
const int ipBORON
Definition: cddefines.h:309
t_dense::flcPhase
realnum flcPhase
Definition: dense.h:254
realnum
float realnum
Definition: cddefines.h:103
t_abund::lgAbunTabl
bool lgAbunTabl[LIMELM]
Definition: abund.h:70
STATIC
#define STATIC
Definition: cddefines.h:97
ipLITHIUM
const int ipLITHIUM
Definition: cddefines.h:307
ipCARBON
const int ipCARBON
Definition: cddefines.h:310
t_dense::csecnd
realnum csecnd
Definition: dense.h:253
abund.h
MAT_CAR
@ MAT_CAR
Definition: grainvar.h:101
ipMAGNESIUM
const int ipMAGNESIUM
Definition: cddefines.h:316
t_dense::lgElmtOn
bool lgElmtOn[LIMELM]
Definition: dense.h:146
t_abund::AbTabFac
realnum AbTabFac[LIMTABD][LIMELM]
Definition: abund.h:81
ipIRON
const int ipIRON
Definition: cddefines.h:330
phycon
t_phycon phycon
Definition: phycon.cpp:6
trace.h
ipNEON
const int ipNEON
Definition: cddefines.h:314
SDIV
sys_float SDIV(sys_float x)
Definition: cddefines.h:952
t_dense::gas_phase
realnum gas_phase[LIMELM]
Definition: dense.h:71
t_radius::depth
double depth
Definition: radius.h:38
t_abund::lgElmONahii
bool lgElmONahii[LIMELM]
Definition: abund.h:60
t_abund::GASS10
realnum GASS10[LIMELM]
Definition: abund.h:48
ipVANADIUM
const int ipVANADIUM
Definition: cddefines.h:327
ipNITROGEN
const int ipNITROGEN
Definition: cddefines.h:311
t_abund::lgAbTaON
bool lgAbTaON
Definition: abund.h:76
ipHYDROGEN
const int ipHYDROGEN
Definition: cddefines.h:305
PrintE82
void PrintE82(FILE *, double)
Definition: service.cpp:739
MAT_CAR2
@ MAT_CAR2
Definition: grainvar.h:104
t_abund::aprim
realnum aprim[LIMELM]
Definition: abund.h:53
ATOMIC_MASS_UNIT
const UNUSED double ATOMIC_MASS_UNIT
Definition: physconst.h:88
ipZINC
const int ipZINC
Definition: cddefines.h:334
ipSCANDIUM
const int ipSCANDIUM
Definition: cddefines.h:325
MAT_SIL2
@ MAT_SIL2
Definition: grainvar.h:105
radius
t_radius radius
Definition: radius.cpp:5
t_phycon::TEMP_STOP_DEFAULT
const double TEMP_STOP_DEFAULT
Definition: phycon.h:109
GrainVar::elmSumAbund
realnum elmSumAbund[LIMELM]
Definition: grainvar.h:507
ipFLUORINE
const int ipFLUORINE
Definition: cddefines.h:313
EXIT_FAILURE
#define EXIT_FAILURE
Definition: cddefines.h:140
t_abund::apn
realnum apn[LIMELM]
Definition: abund.h:50
ipCOBALT
const int ipCOBALT
Definition: cddefines.h:331
t_abund::camern
realnum camern[LIMELM]
Definition: abund.h:52
ipCHROMIUM
const int ipCHROMIUM
Definition: cddefines.h:328
dense.h
ipSILICON
const int ipSILICON
Definition: cddefines.h:318
t_thermal::ConstTemp
realnum ConstTemp
Definition: thermal.h:44
t_abund::aism
realnum aism[LIMELM]
Definition: abund.h:54
trace
t_trace trace
Definition: trace.cpp:5
cddefines.h
ipSULPHUR
const int ipSULPHUR
Definition: cddefines.h:320
ipCALCIUM
const int ipCALCIUM
Definition: cddefines.h:324
t_radius::Radius
double Radius
Definition: radius.h:25
thermal
t_thermal thermal
Definition: thermal.cpp:5
MAX_DENSITY
const double MAX_DENSITY
Definition: cddefines.h:269
TotalInsanity
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
t_abund::solar
realnum solar[LIMELM]
Definition: abund.h:65
t_elementnames::chElementSym
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
Definition: elementnames.h:25
GrainVar::bin
vector< GrainBin * > bin
Definition: grainvar.h:583
t_called::lgTalk
bool lgTalk
Definition: called.h:12
t_abund::depset
realnum depset[LIMELM]
Definition: abund.h:100
radius.h
MAT_PAH
@ MAT_PAH
Definition: grainvar.h:103
t_abund::AbTabRad
realnum AbTabRad[LIMTABD][LIMELM]
Definition: abund.h:85
t_abund::aCrab
realnum aCrab[LIMELM]
Definition: abund.h:55
ipALUMINIUM
const int ipALUMINIUM
Definition: cddefines.h:317
ipCHLORINE
const int ipCHLORINE
Definition: cddefines.h:321
MAX2
#define MAX2
Definition: cddefines.h:782
LIMELM
const int LIMELM
Definition: cddefines.h:258
ipPHOSPHORUS
const int ipPHOSPHORUS
Definition: cddefines.h:319
ipPOTASSIUM
const int ipPOTASSIUM
Definition: cddefines.h:323
MAT_PAH2
@ MAT_PAH2
Definition: grainvar.h:106
cdEXIT
#define cdEXIT(FAIL)
Definition: cddefines.h:434
t_abund::lgElmONaCrab
bool lgElmONaCrab[LIMELM]
Definition: abund.h:62
NELEM1LINE
#define NELEM1LINE
Definition: abundances.cpp:337
t_StopCalc::TempLoStopZone
realnum TempLoStopZone
Definition: stopcalc.h:42
t_abund::OldSolar84
realnum OldSolar84[LIMELM]
Definition: abund.h:47
t_dense::xIonDense
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
PrtElem
STATIC void PrtElem(const char *chJob, const char *chLabl, double abund_prt)
Definition: abundances.cpp:340
abund
t_abund abund
Definition: abund.cpp:5
t_abund::anova
realnum anova[LIMELM]
Definition: abund.h:49
grainvar.h
t_dense::AtomicWeight
realnum AtomicWeight[LIMELM]
Definition: dense.h:75
AbundancesPrt
void AbundancesPrt(void)
Definition: abundances.cpp:30
physconst.h
t_abund::lgAGN
bool lgAGN[LIMELM]
Definition: abund.h:44
called
t_called called
Definition: called.cpp:5
gv
GrainVar gv
Definition: grainvar.cpp:5
ipHELIUM
const int ipHELIUM
Definition: cddefines.h:306
SumDensities
void SumDensities(void)
Definition: dense.cpp:200
t_dense::cfirst
realnum cfirst
Definition: dense.h:252
ipSODIUM
const int ipSODIUM
Definition: cddefines.h:315
phycon.h
ipCOPPER
const int ipCOPPER
Definition: cddefines.h:333
AbundancesTable
double AbundancesTable(double r0, double depth, long int iel)
Definition: abundances.cpp:460
t_abund::lgAbTaDepth
bool lgAbTaDepth[LIMELM]
Definition: abund.h:73
t_dense::lgDenFlucOn
bool lgDenFlucOn
Definition: dense.h:244
t_dense::SetGasPhaseDensity
void SetGasPhaseDensity(const long nelem, const realnum density)
Definition: dense.cpp:86
t_abund::ahii
realnum ahii[LIMELM]
Definition: abund.h:51
t_abund::lgElmONapn
bool lgElmONapn[LIMELM]
Definition: abund.h:59
called.h
ipARGON
const int ipARGON
Definition: cddefines.h:322
stopcalc.h
GrainVar::lgDustOn
bool lgDustOn() const
Definition: grainvar.h:471
t_abund::SolarSave
realnum SolarSave[LIMELM]
Definition: abund.h:46
MAT_SIL
@ MAT_SIL
Definition: grainvar.h:102
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
ipNICKEL
const int ipNICKEL
Definition: cddefines.h:332
t_trace::lgTrace
bool lgTrace
Definition: trace.h:12
t_abund::ScaleMetals
realnum ScaleMetals
Definition: abund.h:106
SMALLFLOAT
const realnum SMALLFLOAT
Definition: cpu.h:191
t_abund::lgElmONaism
bool lgElmONaism[LIMELM]
Definition: abund.h:61
t_dense::AbundanceLimit
realnum AbundanceLimit
Definition: dense.h:139
ipTITANIUM
const int ipTITANIUM
Definition: cddefines.h:326