/*RTMakeWind do line radiative transfer for wind geometry */ #include "cddefines.h" #include "rfield.h" #include "doppvel.h" #include "fluors.h" #include "rtescprob.h" #include "eovrlp.h" #include "taulines.h" #include "rt.h" void RTMakeWind(EmLine * t , int lgDoEsc) { float damp, velocity; # ifdef DEBUG_FUN fputs( "<+>RTMakeWind()\n", debug_fp ); # endif /* * this is the routine that computes much of the radiative transfer * physics for lines in wind case. Lines diveded into two types, * high quality (cs1=0) and lower quality g-bar lines */ /*begin sanity check, confirm pops and cs ok */ if( t->ColOvTot > 1. || t->ColOvTot < 0. ) { fprintf( ioQQQ, " RTMakeWind insane ColOvTot=%10.2e\n", t->ColOvTot ); } /*end sanity check */ /* t->nelem is atomic number of species */ /*begin sanity check */ assert( t->nelem >= 1 ); /* line width, thermal + turbulence */ velocity = DoppVel.doppler[t->nelem-1]; /* evaluate and store damping constant */ damp = t->damprel/velocity; t->damp = damp; /* use only one-sided escape probabilities * get escape probability, this gets fractions too */ if( lgDoEsc ) { t->Pesc = (float)esccom(t->TauIn,damp); /* inward fraction */ t->FracInwd = 0.5; /* continuum pumping */ if( fluors.lgFluor ) { t->pump = t->Aul*t->gHi/t->gLo*t->Pesc* rfield.occnum[t->ipCont-1]; } else { t->pump = 0.; } } /* get destruction probability */ t->Pdest = (float)(eovrlp(t->PopOpc,t->opacity,t->ipCont, velocity,t->Pesc, " K2")); # ifdef DEBUG_FUN fputs( " <->RTMakeWind()\n", debug_fp ); # endif return; }