23 long int i, nelem, ipHi, ipLo;
34 fprintf(
ioQQQ,
" lines_hydro called\n" );
42 " start H -like iso sequence ");
45 " total collisional cooling due to all hydrogen lines ");
48 " total collisional heating due to all hydrogen lines ");
51 " total collisional cooling due to all HeII lines ");
54 " total collisional heating due to all HeII lines ");
63 "collisionally excited La cooling ");
66 " collisionally de-excited La heating ");
69 " cooling due to n>2 Lyman lines ");
72 " heating due to n>2 Lyman lines ");
75 " cooling due to n>3 Balmer lines ");
78 " heating due to n>3 Balmer lines ");
81 " cooling due to higher Paschen lines ");
84 " heating due to higher Paschen lines ");
97 "Lyaa contribution from suprathermal secondaries from ground ");
103 linadd(pump,4861,
"Pump",
'r',
104 "part of Hbeta formed by continuum pumping");
107 "collision ionization cooling of hydrogen ");
110 " this is the heating due to 3-body recombination ");
113 "collision ionization cooling of He+ ");
116 " this is the heating due to 3-body recombination onto He+");
120 " Stark broadening contribution to line ");
124 " Stark broadening contribution to line ");
128 "Stark broadening contribution to line ");
132 " Stark broadening contribution to line ");
140 "Stark broadening part of line");
148 " portion of line lost due to absorp by background opacity ");
152 "Ha destroyed by background opacity");
159 "portion of line lost due to absorb by background opacity");
165 "portion of line lost due to absorb by background opacity");
170 "portion of line lost due to absorb by background opacity");
174 "Ly-alpha destroyed by overlap with FeII " );
177 " simple high-density case b intensity of Ly-alpha, no two photon ");
192 caseb =
rfield.qhtot*4.75e-13;
203 "Case B H-beta computed from Q(H) and specified covering factor");
218 "Ly-alpha from Q(H), high-dens lim, specified covering factor" );
222 for( nelem=ipISO; nelem <
LIMELM; nelem++ )
224 if(
dense.lgElmtOn[nelem] )
228 for( ipHi=1; ipHi <
iso_sp[ipISO][nelem].numLevels_max; ipHi++ )
230 for( ipLo=0; ipLo < ipHi; ipLo++ )
232 if(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Aul() <=
iso_ctrl.SmallA )
236 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().phots() =
237 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Aul()*
238 iso_sp[ipISO][nelem].st[ipHi].Pop()*
239 (
iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Pesc() +
240 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Pelec_esc() );
243 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().xIntensity() =
244 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().phots()*
245 iso_sp[ipISO][nelem].trans(ipHi,ipLo).EnergyErg();
253 for( nelem=0; nelem <
LIMELM; nelem++ )
255 if(
dense.IonHigh[nelem] == nelem + 1 )
258 for( ipHi=1; ipHi <
iso_sp[
ipH_LIKE][nelem].numLevels_max; ipHi++ )
264 index_of_nHi_P = ipHi;
266 index_of_nHi_P =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[
N_(ipHi) ][1][2];
269 for( ipLo=0; ipLo < ipHi; ipLo++ )
271 long index_of_nLo_S =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[
N_(ipLo) ][0][2];
282 if( ipHi == index_of_nHi_P && ipLo == index_of_nLo_S )
287 iso_sp[
ipH_LIKE][nelem].trans(index_of_nHi_P,index_of_nLo_S).Emis().xIntensity() +=
299 hbetab = (double)((pow(10.,-20.89 - 0.10612*
POW2(
phycon.alogte - 4.4)))/
307 lindst(hbetab, -4861 ,
"CaBo",
309 " this is old case b based on Ferland (1980) PASP ");
323 " old prediction of He II 1640, Case B at low densities");
327 em = 2.52e-20/(pow(
phycon.te,1.05881));
330 lindst(em,-4686,
"CaBo", 1,
'i',
false,
331 " old prediction of He II 4686, Case B at low densities");
337 for(nelem=0; nelem<
HS_NZ; ++nelem )
339 atmdat.lgHCaseBOK[0][nelem] =
true;
340 atmdat.lgHCaseBOK[1][nelem] =
true;
344 for( nelem=0; nelem <
LIMELM; nelem++ )
346 if(
dense.lgElmtOn[nelem] )
351 if( nelem <
HS_NZ && (nelem<2 || nelem>4) )
354 for( iCase=0; iCase<2; ++iCase )
356 char chAB[2]={
'A',
'B'};
368 double case_b_Intensity;
369 long int ipCHi , ipCLo;
381 if( case_b_Intensity<=0. )
383 atmdat.lgHCaseBOK[iCase][nelem] =
false;
384 case_b_Intensity = 0.;
387 case_b_Intensity *=
dense.xIonDense[nelem][nelem+1-ipISO]*
dense.eden;
389 if( iCase==0 && ipLo==1 )
403 chLab[3] = chAB[iCase];
411 ipCHi =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[ipCHi][1][2];
412 ipCLo =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[ipCLo][0][2];
414 else if( ipCLo == 2 )
417 ipCHi =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[ipCHi][0][2];
419 else if( ipCLo == 1 || ipCLo == 0 )
422 ipCHi =
iso_sp[
ipH_LIKE][nelem].QuantumNumbers2Index[ipCHi][1][2];
428 atmdat.WaveLengthCaseB[nelem][ipHi][ipLo] = wl;
431 " case a or case b from Hummer & Storey tables" );
442 chIonLbl(chLabel, nelem+1, nelem+1-ipISO);
448 linadd( tnu->AulTotal * tnu->E2nu *
EN1RYD * (*tnu->Pop),
450 " two photon continuum ");
452 linadd( tnu->induc_dn * tnu->E2nu *
EN1RYD * (*tnu->Pop),
454 " induced two photon emission ");
469 if(
prt.lgPrnIsoCollapsed )
472 for( ipHi=ipLo+1; ipHi < nLoop; ipHi++ )
479 if( ipHi==1 && ipLo==0 )
486 "predicted line, all processes included");
497 "predicted line, all processes included");
505 fprintf(
ioQQQ,
" lines_hydro returns\n" );