00001
00002
00003
00004
00005 #include "cddefines.h"
00006 #include "opacity.h"
00007 #include "geometry.h"
00008 #include "lines_service.h"
00009 #include "prt.h"
00010 #include "rt.h"
00011
00012 void RT_line_one_tau_reset(transition * t,
00013 double WeightNew)
00014 {
00015 char chSave[11];
00016
00017 DEBUG_ENTRY( "RT_line_one_tau_reset()" );
00018
00019 if( t->ipCont <= 0 )
00020 {
00021 return;
00022 }
00023
00024
00025 if( prt.lgPrtMaser &&
00026 ( t->Emis->TauTot < -0.01 || t->Emis->TauIn < -0.01) )
00027 {
00028 strcpy( chSave, chLineLbl(t) );
00029 fprintf( ioQQQ, " Masing line:%10.10s t(in, out)=%10.2e%10.2e\n",
00030 chSave, t->Emis->TauIn, t->Emis->TauTot );
00031 }
00032
00033
00034
00035 if( iteration == 1 && (!geometry.lgStatic) )
00036 {
00037
00038
00039
00040
00041 t->Emis->TauTot = t->Emis->TauIn*rt.DoubleTau;
00042 t->Emis->TauIn = MIN2(opac.taumin,t->Emis->TauTot/2.f);
00043 }
00044 else if( geometry.lgSphere && geometry.lgStatic )
00045 {
00046
00047 if( iteration == 1 )
00048 {
00049
00050 t->Emis->TauTot = 2.f*t->Emis->TauIn;
00051 }
00052 else
00053 {
00054 t->Emis->TauTot = (realnum)(t->Emis->TauIn*WeightNew + t->Emis->TauTot*
00055 (1. - WeightNew));
00056 }
00057 t->Emis->TauIn = t->Emis->TauTot/2.f;
00058 }
00059 else
00060 {
00061
00062 if( t->Emis->TauIn > 0. && t->Emis->TauTot > 0. )
00063 {
00064
00065
00066 t->Emis->TauTot = (realnum)(t->Emis->TauTot*(1. - WeightNew) +
00067 t->Emis->TauIn*rt.DoubleTau*WeightNew);
00068 t->Emis->TauIn = MIN2(opac.taumin,t->Emis->TauTot/ 2.f);
00069 }
00070 else
00071 {
00072
00073 t->Emis->TauTot = (t->Emis->TauIn*rt.DoubleTau + t->Emis->TauTot)/2.f;
00074 t->Emis->TauIn = MIN2(opac.taumin,t->Emis->TauTot/2.f);
00075 }
00076 }
00077
00078
00079 t->Emis->Pesc = 0.5f*(1.f + 1.f/MAX2(1.f,t->Emis->TauTot));
00080
00081
00082 t->Emis->FracInwd = MIN2(1.f,1.5f-t->Emis->Pesc);
00083
00084
00085
00086
00087 t->Emis->Pdest = 0.;
00088 t->Emis->Pelec_esc = 0.;
00089
00090
00091 t->Emis->TauCon = opac.taumin;
00092
00093
00094 t->Lo->Pop = 0.;
00095
00096
00097 t->Hi->Pop = 0.;
00098
00099 t->Emis->PopOpc = 0.;
00100
00101 t->Coll.cool = 0.;
00102 t->Coll.heat = 0.;
00103
00104 t->Emis->xIntensity = 0.;
00105
00106 t->Emis->phots = 0.;
00107 return;
00108 }