65 double save_he2rec_dest;
110 enum {DEBUG_LOC=
false};
113 fprintf(
ioQQQ,
"DEBUG HeII Bowen nzone %li bwnfac:%.2e bwnfac esc:%.2e ots660 %.2e\n",
150 for( nelem=ipISO; nelem <
LIMELM; nelem++ )
166 for( ipLo=0; ipLo < ipHi; ipLo++ )
171 if(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).ipCont() < 1 ||
172 iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().Pdest()<=
DEST0 )
178 iso_sp[ipISO][nelem].
st[ipHi].Pop()*
181 ASSERT(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().ots() >= 0. );
191 iso_sp[ipISO][nelem].trans(ipHi,ipLo).ipCont() );
198 enum {DEBUG_LOC=
false};
203 if( ipISO==0 && nelem==0 &&
nzone>500 )
208 fprintf(
ioQQQ,
"DEBUG hlyaots\t%.2f\tEdenTrue\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
213 iso_sp[ipISO][nelem].
st[ipHi].Pop(),
234 ASSERT( cont_phot_destroyed >= 0. );
241 enum {DEBUG_LOC=
false};
243 if( DEBUG_LOC &&
nzone > 400 && nelem==0 && n==2 )
245 long ip =
iso_sp[ipISO][nelem].
fb[n].ipIsoLevNIonCon-1;
246 fprintf(
ioQQQ,
"hotsdebugg\t%.3f\t%li\th con ots\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
249 iso_sp[ipISO][nelem].st[n].Pop(),
264 enum {DEBUG_LOC=
false};
268 fprintf(
ioQQQ,
"hotsdebugg %li \t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
294 fprintf(
ioQQQ,
" RT_OTS Pdest %.2e ots rate %.2e in otslin %.2e con opac %.2e\n",
304 for( nelem=NISO; nelem <
LIMELM; nelem++ )
309 for( ion=0; ion < nelem+1-
NISO; ion++ )
323 ots = difflya*
MAX2(0.f,1.f-esc);
341 ots = difflya*
MAX2(0.f,1.f-esc);
364 for(
long ipSpecies=0; ipSpecies<
nSpecies; ipSpecies++ )
371 int ipHi = (*tr).ipHi();
372 if (ipHi >=
dBaseSpecies[ipSpecies].numLevels_local || (*tr).ipCont() <= 0)
374 (*tr).Emis().ots() = (*(*tr).Hi()).Pop() * (*tr).Emis().Aul() * (*tr).Emis().Pdest();
383 (*diatom)->H2_RT_OTS();
420 enum {DEBUG_LOC=
false};
421 if( DEBUG_LOC && ip== 2363 )
423 fprintf(
ioQQQ,
"DEBUG ots, opc, otsr %.3e\t%.3e\t%.3e\t",
495 for(
long nelem=ipISO; nelem <
LIMELM; nelem++ )
501 for( vector<two_photon>::iterator tnu = sp->
TwoNu.begin(); tnu != sp->
TwoNu.end(); ++tnu )
504 for(
long nu=0; nu < tnu->ipTwoPhoE; nu++ )
608 static long int nInsane=0;
611 const int LIM_INSAME_PRT = 30;
633 if( nInsane < LIM_INSAME_PRT )
635 fprintf(
ioQQQ,
" PROBLEM RT_OTS_ChkSum insane SummedDif at energy %.5e error= %.2e i=%4ld\n",
639 fprintf(
ioQQQ,
" otscon otslin ConInterOut outlin are%11.4e%11.4e%11.4e%11.4e\n",
642 fprintf(
ioQQQ,
" line continuum here are %4.4s %4.4s\n",
658 if( nInsane < LIM_INSAME_PRT )
660 fprintf(
ioQQQ,
" PROBLEM RT_OTS_ChkSum %3ld, insane SummedCon at energy %.5e error=%.2e i=%ld\n",
664 fprintf(
ioQQQ,
" otscon otslin ConInterOut outlin flux are%.4e %.4e %.4e %.4e %.4e\n",
677 fprintf(
ioQQQ,
" PROBLEM RT_OTS_ChkSum too much insanity to continue.\n");
698 ASSERT( chFlag==
'l' || chFlag==
'c' || chFlag==
'b' );
712 if( chFlag ==
'c' || chFlag ==
'b' )
714 fprintf(
ioQQQ,
" DEBUG OTSCON array, anu, otscon, opac, OTS*opac limit:%.2e zone:%.2f IonConv?%c\n",
736 if( chFlag ==
'l' || chFlag ==
'b' )
738 fprintf(
ioQQQ,
"DEBUG density He %.2e He+2 %.2e O+2 %.2e\n",
741 fprintf(
ioQQQ,
" DEBUG OTSLIN array, anu, otslin, opac, OTS*opac Lab nLine limit:%.2e zone:%.2f IonConv?%c\n",
748 fprintf(
ioQQQ,
" %4ld%12.4e%12.4e%12.4e%12.4e %s %3li\n",
void RT_OTS_ChkSum(long int ipPnt)
void RT_OTS_Update(double *SumOTS)
realnum * ConOTS_local_OTS_rate
long int ipEnergyBremsThin
NORETURN void TotalInsanity(void)
STATIC void RT_OTS_AddCont(realnum ots, long int ip)
vector< string > chContLabel
long int IonHigh[LIMELM+1]
void RT_OTS_PrtRate(double weak, int chFlag)
realnum xLyaHeavy[LIMELM][LIMELM]
static int nOTS_Line_type
molezone * findspecieslocal(const char buf[])
realnum * ConOTS_local_photons
TransitionList TauLine2("TauLine2",&AnonStates)
double anu(size_t i) const
void resetCoarseTransCoef()
t_iso_sp iso_sp[NISO][LIMELM]
long int nflux_with_check
double xIonDense[LIMELM][LIMELM+1]
vector< two_photon > TwoNu
EmissionList::reference Emis() const
vector< diatomics * > diatoms
void RT_OTS_AddLine(double ots, long int ip)
vector< string > chLineLabel
TransitionProxy trans(const long ipHi, const long ipLo)
realnum gas_phase[LIMELM]
long int ipLyHeavy[LIMELM][LIMELM-1]
long int ipBalHeavy[LIMELM][LIMELM-1]
#define DEBUG_ENTRY(funcname)
vector< species > dBaseSpecies
int fprintf(const Output &stream, const char *format,...)
vector< TransitionList > dBaseTrans
void CalcTwoPhotonEmission(two_photon &tnu, bool lgDoInduced)
vector< diatomics * >::iterator diatom_iter