45 static double go2[5]={4.,6.,4.,4.,2.};
46 static double exo2[4]={26808.4,21.0,13637.5,1.5};
49 static double oi_cs_tsave=-1. , oi_te_tsave=-1. , oi_dcdt_tsave=-1.;
51 double rate_OH_dissoc;
56 enum{DEBUG_LOC=
false};
60 double TeTest =
phycon.TEMP_LIMIT_LOW;
61 double oi_a, oi_b, oi_c, oi_d, oi_e, oi_f;
110 double neiii_a,neiii_b,neiii_c,neiii_d,neiii_e;
112 oi_cs(oi_a, oi_b, oi_c, oi_d, oi_e, oi_f);
113 oii_cs(oii_a, oii_b, oii_c, oii_d, oii_e, oii_f, oii_g,
114 oii_h, oii_i, oii_j, oii_k);
115 oiii_cs(oiii_a, oiii_b, oiii_c, oiii_d, oiii_e, oiii_f,
116 oiii_g, oiii_h, oiii_i, oiii_j);
119 sii_cs(sii_a, sii_b, sii_c, sii_d, sii_e, sii_f, sii_g,
120 sii_h, sii_i, sii_j, sii_k);
121 siii_cs(siii_a, siii_b, siii_c, siii_d, siii_e, siii_f,
122 siii_g, siii_h, siii_i, siii_j, siii_k,siii_l);
125 neiii_cs(neiii_a,neiii_b,neiii_c,neiii_d,neiii_e);
127 for( TeTest=
phycon.TEMP_LIMIT_LOW; TeTest<
phycon.TEMP_LIMIT_HIGH;
136 double oii_aold=oii_a,
147 double oiii_aold=oiii_a,
157 double oiv_aold=oiv_a,oiv_bold=oiv_b;
158 double ov_aold=ov_a,ov_bold=ov_b;
159 double sii_aold=sii_a,
170 double siii_aold=siii_a,
182 double siv_aold=siv_a;
183 double sviii_aold=sviii_a;
184 double neiii_aold=neiii_a,
190 oi_cs(oi_a, oi_b, oi_c, oi_d, oi_e, oi_f);
191 ASSERT( fabs(oi_a-oi_aold) <= oi_a*3.*tinc);
192 ASSERT( fabs(oi_b-oi_bold) <= oi_b*3.*tinc);
193 ASSERT( fabs(oi_c-oi_cold) <= oi_c*3.*tinc);
194 ASSERT( fabs(oi_d-oi_dold) <= oi_d*3.*tinc);
195 ASSERT( fabs(oi_e-oi_eold) <= oi_e*3.*tinc);
196 ASSERT( fabs(oi_f-oi_fold) <= oi_f*3.*tinc);
197 oii_cs(oii_a, oii_b, oii_c, oii_d, oii_e, oii_f,
198 oii_g, oii_h, oii_i, oii_j, oii_k);
199 ASSERT( fabs(oii_a-oii_aold) <= oii_a*3.*tinc);
200 ASSERT( fabs(oii_b-oii_bold) <= oii_b*3.*tinc);
201 ASSERT( fabs(oii_c-oii_cold) <= oii_c*3.*tinc);
202 ASSERT( fabs(oii_d-oii_dold) <= oii_d*3.*tinc);
203 ASSERT( fabs(oii_e-oii_eold) <= oii_e*3.*tinc);
204 ASSERT( fabs(oii_f-oii_fold) <= oii_f*3.*tinc);
205 ASSERT( fabs(oii_g-oii_gold) <= oii_g*3.*tinc);
206 ASSERT( fabs(oii_h-oii_hold) <= oii_h*3.*tinc);
207 ASSERT( fabs(oii_i-oii_iold) <= oii_i*3.*tinc);
208 ASSERT( fabs(oii_j-oii_jold) <= oii_j*3.*tinc);
209 ASSERT( fabs(oii_k-oii_kold) <= oii_k*3.*tinc);
210 oiii_cs(oiii_a, oiii_b, oiii_c, oiii_d, oiii_e,
211 oiii_f, oiii_g, oiii_h, oiii_i, oiii_j);
212 ASSERT( fabs(oiii_a-oiii_aold) <= oiii_a*3.*tinc);
213 ASSERT( fabs(oiii_b-oiii_bold) <= oiii_b*3.*tinc);
214 ASSERT( fabs(oiii_c-oiii_cold) <= oiii_c*3.*tinc);
215 ASSERT( fabs(oiii_d-oiii_dold) <= oiii_d*3.*tinc);
216 ASSERT( fabs(oiii_e-oiii_eold) <= oiii_e*3.*tinc);
217 ASSERT( fabs(oiii_f-oiii_fold) <= oiii_f*3.*tinc);
218 ASSERT( fabs(oiii_g-oiii_gold) <= oiii_g*3.*tinc);
219 ASSERT( fabs(oiii_h-oiii_hold) <= oiii_h*3.*tinc);
220 ASSERT( fabs(oiii_i-oiii_iold) <= oiii_i*3.*tinc);
221 ASSERT( fabs(oiii_j-oiii_jold) <= oiii_j*3.*tinc);
223 ASSERT( fabs(oiv_a-oiv_aold) <= oiv_a*3.*tinc);
224 ASSERT( fabs(oiv_b-oiv_bold) <= oiv_b*3.*tinc);
226 ASSERT( fabs(ov_a-ov_aold) <= ov_a*3.*tinc);
227 ASSERT( fabs(ov_b-ov_bold) <= ov_b*3.*tinc);
228 sii_cs(sii_a, sii_b, sii_c, sii_d, sii_e, sii_f,
229 sii_g, sii_h, sii_i, sii_j, sii_k);
230 ASSERT( fabs(sii_a-sii_aold) <= sii_a*3.*tinc);
231 ASSERT( fabs(sii_b-sii_bold) <= sii_b*3.*tinc);
232 ASSERT( fabs(sii_c-sii_cold) <= sii_c*3.*tinc);
233 ASSERT( fabs(sii_d-sii_dold) <= sii_d*3.*tinc);
234 ASSERT( fabs(sii_e-sii_eold) <= sii_e*3.*tinc);
235 ASSERT( fabs(sii_f-sii_fold) <= sii_f*3.*tinc);
236 ASSERT( fabs(sii_g-sii_gold) <= sii_g*3.*tinc);
237 ASSERT( fabs(sii_h-sii_hold) <= sii_h*3.*tinc);
238 ASSERT( fabs(sii_i-sii_iold) <= sii_i*3.*tinc);
239 ASSERT( fabs(sii_j-sii_jold) <= sii_j*3.*tinc);
240 ASSERT( fabs(sii_k-sii_kold) <= sii_k*3.*tinc);
253 ASSERT( fabs(siii_a-siii_aold) <= siii_a*3.*tinc);
254 ASSERT( fabs(siii_b-siii_bold) <= siii_b*3.*tinc);
255 ASSERT( fabs(siii_c-siii_cold) <= siii_c*3.*tinc);
256 ASSERT( fabs(siii_d-siii_dold) <= siii_d*3.*tinc);
257 ASSERT( fabs(siii_e-siii_eold) <= siii_e*3.*tinc);
258 ASSERT( fabs(siii_f-siii_fold) <= siii_f*3.*tinc);
259 ASSERT( fabs(siii_g-siii_gold) <= siii_g*3.*tinc);
260 ASSERT( fabs(siii_h-siii_hold) <= siii_h*3.*tinc);
261 ASSERT( fabs(siii_i-siii_iold) <= siii_i*3.*tinc);
262 ASSERT( fabs(siii_j-siii_jold) <= siii_j*3.*tinc);
263 ASSERT( fabs(siii_k-siii_kold) <= siii_k*3.*tinc);
264 ASSERT( fabs(siii_l-siii_lold) <= siii_l*3.*tinc);
266 ASSERT( fabs(siv_a-siv_aold) <= siv_a*3.*tinc);
268 ASSERT( fabs(sviii_a-sviii_aold) <= sviii_a*3.*tinc);
269 neiii_cs(neiii_a, neiii_b, neiii_c, neiii_d, neiii_e);
270 ASSERT( fabs(neiii_a-neiii_aold) <= neiii_a*3.*tinc);
271 ASSERT( fabs(neiii_b-neiii_bold) <= neiii_b*3.*tinc);
272 ASSERT( fabs(neiii_c-neiii_cold) <= neiii_c*3.*tinc);
273 ASSERT( fabs(neiii_d-neiii_dold) <= neiii_d*3.*tinc);
274 ASSERT( fabs(neiii_e-neiii_eold) <= neiii_e*3.*tinc);
337 oi_othercs(csh01,cshe01,csh201,csh12,cshe12,csh212,csh02,cshe02,csh202,
338 csh2o01,csh2o02,csh2o12,csh2p01,csh2p02,csh2p12,csp01,csp02,csp12);
340 oi_cs3P23P1 = oi_cs3P23P1+csp01+3.*(csh01*
dense.xIonDense[
ipHYDROGEN][0]
343 oi_cs3P13P0 = oi_cs3P13P0+csp12+(csh12*
dense.xIonDense[
ipHYDROGEN][0] +
346 oi_cs3P23P0 = oi_cs3P23P0+csp02+(csh02*
dense.xIonDense[
ipHYDROGEN][0] +
363 a21 = a6300 + a6363 +
oxy.d6300;
369 rate_OH_dissoc =
mole.findrate(
"PHOTON,OH=>O,H");
373 CoolHeavy.c6300_frac_emit = (a6300+a6363)/(a6300+a6363+oi_cs3P1D2*
dense.cdsqte/5.);
374 CoolHeavy.c5577_frac_emit = (a32)/(a32+oi_cs1D21S0*
dense.cdsqte/3.);
377 CoolHeavy.c5577 =
atom_pop3(9.,5.,1.,oi_cs3P1D2,oi_cs3P1S0,oi_cs1D21S0,a21,7.56e-2,a32,
410 oi_dcdt_tsave = (oi_cs3P23P1-oi_cs_tsave) /
414 oi_cs_tsave = oi_cs3P23P1;
420 oi_dcdt_tsave =
MAX2( 0. , oi_dcdt_tsave);
429 enum{DEBUG_LOC=
false};
432 fprintf(
ioQQQ,
"DEBUG OI\t%.2f\tte\t%.5e\tcool\t%.5e\tcs\t%.4e\told\t%.4e\tnew\t%.4e\n",
491 double Cooling , CoolingDeriv;
492 atom_pop5(go2,exo2,oii_cs4S32D5,oii_cs4S32D3,oii_cs4S32P3,oii_cs4S32P1,
493 oii_cs2D52D3,oii_cs2D52P3,oii_cs2D52P1,oii_cs2D32P3,oii_cs2D32P1,
494 oii_cs2P32P1,a21,a31,a41,a51,a32,a42,a52,a43,a53,a54,p,
495 dense.xIonDense[
ipOXYGEN][1], &Cooling , &CoolingDeriv, 0.,0.,0.,0.);
507 thermal.dCooldT += CoolingDeriv;
512 CoolHeavy.O2_A3_tot = (p[3]*(a41+a42+a43) + p[4]*(a51+a52+a53) ) /
513 ( (p[3]*(a41+a42+a43) + p[4]*(a51+a52+a53) ) +
514 ( p[3]*(oii_cs4S32P3+oii_cs2D52P3+oii_cs2D32P3)/go2[3] +
515 p[4]*(oii_cs4S32P1+oii_cs2D52P1+oii_cs2D32P1)/go2[4]) *
521 CoolHeavy.O2_A2_tot = (p[1]*a21 + p[2]*a31 ) /
522 ( (p[1]*a21 + p[2]*a31 ) +
523 ( p[1]*oii_cs4S32D5/go2[1] + p[2]*oii_cs4S32D3/go2[2]) *
537 double oiii_cs3P25S2,
575 aeff = 0.027242 +
oxy.d5007r;
576 a21 = aeff -
oxy.d5007r;
585 oiii_cs1D21S0,a21,a31,a32,28990.,
oxy.o3ex23,&
oxy.poiii2,
615 double oiv_cs2P2D,oiv_cs2P12P3;
622 oiv_cs(oiv_cs2P2D,oiv_cs2P12P3);
636 static vector< pair<TransitionList::iterator,double> > O4Pump;
642 pair<TransitionList::iterator,double> pp(
TauLines.begin()+
ipT789, 1./6. );
643 O4Pump.push_back( pp );
657 branch_ratio = 2./3.;
659 branch_ratio = 1./2.;
661 branch_ratio = 1./6.;
664 pair<TransitionList::iterator,double> pp2(
TauLine2.begin()+i, branch_ratio );
665 O4Pump.push_back( pp2 );
671 double pump_rate = 0.;
673 for( o4p=O4Pump.begin(); o4p != O4Pump.end(); ++o4p )
676 double branch_ratio = o4p->second;
677 pump_rate += (*t).Emis().pump()*branch_ratio;
680 (*t).WLAng , (*t).Emis().pump()*branch_ratio );
694 0.1367 , 0.1560 , 1.1564 , 0.0457 , pump_rate,
"O 4");
699 double ov_cs1S01P1,ov_cs1S03P;
705 ov_cs(ov_cs1S01P1,ov_cs1S03P);