Changeset 2034 for branches/c08_branch/source/mole_h2_coll.cpp
- Timestamp:
- 05/10/08 09:03:02 (2 months ago)
- Files:
-
- branches/c08_branch/source/mole_h2_coll.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/c08_branch/source/mole_h2_coll.cpp
r1815 r2034 21 21 static bool **lgDefn_H2He_coll; 22 22 23 STATIC realnum H2_CollidRateEvalOne( long iVibHi, long iRotHi,long iVibLo, 24 long iRotLo, long ipHi , long ipLo , long nColl ) 23 /* compute rate coefficient for a single quenching collision */ 24 STATIC realnum H2_CollidRateEvalOne( 25 /*returns collision rate coefficient, cm-3 s-1 for quenching collision 26 * from this upper state */ 27 long iVibHi, long iRotHi,long iVibLo, 28 /* to this lower state */ 29 long iRotLo, long ipHi , long ipLo , 30 /* colliders are H, He, H2(ortho), H2(para), and H+ */ 31 long nColl ) 25 32 { 26 33 double fitted; 27 34 realnum rate; 28 double t = phycon.te/1000. + 1.;29 double t 2 = POW2(t);35 double t3Plus1 = phycon.te/1000. + 1.; 36 double t3Plus1Squared = POW2(t3Plus1); 30 37 /* these are fits to the existing collision data 31 38 * used to create g-bar rates */ … … 68 75 } 69 76 70 /* >>chng 07 apr 2, GS 71 * this is option to use g-bar g bar guess of rate coefficient for 72 * collision with He, this does not change ortho & para 73 * code had always applied g-bar, which was incorrect 74 * turn mole.lgColl_gbar on/off with atom h2 gbar on off */ 77 /* use g-bar g bar guess of rate coefficient for 78 * collision with He, this does not change ortho & para 79 * turn mole.lgColl_gbar on/off with atom h2 gbar on off */ 75 80 else if( mole.lgColl_gbar && 76 81 (H2_lgOrtho[0][iVibHi][iRotHi]-H2_lgOrtho[0][iVibLo][iRotLo]==0) ) … … 139 144 else if( CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0]!= 0 ) 140 145 { 141 /* evaluate collision rates for those with real collision data */ 146 /* these are the fits from 147 *>>refer H2 coll Le Bourlot, J., Pineau des Forets, 148 *>>refercon G., & Flower, D.R. 1999, MNRAS, 305, 802 149 * evaluate collision rates for those with real collision data */ 142 150 143 151 double r = CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][0] + 144 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1]/t +145 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][2]/t 2;152 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][1]/t3Plus1 + 153 CollRateFit[iVibHi][iRotHi][iVibLo][iRotLo][nColl][2]/t3Plus1Squared; 146 154 147 155 rate = (realnum)pow(10.,r)*mole.lgColl_deexec_Calc; … … 201 209 } 202 210 203 /*H2_CollidRateEvalAll - set H2 collision rate s */211 /*H2_CollidRateEvalAll - set H2 collision rate coefficients */ 204 212 void H2_CollidRateEvalAll( void ) 205 213 { … … 302 310 303 311 /* >>chng 02 nov 13, the Sun and Dalgarno rates diverge to + inf below this temp */ 304 /* >>chng 05 feb 09, do not return zero when t< 100 - instead, don't let T fall below 100 */312 /* >>chng 05 feb 09, do not return zero when T < 100 - instead, don't let T fall below 100 */ 305 313 double excit1; 306 314 double te_used = MAX2( 100. , phycon.te ); … … 657 665 { 658 666 659 double k, t , b2, c2, f2, t2;667 double k, t3Plus1, b2, c2, f2, t3; 660 668 661 669 DEBUG_ENTRY( "H2_He_coll()" ); … … 695 703 temp = MIN2( 1e4 , temp ); 696 704 697 t 2= temp/1e3;698 /* t = T*10^-3+ 1*/699 t = t2+1;700 b2 = H2_He_coll_fit_par[init][final][1]/(H2_He_coll_fit_par[init][final][3]*t 2+1);701 c2 = H2_He_coll_fit_par[init][final][2]/(t *t);705 t3 = temp/1e3; 706 /* t3Plus1 = T/1000 + 1*/ 707 t3Plus1 = t3+1; 708 b2 = H2_He_coll_fit_par[init][final][1]/(H2_He_coll_fit_par[init][final][3]*t3+1); 709 c2 = H2_He_coll_fit_par[init][final][2]/(t3Plus1*t3Plus1); 702 710 { 703 711 enum {DEBUG_LOC=false}; … … 707 715 init,final, 708 716 H2_He_coll_fit_par[init][final][5], 709 H2_He_coll_fit_par[init][final][6]*t 2+1,717 H2_He_coll_fit_par[init][final][6]*t3+1, 710 718 H2_He_coll_fit_par[init][final][7] 711 /*pow(H2_He_coll_fit_par[init][final][6]*t 2+1,H2_He_coll_fit_par[init][final][7])*/719 /*pow(H2_He_coll_fit_par[init][final][6]*t3+1,H2_He_coll_fit_par[init][final][7])*/ 712 720 ); 713 721 } 714 722 } 715 723 /* this is log of f2 - see whether it is within bounds */ 716 sum1 = H2_He_coll_fit_par[init][final][7] * log10( H2_He_coll_fit_par[init][final][6]*t 2+1. );724 sum1 = H2_He_coll_fit_par[init][final][7] * log10( H2_He_coll_fit_par[init][final][6]*t3+1. ); 717 725 /* this protects against overflow */ 718 726 if( fabs(sum1)< 38. ) … … 721 729 * bug in the pgcc compiler that caused h2_pdr_leiden_f1 to throw an fpe 722 730 * the changed code is equivalent */ 723 /*f2 = H2_He_coll_fit_par[init][final][5]/pow(H2_He_coll_fit_par[init][final][6]*t 2+1.,H2_He_coll_fit_par[init][final][7]);*/731 /*f2 = H2_He_coll_fit_par[init][final][5]/pow(H2_He_coll_fit_par[init][final][6]*t3+1.,H2_He_coll_fit_par[init][final][7]);*/ 724 732 f2 = H2_He_coll_fit_par[init][final][5]/pow(10. , sum1 ); 725 733 }
