cloudy trunk
Loading...
Searching...
No Matches
iter_end_chk.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/*iter_end_check after each zone by Cloudy, determines whether model is complete */
4#include "cddefines.h"
5/* */
6#ifdef EPS
7# undef EPS
8#endif
9#define EPS 1.00001
10#include "lines.h"
11#include "mole.h"
12#include "conv.h"
13#include "rfield.h"
14#include "iterations.h"
15#include "trace.h"
16#include "dense.h"
17#include "colden.h"
18#include "taulines.h"
19#include "hmi.h"
20#include "prt.h"
21#include "phycon.h"
22#include "geometry.h"
23#include "stopcalc.h"
24#include "opacity.h"
25#include "thermal.h"
26#include "cooling.h"
27#include "predcont.h"
28#include "pressure.h"
29#include "radius.h"
30#include "called.h"
31#include "wind.h"
32#include "hcmap.h"
33
34/*dmpary print all coolants for some zone, as from print cooling command */
35STATIC void dmpary(void);
36
38{
39 bool lgDone,
40 lgEndFun_v,
41 lgPrinted;
42 long int i;
43 double oxy_in_grains;
44
45 DEBUG_ENTRY( "iter_end_check()" );
46
47 /* >>chng 05 nov 22 - NPA. Stop calculation when fraction of oxygen frozen
48 * out on grains gets too high -
49 * NB this test is not used since StopCalc.StopDepleteFrac is set to > 1 */
50 oxy_in_grains = 0.0f;
52 for(i=0;i<mole_global.num_calc;++i)
53 {
54 /* define the abundance of oxygen frozen out on grain surfaces */
55 if( mole_global.list[i]->nAtom.find(elOxygen) != mole_global.list[i]->nAtom.end() && mole_global.list[i]->parentLabel.empty() )
56 oxy_in_grains += (1 - mole_global.list[i]->lgGas_Phase)*mole.species[i].den*mole_global.list[i]->nAtom[elOxygen];
57 }
58 /*fprintf(ioQQQ, "DEBUG oxy in grains %.2e %e %e\n",
59 oxy_in_grains ,
60 oxy_in_grains/MAX2(SMALLFLOAT,dense.gas_phase[ipOXYGEN]) , StopCalc.StopDepleteFrac );*/
61
62 if( trace.lgTrace )
63 {
64 fprintf( ioQQQ, " iter_end_check called, zone %li.\n" , nzone);
65 }
66 ASSERT( hcmap.MapZone >= 00 || !conv.lgSearch );
67
68 /* >>chng 97 jun 09, now called before first zone with nzone 0 */
69 if( nzone == 0 )
70 {
71 lgEndFun_v = false;
72
73 if( trace.lgTrace )
74 {
75 fprintf( ioQQQ, " iter_end_check returns, doing nothing since zone 0.\n" );
76 }
77 return( lgEndFun_v );
78 }
79
80 /* check whether trace is needed for this zone and iteration */
82 {
83 if( trace.nTrConvg==0 )
84 {
85 geometry.nprint = 1;
86 trace.lgTrace = true;
87 }
88 else
89 /* trace convergence entered = but with negative flag = make positive,
90 * abs and not mult by -1 since may trigger more than one time */
92 }
93
94 /* option to turn printout on after certain zone; only the master rank talks */
95 if( prt.lgPrtStart && prt.nstart == nzone )
96 {
98 }
99
100 /* check whether model is done, various criteria used. */
101 lgDone = false;
102
103 /* this is flag to check whether stopping reason was bad */
104 conv.lgBadStop = false;
105
106 /* set temperature floor option -
107 * go to constant temperature calculation if temperature
108 * falls below floor */
109 if( phycon.te < StopCalc.TeFloor )
110 {
116 }
117
118 /* check on radiation pressure - constant pressure unstable if dominated
119 * by radiation pressure */
120 if( (pressure.lgPres_radiation_ON && pressure.pbeta > 1.0) &&
121 (strcmp(dense.chDenseLaw ,"CPRE") == 0) &&
122 /* >>chng 03 aug 20, check on extreme values of pbeta, and abort if true */
123 (iterations.lgLastIt||(pressure.pbeta>1000.)) &&
124 /* >>chng 03 aug 19, add check on pbeta, and abort even if "no abort"
125 * was specified, since rad pres dominated limit can lead to VERY
126 * small H densities and crash due to underflow */
128 {
129 /* const total pres model; if RadPres>PGAS, then unstable, stop */
130 if( called.lgTalk )
131 {
132 fprintf( ioQQQ, "\n STOP since P(rad)/P(gas)=%7.3f >1.0\n",
133 pressure.pbeta );
134
135 fprintf( ioQQQ, " Line contributors to radiation pressure follows:\n" );
137 }
138 lgDone = true;
139 conv.lgBadStop = true;
140 strncpy( StopCalc.chReasonStop, "of radiation pressure.", sizeof(StopCalc.chReasonStop) );
141 }
142
143 /* radius and resulting volume too large for this cpu */
145 {
146 /* too big */
147 lgDone = true;
148 strncpy( StopCalc.chReasonStop, "volume too large for this cpu.", sizeof(StopCalc.chReasonStop) );
149 }
150 /* supersonic outflowing wind, initial velocity, windv0, was > 0,
151 * but it has coasted to a stop - lgVelPos is false */
152 else if( !wind.lgVelPos && wind.lgBallistic() )
153 {
154 /* wind solution with negative velocity */
155 lgDone = true;
156 strncpy( StopCalc.chReasonStop, "wind veloc too small.", sizeof(StopCalc.chReasonStop) );
157 }
158
159 else if( !wind.lgStatic() && fabs(wind.windv) < StopCalc.StopVelocity )
160 {
161 /* stop if absolute value of velocity falls below value */
162 lgDone = true;
163 strncpy( StopCalc.chReasonStop, "wind V too small.", sizeof(StopCalc.chReasonStop) );
164 }
165
167 {
168 /* stop if exceed number of calls to conv base set with
169 * stop nTotalIonizStop command */
170 lgDone = true;
171 strncpy( StopCalc.chReasonStop, "nTotalIonizStop reached.", sizeof(StopCalc.chReasonStop) );
172 }
173
174 /* this flag says that 21cm line optical depth is the stop quantity */
175 else if( StopCalc.lgStop21cm && (HFLines[0].Emis().TauCon() >= StopCalc.tauend) )
176 {
177 lgDone = true;
178 strncpy( StopCalc.chReasonStop, "21 cm optical depth.", sizeof(StopCalc.chReasonStop) );
179 }
180
182 {
183 /* stop at specified AV for (1-g) in scattering opacity */
184 lgDone = true;
185 strncpy( StopCalc.chReasonStop, "A_V reached.", sizeof(StopCalc.chReasonStop) );
186 }
187
189 {
190 /* stop at specified AV without (1-g) in scattering opacity */
191 lgDone = true;
192 strncpy( StopCalc.chReasonStop, "A_V reached.", sizeof(StopCalc.chReasonStop) );
193 }
194
195 else if( StopCalc.xMass!=0. &&
196 log10(SDIV(dense.xMassTotal))+1.0992099+ 2.*log10(radius.rinner) >= StopCalc.xMass )
197 {
198 /* stop at specified AV without (1-g) in scattering opacity */
199 lgDone = true;
200 strncpy( StopCalc.chReasonStop, "mass reached.", sizeof(StopCalc.chReasonStop) );
201 }
202
203 /* >>chg 02 may 31, added pressure.lgSonicPoint logic */
204 /* WJH 19 May 2004: for some models, we want to get through the
205 * sonic point and out the other side */
207 {
208 /* D-critical solution reached sonic point */
209 lgDone = true;
210 strncpy( StopCalc.chReasonStop, "sonic point reached.", sizeof(StopCalc.chReasonStop) );
211 }
212
213 else if( dense.EdenTrue==0 )
214 {
215 /* calculation failed */
216 conv.lgBadStop = true;
217 lgDone = true;
218 strncpy( StopCalc.chReasonStop, "zero electron density.", sizeof(StopCalc.chReasonStop) );
219 }
220
221 else if( radius.lgdR2Small )
222 {
223 lgDone = true;
224 conv.lgBadStop = true;
225 strncpy( StopCalc.chReasonStop, "DR small rel to thick.", sizeof(StopCalc.chReasonStop) );
226 }
227
229 {
230 lgDone = true;
231 strncpy( StopCalc.chReasonStop, "lowest EDEN reached.", sizeof(StopCalc.chReasonStop) );
232 }
233
235 {
236 lgDone = true;
237 strncpy( StopCalc.chReasonStop, "low electron fraction.", sizeof(StopCalc.chReasonStop) );
238 }
239
240 /* >>chng 05 nov 22, NA add this stop condition - stop when too many molecules
241 * are ices or solids on grains - the limit StopCalc.StopDepleteFrac is changed
242 * with the stop molecular depletion command */
243 else if( dense.lgElmtOn[ipOXYGEN] &&
245 {
246 lgDone = true;
247 strncpy( StopCalc.chReasonStop, "freeze out fraction.", sizeof(StopCalc.chReasonStop) );
248 }
249
250 /*else if( 2.*findspecieslocal("H2")->den/dense.gas_phase[ipHYDROGEN] < StopCalc.StopH2MoleFrac )*/
252 {
253 lgDone = true;
254 strncpy( StopCalc.chReasonStop, "large H_2/H fraction.", sizeof(StopCalc.chReasonStop) );
255 }
256
259 {
260 lgDone = true;
261 strncpy( StopCalc.chReasonStop, "low H_+/H fraction.", sizeof(StopCalc.chReasonStop) );
262 }
263
264 else if( radius.lgDrMinUsed )
265 {
266 /* dr became too small */
267 conv.lgBadStop = true;
268 lgDone = true;
269 strncpy( StopCalc.chReasonStop, "DRAD small- set DRMIN.", sizeof(StopCalc.chReasonStop) );
270 }
271
273 {
274 lgDone = true;
275 strncpy( StopCalc.chReasonStop, "outer radius reached.", sizeof(StopCalc.chReasonStop) );
276 }
277
278 else if( StopCalc.iptnu >= 0 &&
280 {
281 lgDone = true;
282 strncpy( StopCalc.chReasonStop, "optical depth reached.", sizeof(StopCalc.chReasonStop) );
283 }
284
285 else if( StopCalc.lgStopSpeciesColumn &&
287 {
288 /* StopCalc.col_species default set to COLUMN_INIT == 1e30 */
289 lgDone = true;
290 sprintf( StopCalc.chReasonStop, "%s column dens reached.", StopCalc.chSpeciesColumn );
291 //strncpy( StopCalc.chReasonStop, "H column dens reached.", sizeof(StopCalc.chReasonStop) );
292 }
293
295 {
296 /* StopCalc.HColStop default set to COLUMN_INIT == 1e30 */
297 lgDone = true;
298 strncpy( StopCalc.chReasonStop, "H column dens reached.", sizeof(StopCalc.chReasonStop) );
299 }
300
301 else if( colden.colden[ipCOL_Hp] >= StopCalc.colpls/EPS )
302 {
303 lgDone = true;
304 strncpy( StopCalc.chReasonStop, "H+ column dens reached.", sizeof(StopCalc.chReasonStop) );
305 }
306
308 {
309 /* >>chng 03 apr 15, add molecular hydrogen */
310 lgDone = true;
311 strncpy( StopCalc.chReasonStop, "H2 column dens reached.", sizeof(StopCalc.chReasonStop) );
312 }
313
315 {
316 /* >>chng 04 feb 10, stopping command for H2 + H I */
317 lgDone = true;
318 strncpy( StopCalc.chReasonStop, "H2+H0 column dens reached.", sizeof(StopCalc.chReasonStop) );
319 }
320
322 {
323 /* >>chng 05 jan 09, stopping command for N(H0) / Tspin */
324 lgDone = true;
325 strncpy( StopCalc.chReasonStop, "N(H0)/Tspin column dens reached.", sizeof(StopCalc.chReasonStop) );
326 }
327
328 else if( findspecieslocal("CO")->column >= StopCalc.col_monoxco/EPS )
329 {
330 /* >>chng 03 oct 27--Nick Abel, add carbon monoxide */
331 lgDone = true;
332 strncpy( StopCalc.chReasonStop, "CO column dens reached.", sizeof(StopCalc.chReasonStop) );
333 }
334
335 else if( colden.colden[ipCOL_H0] >= StopCalc.colnut/EPS )
336 {
337 lgDone = true;
338 strncpy( StopCalc.chReasonStop, "H0 column dens reached.", sizeof(StopCalc.chReasonStop) );
339 }
340
341 else if( phycon.te > StopCalc.TempHiStopZone )
342 {
343 lgDone = true;
344 strncpy( StopCalc.chReasonStop, "highest Te reached.", sizeof(StopCalc.chReasonStop) );
345 }
346
347 else if( phycon.te < StopCalc.TempLoStopZone )
348 {
349 lgDone = true;
350 strncpy( StopCalc.chReasonStop, "lowest Te reached.", sizeof(StopCalc.chReasonStop) );
351 }
352
353 else if( nzone >= geometry.nend[iteration-1] )
354 {
355 lgDone = true;
356 geometry.lgZoneTrp = true;
357 strncpy( StopCalc.chReasonStop, "NZONE reached.", sizeof(StopCalc.chReasonStop) );
358 }
359
360 /* option to stop calculation when line intensity ratio reaches certain value,
361 * nstpl is number of stop line commands entered */
362 else if( StopCalc.nstpl > 0 || StopCalc.ContIndex.size() > 0 )
363 {
364 /* line ratio exceeded maximum permitted value
365 * do not consider case where norm line has zero intensity */
366 for( i=0; i < StopCalc.nstpl; i++ )
367 {
368 /* the second line is always set to something, default is H beta */
370 {
371 char chString[10];
374 StopCalc.stpint[i] )
375 {
376 lgDone = true;
377 sprt_wl( chString , StopCalc.StopLineWl1[i] );
378 sprintf( StopCalc.chReasonStop, "line %s %s reached",
379 StopCalc.chStopLabel1[i] , chString );
380 }
381 }
382 }
383 /* continuum flux exceeded maximum permitted value */
384 for( size_t k=0; k < StopCalc.ContIndex.size(); ++k )
385 {
386 // there are 4 entries for each wavelength: nFnu, nInu, InwT, InwC
387 long ind = t_PredCont::Inst().offset() + 4*StopCalc.ContIndex[k];
388 double nFnu_model = LineSv[ind].SumLine[0]*pow(10.,radius.Conv2PrtInten);
389 if( nFnu_model >= StopCalc.ContNFnu[k].get("erg/s/cm2") )
390 {
391 char chTemp[10];
392 lgDone = true;
393 sprt_wl( chTemp, LineSv[ind].wavelength );
394 sprintf( StopCalc.chReasonStop, "flux %s %s reached",
395 LineSv[ind].chALab, chTemp );
396 }
397 }
398 }
399
400 else if( radius.drNext <= 0. )
401 {
402 /* this cant happen */
403 if( called.lgTalk )
404 {
405 fprintf( ioQQQ, " drNext=%10.2e STOP\n", radius.drNext );
406 }
407 lgDone = true;
408 conv.lgBadStop = true;
409 strncpy( StopCalc.chReasonStop, "internal error - DRAD.", sizeof(StopCalc.chReasonStop) );
410 ShowMe();
412 }
413
414 else if( lgAbort )
415 {
416 /* calculation failed */
417 conv.lgBadStop = true;
418 lgDone = true;
419 strncpy( StopCalc.chReasonStop, "calculation aborted.", sizeof(StopCalc.chReasonStop) );
420 }
421
422 lgPrinted = false;
423 if( lgDone )
424 {
425 /* flag to call it quits */
426 lgEndFun_v = true;
427 PrtZone();
428 lgPrinted = true;
429 }
430
431 else
432 {
433 /* passed all the tests, keep going */
434 /* check whether this zone should be printed */
436 nzone == 1) || trace.nTrConvg )
437 {
438 PrtZone();
439 lgPrinted = true;
440 }
441 /* flag to keep going */
442 lgEndFun_v = false;
443 }
444
445 /* dump cooling arrays for this zone? */
446 if( prt.nzdump == nzone || prt.nzdump == 0 )
447 dmpary();
448
449 /* do map of cooling function if desired, and not yet done */
450 /* >>chng 02 may 29, MapZone < = to <= 0 - map 0 did not work */
451 /* >>chng 04 jun 16, change to MapZone = 0 for map of first zone then quit,
452 * -1 is not set, positive, do map of that zone */
453 if( !hcmap.lgMapDone && (hcmap.MapZone == 0 || nzone == hcmap.MapZone) )
454 {
455 /* print last zone if not already done */
456 if( !lgPrinted )
457 {
458 PrtZone();
459 }
460
461 /* say that we are doing a map */
462 hcmap.lgMapBeingDone = true;
463
464 /* save old output file then redirect to map file */
465 /* >>chng 01 mar 28, ioMAP may not be initialized, PvH */
466 if( ioMAP != NULL )
467 map_do(ioMAP, " map");
468 else
469 map_do(ioQQQ, " map");
470
471 /* stop after doing map */
472 lgEndFun_v = true;
473 strncpy( StopCalc.chReasonStop, "MAP command used-stop.", sizeof(StopCalc.chReasonStop) );
474
475 /* >>chng 03 jun 06, reset iterations since we want to stop even if
476 * iterate xx is specified, bug caught by Joop Schaye */
477 iterations.itermx = 0;
478
479 /* make really sure that the string contained in StopCalc.chReasonStop is properly terminated */
480 StopCalc.chReasonStop[sizeof(StopCalc.chReasonStop)-1] = '\0';
481
482 if( trace.lgTrace )
483 {
484 fprintf( ioQQQ, " iter_end_check returns after map.\n" );
485 }
486 return( lgEndFun_v );
487 }
488
489 if( lgEndFun_v && prt.lgOnlyZone )
490 {
492 }
493
494 /* the string contained in StopCalc.chReasonStop must be properly
495 * terminated -this can't fail - strlen returns the number of characters
496 * in str, excluding the terminal NULL.*/
497 if( strlen( StopCalc.chReasonStop ) >= nCHREASONSTOP-1 )
499
500 if( trace.lgTrace )
501 {
502 fprintf( ioQQQ, " iter_end_check bottom return.\n" );
503 }
504 return( lgEndFun_v );
505}
506
507#ifdef EPS
508# undef EPS
509#endif
510#define EPS 0.005
511/*dmpary print all coolants for some zone, as from print cooling command */
512STATIC void dmpary(void)
513{
514 long int i;
515 realnum ratio;
516
517 DEBUG_ENTRY( "dmpary()" );
518
519 fprintf( ioQQQ,
520 " This is a print out of the cooling array for zone number %3ld\n",
521 nzone );
522
523 fprintf( ioQQQ,
524 " The total heating was HTOT=%10.2e erg/s/cm3, the total cooling was CTOT=%10.2e, and the temperature was%10.3eK.\n",
526
527 fprintf( ioQQQ,
528 " All coolants greater than%6.2f%% of the total will be printed.\n",
529 EPS*100. );
530
531 /* flag all significant coolants */
532 coolpr(ioQQQ,"ZERO",1,0.,"ZERO");
533 for( i=0; i < thermal.ncltot; i++ )
534 {
535 ratio = (realnum)(thermal.cooling[i]/thermal.ctot);
536 if( fabs(ratio) > EPS )
537 {
539 ratio,"DOIT");
540 }
541
542 ratio = (realnum)(thermal.heatnt[i]/thermal.ctot);
543 if( fabs(ratio) > EPS )
544 {
546 ratio,"DOIT");
547 }
548 }
549 coolpr(ioQQQ,"DONE",1,0.,"DONE");
550 return;
551}
t_called called
Definition: called.cpp:5
long int nzone
Definition: cddefines.cpp:14
FILE * ioQQQ
Definition: cddefines.cpp:7
bool lgAbort
Definition: cddefines.cpp:10
long int iteration
Definition: cddefines.cpp:16
#define ASSERT(exp)
Definition: cddefines.h:578
#define STATIC
Definition: cddefines.h:97
const int ipOXYGEN
Definition: cddefines.h:312
FILE * ioMAP
Definition: cdinit.cpp:9
#define EXIT_FAILURE
Definition: cddefines.h:140
#define cdEXIT(FAIL)
Definition: cddefines.h:434
float realnum
Definition: cddefines.h:103
#define MAX2
Definition: cddefines.h:782
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
sys_float SDIV(sys_float x)
Definition: cddefines.h:952
const int ipHYDROGEN
Definition: cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
void ShowMe(void)
Definition: service.cpp:181
LinSv * LineSv
Definition: cdinit.cpp:70
static t_PredCont & Inst()
Definition: cddefines.h:175
EmissionList & Emis()
Definition: transition.h:329
realnum column
Definition: mole.h:359
long offset() const
Definition: predcont.h:36
bool lgMPI_talk() const
Definition: cpu.h:328
t_cpu_i & i()
Definition: cpu.h:347
MoleculeList list
Definition: mole.h:317
int num_calc
Definition: mole.h:314
valarray< class molezone > species
Definition: mole.h:398
t_colden colden
Definition: colden.cpp:5
#define ipCOL_HTOT
Definition: colden.h:12
#define ipCOL_H2s
Definition: colden.h:18
#define ipCOL_H2g
Definition: colden.h:16
#define ipCOL_Hp
Definition: colden.h:26
#define ipCOL_H0
Definition: colden.h:22
t_conv conv
Definition: conv.cpp:5
void coolpr(FILE *io, const char *chLabel, realnum lambda, double ratio, const char *chJOB)
Definition: cool_pr.cpp:9
static t_cpu cpu
Definition: cpu.h:355
UNUSED const realnum BIGFLOAT
Definition: cpu.h:189
const realnum SMALLFLOAT
Definition: cpu.h:191
t_dense dense
Definition: dense.cpp:24
t_geometry geometry
Definition: geometry.cpp:5
t_hcmap hcmap
Definition: hcmap.cpp:21
void map_do(FILE *io, const char *chType)
Definition: hcmap.cpp:23
t_hmi hmi
Definition: hmi.cpp:5
STATIC void dmpary(void)
int iter_end_check(void)
#define EPS
t_iterations iterations
Definition: iterations.cpp:5
t_mole_global mole_global
Definition: mole.cpp:6
t_mole_local mole
Definition: mole.cpp:7
molezone * findspecieslocal(const char buf[])
ChemAtomList unresolved_atom_list
static realnum * wavelength
t_opac opac
Definition: opacity.cpp:5
t_phycon phycon
Definition: phycon.cpp:6
t_pressure pressure
Definition: pressure.cpp:5
void sprt_wl(char *chString, realnum wl)
Definition: prt.cpp:25
t_prt prt
Definition: prt.cpp:10
void PrtZone(void)
Definition: prt_zone.cpp:36
void PrtLinePres(FILE *ioPRESSURE)
t_radius radius
Definition: radius.cpp:5
t_rfield rfield
Definition: rfield.cpp:8
t_StopCalc StopCalc
Definition: stopcalc.cpp:5
const int nCHREASONSTOP
Definition: stopcalc.h:16
realnum windv
Definition: wind.h:18
bool lgVelPos
Definition: wind.h:71
bool lgStatic(void) const
Definition: wind.h:24
bool lgBallistic(void) const
Definition: wind.h:31
realnum StopLineWl1[MXSTPL]
Definition: stopcalc.h:111
bool lgStopSpeciesColumn
Definition: stopcalc.h:132
char chReasonStop[nCHREASONSTOP]
Definition: stopcalc.h:130
int nEmergent[MXSTPL]
Definition: stopcalc.h:117
long int ipStopLin2[MXSTPL]
Definition: stopcalc.h:107
realnum StopVelocity
Definition: stopcalc.h:65
realnum StopHPlusFrac
Definition: stopcalc.h:56
vector< Flux > ContNFnu
Definition: stopcalc.h:124
realnum TempHiStopZone
Definition: stopcalc.h:36
realnum AV_point
Definition: stopcalc.h:89
realnum HColStop
Definition: stopcalc.h:69
realnum StopElecFrac
Definition: stopcalc.h:48
realnum col_H0_ov_Tspin
Definition: stopcalc.h:83
char chStopLabel1[MXSTPL][5]
Definition: stopcalc.h:115
realnum col_monoxco
Definition: stopcalc.h:86
realnum TempLoStopZone
Definition: stopcalc.h:42
realnum StopH2MoleFrac
Definition: stopcalc.h:52
realnum colnut
Definition: stopcalc.h:71
realnum tauend
Definition: stopcalc.h:23
realnum StopDepleteFrac
Definition: stopcalc.h:61
double TeFloor
Definition: stopcalc.h:33
long int ipStopLin1[MXSTPL]
Definition: stopcalc.h:106
bool lgStop21cm
Definition: stopcalc.h:120
char chSpeciesColumn[CHARS_SPECIES]
Definition: stopcalc.h:133
realnum colpls
Definition: stopcalc.h:70
realnum AV_extended
Definition: stopcalc.h:89
vector< long > ContIndex
Definition: stopcalc.h:123
long int iptnu
Definition: stopcalc.h:29
long int nstpl
Definition: stopcalc.h:109
realnum stpint[MXSTPL]
Definition: stopcalc.h:103
realnum col_h2
Definition: stopcalc.h:74
realnum xMass
Definition: stopcalc.h:77
long int nTotalIonizStop
Definition: stopcalc.h:127
realnum col_h2_nut
Definition: stopcalc.h:80
realnum col_species
Definition: stopcalc.h:134
realnum StopElecDensity
Definition: stopcalc.h:92
bool lgTalk
Definition: called.h:12
double H0_ov_Tspin
Definition: colden.h:58
realnum colden[NCOLD]
Definition: colden.h:38
long int nTotalIoniz
Definition: conv.h:166
bool lgBadStop
Definition: conv.h:253
bool lgSearch
Definition: conv.h:175
double eden
Definition: dense.h:190
bool lgElmtOn[LIMELM]
Definition: dense.h:146
char chDenseLaw[5]
Definition: dense.h:158
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
realnum xMassTotal
Definition: dense.h:107
realnum gas_phase[LIMELM]
Definition: dense.h:71
double EdenTrue
Definition: dense.h:221
long int * nend
Definition: geometry.h:80
long int nprint
Definition: geometry.h:77
bool lgZoneTrp
Definition: geometry.h:90
long int MapZone
Definition: hcmap.h:20
bool lgMapDone
Definition: hcmap.h:36
bool lgMapBeingDone
Definition: hcmap.h:33
double H2_total
Definition: hmi.h:16
long int itermx
Definition: iterations.h:26
bool lgLastIt
Definition: iterations.h:36
realnum ** TauAbsGeo
Definition: opacity.h:82
double te
Definition: phycon.h:11
bool lgPres_radiation_ON
Definition: pressure.h:130
bool lgSonicPoint
Definition: pressure.h:168
bool lgSonicPointAbortOK
Definition: pressure.h:165
realnum pbeta
Definition: pressure.h:138
bool lgRadPresAbortOK
Definition: pressure.h:161
long int nzdump
Definition: prt.h:239
bool lgOnlyZone
Definition: prt.h:181
bool lgPrtStart
Definition: prt.h:186
long int nstart
Definition: prt.h:189
double r1r0sq
Definition: radius.h:49
bool lgdR2Small
Definition: radius.h:112
double rinner
Definition: radius.h:22
bool lgDrMinUsed
Definition: radius.h:180
double drad_x_fillfac
Definition: radius.h:71
double * StopThickness
Definition: radius.h:55
double Conv2PrtInten
Definition: radius.h:147
double drNext
Definition: radius.h:61
double depth
Definition: radius.h:38
double extin_mag_V_extended
Definition: rfield.h:281
double extin_mag_V_point
Definition: rfield.h:277
double SumLine[4]
Definition: lines.h:125
char chALab[5]
Definition: lines.h:117
realnum collam[NCOLNT]
Definition: thermal.h:87
double heatnt[NCOLNT]
Definition: thermal.h:89
double ctot
Definition: thermal.h:112
double htot
Definition: thermal.h:149
char chClntLab[NCOLNT][NCOLNT_LAB_LEN+1]
Definition: thermal.h:92
bool lgTemperatureConstant
Definition: thermal.h:32
long int ncltot
Definition: thermal.h:90
double cooling[NCOLNT]
Definition: thermal.h:88
realnum ConstTemp
Definition: thermal.h:44
long int nznbug
Definition: trace.h:15
int nTrConvg
Definition: trace.h:27
bool lgTrace
Definition: trace.h:12
bool lgTrOvrd
Definition: trace.h:127
long int npsbug
Definition: trace.h:18
TransitionList HFLines("HFLines", &AnonStates)
void TempChange(double TempNew, bool lgForceUpdate)
Definition: temp_change.cpp:51
t_thermal thermal
Definition: thermal.cpp:5
t_trace trace
Definition: trace.cpp:5
Wind wind
Definition: wind.cpp:5