cloudy  trunk
grainvar.h
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 
4 #ifndef GRAINVAR_H_
5 #define GRAINVAR_H_
6 
7 /* grainvar.h */
8 
11 #define IGNORE_QUANTUM_HEATING 1
12 
14 const int NDEMS = 200;
15 
17 const double GRAIN_TMIN = 1.e-3;
18 const double GRAIN_TMID = 5.e3;
19 const double GRAIN_TMAX = 1.2e9;
20 
22 const int NCHS = 30;
25 const int NCHU = NCHS/3;
27 const int NCHRG_DEFAULT= 2;
28 
32 const int NQGRID = 10000;
33 
35 const double CONSERV_TOL = 1.e-3;
36 
38 typedef enum {
42 } df_type;
43 
45 typedef enum {
52 } enth_type;
53 
55 typedef enum {
58 } zmin_type;
59 
61 typedef enum {
64 } pot_type;
65 
67 typedef enum {
70 } ial_type;
71 
73 typedef enum {
76 } pe_type;
77 
79 typedef enum {
82 } strg_type;
83 
85 typedef enum {
94 } H2_type;
95 
99 typedef enum {
111 } mat_type;
112 
113 struct GrainPar {
114  double dep;
117  lgGreyGrain,
119 };
120 
122 {
123  void p_clear0();
124  void p_clear1();
125 
126 public:
128  {
129  p_clear1();
130  }
132  {
133  p_clear0();
134  }
135  void clear()
136  {
137  p_clear0();
138  p_clear1();
139  }
140 
141  long nelem;
142  long ns;
143  double ionPot;
144  long ipLo;
147  long nData;
148  vector<double> AvNr;
149  vector<double> Ener;
150  vector< flex_arr<realnum> > y01A;
151 };
152 
157 class AEInfo
158 {
159  void p_clear0();
160  void p_clear1();
161 
162 public:
164  {
165  p_clear1();
166  }
168  {
169  p_clear0();
170  }
171  void clear()
172  {
173  p_clear0();
174  p_clear1();
175  }
176 
177  unsigned int nSubShell;
178  vector<unsigned int> nData;
179  vector<double> IonThres;
180  vector< vector<double> > AvNumber;
182  vector< vector<double> > Energy;
183 };
184 
200 {
201  void p_clear0();
202  void p_clear1();
203 
204 public:
206  {
207  p_clear1();
208  }
210  {
211  p_clear0();
212  }
213  void clear()
214  {
215  p_clear0();
216  p_clear1();
217  }
218 
220  long DustZ,
221  ipThresInf,
222  ipThresInfVal,
223  nfill;
224  double FracPop,
225  Emin,
226  EminInc,
227  PotSurf,
228  PotSurfInc,
229  ThresInf,
230  ThresInfInc,
231  ThresInfVal,
232  ThresSurf,
233  ThresSurfInc,
234  ThresSurfVal,
235  ThermRate;
241  long RecomZ0[LIMELM][LIMELM+1];
243  double eta[LIMELM+2],
244  xi[LIMELM+2];
246  double RSum1;
247  double RSum2;
248  double ESum1a;
249  double ESum1b;
250  double ESum2;
254  double hcon1;
255  double hots1;
256  double bolflux1;
257  double pe1;
261  realnum RecomEn[LIMELM][LIMELM+1];
262  realnum ChemEn[LIMELM][LIMELM+1];
265  double BolFlux,
266  GrainHeat,
267  GrainHeatColl,
268  GasHeatPhotoEl,
269  GasHeatTherm,
270  GrainCoolTherm,
271  ChemEnIon,
272  ChemEnH2;
275  double HeatingRate2;
276 };
277 
292 class GrainBin
293 {
294  void p_clear0();
295  void p_clear1();
296 
297 public:
299  {
300  p_clear1();
301  }
303  {
304  p_clear0();
305  }
306  void clear()
307  {
308  p_clear0();
309  p_clear1();
310  }
311 
317  char chDstLab[13];
318  double eec;
319  double eyc;
320  realnum dustp[5],
322  AvRadius,
323  AvArea,
324  AvVol,
325  IntRadius,
326  IntArea,
327  IntVol,
328  elmAbund[LIMELM],
329  atomWeight,
330  Tsublimat,
331  DustWorkFcn,
332  BandGap,
333  ThermEff,
334  avDGRatio;
345  realnum dstfactor,
346  dstAbund,
347  GrnDpth;
349  double cnv_H_pGR,
350  cnv_H_pCM3,
351  cnv_CM3_pGR,
352  cnv_CM3_pH,
353  cnv_GR_pH,
354  cnv_GR_pCM3;
357  double RSFCheck;
361  vector<double> dstab1;
362  vector<double> pure_sc1;
363  vector<double> asym;
366  double dstems[NDEMS],
367  dstslp[NDEMS],
368  dstslp2[NDEMS];
371  realnum tedust,
372  TeGrainMax,
373  avdust;
382  long LowestZg;
383  long nfill;
384  vector<ShellData*> sd;
385  vector<realnum> y0b06;
386  double AveDustZ,
387  Capacity,
388  dstpot,
389  dstpotsav,
390  LowestPot,
391  RateUp,
392  RateDn,
393  StickElecNeg,
394  StickElecPos;
395  realnum avdpot,
396  le_thres;
397  vector<realnum> inv_att_len;
398  double AccomCoef[LIMELM];
401  double BolFlux,
402  GrainCoolTherm,
403  GasHeatPhotoEl,
404  GrainHeat,
405  GrainHeatColl,
406  GrainGasCool,
407  ChemEn,
408  ChemEnH2,
409  thermionic;
412  bool lgQHeat,
413  lgUseQHeat,
414  lgEverQHeat,
415  lgQHTooWide;
416  long QHeatFailures,
417  qnflux,
418  qnflux2;
419  double
420  qtmin,
421  qtmin_zone1,
422  HeatingRate1;
423  double DustEnth[NDEMS],
424  EnthSlp[NDEMS],
425  EnthSlp2[NDEMS];
435  avdft;
437  long nChrgOrg;
438  long nChrg;
439  ChargeBin *chrg[NCHS];
440 };
441 
450 class GrainVar
451 {
452  void p_clear0();
453  void p_clear1();
454 
455 public:
457  {
458  p_clear1();
459  }
461  {
462  p_clear0();
463  }
464  void clear()
465  {
466  p_clear0();
467  p_clear1();
468  }
469 
471  bool lgDustOn() const
472  {
473  return ( bin.size() > 0 );
474  }
475  bool lgWD01,
476  lgReevaluate,
478  lgGrainPhysicsOn,
480  lgAnyDustVary,
481  lgBakesPAH_heat;
482  bool lgNegGrnDrg;
485  bool lgDHetOn,
486  lgQHeatOn;
490  bool lgDColOn;
495 
496  vector<string> ReadRecord;
507  elmSumAbund[LIMELM];
511  enth_type which_enth[MAT_TOP];
512  zmin_type which_zmin[MAT_TOP];
513  pot_type which_pot[MAT_TOP];
514  ial_type which_ial[MAT_TOP];
515  pe_type which_pe[MAT_TOP];
516  strg_type which_strg[MAT_TOP];
517  H2_type which_H2distr[MAT_TOP];
519  vector<realnum> anumin;
520  vector<realnum> anumax;
523  long nzone;
524  vector<double> dstab;
525  vector<double> dstsc;
528  double TotalEden;
530  realnum GrnElecDonateMax,
532  double GrnRecomTe;
533  long HighestIon,
536  AEInfo *AugerData[LIMELM];
541  realnum GrainChTrRate[LIMELM][LIMELM+1][LIMELM+1];
542 
544  double GasCoolColl,
545  GasHeatPhotoEl,
546  GasHeatTherm,
547  GasHeatNet,
548  GrainHeatSum,
549  GrainHeatLya,
550  GrainHeatDif,
551  GrainHeatInc,
552  GrainHeatCollSum,
553  GrainHeatChem;
555  double dHeatdT;
560  dphmax,
561  dclmax;
564  double dsttmp[NDEMS];
569  bool lgQHeatAll,
570  lgQHPunLast;
571  FILE *QHSaveFile;
578  vector<realnum> GrainEmission;
579  vector<realnum> GraphiteEmission;
580  vector<realnum> SilicateEmission;
583  vector<GrainBin*> bin;
585 };
586 extern GrainVar gv;
587 
588 
589 #endif /* GRAINVAR_H_ */
long qnflux2
Definition: grainvar.h:416
vector< realnum > y0b06
Definition: grainvar.h:385
ChargeBin()
Definition: grainvar.h:205
realnum tedust
Definition: grainvar.h:253
~GrainVar()
Definition: grainvar.h:460
vector< double > dstab
Definition: grainvar.h:524
double ionPot
Definition: grainvar.h:143
double bolflux1
Definition: grainvar.h:256
flex_arr< realnum > ehat
Definition: grainvar.h:238
double rate_h2_form_grains_used
Definition: grainvar.h:430
FILE * QHSaveFile
Definition: grainvar.h:571
bool lgUseQHeat
Definition: grainvar.h:412
flex_arr< double > cs_pdt
Definition: grainvar.h:239
double GrainHeatSum
Definition: grainvar.h:544
bool lgGrainElectrons
Definition: grainvar.h:494
realnum le_thres
Definition: grainvar.h:395
double cnv_H_pGR
Definition: grainvar.h:349
vector< ShellData * > sd
Definition: grainvar.h:384
long nData
Definition: grainvar.h:147
const double GRAIN_TMAX
Definition: grainvar.h:19
double GrainHeatColl
Definition: grainvar.h:265
double ESum1b
Definition: grainvar.h:249
long LowestZg
Definition: grainvar.h:382
strg_type
Definition: grainvar.h:79
long nelem
Definition: grainvar.h:141
vector< realnum > inv_att_len
Definition: grainvar.h:397
double thermionic
Definition: grainvar.h:401
AEInfo()
Definition: grainvar.h:163
zmin_type
Definition: grainvar.h:55
double HeatingRate2
Definition: grainvar.h:275
vector< double > dstab1
Definition: grainvar.h:361
df_type
Definition: grainvar.h:38
df_type nDustFunc
Definition: grainvar.h:313
flex_arr< realnum > yhat_primary
Definition: grainvar.h:237
double dep
Definition: grainvar.h:114
long ipLo
Definition: grainvar.h:144
bool lgQHeatOn
Definition: grainvar.h:485
double dHeatdT
Definition: grainvar.h:555
void clear()
Definition: grainvar.h:213
vector< realnum > anumin
Definition: grainvar.h:519
vector< realnum > anumax
Definition: grainvar.h:520
bool lgChrgConverged
Definition: grainvar.h:381
bool lgQHPunLast
Definition: grainvar.h:569
bool lgDustOn() const
Definition: grainvar.h:471
pe_type
Definition: grainvar.h:73
vector< vector< double > > AvNumber
Definition: grainvar.h:180
~ShellData()
Definition: grainvar.h:131
vector< double > asym
Definition: grainvar.h:363
df_type nDustFunc
Definition: grainvar.h:115
double RSFCheck
Definition: grainvar.h:357
double RSum1
Definition: grainvar.h:246
vector< realnum > GraphiteEmission
Definition: grainvar.h:579
mat_type
Definition: grainvar.h:99
realnum TeGrainMax
Definition: grainvar.h:371
flex_arr< realnum > yhat
Definition: grainvar.h:236
double hots1
Definition: grainvar.h:255
vector< double > dstsc
Definition: grainvar.h:525
bool lgNegGrnDrg
Definition: grainvar.h:482
flex_arr< realnum > p
Definition: grainvar.h:145
vector< vector< double > > Energy
Definition: grainvar.h:182
double TotalEden
Definition: grainvar.h:528
double qtmin_zone1
Definition: grainvar.h:420
bool lgGreyGrain
Definition: grainvar.h:116
realnum dstAbundThresholdNear
Definition: grainvar.h:567
vector< realnum > GrainEmission
Definition: grainvar.h:578
long nChrg
Definition: grainvar.h:438
long ns
Definition: grainvar.h:142
GrainVar()
Definition: grainvar.h:456
realnum dstAbundThresholdFar
Definition: grainvar.h:568
~AEInfo()
Definition: grainvar.h:167
double StickElecPos
Definition: grainvar.h:386
const int NCHU
Definition: grainvar.h:25
bool lgTdustConverged
Definition: grainvar.h:370
bool lgRequestQHeating
Definition: grainvar.h:116
float realnum
Definition: cddefines.h:103
ShellData()
Definition: grainvar.h:127
pot_type
Definition: grainvar.h:61
double rate_h2_form_grains_CT02
Definition: grainvar.h:429
void clear()
Definition: grainvar.h:306
enth_type
Definition: grainvar.h:45
double hcon1
Definition: grainvar.h:254
bool lgForbidQHeating
Definition: grainvar.h:116
double rate_h2_form_grains_HM79
Definition: grainvar.h:428
long nChrgOrg
Definition: grainvar.h:437
double ESum2
Definition: grainvar.h:250
ial_type
Definition: grainvar.h:67
H2_type
Definition: grainvar.h:85
void clear()
Definition: grainvar.h:135
const int NCHRG_DEFAULT
Definition: grainvar.h:27
const double GRAIN_TMID
Definition: grainvar.h:18
void clear()
Definition: grainvar.h:464
bool lgWD01
Definition: grainvar.h:475
const double GRAIN_TMIN
Definition: grainvar.h:17
flex_arr< double > fac2
Definition: grainvar.h:259
vector< flex_arr< realnum > > y01A
Definition: grainvar.h:150
long nfill
Definition: grainvar.h:220
void clear()
Definition: grainvar.h:171
~GrainBin()
Definition: grainvar.h:302
const int LIMELM
Definition: cddefines.h:258
long nChrgRequested
Definition: grainvar.h:533
vector< double > pure_sc1
Definition: grainvar.h:362
double ESum1a
Definition: grainvar.h:248
const int NDEMS
Definition: grainvar.h:14
realnum GrnDpth
Definition: grainvar.h:345
vector< double > AvNr
Definition: grainvar.h:148
realnum GrainHeatScaleFactor
Definition: grainvar.h:557
vector< double > Ener
Definition: grainvar.h:149
vector< GrainBin * > bin
Definition: grainvar.h:583
realnum GrainMetal
Definition: grainvar.h:506
long nfill
Definition: grainvar.h:383
vector< double > IonThres
Definition: grainvar.h:179
flex_arr< double > fac1
Definition: grainvar.h:258
double GrnRecomTe
Definition: grainvar.h:532
double eec
Definition: grainvar.h:318
const int NQGRID
Definition: grainvar.h:32
const double CONSERV_TOL
Definition: grainvar.h:35
realnum GrnElecHoldMax
Definition: grainvar.h:530
string chPAH_abundance
Definition: grainvar.h:498
double pe1
Definition: grainvar.h:257
long nzone
Definition: grainvar.h:523
vector< unsigned int > nData
Definition: grainvar.h:178
vector< realnum > SilicateEmission
Definition: grainvar.h:580
vector< string > ReadRecord
Definition: grainvar.h:496
realnum TotalDustHeat
Definition: grainvar.h:559
double RSum2
Definition: grainvar.h:247
bool lgPAHsInIonizedRegion
Definition: grainvar.h:314
~ChargeBin()
Definition: grainvar.h:209
double eyc
Definition: grainvar.h:319
GrainVar gv
Definition: grainvar.cpp:5
flex_arr< realnum > y01
Definition: grainvar.h:146
realnum DustDftVel
Definition: grainvar.h:434
double rate_h2_form_grains_used_total
Definition: grainvar.h:574
unsigned int nSubShell
Definition: grainvar.h:177
const int NCHS
Definition: grainvar.h:22
bool lgDColOn
Definition: grainvar.h:490
GrainBin()
Definition: grainvar.h:298
mat_type matType
Definition: grainvar.h:335
double ThresSurfVal
Definition: grainvar.h:224