32 bool lgShield_this_zone,
48 double shield_continuum;
62 if( lgShield_this_zone && dTau > 1e-3 )
65 t.
Emis().
pump() *= log(1. + dTau ) / dTau;
106 double opac_line = (*t.
Lo()).Pop() * t.
Emis().
opacity()/DopplerWidth;
109 double opac_electron =
dense.
eden*6.65e-25;
112 double opacity_ratio = opac_electron/(opac_electron+opac_line);
136 fprintf(
ioQQQ,
"PROBLEM RT_line_escape called with large negative "
137 "optical depth, zone %.2f, setting lgAbort true.\n",
153 if( tau_Sobolev < 1E-5 )
159 t.
Emis().
Pesc() = ( 1.f - exp( -1.f * tau_Sobolev ) )/ tau_Sobolev;
181 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
200 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
217 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
241 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
253 fprintf(
ioQQQ,
" RT_line_escape called with impossible redistribution function %d\n",
318 const bool doDamp = dTauEffec*t.
Emis().
damp()/9. > 0.1;
319 long int nCells_core = (long)(cells_wide_1x*4.f + 1.5f);
322 if( ipLineCenter - nCells_core < 1 )
323 nCells_core = ipLineCenter - 1;
328 nCells_core =
MAX2( 1 , nCells_core );
330 long int nCells_damp;
342 nCells_damp = (long)x;
344 if( ipLineCenter-nCells_damp < 1 )
345 nCells_damp = ipLineCenter-1;
359 nCells_damp = nCells_core;
362 static vector<realnum> xprofile, profile;
363 xprofile.resize(nCells_damp);
364 profile.resize(nCells_damp);
366 for(
long int i=0; i<nCells_damp; ++i )
369 xprofile[i] = (
realnum) i/cells_wide_1x;
376 for(
long int i=1; i<nCells_damp; ++i )
393 bool lgShield_this_zone,
432 enum {DEBUG_LOC=
false};
435 static long int nTau[100];
440 for(n=0; n<100; ++n )
446 n = (long)log10( (*t.
Lo()).Pop() )+37;
452 for(n=0; n<100; ++n )
453 fprintf(
ioQQQ,
"%li\t%li\n", n , nTau[n] );
realnum xLymanPumpingScaleFactor
long int & ipFine() const
void DumpLine(const TransitionProxy &t)
realnum & opacity() const
realnum EnergyErg() const
realnum & Pelec_esc() const
STATIC void RT_line_pumping(const TransitionProxy &t, bool lgShield_this_zone, realnum DopplerWidth)
bool lgFirstSweepThisZone
double RTesc_lya(double *esin, double *dest, double abund, const TransitionProxy &t, realnum DopplerWidth)
realnum fine_opac_velocity_width
void RT_line_one(const TransitionProxy &t, bool lgShield_this_zone, realnum pestrk, realnum DopplerWidth)
realnum * OccNumbContEmitOut
double esc_CRDcore(double tau, double tout)
STATIC void RT_line_fine_opacity(const TransitionProxy &t, realnum DopplerWidth)
double esc_PRD(double tau, double tout, double damp)
t_iso_sp iso_sp[NISO][LIMELM]
realnum & dampXvel() const
EmissionList::reference Emis() const
double esc_CRDwing(double tau, double tout, double damp)
long int ipFineConVelShift
qList::iterator Hi() const
realnum * OccNumbIncidCont
qList::iterator Lo() const
#define DEBUG_ENTRY(funcname)
STATIC void RT_line_electron_scatter(const TransitionProxy &t, realnum DopplerWidth)
double RT_DestProb(double abund, double crsec, long int ipanu, double widl, double escp, int nCore)
STATIC void RT_line_escape(const TransitionProxy &t, realnum pestrk, realnum DopplerWidth, bool lgGoodTau)
realnum & FracInwd() const
bool lgTauGood(const TransitionProxy &t)
double RT_continuum_shield_fcn(const TransitionProxy &t)
bool systemIs(const TransitionList *query) const
void VoigtH(realnum a, const realnum v[], realnum y[], int n)