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