30 bool lgShield_this_zone,
49 lgShield_this_zone =
false;
64 if( 0 && t.
chLabel() ==
"H 1 1215.67A" )
66 "LINE PUMPING:\t label= \"%s\"\t %g\t %g\t %g\n",
107 fprintf(
ioQQQ,
"PROBLEM RT_line_escape called with large negative "
108 "optical depth, zone %.2f, setting lgAbort true.\n",
124 if( tau_Sobolev < 1E-5 )
130 t.
Emis().
Pesc() = ( 1.f - exp( -1.f * tau_Sobolev ) )/ tau_Sobolev;
136 fixit(
"is this correct?");
145 double OpacityEffective;
161 double exprate, sigma;
177 fixit(
"is this correct?");
193 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
212 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
229 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
253 if( pestrk > 0.f && t.
Emis().
Pesc() < 1.f )
265 fprintf(
ioQQQ,
" RT_line_escape called with impossible redistribution function %d\n",
320 const bool doDamp = dTauEffec*t.
Emis().
damp()/9. > 0.1;
322 long int nCells_damp;
335 nCells_damp = long(x);
341 nCells_damp = max_cells;
347 nCells_damp = long(cells_wide_1x*4.f + 1.5f);
351 nCells_damp =
max( 1, nCells_damp );
353 static vector<realnum> xprofile, profile;
354 xprofile.resize(nCells_damp);
355 profile.resize(nCells_damp);
357 realnum dcell = 1.f/cells_wide_1x;
358 for(
long int i=0; i < nCells_damp; ++i )
361 xprofile[i] = i*dcell;
367 long ilo =
max(ipLineCenter-nCells_damp+1,0), ihi =
min(ipLineCenter+nCells_damp,
rfield.
nfine);
368 for(
long i=ilo; i < ipLineCenter; ++i )
372 for(
long i=ipLineCenter; i < ihi; ++i )
390 bool lgShield_this_zone,
476 enum {DEBUG_LOC=
false};
479 static long int nTau[100];
484 for(n=0; n<100; ++n )
490 n = (long)log10( (*t.
Lo()).Pop() )+37;
496 for(n=0; n<100; ++n )
realnum xLymanPumpingScaleFactor
long int & ipFine() const
void DumpLine(const TransitionProxy &t)
realnum & opacity() const
realnum EnergyErg() const
realnum & Pelec_esc() const
double esc_CRDcore(double tau_in, double tau_out)
double esc_CRDwing(double tau_in, double tau_out, double damp)
STATIC void RT_line_pumping(const TransitionProxy &t, bool lgShield_this_zone, realnum DopplerWidth)
bool lgFirstSweepThisZone
void RT_line_one_escape(const TransitionProxy &t, bool lgShield_this_zone, realnum pestrk, realnum DopplerWidth)
double RT_EscLVG(double tau, double sigma)
realnum fine_opac_velocity_width
realnum * OccNumbContEmitOut
STATIC void RT_line_fine_opacity(const TransitionProxy &t, realnum DopplerWidth)
t_iso_sp iso_sp[NISO][LIMELM]
void RT_DestProb(const TransitionProxy &t, double DopplerWidth, const DestType &nCore)
double & VoigtLineCen() const
realnum & dampXvel() const
EmissionList::reference Emis() const
long int ipFineConVelShift
qList::iterator Hi() const
sys_float safe_div(sys_float x, sys_float y, sys_float res_0by0)
realnum * OccNumbIncidCont
double RT_continuum_shield_fcn(const TransitionProxy &t, bool lgShieldThisZone, double dTau)
qList::iterator Lo() const
#define DEBUG_ENTRY(funcname)
int fprintf(const Output &stream, const char *format,...)
realnum GetHubbleFactor(realnum z)
double RTesc_lya(double *esin, double *dest, double abund, const TransitionProxy &t, realnum DopplerWidth)
double esc_PRD(double tau, double tau_out, double damp)
STATIC void RT_line_escape(const TransitionProxy &t, realnum pestrk, realnum DopplerWidth, bool lgGoodTau)
realnum & FracInwd() const
bool lgTauGood(const TransitionProxy &t)
void RT_line_one_fine(const TransitionProxy &t, bool lgShield_this_zone, realnum pestrk, realnum DopplerWidth)
bool systemIs(const TransitionList *query) const
void VoigtH(realnum a, const realnum v[], realnum y[], int n)