cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
h2_priv.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 H2_PRIV_H_
5 #define H2_PRIV_H_
6 
7 #include "transition.h"
8 #include "parser.h"
9 #include "mole.h"
10 
13 const int N_X_COLLIDER = 5;
15 const int chN_X_COLLIDER = 10;
16 
18 const int nTE_HMINUS = 7;
19 
21 const int N_ELEC = 7;
22 
24 const realnum H2_logte_hminus[nTE_HMINUS] = {1.,1.47712,2.,2.47712,3.,3.47712,4.};
25 
26 struct diss_level
27 {
28  long n, v, j;
29 };
30 
31 class diss_tran
32 {
33 public:
34  explicit diss_tran( diss_level a, diss_level b )
35  {
36  initial = a;
37  final = b;
38  energies.clear();
39  xsections.clear();
40  rate_coeff = 0.;
41  };
42  diss_level initial, final;
43  vector<double> energies;
44  vector<double> xsections;
45  double rate_coeff;
46 };
47 
49 {
51  {
52  magic = 0;
53  filename = "";
54  };
55  long magic;
56  string filename;
57 };
58 
59 class diatomics
60 {
61 public:
62  double Abund() const
63  {
64  return *dense_total;
65  }
66  void GetIndices( long& ipHi, long& ipLo, const char* chLine, long& i ) const;
67  void CalcPhotoionizationRate(void);
68  double (*photoion_opacity_fun)( double energy );
69  long OpacityCreate( double *stack );
70  double GetHeatRate( const diss_tran& tran );
71  double GetDissociationRate( const diss_tran& tran );
72  double MolDissocOpacity( const diss_tran& tran, const double& Mol_Ene );
73  double Cont_Diss_Heat_Rate( void );
74  void Mol_Photo_Diss_Rates( void );
78  double GetExcitedElecDensity(void);
79  realnum GetXColden( long iVib, long iRot );
80 
81  long int getLine( long iElecHi, long iVibHi, long iRotHi, long iElecLo, long iVibLo, long iRotLo, double *relint, double *absint );
82 
83  /* compute rate coefficient for a single quenching collision */
84  realnum H2_CollidRateEvalOne( long iVibHi, long iRotHi, long iVibLo, long iRotLo, long ipHi, long ipLo, long nColl, double temp_K );
85 
86  void H2_Calc_Average_Rates( void );
87 
88  void H2_X_sink_and_source( void );
89  /*H2_X_coll_rate_evaluate find collisional rates within X -
90  * this is one time upon entry into H2_LevelPops */
91  void H2_X_coll_rate_evaluate( void );
92 
93  /*H2_Level_low_matrix evaluate lower populations within X */
94  /* total abundance within matrix */
95  void H2_Level_low_matrix(realnum abundance );
96 
97  /*H2_Read_Cosmicray_distribution read distribution function for H2 population following cosmic ray collisional excitation
98  void H2_Read_Cosmicray_distribution(void); */
99 
100  // read energies for all electronic levels
101  void H2_ReadEnergies();
102  void H2_ReadEnergies( long int nelec, vector<int>& n, vector<int>& v, vector<int>&J, vector<double>& eWN );
103 
107  void H2_ReadDissprob( long int nelec );
108 
110  void H2_CollidRateEvalAll( void );
111 
115  void H2_CollidRateRead( long int nColl );
116 
120  void H2_ReadTransprob( long int nelec, TransitionList &trans );
121 
123  void H2_Read_hminus_distribution(void);
124 
126  void mole_H2_form( void );
127 
129  void mole_H2_LTE( void );
130 
133  void H2_Solomon_rate( void );
134 
136  double gs_rate( void );
137 
140  void H2_zero_pops_too_low( void );
141 
143  void init(void);
144 
146  void H2_ContPoint( void );
147 
149  double H2_DR(void);
150 
152  double H2_Accel(void);
153 
155  void H2_RT_OTS( void );
156 
158  double H2_RadPress(void);
159 
161  void H2_LinesAdd(void);
162 
164  void H2_Reset( void );
165 
167  double H2_InterEnergy(void);
168 
172  void H2_Colden( const char *chLabel );
173 
178  void H2_Cooling(const char *chString);
179 
184  void H2_Punch_line_data(
185  FILE* ioPUN ,
186  bool lgDoAll );
187 
193  void H2_PunchLineStuff( FILE * io , realnum xLimit , long index);
194 
196  void H2_RT_diffuse(void);
197 
200  void H2_RTMake( void );
201 
203  void H2_RT_tau_inc(void);
204 
206  void H2_Prt_Zone(void);
207 
208  // print departure coefficients for all X levels
209  void H2_PrtDepartCoef(void);
210 
212  void H2_LineZero( void );
213 
215  void H2_RT_tau_reset( void );
216 
218  void H2_LevelPops( bool &lgPopsConverged, double &old_value, double &new_value );
219 
226  void H2_PunchDo( FILE* io , char chJOB[] , const char chTime[] , long int ipPun );
227 
229  void H2_Prt_line_tau(void);
230 
232  void H2_ParseSave( Parser &p ,
233  char *chHeader);
234 
236  double H2_itrzn( void );
237 
242  void H2_Prt_column_density( FILE *ioMEAN );
243 
244  void set_numLevelsMatrix( long numLevels );
245 
246  void H2_ReadDissocEnergies( void );
247 
250 
256 
257  /* total spontaneous dissociation rate [s-1],
258  * summed over excited electronic states, weighted by pops */
260 
263 
267 
272 
277 
281 
285 
286  double HeatDiss;
287  double HeatDexc;
288  double HeatDexc_old;
291 
293  double Average_A;
304 
308 
312 
314 
318  para_density;
319 
320  // single precision versions of the above
323 
325  double ortho_colden ,
326  para_colden;
327 
328  /* old and older ortho - para ratios, used to determine whether soln is converged */
330 
331  // these remember the largest and smallest factors needed to
332  // renormalize the H2 chemistry
333  double renorm_max ,
334  renorm_min;
335 
336  // this will say how many times the large H2 molecule has been called in this zone -
337  // if not called (due to low H2 abundance) then not need to update its line arrays
338  long int nCall_this_zone;
339 
340  // flag saying whether to bother with the large molecule at all,
341  // default is false, set true with atom h2 on command
342  bool lgEnabled;
343 
344  // this is the number of electronic levels to include in the output - default is 1,
345  // only X. changed with PRINT LINES H2 ELECTRONIC and option on PUNCH H2 LINES commands
347 
348  /* true to use 2007 set of H2 - H collision rate, false use 1999 */
350 
354 
357 
360 
361  // include collision rates that come from real calculations,
362  // off with atom h2 collisions off command
364 
366  bool lgLTE;
367 
370 
371  // which set of He - H2 collisions to use? default is ORNL, other
372  // is Le BOURlet
374 
375  // flag saying whether (true) or not to use ORNL H2 - H2 collisions
378 
383 
384  long int loop_h2_oscil;
385  long int nzoneEval;
386 
389 
392 
394 
396  int nTRACE;
397 
401  n_trace_full,
403 
404  // the number of electronic quantum states to include.
405  // To do both Lyman and Werner bands want nelec = 3
406  long int n_elec_states;
407 
408  /* this is fraction of population that is within levels done with matrix */
409  double frac_matrix;
410 
411  /* used to recall the temperature used for last set of Boltzmann factors */
412  double TeUsedBoltz;
413  double TeUsedColl;
414 
415  explicit diatomics( const string& a, const double& e_star, const double* const abund, double (*fun)(double) ) : trans(a, &states), ENERGY_H2_STAR (e_star), dense_total(abund)
416  {
417  fixit(); //should probably force path lower and label upper case.
418  path = a;
419  label = a;
420  {
421  unsigned j;
422  for( j = 0; j < a.size(); ++j )
423  label[j] = toupper( label[j] );
424  shortlabel = label;
425  for( j = a.size(); j < 4; ++j )
426  label += ' ';
427  label += '\0';
428  }
429  /* option to turn off or on gbar collisions of the collision rate,
430  * default is to have it on */
431  /* turn h2.lgColl_gbar on/off with atom h2 gbar on off */
432  lgColl_gbar = true;
433  /* include collision rates that come from real calculations,
434  * off with atom h2 collisions off command */
435  lgColl_deexec_Calc = true;
436  lgColl_dissoc_coll = true;
437  lgEnabled = false;
438  lgEvaluated = false;
439  /* option to turn off H2 - grain collision & deexcitation,
440  * atom h2 grain collision on/off */
441  lgH2_grain_deexcitation = false;
442  /* option to scramble collision data */
443  lgH2_NOISE = false;
444  lgH2_NOISECOSMIC = false;
445  /* option to turn off ortho-para collisions, command ATOM H2 COLLISIONS ORTHO PARA OFF */
447  /* which set of H2 - He collision data to use? default is ORNL data set
448  * also Le Bourlot Meudon set available,
449  * set to ORNL with command
450  * atom H2 He collisions ORNL */
451  lgH2_He_ORNL = true;
452  /* use 1999 or 2007 H2 - H collision set atomic data mole H2 h */
453  lgH2_H_coll_07 = true;
454  /*>>chng 08 feb 27, GS, ORNL or Meudon H2 - H2 collision data
455  * >>chng 09 may 11, make it the default */
456  lgH2_ORH2_ORNL = true;
457  lgH2_PAH2_ORNL = true;
458  /* flag to force using LTE level populations */
459  lgLTE = false;
460  lgREAD_DATA = false;
461  loop_h2_oscil = -1;
462  HeatDiss = 0.;
463  HeatDexc = 0.;
464  HeatDexc_old = 0.;
465  HeatDexc_deriv = 0.;
466  HeatChangeOld = 0.;
467  HeatChange = 0.;
468  photo_heat_soft = 0.;
469  photo_heat_hard = 0.;
472  photoion_opacity_fun = fun;
475  spon_diss_tot = 0.;
477  rate_grain_J1_to_J0 = 0.;
478  Average_A = 0.;
482  Average_collH_excit = 0.;
487 
488  /* these remember the largest and smallest factors needed to
489  * renormalize the H2 chemistry */
490  renorm_max = 1.;
491  renorm_min = 1.;
492  /* ortho and para column densities */
493  ortho_colden = 0.;
494  para_colden = 0.;
495  ortho_para_old = 0.;
496  ortho_para_older = 0.;
497  ortho_para_current = 0.;
498  TeUsedBoltz = -1.;
499  TeUsedColl = -1.;
500 
501  /* counters used by H2_itrzn to find number of calls of h2 per zone */
502  nH2_pops = 0;
503  nH2_zone = 0;
505  /* these are used to set trace levels of output by options on atom h2 trace command
506  * first is minimum level of trace, keyword is FINAL */
507  n_trace_final = 1;
508  /* intermediate level of trace, info per iteration, key ITERATION */
509  n_trace_iterations = 2;
510  /* full trace, keyword is FULL */
511  n_trace_full = 3;
512  /* print matrices used in solving X */
513  n_trace_matrix = 4;
514  /* holds options for trace set with atom h2 command */
515  nTRACE = false;
516  /* this is number of electronic levels to include in the print and save output
517  * changed with the PRINT LINE H2 ELECTRONIC and PUNCH H2 commands
518  * by default only include X */
519  nElecLevelOutput = 1;
520  /* the number of electronic quantum states to include.
521  * To do both Lyman and Werner bands want nelec = 3,
522  * default is to do all bands included */
524  nCall_this_zone = 0;
525  /* the number of levels used in the matrix solution
526  * of the level populations - set with atom h2 matrix nlevel,
527  * >>chng 04 oct 05, make default 30 levels
528  * >>chng 04 dec 23, make default 70 levels */
529  nXLevelsMatrix = 70;
530  ndimMalloced = 0;
531 
532  levelAsEval = -1;
533  lgFirst = true;
534  nzone_eval = -1;
535  nzoneEval = -1;
536  iteration_evaluated = -1;
537 
538  /* this is used to establish zone number for evaluation of number of levels in matrix */
539  nzone_nlevel_set = -1;
540  nzoneAsEval = -1;
541  /* this is used to establish zone number for evaluation of number of levels in matrix */
542  nzone_nlevel_set = 0;
543 
544  /* this is the smallest ratio of H2/H where we will bother with the large H2 molecule
545  * this value was chosen so that large mole used at very start of TH85 standard PDR,
546  * NB - this appears in headinfo and must be updated there if changed here */
547  /* >>chng 03 jun 02, from 1e-6 to 1e-8 - in orion veil large H2 turned on half way
548  * across, and Solomon process was very fast since all lines optically thin. correct
549  * result has some shielding, so reset to lower value so that H2 comes on sooner. */
550  H2_to_H_limit = 1e-8;
551  iterationAsEval = -1;
552 
553  strcpy( chH2ColliderLabels[0] , "H0" );
554  strcpy( chH2ColliderLabels[1] , "He" );
555  strcpy( chH2ColliderLabels[2] , "H2 o" );
556  strcpy( chH2ColliderLabels[3] , "H2 p" );
557  strcpy( chH2ColliderLabels[4] , "H+" );
558  };
559 
560  molecule *sp;
565  vector< diss_tran > Diss_Trans;
566 
567 private:
568  string label;
569  string shortlabel;
570  string path;
571 
574  /* >> chng 05 jul 15, TE, H2g = sum (v=0, J=0,1) */
575  /* >>chng 05 jul 29, to 0.5 eV, this goes up to J=8 for v=0 */
576  /* >>chng 05 aug 03, slight upward change in energy to include the J=8 level,
577  * also give energy in waveumbers for simplicity (save h2 levels give energy in ryd) */
578  /*#define ENERGY_H2_STAR (0.5/EVRYD/WAVNRYD)*/
579  /* energy of v=0, J=8 is 4051.73, J=9 is 5001.97
580  * v=1, J=0 is 4161.14 */
581 public:
582  const double ENERGY_H2_STAR;
583 
584 private:
585  // pointer to the density of the species
586  const double* const dense_total;
587 
589 
590  /* these vars are private for H2 but uses same style as all other header files -
591  * the extern is extern in all except cddefines */
592 
594  long int nEner_H2_ground;
595 
598 
601 
604 
605  //int H2_nRot_add_ortho_para[N_ELEC];
608  long int nVib_hi[N_ELEC];
610  valarray<long> nRot_hi[N_ELEC];
613  long int Jlowest[N_ELEC];
620  vector<CollRateCoeffArray> RateCoefTable;
621 
622  // quantities dealing with chemistry
623 #if 1
624 #endif
625 
626  // these are quantities for each state
627 #if 1
628 
632 
641 #endif
642 
644 
645  // these are quantities for states with X
646 #if 1
666 
669 #endif
670 
671  valarray<realnum> H2_X_source;
672  valarray<realnum> H2_X_sink;
673 
677 
679  double H2_den_s , H2_den_g;
680 
683 
684  valarray<long> ipVib_H2_energy_sort;
685  valarray<long> ipElec_H2_energy_sort;
686  valarray<long> ipRot_H2_energy_sort;
689 
692  long int nXLevelsMatrix;
693  long int ndimMalloced;
694  double **AulEscp,
695  **col_str,
696  **AulDest,
697  **AulPump,
698  **CollRate_levn;
699  vector<double> pops, create, destroy, depart, stat_levn, excit;
700 
701  long int levelAsEval;
702  bool lgFirst;
703  long int nzone_eval;
705 
708 
712 
714  long int nH2_pops;
715  long int nH2_zone;
716 
719 
724 
725 };
726 
727 /* compute H2 continuum dissociation cross sections */
728 double MolDissocCrossSection( const diss_tran& tran, const double& Mol_Ene );
729 
730 double Yan_H2_CS( double energy_ryd /* photon energy in ryd */);
731 
732 /* compute H2 continuum dissoication opacities */
733 //double MolDissocOpacity( const diss_tran& tran, const double& Mol_Ene );
734 
735 #endif /* H2_PRIV_H_ */
736 
multi_arr< double, 2 > H2_rad_rate_in
Definition: h2_priv.h:650
int nTRACE
Definition: h2_priv.h:396
char chH2ColliderLabels[N_X_COLLIDER][chN_X_COLLIDER]
Definition: h2_priv.h:588
multi_arr< double, 2 > H2_col_rate_out
Definition: h2_priv.h:649
const int N_ELEC
Definition: h2_priv.h:21
multi_arr< realnum, 3 > H2_dissprob
Definition: h2_priv.h:629
const double ENERGY_H2_STAR
Definition: h2_priv.h:582
double Average_A
Definition: h2_priv.h:293
double gs_rate(void)
realnum GetXColden(long iVib, long iRot)
Definition: mole_h2.cpp:2342
double renorm_min
Definition: h2_priv.h:333
double rel_pop_LTE_s
Definition: h2_priv.h:280
double rel_pop_LTE_g
Definition: h2_priv.h:279
void H2_RTMake(void)
Definition: mole_h2.cpp:364
double H2_DissocEnergies[N_ELEC]
Definition: h2_priv.h:606
void SolveExcitedElectronicLevels(void)
Definition: mole_h2.cpp:1914
void H2_LineZero(void)
Definition: mole_h2.cpp:416
void H2_Punch_line_data(FILE *ioPUN, bool lgDoAll)
double TeUsedBoltz
Definition: h2_priv.h:412
double Average_collH2_excit
Definition: h2_priv.h:297
long int n_elec_states
Definition: h2_priv.h:406
double HeatChangeOld
Definition: h2_priv.h:290
long ip_photo_opac_thresh
Definition: h2_priv.h:310
realnum mass_amu
Definition: h2_priv.h:393
double spon_diss_tot
Definition: h2_priv.h:259
bool lgH2_H_coll_07
Definition: h2_priv.h:349
double Abund() const
Definition: h2_priv.h:62
void H2_LevelPops(bool &lgPopsConverged, double &old_value, double &new_value)
Definition: mole_h2.cpp:883
int n_trace_full
Definition: h2_priv.h:399
double ortho_para_older
Definition: h2_priv.h:329
double average_energy_s
Definition: h2_priv.h:284
multi_arr< double, 2 > pops_per_vib
Definition: h2_priv.h:597
t_coll_source coll_source[N_X_COLLIDER]
Definition: h2_priv.h:313
double HeatDexc_deriv
Definition: h2_priv.h:289
multi_arr< realnum, 2 > H2_coll_dissoc_rate_coef_H2
Definition: h2_priv.h:668
double Cont_Dissoc_Rate_H2g
Definition: h2_priv.h:275
molecule * sp_star
Definition: h2_priv.h:561
bool lgREAD_DATA
Definition: h2_priv.h:249
valarray< long > ipVib_H2_energy_sort
Definition: h2_priv.h:684
long int Jlowest[N_ELEC]
Definition: h2_priv.h:613
double ortho_colden
Definition: h2_priv.h:325
realnum H2_CollidRateEvalOne(long iVibHi, long iRotHi, long iVibLo, long iRotLo, long ipHi, long ipLo, long nColl, double temp_K)
const int nTE_HMINUS
Definition: h2_priv.h:18
double xSTDNoise
Definition: h2_priv.h:388
long OpacityCreate(double *stack)
double H2_to_H_limit
Definition: h2_priv.h:391
double ** AulEscp
Definition: h2_priv.h:694
bool lgEvaluated
Definition: h2_priv.h:307
void H2_CollidRateRead(long int nColl)
vector< CollRateCoeffArray > RateCoefTable
Definition: h2_priv.h:620
void H2_Prt_column_density(FILE *ioMEAN)
Definition: mole_h2_io.cpp:395
double rate_grain_op_conserve
Definition: h2_priv.h:270
double ** col_str
Definition: h2_priv.h:694
int nElecLevelOutput
Definition: h2_priv.h:346
double H2_den_g
Definition: h2_priv.h:679
multi_arr< realnum, 2 > H2_coll_dissoc_rate_coef
Definition: h2_priv.h:665
double HeatChange
Definition: h2_priv.h:290
void H2_Read_hminus_distribution(void)
Definition: mole_h2_io.cpp:986
TransitionList trans
Definition: h2_priv.h:563
Definition: mole.h:132
Definition: parser.h:31
double Average_collH2_dissoc_g
Definition: h2_priv.h:302
void GetIndices(long &ipHi, long &ipLo, const char *chLine, long &i) const
long int nEner_H2_ground
Definition: h2_priv.h:594
void H2_X_sink_and_source(void)
Definition: mole_h2.cpp:54
int n_trace_matrix
Definition: h2_priv.h:399
double Average_collH2_deexcit
Definition: h2_priv.h:295
multi_arr< realnum, 3 > CollRateErrFac
Definition: h2_priv.h:619
multi_arr< realnum, 2 > H2_X_formation
Definition: h2_priv.h:653
const realnum H2_logte_hminus[nTE_HMINUS]
Definition: h2_priv.h:24
double Yan_H2_CS(double energy_ryd)
double Solomon_dissoc_rate_g
Definition: h2_priv.h:261
double TeUsedColl
Definition: h2_priv.h:413
multi_arr< realnum, 3 > CollRateCoeff
Definition: h2_priv.h:618
const double *const dense_total
Definition: h2_priv.h:586
multi_arr< realnum, 3 > H2_stat
Definition: h2_priv.h:638
valarray< realnum > H2_X_sink
Definition: h2_priv.h:672
long int levelAsEval
Definition: h2_priv.h:701
vector< diss_tran > Diss_Trans
Definition: h2_priv.h:565
double ** CollRate_levn
Definition: h2_priv.h:694
long int iteration_evaluated
Definition: h2_priv.h:704
multi_arr< double, 3 > Cont_Dissoc_Rate
Definition: h2_priv.h:276
long n
Definition: h2_priv.h:28
multi_arr< long int, 3 > ipEnergySort
Definition: h2_priv.h:687
multi_arr< double, 3 > H2_old_populations
Definition: h2_priv.h:634
char toupper(char c)
Definition: cddefines.h:704
double GetExcitedElecDensity(void)
Definition: mole_h2.cpp:2521
bool lgH2_ortho_para_coll_on
Definition: h2_priv.h:369
molecule * sp
Definition: h2_priv.h:558
double Average_collH2_dissoc_s
Definition: h2_priv.h:303
void H2_CollidRateEvalAll(void)
long int iterationAsEval
Definition: h2_priv.h:643
multi_arr< realnum, 3 > H2_disske
Definition: h2_priv.h:630
double ortho_density
Definition: h2_priv.h:316
diss_tran(diss_level a, diss_level b)
Definition: h2_priv.h:34
double HeatDexc_old
Definition: h2_priv.h:288
int n_trace_iterations
Definition: h2_priv.h:399
t_abund abund
Definition: abund.cpp:5
realnum para_density_f
Definition: h2_priv.h:321
void H2_ReadEnergies()
Definition: mole_h2_io.cpp:674
void mole_H2_LTE(void)
void H2_RT_diffuse(void)
Definition: mole_h2.cpp:345
void mole_H2_form(void)
double para_density
Definition: h2_priv.h:316
vector< double > energies
Definition: h2_priv.h:43
void H2_RT_tau_reset(void)
Definition: mole_h2.cpp:432
multi_arr< realnum, 3 > H2_X_hminus_formation_distribution
Definition: h2_priv.h:682
double ortho_para_old
Definition: h2_priv.h:329
bool lgLTE
Definition: h2_priv.h:366
double photodissoc_BigH2_H2s
Definition: h2_priv.h:254
bool lgColl_dissoc_coll
Definition: h2_priv.h:359
string filename
Definition: h2_priv.h:56
long int nzoneAsEval
Definition: h2_priv.h:643
long int nLevels_per_elec[N_ELEC]
Definition: h2_priv.h:615
double xMeanNoise
Definition: h2_priv.h:388
vector< double > destroy
Definition: h2_priv.h:699
bool lgEnabled
Definition: h2_priv.h:342
double H2_den_s
Definition: h2_priv.h:679
long int nzoneEval
Definition: h2_priv.h:385
multi_arr< double, 3 > H2_populations_LTE
Definition: h2_priv.h:636
string label
Definition: h2_priv.h:568
long int nCall_this_zone
Definition: h2_priv.h:338
string path
Definition: h2_priv.h:570
void Mol_Photo_Diss_Rates(void)
void H2_RT_tau_inc(void)
Definition: mole_h2.cpp:386
void H2_Prt_Zone(void)
Definition: mole_h2_io.cpp:333
bool lgH2_PAH2_ORNL
Definition: h2_priv.h:377
bool lgH2_NOISE
Definition: h2_priv.h:380
double Average_collH_deexcit
Definition: h2_priv.h:296
const int N_X_COLLIDER
Definition: h2_priv.h:13
bool lgFirst
Definition: h2_priv.h:702
long int nCall_this_iteration
Definition: h2_priv.h:723
double H2_InterEnergy(void)
long int ndimMalloced
Definition: h2_priv.h:693
void H2_RT_OTS(void)
Definition: mole_h2.cpp:2412
long magic
Definition: h2_priv.h:54
float realnum
Definition: cddefines.h:107
multi_arr< realnum, 2 > H2_X_colden_LTE
Definition: h2_priv.h:659
double photodissoc_BigH2_H2g
Definition: h2_priv.h:255
multi_arr< bool, 2 > lgH2_radiative
Definition: h2_priv.h:711
long int nH2_pops
Definition: h2_priv.h:714
long int nXLevelsMatrix
Definition: h2_priv.h:692
double MolDissocOpacity(const diss_tran &tran, const double &Mol_Ene)
bool lgH2_He_ORNL
Definition: h2_priv.h:373
multi_arr< realnum, 2 > H2_X_Hmin_back
Definition: h2_priv.h:655
void H2_PrtDepartCoef(void)
Definition: mole_h2_io.cpp:362
void H2_LinesAdd(void)
Definition: mole_h2_io.cpp:49
double(* photoion_opacity_fun)(double energy)
Definition: h2_priv.h:68
double ** AulDest
Definition: h2_priv.h:694
long ip_photo_opac_offset
Definition: h2_priv.h:311
multi_arr< realnum, 6 > H2_SaveLine
Definition: h2_priv.h:707
long v
Definition: h2_priv.h:28
multi_arr< double, 3 > H2_rad_rate_out
Definition: h2_priv.h:631
bool lgColl_deexec_Calc
Definition: h2_priv.h:356
double average_energy_g
Definition: h2_priv.h:283
double H2_DR(void)
Definition: mole_h2.cpp:2406
valarray< long > ipElec_H2_energy_sort
Definition: h2_priv.h:685
void H2_ContPoint(void)
Definition: mole_h2.cpp:253
long int loop_h2_oscil
Definition: h2_priv.h:384
void Read_Mol_Diss_cross_sections(void)
multi_arr< realnum, 3 > H2_X_grain_formation_distribution
Definition: h2_priv.h:676
realnum ortho_density_f
Definition: h2_priv.h:321
double rate_grain_J1_to_J0
Definition: h2_priv.h:271
double GetHeatRate(const diss_tran &tran)
double HeatDexc
Definition: h2_priv.h:287
void H2_Calc_Average_Rates(void)
Definition: mole_h2.cpp:2436
double ortho_para_current
Definition: h2_priv.h:329
double frac_matrix
Definition: h2_priv.h:409
long int nzone_eval
Definition: h2_priv.h:703
void H2_Solomon_rate(void)
Definition: mole_h2_etc.cpp:24
diatomics(const string &a, const double &e_star, const double *const abund, double(*fun)(double))
Definition: h2_priv.h:415
double HeatDiss
Definition: h2_priv.h:286
vector< double > stat_levn
Definition: h2_priv.h:699
void H2_ReadTransprob(long int nelec, TransitionList &trans)
Definition: mole_h2_io.cpp:430
double photo_heat_soft
Definition: h2_priv.h:252
bool lgH2_grain_deexcitation
Definition: h2_priv.h:363
multi_arr< double, 2 > H2_X_rate_to_elec_excited
Definition: h2_priv.h:663
double photo_heat_hard
Definition: h2_priv.h:253
string shortlabel
Definition: h2_priv.h:569
void H2_zero_pops_too_low(void)
multi_arr< double, 2 > H2_X_rate_from_elec_excited
Definition: h2_priv.h:661
long int getLine(long iElecHi, long iVibHi, long iRotHi, long iElecLo, long iVibLo, long iRotLo, double *relint, double *absint)
double renorm_max
Definition: h2_priv.h:333
qList states
Definition: h2_priv.h:562
void H2_Colden(const char *chLabel)
Definition: mole_h2.cpp:2361
double Average_collH_excit
Definition: h2_priv.h:298
double H2_RadPress(void)
Definition: mole_h2.cpp:294
void H2_X_coll_rate_evaluate(void)
Definition: mole_h2.cpp:175
void H2_PunchLineStuff(FILE *io, realnum xLimit, long index)
double Solomon_dissoc_rate_s
Definition: h2_priv.h:262
double photoionize_rate
Definition: h2_priv.h:251
bool lgH2_ORH2_ORNL
Definition: h2_priv.h:376
void H2_Level_low_matrix(realnum abundance)
Definition: mole_h2.cpp:448
multi_arr< long int, 2 > ipTransitionSort
Definition: h2_priv.h:688
void H2_PunchDo(FILE *io, char chJOB[], const char chTime[], long int ipPun)
double Cont_Dissoc_Rate_H2s
Definition: h2_priv.h:274
bool lgColl_gbar
Definition: h2_priv.h:353
bool lgH2_NOISECOSMIC
Definition: h2_priv.h:382
double Solomon_elec_decay_g
Definition: h2_priv.h:265
vector< double > pops
Definition: h2_priv.h:699
void H2_Prt_line_tau(void)
void H2_Cooling(const char *chString)
Definition: mole_h2.cpp:2164
void H2_Reset(void)
TransitionList::iterator rad_end
Definition: h2_priv.h:564
void H2_ReadDissocEnergies(void)
Definition: mole_h2_io.cpp:831
valarray< long > nRot_hi[N_ELEC]
Definition: h2_priv.h:610
double pops_per_elec[N_ELEC]
Definition: h2_priv.h:617
double Solomon_elec_decay_s
Definition: h2_priv.h:266
double para_colden
Definition: h2_priv.h:325
double H2_renorm_chemistry
Definition: h2_priv.h:600
vector< double > create
Definition: h2_priv.h:699
double Average_collH_dissoc_g
Definition: h2_priv.h:300
t_coll_source()
Definition: h2_priv.h:50
valarray< long > ipRot_H2_energy_sort
Definition: h2_priv.h:686
double ** AulPump
Definition: h2_priv.h:694
valarray< realnum > H2_X_source
Definition: h2_priv.h:671
double H2_Accel(void)
Definition: mole_h2.cpp:271
double rate_coeff
Definition: h2_priv.h:45
long int nzone_nlevel_set
Definition: h2_priv.h:718
long j
Definition: h2_priv.h:28
double Average_collH_dissoc_s
Definition: h2_priv.h:301
void CalcPhotoionizationRate(void)
void init(void)
void set_numLevelsMatrix(long numLevels)
multi_arr< double, 3 > H2_Boltzmann
Definition: h2_priv.h:635
void H2_ReadDissprob(long int nelec)
Definition: mole_h2_io.cpp:895
double MolDissocCrossSection(const diss_tran &tran, const double &Mol_Ene)
void fixit(void)
Definition: service.cpp:991
double GetDissociationRate(const diss_tran &tran)
vector< double > depart
Definition: h2_priv.h:699
vector< double > excit
Definition: h2_priv.h:699
multi_arr< realnum, 2 > H2_X_coll_rate
Definition: h2_priv.h:603
double H2_itrzn(void)
Definition: mole_h2.cpp:240
long int nVib_hi[N_ELEC]
Definition: h2_priv.h:608
void H2_ParseSave(Parser &p, char *chHeader)
Definition: mole_h2_io.cpp:111
vector< double > xsections
Definition: h2_priv.h:44
void SolveSomeGroundElectronicLevels(void)
Definition: mole_h2.cpp:2025
multi_arr< double, 2 > H2_col_rate_in
Definition: h2_priv.h:648
const int chN_X_COLLIDER
Definition: h2_priv.h:15
int n_trace_final
Definition: h2_priv.h:399
multi_arr< realnum, 2 > H2_X_colden
Definition: h2_priv.h:657
long int nH2_zone
Definition: h2_priv.h:715
multi_arr< int, 2 > H2_ipPhoto
Definition: h2_priv.h:647
diss_level initial
Definition: h2_priv.h:41
double Cont_Diss_Heat_Rate(void)
multi_arr< bool, 3 > H2_lgOrtho
Definition: h2_priv.h:640