54 int iRotHi, iVibHi, iElecHi ,iRotLo, iVibLo, iElecLo;
78 H2Lines[0][1][6][0][0][4].ipCont,
'i',
false ,
82 H2Lines[0][1][5][0][0][3].ipCont,
'i',
false ,
86 H2Lines[0][1][4][0][0][2].ipCont,
'i',
false ,
90 H2Lines[0][1][3][0][0][1].ipCont,
'i',
false ,
94 H2Lines[0][1][2][0][0][0].ipCont,
'i',
false ,
99 H2Lines[0][1][2][0][0][2].ipCont,
'i',
false ,
103 H2Lines[0][1][1][0][0][1].ipCont,
'i',
false ,
111 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
115 long int lim_elec_lo = 0;
120 for( iElecLo=0; iElecLo<=lim_elec_lo; ++iElecLo )
125 if( iElecLo==iElecHi )
127 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
130 if( iElecLo==iElecHi && iVibHi==iVibLo )
133 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
138 PutLine(&
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo],
142 H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo] = 0.;
147 radius.
dVeff*
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->xIntensity);
172 fprintf(
ioQQQ,
" The first number on this line must be the 2 in H2\n Sorry.\n" );
176 if(
nMatch(
"COLU",chCard) )
191 if(
nMatch(
"MATR" , chCard ) )
195 sprintf( chHeader,
"#vib\trot\tcolumn density\n" );
201 sprintf( chHeader,
"#vib\trot\tEner(K)\tcolden\tcolden/stat wght\tLTE colden\tLTE colden/stat wght\n" );
204 else if(
nMatch(
"COOL",chCard) )
209 "#H2 depth\ttot cool\tTH Sol\tBig Sol\tTH pht dis\tpht dis\tTH Xcool\tXcool \n" );
212 else if(
nMatch(
"CREA",chCard) )
217 "#H2 depth\tH2_rate_create\tH2_rate_destroy\trate_h2_form_grains_used_total\tassoc_detach"
218 "\tbh2dis\tbh2h2p\tradasc\th3ph2p\th2phmh2h\tbh2h22hh2\th3phmh2hh\th3phm2h2\th32h2\teh3_h2h\th3ph2hp"
219 "\tH_CH_C_H2\tH_CHP_CP_H2\tH_CH2_CH_H2\tH_CH3P_CH2P_H2\tH_OH_O_H2\tHminus_HCOP_CO_H2\tHminus_H3OP_H2O_H2\tHminus_H3OP_OH_H2_H"
220 "\tHP_CH2_CHP_H2\tHP_SiH_SiP_H2\tH2P_CH_CHP_H2\tH2P_CH2_CH2P_H2\tH2P_CO_COP_H2\tH2P_H2O_H2OP_H2\tH2P_O2_O2P_H2"
221 "\tH2P_OH_OHP_H2\tH3P_C_CHP_H2\tH3P_CH_CH2P_H2\tH3P_CH2_CH3P_H2\tH3P_OH_H2OP_H2\tH3P_H2O_H3OP_H2\tH3P_CO_HCOP_H2"
222 "\tH3P_O_OHP_H2\tH3P_SiH_SiH2P_H2\tH3P_SiO_SiOHP_H2\tH_CH3_CH2_H2\tH_CH4P_CH3P_H2\tH_CH5P_CH4P_H2\tH2P_CH4_CH3P_H2"
223 "\tH2P_CH4_CH4P_H2\tH3P_CH3_CH4P_H2\tH3P_CH4_CH5P_H2\tHP_CH4_CH3P_H2\tHP_HNO_NOP_H2\tHP_HS_SP_H2\tH_HSP_SP_H2"
224 "\tH3P_NH_NH2P_H2\tH3P_NH2_NH3P_H2\tH3P_NH3_NH4P_H2\tH3P_CN_HCNP_H2\tH3P_NO_HNOP_H2\tH3P_S_HSP_H2\tH3P_CS_HCSP_H2"
225 "\tH3P_NO2_NOP_OH_H2\tH2P_NH_NHP_H2\tH2P_NH2_NH2P_H2\tH2P_NH3_NH3P_H2\tH2P_CN_CNP_H2\tH2P_HCN_HCNP_H2\tH2P_NO_NOP_H2"
226 "\tH3P_Cl_HClP_H2\tH3P_HCl_H2ClP_H2\tH2P_C2_C2P_H2\tHminus_NH4P_NH3_H2\tH3P_HCN_HCNHP_H2"
227 "\tdestruction/creation\tav Einstein A\n");
229 else if(
nMatch(
"DEST",chCard) )
234 "#depth\ttot H2 rate create\ttot H2 rate destroy\ttot H- backwards\tSolomon H2g\tSolomon H2s\tphotodissoc H2s\tphotodissoc H2g"
235 "\te- dissoc\trh2h2p\th2hph3p\tH0 dissoc\tCR\trheph2hpheh\theph2heh2p\thehph2h3phe\th3petc\tH2Ph3p"
236 "\th2sh2g\th2h22hh2\th2sh2sh2g2h\th2sh2sh2s2h\tH2_CHP_CH2P_H\tH2_CH2P_CH3P_H\tH2_OHP_H2OP_H\tH2_H2OP_H3OP_H\tH2_COP_HCOP_H"
237 "\tH2_OP_OHP_H\tH2_SiOP_SiOHP_H\tH2_C_CH_H\tH2_CP_CHP_H\tH2_CH_CH2_H\tH2_OH_H2O_H\tH2_O_OH_H"
238 "\th2s_ch_ch2_h\th2s_o_oh_h\th2s_oh_h2o_h\th2s_c_ch_h\th2s_cp_chp_h\tH2_CH2_CH3_H\tH2_CH3_CH4_H"
239 "\tH2_CH4P_CH5P_H\tH2s_CH2_CH3_H\tH2s_CH3_CH4_H\th2s_op_ohp_h\tH2_N_NH_H\tH2_NH_NH2_H\tH2_NH2_NH3_H\tH2_CN_HCN_H\tH2_NP_NHP_H"
240 "\tH2_NHP_N_H3P\tH2_NHP_NH2P_H\tH2_NH2P_NH3P_H\tH2_NH3P_NH4P_H\tH2_CNP_HCNP_H\tH2_SP_HSP_H\tH2_CSP_HCSP_H"
241 "\tH2_ClP_HClP_H\tH2_HClP_H2ClP_H\tH2_HCNP_HCNHP_H"
242 "\tfrac H2g\tfrac H2s\n");
245 else if(
nMatch(
"HEAT",chCard) )
250 "#H2 depth\ttot Heat\tHeat(big)\tHeat(TH85)\tDissoc(Big)\tDissoc(TH85) \n" );
253 else if(
nMatch(
"LEVE",chCard) )
258 "#H2 v\tJ\tenergy(wn)\tstat wght\tSum As" );
264 strcat( chHeader , chHoldit );
266 strcat( chHeader ,
"\n" );
269 else if(
nMatch(
"LINE",chCard) )
274 "#H2 line\tEhi\tVhi\tJhi\tElo\tVlo\tJlo\twl(mic)\twl(lab)\tlog L or I\tI/Inorm\tExcit(hi, K)\tg_u h\\nu * Aul\n" );
297 if(
nMatch(
"ELEC" , chCard ) )
299 if(
nMatch(
" ALL",chCard) )
306 else if(
nMatch(
"GROU",chCard) )
323 else if(
nMatch(
" PDR",chCard) )
327 sprintf( chHeader,
"#H2 creation, destruction. \n" );
329 else if(
nMatch(
"POPU",chCard) )
343 if(
nMatch(
"ZONE" , chCard ) )
347 sprintf( chHeader,
"#depth\torth\tpar\te=1 rel pop\te=2 rel pop\tv=0 rel pops\n" );
354 if(
nMatch(
"MATR" , chCard ) )
358 sprintf( chHeader,
"#vib\trot\tpops\n" );
364 sprintf( chHeader,
"#vib\trot\ts\tenergy(wn)\tpops/H2\told/H2\tpops/g/H2\tdep coef\tFin(Col)\tFout(col)\tRCout\tRRout\tRCin\tRRin\n" );
369 else if(
nMatch(
"RATE",chCard) )
374 "#depth\tN(H2)\tN(H2)/u(H2)\tA_V(star)\tn(Eval)"
375 "\tH2/Htot\trenorm\tfrm grn\tfrmH-\tdstTH85\tBD96\tELWERT\tBigH2\telec->H2g\telec->H2s"
376 "\tG(TH85)\tG(DB96)\tCR\tEleclife\tShield(BD96)\tShield(H2)\tBigh2/G0(spc)\ttot dest"
377 "\tHeatH2Dish_TH85\tHeatH2Dexc_TH85\tHeatH2Dish_BigH2\tHeatH2Dexc_BigH2\thtot\n" );
379 else if(
nMatch(
"SOLO",chCard) )
384 "#depth\tSol tot\tpump/dissoc\tpump/dissoc BigH2\tavH2g\tavH2s\tH2g chem/big H2\tH2s chem/big H2\tfrac H2g BigH2\tfrac H2s BigH2\teHi\tvHi\tJHi\tvLo\tJLo\tfrac\twl(A)\n" );
386 else if(
nMatch(
"SPEC",chCard) )
391 "#depth\tspecial\n" );
393 else if(
nMatch(
"TEMP",chCard) )
398 "#depth\tH2/H\tn(1/0)\tn(ortho/para)\tT(1/0)\tT(2/0)\tT(3/0)\tT(3/1)\tT(4/0)\tT(kin)\tT(21cm)\tT_sum(1/0)\tT_sum(2/0)\tT_sum(3/0)\tT_sum(3/1)\tT_sum(4/0) \n");
400 else if(
nMatch(
"THER",chCard) )
405 "#depth\tH2/H\tn(1/0)\tn(ortho/para)\tT(1/0)\tT(2/0)\tT(3/0)\tT(3/1)\tT(4/0)\tT(kin)\tT(21cm)\tT_sum(1/0)\tT_sum(2/0)\tT_sum(3/0)\tT_sum(3/1)\tT_sum(4/0) \n");
410 " There must be a second key; they are RATE, LINE, COOL, COLUMN, _PDR, SOLOmon, TEMP, and POPUlations\n" );
420 int iElecHi , iVibHi;
428 fprintf(
ioQQQ,
" H2 density ");
431 fprintf(
ioQQQ,
" orth/par");
436 fprintf(
ioQQQ,
" v0 J=0,3");
442 fprintf(
ioQQQ,
" TOTv=0,3");
447 fprintf(
ioQQQ,
"\n");
466 fprintf( ioMEAN,
" H2 total ");
469 fprintf( ioMEAN,
" H2 ortho ");
472 fprintf( ioMEAN,
" para");
476 fprintf( ioMEAN,
" v0 J=0,3");
483 fprintf( ioMEAN,
" v=0,3");
488 fprintf( ioMEAN,
"\n");
499 "H2_transprob_X.dat",
500 "H2_transprob_B.dat",
501 "H2_transprob_C_plus.dat",
502 "H2_transprob_C_minus.dat",
503 "H2_transprob_B_primed.dat",
504 "H2_transprob_D_plus.dat",
505 "H2_transprob_D_minus.dat"
509 long int i, n1, n2, n3;
510 long int iVibHi , iVibLo , iRotHi , iRotLo , iElecHi , iElecLo;
516 ioDATA =
open_data( cdDATAFILE[nelec],
"r" );
521 fprintf(
ioQQQ,
" H2_ReadTransprob could not read first line of %s\n", cdDATAFILE[nelec]);
532 if( ( n1 != 2 ) || ( n2 != 4 ) || ( n3 != 29 ) )
535 " H2_ReadTransprob: the version of %s is not the current version.\n", cdDATAFILE[nelec] );
537 " I expected to find the number 2 4 29 and got %li %li %li instead.\n" ,
539 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
547 while( chLine[0]==
'#' )
556 sscanf(chLine,
"%li\t%li\t%li\t%li\t%li\t%li\t%le",
557 &iElecHi , &iVibHi ,&iRotHi , &iElecLo , &iVibLo , &iRotLo , &Aul );
558 ASSERT( iElecHi == nelec );
575 double ener =
energy_wn[iElecHi][iVibHi][iRotHi] -
energy_wn[iElecLo][iVibLo][iRotLo];
580 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->Aul = (
realnum)Aul;
586 fprintf(
ioQQQ,
"negative energy H2 transition\t%li\t%li\t%li\t%li\t%.2e\t%.2e\n",
587 iVibHi,iVibLo,iRotHi,iRotLo,Aul,
588 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyWN);
596 fprintf(
ioQQQ,
"no\t%li\t%li\t%li\t%li\t%.2e\n",
597 iVibHi,iVibLo,iRotHi,iRotLo,Aul);
603 while( chLine[0]==
'#' )
615 void H2_Read_Cosmicray_distribution(
void)
620 long int i, n1, n2, n3, iVib , iRot;
627 ioDATA =
open_data(
"H2_CosmicRay_collision.dat",
"r" );
632 fprintf(
ioQQQ,
" H2_Read_Cosmicray_distribution could not read first line of %s\n",
"H2_Cosmic_collision.dat");
644 if( ( n1 != 1 ) || ( n2 != 21 ) || ( n3 != 3 ) )
647 " H2_Read_Cosmicray_distribution: the version of %s is not the current version.\n",
"H2_Cosmic_collision.dat" );
649 " I expected to find the number 1 21 3 and got %li %li %li instead.\n" ,
651 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
659 while( chLine[0]==
'#' )
673 sscanf(chLine,
"%li\t%li\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf",
674 &iVib ,&j_minus_ji , &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]
683 ASSERT( j_minus_ji == -2 || j_minus_ji == +2 || j_minus_ji == 0 );
687 j_minus_ji = 1 + j_minus_ji/2;
688 ASSERT( j_minus_ji>=0 && j_minus_ji<=2 );
691 for( iRot=0; iRot<
CR_J; ++iRot )
693 cr_rate[neut_frac][iVib][iRot][j_minus_ji] = (
realnum)a[iRot];
700 for( iRot=0; iRot<
CR_J; ++iRot )
702 cr_rate[neut_frac][iVib][iRot][j_minus_ji] *= (
realnum)pow(10.,(
double)r);
708 fprintf(
ioQQQ,
"cr rate\t%li\t%li", iVib , j_minus_ji );
709 for( iRot=0; iRot<
CR_J; ++iRot )
711 fprintf(
ioQQQ,
"\t%.3e", cr_rate[neut_frac][iVib][iRot][j_minus_ji] );
713 fprintf(
ioQQQ,
"\n" );
719 while( chLine[0]==
'#' )
738 "H2_energy_C_plus.dat",
739 "H2_energy_C_minus.dat",
740 "H2_energy_B_primed.dat",
741 "H2_energy_D_plus.dat",
742 "H2_energy_D_minus.dat"
746 long int i, n1, n2, n3, iVib , iRot;
752 ioDATA =
open_data( cdDATAFILE[nelec],
"r" );
757 fprintf(
ioQQQ,
" H2_ReadEnergies could not read first line of %s\n", cdDATAFILE[nelec]);
768 if( ( n1 != 2 ) || ( n2 != 4 ) || ( n3 != 29 ) )
771 " H2_ReadEnergies: the version of %s is not the current version.\n", cdDATAFILE[nelec] );
773 " I expected to find the number 2 4 29 and got %li %li %li instead.\n" ,
775 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
783 while( chLine[0]==
'#' )
792 for( iVib=0; iVib<=
h2.
nVib_hi[nelec]; ++iVib )
797 sscanf(chLine,
"%li\t%li\t%le", &n1 , &n2 , &
energy_wn[nelec][iVib][iRot] );
809 ASSERT(
energy_wn[nelec][iVib][iRot]> 0. || (nelec==0 && iVib==0 && iRot==0 ) );
816 while( chLine[0]==
'#' )
834 "H2_dissprob_C_plus.dat",
835 "H2_dissprob_C_minus.dat",
836 "H2_dissprob_B_primed.dat",
837 "H2_dissprob_D_plus.dat",
838 "H2_dissprob_D_minus.dat"
842 long int i, n1, n2, n3, iVib , iRot;
850 ioDATA =
open_data( cdDATAFILE[nelec],
"r" );
855 fprintf(
ioQQQ,
" H2_ReadDissprob could not read first line of %s\n", cdDATAFILE[nelec]);
866 if( ( n1 != 3 ) || ( n2 != 2 ) || ( n3 != 11 ) )
869 " H2_ReadDissprob: the version of %s is not the current version.\n", cdDATAFILE[nelec] );
871 " I expected to find the number 3 2 11 and got %li %li %li instead.\n" ,
873 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
881 while( chLine[0]==
'#' )
887 for( iVib=0; iVib<=
h2.
nVib_hi[nelec]; ++iVib )
893 sscanf(chLine,
"%li\t%li\t%le\t%le",
912 while( chLine[0]==
'#' )
929 long int i, n1, n2, n3, iVib , iRot;
933 # define H2HMINUS_PRT false
938 ioDATA =
open_data(
"H2_hminus_deposit.dat",
"r" );
943 fprintf(
ioQQQ,
" H2_Read_hminus_distribution could not read first line of %s\n",
"H2_hminus_deposit.dat");
955 if( ( n1 != 2 ) || ( n2 != 10 ) || ( n3 != 17 ) )
958 " H2_Read_hminus_distribution: the version of %s is not the current version.\n",
"H2_hminus_deposit.dat" );
960 " I expected to find the number 2 10 17 and got %li %li %li instead.\n" ,
962 fprintf(
ioQQQ,
"Here is the line image:\n==%s==\n", chLine );
970 while( chLine[0]==
'#' )
990 sscanf(chLine,
"%li\t%li\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf",
991 &iVib ,&iRot , &ener, &a[0],&a[1],&a[2] , &a[3],&a[4],&a[5] ,&a[6]
1002 fprintf(
ioQQQ,
"hminusss\t%li\t%li", iVib , iRot );
1011 fprintf(
ioQQQ,
"\n" );
1013 if(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
1015 while( chLine[0]==
'#' )
1017 if(
read_whole_line( chLine , (
int)
sizeof(chLine) , ioDATA ) == NULL )
1026 fprintf(
ioQQQ,
" total H- formation rate ");
1030 fprintf(
ioQQQ,
"\t%.3e" , sumrate[i]);
1032 fprintf(
ioQQQ,
"\n" );
1036 for( iVib=0; iVib<=
h2.
nVib_hi[0]; ++iVib )
1050 fprintf(
ioQQQ,
" H- distribution function ");
1051 for( iVib=0; iVib<=
h2.
nVib_hi[0]; ++iVib )
1055 fprintf(
ioQQQ,
"%li\t%li", iVib , iRot );
1060 fprintf(
ioQQQ,
"\n" );
1075 long int iElecHi , iElecLo , iVibHi , iVibLo , iRotHi , iRotLo;
1085 " H2_Punch_line_data ALL option not implemented in H2_Punch_line_data yet 1\n" );
1094 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1102 long int lim_elec_lo = 0;
1103 for( iElecLo=0; iElecLo<=lim_elec_lo; ++iElecLo )
1108 if( iElecLo==iElecHi )
1110 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
1113 if( iElecLo==iElecHi && iVibHi==iVibLo )
1116 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
1119 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1122 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Coll.cs = 0.;
1124 fprintf(ioPUN,
"%2li %2li %2li %2li %2li %2li ",
1125 iElecHi,iVibHi,iRotHi,iElecLo,iVibLo,iRotLo );
1134 fprintf( ioPUN ,
"\n");
1142 long int iElecHi , iElecLo , iVibHi , iVibLo , iRotHi , iRotLo;
1152 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1160 long int lim_elec_lo = 0;
1161 for( iElecLo=0; iElecLo<=lim_elec_lo; ++iElecLo )
1166 if( iElecLo==iElecHi )
1168 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
1171 if( iElecLo==iElecHi && iVibHi==iVibLo )
1174 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
1177 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1179 pun1Line( &
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo] , io , xLimit , index , 1.);
1195 long int iElecHi , iElecLo , iVibHi , iVibLo , iRotHi , iRotLo;
1205 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1213 long int lim_elec_lo = 0;
1214 for( iElecLo=0; iElecLo<=lim_elec_lo; ++iElecLo )
1219 if( iElecLo==iElecHi )
1221 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
1224 if( iElecLo==iElecHi && iVibHi==iVibLo )
1227 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
1230 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1232 prme(
" c",&
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo] );
1249 char chBranch[5] = {
'O',
'P',
'Q',
'R',
'S'};
1251 int ip = 2 + (iRotHi - iRotLo);
1254 fprintf(
ioQQQ,
" chMolBranch called with insane iRotHi=%li iRotLo=%li ip=%i\n",
1255 iRotHi , iRotLo , ip );
1259 return( chBranch[ip] );
1263 void H2_PunchDo( FILE* io ,
char chJOB[] ,
const char chTime[] ,
long int ipPun )
1265 long int iVibHi , iElecHi , iRotHi , iVibLo , iElecLo , iRotLo,
1267 long int iRot , iVib;
1268 long int LimVib , LimRot;
1277 if( (strcmp( chJOB ,
"H2po" ) == 0) && (strcmp(chTime,
"LAST") == 0) &&
1300 fprintf(io,
"%i\t%i\t%.3e\tortho\n",
1304 fprintf(io,
"%i\t%i\t%.3e\tpara\n",
1308 fprintf(io,
"%i\t%i\t%.3e\ttotal\n",
1314 for( iVibHi=0; iVibHi<=LimVib; ++iVibHi )
1331 fprintf(io,
"vib\\rot");
1333 for( i=0; i<=LimRot; ++i )
1335 fprintf(io,
"\t%li",i);
1339 fprintf(io,
"%li",iVibHi );
1340 for( iRotHi=
h2.
Jlowest[iElecHi]; iRotHi<=LimRot; ++iRotHi )
1342 fprintf(io,
"\t%.3e",
1350 for( iRotHi=
h2.
Jlowest[iElecHi]; iRotHi<=LimRot; ++iRotHi )
1352 fprintf(io,
"%li\t%li\t%c\t%.1f\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\n",
1388 else if( (strcmp( chJOB ,
"H2po" ) == 0) && (strcmp(chTime,
"LAST") != 0) &&
1397 fprintf(io,
"\t%.3e\t%.3e",
1420 for( iVibHi = 0; iVibHi<=LimVib; ++iVibHi )
1422 long int LimRotVib =
MIN2( LimRot ,
h2.
nRot_hi[iElecHi][iVibHi] );
1423 for( iRotHi=
h2.
Jlowest[iElecHi]; iRotHi<=LimRotVib; ++iRotHi )
1425 fprintf(io,
"\t%.3e",
1435 else if( (strcmp( chJOB ,
"H2cl" ) == 0) && (strcmp(chTime,
"LAST") == 0) )
1454 fprintf(io,
"%i\t%i\t%.3e\tortho\n",
1458 fprintf(io,
"%i\t%i\t%.3e\tpara\n",
1463 fprintf(io,
"%i\t%i\t%.3e\ttotal\n",
1469 for( iVibHi=0; iVibHi<=LimVib; ++iVibHi )
1488 fprintf(io,
"vib\\rot");
1490 for( i=0; i<=LimRot; ++i )
1492 fprintf(io,
"\t%li",i);
1496 fprintf(io,
"%li",iVibHi );
1497 for( iRotHi=
h2.
Jlowest[iElecHi]; iRotHi<=LimRot; ++iRotHi )
1499 fprintf(io,
"\t%.3e",
1507 for( iRotHi=
h2.
Jlowest[iElecHi]; iRotHi<=LimRot; ++iRotHi )
1509 fprintf(io,
"%li\t%li\t%.1f\t%.3e\t%.3e\t%.3e\t%.3e\n",
1525 else if( (strcmp(chJOB ,
"H2pd" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1529 fprintf(io,
"%.5e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
1542 else if( (strcmp(chJOB ,
"H2co" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1545 fprintf(io,
"%.5e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
1565 else if( (strcmp(chJOB ,
"H2cr" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1569 fprintf(io,
"%.5e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e",
1589 fprintf(io,
"\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e",
1649 fprintf(io,
"\t%.3e\t%.3e\n",
1654 else if( (strcmp(chJOB ,
"H2ds" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1660 fprintf(io,
"%.5e\t%.2e\t%.2e",
1671 fprintf(io,
"\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e",
1746 fprintf(io,
"\t%.4e\t%.4e",
1755 else if( (strcmp(chJOB ,
"H2le" ) == 0) && (strcmp(chTime,
"LAST") == 0) )
1768 for(
long int ipLo=0; ipLo<ipHi; ++ipLo )
1776 if( ( abs(iRotHi-iRotLo) == 2 || (iRotHi-iRotLo) == 0 ) && iVibLo <= iVibHi &&
1779 Asum +=
H2Lines[0][iVibHi][iRotHi][0][iVibLo][iRotLo].Emis->Aul*(
1780 H2Lines[0][iVibHi][iRotHi][0][iVibLo][iRotLo].Emis->Pesc +
1781 H2Lines[0][iVibHi][iRotHi][0][iVibLo][iRotLo].Emis->Pdest +
1782 H2Lines[0][iVibHi][iRotHi][0][iVibLo][iRotLo].Emis->Pelec_esc);
1787 Csum[nColl] += H2cr[nColl];
1791 fprintf(io,
"%li\t%li\t%.2f\t%li\t%.3e",
1794 (
long)
H2_stat[0][iVibHi][iRotHi],
1798 fprintf(io,
"\t%.3e",Csum[nColl]);
1803 else if( (strcmp(chJOB ,
"H2ra" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1806 double sumpop = 0. , sumlife = 0.;
1815 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1822 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1825 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->pump *
1840 "%.5e\t%.3e\t%.3e\t%.3e\t%li",
1853 "\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e",
1876 "\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e",
1883 sumlife/
SDIV( sumpop ) ,
1889 "\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
1897 else if( (strcmp(chJOB ,
"H2so" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
1902 long int jlosave[
NSOL] , ivlosave[
NSOL],
1910 fprintf(io,
"%.5e\t%.3e",
1923 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1928 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
1931 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
1934 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1936 one =
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->Pop *
1937 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->pump;
1953 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
1958 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
1961 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<=nr; ++iRotLo )
1964 if(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 )
1966 one =
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Lo->Pop *
1967 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->pump;
1970 fsave[nsave] = (
realnum)(one/sum);
1971 jlosave[nsave] = iRotLo;
1972 ivlosave[nsave] = iVibLo;
1973 jhisave[nsave] = iRotHi;
1974 ivhisave[nsave] = iVibHi;
1975 iehisave[nsave] = iElecHi;
1976 wlsave[nsave] =
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].WLAng;
2007 fprintf(io,
"\t%.3f\t%.3f\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e",
2018 for( i=0; i<nsave; ++i )
2022 fprintf(io,
"\t%li\t%li\t%li\t%li\t%li\t%.3f\t%.3f",
2023 iehisave[ip],ivhisave[ip],jhisave[ip],ivlosave[ip] , jlosave[ip] , fsave[ip] , wlsave[ip] );
2033 else if( (strcmp(chJOB ,
"H2te" ) == 0) && (strcmp(chTime,
"LAST") != 0) )
2036 double pop_ratio10,pop_ratio20,pop_ratio30,pop_ratio31,pop_ratio40;
2037 double T10,T20,T30,T31,T40;
2039 double T10_sum,T20_sum,T30_sum,T31_sum,T40_sum;
2040 double pop_ratio10_sum,pop_ratio20_sum,pop_ratio30_sum,pop_ratio31_sum,pop_ratio40_sum;
2082 pop_ratio10_sum = 0.;
2097 "%.5e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\t%.3e\n" ,
2106 T10,T20,T30,T31,T40,
2110 else if( (strcmp(chJOB ,
"H2ln" ) == 0) && (strcmp(chTime,
"LAST") == 0) )
2140 for( iVibHi=0; iVibHi<=
h2.
nVib_hi[iElecHi]; ++iVibHi )
2148 long int lim_elec_lo = 0;
2149 for( iElecLo=0; iElecLo<=lim_elec_lo; ++iElecLo )
2152 if( iElecLo==iElecHi )
2154 for( iVibLo=0; iVibLo<=nv; ++iVibLo )
2157 if( iElecLo==iElecHi && iVibHi==iVibLo )
2159 for( iRotLo=
h2.
Jlowest[iElecLo]; iRotLo<nr; ++iRotLo )
2161 if(
H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo] > thresh )
2165 double wl =
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].WLAng/1e4;
2168 fprintf(io,
"%li-%li %c(%li)",
2173 fprintf( io,
"\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld",
2174 iElecHi , iVibHi , iRotHi , iElecLo , iVibLo , iRotLo);
2176 fprintf( io,
"\t%.7f\t", wl );
2178 prt_wl( io ,
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].WLAng );
2179 fprintf( io,
"\t%.3f\t%.3e",
2181 H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo]*renorm );
2183 fprintf( io,
"\t%.3f",
energy_wn[iElecHi][iVibHi][iRotHi]*
T1CM );
2185 ASSERT(
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].ipCont > 0 );
2186 fprintf( io,
"\t%.3e",
H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Emis->Aul*
2187 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].EnergyErg *
2188 H2Lines[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo].Hi->g);
2199 else if( (strcmp(chJOB ,
"H2sp" ) == 0) )
2205 fprintf(io,
"%.4e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
2211 H2_col_rate_out_ old[iVib][iRot] ,
2212 H2_col_rate_in_ old[iVib][iRot] );
2214 fprintf(io,
"%.4e\t%.2e\t%.2e\t%.2e\t%.2e\n",
2217 H2Lines[1][1][1][0][iVib][iRot].Emis->pump,
2218 H2Lines[1][1][1][0][iVib][iRot].Emis->TauIn,
2219 H2Lines[1][1][1][0][iVib][iRot].Emis->TauCon);
2250 if( iElecHi!=0 || iElecLo!=0 )
2277 *relint =
H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo]/
2286 if(
H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo] > 0. )
2288 *absint = log10(
H2_SaveLine[iElecHi][iVibHi][iRotHi][iElecLo][iVibLo][iRotLo]) +