/*LineTauInc increment optical depths for all heavy element lines, zone by zone */ #include "cddefines.h" #include "doppvel.h" #include "filfac.h" #include "radius.h" #include "wind.h" #include "dtmase.h" #include "taulines.h" #include "linetauinc.h" void LineTauInc(EmLine * t ) { double dtau, vel; # ifdef DEBUG_FUN fputs( "<+>LineTauInc()\n", debug_fp ); # endif /* routine increments optical depths for static or exanding atmosphere */ vel = DoppVel.doppler[ t->nelem -1]; /* use static solution for both d-critical and static */ if( wind.windv <= 0. ) { /* static solution */ t->dTau = (float)( t->PopOpc * t->opacity / vel); dtau = t->dTau * radius.dReff; t->TauIn += (float)dtau; dtMase.dTauMase = (float)MIN2(dtMase.dTauMase,dtau); /* this will cause comment to be printed in prtComments */ if( dtMase.dTauMase < -1. ) { dtMase.lgMaserCapHit = TRUE;; } /* following stops disaster, will allow escape prob to get big and * damp out the maser */ dtau = MAX2(-1.,dtau); t->TauCon += t->dTau*(float)radius.dReff; } else { /* wind */ t->TauIn = wind.wndeff * t->PopOpc * t->opacity; t->TauCon = t->TauIn; /* save for continuum pumping array * t->t(ipLnDTau) = t->t(ipLnTauIn) / dReff * >>chng 96 jan 15 above had been place, * current nova.in crashed due to small dr * why was it as above? */ t->dTau = (float)(t->PopOpc * t->opacity * filfac.FillFac / MAX2(DoppVel.doppler[0],vel)); t->TauTot = t->TauIn; } # ifdef DEBUG_FUN fputs( " <->LineTauInc()\n", debug_fp ); # endif return; }