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-2017 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  TotalInsanity();
126  }
127 
128  /* check on radiation pressure - constant pressure unstable if dominated
129  * by radiation pressure */
130  if( (pressure.lgPres_radiation_ON && pressure.pbeta > 1.0) &&
131  (strcmp(dense.chDenseLaw ,"CPRE") == 0) &&
132  /* >>chng 03 aug 20, check on extreme values of pbeta, and abort if true */
133  (iterations.lgLastIt||(pressure.pbeta>1000.)) &&
134  /* >>chng 03 aug 19, add check on pbeta, and abort even if "no abort"
135  * was specified, since rad pres dominated limit can lead to VERY
136  * small H densities and crash due to underflow */
138  {
139  /* const total pres model; if RadPres>PGAS, then unstable, stop */
140  if( called.lgTalk )
141  {
142  fprintf( ioQQQ, "\n STOP since P(rad)/P(gas)=%7.3f >1.0\n",
143  pressure.pbeta );
144 
145  fprintf( ioQQQ, " Line contributors to radiation pressure follows:\n" );
147  }
148  lgDone = true;
149  conv.lgBadStop = true;
150  strncpy( StopCalc.chReasonStop, "of radiation pressure.", sizeof(StopCalc.chReasonStop) );
151  }
152 
153  /* radius and resulting volume too large for this cpu */
155  {
156  /* too big */
157  lgDone = true;
158  strncpy( StopCalc.chReasonStop, "volume too large for this cpu.", sizeof(StopCalc.chReasonStop) );
159  }
160  /* supersonic outflowing wind, initial velocity, windv0, was > 0,
161  * but it has coasted to a stop - lgVelPos is false */
162  else if( !wind.lgVelPos && wind.lgBallistic() )
163  {
164  /* wind solution with negative velocity */
165  lgDone = true;
166  strncpy( StopCalc.chReasonStop, "wind veloc too small.", sizeof(StopCalc.chReasonStop) );
167  }
168 
169  else if( !wind.lgStatic() && fabs(wind.windv) < StopCalc.StopVelocity )
170  {
171  /* stop if absolute value of velocity falls below value */
172  lgDone = true;
173  strncpy( StopCalc.chReasonStop, "wind V too small.", sizeof(StopCalc.chReasonStop) );
174  }
175 
177  {
178  /* stop if exceed number of calls to conv base set with
179  * stop nTotalIonizStop command */
180  lgDone = true;
181  strncpy( StopCalc.chReasonStop, "nTotalIonizStop reached.", sizeof(StopCalc.chReasonStop) );
182  }
183 
184  /* this flag says that 21cm line optical depth is the stop quantity */
185  else if( StopCalc.lgStop21cm && (HFLines[0].Emis().TauCon() >= StopCalc.tauend) )
186  {
187  lgDone = true;
188  strncpy( StopCalc.chReasonStop, "21 cm optical depth.", sizeof(StopCalc.chReasonStop) );
189  }
190 
192  {
193  /* stop at specified AV for (1-g) in scattering opacity */
194  lgDone = true;
195  strncpy( StopCalc.chReasonStop, "A_V reached.", sizeof(StopCalc.chReasonStop) );
196  }
197 
199  {
200  /* stop at specified AV without (1-g) in scattering opacity */
201  lgDone = true;
202  strncpy( StopCalc.chReasonStop, "A_V reached.", sizeof(StopCalc.chReasonStop) );
203  }
204 
205  else if( StopCalc.xMass!=0. &&
206  log10(SDIV(dense.xMassTotal))+1.0992099+ 2.*log10(radius.rinner) >= StopCalc.xMass )
207  {
208  /* stop at specified AV without (1-g) in scattering opacity */
209  lgDone = true;
210  strncpy( StopCalc.chReasonStop, "mass reached.", sizeof(StopCalc.chReasonStop) );
211  }
212 
213  /* >>chg 02 may 31, added pressure.lgSonicPoint logic */
214  /* WJH 19 May 2004: for some models, we want to get through the
215  * sonic point and out the other side */
217  {
218  /* D-critical solution reached sonic point */
219  lgDone = true;
220  strncpy( StopCalc.chReasonStop, "sonic point reached.", sizeof(StopCalc.chReasonStop) );
221  }
222 
223  else if( dense.EdenTrue==0 )
224  {
225  /* calculation failed */
226  conv.lgBadStop = true;
227  lgDone = true;
228  strncpy( StopCalc.chReasonStop, "zero electron density.", sizeof(StopCalc.chReasonStop) );
229  }
230 
231  else if( radius.lgdR2Small )
232  {
233  lgDone = true;
234  conv.lgBadStop = true;
235  strncpy( StopCalc.chReasonStop, "DR small rel to thick.", sizeof(StopCalc.chReasonStop) );
236  }
237 
238  else if( dense.eden < StopCalc.StopElecDensity )
239  {
240  lgDone = true;
241  strncpy( StopCalc.chReasonStop, "lowest EDEN reached.", sizeof(StopCalc.chReasonStop) );
242  }
243 
245  {
246  lgDone = true;
247  strncpy( StopCalc.chReasonStop, "low electron fraction.", sizeof(StopCalc.chReasonStop) );
248  }
249 
250  /* >>chng 05 nov 22, NA add this stop condition - stop when too many molecules
251  * are ices or solids on grains - the limit StopCalc.StopDepleteFrac is changed
252  * with the stop molecular depletion command */
253  else if( dense.lgElmtOn[ipOXYGEN] &&
255  {
256  lgDone = true;
257  strncpy( StopCalc.chReasonStop, "freeze out fraction.", sizeof(StopCalc.chReasonStop) );
258  }
259 
260  /*else if( 2.*findspecieslocal("H2")->den/dense.gas_phase[ipHYDROGEN] < StopCalc.StopH2MoleFrac )*/
262  {
263  lgDone = true;
264  strncpy( StopCalc.chReasonStop, "large H_2/H fraction.", sizeof(StopCalc.chReasonStop) );
265  }
266 
269  {
270  lgDone = true;
271  strncpy( StopCalc.chReasonStop, "low H_+/H fraction.", sizeof(StopCalc.chReasonStop) );
272  }
273 
274  else if( radius.lgDrMinUsed )
275  {
276  /* dr became too small */
277  conv.lgBadStop = true;
278  lgDone = true;
279  strncpy( StopCalc.chReasonStop, "DRAD small- set DRMIN.", sizeof(StopCalc.chReasonStop) );
280  }
281 
283  {
284  lgDone = true;
285  strncpy( StopCalc.chReasonStop, "outer radius reached.", sizeof(StopCalc.chReasonStop) );
286  }
287 
288  else if( StopCalc.iptnu >= 0 &&
290  {
291  lgDone = true;
292  strncpy( StopCalc.chReasonStop, "optical depth reached.", sizeof(StopCalc.chReasonStop) );
293  }
294 
295  else if( StopCalc.lgStopSpeciesColumn &&
296  SpeciesCurrent->column >= StopCalc.col_species/EPS )
297  {
298  /* StopCalc.col_species default set to COLUMN_INIT == 1e30 */
299  lgDone = true;
300  sprintf( StopCalc.chReasonStop, "%s column dens reached.", StopCalc.chSpeciesColumn.c_str() );
301  //strncpy( StopCalc.chReasonStop, "H column dens reached.", sizeof(StopCalc.chReasonStop) );
302  }
303 
305  {
306  /* StopCalc.HColStop default set to COLUMN_INIT == 1e30 */
307  lgDone = true;
308  strncpy( StopCalc.chReasonStop, "H column dens reached.", sizeof(StopCalc.chReasonStop) );
309  }
310 
311  else if( findspecieslocal("H+")->column >= StopCalc.colpls/EPS )
312  {
313  lgDone = true;
314  strncpy( StopCalc.chReasonStop, "H+ column dens reached.", sizeof(StopCalc.chReasonStop) );
315  }
316 
317  else if( (findspecieslocal("H2")->column+findspecieslocal("H2*")->column) >= StopCalc.col_h2/EPS )
318  {
319  /* >>chng 03 apr 15, add molecular hydrogen */
320  lgDone = true;
321  strncpy( StopCalc.chReasonStop, "H2 column dens reached.", sizeof(StopCalc.chReasonStop) );
322  }
323 
324  else if( (2.*(findspecieslocal("H2")->column+findspecieslocal("H2*")->column) + findspecieslocal("H")->column) >= StopCalc.col_h2_nut/EPS )
325  {
326  /* >>chng 04 feb 10, stopping command for H2 + H I */
327  lgDone = true;
328  strncpy( StopCalc.chReasonStop, "2 H2+H0 column dens reached.", sizeof(StopCalc.chReasonStop) );
329  }
330 
332  {
333  /* >>chng 05 jan 09, stopping command for N(H0) / Tspin */
334  lgDone = true;
335  strncpy( StopCalc.chReasonStop, "N(H0)/Tspin column dens reached.", sizeof(StopCalc.chReasonStop) );
336  }
337 
338  else if( findspecieslocal("CO")->column >= StopCalc.col_monoxco/EPS )
339  {
340  /* >>chng 03 oct 27--Nick Abel, add carbon monoxide */
341  lgDone = true;
342  strncpy( StopCalc.chReasonStop, "CO column dens reached.", sizeof(StopCalc.chReasonStop) );
343  }
344 
345  else if( findspecieslocal("H")->column >= StopCalc.colnut/EPS )
346  {
347  lgDone = true;
348  strncpy( StopCalc.chReasonStop, "H0 column dens reached.", sizeof(StopCalc.chReasonStop) );
349  }
350 
351  else if( phycon.te > StopCalc.TempHiStopZone )
352  {
353  lgDone = true;
354  strncpy( StopCalc.chReasonStop, "highest Te reached.", sizeof(StopCalc.chReasonStop) );
355  }
356 
357  else if( phycon.te < StopCalc.TempLoStopZone )
358  {
359  lgDone = true;
360  strncpy( StopCalc.chReasonStop, "lowest Te reached.", sizeof(StopCalc.chReasonStop) );
361  }
362 
363  else if( nzone >= iterations.nend[iteration-1] )
364  {
365  lgDone = true;
366  geometry.lgZoneTrp = true;
367  strncpy( StopCalc.chReasonStop, "NZONE reached.", sizeof(StopCalc.chReasonStop) );
368  }
369 
370  /* option to stop calculation when line intensity ratio reaches certain value,
371  * nstpl is number of stop line commands entered */
372  else if( StopCalc.nstpl > 0 || StopCalc.ContIndex.size() > 0 )
373  {
374  /* line ratio exceeded maximum permitted value
375  * do not consider case where norm line has zero intensity */
376  for( i=0; i < StopCalc.nstpl; i++ )
377  {
378  /* the second line is always set to something, default is H beta */
379  if( LineSave.lines[StopCalc.ipStopLin2[i]].SumLine(StopCalc.nEmergent[i]) > 0. )
380  {
381  if( LineSave.lines[StopCalc.ipStopLin1[i]].SumLine(StopCalc.nEmergent[i])/
383  StopCalc.stpint[i] )
384  {
385  lgDone = true;
386  sprintf( StopCalc.chReasonStop, "line %s reached",
387  LineSave.lines[StopCalc.ipStopLin1[i]].label().c_str() );
388  }
389  }
390  }
391  /* continuum flux exceeded maximum permitted value */
392  for( size_t k=0; k < StopCalc.ContIndex.size(); ++k )
393  {
394  // there are 4 entries for each wavelength: nFnu, nInu, InwT, InwC
395  long ind = t_PredCont::Inst().offset() + 4*StopCalc.ContIndex[k];
396  double nFnu_model = LineSave.lines[ind].SumLine(0) * radius.Conv2PrtInten;
397  if( nFnu_model >= StopCalc.ContNFnu[k].get("erg/s/cm2") )
398  {
399  lgDone = true;
400  sprintf( StopCalc.chReasonStop, "flux %s reached",
401  LineSave.lines[ind].label().c_str() );
402  }
403  }
404  }
405 
406  else if( radius.drNext <= 0. )
407  {
408  /* this cant happen */
409  if( called.lgTalk )
410  {
411  fprintf( ioQQQ, " drNext=%10.2e STOP\n", radius.drNext );
412  }
413  conv.lgBadStop = true;
414  strncpy( StopCalc.chReasonStop, "internal error - DRAD.", sizeof(StopCalc.chReasonStop) );
415  ShowMe();
417  }
418 
419  else if( lgAbort )
420  {
421  /* calculation failed */
422  conv.lgBadStop = true;
423  lgDone = true;
424  strncpy( StopCalc.chReasonStop, "calculation aborted.", sizeof(StopCalc.chReasonStop) );
425  }
426 
427  lgPrinted = false;
428  if( lgDone )
429  {
430  /* flag to call it quits */
431  lgEndFun_v = true;
432  PrtZone();
433  lgPrinted = true;
434  }
435 
436  else
437  {
438  /* passed all the tests, keep going */
439  /* check whether this zone should be printed */
440  if( (nzone % geometry.nprint == 0 ||
441  nzone == 1) || trace.nTrConvg )
442  {
443  PrtZone();
444  lgPrinted = true;
445  }
446  /* flag to keep going */
447  lgEndFun_v = false;
448  }
449 
450  /* dump cooling arrays for this zone? */
451  if( prt.nzdump == nzone || prt.nzdump == 0 )
452  dmpary();
453 
454  /* do map of cooling function if desired, and not yet done */
455  /* >>chng 02 may 29, MapZone < = to <= 0 - map 0 did not work */
456  /* >>chng 04 jun 16, change to MapZone = 0 for map of first zone then quit,
457  * -1 is not set, positive, do map of that zone */
458  if( !hcmap.lgMapDone && (hcmap.MapZone == 0 || nzone == hcmap.MapZone) )
459  {
460  /* print last zone if not already done */
461  if( !lgPrinted )
462  {
463  PrtZone();
464  }
465 
466  /* say that we are doing a map */
467  hcmap.lgMapBeingDone = true;
468 
469  /* save old output file then redirect to map file */
470  /* >>chng 01 mar 28, ioMAP may not be initialized, PvH */
471  if( ioMAP != NULL )
472  map_do(ioMAP, " map");
473  else
474  map_do(ioQQQ, " map");
475 
476  /* stop after doing map */
477  lgEndFun_v = true;
478  strncpy( StopCalc.chReasonStop, "MAP command used-stop.", sizeof(StopCalc.chReasonStop) );
479 
480  /* >>chng 03 jun 06, reset iterations since we want to stop even if
481  * iterate xx is specified, bug caught by Joop Schaye */
482  iterations.itermx = 0;
483 
484  /* make really sure that the string contained in StopCalc.chReasonStop is properly terminated */
485  StopCalc.chReasonStop[sizeof(StopCalc.chReasonStop)-1] = '\0';
486 
487  if( trace.lgTrace )
488  {
489  fprintf( ioQQQ, " iter_end_check returns after map.\n" );
490  }
491  return( lgEndFun_v );
492  }
493 
494  if( lgEndFun_v && prt.lgOnlyZone )
495  {
497  }
498 
499  /* the string contained in StopCalc.chReasonStop must be properly
500  * terminated -this can't fail - strlen returns the number of characters
501  * in str, excluding the terminal NULL.*/
502  if( strlen( StopCalc.chReasonStop ) >= nCHREASONSTOP-1 )
503  TotalInsanity();
504 
505  if( trace.lgTrace )
506  {
507  fprintf( ioQQQ, " iter_end_check bottom return.\n" );
508  }
509  return( lgEndFun_v );
510 }
511 
512 #ifdef EPS
513 # undef EPS
514 #endif
515 #define EPS 0.005
516 /*dmpary print all coolants for some zone, as from print cooling command */
517 STATIC void dmpary(void)
518 {
519  long int i;
520  realnum ratio;
521 
522  DEBUG_ENTRY( "dmpary()" );
523 
524  fprintf( ioQQQ,
525  " This is a print out of the cooling array for zone number %3ld\n",
526  nzone );
527 
528  fprintf( ioQQQ,
529  " The total heating was HTOT=%10.2e erg/s/cm3, the total cooling was CTOT=%10.2e, and the temperature was%10.3eK.\n",
531 
532  fprintf( ioQQQ,
533  " All coolants greater than%6.2f%% of the total will be printed.\n",
534  EPS*100. );
535 
536  /* flag all significant coolants */
537  coolpr(ioQQQ,"ZERO",1,0.,"ZERO");
538  for( i=0; i < thermal.ncltot; i++ )
539  {
540  ratio = (realnum)(thermal.cooling[i]/thermal.ctot);
541  if( fabs(ratio) > EPS )
542  {
544  ratio,"DOIT");
545  }
546 
547  ratio = (realnum)(thermal.heatnt[i]/thermal.ctot);
548  if( fabs(ratio) > EPS )
549  {
551  ratio,"DOIT");
552  }
553  }
554  coolpr(ioQQQ,"DONE",1,0.,"DONE");
555  return;
556 }
557 #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:1067
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:415
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:355
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:9
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:31
vector< LinSv > lines
Definition: lines.h:132
bool lgDrMinUsed
Definition: radius.h:185
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:248
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:117
string chSpeciesColumn
Definition: stopcalc.h:133
#define cdEXIT(FAIL)
Definition: cddefines.h:484
bool lgMPI_talk() const
Definition: cpu.h:394
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:260
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:152
#define ASSERT(exp)
Definition: cddefines.h:617
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:264
double drad_x_fillfac
Definition: radius.h:76
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:729
#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:90
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:828
double TeFloor
Definition: stopcalc.h:33
int fprintf(const Output &stream, const char *format,...)
Definition: service.cpp:1217
MoleculeList list
Definition: mole.h:365
sys_float SDIV(sys_float x)
Definition: cddefines.h:1006
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:423
void ShowMe(void)
Definition: service.cpp:205
double te
Definition: phycon.h:21
const int ipHYDROGEN
Definition: cddefines.h:348
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:66
double ctot
Definition: thermal.h:130