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-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  /* >>chng 99 jul 7, when no h2 molecules, include h2 as neutral atomic hydrogen,
342  * hmi.lgNoH2Mole is set false in zero, true with command no hydrogen molecules */
343  else if(
345  {
346  lgDone = true;
347  strncpy( StopCalc.chReasonStop, "H0-H0+H2 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 >= geometry.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 */
379  {
380  char chString[10];
383  StopCalc.stpint[i] )
384  {
385  lgDone = true;
386  sprt_wl( chString , StopCalc.StopLineWl1[i] );
387  sprintf( StopCalc.chReasonStop, "line %s %s reached",
388  StopCalc.chStopLabel1[i] , chString );
389  }
390  }
391  }
392  /* continuum flux exceeded maximum permitted value */
393  for( size_t k=0; k < StopCalc.ContIndex.size(); ++k )
394  {
395  // there are 4 entries for each wavelength: nFnu, nInu, InwT, InwC
396  long ind = t_PredCont::Inst().offset() + 4*StopCalc.ContIndex[k];
397  double nFnu_model = LineSv[ind].SumLine[0]*pow(10.,radius.Conv2PrtInten);
398  if( nFnu_model >= StopCalc.ContNFnu[k].get("erg/s/cm2") )
399  {
400  char chTemp[10];
401  lgDone = true;
402  sprt_wl( chTemp, LineSv[ind].wavelength );
403  sprintf( StopCalc.chReasonStop, "flux %s %s reached",
404  LineSv[ind].chALab, chTemp );
405  }
406  }
407  }
408 
409  else if( radius.drNext <= 0. )
410  {
411  /* this cant happen */
412  if( called.lgTalk )
413  {
414  fprintf( ioQQQ, " drNext=%10.2e STOP\n", radius.drNext );
415  }
416  lgDone = true;
417  conv.lgBadStop = true;
418  strncpy( StopCalc.chReasonStop, "internal error - DRAD.", sizeof(StopCalc.chReasonStop) );
419  ShowMe();
421  }
422 
423  else if( lgAbort )
424  {
425  /* calculation failed */
426  conv.lgBadStop = true;
427  lgDone = true;
428  strncpy( StopCalc.chReasonStop, "calculation aborted.", sizeof(StopCalc.chReasonStop) );
429  }
430 
431  lgPrinted = false;
432  if( lgDone )
433  {
434  /* flag to call it quits */
435  lgEndFun_v = true;
436  PrtZone();
437  lgPrinted = true;
438  }
439 
440  else
441  {
442  /* passed all the tests, keep going */
443  /* check whether this zone should be printed */
444  if( ((nzone/geometry.nprint)*geometry.nprint == nzone ||
445  nzone == 1) || trace.nTrConvg )
446  {
447  PrtZone();
448  lgPrinted = true;
449  }
450  /* flag to keep going */
451  lgEndFun_v = false;
452  }
453 
454  /* dump cooling arrays for this zone? */
455  if( prt.nzdump == nzone || prt.nzdump == 0 )
456  dmpary();
457 
458  /* do map of cooling function if desired, and not yet done */
459  /* >>chng 02 may 29, MapZone < = to <= 0 - map 0 did not work */
460  /* >>chng 04 jun 16, change to MapZone = 0 for map of first zone then quit,
461  * -1 is not set, positive, do map of that zone */
462  if( !hcmap.lgMapDone && (hcmap.MapZone == 0 || nzone == hcmap.MapZone) )
463  {
464  /* print last zone if not already done */
465  if( !lgPrinted )
466  {
467  PrtZone();
468  }
469 
470  /* say that we are doing a map */
471  hcmap.lgMapBeingDone = true;
472 
473  /* save old output file then redirect to map file */
474  /* >>chng 01 mar 28, ioMAP may not be initialized, PvH */
475  if( ioMAP != NULL )
476  map_do(ioMAP, " map");
477  else
478  map_do(ioQQQ, " map");
479 
480  /* stop after doing map */
481  lgEndFun_v = true;
482  strncpy( StopCalc.chReasonStop, "MAP command used-stop.", sizeof(StopCalc.chReasonStop) );
483 
484  /* >>chng 03 jun 06, reset iterations since we want to stop even if
485  * iterate xx is specified, bug caught by Joop Schaye */
486  iterations.itermx = 0;
487 
488  /* make really sure that the string contained in StopCalc.chReasonStop is properly terminated */
489  StopCalc.chReasonStop[sizeof(StopCalc.chReasonStop)-1] = '\0';
490 
491  if( trace.lgTrace )
492  {
493  fprintf( ioQQQ, " iter_end_check returns after map.\n" );
494  }
495  return( lgEndFun_v );
496  }
497 
498  if( lgEndFun_v && prt.lgOnlyZone )
499  {
501  }
502 
503  /* the string contained in StopCalc.chReasonStop must be properly
504  * terminated -this can't fail - strlen returns the number of characters
505  * in str, excluding the terminal NULL.*/
506  if( strlen( StopCalc.chReasonStop ) >= nCHREASONSTOP-1 )
507  TotalInsanity();
508 
509  if( trace.lgTrace )
510  {
511  fprintf( ioQQQ, " iter_end_check bottom return.\n" );
512  }
513  return( lgEndFun_v );
514 }
515 
516 #ifdef EPS
517 # undef EPS
518 #endif
519 #define EPS 0.005
520 /*dmpary print all coolants for some zone, as from print cooling command */
521 STATIC void dmpary(void)
522 {
523  long int i;
524  realnum ratio;
525 
526  DEBUG_ENTRY( "dmpary()" );
527 
528  fprintf( ioQQQ,
529  " This is a print out of the cooling array for zone number %3ld\n",
530  nzone );
531 
532  fprintf( ioQQQ,
533  " The total heating was HTOT=%10.2e erg/s/cm3, the total cooling was CTOT=%10.2e, and the temperature was%10.3eK.\n",
535 
536  fprintf( ioQQQ,
537  " All coolants greater than%6.2f%% of the total will be printed.\n",
538  EPS*100. );
539 
540  /* flag all significant coolants */
541  coolpr(ioQQQ,"ZERO",1,0.,"ZERO");
542  for( i=0; i < thermal.ncltot; i++ )
543  {
544  ratio = (realnum)(thermal.cooling[i]/thermal.ctot);
545  if( fabs(ratio) > EPS )
546  {
548  ratio,"DOIT");
549  }
550 
551  ratio = (realnum)(thermal.heatnt[i]/thermal.ctot);
552  if( fabs(ratio) > EPS )
553  {
555  ratio,"DOIT");
556  }
557  }
558  coolpr(ioQQQ,"DONE",1,0.,"DONE");
559  return;
560 }
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:6
realnum StopDepleteFrac
Definition: stopcalc.h:61
realnum colnut
Definition: stopcalc.h:69
double depth
Definition: radius.h:22
long int nstpl
Definition: stopcalc.h:109
char chClntLab[NCOLNT][NCOLNT_LAB_LEN+1]
Definition: thermal.h:92
bool lgPrtStart
Definition: prt.h:186
t_thermal thermal
Definition: thermal.cpp:5
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:9
bool lgSonicPointAbortOK
Definition: pressure.h:165
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
t_opac opac
Definition: opacity.cpp:5
long int npsbug
Definition: trace.h:18
int num_calc
Definition: mole.h:314
long int ipStopLin1[MXSTPL]
Definition: stopcalc.h:106
bool lgZoneTrp
Definition: geometry.h:90
bool lgStop21cm
Definition: stopcalc.h:120
const realnum SMALLFLOAT
Definition: cpu.h:178
t_cpu_i & i()
Definition: cpu.h:334
realnum AV_extended
Definition: stopcalc.h:89
long int MapZone
Definition: hcmap.h:20
long int * nend
Definition: geometry.h:80
realnum stpint[MXSTPL]
Definition: stopcalc.h:103
static realnum * wavelength
const int ipOXYGEN
Definition: cddefines.h:316
#define MAX2
Definition: cddefines.h:786
double ctot
Definition: thermal.h:110
int iter_end_check(void)
t_StopCalc StopCalc
Definition: stopcalc.cpp:5
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
realnum col_monoxco
Definition: stopcalc.h:86
t_dense dense
Definition: dense.cpp:24
STATIC void dmpary(void)
realnum column
Definition: mole.h:397
const int nCHREASONSTOP
Definition: stopcalc.h:16
FILE * ioQQQ
Definition: cddefines.cpp:7
molezone * findspecieslocal(const char buf[])
long int nzone
Definition: cddefines.cpp:14
bool lgTalk
Definition: called.h:12
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:51
#define EPS
Definition: cool_eval.cpp:1083
bool lgDrMinUsed
Definition: radius.h:180
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
double SumLine[4]
Definition: lines.h:125
static T & Inst()
Definition: cddefines.h:179
bool lgBadStop
Definition: conv.h:253
double heatnt[NCOLNT]
Definition: thermal.h:88
Wind wind
Definition: wind.cpp:5
bool lgTemperatureConstant
Definition: thermal.h:32
long int iteration
Definition: cddefines.cpp:16
bool lgSearch
Definition: conv.h:175
t_trace trace
Definition: trace.cpp:5
realnum collam[NCOLNT]
Definition: thermal.h:87
bool lgBallistic(void) const
Definition: wind.h:31
double rinner
Definition: radius.h:22
t_geometry geometry
Definition: geometry.cpp:5
char chSpeciesColumn[CHARS_SPECIES]
Definition: stopcalc.h:133
double cooling[NCOLNT]
Definition: thermal.h:88
#define ipCOL_HTOT
Definition: colden.h:12
realnum HColStop
Definition: stopcalc.h:69
bool lgMapDone
Definition: hcmap.h:36
realnum StopHPlusFrac
Definition: stopcalc.h:56
LinSv * LineSv
Definition: cdinit.cpp:70
#define STATIC
Definition: cddefines.h:101
bool lgTrace
Definition: trace.h:12
long int ncltot
Definition: thermal.h:90
bool lgStopSpeciesColumn
Definition: stopcalc.h:132
t_mole_local mole
Definition: mole.cpp:7
bool lgOnlyZone
Definition: prt.h:181
long int nprint
Definition: geometry.h:77
realnum ConstTemp
Definition: thermal.h:44
t_pressure pressure
Definition: pressure.cpp:5
t_rfield rfield
Definition: rfield.cpp:8
#define ipCOL_H0
Definition: colden.h:22
realnum xMass
Definition: stopcalc.h:77
float realnum
Definition: cddefines.h:107
valarray< class molezone > species
Definition: mole.h:355
long int nstart
Definition: prt.h:189
#define EXIT_FAILURE
Definition: cddefines.h:144
double H0_ov_Tspin
Definition: colden.h:58
realnum col_species
Definition: stopcalc.h:134
const realnum BIGFLOAT
Definition: cpu.h:176
realnum AV_point
Definition: stopcalc.h:89
bool lgdR2Small
Definition: radius.h:112
bool lgElmtOn[LIMELM]
Definition: dense.h:146
#define cdEXIT(FAIL)
Definition: cddefines.h:438
bool lgMPI_talk() const
Definition: cpu.h:315
bool lgMapBeingDone
Definition: hcmap.h:33
realnum StopH2MoleFrac
Definition: stopcalc.h:52
#define ipCOL_Hp
Definition: colden.h:26
realnum col_H0_ov_Tspin
Definition: stopcalc.h:83
t_iterations iterations
Definition: iterations.cpp:5
char chALab[5]
Definition: lines.h:117
void map_do(FILE *io, const char *chType)
Definition: hcmap.cpp:23
realnum StopLineWl1[MXSTPL]
Definition: stopcalc.h:111
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:161
t_prt prt
Definition: prt.cpp:10
realnum pbeta
Definition: pressure.h:136
long int nTotalIoniz
Definition: conv.h:166
bool lgTrOvrd
Definition: trace.h:127
double extin_mag_V_point
Definition: rfield.h:277
long int ipStopLin2[MXSTPL]
Definition: stopcalc.h:106
long int itermx
Definition: iterations.h:26
realnum gas_phase[LIMELM]
Definition: dense.h:71
double Conv2PrtInten
Definition: radius.h:147
#define ASSERT(exp)
Definition: cddefines.h:582
void sprt_wl(char *chString, realnum wl)
Definition: prt.cpp:25
void PrtZone(void)
Definition: prt_zone.cpp:36
bool lgLastIt
Definition: iterations.h:36
char chStopLabel1[MXSTPL][5]
Definition: stopcalc.h:115
long int nznbug
Definition: trace.h:15
double htot
Definition: thermal.h:149
double extin_mag_V_extended
Definition: rfield.h:281
double drad_x_fillfac
Definition: radius.h:71
#define ipCOL_H2g
Definition: colden.h:16
char chDenseLaw[5]
Definition: dense.h:158
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:688
double H2_total
Definition: hmi.h:16
ChemAtomList unresolved_atom_list
double eden
Definition: dense.h:190
char chReasonStop[nCHREASONSTOP]
Definition: stopcalc.h:130
long int nzdump
Definition: prt.h:239
double EdenTrue
Definition: dense.h:221
realnum ** TauAbsGeo
Definition: opacity.h:82
realnum tauend
Definition: stopcalc.h:23
realnum StopVelocity
Definition: stopcalc.h:65
bool lgSonicPoint
Definition: pressure.h:168
double TeFloor
Definition: stopcalc.h:33
MoleculeList list
Definition: mole.h:317
sys_float SDIV(sys_float x)
Definition: cddefines.h:956
vector< long > ContIndex
Definition: stopcalc.h:123
t_hcmap hcmap
Definition: hcmap.cpp:21
realnum xMassTotal
Definition: dense.h:107
bool lgStatic(void) const
Definition: wind.h:24
t_hmi hmi
Definition: hmi.cpp:5
double r1r0sq
Definition: radius.h:22
static t_cpu cpu
Definition: cpu.h:342
void ShowMe(void)
Definition: service.cpp:181
double te
Definition: phycon.h:11
const int ipHYDROGEN
Definition: cddefines.h:309
realnum colden[NCOLD]
Definition: colden.h:38
realnum TempHiStopZone
Definition: stopcalc.h:36
bool lgPres_radiation_ON
Definition: pressure.h:130
realnum col_h2_nut
Definition: stopcalc.h:80
realnum windv
Definition: wind.h:18
t_called called
Definition: called.cpp:5
EmissionList & Emis()
Definition: transition.h:329
bool lgAbort
Definition: cddefines.cpp:10
double drNext
Definition: radius.h:61
double * StopThickness
Definition: radius.h:22
#define ipCOL_H2s
Definition: colden.h:18