cloudy  trunk
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 */
35 STATIC void dmpary(void);
36 
37 int iter_end_check(void)
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 */
81  if( (nzone >= trace.nznbug && iteration >= trace.npsbug) && trace.lgTrOvrd )
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 */
91  trace.nTrConvg = abs( trace.nTrConvg );
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  {
114  TempChange(thermal.ConstTemp , false);
115  TotalInsanity();
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 
228  else if( dense.eden < StopCalc.StopElecDensity )
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 
272  else if( radius.depth >= radius.StopThickness[iteration-1]/EPS )
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 */
435  if( ((nzone/geometry.nprint)*geometry.nprint == nzone ||
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 )
498  TotalInsanity();
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 */
512 STATIC 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 }
Wind::lgVelPos
bool lgVelPos
Definition: wind.h:71
colden.h
thermal.h
t_radius::lgdR2Small
bool lgdR2Small
Definition: radius.h:112
t_conv::lgBadStop
bool lgBadStop
Definition: conv.h:253
t_StopCalc::col_H0_ov_Tspin
realnum col_H0_ov_Tspin
Definition: stopcalc.h:83
ipCOL_H2s
#define ipCOL_H2s
Definition: colden.h:18
findspecieslocal
molezone * findspecieslocal(const char buf[])
Definition: mole_species.cpp:833
t_StopCalc::col_h2_nut
realnum col_h2_nut
Definition: stopcalc.h:80
t_prt::nzdump
long int nzdump
Definition: prt.h:239
t_prt::lgOnlyZone
bool lgOnlyZone
Definition: prt.h:181
lgAbort
bool lgAbort
Definition: cddefines.cpp:10
ipOXYGEN
const int ipOXYGEN
Definition: cddefines.h:312
StopCalc
t_StopCalc StopCalc
Definition: stopcalc.cpp:5
t_StopCalc::HColStop
realnum HColStop
Definition: stopcalc.h:69
sprt_wl
void sprt_wl(char *chString, realnum wl)
Definition: prt.cpp:25
lines.h
t_StopCalc::chStopLabel1
char chStopLabel1[MXSTPL][5]
Definition: stopcalc.h:115
t_StopCalc::colpls
realnum colpls
Definition: stopcalc.h:70
t_dense::eden
double eden
Definition: dense.h:190
count_ptr
Definition: count_ptr.h:11
t_dense::chDenseLaw
char chDenseLaw[5]
Definition: dense.h:158
dense
t_dense dense
Definition: dense.cpp:24
t_thermal::chClntLab
char chClntLab[NCOLNT][NCOLNT_LAB_LEN+1]
Definition: thermal.h:92
t_StopCalc::StopVelocity
realnum StopVelocity
Definition: stopcalc.h:65
Singleton< t_PredCont >::Inst
static t_PredCont & Inst()
Definition: cddefines.h:175
t_StopCalc::nEmergent
int nEmergent[MXSTPL]
Definition: stopcalc.h:117
rfield
t_rfield rfield
Definition: rfield.cpp:8
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
geometry.h
TempChange
void TempChange(double TempNew, bool lgForceUpdate)
Definition: temp_change.cpp:51
t_hcmap::MapZone
long int MapZone
Definition: hcmap.h:20
t_radius::Conv2PrtInten
double Conv2PrtInten
Definition: radius.h:147
t_geometry::nprint
long int nprint
Definition: geometry.h:77
realnum
float realnum
Definition: cddefines.h:103
iterations
t_iterations iterations
Definition: iterations.cpp:5
conv.h
rfield.h
STATIC
#define STATIC
Definition: cddefines.h:97
unresolved_atom_list
ChemAtomList unresolved_atom_list
Definition: mole_species.cpp:70
t_pressure::lgSonicPoint
bool lgSonicPoint
Definition: pressure.h:168
mole.h
t_hcmap::lgMapBeingDone
bool lgMapBeingDone
Definition: hcmap.h:33
ioMAP
FILE * ioMAP
Definition: cdinit.cpp:9
t_StopCalc::lgStop21cm
bool lgStop21cm
Definition: stopcalc.h:120
t_dense::lgElmtOn
bool lgElmtOn[LIMELM]
Definition: dense.h:146
cpu
static t_cpu cpu
Definition: cpu.h:355
phycon
t_phycon phycon
Definition: phycon.cpp:6
trace.h
t_mole_global::list
MoleculeList list
Definition: mole.h:317
coolpr
void coolpr(FILE *io, const char *chLabel, realnum lambda, double ratio, const char *chJOB)
Definition: cool_pr.cpp:9
t_StopCalc::ipStopLin2
long int ipStopLin2[MXSTPL]
Definition: stopcalc.h:107
t_radius::drNext
double drNext
Definition: radius.h:61
SDIV
sys_float SDIV(sys_float x)
Definition: cddefines.h:952
t_StopCalc::colnut
realnum colnut
Definition: stopcalc.h:71
t_StopCalc::ContIndex
vector< long > ContIndex
Definition: stopcalc.h:123
t_dense::gas_phase
realnum gas_phase[LIMELM]
Definition: dense.h:71
t_radius::depth
double depth
Definition: radius.h:38
t_dense::EdenTrue
double EdenTrue
Definition: dense.h:221
t_thermal::cooling
double cooling[NCOLNT]
Definition: thermal.h:88
t_opac::TauAbsGeo
realnum ** TauAbsGeo
Definition: opacity.h:82
t_StopCalc::AV_point
realnum AV_point
Definition: stopcalc.h:89
t_PredCont::offset
long offset() const
Definition: predcont.h:36
dmpary
STATIC void dmpary(void)
Definition: iter_end_chk.cpp:512
ASSERT
#define ASSERT(exp)
Definition: cddefines.h:578
t_hmi::H2_total
double H2_total
Definition: hmi.h:16
t_StopCalc::iptnu
long int iptnu
Definition: stopcalc.h:29
t_rfield::extin_mag_V_point
double extin_mag_V_point
Definition: rfield.h:277
Wind::lgStatic
bool lgStatic(void) const
Definition: wind.h:24
ipHYDROGEN
const int ipHYDROGEN
Definition: cddefines.h:305
t_thermal::ctot
double ctot
Definition: thermal.h:112
t_StopCalc::chReasonStop
char chReasonStop[nCHREASONSTOP]
Definition: stopcalc.h:130
opac
t_opac opac
Definition: opacity.cpp:5
wind
Wind wind
Definition: wind.cpp:5
ipCOL_Hp
#define ipCOL_Hp
Definition: colden.h:26
t_StopCalc::lgStopSpeciesColumn
bool lgStopSpeciesColumn
Definition: stopcalc.h:132
t_thermal::lgTemperatureConstant
bool lgTemperatureConstant
Definition: thermal.h:32
predcont.h
t_thermal::heatnt
double heatnt[NCOLNT]
Definition: thermal.h:89
nzone
long int nzone
Definition: cddefines.cpp:14
EPS
#define EPS
Definition: iter_end_chk.cpp:510
radius
t_radius radius
Definition: radius.cpp:5
t_StopCalc::ContNFnu
vector< Flux > ContNFnu
Definition: stopcalc.h:124
t_StopCalc::StopDepleteFrac
realnum StopDepleteFrac
Definition: stopcalc.h:61
t_prt::nstart
long int nstart
Definition: prt.h:189
t_cpu::i
t_cpu_i & i()
Definition: cpu.h:347
t_StopCalc::col_h2
realnum col_h2
Definition: stopcalc.h:74
t_StopCalc::StopHPlusFrac
realnum StopHPlusFrac
Definition: stopcalc.h:56
t_StopCalc::AV_extended
realnum AV_extended
Definition: stopcalc.h:89
EXIT_FAILURE
#define EXIT_FAILURE
Definition: cddefines.h:140
t_trace::npsbug
long int npsbug
Definition: trace.h:18
t_thermal::ncltot
long int ncltot
Definition: thermal.h:90
t_pressure::lgRadPresAbortOK
bool lgRadPresAbortOK
Definition: pressure.h:161
dense.h
t_iterations::itermx
long int itermx
Definition: iterations.h:26
t_thermal::ConstTemp
realnum ConstTemp
Definition: thermal.h:44
mole
t_mole_local mole
Definition: mole.cpp:7
cooling.h
t_StopCalc::StopElecDensity
realnum StopElecDensity
Definition: stopcalc.h:92
t_StopCalc::StopLineWl1
realnum StopLineWl1[MXSTPL]
Definition: stopcalc.h:111
trace
t_trace trace
Definition: trace.cpp:5
t_thermal::collam
realnum collam[NCOLNT]
Definition: thermal.h:87
t_StopCalc::col_monoxco
realnum col_monoxco
Definition: stopcalc.h:86
prt
t_prt prt
Definition: prt.cpp:10
t_geometry::lgZoneTrp
bool lgZoneTrp
Definition: geometry.h:90
cddefines.h
t_hcmap::lgMapDone
bool lgMapDone
Definition: hcmap.h:36
t_radius::lgDrMinUsed
bool lgDrMinUsed
Definition: radius.h:180
thermal
t_thermal thermal
Definition: thermal.cpp:5
t_radius::rinner
double rinner
Definition: radius.h:22
t_trace::nTrConvg
int nTrConvg
Definition: trace.h:27
t_StopCalc::TempHiStopZone
realnum TempHiStopZone
Definition: stopcalc.h:36
TotalInsanity
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
t_StopCalc::ipStopLin1
long int ipStopLin1[MXSTPL]
Definition: stopcalc.h:106
t_called::lgTalk
bool lgTalk
Definition: called.h:12
t_trace::lgTrOvrd
bool lgTrOvrd
Definition: trace.h:127
t_StopCalc::chSpeciesColumn
char chSpeciesColumn[CHARS_SPECIES]
Definition: stopcalc.h:133
t_tag_LineSv::SumLine
double SumLine[4]
Definition: lines.h:125
molezone::column
realnum column
Definition: mole.h:359
radius.h
colden
t_colden colden
Definition: colden.cpp:5
hmi.h
t_colden::colden
realnum colden[NCOLD]
Definition: colden.h:38
t_pressure::pbeta
realnum pbeta
Definition: pressure.h:138
MAX2
#define MAX2
Definition: cddefines.h:782
pressure.h
t_StopCalc::stpint
realnum stpint[MXSTPL]
Definition: stopcalc.h:103
t_StopCalc::tauend
realnum tauend
Definition: stopcalc.h:23
cdEXIT
#define cdEXIT(FAIL)
Definition: cddefines.h:434
t_StopCalc::TempLoStopZone
realnum TempLoStopZone
Definition: stopcalc.h:42
BIGFLOAT
const UNUSED realnum BIGFLOAT
Definition: cpu.h:189
t_trace::nznbug
long int nznbug
Definition: trace.h:15
Wind::lgBallistic
bool lgBallistic(void) const
Definition: wind.h:31
iteration
long int iteration
Definition: cddefines.cpp:16
t_dense::xIonDense
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
map_do
void map_do(FILE *io, const char *chType)
Definition: hcmap.cpp:23
t_radius::r1r0sq
double r1r0sq
Definition: radius.h:49
t_cpu_i::lgMPI_talk
bool lgMPI_talk() const
Definition: cpu.h:328
t_pressure::lgPres_radiation_ON
bool lgPres_radiation_ON
Definition: pressure.h:130
prt.h
t_rfield::extin_mag_V_extended
double extin_mag_V_extended
Definition: rfield.h:281
t_thermal::htot
double htot
Definition: thermal.h:149
t_tag_LineSv::chALab
char chALab[5]
Definition: lines.h:117
t_StopCalc::TeFloor
double TeFloor
Definition: stopcalc.h:33
t_StopCalc::xMass
realnum xMass
Definition: stopcalc.h:77
t_iterations::lgLastIt
bool lgLastIt
Definition: iterations.h:36
wind.h
t_conv::nTotalIoniz
long int nTotalIoniz
Definition: conv.h:166
t_radius::StopThickness
double * StopThickness
Definition: radius.h:55
t_colden::H0_ov_Tspin
double H0_ov_Tspin
Definition: colden.h:58
hmi
t_hmi hmi
Definition: hmi.cpp:5
PrtZone
void PrtZone(void)
Definition: prt_zone.cpp:36
ipCOL_H2g
#define ipCOL_H2g
Definition: colden.h:16
called
t_called called
Definition: called.cpp:5
conv
t_conv conv
Definition: conv.cpp:5
PrtLinePres
void PrtLinePres(FILE *ioPRESSURE)
Definition: prt_linepres.cpp:16
t_pressure::lgSonicPointAbortOK
bool lgSonicPointAbortOK
Definition: pressure.h:165
t_StopCalc::nTotalIonizStop
long int nTotalIonizStop
Definition: stopcalc.h:127
ipCOL_HTOT
#define ipCOL_HTOT
Definition: colden.h:12
t_radius::drad_x_fillfac
double drad_x_fillfac
Definition: radius.h:71
taulines.h
t_mole_local::species
valarray< class molezone > species
Definition: mole.h:398
hcmap.h
pressure
t_pressure pressure
Definition: pressure.cpp:5
phycon.h
geometry
t_geometry geometry
Definition: geometry.cpp:5
ShowMe
void ShowMe(void)
Definition: service.cpp:181
iter_end_check
int iter_end_check(void)
Definition: iter_end_chk.cpp:37
Wind::windv
realnum windv
Definition: wind.h:18
iterations.h
t_StopCalc::col_species
realnum col_species
Definition: stopcalc.h:134
t_StopCalc::StopElecFrac
realnum StopElecFrac
Definition: stopcalc.h:48
ipCOL_H0
#define ipCOL_H0
Definition: colden.h:22
opacity.h
called.h
LineSv
LinSv * LineSv
Definition: cdinit.cpp:70
hcmap
t_hcmap hcmap
Definition: hcmap.cpp:21
t_StopCalc::nstpl
long int nstpl
Definition: stopcalc.h:109
t_conv::lgSearch
bool lgSearch
Definition: conv.h:175
t_StopCalc::StopH2MoleFrac
realnum StopH2MoleFrac
Definition: stopcalc.h:52
stopcalc.h
t_phycon::te
double te
Definition: phycon.h:11
t_prt::lgPrtStart
bool lgPrtStart
Definition: prt.h:186
mole_global
t_mole_global mole_global
Definition: mole.cpp:6
t_mole_global::num_calc
int num_calc
Definition: mole.h:314
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
nCHREASONSTOP
const int nCHREASONSTOP
Definition: stopcalc.h:16
t_trace::lgTrace
bool lgTrace
Definition: trace.h:12
HFLines
TransitionList HFLines("HFLines", &AnonStates)
t_dense::xMassTotal
realnum xMassTotal
Definition: dense.h:107
SMALLFLOAT
const realnum SMALLFLOAT
Definition: cpu.h:191
t_geometry::nend
long int * nend
Definition: geometry.h:80
wavelength
static realnum * wavelength
Definition: monitor_results.cpp:70
TransitionList::Emis
EmissionList & Emis()
Definition: transition.h:329