37 const bool KILL_CONT =
false;
92 "residual flux at head of Balmer continuum, nuFnu ");
97 if( KILL_CONT &&
LineSave.ipass > 0 )
111 "total flux above head of Balmer continuum, nuFnu ");
116 if( KILL_CONT &&
LineSave.ipass > 0 )
130 "total flux above head of Balmer continuum, nuFnu ");
135 if( KILL_CONT &&
LineSave.ipass > 0 )
165 "residual flux in Balmer continuum, nuFnu ");
170 if( KILL_CONT &&
LineSave.ipass > 0 )
189 bac = (f1 - f2)*0.250*0.250*
EN1RYD;
199 "residual flux in Balmer continuum, nuFnu ");
204 if( KILL_CONT &&
LineSave.ipass > 0 )
219 bac = (f1 - f2)*0.250*0.250*
EN1RYD;
229 "residual flux in Balmer continuum, nuFnu ");
232 "incident continuum nu*f_nu at H-beta, at illuminated face of cloud ");
235 "incident continuum nu*f_nu near Ly-alpha, at illuminated face of cloud");
249 "integrated Balmer continuum emission");
268 "Paschen continuum emission ");
276 for( nBand=0; nBand <
continuum.nContBand; ++nBand )
278 double EmergentContinuum = 0.;
279 double DiffuseEmission = 0.;
287 double EdgeCorrection = 1.;
289 EdgeCorrection =
continuum.BandEdgeCorrLow[nBand];
290 else if( i==
continuum.ipContBandHi[nBand])
291 EdgeCorrection =
continuum.BandEdgeCorrHi[nBand];
298 (
rfield.ConEmitOut[0][i-1] +
302 xIntenOut *= EdgeCorrection;
307 double xIntenIn = 0.;
308 if(
opac.E2TauAbsFace[i-1] > 0. )
309 xIntenIn = (double)
rfield.ConEmitReflec[0][i-1]/
313 xIntenIn *= EdgeCorrection;
316 EmergentContinuum +=
rfield.anu[i-1] *
321 DiffuseEmission += (
rfield.ConEmitLocal[
nzone][i-1] +
333 EmergentContinuum = 0.;
335 EmergentContinuum /= corr;
339 DiffuseEmission *=
EN1RYD;
347 lindst( EmergentContinuum ,
358 "continuum bands defined in continuum_bands.ini");
371 "net free-free cooling, ALL species, free-free heating subtracted, so nearly cancels with cooling in LTE ");
374 "net free-free heating, nearly cancels with cooling in LTE ");
377 " H brems (free-free) cooling ");
380 "total free-free heating ");
383 "He brems emission ");
386 "heavy element recombination cooling ");
389 "heavy elements (metals) brems cooling, heat not subtracted ");
392 "total brems emission - total cooling but not minus heating ");
395 "part of H brems, in x-ray beyond 0.5KeV ");
398 "electron - electron brems ");
419 for( i=0; i < long(PredCont.
size()); i++ )
421 double SourceTransmitted , Cont_nInu;
422 double SourceReflected, DiffuseOutward, DiffuseInward;
427 (*TauDummy).WLAng() = (
realnum)PredCont[i].Angstrom();
441 if(
prt.lgDiffuseInward )
443 DiffuseInward =
rfield.ConEmitReflec[0][PredCont[i].ip_C()]*renorm;
451 if(
prt.lgDiffuseOutward )
453 DiffuseOutward =
rfield.ConEmitOut[0][PredCont[i].ip_C()]*renorm*
radius.r1r0sq;
461 if(
prt.lgSourceReflected )
463 SourceReflected =
rfield.ConRefIncid[0][PredCont[i].ip_C()]*renorm;
467 SourceReflected = 0.;
471 if(
prt.lgSourceTransmitted )
473 SourceTransmitted =
rfield.flux[0][PredCont[i].ip_C()]*renorm*
radius.r1r0sq;
477 SourceTransmitted = 0.;
488 linadd((DiffuseInward+SourceReflected+DiffuseOutward+SourceTransmitted)/
radius.dVeffAper,
489 (*TauDummy).WLAng(),
"nFnu",
'i',
490 "total continuum at selected energy points " );
495 if( KILL_CONT &&
LineSave.ipass > 0 )
510 Cont_nInu =
rfield.flux[0][PredCont[i].ip_C()]*renorm*
radius.r1r0sq +
511 rfield.ConRefIncid[0][PredCont[i].ip_C()]*renorm;
518 sprt_wl( chWL , (*TauDummy).WLAng() );
519 fprintf(
ioQQQ,
"assert line luminosity \"nInu\" %s %.3f\n",
524 linadd( Cont_nInu/
radius.dVeffAper,(*TauDummy).WLAng(),
"nInu",
'i',
525 "transmitted and reflected incident continuum at selected energy points " );
529 if( KILL_CONT &&
LineSave.ipass > 0 )
542 linadd( (DiffuseInward+SourceReflected)/
radius.dVeffAper,(*TauDummy).WLAng(),
"InwT",
'i',
543 "total reflected continuum, total inward emission plus reflected (XXdiffuseXX) total continuum ");
545 if( KILL_CONT &&
LineSave.ipass > 0 )
558 linadd(SourceReflected/
radius.dVeffAper,(*TauDummy).WLAng(),
"InwC",
'i',
559 "reflected incident continuum (only incident) ");
561 if( KILL_CONT &&
LineSave.ipass > 0 )
570 linadd( 0., (
realnum)i ,
"####",
'i',
"radiative recombination continua");
575 for(
long nelem=ipISO; nelem <
LIMELM; nelem++ )
577 if( nelem < 2 ||
dense.lgElmtOn[nelem] )
580 for(
long n=0; n <
iso_sp[ipISO][nelem].numLevels_max; n++ )
584 linadd(0.,0.,
"dumy",
'i',
"radiative recombination continuum");
593 linadd( 0. , wl ,chLabel,
'i',
594 "radiative recombination continuum");
599 linadd(
iso_sp[ipISO][nelem].fb[n].RadRecCon,0,
"dumy",
'i',
600 "radiative recombination continuum");
610 for(
long nelem=
NISO; nelem <
LIMELM; nelem++ )
614 for(
long ion=0; ion < nelem-
NISO+1; ion++ )
616 if(
dense.lgElmtOn[nelem] )
620 linadd(0.,0.,
"dumy",
'i',
"radiative recombination continuum");
629 linadd( 0. , wl ,chLabel,
'i',
630 "radiative recombination continuum");
636 "radiative recombination continuum");