cloudy trunk
Loading...
Searching...
No Matches
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 */
73void 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 */
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 */
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 */
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
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 */
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 */
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.;
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
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 */
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;
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 */
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. */
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 **********************************************************************/
417 secondaries.lgCSetOn = false;
418 secondaries.lgSecOFF = false;
420
424 secondaries.x12tot = 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 */
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) );
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 */
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 /* this is the default allowed relative error in the pressure */
688
690
691 /* default error in total gas-phase density of each element, including molecules */
693
694 /* this is abort option set with SET PRESIONIZ command */
695 conv.limPres2Ioniz = 3000;
696
697 conv.nTeFail = 0;
699 conv.nPreFail = 0;
700 conv.failmx = 0.;
701 conv.nIonFail = 0;
702 conv.nPopFail = 0;
703 conv.nNeFail = 0;
704 conv.nGrainFail = 0;
705 conv.dCmHdT = 0.;
706
707 /* some titles and line images */
708 for( long i=0; i<74; ++i)
709 {
710 input.chTitle[i] = ' ';
711 }
712 input.chTitle[75] = '\0';
713
714 /* velocity field information */
715 /* the turbulent velocity at illuminated face, internally in cm/s,
716 * but entered with turbulence command in km/s */
717 DoppVel.TurbVel = 0.;
718 /* is a turbulent gradient imposed? Default is no. */
719 DoppVel.lgTurbLawOn = false;
720 /* the log of the turbulence gradient power law. Default is zero. */
721 DoppVel.TurbVelLaw = 0.;
722 /* the parameter F in eq 34 of
723 *>>refer pressure turb Heiles, C. & Troland, T.H. 2005, 624, 773 */
725 /* is TurbVel included in pressure? - can be done two ways, with the velocity
726 * being set of with equipartition - true when TurbVel set if not equipartition,
727 * false with NO PRESSURE option on turbulence command */
729 /* The scale in cm over which the turbulence is dissipated. Normally 0,
730 * only set if dissipate keyword appears on turbulence command */
731 DoppVel.DispScale = 0.;
732 /* equipartition option on turbulence command, to set turbulence from B */
733 DoppVel.lgTurbEquiMag = false;
734
735 /* pressure related variables */
736
740 pressure.RhoGravity = 0.;
744
747 pressure.lgPradCap = false;
748 pressure.lgPradDen = false;
750 /* normally abort when radiation pressure exceeds gas pressure in const pres mod,
751 * this is option to keep going, set with NO ABORT on constant pressure command */
753 /* Ditto for whether to stop at sonic point, this gets set to false
754 * for some of the dynamics pressure modes (strongd, shock, antishock)*/
756 /* this flag will say we hit the sonic point */
757 pressure.lgSonicPoint = false;
758 /* True when no physical solution for desired pressure in strong D fronts */
759 pressure.lgStrongDLimbo = false;
760
761 pressure.RadBetaMax = 0.;
763 pressure.PresMax = 0.;
764
765 /* initial and current pressures */
768
769 /* zero out some dynamics variables */
770 DynaZero();
771
772 phycon.lgPhysOK = true;
773 /* largest relative changes in Te, ne, H+, H2, and CO in structure
774 * this is computed as part of prtcomment so does not exist when code not talking,
775 * set to zero in zero and still zero if prtcomment not called */
776 phycon.BigJumpTe = 0.;
777 phycon.BigJumpne = 0.;
778 phycon.BigJumpH2 = 0.;
779 phycon.BigJumpCO = 0.;
780
781 dense.xNucleiTotal = 1.;
782 /* WJH */
783 dense.xMassDensity0 = -1.0f;
784
785 // needed for TempChange to work but arrays needed for EdenChange to
786 // work are not yet defined
787 dense.eden = 1.;
788
789 /* now set physical conditions array
790 * following will force updating all temperature - density variables */
791 TempChange( 1e4 , true);
792
793 /* this is a scale factor that changes the n(H0)*1.7e-4 that is added to the
794 * electron density to account for collisions with atomic H. it is an order of
795 * magnitude guess, so this command provides ability to see whether it affects results */
796 dense.HCorrFac = 1.f;
797
798 dark.lgNFW_Set = false;
799 dark.r_200 = 0.;
800 dark.r_s = 0.;
801
802 atoms.nNegOI = 0;
803 for( long i=0; i< N_OI_LEVELS; ++i )
804 {
805 atoms.popoi[i] = 0.;
806 }
807 atoms.popmg2 = 0.;
808
809 /* do we want to save negative opacities */
810 opac.lgNegOpacIO = false;
811
812 opac.otsmin = 0.;
813
814 /* this flag says to use the static opacities,
815 * only evaluate them at start of each new zone.
816 * when set false with
817 * no static opacities
818 * command, always reevaluate them */
819 opac.lgOpacStatic = true;
820
821 /* set true in radinc if negative opacities ever occur */
822 opac.lgOpacNeg = false;
823
824 /* can turn of scattering opacities for some geometries */
825 opac.lgScatON = true;
826
827 /* variables having to do with compiling and/or using the
828 * ancillary file of stored opacities */
829 opac.lgCompileOpac = false;
830 /* "no file opacity" command sets following var false, says not to use file */
832 opac.lgUseFileOpac = false;
833
835 /* effects of fast neutrons */
836 hextra.frcneu = 0.;
837 hextra.effneu = 1.;
838 hextra.totneu = 0.;
839 hextra.lgNeutrnHeatOn = false;
840 hextra.CrsSecNeutron = 4e-26;
841
842 opac.stimax[0] = 0.;
843 opac.stimax[1] = 0.;
844
845
846 hmi.H2_total = 0.;
847 hmi.H2_total_f = 0.f;
848 hmi.HD_total = 0.;
850 hmi.hmihet = 0.;
851 hmi.h2plus_heat = 0.;
852 hmi.HeatH2Dish_used = 0.;
853 hmi.HeatH2Dexc_used = 0.;
854 hmi.HeatH2Dish_TH85 = 0.;
855 hmi.HeatH2Dexc_TH85 = 0.;
860 hmi.HeatH2DexcMax = 0.;
861 hmi.CoolH2DexcMax = 0.;
862 hmi.hmitot = 0.;
863 hmi.H2Opacity = 0.;
864 hmi.hmidep = 1.;
865 hmi.h2dep = 1.;
866 hmi.h2pdep = 1.;
867 hmi.h3pdep = 1.;
868
869 /* option to kill effects of H2 in CO chemistry - set with
870 * set Leiden hack h2* off */
872 hmi.lgLeidenCRHack = true;
873
874 /* flag to turn off molecular network */
875 mole_global.lgNoMole = false;
877 /* capture of molecules onto grain surfaces - formation of ices
878 * flag says to include this process - turned off with the
879 * command NO GRAIN MOLECULES */
881 /* flag saying that H2O water destruction rate went to zero */
882 mole_global.lgH2Ozer = false;
883 /* option to turn on the UMIST rates, naturally this will be 1, set to zero
884 with the set UMIST rates command */
886 /* option to use diffuse cloud chemical rates from Table 8 of
887 * >> refer Federman, S. R. & Zsargo, J. 2003, ApJ, 589, 319
888 * By default, this is false - changed with set chemistry command */
889 mole_global.lgFederman = true;
890 /* option to use effective temperature as defined in
891 * >> refer Zsargo, J. & Federman, S. R. 2003, ApJ, 589, 319
892 * By default, this is false - changed with set chemistry command */
897 mole_global.lgProtElim = true;
901 mole_global.lgNeutrals = true;
902 /* option to use H2 continuum dissociation cross sections computed by P.C. Stancil
903 * By default, this is true - changed with "set H2 continuum dissociation xxx" command
904 * options are "Stancil" or "AD69" */
905 mole_global.lgStancil = false;
906 // all isotopes are currently disabled by default
909
910 /* this says which estimate of the rate of the Solomon process to use,
911 * default is Tielens & Hollenbach 1985a, changed with
912 * set h2 Solomon command, options are TH85 and BD96,
913 * the second for the Bertoldi & Draine rates - they
914 * differ by 1 dex. when large H2 turned on this is ignored */
915 /* the Tielens & Hollenbach 1985 treatment */
917 /* the improved H2 formalism given by
918 *>>refer H2 dissoc Burton, M.G., Hollenbach, D.J. & Tielens, A.G.G.M
919 >>refcon 1990, ApJ, 365, 620 */
921 /* the Bertoldi & Draine 1996 treatment */
922 /* >>chng 03 nov 15, change default to BD96 */
924 /* >>chng 05 dec 08, use the Elwert et al. approximations as the default */
926
927 /* set NaN */
933
941
948
954
960
971
972 /* default grain formation pumping - Takahashi 2001 */
973 hmi.chGrainFormPump = 'T';
974
975 /* set which approximation for Jura rate - Cazaux & Tielens
976 * >>refer H2 form Cazaux, S., & Tielens, A.G.G.M., 2002, ApJ, 575, L29 */
977 hmi.chJura = 'C';
978
979 /* scale factor to multiply Jura rate, set Jura rate command */
980 hmi.ScaleJura = 1.f;
981
982 /* binding energy for change in H2 population while on grain surface,
983 * set with "set h2 Tad" command */
984 hmi.Tad = 800.;
985
986 hmi.lgH2_Thermal_BigH2 = true;
988
989 /* zero out some column densities */
990 for( long i=0; i < NCOLD; i++ )
991 {
992 colden.colden[i] = 0.;
993 }
994 colden.He123S = 0.;
996
997 /* F=0 and F=1 column densities of H0*/
1000
1001 for( long i=0; i < 5; i++ )
1002 {
1003 colden.C2Pops[i] = 0.;
1004 colden.C2Colden[i] = 0.;
1005 /* pops and column density for SiII atom */
1006 colden.Si2Pops[i] = 0.;
1007 colden.Si2Colden[i] = 0.;
1008 }
1009 for( long i=0; i < 3; i++ )
1010 {
1011 /* pops and column density for CI atom */
1012 colden.C1Pops[i] = 0.;
1013 colden.C1Colden[i] = 0.;
1014 /* pops and column density for OI atom */
1015 colden.O1Pops[i] = 0.;
1016 colden.O1Colden[i] = 0.;
1017 /* pops and column density for CIII atom */
1018 colden.C3Pops[i] = 0.;
1019 }
1020 for( long i=0; i < 4; i++ )
1021 {
1022 /* pops and column density for CIII atom */
1023 colden.C3Colden[i] = 0.;
1024 }
1025
1026 /* variables to do with Jeans mass and radius */
1027 colden.TotMassColl = 0.;
1028 colden.tmas = 0.;
1029 colden.wmas = 0.;
1030 colden.rjnmin = FLT_MAX;
1031 colden.ajmmin = FLT_MAX;
1032
1033 /* variables dealing with the radius */
1034 radius.rinner = 0.;
1035 radius.distance = 0.;
1036 radius.Radius = 0.;
1041 radius.lgRadiusKnown = false;
1042 radius.drad = 0.;
1043 radius.drad_mid_zone = 0.;
1044 radius.r1r0sq = 1.;
1045 /* this is changed with the roberto command, to go from out to in */
1046 radius.dRadSign = 1.;
1047
1048 /* RDFALT is log of default starting radius (cm) */
1049 /* >>chng 03 nov 12, from 25 to 30 for Lya clouds */
1050 /*radius.rdfalt = 25.;*/
1051 radius.rdfalt = 30.;
1052
1053 /* set default cylinder thickness */
1054 radius.CylindHigh = 1e35f;
1055 radius.lgCylnOn = false;
1056
1059 radius.dVeffVol = 1.;
1060 radius.dVeffAper = 1.;
1061 radius.drNext = 1.;
1062 radius.dRNeff = 1.;
1063 radius.lgdR2Small = false;
1064
1066 radius.lgSdrminRel = false;
1067 radius.sdrmax = 1e30;
1068 radius.lgSdrmaxRel = false;
1069 radius.lgSMinON = false;
1070 radius.lgDrMnOn = true;
1071 radius.lgFixed = false;
1072 radius.sdrmin_rel_depth = 1e-5;
1073
1074 radius.lgDrMinUsed = false;
1075
1076 rfield.lgHabing = false;
1077
1078 /* flag to turn off Lya ots */
1079 rfield.lgLyaOTS = true;
1080 /* HeII rec and Lya ots */
1081 rfield.lgHeIIOTS = true;
1082 rfield.lgKillOTSLine = false;
1083 rfield.lgKillOutLine = false;
1084 rfield.lgKillOutCont = false;
1085
1086 /* rfield.DiffPumpOn is unity unless process disabled by setting to 1
1087 * with no diffuse line pumping command */
1088 rfield.DiffPumpOn = 1.;
1089
1090 /* 02 jun 13, by Ryan...added this line */
1091 rfield.lgCompileGauntFF = false;
1092
1093 /* >>chng 03 nov 28, add option to not do line transfer */
1094 rfield.lgDoLineTrans = true;
1095
1096 /* flag saying whether to constantly reevaluated opacities -
1097 * set false with no opacity reevaluate command */
1099
1100 /* flag saying whether to constantly reevaluated ionization -
1101 * set false with no ionization reevaluate command */
1103 /* this element is default for choosing line width */
1105 /* there will be this many resolution elements in one FWHM for this element,
1106 * at the lowest temperature to be considered */
1108 /* continuum scale factor for case of time varying continuum */
1110 /* will fine optical depths be punched? */
1111 rfield.lgSaveOpacityFine = false;
1112
1113 /* first is set true if one of the incident continua needs to have
1114 * H-ionizing radiation blocked. Second is set true is it is blocked
1115 * with extinguish command - want both true if first is true */
1116 rfield.lgMustBlockHIon = false;
1117 rfield.lgBlockHIon = false;
1118
1119 /* reset some variable related to cooling */
1120 CoolZero();
1121
1122 thermal.lgCNegChk = true;
1123 thermal.CoolHeatMax = 0.;
1125 thermal.totcol = 0.;
1126 thermal.heatl = 0.;
1127 thermal.coolheat = 0.;
1128 thermal.lgCExtraOn = false;
1129 thermal.CoolExtra = 0.;
1130 thermal.ctot = 1.;
1131
1132 thermal.htot = 1.;
1133 thermal.power = 0.;
1137
1138 fnzone = 0.;
1139 nzone = 0;
1140 /* save initial condition for talk in case PRINT LAST used */
1142
1143 oxy.poiii2 = 0.;
1144 oxy.poiii3 = 0.;
1145 oxy.poiexc = 0.;
1146
1147 oxy.d5007r = 0.;
1148 oxy.d5007t = 0.;
1149 oxy.d4363 = 0.;
1150 oxy.d6300 = 0.;
1151
1152 atmdat.nsbig = 0;
1153
1154 /***************************************************
1155 * charge transfer ionization and recombination
1156 ***************************************************/
1157 /* HCharHeatMax, HCharCoolMax are largest fractions of heating in cur zone
1158 * or cooling due to ct */
1159 atmdat.HCharHeatMax = 0.;
1160 atmdat.HCharCoolMax = 0.;
1161
1162 for ( long nelem=0; nelem < t_atmdat::NCX; ++nelem)
1163 {
1164 atmdat.CharExcIonTotal[nelem] = 0.;
1165 atmdat.CharExcRecTotal[nelem] = 0.;
1166 }
1167 atmdat.HIonFrac = 0.;
1168 atmdat.HIonFracMax = 0.;
1169 /* option to turn off all charge transfer, turned off with no charge transfer command */
1170 atmdat.lgCTOn = true;
1171
1172 /* flag saying that charge transfer heating should be included,
1173 * turned off with no CTHeat commmand */
1174 atmdat.HCharHeatOn = 1.;
1175 for( long nelem1=0; nelem1 < t_atmdat::NCX; ++nelem1)
1176 {
1177 for( long nelem=0; nelem< LIMELM; ++nelem )
1178 {
1179 for( long ion=0; ion<LIMELM; ++ion )
1180 {
1181 atmdat.CharExcIonOf[nelem1][nelem][ion] = 0.;
1182 atmdat.CharExcRecTo[nelem1][nelem][ion] = 0.;
1183 }
1184 }
1185 }
1186
1187 /* >>chng 97 jan 6, from 0 to 8.5e-10*q as per Alex Dalgarno e-mail
1188 * >>chng 97 feb 6, from 8.5e-10*q 1.92e-9x as per Alex Dalgarno e-mail */
1189 atmdat.HCTAlex = 1.92e-9;
1190
1191 for( long nelem=0; nelem < LIMELM; nelem++ )
1192 {
1193 /* these are depletion scale factors */
1194 abund.depset[nelem] = 1.;
1195 /*begin sanity check */
1196 if( abund.depset[nelem] == 0. )
1197 {
1198 fprintf( ioQQQ, " ZERO finds insane abundance or depletion.\n" );
1199 fprintf( ioQQQ, " atomic number=%6ld abundance=%10.2e depletion=%10.2e\n",
1200 nelem, abund.solar[nelem], abund.depset[nelem] );
1201 ShowMe();
1203 }
1204 /*end sanity check */
1205 }
1206
1207 /* typical ISM depletion factors, subjective mean of Cowie and Songaila
1208 * and Jenkins
1209 * */
1210 abund.Depletion[0] = 1.;
1211 abund.Depletion[1] = 1.;
1212 abund.Depletion[2] = .16f;
1213 abund.Depletion[3] = .6f;
1214 abund.Depletion[4] = .13f;
1215 abund.Depletion[5] = 0.4f;
1216 abund.Depletion[6] = 1.0f;
1217 abund.Depletion[7] = 0.6f;
1218 abund.Depletion[8] = .3f;
1219 abund.Depletion[9] = 1.f;
1220 abund.Depletion[10] = 0.2f;
1221 abund.Depletion[11] = 0.2f;
1222 abund.Depletion[12] = 0.01f;
1223 abund.Depletion[13] = 0.03f;
1224 abund.Depletion[14] = .25f;
1225 abund.Depletion[15] = 1.0f;
1226 abund.Depletion[16] = 0.4f;
1227 abund.Depletion[17] = 1.0f;
1228 abund.Depletion[18] = .3f;
1229 abund.Depletion[19] = 1e-4f;
1230 abund.Depletion[20] = 5e-3f;
1231 abund.Depletion[21] = 8e-3f;
1232 abund.Depletion[22] = 6e-3f;
1233 abund.Depletion[23] = 6e-3f;
1234 abund.Depletion[24] = 5e-2f;
1235 abund.Depletion[25] = 0.01f;
1236 abund.Depletion[26] = 0.01f;
1237 abund.Depletion[27] = 0.01f;
1238 abund.Depletion[28] = .1f;
1239 abund.Depletion[29] = .25f;
1240
1241 abund.lgDepln = false;
1242 abund.ScaleMetals = 1.;
1243
1244 /* this tells the code to use standard Auger yields */
1246
1247 rt.dTauMase = 0.;
1248 rt.lgMaserCapHit = false;
1249 rt.lgMaserSetDR = false;
1250
1251 rt.DoubleTau = 1.;
1252 rt.lgFstOn = true;
1253 rt.lgElecScatEscape = true;
1254
1255 /* there was a call to TestCode */
1256 lgTestCodeCalled = false;
1257 /* test code enabled with set test command */
1258 lgTestCodeEnabled = false;
1259
1260 /* zero out some grain variables */
1261 GrainZero();
1262
1263 /* this is flag saying whether this is very first call,
1264 * a time when space has not been allocated */
1265 lgFirstCall = false;
1266 return;
1267}
t_abund abund
Definition: abund.cpp:5
void AbundancesZero(void)
Definition: abundances.cpp:534
t_atmdat atmdat
Definition: atmdat.cpp:6
@ PHFIT96
Definition: atmdat.h:276
void FeIIZero(void)
Definition: atom_feii.cpp:2127
t_atoms atoms
Definition: atoms.cpp:5
const int N_OI_LEVELS
Definition: atoms.h:236
t_ca ca
Definition: ca.cpp:5
t_called called
Definition: called.cpp:5
long int nzone
Definition: cddefines.cpp:14
FILE * ioPrnErr
Definition: cddefines.cpp:9
bool lgTestCodeCalled
Definition: cddefines.cpp:11
FILE * ioQQQ
Definition: cddefines.cpp:7
bool lgTestCodeEnabled
Definition: cddefines.cpp:12
bool lgPrnErr
Definition: cddefines.cpp:13
bool lgAbort
Definition: cddefines.cpp:10
long int iteration
Definition: cddefines.cpp:16
double fnzone
Definition: cddefines.cpp:15
const int ipIRON
Definition: cddefines.h:330
#define MALLOC(exp)
Definition: cddefines.h:501
const double DEPTH_OFFSET
Definition: cddefines.h:272
const int LIMELM
Definition: cddefines.h:258
#define EXIT_FAILURE
Definition: cddefines.h:140
#define cdEXIT(FAIL)
Definition: cddefines.h:434
const int NISO
Definition: cddefines.h:261
const int ipHELIUM
Definition: cddefines.h:306
float realnum
Definition: cddefines.h:103
const int ipCRDW
Definition: cddefines.h:294
const int ipHYDROGEN
Definition: cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
const int ipCRD
Definition: cddefines.h:292
void ShowMe(void)
Definition: service.cpp:181
void fixit(void)
Definition: service.cpp:991
const int ipPRD
Definition: cddefines.h:290
static t_ADfA & Inst()
Definition: cddefines.h:175
void set_version(phfit_version val)
Definition: atmdat.h:318
void zero_opacity()
Definition: atom_fe2ovr.cpp:79
double *** CollIonRate_Ground
Definition: ionbal.h:120
double ** RR_rate_coef_used
Definition: ionbal.h:212
bool lgCompRecoil
Definition: ionbal.h:149
bool lgRecom_Badnell_print
Definition: ionbal.h:209
bool lgSupDie[2]
Definition: ionbal.h:235
double ** RateRecomIso
Definition: ionbal.h:201
double ** RR_Verner_rate_coef
Definition: ionbal.h:215
double ** CompRecoilHeatRate
Definition: ionbal.h:164
double ** CompRecoilIonRateSave
Definition: ionbal.h:161
long int ilthn
Definition: ionbal.h:247
double ** UTA_ionize_rate
Definition: ionbal.h:170
realnum guess_noise
Definition: ionbal.h:231
realnum CotaRate[LIMELM]
Definition: ionbal.h:242
bool lgInnerShellLine_on
Definition: ionbal.h:175
double **** PhotoRate_Shell
Definition: ionbal.h:111
bool lgTrimhiOn
Definition: ionbal.h:95
long int ** ipCompRecoil
Definition: ionbal.h:155
bool lgNoCota
Definition: ionbal.h:239
double ** RateRecomTot
Definition: ionbal.h:198
long int ifail
Definition: ionbal.h:249
double *** RateIoniz
Definition: ionbal.h:184
double trimhi
Definition: ionbal.h:88
double ** UTA_heat_rate
Definition: ionbal.h:172
bool lgPhotoIoniz_On
Definition: ionbal.h:116
long int ihthn
Definition: ionbal.h:248
double ** CX_recomb_rate_used
Definition: ionbal.h:206
long int iltln
Definition: ionbal.h:246
double ** RR_Badnell_rate_coef
Definition: ionbal.h:204
int lgGrainIonRecom
Definition: ionbal.h:228
double trimlo
Definition: ionbal.h:92
bool lgInnerShell_Kisielius
Definition: ionbal.h:177
long int ilt
Definition: ionbal.h:245
bool lgInnerShell_Gu06
Definition: ionbal.h:180
double ** DR_Badnell_rate_coef
Definition: ionbal.h:205
double ** CompRecoilHeatRateSave
Definition: ionbal.h:167
double ** CompRecoilIonRate
Definition: ionbal.h:158
bool lgDielRecom[NISO]
Definition: iso.h:365
bool lgCS_therm_ave[NISO]
Definition: iso.h:391
bool lgColl_ionize[NISO]
Definition: iso.h:345
bool lgCS_None[NISO]
Definition: iso.h:389
bool lgCollStrenThermAver
Definition: iso.h:351
bool lgFSM[NISO]
Definition: iso.h:399
bool lgContinuumLoweringEnabled[NISO]
Definition: iso.h:358
int ipLyaRedist[NISO]
Definition: iso.h:374
bool lgNoRecombInterp[NISO]
Definition: iso.h:385
int ipSubRedist[NISO]
Definition: iso.h:374
bool lgLTE_levels[NISO]
Definition: iso.h:347
bool lgColl_l_mixing[NISO]
Definition: iso.h:339
int nLyaLevel[NISO]
Definition: iso.h:377
bool lgCritDensLMix[NISO]
Definition: iso.h:395
long int nLyman_malloc[NISO]
Definition: iso.h:336
int ipResoRedist[NISO]
Definition: iso.h:374
bool lgCS_Vrinceanu[NISO]
Definition: iso.h:390
bool lgPrintNumberOfLevels
Definition: iso.h:328
bool lgCS_Vriens[NISO]
Definition: iso.h:388
bool lgTopoff[NISO]
Definition: iso.h:408
long int nLyman[NISO]
Definition: iso.h:334
bool lgPessimisticErrors
Definition: iso.h:406
realnum SmallA
Definition: iso.h:371
int nCS_new[NISO]
Definition: iso.h:392
bool lgColl_excite[NISO]
Definition: iso.h:342
bool lgInd2nu_On
Definition: iso.h:355
bool lgRandErrGen[NISO]
Definition: iso.h:403
bool lgCompileRecomb[NISO]
Definition: iso.h:380
bool lgLeidenHack
Definition: mole.h:286
bool lgNoHeavyMole
Definition: mole.h:280
bool lgH2Ozer
Definition: mole.h:283
bool lgFederman
Definition: mole.h:288
bool lgNeutrals
Definition: mole.h:304
bool lgStancil
Definition: mole.h:289
bool lgNoMole
Definition: mole.h:277
bool lgNonEquilChem
Definition: mole.h:294
vector< bool > lgTreatIsotopes
Definition: mole.h:311
bool lgGrain_mole_deplete
Definition: mole.h:308
bool lgProtElim
Definition: mole.h:299
double ** source
Definition: mole.h:394
double ** sink
Definition: mole.h:394
realnum *** xMoleChTrRate
Definition: mole.h:396
void reset_yield()
Definition: yield.h:79
t_co co
Definition: co.cpp:5
t_colden colden
Definition: colden.cpp:5
#define NCOLD
Definition: colden.h:9
STATIC void fill(double fenlo, double fenhi, double resolv, long int *n0, long int *ipnt, bool lgCount)
t_continuum continuum
Definition: continuum.cpp:5
t_conv conv
Definition: conv.cpp:5
void CoolZero(void)
Definition: cool_etc.cpp:50
t_CoolHeavy CoolHeavy
Definition: coolheavy.cpp:5
void HeatZero(void)
Definition: heat_sum.cpp:928
void set_NaN(sys_float &x)
Definition: cpu.cpp:682
const realnum SMALLFLOAT
Definition: cpu.h:191
t_dark_matter dark
Definition: dark_matter.cpp:5
t_dense dense
Definition: dense.cpp:24
t_DoppVel DoppVel
Definition: doppvel.cpp:5
t_dynamics dynamics
Definition: dynamics.cpp:44
void DynaZero(void)
Definition: dynamics.cpp:1321
t_geometry geometry
Definition: geometry.cpp:5
void GrainZero(void)
Definition: grains.cpp:500
t_he he
Definition: he.cpp:5
t_hextra hextra
Definition: hextra.cpp:5
t_hmi hmi
Definition: hmi.cpp:5
t_hydro hydro
Definition: hydrogenic.cpp:5
t_hyperfine hyperfine
Definition: hyperfine.cpp:5
t_input input
Definition: input.cpp:12
t_ionbal ionbal
Definition: ionbal.cpp:5
#define NSHELLS
Definition: ionbal.h:75
t_isoCTRL iso_ctrl
Definition: iso.cpp:6
const int ipHe2p1P
Definition: iso.h:49
const int ipHE_LIKE
Definition: iso.h:63
const int ipH2p
Definition: iso.h:29
const int ipH_LIKE
Definition: iso.h:62
t_iterations iterations
Definition: iterations.cpp:5
t_LineSave LineSave
Definition: lines.cpp:5
void Magnetic_init(void)
Definition: magnetic.cpp:133
t_mean mean
Definition: mean.cpp:17
t_mole_global mole_global
Definition: mole.cpp:6
t_mole_local mole
Definition: mole.cpp:7
t_NumDeriv NumDeriv
Definition: numderiv.cpp:5
t_opac opac
Definition: opacity.cpp:5
t_oxy oxy
Definition: oxy.cpp:5
t_peimbt peimbt
Definition: peimbt.cpp:5
t_phycon phycon
Definition: phycon.cpp:6
t_pressure pressure
Definition: pressure.cpp:5
t_radius radius
Definition: radius.cpp:5
t_rfield rfield
Definition: rfield.cpp:8
t_rt rt
Definition: rt.cpp:5
t_secondaries secondaries
Definition: secondaries.cpp:5
t_state state
Definition: state.cpp:19
double brems_cool_h
Definition: coolheavy.h:117
double brems_cool_net
Definition: coolheavy.h:124
bool lgFreeOn
Definition: coolheavy.h:116
double colmet
Definition: coolheavy.h:71
realnum TurbVelLaw
Definition: doppvel.h:20
bool lgTurb_pressure
Definition: doppvel.h:33
realnum Heiles_Troland_F
Definition: doppvel.h:28
realnum TurbVel
Definition: doppvel.h:12
bool lgTurbLawOn
Definition: doppvel.h:24
realnum DispScale
Definition: doppvel.h:42
bool lgTurbEquiMag
Definition: doppvel.h:37
long int sig_figs
Definition: lines.h:91
char chNormLab[5]
Definition: lines.h:97
realnum WavLNorm
Definition: lines.h:84
bool lgNormSet
Definition: lines.h:100
long int ipNormWavL
Definition: lines.h:81
double ScaleNormLine
Definition: lines.h:94
bool lgNumDeriv
Definition: numderiv.h:9
realnum Depletion[LIMELM]
Definition: abund.h:97
bool lgDepln
Definition: abund.h:103
realnum ScaleMetals
Definition: abund.h:106
realnum solar[LIMELM]
Definition: abund.h:65
realnum depset[LIMELM]
Definition: abund.h:100
bool lgCTOn
Definition: atmdat.h:177
double CharExcRecTo[NCX][LIMELM][LIMELM+1]
Definition: atmdat.h:153
@ NCX
Definition: atmdat.h:144
double CharExcIonOf[NCX][LIMELM][LIMELM+1]
Definition: atmdat.h:152
double HCharHeatMax
Definition: atmdat.h:154
double HCharCoolMax
Definition: atmdat.h:155
double CharExcRecTotal[NCX]
Definition: atmdat.h:163
long int nsbig
Definition: atmdat.h:196
double HIonFracMax
Definition: atmdat.h:169
double CharExcIonTotal[NCX]
Definition: atmdat.h:162
double HCTAlex
Definition: atmdat.h:173
double HIonFrac
Definition: atmdat.h:166
double HCharHeatOn
Definition: atmdat.h:156
realnum popmg2
Definition: atoms.h:262
long int nNegOI
Definition: atoms.h:252
double popoi[N_OI_LEVELS]
Definition: atoms.h:255
realnum Ca2RmLya
Definition: ca.h:11
realnum Ca4p
Definition: ca.h:31
realnum dstCala
Definition: ca.h:27
realnum popca2ex
Definition: ca.h:34
realnum Ca3d
Definition: ca.h:30
bool lgTalkSave
Definition: called.h:15
bool lgTalk
Definition: called.h:12
realnum codfrc
Definition: co.h:15
realnum codtot
Definition: co.h:16
realnum CODissHeat
Definition: co.h:13
realnum Si2Pops[5]
Definition: colden.h:72
realnum rjnmin
Definition: colden.h:88
realnum O1Colden[3]
Definition: colden.h:81
realnum ajmmin
Definition: colden.h:89
realnum tmas
Definition: colden.h:91
double He123S
Definition: colden.h:84
realnum C3Pops[4]
Definition: colden.h:68
realnum TotMassColl
Definition: colden.h:90
realnum C2Colden[5]
Definition: colden.h:65
realnum Si2Colden[5]
Definition: colden.h:73
realnum C1Colden[3]
Definition: colden.h:77
realnum C2Pops[5]
Definition: colden.h:64
double H0_21cm_lower
Definition: colden.h:96
realnum C3Colden[4]
Definition: colden.h:69
realnum colden[NCOLD]
Definition: colden.h:38
realnum wmas
Definition: colden.h:92
realnum C1Pops[3]
Definition: colden.h:76
realnum O1Pops[3]
Definition: colden.h:80
double H0_21cm_upper
Definition: colden.h:95
realnum coldenH2_ov_vel
Definition: colden.h:43
double ResolutionScaleFactor
Definition: continuum.h:90
bool lgCoStarInterpolationCaution
Definition: continuum.h:94
realnum EnergyKshell
Definition: continuum.h:123
bool lgCon0
Definition: continuum.h:93
long int LimFail
Definition: conv.h:235
bool lgConvTemp
Definition: conv.h:196
long int nTotalIoniz
Definition: conv.h:166
double dCmHdT
Definition: conv.h:288
bool lgMap
Definition: conv.h:238
realnum IonizErrorAllowed
Definition: conv.h:280
char chSolverTemp[20]
Definition: conv.h:249
realnum autocv
Definition: conv.h:262
realnum PressureErrorAllowed
Definition: conv.h:272
bool lgAutoIt
Definition: conv.h:256
double MaxFractionalDensityStepPerIteration
Definition: conv.h:274
long int nPopFail
Definition: conv.h:226
realnum BigEdenError
Definition: conv.h:220
char chConvEden[INPUT_LINE_LENGTH]
Definition: conv.h:92
realnum failmx
Definition: conv.h:211
void resetCounters()
Definition: conv.h:313
bool lgConvEden
Definition: conv.h:202
long int nTeFail
Definition: conv.h:208
realnum AverPressError
Definition: conv.h:186
long int nPres2Ioniz
Definition: conv.h:152
long int nGrainFail
Definition: conv.h:229
long int nNeFail
Definition: conv.h:217
realnum AverHeatCoolError
Definition: conv.h:182
char chSolverEden[20]
Definition: conv.h:245
realnum BigHeatCoolError
Definition: conv.h:181
realnum BigPressError
Definition: conv.h:185
realnum AverEdenError
Definition: conv.h:178
long int nPreFail
Definition: conv.h:214
bool lgConvPres
Definition: conv.h:199
void resetConvIoniz()
Definition: conv.h:100
long int limPres2Ioniz
Definition: conv.h:161
long int nIonFail
Definition: conv.h:223
long int nTotalFailures
Definition: conv.h:205
realnum GasPhaseAbundErrorAllowed
Definition: conv.h:285
char chNotConverged[INPUT_LINE_LENGTH]
Definition: conv.h:135
bool lgUpdateCouplings
Definition: conv.h:259
double EdenErrorAllowed
Definition: conv.h:267
realnum HeatCoolRelErrorAllowed
Definition: conv.h:278
bool lgNFW_Set
Definition: dark_matter.h:9
double r_200
Definition: dark_matter.h:10
realnum xNucleiTotal
Definition: dense.h:104
realnum HCorrFac
Definition: dense.h:111
void zero()
Definition: dense.cpp:31
double eden
Definition: dense.h:190
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
realnum xMassTotal
Definition: dense.h:107
realnum xMassDensity0
Definition: dense.h:95
void SetGasPhaseDensity(const long nelem, const realnum density)
Definition: dense.cpp:86
realnum Upstream_density
Definition: dynamics.h:169
long int iEmissPower
Definition: geometry.h:61
long int * nend
Definition: geometry.h:80
bool lgStatic
Definition: geometry.h:54
long int nprint
Definition: geometry.h:77
long int nEndDflt
Definition: geometry.h:93
bool lgZoneSet
Definition: geometry.h:87
realnum covrt
Definition: geometry.h:51
bool lgEndDflt
Definition: geometry.h:96
bool lgSphere
Definition: geometry.h:24
bool lgStaticNoIt
Definition: geometry.h:74
bool lgZoneTrp
Definition: geometry.h:90
realnum FillFac
Definition: geometry.h:19
realnum fiscal
Definition: geometry.h:21
realnum filpow
Definition: geometry.h:20
realnum covgeo
Definition: geometry.h:35
double frac_he0dest_23S_photo
Definition: he.h:18
long nzone
Definition: he.h:20
double frac_he0dest_23S
Definition: he.h:16
realnum effneu
Definition: hextra.h:75
double CrsSecNeutron
Definition: hextra.h:77
realnum frcneu
Definition: hextra.h:73
realnum totneu
Definition: hextra.h:69
bool lgNeutrnHeatOn
Definition: hextra.h:71
double HeatH2Dexc_used
Definition: hmi.h:137
char chJura
Definition: hmi.h:174
bool lgH2_Chemistry_BigH2
Definition: hmi.h:164
realnum UV_Cont_rel2_Draine_DB96_depth
Definition: hmi.h:74
realnum deriv_HeatH2Dexc_BHT90
Definition: hmi.h:148
realnum UV_Cont_rel2_Habing_TH85_face
Definition: hmi.h:63
double hmihet
Definition: hmi.h:24
double H2_Solomon_dissoc_rate_ELWERT_H2s
Definition: hmi.h:102
realnum HeatH2DexcMax
Definition: hmi.h:46
double HeatH2Dish_BHT90
Definition: hmi.h:132
double HeatH2Dish_used
Definition: hmi.h:129
double H2_Solomon_dissoc_rate_ELWERT_H2g
Definition: hmi.h:96
bool lgLeidenCRHack
Definition: hmi.h:209
double H2_photodissoc_ELWERT_H2s
Definition: hmi.h:111
double H2_Solomon_dissoc_rate_used_H2g
Definition: hmi.h:92
double hmitot
Definition: hmi.h:25
char chH2_small_model_type
Definition: hmi.h:168
double HeatH2Dexc_BD96
Definition: hmi.h:139
realnum deriv_HeatH2Dexc_used
Definition: hmi.h:145
char chGrainFormPump
Definition: hmi.h:171
double H2_photodissoc_BHT90
Definition: hmi.h:113
double H2_Solomon_dissoc_rate_TH85_H2g
Definition: hmi.h:93
double H2_total
Definition: hmi.h:16
double H2_Solomon_dissoc_rate_used_H2s
Definition: hmi.h:98
double H2_Solomon_dissoc_rate_BD96_H2g
Definition: hmi.h:95
double HeatH2Dish_TH85
Definition: hmi.h:130
realnum UV_Cont_rel2_Draine_DB96_face
Definition: hmi.h:73
double H2_photodissoc_used_H2g
Definition: hmi.h:108
realnum deriv_HeatH2Dexc_TH85
Definition: hmi.h:146
double HeatH2Dexc_ELWERT
Definition: hmi.h:141
double hmidep
Definition: hmi.h:33
double H2_photodissoc_used_H2s
Definition: hmi.h:109
double h2dep
Definition: hmi.h:34
realnum ScaleJura
Definition: hmi.h:178
realnum H2_total_f
Definition: hmi.h:17
realnum deriv_HeatH2Dexc_BD96
Definition: hmi.h:147
bool lgH2_Thermal_BigH2
Definition: hmi.h:160
double HeatH2Dexc_TH85
Definition: hmi.h:138
double H2_photodissoc_ELWERT_H2g
Definition: hmi.h:110
double HeatH2Dexc_BHT90
Definition: hmi.h:140
double HeatH2Dish_BD96
Definition: hmi.h:131
double H2_Solomon_dissoc_rate_BHT90_H2s
Definition: hmi.h:100
realnum H2Opacity
Definition: hmi.h:29
double HeatH2Dish_ELWERT
Definition: hmi.h:133
double H2_photodissoc_TH85
Definition: hmi.h:112
realnum UV_Cont_rel2_Habing_TH85_depth
Definition: hmi.h:64
bool lgLeiden_Keep_ipMH2s
Definition: hmi.h:208
double h3pdep
Definition: hmi.h:36
realnum CoolH2DexcMax
Definition: hmi.h:48
double H2_frac_abund_set
Definition: hmi.h:185
realnum Tad
Definition: hmi.h:124
double h2pdep
Definition: hmi.h:35
realnum deriv_HeatH2Dexc_ELWERT
Definition: hmi.h:149
double h2plus_heat
Definition: hmi.h:39
double HD_total
Definition: hmi.h:18
double H2_Solomon_dissoc_rate_BHT90_H2g
Definition: hmi.h:94
double H2_Solomon_dissoc_rate_TH85_H2s
Definition: hmi.h:99
double H2_Solomon_dissoc_rate_BD96_H2s
Definition: hmi.h:101
bool lgHiPop2
Definition: hydrogenic.h:55
double D2H_ratio
Definition: hydrogenic.h:98
realnum xLymanPumpingScaleFactor
Definition: hydrogenic.h:116
realnum pop2mx
Definition: hydrogenic.h:56
bool lgLymanPumping
Definition: hydrogenic.h:111
double cintot
Definition: hydrogenic.h:92
realnum TexcLya
Definition: hydrogenic.h:66
realnum TLyaMax
Definition: hydrogenic.h:72
long int nLyaHot
Definition: hydrogenic.h:69
realnum DampOnFac
Definition: hydrogenic.h:101
char chHTopType[5]
Definition: hydrogenic.h:80
realnum HCollIonMax
Definition: hydrogenic.h:86
bool lgLya_pump_21cm
Definition: hyperfine.h:50
char chTitle[INPUT_LINE_LENGTH]
Definition: input.h:37
long int itermx
Definition: iterations.h:26
long int * IterPrnt
Definition: iterations.h:32
long int iter_malloc
Definition: iterations.h:29
bool lgConverge_set
Definition: iterations.h:42
void MeanZero()
Definition: mean.cpp:51
bool lgCompileOpac
Definition: opacity.h:192
bool lgOpacNeg
Definition: opacity.h:179
bool lgUseFileOpac
Definition: opacity.h:196
bool lgOpacStatic
Definition: opacity.h:140
realnum otsmin
Definition: opacity.h:294
bool lgScatON
Definition: opacity.h:183
realnum stimax[2]
Definition: opacity.h:297
bool lgNegOpacIO
Definition: opacity.h:186
realnum d6300
Definition: oxy.h:20
realnum poiii3
Definition: oxy.h:12
realnum d5007t
Definition: oxy.h:11
realnum poiii2
Definition: oxy.h:9
realnum d5007r
Definition: oxy.h:10
realnum d4363
Definition: oxy.h:15
realnum poiexc
Definition: oxy.h:18
realnum tsqden
Definition: peimbt.h:16
bool lgPhysOK
Definition: phycon.h:101
realnum BigJumpH2
Definition: phycon.h:106
realnum BigJumpTe
Definition: phycon.h:106
realnum BigJumpne
Definition: phycon.h:106
realnum BigJumpCO
Definition: phycon.h:106
bool lgLineRadPresOn
Definition: pressure.h:157
bool lgStrongDLimbo
Definition: pressure.h:175
bool lgSonicPoint
Definition: pressure.h:168
double RhoGravity_self
Definition: pressure.h:120
realnum RadBetaMax
Definition: pressure.h:136
double RhoGravity_dark
Definition: pressure.h:119
bool lgPradDen
Definition: pressure.h:154
double IntegRhoGravity
Definition: pressure.h:123
double PresRamCurr
Definition: pressure.h:79
int gravity_symmetry
Definition: pressure.h:124
bool lgSonicPointAbortOK
Definition: pressure.h:165
double RhoGravity
Definition: pressure.h:122
realnum PresMax
Definition: pressure.h:140
bool lgPradCap
Definition: pressure.h:153
double self_mass_factor
Definition: pressure.h:125
double RhoGravity_external
Definition: pressure.h:121
double pres_radiation_lines_curr
Definition: pressure.h:101
double PresTotlInit
Definition: pressure.h:92
bool lgRadPresAbortOK
Definition: pressure.h:161
long int ipPradMax_nzone
Definition: pressure.h:146
double PresTotlCurr
Definition: pressure.h:86
double CylindHigh
Definition: radius.h:120
bool lgSdrmaxRel
Definition: radius.h:161
double lgFixed
Definition: radius.h:154
double drad
Definition: radius.h:31
bool lgSdrminRel
Definition: radius.h:160
double sdrmax
Definition: radius.h:153
double sdrmin_rel_depth
Definition: radius.h:156
double r1r0sq
Definition: radius.h:49
bool lgdR2Small
Definition: radius.h:112
double depth_mid_zone
Definition: radius.h:41
double rinner
Definition: radius.h:22
bool lgDrMinUsed
Definition: radius.h:180
double drad_x_fillfac
Definition: radius.h:71
double * StopRadius
Definition: radius.h:58
double dVeffAper
Definition: radius.h:87
bool lgCylnOn
Definition: radius.h:121
double rdfalt
Definition: radius.h:124
double sdrmin
Definition: radius.h:152
double darea_x_fillfac
Definition: radius.h:77
double * StopThickness
Definition: radius.h:55
bool lgSMinON
Definition: radius.h:164
double depth_x_fillfac
Definition: radius.h:74
double dVeffVol
Definition: radius.h:81
double drNext
Definition: radius.h:61
bool lgDrMnOn
Definition: radius.h:136
double drad_mid_zone
Definition: radius.h:34
double distance
Definition: radius.h:65
bool lgRadiusKnown
Definition: radius.h:116
double dRNeff
Definition: radius.h:90
double Radius_mid_zone
Definition: radius.h:28
double Radius
Definition: radius.h:25
double depth
Definition: radius.h:38
double dRadSign
Definition: radius.h:68
bool lgHabing
Definition: rfield.h:376
bool lgKillOutLine
Definition: rfield.h:434
long int fine_opac_nresolv
Definition: rfield.h:383
bool lgOpacityReevaluate
Definition: rfield.h:121
bool lgCompileGauntFF
Definition: rfield.h:232
bool lgKillOutCont
Definition: rfield.h:437
realnum DiffPumpOn
Definition: rfield.h:217
realnum time_continuum_scale
Definition: rfield.h:213
bool lgHeIIOTS
Definition: rfield.h:431
bool lgMustBlockHIon
Definition: rfield.h:110
bool lgKillOTSLine
Definition: rfield.h:440
bool lgBlockHIon
Definition: rfield.h:114
bool lgLyaOTS
Definition: rfield.h:427
long int fine_opac_nelem
Definition: rfield.h:380
bool lgSaveOpacityFine
Definition: rfield.h:423
bool lgDoLineTrans
Definition: rfield.h:117
bool lgIonizReevaluate
Definition: rfield.h:128
bool lgElecScatEscape
Definition: rt.h:262
bool lgFstOn
Definition: rt.h:256
realnum dTauMase
Definition: rt.h:267
bool lgMaserSetDR
Definition: rt.h:270
realnum DoubleTau
Definition: rt.h:247
bool lgMaserCapHit
Definition: rt.h:274
realnum SecIon2PrimaryErg
Definition: secondaries.h:16
realnum ** csupra
Definition: secondaries.h:21
realnum sec2total
Definition: secondaries.h:27
realnum SecHIonMax
Definition: secondaries.h:30
realnum x12tot
Definition: secondaries.h:53
realnum ** csupra_effic
Definition: secondaries.h:22
realnum SetCsupra
Definition: secondaries.h:33
realnum HeatEfficPrimary
Definition: secondaries.h:12
realnum SecExcitLya2PrimaryErg
Definition: secondaries.h:18
bool lgPut_state
Definition: state.h:21
bool lgState_print
Definition: state.h:27
bool lgGet_state
Definition: state.h:20
double heatl
Definition: thermal.h:114
double FreeFreeTotHeat
Definition: thermal.h:161
double char_tran_heat
Definition: thermal.h:146
bool lgCExtraOn
Definition: thermal.h:131
double ctot
Definition: thermal.h:112
realnum wlCoolHeatMax
Definition: thermal.h:106
double htot
Definition: thermal.h:149
double char_tran_cool
Definition: thermal.h:146
realnum CoolHeatMax
Definition: thermal.h:105
double coolheat
Definition: thermal.h:116
realnum CoolExtra
Definition: thermal.h:132
double power
Definition: thermal.h:152
double totcol
Definition: thermal.h:110
bool lgCNegChk
Definition: thermal.h:102
double time_H2_Dest_here
Definition: timesc.h:37
double time_H2_Dest_longest
Definition: timesc.h:35
double time_H2_Form_here
Definition: timesc.h:38
double TimeH21cm
Definition: timesc.h:51
double BigCOMoleForm
Definition: timesc.h:39
realnum CloudAgeSet
Definition: timesc.h:30
double time_H2_Form_longest
Definition: timesc.h:36
double sound_speed_isothermal
Definition: timesc.h:42
void TempChange(double TempNew, bool lgForceUpdate)
Definition: temp_change.cpp:51
t_thermal thermal
Definition: thermal.cpp:5
t_timesc timesc
Definition: timesc.cpp:5
void wcnint(void)
Definition: warnings.cpp:13
void zero(void)
Definition: zero.cpp:73