cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
zero.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 /*zero zero out or initialize variables, called by cdInit, but also by optimize_func during optimization,
4  * this is called before any commands are parsed, called one time per model, at very start */
5 /*rfield_optac_zero zero out rfield arrays between certain limits */
6 #include "cddefines.h"
7 #include "physconst.h"
8 #include "iterations.h"
9 #include "hydrogenic.h"
10 #include "oxy.h"
11 #include "doppvel.h"
12 #include "dense.h"
13 #include "hextra.h"
14 #include "grains.h"
15 #include "magnetic.h"
16 #include "state.h"
17 #include "rt.h"
18 #include "he.h"
19 #include "struc.h"
20 #include "h2.h"
21 #include "co.h"
22 #include "coolheavy.h"
23 #include "lines.h"
24 #include "dynamics.h"
25 #include "carb.h"
26 #include "mean.h"
27 #include "atomfeii.h"
28 #include "iso.h"
29 #include "conv.h"
30 #include "geometry.h"
31 #include "timesc.h"
32 #include "peimbt.h"
33 #include "ionbal.h"
34 #include "continuum.h"
35 #include "atmdat.h"
36 #include "mole.h"
37 #include "ca.h"
38 #include "input.h"
39 #include "atoms.h"
40 #include "pressure.h"
41 #include "numderiv.h"
42 #include "colden.h"
43 #include "yield.h"
44 #include "hmi.h"
45 #include "rfield.h"
46 #include "abund.h"
47 #include "radius.h"
48 #include "opacity.h"
49 #include "secondaries.h"
50 #include "called.h"
51 #include "phycon.h"
52 #include "warnings.h"
53 #include "thermal.h"
54 #include "cooling.h"
55 #include "fe.h"
56 #include "hyperfine.h"
57 #include "init.h"
58 #include "dark_matter.h"
59 
60 // //////////////////////////////////////////////////////////////////////////
61 //
62 //
63 // NB DO NOT ADD VARIABLES TO THIS FILE! THE GOAL IS TO REMOVE THIS FILE
64 // initialization of variables should be done in one of the ini_*.cpp routines
65 //
66 //
67 // //////////////////////////////////////////////////////////////////////////
68 
69 /* zero out or initialize variables, called by cdInit, but also by optimize_func
70  * during optimization, called before command parser, one time per model,
71  * in a grid one time per grid point (so called nGrid times),
72  * only one time in multi-iteration models */
73 void zero(void)
74 {
75  //long int i;
76 
77  /* this is used to signify the first call to this routine. At that
78  * stage some memory has not been allocated so must not initialize,
79  * set false at very end of this routine */
80  static bool lgFirstCall = true;
81 
82  DEBUG_ENTRY( "zero()" );
83 
84  /* this routine is called exactly one time at the start of
85  * the calculation of a single model. When the code is used as a subroutine
86  * this routine is called one time for each model. It is called before
87  * the boundary conditions are read in, and is never called again
88  * during that calculation of the one model.
89  * All default variables that must be initialized before a calculation starts
90  * must appear in the routine. In a grid they are reset for each model
91  */
92 
93  /* parameters having to do with magnetic field */
94  Magnetic_init();
95 
96  /* set all initial abundances */
98 
99  /* zero out parameters needed by large FeII atom */
100  FeIIZero();
101 
102  /* zero out warnings, cautions, notes, etc */
103  wcnint();
104 
105  /* this is number of iterations that have been malloced - we could
106  * increase this if more iterations are needed */
107  iterations.iter_malloc = 200;
108  /* >>chng 06 jun 27, only malloc on first call - memory leak */
109  if( lgFirstCall)
110  {
111  iterations.IterPrnt = (long int*)MALLOC( (size_t)iterations.iter_malloc*sizeof(long int) );
112  geometry.nend = (long int*)MALLOC( (size_t)iterations.iter_malloc*sizeof(long int) );
113  radius.StopThickness = (double*)MALLOC( (size_t)iterations.iter_malloc*sizeof(double) );
114  radius.StopRadius = (double*)MALLOC( (size_t)iterations.iter_malloc*sizeof(double) );
115  }
116  for( long i=0; i < iterations.iter_malloc; i++ )
117  {
118  iterations.IterPrnt[i] = 10000;
119  }
120  iterations.itermx = 0;
121  /* this implements set coverage command */
122  iterations.lgConverge_set = false;
123  iteration = 0;
124 
125  /* limits for highest and lowest stages of ionization in TrimStage */
126  ionbal.trimhi = 1e-6;
127  ionbal.lgTrimhiOn = true;
128  ionbal.trimlo = 1e-10;
129 
130  hyperfine.lgLya_pump_21cm = true;
131 
132  /* variable to do with geometry */
133  geometry.nprint = 1000;
134  geometry.lgZoneSet = false;
135  geometry.lgZoneTrp = false;
136  geometry.lgEndDflt = true;
137 
138  /* some variables for saving the codes' state */
139  state.lgGet_state = false;
140  state.lgPut_state = false;
141  state.lgState_print = false;
142 
143  /* this is default number of zones
144  * >>chng 96 jun 5, from 400 to 500 for thickest corners4 grid */
145  /* >>chng 04 jan 30, from 600 to 800, code uses finer zoning today */
146  /* >>chng 04 dec 24, from 800 to 1400, so that HII region - molecular cloud
147  * sims do not need set nend - all sims in test suite will run ok without set nend */
148  geometry.nEndDflt = 1400;
149 
150  for( long i=0; i < iterations.iter_malloc; i++ )
151  {
153  /*>>chng 03 nov 13, from 1e30 to 1e31, because default inner radius raised to 1e30 */
154  radius.StopThickness[i] = 1e31;
155  radius.StopRadius[i] = -1.;
156  }
157 
158  geometry.fiscal = 1.;
159  geometry.FillFac = 1.;
160  geometry.filpow = 0.;
161 
162  /* default is open geometry, not sphere */
163  geometry.lgSphere = false;
164  /* the radiative transport covering factor */
165  geometry.covrt = 0.;
166  /* the geometric covering factor */
167  geometry.covgeo = 1.;
168  /* default is expanding when geometry set */
169  geometry.lgStatic = false;
170  /* option to tell code not to complain when geometry static done without iterating,
171  * set with (OK) option on geometry command */
172  geometry.lgStaticNoIt = false;
173  /* this is exponent for emissivity contributing to observed luminosity, r^2.
174  * set to 1 with aperture slit, to 0 with aperture beam command */
175  geometry.iEmissPower = 2;
176 
177  /* this counts number of times ionize is called by PressureChange, in current zone
178  * these are reset here, so that we count from first zone not search */
179  conv.nPres2Ioniz = 0;
180 
181  /* clear flag indicating the ionization convergence failures
182  * have ever occurred in current zone
183  conv.lgConvIonizThisZone = false; */
184 
186 
187  /* general abort flag */
188  lgAbort = false;
189 
190  /* cooling tolerance heating tolerance - allowed error in heating - cooling balance */
191  /*conv.HeatCoolRelErrorAllowed = 0.02f;*/
192  /* >>chng 04 sep 25, change te tolerance from 0.02 to 4x smaller, 0.005, drove instabilities
193  * in chemistry */
194  conv.HeatCoolRelErrorAllowed = 0.005f;
195 
196  /* this is the default allowed relative error in the electron density */
197  conv.EdenErrorAllowed = 1e-2;
198 
199  conv.IonizErrorAllowed = 1e-2;
200 
201  conv.dCmHdT = 0.;
202 
203  conv.LimFail = 20;
204  conv.lgMap = false;
205 
206  /* this counts how many times ionize is called in this model after startr,
207  * and is flag used by ionize to understand it is being called the first time*/
208  conv.nTotalIoniz = 0;
209  /* these are variables to remember the biggest error in the
210  * electron density, and the zone in which it occurred */
211  conv.BigEdenError = 0.;
212  conv.AverEdenError = 0.;
213  conv.BigHeatCoolError = 0.;
214  conv.AverHeatCoolError = 0.;
215  conv.BigPressError = 0.;
216  conv.AverPressError = 0.;
217  strcpy( conv.chSolverEden, "vWDB" );
218  strcpy( conv.chSolverTemp, "vWDB" );
219  strcpy( conv.chNotConverged, "none" );
220  strcpy( conv.chConvEden, "none" );
222  /* iterate to convergence flag */
223  conv.lgAutoIt = false;
224  /* convergence criteria */
225  conv.autocv = 0.20f;
226  conv.lgConvTemp = true;
227  conv.lgConvPres = true;
228  conv.lgConvEden = true;
229  conv.lgUpdateCouplings = false;
230  /* >>chng 04 jan 25, only set lgConvIoniz true where used in ConvXXX path */
231  /*conv.lgConvIoniz = true;*/
232 
233  /* this option, use the new atmdat_rad_rec recombination rates */
235 
236  /* age of the cloud, to check for time-steady */
237  timesc.CloudAgeSet = -1.f;
238  /* some timescale for CO and H2 */
241  /* remains neg if not evaluated */
244 
245  timesc.BigCOMoleForm = 0.;
246 
247  timesc.TimeH21cm = 0.;
249 
250  peimbt.tsqden = 1e7;
251 
252  /* CO related variables */
253  co.codfrc = 0.;
254  co.codtot = 0.;
255  co.CODissHeat = 0.;
256 
257  NumDeriv.lgNumDeriv = false;
258 
259  /* index within the line in the line stack
260  * default is Hbeta total - the third line in the stack
261  * 0th is a zero for sanity, 1st is unit, 2nd is a comment */
262  /* >>chng 02 apr 22 from 2 to 3 since added unit at 1 */
263  /* >>chng 06 mar 11, from 3 to -1 will now set to "H 1" 4861 */
264  LineSave.ipNormWavL = -1;
265  LineSave.WavLNorm = 4861.36f;
266  LineSave.lgNormSet = false;
267  LineSave.sig_figs = 4;
268 
269  /* the label for the normalization line */
270  strcpy( LineSave.chNormLab, " " );
271 
272  /* the scale factor for the normalization line */
273  LineSave.ScaleNormLine = 1.;
274 
275  /* this is scale factor, reset with set resolution command, for setting
276  * the continuum resolution. Setting to 0.1 will increase resolution by 10x.
277  * this multiplies the resolution contained in the continuum_mesh.ini file */
279 
281  continuum.lgCon0 = false;
282 
283  /* upper limit to energies of inner shell opacities in Ryd
284  * this is 1 MeV by default */
285  continuum.EnergyKshell = 7.35e4;
286 
287  /* free free heating, cooling, net */
288  CoolHeavy.lgFreeOn = true;
289  CoolHeavy.brems_cool_h = 0.;
290  CoolHeavy.colmet = 0.;
291 
293  hydro.cintot = 0.;
294 
295  /* option to print emissivity instead of intensity/luminosity */
296  hydro.lgHiPop2 = false;
297  hydro.pop2mx = 0.;
298 
299  /* flag for Lya masing */
300  hydro.HCollIonMax = 0.;
301 
302  /* type of hydrogen atom top off, options are " add" and "scal"
303  * in versions 90 this was " add", but was "scal" in 91
304  * >>chng 99 jan 16, changed back to " add"*/
305  /*strcpy( hydro.chHTopType, "scal" );*/
306  strcpy( hydro.chHTopType, " add" );
307 
308  /* Lya excitation temperature, counter for hotter than gas */
309  hydro.TexcLya = 0.;
310  hydro.TLyaMax = 0.;
311  hydro.nLyaHot = 0;
312 
313  /* option to kill damping wings of Lya */
314  hydro.DampOnFac = 1.;
315 
316  /* is continuum pumping of H Lyman lines included? yes, but turned off
317  * with atom h-like Lyman pumping off command */
318  hydro.lgLymanPumping = true;
319 
320  /* multiplicative factor for all continuum pumping of H I Lyman lines,
321  * account for possible emission in the line */
323 
324  /* >>refer abundance D/H Pettini, M., & Bowen, D.V., 2001, ApJ, 560, 41 */
325  /* quoted error is +/- 0.35 */
326  hydro.D2H_ratio = 1.65e-5;
327 
328  /* zero fractions of He0 destruction due to 23S */
329  he.nzone = 0;
330  he.frac_he0dest_23S = 0.;
332 
333  for( long ipISO=ipH_LIKE; ipISO<NISO; ipISO++ )
334  {
335  /* option to disable continuum lowering */
336  iso_ctrl.lgContinuumLoweringEnabled[ipISO] = true;
337 
338  /* flag set by compile he-like command, says to regenerate table of recombination coef */
339  iso_ctrl.lgCompileRecomb[ipISO] = false;
340  iso_ctrl.lgNoRecombInterp[ipISO] = false;
341 
342  /* how the gbar cs will be treated - set with atom he-like gbar command */
344  iso_ctrl.lgCS_Vriens[ipISO] = true;
345  iso_ctrl.lgCS_Vrinceanu[ipISO] = true;
346 
347  fixit(); /* make this the default for ipH_LIKE if not too slow. */
349 
350  iso_ctrl.lgCS_therm_ave[ipISO] = false;
351  iso_ctrl.lgCS_None[ipISO] = false;
352  /* when set try actually set to 1 or 2, depending on which fit is to be used,
353  * 1 is the broken power law fit */
354  /* >>chng 02 dec 21, change to broken power law fit */
355  iso_ctrl.nCS_new[ipISO] = 1;
356  /* This flag says whether the density is high enough that helium is sufficiently l-mixed. */
357  iso_ctrl.lgCritDensLMix[ipISO] = true;
358  /* flag saying whether to include fine-structure mixing in spontaneous decays
359  * set with ATOM HE-LIKE FSM command */
360  iso_ctrl.lgFSM[ipISO] = 0;
361  /* This is the flag saying whether to generate errors. false means don't. */
362  iso_ctrl.lgRandErrGen[ipISO] = false;
363  /* this is the flag saying whether we should include excess recombination in the
364  * helike sequence. Should only be off if testing effect of top off approximations. */
365  iso_ctrl.lgTopoff[ipISO] = true;
366  /* Dielectronic recombination for helike ions is on by default. */
367  iso_ctrl.lgDielRecom[ipISO] = true;
368 
369  /* number of Lyman lines to include in opacities, this can be vastly larger
370  * than the number of actual levels in the model atom */
371  iso_ctrl.nLyman[ipISO] = 100;
372  iso_ctrl.nLyman_malloc[ipISO] = 100;
373 
374  /* controls whether l-mixing and collisional ionization included */
375  iso_ctrl.lgColl_l_mixing[ipISO] = true;
376  iso_ctrl.lgColl_excite[ipISO] = true;
377  iso_ctrl.lgColl_ionize[ipISO] = true;
378  iso_ctrl.lgLTE_levels[ipISO] = false;
380  }
381 
382  /* Dielectronic recombination forming hydrogen-like ions does not exist. */
383  iso_ctrl.lgDielRecom[ipH_LIKE] = false;
384 
385  /* smallest transition probability allowed */
386  iso_ctrl.SmallA = 1e-30f;
387 
388  /* reset with SET IND2 command, turns on/off induced two photon */
389  iso_ctrl.lgInd2nu_On = false;
390 
391  /* hydrogen redistribution functions */
395 
396  /* this is the upper level for each Lya, which uses the special ipLY_A */
399 
400  /* he-like redistribution functions */
404 
406 
407  /* do not average collision strengths - evaluate at kT
408  * set true with command SET COLLISION STRENGHTS AVERAGE */
410 
411 
412  /**********************************************************************
413  * all parameters having to do with secondary ionization
414  * by suprathermal electrons
415  **********************************************************************/
416  secondaries.SetCsupra = 0.;
417  secondaries.lgCSetOn = false;
418  secondaries.lgSecOFF = false;
419  secondaries.SecHIonMax = 0.;
420 
424  secondaries.x12tot = 0.;
425  secondaries.sec2total = 0.;
426 
427  if( lgFirstCall )
428  {
429  /* malloc space for supra[nelem][ion] */
430  secondaries.csupra = (realnum **)MALLOC( (unsigned)LIMELM*sizeof(realnum *) );
431  secondaries.csupra_effic = (realnum **)MALLOC( (unsigned)LIMELM*sizeof(realnum *) );
432  for( long nelem=ipHYDROGEN; nelem<LIMELM; ++nelem )
433  {
434  secondaries.csupra[nelem] = (realnum *)MALLOC( (unsigned)(nelem+1)*sizeof(realnum) );
435  secondaries.csupra_effic[nelem] = (realnum *)MALLOC( (unsigned)(nelem+1)*sizeof(realnum) );
436  }
437  }
438  for( long nelem=ipHYDROGEN; nelem<LIMELM; ++nelem )
439  {
440  for( long ion=0; ion<nelem+1; ++ion )
441  {
442  /* secondary ionization rate for each species */
443  secondaries.csupra[nelem][ion] = 0.;
444  /* the rate of each species relative to H0 */
445  secondaries.csupra_effic[nelem][ion] = 1.f;
446  }
447  }
448  /* this scale factor is from table 10 of Tielens & Hollenbach 1985 */
449  secondaries.csupra_effic[ipHELIUM][0] = 1.08f;
450 
451  /* on first call, these arrays do not exist, only zero here on
452  * second and later calls, on first call, create them */
453  if( lgFirstCall )
454  {
455  /* these will save bound electron recoil information data */
457  (long**)MALLOC(sizeof(long*)*(unsigned)LIMELM );
459  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
461  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
463  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
465  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
467  (double****)MALLOC(sizeof(double***)*(unsigned)LIMELM );
469  (double***)MALLOC(sizeof(double**)*(unsigned)LIMELM );
471  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
473  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
474 
475  /* these are source and sink terms for heavy element ionization balance from the
476  * chemistry */
477  mole.source =
478  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
479  mole.sink =
480  (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM );
482  (realnum***)MALLOC(sizeof(realnum**)*(unsigned)LIMELM );
483 
484  /* space for ionization recombination arrays */
485  ionbal.RateIoniz = (double ***)MALLOC(sizeof(double **)*(unsigned)LIMELM );
486  ionbal.RateRecomTot = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
487  ionbal.RateRecomIso = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
488  ionbal.RR_rate_coef_used = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
489  ionbal.RR_Verner_rate_coef = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
490 
491  /* rate coefficients [cm3 s-1] for Badnell DR recombination */
492  ionbal.DR_Badnell_rate_coef = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
493  ionbal.RR_Badnell_rate_coef = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
494  ionbal.CX_recomb_rate_used = (double **)MALLOC(sizeof(double *)*(unsigned)LIMELM );
495 
496  /* create arrays for ions */
497  for( long nelem=0; nelem<LIMELM; ++nelem )
498  {
499  ionbal.DR_Badnell_rate_coef[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
500  ionbal.RR_Badnell_rate_coef[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
501  ionbal.CX_recomb_rate_used[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
502 
503  ionbal.RateIoniz[nelem] = (double **)MALLOC(sizeof(double *)*(unsigned)(nelem+1) );
504  ionbal.RateRecomTot[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
505 
506  for( long ion=0; ion<nelem+1; ++ion )
507  {
508  ionbal.RateIoniz[nelem][ion] = (double *)MALLOC(sizeof(double )*(unsigned)(nelem+2) );
509  for( long ion2=0; ion2<nelem+2; ++ion2 )
510  ionbal.RateIoniz[nelem][ion][ion2] = 0.;
511  }
512 
513  ionbal.RR_rate_coef_used[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
514  ionbal.RR_Verner_rate_coef[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
515  ionbal.UTA_ionize_rate[nelem] =
516  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
517  ionbal.UTA_heat_rate[nelem] =
518  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
519  ionbal.ipCompRecoil[nelem] =
520  (long*)MALLOC(sizeof(long)*(unsigned)(nelem+1) );
521  ionbal.CompRecoilIonRate[nelem] =
522  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
523  ionbal.CompRecoilIonRateSave[nelem] =
524  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
525  ionbal.CompRecoilHeatRate[nelem] =
526  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
528  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+1) );
529  ionbal.PhotoRate_Shell[nelem] =
530  (double***)MALLOC(sizeof(double**)*(unsigned)(nelem+1) );
531  ionbal.CollIonRate_Ground[nelem] =
532  (double**)MALLOC(sizeof(double*)*(unsigned)(nelem+1) );
533  /* chemistry source and sink terms for ionization ladders */
534  mole.source[nelem] =
535  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+2) );
536  mole.sink[nelem] =
537  (double*)MALLOC(sizeof(double)*(unsigned)(nelem+2) );
538  mole.xMoleChTrRate[nelem] =
539  (realnum**)MALLOC(sizeof(realnum*)*(unsigned)(nelem+2) );
540  for( long ion=0; ion<nelem+2; ++ion )
541  {
542  mole.xMoleChTrRate[nelem][ion] =
543  (realnum*)MALLOC(sizeof(realnum)*(unsigned)(nelem+2) );
544  }
545  ionbal.RateRecomIso[nelem] = (double *)MALLOC(sizeof(double)*(unsigned)(NISO) );
546  for( long ipISO=0; ipISO<NISO; ++ipISO )
547  {
548  ionbal.RateRecomIso[nelem][ipISO] = 0.;
549  }
550 
551  for( long ion=0; ion<nelem+1; ++ion )
552  {
553  /* >>chng 03 aug 09, set these to impossible values */
554  ionbal.RateRecomTot[nelem][ion] = -1.;
555  ionbal.UTA_ionize_rate[nelem][ion] = -1.;
556  ionbal.UTA_heat_rate[nelem][ion] = -1.;
557  ionbal.ipCompRecoil[nelem][ion] = -99;
558  ionbal.CompRecoilIonRate[nelem][ion] = -1.;
559  ionbal.CompRecoilIonRateSave[nelem][ion] = -1.;
560  ionbal.CompRecoilHeatRate[nelem][ion] = -1.;
561  ionbal.CompRecoilHeatRateSave[nelem][ion] = -1.;
562 
563  /* finish mallocing space */
564  ionbal.PhotoRate_Shell[nelem][ion] =
565  (double**)MALLOC(sizeof(double*)*(unsigned)NSHELLS );
566  ionbal.CollIonRate_Ground[nelem][ion] =
567  (double*)MALLOC(sizeof(double)*(unsigned)2 );
568  for( long ns=0; ns<NSHELLS; ++ns )
569  {
570  ionbal.PhotoRate_Shell[nelem][ion][ns] =
571  (double*)MALLOC(sizeof(double)*(unsigned)3 );
572  }
573 
574  /* now set to impossible values */
575  ionbal.ipCompRecoil[nelem][ion] = -100000;
576  ionbal.DR_Badnell_rate_coef[nelem][ion] = 0.;
577  ionbal.RR_Badnell_rate_coef[nelem][ion] = 0.;
578  }
579 
580  set_NaN( ionbal.RR_rate_coef_used[nelem], nelem+1 );
581  set_NaN( ionbal.RR_Verner_rate_coef[nelem], nelem+1 );
582  set_NaN( ionbal.CX_recomb_rate_used[nelem], nelem+1 );
583  }
584  }
585 
586  /* now zero out these arrays */
587  for( long nelem=0; nelem< LIMELM; ++nelem )
588  {
589  for( long ion=0; ion<nelem+1; ++ion )
590  {
591 
592  ionbal.CompRecoilHeatRate[nelem][ion] = 0.;
593  ionbal.CompRecoilIonRate[nelem][ion] = 0.;
594  ionbal.UTA_ionize_rate[nelem][ion] = 0.;
595  ionbal.UTA_heat_rate[nelem][ion] = 0.;
596  ionbal.CollIonRate_Ground[nelem][ion][0] = 0.;
597  ionbal.CollIonRate_Ground[nelem][ion][1] = 0.;
598  ionbal.RateRecomTot[nelem][ion] = 0.;
599  for( long ns=0; ns < NSHELLS; ++ns )
600  {
601  /* must be zero since ion routines use these when
602  * not yet defined */
603  ionbal.PhotoRate_Shell[nelem][ion][ns][0] = 0.;
604  ionbal.PhotoRate_Shell[nelem][ion][ns][1] = 0.;
605  ionbal.PhotoRate_Shell[nelem][ion][ns][2] = 0.;
606  }
607  }
608  /* these have one more ion than above */
609  for( long ion=0; ion<nelem+2; ++ion )
610  {
611  /* zero out the source and sink arrays */
612  mole.source[nelem][ion] = 0.;
613  mole.sink[nelem][ion] = 0.;
614  for( long ion2=0; ion2<nelem+2; ++ion2 )
615  {
616  mole.xMoleChTrRate[nelem][ion][ion2] = 0.;
617  }
618  }
619  }
620 
621  ionbal.lgPhotoIoniz_On = true;
622  ionbal.lgCompRecoil = true;
623 
624  /* these three adjust the treatment of UTA ionization */
627  ionbal.lgInnerShell_Gu06 = true;
628 
629  /* default condition is burgess suppressed, Nussbaumer and Storey not */
630  ionbal.lgSupDie[0] = true;
631  ionbal.lgSupDie[1] = false;
632 
633  ionbal.lgNoCota = false;
634  for( long nelem = 0; nelem < LIMELM; ++nelem )
635  {
636  ionbal.CotaRate[nelem] = 0.;
637  }
638  ionbal.ilt = 0;
639  ionbal.iltln = 0;
640  ionbal.ilthn = 0;
641  ionbal.ihthn = 0;
642  ionbal.ifail = 0;
643  ionbal.lgGrainIonRecom = true;
644 
645  /* option to print recombination coefficient then exit */
647  ionbal.guess_noise = 0.;
648 
649  /**********************************************************************
650  * these are options to print errors to special window,
651  * set with print errors command,
652  * output will go to standard error
653  * defined in cdInit
654  **********************************************************************/
655  lgPrnErr = false;
656  ioPrnErr = stderr;
657 
658  /* main arrays to save ionization fractions*/
659  dense.zero();
660  for( long nelem=ipHYDROGEN; nelem < LIMELM; nelem++ )
661  {
662  dense.SetGasPhaseDensity( nelem, 0. );
663  for( long ion=0; ion < LIMELM+1; ion++ )
664  {
665  dense.xIonDense[nelem][ion] = 0.;
666  }
667  }
668  dense.xMassTotal = 0.;
669 
670  /* this is the simple Fred Hamann FeII atom */
672 
673  /* zero out volume and column density save arrays */
674  mean.MeanZero();
675 
676  /* zero out heating rates */
677  HeatZero();
678 
679  /* some parameters dealing with calcium */
680  ca.Ca2RmLya = 0.;
681  ca.popca2ex = 0.;
682  ca.Ca3d = 0.;
683  ca.Ca4p = 0.;
684  ca.dstCala = 0.;
685 
686  /* C12/C13 isotope ratio, sets the ratio of C12O16 to C13O16 and
687  * C13/C12 1909 */
688  // Negative says use default in external file, unless command appears.
690 
691  /* this is the default allowed relative error in the pressure */
692  conv.PressureErrorAllowed = 0.01f;
693 
695 
696  /* default error in total gas-phase density of each element, including molecules */
698 
699  /* this is abort option set with SET PRESIONIZ command */
700  conv.limPres2Ioniz = 3000;
701 
702  conv.nTeFail = 0;
703  conv.nTotalFailures = 0;
704  conv.nPreFail = 0;
705  conv.failmx = 0.;
706  conv.nIonFail = 0;
707  conv.nPopFail = 0;
708  conv.nNeFail = 0;
709  conv.nGrainFail = 0;
710  conv.dCmHdT = 0.;
711 
712  /* some titles and line images */
713  for( long i=0; i<74; ++i)
714  {
715  input.chTitle[i] = ' ';
716  }
717  input.chTitle[75] = '\0';
718 
719  /* velocity field information */
720  /* the turbulent velocity at illuminated face, internally in cm/s,
721  * but entered with turbulence command in km/s */
722  DoppVel.TurbVel = 0.;
723  /* is a turbulent gradient imposed? Default is no. */
724  DoppVel.lgTurbLawOn = false;
725  /* the log of the turbulence gradient power law. Default is zero. */
726  DoppVel.TurbVelLaw = 0.;
727  /* the parameter F in eq 34 of
728  *>>refer pressure turb Heiles, C. & Troland, T.H. 2005, 624, 773 */
730  /* is TurbVel included in pressure? - can be done two ways, with the velocity
731  * being set of with equipartition - true when TurbVel set if not equipartition,
732  * false with NO PRESSURE option on turbulence command */
733  DoppVel.lgTurb_pressure = true;
734  /* The scale in cm over which the turbulence is dissipated. Normally 0,
735  * only set if dissipate keyword appears on turbulence command */
736  DoppVel.DispScale = 0.;
737  /* equipartition option on turbulence command, to set turbulence from B */
738  DoppVel.lgTurbEquiMag = false;
739 
740  /* pressure related variables */
741 
745  pressure.RhoGravity = 0.;
749 
750  pressure.PresRamCurr = 0.;
752  pressure.lgPradCap = false;
753  pressure.lgPradDen = false;
754  pressure.lgLineRadPresOn = true;
755  /* normally abort when radiation pressure exceeds gas pressure in const pres mod,
756  * this is option to keep going, set with NO ABORT on constant pressure command */
757  pressure.lgRadPresAbortOK = true;
758  /* Ditto for whether to stop at sonic point, this gets set to false
759  * for some of the dynamics pressure modes (strongd, shock, antishock)*/
761  /* this flag will say we hit the sonic point */
762  pressure.lgSonicPoint = false;
763  /* True when no physical solution for desired pressure in strong D fronts */
764  pressure.lgStrongDLimbo = false;
765 
766  pressure.RadBetaMax = 0.;
768  pressure.PresMax = 0.;
769 
770  /* initial and current pressures */
771  pressure.PresTotlInit = 0.;
772  pressure.PresTotlCurr = 0.;
773 
774  /* zero out some dynamics variables */
775  DynaZero();
776 
777  phycon.lgPhysOK = true;
778  /* largest relative changes in Te, ne, H+, H2, and CO in structure
779  * this is computed as part of prtcomment so does not exist when code not talking,
780  * set to zero in zero and still zero if prtcomment not called */
781  phycon.BigJumpTe = 0.;
782  phycon.BigJumpne = 0.;
783  phycon.BigJumpH2 = 0.;
784  phycon.BigJumpCO = 0.;
785 
786  dense.xNucleiTotal = 1.;
787  /* WJH */
788  dense.xMassDensity0 = -1.0f;
789 
790  // needed for TempChange to work but arrays needed for EdenChange to
791  // work are not yet defined
792  dense.eden = 1.;
793 
794  /* now set physical conditions array
795  * following will force updating all temperature - density variables */
796  TempChange( 1e4 , true);
797 
798  /* this is a scale factor that changes the n(H0)*1.7e-4 that is added to the
799  * electron density to account for collisions with atomic H. it is an order of
800  * magnitude guess, so this command provides ability to see whether it affects results */
801  dense.HCorrFac = 1.f;
802 
803  dark.lgNFW_Set = false;
804  dark.r_200 = 0.;
805  dark.r_s = 0.;
806 
807  atoms.nNegOI = 0;
808  for( long i=0; i< N_OI_LEVELS; ++i )
809  {
810  atoms.popoi[i] = 0.;
811  }
812  atoms.popmg2 = 0.;
813 
814  /* do we want to save negative opacities */
815  opac.lgNegOpacIO = false;
816 
817  opac.otsmin = 0.;
818 
819  /* this flag says to use the static opacities,
820  * only evaluate them at start of each new zone.
821  * when set false with
822  * no static opacities
823  * command, always reevaluate them */
824  opac.lgOpacStatic = true;
825 
826  /* set true in radinc if negative opacities ever occur */
827  opac.lgOpacNeg = false;
828 
829  /* can turn of scattering opacities for some geometries */
830  opac.lgScatON = true;
831 
832  /* variables having to do with compiling and/or using the
833  * ancillary file of stored opacities */
834  opac.lgCompileOpac = false;
835  /* "no file opacity" command sets following var false, says not to use file */
837  opac.lgUseFileOpac = false;
838 
840  /* effects of fast neutrons */
841  hextra.frcneu = 0.;
842  hextra.effneu = 1.;
843  hextra.totneu = 0.;
844  hextra.lgNeutrnHeatOn = false;
845  hextra.CrsSecNeutron = 4e-26;
846 
847  opac.stimax[0] = 0.;
848  opac.stimax[1] = 0.;
849 
850 
851  hmi.H2_total = 0.;
852  hmi.H2_total_f = 0.f;
853  hmi.HD_total = 0.;
854  hmi.H2_frac_abund_set = 0.;
855  hmi.hmihet = 0.;
856  hmi.h2plus_heat = 0.;
857  hmi.HeatH2Dish_used = 0.;
858  hmi.HeatH2Dexc_used = 0.;
859  hmi.HeatH2Dish_TH85 = 0.;
860  hmi.HeatH2Dexc_TH85 = 0.;
865  hmi.HeatH2DexcMax = 0.;
866  hmi.CoolH2DexcMax = 0.;
867  hmi.hmitot = 0.;
868  hmi.H2Opacity = 0.;
869  hmi.hmidep = 1.;
870  hmi.h2dep = 1.;
871  hmi.h2pdep = 1.;
872  hmi.h3pdep = 1.;
873 
874  /* option to kill effects of H2 in CO chemistry - set with
875  * set Leiden hack h2* off */
876  hmi.lgLeiden_Keep_ipMH2s = true;
877  hmi.lgLeidenCRHack = true;
878 
879  /* flag to turn off molecular network */
880  mole_global.lgNoMole = false;
881  mole_global.lgNoHeavyMole = false;
882  /* capture of molecules onto grain surfaces - formation of ices
883  * flag says to include this process - turned off with the
884  * command NO GRAIN MOLECULES */
886  /* flag saying that H2O water destruction rate went to zero */
887  mole_global.lgH2Ozer = false;
888  /* option to turn on the UMIST rates, naturally this will be 1, set to zero
889  with the set UMIST rates command */
890  mole_global.lgLeidenHack = false;
891  /* option to use diffuse cloud chemical rates from Table 8 of
892  * >> refer Federman, S. R. & Zsargo, J. 2003, ApJ, 589, 319
893  * By default, this is false - changed with set chemistry command */
894  mole_global.lgFederman = true;
895  /* option to use effective temperature as defined in
896  * >> refer Zsargo, J. & Federman, S. R. 2003, ApJ, 589, 319
897  * By default, this is false - changed with set chemistry command */
898  mole_global.lgNonEquilChem = false;
902  mole_global.lgProtElim = true;
906  mole_global.lgNeutrals = true;
907  /* option to use H2 continuum dissociation cross sections computed by P.C. Stancil
908  * By default, this is true - changed with "set H2 continuum dissociation xxx" command
909  * options are "Stancil" or "AD69" */
910  mole_global.lgStancil = false;
911  // all isotopes are currently disabled by default
912  mole_global.lgTreatIsotopes.resize( LIMELM );
914 
915  /* this says which estimate of the rate of the Solomon process to use,
916  * default is Tielens & Hollenbach 1985a, changed with
917  * set h2 Solomon command, options are TH85 and BD96,
918  * the second for the Bertoldi & Draine rates - they
919  * differ by 1 dex. when large H2 turned on this is ignored */
920  /* the Tielens & Hollenbach 1985 treatment */
922  /* the improved H2 formalism given by
923  *>>refer H2 dissoc Burton, M.G., Hollenbach, D.J. & Tielens, A.G.G.M
924  >>refcon 1990, ApJ, 365, 620 */
926  /* the Bertoldi & Draine 1996 treatment */
927  /* >>chng 03 nov 15, change default to BD96 */
929  /* >>chng 05 dec 08, use the Elwert et al. approximations as the default */
931 
932  /* set NaN */
938 
946 
953 
959 
965 
976 
977  /* default grain formation pumping - Takahashi 2001 */
978  hmi.chGrainFormPump = 'T';
979 
980  /* set which approximation for Jura rate - Cazaux & Tielens
981  * >>refer H2 form Cazaux, S., & Tielens, A.G.G.M., 2002, ApJ, 575, L29 */
982  hmi.chJura = 'C';
983 
984  /* scale factor to multiply Jura rate, set Jura rate command */
985  hmi.ScaleJura = 1.f;
986 
987  /* binding energy for change in H2 population while on grain surface,
988  * set with "set h2 Tad" command */
989  hmi.Tad = 800.;
990 
991  hmi.lgH2_Thermal_BigH2 = true;
992  hmi.lgH2_Chemistry_BigH2 = true;
993 
994  /* zero out some column densities */
995  for( long i=0; i < NCOLD; i++ )
996  {
997  colden.colden[i] = 0.;
998  }
999  colden.He123S = 0.;
1000  colden.coldenH2_ov_vel = 0.;
1001 
1002  /* F=0 and F=1 column densities of H0*/
1003  colden.H0_21cm_upper =0;
1004  colden.H0_21cm_lower =0;
1005 
1006  for( long i=0; i < 5; i++ )
1007  {
1008  colden.C2Pops[i] = 0.;
1009  colden.C2Colden[i] = 0.;
1010  /* pops and column density for SiII atom */
1011  colden.Si2Pops[i] = 0.;
1012  colden.Si2Colden[i] = 0.;
1013  }
1014  for( long i=0; i < 3; i++ )
1015  {
1016  /* pops and column density for CI atom */
1017  colden.C1Pops[i] = 0.;
1018  colden.C1Colden[i] = 0.;
1019  /* pops and column density for OI atom */
1020  colden.O1Pops[i] = 0.;
1021  colden.O1Colden[i] = 0.;
1022  /* pops and column density for CIII atom */
1023  colden.C3Pops[i] = 0.;
1024  }
1025  for( long i=0; i < 4; i++ )
1026  {
1027  /* pops and column density for CIII atom */
1028  colden.C3Colden[i] = 0.;
1029  }
1030 
1031  /* variables to do with Jeans mass and radius */
1032  colden.TotMassColl = 0.;
1033  colden.tmas = 0.;
1034  colden.wmas = 0.;
1035  colden.rjnmin = FLT_MAX;
1036  colden.ajmmin = FLT_MAX;
1037 
1038  /* variables dealing with the radius */
1039  radius.rinner = 0.;
1040  radius.distance = 0.;
1041  radius.Radius = 0.;
1042  radius.Radius_mid_zone = 0.;
1045  radius.depth_x_fillfac = 0.;
1046  radius.lgRadiusKnown = false;
1047  radius.drad = 0.;
1048  radius.drad_mid_zone = 0.;
1049  radius.r1r0sq = 1.;
1050  /* this is changed with the roberto command, to go from out to in */
1051  radius.dRadSign = 1.;
1052 
1053  /* RDFALT is log of default starting radius (cm) */
1054  /* >>chng 03 nov 12, from 25 to 30 for Lya clouds */
1055  /*radius.rdfalt = 25.;*/
1056  radius.rdfalt = 30.;
1057 
1058  /* set default cylinder thickness */
1059  radius.CylindHigh = 1e35f;
1060  radius.lgCylnOn = false;
1061 
1062  radius.drad_x_fillfac = 1.;
1063  radius.darea_x_fillfac = 1.;
1064  radius.dVeffVol = 1.;
1065  radius.dVeffAper = 1.;
1066  radius.drNext = 1.;
1067  radius.dRNeff = 1.;
1068  radius.lgdR2Small = false;
1069 
1071  radius.lgSdrminRel = false;
1072  radius.sdrmax = 1e30;
1073  radius.lgSdrmaxRel = false;
1074  radius.lgSMinON = false;
1075  radius.lgDrMnOn = true;
1076  radius.lgFixed = false;
1077  radius.sdrmin_rel_depth = 1e-5;
1078 
1079  radius.lgDrMinUsed = false;
1080 
1081  rfield.lgHabing = false;
1082 
1083  /* flag to turn off Lya ots */
1084  rfield.lgLyaOTS = true;
1085  /* HeII rec and Lya ots */
1086  rfield.lgHeIIOTS = true;
1087  rfield.lgKillOTSLine = false;
1088  rfield.lgKillOutLine = false;
1089  rfield.lgKillOutCont = false;
1090 
1091  /* rfield.DiffPumpOn is unity unless process disabled by setting to 1
1092  * with no diffuse line pumping command */
1093  rfield.DiffPumpOn = 1.;
1094 
1095  /* 02 jun 13, by Ryan...added this line */
1096  rfield.lgCompileGauntFF = false;
1097 
1098  /* >>chng 03 nov 28, add option to not do line transfer */
1099  rfield.lgDoLineTrans = true;
1100 
1101  /* flag saying whether to constantly reevaluated opacities -
1102  * set false with no opacity reevaluate command */
1103  rfield.lgOpacityReevaluate = true;
1104 
1105  /* flag saying whether to constantly reevaluated ionization -
1106  * set false with no ionization reevaluate command */
1107  rfield.lgIonizReevaluate = true;
1108  /* this element is default for choosing line width */
1110  /* there will be this many resolution elements in one FWHM for this element,
1111  * at the lowest temperature to be considered */
1113  /* continuum scale factor for case of time varying continuum */
1115  /* will fine optical depths be punched? */
1116  rfield.lgSaveOpacityFine = false;
1117 
1118  /* first is set true if one of the incident continua needs to have
1119  * H-ionizing radiation blocked. Second is set true is it is blocked
1120  * with extinguish command - want both true if first is true */
1121  rfield.lgMustBlockHIon = false;
1122  rfield.lgBlockHIon = false;
1123 
1124  /* reset some variable related to cooling */
1125  CoolZero();
1126 
1127  thermal.lgCNegChk = true;
1128  thermal.CoolHeatMax = 0.;
1129  thermal.wlCoolHeatMax = 0;
1130  thermal.totcol = 0.;
1131  thermal.heatl = 0.;
1132  thermal.coolheat = 0.;
1133  thermal.lgCExtraOn = false;
1134  thermal.CoolExtra = 0.;
1135  thermal.ctot = 1.;
1136 
1137  thermal.htot = 1.;
1138  thermal.power = 0.;
1139  thermal.FreeFreeTotHeat = 0.;
1140  thermal.char_tran_cool = 0.;
1141  thermal.char_tran_heat = 0.;
1142 
1143  fnzone = 0.;
1144  nzone = 0;
1145  /* save initial condition for talk in case PRINT LAST used */
1147 
1148  oxy.poiii2 = 0.;
1149  oxy.poiii3 = 0.;
1150  oxy.poiexc = 0.;
1151 
1152  oxy.d5007r = 0.;
1153  oxy.d5007t = 0.;
1154  oxy.d4363 = 0.;
1155  oxy.d6300 = 0.;
1156 
1157  atmdat.nsbig = 0;
1158 
1159  /***************************************************
1160  * charge transfer ionization and recombination
1161  ***************************************************/
1162  /* HCharHeatMax, HCharCoolMax are largest fractions of heating in cur zone
1163  * or cooling due to ct */
1164  atmdat.HCharHeatMax = 0.;
1165  atmdat.HCharCoolMax = 0.;
1166 
1167  for ( long nelem=0; nelem < t_atmdat::NCX; ++nelem)
1168  {
1169  atmdat.CharExcIonTotal[nelem] = 0.;
1170  atmdat.CharExcRecTotal[nelem] = 0.;
1171  }
1172  atmdat.HIonFrac = 0.;
1173  atmdat.HIonFracMax = 0.;
1174  /* option to turn off all charge transfer, turned off with no charge transfer command */
1175  atmdat.lgCTOn = true;
1176 
1177  /* flag saying that charge transfer heating should be included,
1178  * turned off with no CTHeat commmand */
1179  atmdat.HCharHeatOn = 1.;
1180  for( long nelem1=0; nelem1 < t_atmdat::NCX; ++nelem1)
1181  {
1182  for( long nelem=0; nelem< LIMELM; ++nelem )
1183  {
1184  for( long ion=0; ion<LIMELM; ++ion )
1185  {
1186  atmdat.CharExcIonOf[nelem1][nelem][ion] = 0.;
1187  atmdat.CharExcRecTo[nelem1][nelem][ion] = 0.;
1188  }
1189  }
1190  }
1191 
1192  /* >>chng 97 jan 6, from 0 to 8.5e-10*q as per Alex Dalgarno e-mail
1193  * >>chng 97 feb 6, from 8.5e-10*q 1.92e-9x as per Alex Dalgarno e-mail */
1194  atmdat.HCTAlex = 1.92e-9;
1195 
1196  for( long nelem=0; nelem < LIMELM; nelem++ )
1197  {
1198  /* these are depletion scale factors */
1199  abund.depset[nelem] = 1.;
1200  /*begin sanity check */
1201  if( abund.depset[nelem] == 0. )
1202  {
1203  fprintf( ioQQQ, " ZERO finds insane abundance or depletion.\n" );
1204  fprintf( ioQQQ, " atomic number=%6ld abundance=%10.2e depletion=%10.2e\n",
1205  nelem, abund.solar[nelem], abund.depset[nelem] );
1206  ShowMe();
1208  }
1209  /*end sanity check */
1210  }
1211 
1212  /* typical ISM depletion factors, subjective mean of Cowie and Songaila
1213  * and Jenkins
1214  * */
1215  abund.Depletion[0] = 1.;
1216  abund.Depletion[1] = 1.;
1217  abund.Depletion[2] = .16f;
1218  abund.Depletion[3] = .6f;
1219  abund.Depletion[4] = .13f;
1220  abund.Depletion[5] = 0.4f;
1221  abund.Depletion[6] = 1.0f;
1222  abund.Depletion[7] = 0.6f;
1223  abund.Depletion[8] = .3f;
1224  abund.Depletion[9] = 1.f;
1225  abund.Depletion[10] = 0.2f;
1226  abund.Depletion[11] = 0.2f;
1227  abund.Depletion[12] = 0.01f;
1228  abund.Depletion[13] = 0.03f;
1229  abund.Depletion[14] = .25f;
1230  abund.Depletion[15] = 1.0f;
1231  abund.Depletion[16] = 0.4f;
1232  abund.Depletion[17] = 1.0f;
1233  abund.Depletion[18] = .3f;
1234  abund.Depletion[19] = 1e-4f;
1235  abund.Depletion[20] = 5e-3f;
1236  abund.Depletion[21] = 8e-3f;
1237  abund.Depletion[22] = 6e-3f;
1238  abund.Depletion[23] = 6e-3f;
1239  abund.Depletion[24] = 5e-2f;
1240  abund.Depletion[25] = 0.01f;
1241  abund.Depletion[26] = 0.01f;
1242  abund.Depletion[27] = 0.01f;
1243  abund.Depletion[28] = .1f;
1244  abund.Depletion[29] = .25f;
1245 
1246  abund.lgDepln = false;
1247  abund.ScaleMetals = 1.;
1248 
1249  /* this tells the code to use standard Auger yields */
1251 
1252  rt.dTauMase = 0.;
1253  rt.lgMaserCapHit = false;
1254  rt.lgMaserSetDR = false;
1255 
1256  rt.DoubleTau = 1.;
1257  rt.lgFstOn = true;
1258  rt.lgElecScatEscape = true;
1259 
1260  /* there was a call to TestCode */
1261  lgTestCodeCalled = false;
1262  /* test code enabled with set test command */
1263  lgTestCodeEnabled = false;
1264 
1265  /* zero out some grain variables */
1266  GrainZero();
1267 
1268  /* this is flag saying whether this is very first call,
1269  * a time when space has not been allocated */
1270  lgFirstCall = false;
1271  return;
1272 }
realnum popca2ex
Definition: ca.h:34
long int nGrainFail
Definition: conv.h:229
realnum xLymanPumpingScaleFactor
Definition: hydrogenic.h:116
realnum x12tot
Definition: secondaries.h:53
long int nTeFail
Definition: conv.h:208
realnum otsmin
Definition: opacity.h:294
double PresTotlInit
Definition: pressure.h:92
bool lgConvEden
Definition: conv.h:202
double ** DR_Badnell_rate_coef
Definition: ionbal.h:204
double ** RR_Badnell_rate_coef
Definition: ionbal.h:204
double totcol
Definition: thermal.h:110
t_mole_global mole_global
Definition: mole.cpp:6
realnum BigJumpTe
Definition: phycon.h:106
long int iter_malloc
Definition: iterations.h:29
bool lgStancil
Definition: mole.h:289
bool lgDrMnOn
Definition: radius.h:136
double Radius
Definition: radius.h:22
double H2_Solomon_dissoc_rate_used_H2g
Definition: hmi.h:92
long int nEndDflt
Definition: geometry.h:93
char chGrainFormPump
Definition: hmi.h:171
void SetGasPhaseDensity(const long nelem, const realnum density)
Definition: dense.cpp:86
double cintot
Definition: hydrogenic.h:92
double depth
Definition: radius.h:22
void Magnetic_init(void)
Definition: magnetic.cpp:133
bool lgTrimhiOn
Definition: ionbal.h:95
t_atmdat atmdat
Definition: atmdat.cpp:6
double HCharHeatMax
Definition: atmdat.h:152
t_co co
Definition: co.cpp:5
t_thermal thermal
Definition: thermal.cpp:5
bool lgPut_state
Definition: state.h:20
bool lgTurbLawOn
Definition: doppvel.h:24
bool lgContinuumLoweringEnabled[NISO]
Definition: iso.h:358
bool lgSaveOpacityFine
Definition: rfield.h:423
t_colden colden
Definition: colden.cpp:5
double MaxFractionalDensityStepPerIteration
Definition: conv.h:274
void zero()
Definition: dense.cpp:31
double drad_mid_zone
Definition: radius.h:22
realnum depset[LIMELM]
Definition: abund.h:97
void GrainZero(void)
Definition: grains.cpp:500
double EdenErrorAllowed
Definition: conv.h:267
long int fine_opac_nresolv
Definition: rfield.h:383
const int ipHE_LIKE
Definition: iso.h:63
bool lgSonicPointAbortOK
Definition: pressure.h:165
double hmihet
Definition: hmi.h:24
vector< bool > lgTreatIsotopes
Definition: mole.h:311
double ** UTA_heat_rate
Definition: ionbal.h:172
double HCharHeatOn
Definition: atmdat.h:152
double hmitot
Definition: hmi.h:24
bool lgKillOutLine
Definition: rfield.h:434
double H2_photodissoc_ELWERT_H2s
Definition: hmi.h:111
double ** CompRecoilIonRate
Definition: ionbal.h:158
bool lgPessimisticErrors
Definition: iso.h:406
realnum pop2mx
Definition: hydrogenic.h:56
t_input input
Definition: input.cpp:12
realnum CoolExtra
Definition: thermal.h:132
t_opac opac
Definition: opacity.cpp:5
bool lgH2_Chemistry_BigH2
Definition: hmi.h:160
double ** CompRecoilHeatRate
Definition: ionbal.h:164
realnum Heiles_Troland_F
Definition: doppvel.h:28
double dRNeff
Definition: radius.h:90
realnum C2Colden[5]
Definition: colden.h:64
void set_NaN(sys_float &x)
Definition: cpu.cpp:673
t_hyperfine hyperfine
Definition: hyperfine.cpp:5
realnum UV_Cont_rel2_Draine_DB96_face
Definition: hmi.h:73
bool lgColl_ionize[NISO]
Definition: iso.h:345
char chConvEden[INPUT_LINE_LENGTH]
Definition: conv.h:92
bool lgZoneTrp
Definition: geometry.h:90
const realnum SMALLFLOAT
Definition: cpu.h:178
t_isoCTRL iso_ctrl
Definition: iso.cpp:6
double ** RR_Verner_rate_coef
Definition: ionbal.h:215
bool lgLeiden_Keep_ipMH2s
Definition: hmi.h:208
const int NISO
Definition: cddefines.h:265
realnum codtot
Definition: co.h:13
double RhoGravity_dark
Definition: pressure.h:119
long int ipPradMax_nzone
Definition: pressure.h:146
bool lgCylnOn
Definition: radius.h:121
char chNotConverged[INPUT_LINE_LENGTH]
Definition: conv.h:135
bool lgCompileRecomb[NISO]
Definition: iso.h:380
bool lgFSM[NISO]
Definition: iso.h:399
realnum HCorrFac
Definition: dense.h:111
double HeatH2Dish_BD96
Definition: hmi.h:129
realnum HeatEfficPrimary
Definition: secondaries.h:12
long int ilthn
Definition: ionbal.h:245
double time_H2_Form_here
Definition: timesc.h:35
long int * nend
Definition: geometry.h:80
char chNormLab[5]
Definition: lines.h:97
double PresRamCurr
Definition: pressure.h:79
realnum C1Colden[3]
Definition: colden.h:76
bool lgCS_therm_ave[NISO]
Definition: iso.h:388
double IntegRhoGravity
Definition: pressure.h:123
double ctot
Definition: thermal.h:110
bool lgPhotoIoniz_On
Definition: ionbal.h:116
const int N_OI_LEVELS
Definition: atoms.h:236
double CylindHigh
Definition: radius.h:120
bool lgConvPres
Definition: conv.h:199
long int iEmissPower
Definition: geometry.h:61
realnum BigJumpH2
Definition: phycon.h:106
bool lgCExtraOn
Definition: thermal.h:131
double H2_photodissoc_used_H2s
Definition: hmi.h:109
realnum Depletion[LIMELM]
Definition: abund.h:97
realnum BigHeatCoolError
Definition: conv.h:181
t_conv conv
Definition: conv.cpp:5
realnum wlCoolHeatMax
Definition: thermal.h:106
realnum tmas
Definition: colden.h:90
bool lgH2Ozer
Definition: mole.h:283
double H2_Solomon_dissoc_rate_TH85_H2s
Definition: hmi.h:99
t_hextra hextra
Definition: hextra.cpp:5
bool lgNeutrnHeatOn
Definition: hextra.h:71
realnum PresMax
Definition: pressure.h:136
double char_tran_cool
Definition: thermal.h:146
bool lgUseFileOpac
Definition: opacity.h:196
double H2_photodissoc_BHT90
Definition: hmi.h:113
double ** CompRecoilIonRateSave
Definition: ionbal.h:161
long int nNeFail
Definition: conv.h:217
double distance
Definition: radius.h:65
realnum HCollIonMax
Definition: hydrogenic.h:86
double HCharCoolMax
Definition: atmdat.h:152
double coolheat
Definition: thermal.h:110
int ipResoRedist[NISO]
Definition: iso.h:374
realnum fiscal
Definition: geometry.h:19
long int limPres2Ioniz
Definition: conv.h:161
t_phycon phycon
Definition: phycon.cpp:6
t_LineSave LineSave
Definition: lines.cpp:5
long int nLyaHot
Definition: hydrogenic.h:69
realnum CoolHeatMax
Definition: thermal.h:105
realnum effneu
Definition: hextra.h:75
void resetConvIoniz()
Definition: conv.h:100
realnum TurbVel
Definition: doppvel.h:12
t_dense dense
Definition: dense.cpp:24
double trimhi
Definition: ionbal.h:88
const int ipHe2p1P
Definition: iso.h:49
realnum GasPhaseAbundErrorAllowed
Definition: conv.h:285
bool lgScatON
Definition: opacity.h:183
double char_tran_heat
Definition: thermal.h:146
double H2_photodissoc_TH85
Definition: hmi.h:112
bool lgKillOutCont
Definition: rfield.h:437
double H2_Solomon_dissoc_rate_BD96_H2g
Definition: hmi.h:95
double TimeH21cm
Definition: timesc.h:51
realnum stimax[2]
Definition: opacity.h:297
bool lgIonizReevaluate
Definition: rfield.h:128
bool lgNormSet
Definition: lines.h:100
double sdrmax
Definition: radius.h:153
bool lgCS_None[NISO]
Definition: iso.h:388
realnum AverPressError
Definition: conv.h:186
realnum SecIon2PrimaryErg
Definition: secondaries.h:16
bool lgKillOTSLine
Definition: rfield.h:440
realnum BigPressError
Definition: conv.h:185
bool lgPradDen
Definition: pressure.h:153
double H2_Solomon_dissoc_rate_ELWERT_H2s
Definition: hmi.h:102
t_CoolHeavy CoolHeavy
Definition: coolheavy.cpp:5
realnum ajmmin
Definition: colden.h:88
realnum C3Colden[4]
Definition: colden.h:68
bool lgProtElim
Definition: mole.h:299
bool lgColl_l_mixing[NISO]
Definition: iso.h:339
realnum covgeo
Definition: geometry.h:35
bool lgZoneSet
Definition: geometry.h:87
realnum C3Pops[4]
Definition: colden.h:68
FILE * ioQQQ
Definition: cddefines.cpp:7
realnum AverHeatCoolError
Definition: conv.h:182
long int nsbig
Definition: atmdat.h:196
realnum FillFac
Definition: geometry.h:19
bool lgRecom_Badnell_print
Definition: ionbal.h:209
char chTitle[INPUT_LINE_LENGTH]
Definition: input.h:32
double h2plus_heat
Definition: hmi.h:39
long int nzone
Definition: cddefines.cpp:14
double HeatH2Dexc_used
Definition: hmi.h:129
bool lgRandErrGen[NISO]
Definition: iso.h:403
double HeatH2Dish_TH85
Definition: hmi.h:129
bool lgTalk
Definition: called.h:12
t_DoppVel DoppVel
Definition: doppvel.cpp:5
bool lgLTE_levels[NISO]
Definition: iso.h:347
realnum rjnmin
Definition: colden.h:88
void zero(void)
Definition: zero.cpp:73
t_dynamics dynamics
Definition: dynamics.cpp:44
double H2_Solomon_dissoc_rate_BD96_H2s
Definition: hmi.h:101
double HIonFracMax
Definition: atmdat.h:169
realnum BigJumpne
Definition: phycon.h:106
bool lgConverge_set
Definition: iterations.h:42
realnum time_continuum_scale
Definition: rfield.h:213
char chJura
Definition: hmi.h:174
bool lgTurbEquiMag
Definition: doppvel.h:37
double PresTotlCurr
Definition: pressure.h:86
double * StopRadius
Definition: radius.h:58
bool lgCS_Vrinceanu[NISO]
Definition: iso.h:388
bool lgNegOpacIO
Definition: opacity.h:186
void TempChange(double TempNew, bool lgForceUpdate)
Definition: temp_change.cpp:51
bool lgHeIIOTS
Definition: rfield.h:431
realnum Tad
Definition: hmi.h:124
realnum deriv_HeatH2Dexc_ELWERT
Definition: hmi.h:145
realnum PressureErrorAllowed
Definition: conv.h:272
bool lgDrMinUsed
Definition: radius.h:180
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
bool lgNumDeriv
Definition: numderiv.h:9
bool lgNonEquilChem
Definition: mole.h:294
double brems_cool_net
Definition: coolheavy.h:117
realnum frcneu
Definition: hextra.h:73
realnum SecHIonMax
Definition: secondaries.h:30
double pres_radiation_lines_curr
Definition: pressure.h:101
t_ca ca
Definition: ca.cpp:5
double H2_Solomon_dissoc_rate_TH85_H2g
Definition: hmi.h:93
bool lgPhysOK
Definition: phycon.h:101
double BigCOMoleForm
Definition: timesc.h:35
bool lgOpacNeg
Definition: opacity.h:179
double CrsSecNeutron
Definition: hextra.h:77
realnum autocv
Definition: conv.h:262
static t_ADfA & Inst()
Definition: cddefines.h:179
long int * IterPrnt
Definition: iterations.h:32
double ** RateRecomIso
Definition: ionbal.h:201
bool lgHabing
Definition: rfield.h:376
void FeIIZero(void)
Definition: atom_feii.cpp:2127
double time_H2_Dest_longest
Definition: timesc.h:35
double sdrmin_rel_depth
Definition: radius.h:156
realnum Ca2RmLya
Definition: ca.h:11
double depth_x_fillfac
Definition: radius.h:74
realnum Si2Pops[5]
Definition: colden.h:72
long int ifail
Definition: ionbal.h:245
realnum SmallA
Definition: iso.h:371
double H2_Solomon_dissoc_rate_BHT90_H2g
Definition: hmi.h:94
double dVeffVol
Definition: radius.h:81
bool lgCoStarInterpolationCaution
Definition: continuum.h:93
double ** RateRecomTot
Definition: ionbal.h:198
double heatl
Definition: thermal.h:110
bool lgElecScatEscape
Definition: rt.h:262
realnum SetCsupra
Definition: secondaries.h:33
bool lgMaserSetDR
Definition: rt.h:270
realnum deriv_HeatH2Dexc_TH85
Definition: hmi.h:145
bool lgSphere
Definition: geometry.h:24
double CharExcRecTotal[NCX]
Definition: atmdat.h:162
long int iteration
Definition: cddefines.cpp:16
long int fine_opac_nelem
Definition: rfield.h:380
double CharExcIonTotal[NCX]
Definition: atmdat.h:162
double H2_Solomon_dissoc_rate_used_H2s
Definition: hmi.h:98
#define MALLOC(exp)
Definition: cddefines.h:505
double ** sink
Definition: mole.h:351
double drad
Definition: radius.h:22
realnum wmas
Definition: colden.h:90
double power
Definition: thermal.h:149
bool lgColl_excite[NISO]
Definition: iso.h:342
t_ionbal ionbal
Definition: ionbal.cpp:5
double rinner
Definition: radius.h:22
double sdrmin
Definition: radius.h:152
t_abund abund
Definition: abund.cpp:5
realnum dstCala
Definition: ca.h:27
t_geometry geometry
Definition: geometry.cpp:5
double H2_photodissoc_ELWERT_H2g
Definition: hmi.h:110
const int ipIRON
Definition: cddefines.h:334
void CoolZero(void)
Definition: cool_etc.cpp:50
realnum ScaleMetals
Definition: abund.h:106
t_dark_matter dark
Definition: dark_matter.cpp:5
bool lgMap
Definition: conv.h:238
long nzone
Definition: he.h:20
int nCS_new[NISO]
Definition: iso.h:392
double sound_speed_isothermal
Definition: timesc.h:42
double RhoGravity
Definition: pressure.h:122
realnum d5007t
Definition: oxy.h:9
bool lgState_print
Definition: state.h:27
bool lgLeidenHack
Definition: mole.h:286
realnum Ca4p
Definition: ca.h:27
double H2_frac_abund_set
Definition: hmi.h:185
realnum poiii3
Definition: oxy.h:9
bool lgStrongDLimbo
Definition: pressure.h:175
bool lgSdrminRel
Definition: radius.h:160
long int nLyman[NISO]
Definition: iso.h:334
double HeatH2Dish_used
Definition: hmi.h:129
double popoi[N_OI_LEVELS]
Definition: atoms.h:255
realnum d4363
Definition: oxy.h:9
long int nPres2Ioniz
Definition: conv.h:152
realnum sec2total
Definition: secondaries.h:27
void DynaZero(void)
Definition: dynamics.cpp:1316
realnum deriv_HeatH2Dexc_BD96
Definition: hmi.h:145
double ** source
Definition: mole.h:351
realnum guess_noise
Definition: ionbal.h:231
double frac_he0dest_23S_photo
Definition: he.h:16
realnum C1Pops[3]
Definition: colden.h:76
void MeanZero()
Definition: mean.cpp:51
t_continuum continuum
Definition: continuum.cpp:5
#define NCOLD
Definition: colden.h:9
#define NSHELLS
Definition: ionbal.h:75
double brems_cool_h
Definition: coolheavy.h:117
double H0_21cm_lower
Definition: colden.h:96
bool lgLyaOTS
Definition: rfield.h:427
t_mole_local mole
Definition: mole.cpp:7
long int nprint
Definition: geometry.h:77
realnum BigJumpCO
Definition: phycon.h:106
t_pressure pressure
Definition: pressure.cpp:5
t_rfield rfield
Definition: rfield.cpp:8
const int ipCRD
Definition: cddefines.h:296
double ** UTA_ionize_rate
Definition: ionbal.h:170
STATIC void fill(double fenlo, double fenhi, double resolv, long int *n0, long int *ipnt, bool lgCount)
t_mean mean
Definition: mean.cpp:17
bool lgInnerShellLine_on
Definition: ionbal.h:175
realnum TurbVelLaw
Definition: doppvel.h:20
t_atoms atoms
Definition: atoms.cpp:5
double ResolutionScaleFactor
Definition: continuum.h:90
realnum *** xMoleChTrRate
Definition: mole.h:353
bool lgDielRecom[NISO]
Definition: iso.h:365
realnum DispScale
Definition: doppvel.h:42
float realnum
Definition: cddefines.h:107
#define EXIT_FAILURE
Definition: cddefines.h:144
double H0_21cm_upper
Definition: colden.h:95
bool lgPrintNumberOfLevels
Definition: iso.h:328
realnum IonizErrorAllowed
Definition: conv.h:280
realnum xNucleiTotal
Definition: dense.h:104
double HD_total
Definition: hmi.h:18
bool lgSdrmaxRel
Definition: radius.h:161
realnum CloudAgeSet
Definition: timesc.h:30
bool lgStatic
Definition: geometry.h:54
bool lgdR2Small
Definition: radius.h:112
double dCmHdT
Definition: conv.h:288
realnum WavLNorm
Definition: lines.h:84
bool lgFstOn
Definition: rt.h:256
t_hydro hydro
Definition: hydrogenic.cpp:5
bool lgCompileOpac
Definition: opacity.h:192
#define cdEXIT(FAIL)
Definition: cddefines.h:438
realnum RadBetaMax
Definition: pressure.h:136
double time_H2_Dest_here
Definition: timesc.h:35
bool lgRadiusKnown
Definition: radius.h:116
realnum covrt
Definition: geometry.h:51
bool lgEndDflt
Definition: geometry.h:96
double H2_Solomon_dissoc_rate_BHT90_H2s
Definition: hmi.h:100
bool lgMustBlockHIon
Definition: rfield.h:110
void AbundancesZero(void)
Definition: abundances.cpp:534
double depth_mid_zone
Definition: radius.h:22
double HeatH2Dexc_TH85
Definition: hmi.h:129
int gravity_symmetry
Definition: pressure.h:124
t_iterations iterations
Definition: iterations.cpp:5
bool lgPradCap
Definition: pressure.h:153
double HeatH2Dexc_BHT90
Definition: hmi.h:129
long int sig_figs
Definition: lines.h:91
double h3pdep
Definition: hmi.h:33
realnum HeatCoolRelErrorAllowed
Definition: conv.h:278
realnum EnergyKshell
Definition: continuum.h:123
t_state state
Definition: state.cpp:19
realnum UV_Cont_rel2_Habing_TH85_face
Definition: hmi.h:63
t_radius radius
Definition: radius.cpp:5
double dRadSign
Definition: radius.h:68
double ** CompRecoilHeatRateSave
Definition: ionbal.h:167
t_timesc timesc
Definition: timesc.cpp:5
double H2_photodissoc_used_H2g
Definition: hmi.h:108
bool lgRadPresAbortOK
Definition: pressure.h:161
realnum tsqden
Definition: peimbt.h:9
double h2dep
Definition: hmi.h:33
bool lgCritDensLMix[NISO]
Definition: iso.h:395
long int nTotalIoniz
Definition: conv.h:166
double **** PhotoRate_Shell
Definition: ionbal.h:111
bool lgDoLineTrans
Definition: rfield.h:117
realnum TotMassColl
Definition: colden.h:90
bool lgCNegChk
Definition: thermal.h:102
bool lgTestCodeEnabled
Definition: cddefines.cpp:12
realnum totneu
Definition: hextra.h:69
void zero_opacity()
Definition: atom_fe2ovr.cpp:79
bool lgLeidenCRHack
Definition: hmi.h:209
int nLyaLevel[NISO]
Definition: iso.h:377
bool lgInd2nu_On
Definition: iso.h:355
realnum UV_Cont_rel2_Draine_DB96_depth
Definition: hmi.h:73
realnum HeatH2DexcMax
Definition: hmi.h:46
long int itermx
Definition: iterations.h:26
bool lgOpacStatic
Definition: opacity.h:140
realnum C2Pops[5]
Definition: colden.h:64
bool lgTalkSave
Definition: called.h:15
double Radius_mid_zone
Definition: radius.h:22
double HeatH2Dish_ELWERT
Definition: hmi.h:129
const int ipH2p
Definition: iso.h:29
double *** CollIonRate_Ground
Definition: ionbal.h:120
long int nPreFail
Definition: conv.h:214
double h2pdep
Definition: hmi.h:33
bool lgStaticNoIt
Definition: geometry.h:74
long int LimFail
Definition: conv.h:235
bool lgLymanPumping
Definition: hydrogenic.h:111
t_peimbt peimbt
Definition: peimbt.cpp:5
FILE * ioPrnErr
Definition: cddefines.cpp:9
bool lgNeutrals
Definition: mole.h:304
double HeatH2Dish_BHT90
Definition: hmi.h:129
int lgGrainIonRecom
Definition: ionbal.h:228
bool lgOpacityReevaluate
Definition: rfield.h:121
double ** CX_recomb_rate_used
Definition: ionbal.h:204
bool lgConvTemp
Definition: conv.h:196
void resetCounters()
Definition: conv.h:313
int ipLyaRedist[NISO]
Definition: iso.h:374
double htot
Definition: thermal.h:149
long int ipNormWavL
Definition: lines.h:81
bool lgCon0
Definition: continuum.h:93
char chH2_small_model_type
Definition: hmi.h:168
realnum deriv_HeatH2Dexc_BHT90
Definition: hmi.h:145
t_he he
Definition: he.cpp:5
const int ipH_LIKE
Definition: iso.h:62
realnum coldenH2_ov_vel
Definition: colden.h:43
const int LIMELM
Definition: cddefines.h:262
realnum DampOnFac
Definition: hydrogenic.h:101
realnum poiii2
Definition: oxy.h:9
double hmidep
Definition: hmi.h:33
double drad_x_fillfac
Definition: radius.h:71
t_NumDeriv NumDeriv
Definition: numderiv.cpp:5
realnum popmg2
Definition: atoms.h:260
double *** RateIoniz
Definition: ionbal.h:184
bool lgLineRadPresOn
Definition: pressure.h:157
realnum poiexc
Definition: oxy.h:9
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:688
bool lgCompileGauntFF
Definition: rfield.h:232
realnum C12_C13_isotope_ratio
Definition: co.h:20
bool lgLya_pump_21cm
Definition: hyperfine.h:50
bool lgSMinON
Definition: radius.h:164
const int ipHELIUM
Definition: cddefines.h:310
bool lgGrain_mole_deplete
Definition: mole.h:308
bool lgH2_Thermal_BigH2
Definition: hmi.h:160
bool lgDepln
Definition: abund.h:103
bool lgAutoIt
Definition: conv.h:256
realnum TexcLya
Definition: hydrogenic.h:66
realnum failmx
Definition: conv.h:211
double He123S
Definition: colden.h:84
bool lgGet_state
Definition: state.h:20
double H2_total
Definition: hmi.h:16
realnum AverEdenError
Definition: conv.h:178
realnum d6300
Definition: oxy.h:9
bool lgUpdateCouplings
Definition: conv.h:259
double frac_he0dest_23S
Definition: he.h:16
realnum O1Colden[3]
Definition: colden.h:80
char chHTopType[5]
Definition: hydrogenic.h:80
double eden
Definition: dense.h:190
double HIonFrac
Definition: atmdat.h:166
bool lgTestCodeCalled
Definition: cddefines.cpp:11
bool lgSupDie[2]
Definition: ionbal.h:235
long int nPopFail
Definition: conv.h:226
void wcnint(void)
Definition: warnings.cpp:13
int ipSubRedist[NISO]
Definition: iso.h:374
t_oxy oxy
Definition: oxy.cpp:5
realnum H2_total_f
Definition: hmi.h:17
bool lgSonicPoint
Definition: pressure.h:168
bool lgHiPop2
Definition: hydrogenic.h:55
bool lgCompRecoil
Definition: ionbal.h:149
bool lgCollStrenThermAver
Definition: iso.h:351
realnum UV_Cont_rel2_Habing_TH85_depth
Definition: hmi.h:63
double HeatH2Dexc_ELWERT
Definition: hmi.h:129
realnum xMassDensity0
Definition: dense.h:95
long int nNegOI
Definition: atoms.h:252
realnum ScaleJura
Definition: hmi.h:178
realnum deriv_HeatH2Dexc_used
Definition: hmi.h:145
bool lgCTOn
Definition: atmdat.h:177
bool lgTurb_pressure
Definition: doppvel.h:33
double RhoGravity_external
Definition: pressure.h:121
realnum ** csupra
Definition: secondaries.h:21
realnum codfrc
Definition: co.h:13
void reset_yield()
Definition: yield.h:79
realnum ** csupra_effic
Definition: secondaries.h:21
realnum d5007r
Definition: oxy.h:9
const int ipPRD
Definition: cddefines.h:294
bool lgPrnErr
Definition: cddefines.cpp:13
realnum DoubleTau
Definition: rt.h:247
realnum dTauMase
Definition: rt.h:267
long int nIonFail
Definition: conv.h:223
double trimlo
Definition: ionbal.h:88
realnum SecExcitLya2PrimaryErg
Definition: secondaries.h:18
void HeatZero(void)
Definition: heat_sum.cpp:928
double FreeFreeTotHeat
Definition: thermal.h:161
realnum xMassTotal
Definition: dense.h:107
bool lgInnerShell_Kisielius
Definition: ionbal.h:177
bool lgNoCota
Definition: ionbal.h:239
realnum Upstream_density
Definition: dynamics.h:169
double self_mass_factor
Definition: pressure.h:125
double darea_x_fillfac
Definition: radius.h:77
double RhoGravity_self
Definition: pressure.h:120
bool lgNoHeavyMole
Definition: mole.h:280
bool lgFederman
Definition: mole.h:288
realnum H2Opacity
Definition: hmi.h:29
double HCTAlex
Definition: atmdat.h:173
realnum O1Pops[3]
Definition: colden.h:80
realnum DiffPumpOn
Definition: rfield.h:217
bool lgTopoff[NISO]
Definition: iso.h:408
double rdfalt
Definition: radius.h:124
t_hmi hmi
Definition: hmi.cpp:5
t_secondaries secondaries
Definition: secondaries.cpp:5
double r1r0sq
Definition: radius.h:22
bool lgNFW_Set
Definition: dark_matter.h:9
double fnzone
Definition: cddefines.cpp:15
realnum Ca3d
Definition: ca.h:27
double CharExcIonOf[NCX][LIMELM][LIMELM+1]
Definition: atmdat.h:152
double lgFixed
Definition: radius.h:154
void ShowMe(void)
Definition: service.cpp:181
realnum Si2Colden[5]
Definition: colden.h:72
bool lgNoMole
Definition: mole.h:277
double H2_Solomon_dissoc_rate_ELWERT_H2g
Definition: hmi.h:96
long int ilt
Definition: ionbal.h:245
char chSolverEden[20]
Definition: conv.h:245
double time_H2_Form_longest
Definition: timesc.h:35
double D2H_ratio
Definition: hydrogenic.h:98
const int ipHYDROGEN
Definition: cddefines.h:309
void fixit(void)
Definition: service.cpp:991
bool lgFreeOn
Definition: coolheavy.h:116
double CharExcRecTo[NCX][LIMELM][LIMELM+1]
Definition: atmdat.h:152
realnum BigEdenError
Definition: conv.h:220
realnum colden[NCOLD]
Definition: colden.h:38
const double DEPTH_OFFSET
Definition: cddefines.h:276
void set_version(phfit_version val)
Definition: atmdat.h:318
char chSolverTemp[20]
Definition: conv.h:249
bool lgBlockHIon
Definition: rfield.h:114
realnum TLyaMax
Definition: hydrogenic.h:72
bool lgMaserCapHit
Definition: rt.h:274
double r_200
Definition: dark_matter.h:10
long int nTotalFailures
Definition: conv.h:205
long int ihthn
Definition: ionbal.h:245
double HeatH2Dexc_BD96
Definition: hmi.h:129
t_called called
Definition: called.cpp:5
long int nLyman_malloc[NISO]
Definition: iso.h:334
realnum CODissHeat
Definition: co.h:13
realnum CotaRate[LIMELM]
Definition: ionbal.h:242
bool lgCS_Vriens[NISO]
Definition: iso.h:388
double dVeffAper
Definition: radius.h:87
realnum filpow
Definition: geometry.h:19
bool lgAbort
Definition: cddefines.cpp:10
const int ipCRDW
Definition: cddefines.h:298
long int iltln
Definition: ionbal.h:245
double ** RR_rate_coef_used
Definition: ionbal.h:212
double drNext
Definition: radius.h:61
bool lgInnerShell_Gu06
Definition: ionbal.h:180
double * StopThickness
Definition: radius.h:22
double ScaleNormLine
Definition: lines.h:94
long int ** ipCompRecoil
Definition: ionbal.h:155
double colmet
Definition: coolheavy.h:9
t_rt rt
Definition: rt.cpp:5
bool lgNoRecombInterp[NISO]
Definition: iso.h:385
realnum CoolH2DexcMax
Definition: hmi.h:46
realnum solar[LIMELM]
Definition: abund.h:65