30 bool lgCheck = (error != NULL);
31 vector<realnum> oldPesc, oldPdest, oldPelec_esc;
37 tr != it->end(); ++tr)
39 if ((*tr).ipCont() <= 0)
41 oldPdest.push_back((*tr).Emis().Pdest());
42 oldPesc.push_back((*tr).Emis().Pesc());
43 oldPelec_esc.push_back((*tr).Emis().Pelec_esc());
56 for(
long nelem=ipISO; nelem <
LIMELM; ++nelem )
60 long ion = nelem+1-ipISO;
75 if(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).ipCont() <= 0 )
117 enum {DEBUG_LOC=
false};
118 if( DEBUG_LOC &&
nzone>433 )
131 ipISO = 0; nelem = 0;ipLo = 0;
137 aa = log(1. + dTau ) /
SDIV(dTau);
146 long iworst=-1,cworst=-1;
153 tr != it->end(); ++tr)
155 if ((*tr).ipCont() <= 0)
160 realnum frac = abs(oldPdest[ind]-(*tr).Emis().Pdest())/
max((*tr).Emis().Pdest(),abslim);
168 frac = abs(oldPesc[ind]-(*tr).Emis().Pesc())/
max((*tr).Emis().Pesc(),abslim);
176 frac = abs(oldPelec_esc[ind]-(*tr).Emis().Pelec_esc())/
max((*tr).Emis().Pelec_esc(),abslim);
187 if (0 && bigerror > 0.0)
190 fprintf(
ioQQQ,
"dst%c %6f=>%6f esc%c %6f=>%6f eesc%c %6f=>%6f -- %s\n",
191 cworst == 1 ?
'*':
' ',oldPdest[iworst],(*trworst).Emis().Pdest(),
192 cworst == 2 ?
'*':
' ',oldPesc[iworst],(*trworst).Emis().Pesc(),
193 cworst == 3 ?
'*':
' ',oldPelec_esc[iworst],(*trworst).Emis().Pelec_esc(),
194 (*trworst).chLabel().c_str());
222 static vector<realnum> DopplerWidth(
LIMELM);
231 for( nelem=ipISO; nelem <
LIMELM; ++nelem )
246 for( ipLo=0; ipLo < ipHi; ++ipLo )
250 if(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).ipCont() < 0 )
255 fixit(
"should this use pestrk_up or pestrk?");
256 line_one(
iso_sp[ipISO][nelem].trans(ipHi,ipLo),
258 DopplerWidth[nelem]);
261 enum {DEBUG_LOC=
false};
262 if( DEBUG_LOC && nelem==1&& ipLo==0 )
267 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Pdest());
280 for( nelem=ipISO; nelem <
LIMELM; ++nelem )
303 (*tr).Emis().PopOpc() =
iso_sp[ipISO][nelem].
st[0].Pop();
304 (*(*tr).Lo()).Pop() =
305 iso_sp[ipISO][nelem].
st[ipLo].Pop();
308 line_one( *tr,
true, 0.f, DopplerWidth[nelem]);
323 (*UTALines[i].Lo()).Pop() =
dense.
xIonDense[(*UTALines[i].Hi()).nelem()-1][(*UTALines[i].Hi()).IonStg()-1];
324 (*UTALines[i].Hi()).Pop() = 0.;
325 line_one( UTALines[i],
true,0.f,
326 DopplerWidth[(*UTALines[i].Hi()).nelem()-1] );
332 for(
long ipSpecies=0; ipSpecies<
nSpecies; ipSpecies++ )
340 int ipHi = (*tr).ipHi();
343 if( (*tr).ipCont() > 0 )
345 line_one( *tr,
true, 0.f, DopplerWidth );
356 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
363 DopplerWidth[nelem] );
371 (*diatom)->H2_RTMake( line_one );
375 line_one(
HFLines[i],
true,0.f, DopplerWidth[(*
HFLines[i].Hi()).nelem()-1] );
381 nelem = (*
TauLine2[i].Hi()).nelem();
395 line_one(
TauLine2[i],
true,0.f, DopplerWidth[(*
TauLine2[i].Hi()).nelem()-1] );
void DumpLine(const TransitionProxy &t)
realnum & opacity() const
TransitionList UTALines("UTALines",&AnonStates)
multi_arr< int, 3 > ipSatelliteLines
bool lgFirstSweepThisZone
void RT_line_one_escape(const TransitionProxy &t, bool lgShield_this_zone, realnum pestrk, realnum DopplerWidth)
long int IonHigh[LIMELM+1]
realnum fine_opac_velocity_width
TransitionList HFLines("HFLines",&AnonStates)
TransitionList TauLine2("TauLine2",&AnonStates)
void RT_line_all_escape(realnum *error)
t_iso_sp iso_sp[NISO][LIMELM]
bool lgIonStoutOn[LIMELM][LIMELM+1]
double xIonDense[LIMELM][LIMELM+1]
bool lgIonChiantiOn[LIMELM][LIMELM+1]
EmissionList::reference Emis() const
multi_arr< int, 3 > ipExtraLymanLines
void(* linefunc)(const TransitionProxy &t, bool lgShield_this_zone, realnum pestrk, realnum DopplerWidth)
long int ipFineConVelShift
vector< diatomics * > diatoms
void RT_line_all(linefunc line_one)
realnum GetDopplerWidth(realnum massAMU)
vector< vector< TransitionList > > SatelliteLines
TransitionProxy trans(const long ipHi, const long ipLo)
realnum AtomicWeight[LIMELM]
vector< vector< TransitionList > > ExtraLymanLines
#define DEBUG_ENTRY(funcname)
vector< species > dBaseSpecies
int fprintf(const Output &stream, const char *format,...)
sys_float SDIV(sys_float x)
double maxWN[LIMELM][LIMELM+1]
vector< TransitionList > AllTransitions
bool lgTauGood(const TransitionProxy &t)
vector< TransitionList > dBaseTrans
vector< diatomics * >::iterator diatom_iter