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