cloudy  trunk
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  };
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 
322 
323  // single precision versions of the above
326 
328  double ortho_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 ,
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 
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 */
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.;
475  photoion_opacity_fun = fun;
478  spon_diss_tot = 0.;
480  rate_grain_J1_to_J0 = 0.;
481  Average_A = 0.;
485  Average_collH_excit = 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 */
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,
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 
diatomics::diatomics
diatomics(const string &a, const double &e_star, const double *const abund, double(*fun)(double))
Definition: h2_priv.h:418
t_coll_source::magic
long magic
Definition: h2_priv.h:60
diatomics::depart
vector< double > depart
Definition: h2_priv.h:702
diatomics::H2_LinesAdd
void H2_LinesAdd(void)
Definition: mole_h2_io.cpp:49
diatomics::lgH2_PAH2_ORNL
bool lgH2_PAH2_ORNL
Definition: h2_priv.h:380
diatomics::H2_itrzn
double H2_itrzn(void)
Definition: mole_h2.cpp:266
diatomics::nVib_hi
long int nVib_hi[N_ELEC]
Definition: h2_priv.h:611
diatomics::photo_heat_hard
double photo_heat_hard
Definition: h2_priv.h:256
diatomics::SolveSomeGroundElectronicLevels
void SolveSomeGroundElectronicLevels(void)
Definition: mole_h2.cpp:2052
diatomics::sp
molecule * sp
Definition: h2_priv.h:561
diatomics::H2_InterEnergy
double H2_InterEnergy(void)
diatomics::H2_disske
multi_arr< realnum, 3 > H2_disske
Definition: h2_priv.h:633
diatomics::photoion_opacity_fun
double(* photoion_opacity_fun)(double energy)
Definition: h2_priv.h:74
diatomics::n_trace_final
int n_trace_final
Definition: h2_priv.h:402
diatomics::average_energy_g
double average_energy_g
Definition: h2_priv.h:286
diatomics::HeatChangeOld
double HeatChangeOld
Definition: h2_priv.h:293
diss_level::v
long v
Definition: h2_priv.h:34
diatomics::H2_PunchDo
void H2_PunchDo(FILE *io, char chJOB[], const char chTime[], long int ipPun)
Definition: mole_h2_io.cpp:1224
diatomics::H2_LevelPops
void H2_LevelPops(bool &lgPopsConverged, double &old_value, double &new_value)
Definition: mole_h2.cpp:909
diatomics::H2_SaveLine
multi_arr< realnum, 6 > H2_SaveLine
Definition: h2_priv.h:710
diatomics::H2_zero_pops_too_low
void H2_zero_pops_too_low(void)
Definition: mole_h2_etc.cpp:187
diatomics::GetExcitedElecDensity
double GetExcitedElecDensity(void)
Definition: mole_h2.cpp:2538
diatomics::pops_per_vib
multi_arr< double, 2 > pops_per_vib
Definition: h2_priv.h:600
diatomics::ortho_para_old
double ortho_para_old
Definition: h2_priv.h:332
diatomics::photodissoc_BigH2_H2g
double photodissoc_BigH2_H2g
Definition: h2_priv.h:258
diatomics::n_trace_iterations
int n_trace_iterations
Definition: h2_priv.h:403
diatomics::lgEvaluated
bool lgEvaluated
Definition: h2_priv.h:310
diatomics::nH2_zone
long int nH2_zone
Definition: h2_priv.h:718
diatomics::Cont_Dissoc_Rate_H2g
double Cont_Dissoc_Rate_H2g
Definition: h2_priv.h:278
diatomics::lgEnabled
bool lgEnabled
Definition: h2_priv.h:345
Yan_H2_CS
double Yan_H2_CS(double energy_ryd)
Definition: mole_h2_etc.cpp:326
diatomics::sp_star
molecule * sp_star
Definition: h2_priv.h:564
diatomics::Average_collH_dissoc_s
double Average_collH_dissoc_s
Definition: h2_priv.h:304
diatomics::init
void init(void)
Definition: mole_h2_create.cpp:111
realnum
float realnum
Definition: cddefines.h:103
diatomics::H2_Solomon_rate
void H2_Solomon_rate(void)
Definition: mole_h2_etc.cpp:24
diatomics::label
string label
Definition: h2_priv.h:571
diatomics::Mol_Photo_Diss_Rates
void Mol_Photo_Diss_Rates(void)
Definition: mole_dissociate.cpp:148
diatomics::H2_RTMake
void H2_RTMake(void)
Definition: mole_h2.cpp:390
diatomics::Abund
double Abund() const
Definition: h2_priv.h:68
diatomics::H2_Calc_Average_Rates
void H2_Calc_Average_Rates(void)
Definition: mole_h2.cpp:2453
diatomics::para_density_f
realnum para_density_f
Definition: h2_priv.h:325
diatomics::lgH2_NOISE
bool lgH2_NOISE
Definition: h2_priv.h:383
diatomics::TeUsedBoltz
double TeUsedBoltz
Definition: h2_priv.h:415
mole.h
diatomics::nzone_nlevel_set
long int nzone_nlevel_set
Definition: h2_priv.h:721
diatomics::states
qList states
Definition: h2_priv.h:565
multi_arr< double, 3 >
diss_tran::energies
vector< double > energies
Definition: h2_priv.h:49
diatomics::H2_PunchLineStuff
void H2_PunchLineStuff(FILE *io, realnum xLimit, long index)
Definition: mole_h2_io.cpp:1167
diss_level
Definition: h2_priv.h:32
diatomics::stat_levn
vector< double > stat_levn
Definition: h2_priv.h:702
diatomics::photo_heat_soft
double photo_heat_soft
Definition: h2_priv.h:255
diatomics::spon_diss_tot
double spon_diss_tot
Definition: h2_priv.h:262
diatomics::H2_ReadTransprob
void H2_ReadTransprob(long int nelec, TransitionList &trans)
Definition: mole_h2_io.cpp:430
diatomics::AulPump
double ** AulPump
Definition: h2_priv.h:700
diatomics::H2_col_rate_in
multi_arr< double, 2 > H2_col_rate_in
Definition: h2_priv.h:651
diatomics::coll_source
t_coll_source coll_source[N_X_COLLIDER]
Definition: h2_priv.h:316
diatomics::H2_Colden
void H2_Colden(const char *chLabel)
Definition: mole_h2.cpp:2378
diatomics::trans
TransitionList trans
Definition: h2_priv.h:566
diatomics::Average_collH2_excit
double Average_collH2_excit
Definition: h2_priv.h:300
diatomics::H2_Read_hminus_distribution
void H2_Read_hminus_distribution(void)
Definition: mole_h2_io.cpp:984
ProxyIterator
Definition: proxy_iterator.h:58
diatomics::H2_X_coll_rate_evaluate
void H2_X_coll_rate_evaluate(void)
Definition: mole_h2.cpp:201
diatomics::MolDissocOpacity
double MolDissocOpacity(const diss_tran &tran, const double &Mol_Ene)
Definition: mole_dissociate.cpp:112
diatomics::H2_Reset
void H2_Reset(void)
Definition: mole_h2_etc.cpp:274
diatomics::photoionize_rate
double photoionize_rate
Definition: h2_priv.h:254
diatomics::H2_coll_dissoc_rate_coef_H2
multi_arr< realnum, 2 > H2_coll_dissoc_rate_coef_H2
Definition: h2_priv.h:671
diatomics::H2_Level_low_matrix
void H2_Level_low_matrix(realnum abundance)
Definition: mole_h2.cpp:474
diatomics::lgREAD_DATA
bool lgREAD_DATA
Definition: h2_priv.h:252
diatomics::H2_Prt_Zone
void H2_Prt_Zone(void)
Definition: mole_h2_io.cpp:333
diatomics::H2_X_coll_rate
multi_arr< realnum, 2 > H2_X_coll_rate
Definition: h2_priv.h:606
diatomics::AulDest
double ** AulDest
Definition: h2_priv.h:699
diatomics::Average_collH2_deexcit
double Average_collH2_deexcit
Definition: h2_priv.h:298
diatomics::H2_rad_rate_in
multi_arr< double, 2 > H2_rad_rate_in
Definition: h2_priv.h:653
diatomics::ip_photo_opac_offset
long ip_photo_opac_offset
Definition: h2_priv.h:314
diatomics::ortho_para_older
double ortho_para_older
Definition: h2_priv.h:332
diatomics::pops_per_elec
double pops_per_elec[N_ELEC]
Definition: h2_priv.h:620
diatomics::average_energy_s
double average_energy_s
Definition: h2_priv.h:287
diatomics::H2_X_grain_formation_distribution
multi_arr< realnum, 3 > H2_X_grain_formation_distribution
Definition: h2_priv.h:679
diatomics::ortho_density
double ortho_density
Definition: h2_priv.h:319
diatomics::ortho_density_f
realnum ortho_density_f
Definition: h2_priv.h:324
diss_level::j
long j
Definition: h2_priv.h:34
diatomics::HeatDexc_deriv
double HeatDexc_deriv
Definition: h2_priv.h:292
diatomics::HeatDexc_old
double HeatDexc_old
Definition: h2_priv.h:291
diatomics::H2_X_colden
multi_arr< realnum, 2 > H2_X_colden
Definition: h2_priv.h:660
diatomics::rad_end
TransitionList::iterator rad_end
Definition: h2_priv.h:567
diatomics::levelAsEval
long int levelAsEval
Definition: h2_priv.h:704
diatomics::GetIndices
void GetIndices(long &ipHi, long &ipLo, const char *chLine, long &i) const
Definition: mole_h2_coll.cpp:208
diatomics::CalcPhotoionizationRate
void CalcPhotoionizationRate(void)
Definition: mole_h2_etc.cpp:375
diatomics::H2_RT_tau_reset
void H2_RT_tau_reset(void)
Definition: mole_h2.cpp:458
diatomics::OpacityCreate
long OpacityCreate(double *stack)
Definition: mole_h2_etc.cpp:166
toupper
char toupper(char c)
Definition: cddefines.h:700
diatomics::H2_ReadEnergies
void H2_ReadEnergies()
Definition: mole_h2_io.cpp:672
diatomics::nLevels_per_elec
long int nLevels_per_elec[N_ELEC]
Definition: h2_priv.h:618
diatomics::xMeanNoise
double xMeanNoise
Definition: h2_priv.h:391
diatomics::col_str
double ** col_str
Definition: h2_priv.h:698
diatomics::shortlabel
string shortlabel
Definition: h2_priv.h:572
diatomics::getLine
long int getLine(long iElecHi, long iVibHi, long iRotHi, long iElecLo, long iVibLo, long iRotLo, double *relint, double *absint)
Definition: mole_h2_io.cpp:1931
transition.h
diatomics::H2_populations_LTE
multi_arr< double, 3 > H2_populations_LTE
Definition: h2_priv.h:639
diatomics::path
string path
Definition: h2_priv.h:573
diatomics::ip_photo_opac_thresh
long ip_photo_opac_thresh
Definition: h2_priv.h:313
diatomics::rate_grain_J1_to_J0
double rate_grain_J1_to_J0
Definition: h2_priv.h:274
diatomics::H2_renorm_chemistry
double H2_renorm_chemistry
Definition: h2_priv.h:603
diatomics::H2_LineZero
void H2_LineZero(void)
Definition: mole_h2.cpp:442
diatomics::H2_X_sink_and_source
void H2_X_sink_and_source(void)
Definition: mole_h2.cpp:54
diatomics::n_trace_matrix
int n_trace_matrix
Definition: h2_priv.h:405
diatomics::ortho_para_current
double ortho_para_current
Definition: h2_priv.h:332
diatomics::H2_Boltzmann
multi_arr< double, 3 > H2_Boltzmann
Definition: h2_priv.h:638
diatomics::H2_den_g
double H2_den_g
Definition: h2_priv.h:682
diatomics::n_trace_full
int n_trace_full
Definition: h2_priv.h:404
diatomics::renorm_max
double renorm_max
Definition: h2_priv.h:336
H2_logte_hminus
const realnum H2_logte_hminus[nTE_HMINUS]
Definition: h2_priv.h:30
diss_tran::diss_tran
diss_tran(diss_level a, diss_level b)
Definition: h2_priv.h:40
t_coll_source
Definition: h2_priv.h:54
diatomics::pops
vector< double > pops
Definition: h2_priv.h:702
diatomics::nCall_this_zone
long int nCall_this_zone
Definition: h2_priv.h:341
diatomics::rel_pop_LTE_s
double rel_pop_LTE_s
Definition: h2_priv.h:283
Parser
Definition: parser.h:31
diatomics::dense_total
const double *const dense_total
Definition: h2_priv.h:589
diatomics::TeUsedColl
double TeUsedColl
Definition: h2_priv.h:416
diatomics::H2_X_sink
valarray< realnum > H2_X_sink
Definition: h2_priv.h:675
diatomics::Cont_Diss_Heat_Rate
double Cont_Diss_Heat_Rate(void)
Definition: mole_dissociate.cpp:223
diatomics::ipTransitionSort
multi_arr< long int, 2 > ipTransitionSort
Definition: h2_priv.h:691
diatomics::Diss_Trans
vector< diss_tran > Diss_Trans
Definition: h2_priv.h:568
diatomics
Definition: h2_priv.h:65
diatomics::H2_X_rate_to_elec_excited
multi_arr< double, 2 > H2_X_rate_to_elec_excited
Definition: h2_priv.h:666
diatomics::H2_ReadDissprob
void H2_ReadDissprob(long int nelec)
Definition: mole_h2_io.cpp:893
diatomics::nRot_hi
valarray< long > nRot_hi[N_ELEC]
Definition: h2_priv.h:613
qList
Definition: quantumstate.h:40
diatomics::H2_X_colden_LTE
multi_arr< realnum, 2 > H2_X_colden_LTE
Definition: h2_priv.h:662
diatomics::Solomon_elec_decay_s
double Solomon_elec_decay_s
Definition: h2_priv.h:269
diatomics::Solomon_dissoc_rate_g
double Solomon_dissoc_rate_g
Definition: h2_priv.h:264
diatomics::AulEscp
double ** AulEscp
Definition: h2_priv.h:697
diatomics::n_elec_states
long int n_elec_states
Definition: h2_priv.h:409
diatomics::nH2_pops
long int nH2_pops
Definition: h2_priv.h:717
MolDissocCrossSection
double MolDissocCrossSection(const diss_tran &tran, const double &Mol_Ene)
Definition: mole_dissociate.cpp:121
diatomics::Average_collH_dissoc_g
double Average_collH_dissoc_g
Definition: h2_priv.h:303
diatomics::H2_X_Hmin_back
multi_arr< realnum, 2 > H2_X_Hmin_back
Definition: h2_priv.h:658
diatomics::rate_grain_op_conserve
double rate_grain_op_conserve
Definition: h2_priv.h:273
diatomics::H2_X_source
valarray< realnum > H2_X_source
Definition: h2_priv.h:674
diatomics::H2_ReadDissocEnergies
void H2_ReadDissocEnergies(void)
Definition: mole_h2_io.cpp:829
diatomics::mole_H2_LTE
void mole_H2_LTE(void)
Definition: mole_h2_etc.cpp:228
diatomics::H2_PrtDepartCoef
void H2_PrtDepartCoef(void)
Definition: mole_h2_io.cpp:362
diatomics::ENERGY_H2_STAR
const double ENERGY_H2_STAR
Definition: h2_priv.h:585
diatomics::Cont_Dissoc_Rate_H2s
double Cont_Dissoc_Rate_H2s
Definition: h2_priv.h:277
diatomics::GetXColden
realnum GetXColden(long iVib, long iRot)
Definition: mole_h2.cpp:2359
diatomics::para_density
double para_density
Definition: h2_priv.h:321
diatomics::H2_CollidRateEvalOne
realnum H2_CollidRateEvalOne(long iVibHi, long iRotHi, long iVibLo, long iRotLo, long ipHi, long ipLo, long nColl, double temp_K)
Definition: mole_h2_coll.cpp:102
diatomics::xSTDNoise
double xSTDNoise
Definition: h2_priv.h:391
diatomics::H2_RT_diffuse
void H2_RT_diffuse(void)
Definition: mole_h2.cpp:371
diatomics::nTRACE
int nTRACE
Definition: h2_priv.h:399
diatomics::H2_col_rate_out
multi_arr< double, 2 > H2_col_rate_out
Definition: h2_priv.h:652
diatomics::lgColl_deexec_Calc
bool lgColl_deexec_Calc
Definition: h2_priv.h:359
diatomics::Solomon_elec_decay_g
double Solomon_elec_decay_g
Definition: h2_priv.h:268
diatomics::photodissoc_BigH2_H2s
double photodissoc_BigH2_H2s
Definition: h2_priv.h:257
diatomics::HeatDexc
double HeatDexc
Definition: h2_priv.h:290
diss_level::n
long n
Definition: h2_priv.h:34
diatomics::RateCoefTable
vector< CollRateCoeffArray > RateCoefTable
Definition: h2_priv.h:623
diatomics::H2_lgOrtho
multi_arr< bool, 3 > H2_lgOrtho
Definition: h2_priv.h:643
diatomics::ortho_colden
double ortho_colden
Definition: h2_priv.h:328
diatomics::chH2ColliderLabels
char chH2ColliderLabels[N_X_COLLIDER][chN_X_COLLIDER]
Definition: h2_priv.h:591
diatomics::Read_Mol_Diss_cross_sections
void Read_Mol_Diss_cross_sections(void)
Definition: mole_dissociate.cpp:15
diatomics::nElecLevelOutput
int nElecLevelOutput
Definition: h2_priv.h:349
diatomics::H2_dissprob
multi_arr< realnum, 3 > H2_dissprob
Definition: h2_priv.h:632
diatomics::H2_DissocEnergies
double H2_DissocEnergies[N_ELEC]
Definition: h2_priv.h:609
diatomics::lgH2_H_coll_07
bool lgH2_H_coll_07
Definition: h2_priv.h:352
diatomics::nzoneAsEval
long int nzoneAsEval
Definition: h2_priv.h:646
diatomics::HeatChange
double HeatChange
Definition: h2_priv.h:293
diatomics::lgFirst
bool lgFirst
Definition: h2_priv.h:705
diatomics::nCall_this_iteration
long int nCall_this_iteration
Definition: h2_priv.h:726
diatomics::nzone_eval
long int nzone_eval
Definition: h2_priv.h:706
diatomics::Average_collH_excit
double Average_collH_excit
Definition: h2_priv.h:301
diatomics::CollRateCoeff
multi_arr< realnum, 3 > CollRateCoeff
Definition: h2_priv.h:621
diatomics::GetDissociationRate
double GetDissociationRate(const diss_tran &tran)
Definition: mole_dissociate.cpp:211
diatomics::mass_amu
realnum mass_amu
Definition: h2_priv.h:396
diss_tran::initial
diss_level initial
Definition: h2_priv.h:47
N_ELEC
const int N_ELEC
Definition: h2_priv.h:27
diatomics::H2_Cooling
void H2_Cooling(void)
Definition: mole_h2.cpp:2188
diatomics::H2_Punch_line_data
void H2_Punch_line_data(FILE *ioPUN, bool lgDoAll)
Definition: mole_h2_io.cpp:1125
diatomics::lgH2_grain_deexcitation
bool lgH2_grain_deexcitation
Definition: h2_priv.h:366
chN_X_COLLIDER
const int chN_X_COLLIDER
Definition: h2_priv.h:15
diatomics::H2_RT_OTS
void H2_RT_OTS(void)
Definition: mole_h2.cpp:2429
diatomics::H2_X_formation
multi_arr< realnum, 2 > H2_X_formation
Definition: h2_priv.h:656
diatomics::H2_DR
double H2_DR(void)
Definition: mole_h2.cpp:2423
abund
t_abund abund
Definition: abund.cpp:5
diatomics::H2_Prt_line_tau
void H2_Prt_line_tau(void)
Definition: mole_h2_io.cpp:1187
diatomics::lgH2_ORH2_ORNL
bool lgH2_ORH2_ORNL
Definition: h2_priv.h:379
diatomics::lgH2_He_ORNL
bool lgH2_He_ORNL
Definition: h2_priv.h:376
diatomics::excit
vector< double > excit
Definition: h2_priv.h:702
diatomics::CollRate_levn
double ** CollRate_levn
Definition: h2_priv.h:701
diatomics::H2_ContPoint
void H2_ContPoint(void)
Definition: mole_h2.cpp:279
diss_tran::xsections
vector< double > xsections
Definition: h2_priv.h:50
diatomics::loop_h2_oscil
long int loop_h2_oscil
Definition: h2_priv.h:387
diatomics::mole_H2_form
void mole_H2_form(void)
Definition: mole_h2_form.cpp:15
diatomics::CollRateErrFac
multi_arr< realnum, 3 > CollRateErrFac
Definition: h2_priv.h:622
diatomics::H2_CollidRateEvalAll
void H2_CollidRateEvalAll(void)
Definition: mole_h2_coll.cpp:17
diatomics::H2_to_H_limit
double H2_to_H_limit
Definition: h2_priv.h:394
diss_tran
Definition: h2_priv.h:37
diatomics::para_colden
double para_colden
Definition: h2_priv.h:329
diatomics::rel_pop_LTE_g
double rel_pop_LTE_g
Definition: h2_priv.h:282
TransitionList
Definition: transition.h:274
diatomics::H2_Prt_column_density
void H2_Prt_column_density(FILE *ioMEAN)
Definition: mole_h2_io.cpp:395
parser.h
diatomics::destroy
vector< double > destroy
Definition: h2_priv.h:702
t_coll_source::t_coll_source
t_coll_source()
Definition: h2_priv.h:56
diatomics::ipEnergySort
multi_arr< long int, 3 > ipEnergySort
Definition: h2_priv.h:690
nTE_HMINUS
const int nTE_HMINUS
Definition: h2_priv.h:24
diatomics::gs_rate
double gs_rate(void)
Definition: mole_h2_etc.cpp:111
diatomics::lgH2_ortho_para_coll_on
bool lgH2_ortho_para_coll_on
Definition: h2_priv.h:372
diatomics::Average_collH2_dissoc_s
double Average_collH2_dissoc_s
Definition: h2_priv.h:306
diatomics::Average_collH2_dissoc_g
double Average_collH2_dissoc_g
Definition: h2_priv.h:305
diatomics::HeatDiss
double HeatDiss
Definition: h2_priv.h:289
t_coll_source::filename
string filename
Definition: h2_priv.h:62
diatomics::ipRot_H2_energy_sort
valarray< long > ipRot_H2_energy_sort
Definition: h2_priv.h:689
diatomics::H2_coll_dissoc_rate_coef
multi_arr< realnum, 2 > H2_coll_dissoc_rate_coef
Definition: h2_priv.h:668
diatomics::Average_collH_deexcit
double Average_collH_deexcit
Definition: h2_priv.h:299
fixit
void fixit(void)
Definition: service.cpp:991
diatomics::H2_Accel
double H2_Accel(void)
Definition: mole_h2.cpp:297
diatomics::Solomon_dissoc_rate_s
double Solomon_dissoc_rate_s
Definition: h2_priv.h:265
molecule
Definition: mole.h:132
diatomics::lgColl_dissoc_coll
bool lgColl_dissoc_coll
Definition: h2_priv.h:362
diatomics::SolveExcitedElectronicLevels
void SolveExcitedElectronicLevels(void)
Definition: mole_h2.cpp:1941
diatomics::lgH2_NOISECOSMIC
bool lgH2_NOISECOSMIC
Definition: h2_priv.h:385
diatomics::H2_X_rate_from_elec_excited
multi_arr< double, 2 > H2_X_rate_from_elec_excited
Definition: h2_priv.h:664
diatomics::nzoneEval
long int nzoneEval
Definition: h2_priv.h:388
diatomics::H2_RadPress
double H2_RadPress(void)
Definition: mole_h2.cpp:320
diatomics::H2_CollidRateRead
void H2_CollidRateRead(long int nColl)
Definition: mole_h2_coll.cpp:166
N_X_COLLIDER
const int N_X_COLLIDER
Definition: h2_priv.h:13
diatomics::H2_stat
multi_arr< realnum, 3 > H2_stat
Definition: h2_priv.h:641
diss_tran::rate_coeff
double rate_coeff
Definition: h2_priv.h:51
diatomics::H2_ipPhoto
multi_arr< int, 2 > H2_ipPhoto
Definition: h2_priv.h:650
diatomics::H2_ParseSave
void H2_ParseSave(Parser &p, char *chHeader)
Definition: mole_h2_io.cpp:111
diatomics::iteration_evaluated
long int iteration_evaluated
Definition: h2_priv.h:707
diatomics::ipVib_H2_energy_sort
valarray< long > ipVib_H2_energy_sort
Definition: h2_priv.h:687
diatomics::lgColl_gbar
bool lgColl_gbar
Definition: h2_priv.h:356
diatomics::H2_old_populations
multi_arr< double, 3 > H2_old_populations
Definition: h2_priv.h:637
diatomics::iterationAsEval
long int iterationAsEval
Definition: h2_priv.h:646
diatomics::lgH2_radiative
multi_arr< bool, 2 > lgH2_radiative
Definition: h2_priv.h:714
diatomics::nXLevelsMatrix
long int nXLevelsMatrix
Definition: h2_priv.h:695
diatomics::frac_matrix
double frac_matrix
Definition: h2_priv.h:412
diatomics::Cont_Dissoc_Rate
multi_arr< double, 3 > Cont_Dissoc_Rate
Definition: h2_priv.h:279
diatomics::Jlowest
long int Jlowest[N_ELEC]
Definition: h2_priv.h:616
diatomics::H2_rad_rate_out
multi_arr< double, 3 > H2_rad_rate_out
Definition: h2_priv.h:634
diatomics::H2_X_hminus_formation_distribution
multi_arr< realnum, 3 > H2_X_hminus_formation_distribution
Definition: h2_priv.h:685
diatomics::lgLTE
bool lgLTE
Definition: h2_priv.h:369
diatomics::GetHeatRate
double GetHeatRate(const diss_tran &tran)
Definition: mole_dissociate.cpp:244
diatomics::set_numLevelsMatrix
void set_numLevelsMatrix(long numLevels)
Definition: mole_h2_io.cpp:1994
diatomics::create
vector< double > create
Definition: h2_priv.h:702
diatomics::nEner_H2_ground
long int nEner_H2_ground
Definition: h2_priv.h:597
diatomics::ipElec_H2_energy_sort
valarray< long > ipElec_H2_energy_sort
Definition: h2_priv.h:688
diatomics::Average_A
double Average_A
Definition: h2_priv.h:296
diatomics::ndimMalloced
long int ndimMalloced
Definition: h2_priv.h:696
diatomics::H2_den_s
double H2_den_s
Definition: h2_priv.h:682
diatomics::renorm_min
double renorm_min
Definition: h2_priv.h:337
diatomics::H2_RT_tau_inc
void H2_RT_tau_inc(void)
Definition: mole_h2.cpp:412