cloudy trunk
|
00001 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and 00002 * others. For conditions of distribution and use see copyright notice in license.txt */ 00003 /*CoolCarb evaluate total cooling due to carbon */ 00004 #include "cddefines.h" 00005 #include "physconst.h" 00006 #include "embesq.h" 00007 #include "phycon.h" 00008 #include "taulines.h" 00009 #include "dense.h" 00010 #include "hmi.h" 00011 #include "h2.h" 00012 #include "mole.h" 00013 #include "ligbar.h" 00014 #include "thermal.h" 00015 #include "colden.h" 00016 #include "lines_service.h" 00017 #include "atoms.h" 00018 #include "carb.h" 00019 #include "cooling.h" 00020 00021 void CoolCarb(void) 00022 { 00023 double SaveAbun, 00024 a21, 00025 a31, 00026 a32, 00027 cs, 00028 cs01, 00029 cs02, 00030 cs12, 00031 cs13, 00032 cs23, 00033 cs2s2p, 00034 cs2s3p , 00035 ortho_frac , 00036 popup, 00037 popratio, 00038 pump_rate; 00039 00040 /* added to implement Peter van Hoof additions for new ground term 00041 * atomic collision data */ 00042 double cse01, 00043 cse12, 00044 cse02, 00045 csh01, 00046 csh12, 00047 csh02, 00048 csp01, 00049 csp12, 00050 csp02, 00051 csh201, 00052 csh212, 00053 csh202 , 00054 csh2p01, 00055 csh2p12, 00056 csh2p02, 00057 csh2o01, 00058 csh2o12, 00059 csh2o02, 00060 temp; 00061 double cs_c2_h12=-1.; 00062 realnum pciexc , 00063 sum; 00064 int i; 00065 static bool lgFirst=true; 00066 static long int *ipC2Pump=NULL, 00067 nC2Pump=0; 00068 00069 DEBUG_ENTRY( "CoolCarb()" ); 00070 00071 TransitionZero( &TauDummy ); 00072 TauDummy.Hi->g = 0.; 00073 TauDummy.Lo->g = 0.; 00074 TauDummy.Hi->IonStg = 0; 00075 TauDummy.Lo->IonStg = 0; 00076 TauDummy.Hi->nelem = 0; 00077 TauDummy.Lo->nelem = 0; 00078 TauDummy.Emis->Aul = 0.; 00079 TauDummy.EnergyErg = 0.; 00080 TauDummy.EnergyK = 0.; 00081 TauDummy.EnergyWN = 0.; 00082 00083 /* subroutine atom_level3( t10,t21,t20) 00084 * 00085 * Carbon cooling 00086 * 00087 * C I 1656, collision strength from transition prob */ 00088 /*PutCS(7.3,t1656); 00089 atom_level2(t1656);*/ 00090 PutCS(7.3, &TauLines[ipT1656] ); 00091 atom_level2(&TauLines[ipT1656]); 00092 00093 /* C I fine structure lines data originally from 00094 * >>refer c1 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722 00095 * >>chng 99 jun 01, to more recent ground term collision data 00096 * by Peter van Hoof */ 00097 00098 /* effective collision strength of C I(3P) with e 00099 * >>refer c1 cs Johnson, C.T., Burke, P.G., Kingston, A.E. 1987, JPhB, 20, 2553 00100 * these data are valid for 7.5K <= Te <= 10,000K*/ 00101 if( phycon.te<=3.0e3 ) 00102 { 00103 /* the first fit is valid for 10K <= Te <= 300K, 00104 * the second 300K <= Te <= 3000K*/ 00105 cse01 = MAX2(4.80E-06*phycon.te*phycon.te20/phycon.te03, 00106 8.24E-07*phycon.te32/phycon.te01); 00107 00108 cse12 = MAX2(7.67E-05*phycon.te/phycon.te10/phycon.te03, 00109 1.47E-06*phycon.te32*phycon.te10/phycon.te03); 00110 00111 cse02 = MAX2(4.72E-05*phycon.te70*phycon.te03, 00112 3.05E-07*phycon.te32*phycon.te10); 00113 } 00114 else 00115 { 00116 /* the first fit is valid for 300K <= Te <= 3000K, 00117 * the second up to 10,000K */ 00118 cse01 = MIN2(8.24E-07*phycon.te32/phycon.te01, 00119 0.0035*phycon.sqrte*phycon.te01); 00120 00121 cse12 = MIN2(1.47E-06*phycon.te32*phycon.te10/phycon.te03, 00122 0.0088*phycon.sqrte*phycon.te01*phycon.te005); 00123 00124 cse02 = MIN2(3.05E-07*phycon.te32*phycon.te10, 00125 0.00448*phycon.sqrte/phycon.te10*phycon.te03*phycon.te005); 00126 } 00127 00128 /* >>chng 04 nov 24, upper limit of 1000K is too low - for low Z DLA clouds we need 00129 * C^0 populations at higher temperature - these are simple power laws - extrapolate them 00130 * to 3x too high a temp */ 00131 /* rate coefficients for collisional de-excitation of C I(3P) with neutral H(2S1/2) 00132 * >>refer c1 cs Launay & Roueff 1977, A&A 56, 289 00133 * the first fit is for Te <= 100K, the second for Te >= 250K 00134 * these data are valid for 4K <= Te <= 1000K*/ 00135 csh01 = MAX2(1.61e-10,5.66e-11*phycon.te20); 00136 00137 /* these data are valid for 7K <= Te <= 1000K*/ 00138 csh12 = MAX2(1.93e-10*phycon.te05*phycon.te03, 00139 5.64e-11*phycon.te30*phycon.te02); 00140 00141 /* these data are valid for 10K <= Te <= 1000K*/ 00142 csh02 = MAX2(1.08e-10/phycon.te03, 00143 1.67e-11*phycon.te30*phycon.te02*phycon.te02); 00144 00145 /* >>chng 05 may 23, collisional de-excitations rate co-efficients (cm3s-1) of C I by proton*/ 00146 /*>>refer C1 cs Roueff, E. & Le Bourlot, J. 1990, A&A 236, 515 00147 * upward rates are given for 100 to 20,000K*/ 00148 /* csp01 starts increasing below 25 K, but csp02 and csp12 behave properly*/ 00149 if( phycon.te < 25. ) 00150 temp = 25.; 00151 else if( phycon.te >20000. ) 00152 temp = 20000.; 00153 else 00154 temp = phycon.te; 00155 csp01 = 1e-9*pow((4.3671821 - 14.39018/log(temp)),2)*(1./3.)*exp(16.4*T1CM/temp); 00156 csp12 = 1e-9*exp(3.2823932 - 60.99754*(log(temp)/temp))*(1./5.)*exp(37.1*T1CM/temp); 00157 csp02 = 1e-9/(0.033932579+ (1503.4042/pow(temp,1.5)))*(3./5.)*exp(43.5*T1CM/temp); 00158 00159 /* >>chng 05 feb 03, this logic had set H2 collisions to zero when 00160 * temperature was > 1.2e3. this is unphysical. change to use 00161 * 1200K collision rate at all higher temperatures. this is a constant 00162 * rate, and the original paper suggested that the rate was fairly 00163 * constant at higher tabulated temperatures 00164 if( phycon.te<=1.2e3 )*/ 00165 /* >>chng 04 mar 15, use explicit ortho-para densities */ 00166 ortho_frac = h2.ortho_density/SDIV(hmi.H2_total); 00167 00168 /* rate coefficients for collisional de-excitation of C I(3P) with H2(J=1,0) 00169 * >>refer c1 cs Schroeder et al. 1991, J.Phys.B 24, 2487 00170 * these data are valid for 10K <= Te <= 1200K 00171 * the first entry is contribution from ortho H2, the second para H2.*/ 00172 if( phycon.te<=30. ) 00173 { 00174 csh2p01 = MIN2(8.38E-11*phycon.te05*phycon.te01, 00175 2.12e-10/phycon.te20/phycon.te05/phycon.te01); 00176 00177 csh2o01 = MIN2(5.17E-11*phycon.te10*phycon.te05, 00178 1.07e-10/phycon.te10*phycon.te01); 00179 } 00180 else if( phycon.te<=150. ) 00181 { 00182 csh2p01 = MAX2(6.60e-11, 00183 2.12e-10/phycon.te20/phycon.te05/phycon.te01); 00184 00185 csh2o01 = MAX2(7.10e-11, 00186 1.07e-10/phycon.te10*phycon.te01); 00187 } 00188 else 00189 { 00190 /* this is high temperature branch - increasing function of T, 00191 * so hits cap set by min */ 00192 csh2p01 = MAX2(6.60e-11,3.38e-11*phycon.te10*phycon.te03); 00193 csh2p01 = MIN2(8.10e-11,csh2p01); 00194 00195 csh2o01 = MAX2(7.1e-11,3.37e-11*phycon.te10*phycon.te02*phycon.te02); 00196 csh2o01 = MIN2(8.57e-11,csh2o01); 00197 } 00198 00199 /* use computed ortho and para H2 densities to get total collision rate */ 00200 csh201 = ortho_frac*csh2o01 + (1.-ortho_frac)*csh2p01; 00201 if( phycon.te<=30. ) 00202 { 00203 csh2p12 = MIN2(1.48E-10*phycon.te05*phycon.te02, 00204 2.25e-10/phycon.te03/phycon.te03); 00205 } 00206 else if( phycon.te <= 100. ) 00207 { 00208 csh2p12 = MAX2(1.75e-10, 00209 2.25e-10/phycon.te03/phycon.te03); 00210 } 00211 else 00212 { 00213 csh2p12 = MAX2(1.75e-10,6.23e-11*phycon.te20*phycon.te01); 00214 csh2p12 = MIN2(2.61e-10,csh2p12); 00215 } 00216 00217 csh2o12 = MIN2(2.83e-10,4.46e-11*phycon.te30/phycon.te03); 00218 { 00219 /*csh212 = 0.75*csh2o12 + 0.25*csh2p12;*/ 00220 csh212 = ortho_frac*csh2o12 + (1.-ortho_frac)*csh2p12; 00221 } 00222 00223 if( phycon.te<=30 ) 00224 { 00225 csh2p02 = MIN2(8.67E-11*phycon.te02*phycon.te02, 00226 1.35e-10/phycon.te10); 00227 } 00228 else if( phycon.te<=150. ) 00229 { 00230 csh2p02 = MAX2(8.40e-11, 00231 1.35e-10/phycon.te10); 00232 } 00233 else 00234 { 00235 csh2p02 = MAX2(8.4e-11,4.04e-11*phycon.te10*phycon.te02*phycon.te02); 00236 csh2p02 = MIN2(1.04e-10,csh2p02); 00237 } 00238 00239 csh2o02 = MIN2(1.11e-10,3.16e-11*phycon.te20/phycon.te02); 00240 /*csh202 = 0.75*csh2o02 + 0.25*csh2p02;*/ 00241 csh202 = ortho_frac*csh2o02 + (1.-ortho_frac)*csh2p02; 00242 00245 /* assume CS for He^0 is the same as H^0*/ 00246 /*cs01 = cse01 + 3.*(csh01*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh201*hmi.Hmolec[ipMH2g])/dense.cdsqte; 00247 cs12 = cse12 + 5.*(csh12*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh212*hmi.Hmolec[ipMH2g])/dense.cdsqte; 00248 cs02 = cse02 + 5.*(csh02*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh202*hmi.Hmolec[ipMH2g])/dense.cdsqte;*/ 00249 cs01 = cse01 + 3.*(csh01*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp01*dense.xIonDense[ipHYDROGEN][1] + csh201*hmi.H2_total)/dense.cdsqte; 00250 cs12 = cse12 + 5.*(csh12*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp12*dense.xIonDense[ipHYDROGEN][1] + csh212*hmi.H2_total)/dense.cdsqte; 00251 cs02 = cse02 + 5.*(csh02*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp02*dense.xIonDense[ipHYDROGEN][1] + csh202*hmi.H2_total)/dense.cdsqte; 00252 00253 PutCS( cs01 , &TauLines[ipT610] ); 00254 PutCS( cs12 , &TauLines[ipT370] ); 00255 PutCS( cs02 , &TauDummy ); 00256 00257 /* ======================================================== */ 00258 /* end changes 99 Jun 01, by Peter van Hoof */ 00259 atom_level3( 00260 &TauLines[ipT610], 00261 &TauLines[ipT370], 00262 &TauDummy); 00263 00264 /* now save pops to add col den in radinc */ 00265 for( i=0; i<3; ++i) 00266 { 00267 /* >>chng 02 oct 23, bug - had been C1Colden rather than C1Pops */ 00268 colden.C1Pops[i] = (realnum)atoms.PopLevels[i]; 00269 } 00270 00271 /* C I 9850, 8727, A from 00272 * >>refer c1 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103, 00273 * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143 */ 00274 if( dense.xIonDense[ipCARBON][0] > 0. && phycon.te < 40000. ) 00275 { 00276 cs12 = 1.156e-4*phycon.te*(1.09 - 7.5e-6*phycon.te - 2.1e-10* 00277 phycon.te*phycon.te); 00278 cs13 = 2.8e-3*phycon.sqrte; 00279 cs23 = 2.764e-3*phycon.sqrte; 00280 00281 a21 = 3.26e-4*TauLines[ipT9830].Emis->Pesc; 00282 a31 = 2.73e-3; 00283 a32 = 0.528*TauLines[ipT8727].Emis->Pesc; 00285 carb.c8727 = atom_pop3(9.,5.,1.,cs12,cs13,cs23,a21,a31,a32, 00286 1.417e4,1.255e4,&pciexc,dense.xIonDense[ipCARBON][0],0.,0.,0.)*a32* 00287 2.28e-12; 00288 TauLines[ipT9830].Emis->PopOpc = dense.xIonDense[ipCARBON][0]; 00289 TauLines[ipT9830].Lo->Pop = dense.xIonDense[ipCARBON][0]; 00290 TauLines[ipT9830].Hi->Pop = 0.; 00291 TauLines[ipT9830].Coll.cs = (realnum)cs12; 00292 TauLines[ipT8727].Emis->PopOpc = (carb.c8727/(a32*2.28e-12)); 00293 TauLines[ipT8727].Lo->Pop = (carb.c8727/(a32*2.28e-12)); 00294 TauLines[ipT8727].Hi->Pop = 0.; 00295 TauLines[ipT8727].Coll.cs = (realnum)cs23; 00296 00297 carb.c9850 = pciexc*a21*2.02e-12; 00298 thermal.dCooldT += carb.c9850*(1.468e4*thermal.tsq1 + thermal.halfte); 00299 thermal.dCooldT += carb.c8727*(1.255e4*thermal.tsq1 + thermal.halfte); 00300 00301 /* C I 9850 correction for deexcitation, needed for rec line */ 00302 carb.r9850 = (realnum)(a21/(a21 + cs12/5.*COLL_CONST/phycon.sqrte*dense.eden)); 00303 } 00304 00305 else 00306 { 00307 carb.c9850 = 0.; 00308 carb.c8727 = 0.; 00309 carb.r9850 = 0.; 00310 TauLines[ipT9830].Emis->PopOpc = 0.; 00311 TauLines[ipT9830].Lo->Pop = 0.; 00312 TauLines[ipT9830].Hi->Pop = 0.; 00313 TauLines[ipT8727].Emis->PopOpc = 0.; 00314 TauLines[ipT8727].Lo->Pop = 0.; 00315 TauLines[ipT8727].Hi->Pop = 0.; 00316 } 00317 CoolAdd("C 1",8727,carb.c8727); 00318 CoolAdd("C 1",9850,carb.c9850); 00319 00320 /* one time initialization if first call, and level 2 lines are on */ 00321 if( lgFirst && nWindLine ) 00322 { 00323 lgFirst = false; 00324 nC2Pump = 0; 00325 for( i=0; i<nWindLine; ++i ) 00326 { 00327 /* don't test on nelem==ipCARBON since lines on physics, not C, scale */ 00328 if( TauLine2[i].Hi->nelem ==6 && TauLine2[i].Hi->IonStg==2 ) 00329 { 00330 ++nC2Pump; 00331 } 00332 } 00333 if( nC2Pump<0 ) 00334 TotalInsanity(); 00335 else if( nC2Pump > 0 ) 00336 /* create the space - can't malloc 0 bytes */ 00337 ipC2Pump = (long *)MALLOC((unsigned)(nC2Pump)*sizeof(long) ); 00338 nC2Pump = 0; 00339 for( i=0; i<nWindLine; ++i ) 00340 { 00341 /* don't test on nelem==ipCARBON since lines on physics, not C, scale */ 00342 if( TauLine2[i].Hi->nelem ==6 && TauLine2[i].Hi->IonStg==2 ) 00343 { 00344 # if 0 00345 DumpLine( &TauLine2[i] ); 00346 # endif 00347 ipC2Pump[nC2Pump] = i; 00348 ++nC2Pump; 00349 } 00350 } 00351 } 00352 else 00353 /* level 2 lines are not enabled */ 00354 nC2Pump = 0; 00355 00356 /* now sum pump rates */ 00357 pump_rate = 0.; 00358 for( i=0; i<nC2Pump; ++i ) 00359 { 00360 pump_rate += TauLine2[ipC2Pump[i]].Emis->pump; 00361 # if 0 00362 fprintf(ioQQQ,"DEBUG C %li %.3e %.3e\n", 00363 i, 00364 TauLine2[ipC2Pump[i]].WLAng , TauLine2[ipC2Pump[i]].pump ); 00365 # endif 00366 } 00367 00368 /* C II 158 micron emission, A= 00369 * >>refer c2 as Froese Fischer, C. 1983, J.Phys. B, 16, 157 00370 * CS From 00371 * >>refer c2 cs Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425 00372 * neutral collision data from 00373 * >>refer c2 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722 00374 * >>chng 96 aug 01, better fit to cs */ 00375 /* following is a more recent calculation but without extensive tables */ 00376 /* >>refer c2 cs Wilson, N.J., & Bell, K.L. 2002, MNRAS, 337, 1027-1034 */ 00377 /* >>chng 03 feb 24, break apart electron and neutral hydrogen for book keeping*/ 00378 /*cs = MIN2(2.20,0.403*phycon.te20/phycon.te02*phycon.te001*phycon.te001) + 00379 5.8e-10*phycon.te02/dense.cdsqte*4.*(dense.xIonDense[ipHYDROGEN][0] + 00380 hmi.Hmolec[ipMH2g]);*/ 00381 /* electron collision strength */ 00382 cse12 = MIN2(2.20,0.403*phycon.te20/phycon.te02*phycon.te001*phycon.te001); 00383 00384 /* atomic hydrogen collision strength, include H2 with same rate */ 00385 /* >>referold c2 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722 */ 00386 /*cs_c2_h12 = 5.8e-10*phycon.te02/dense.cdsqte*4.*(dense.xIonDense[ipHYDROGEN][0] + 00387 hmi.Hmolec[ipMH2g]);*/ 00388 /* >> chng 05 may 21, GS, rate with hydrogen is updated from following */ 00389 /* >>refer c2 cs Barinovs, G., van Hemert, M., Krems, R. & Dalgarno, A. 2005, ApJ, 620, 537 */ 00390 temp = MIN2(2e3, phycon.te); 00391 00392 /* evaluate the rate at the temperature set above, if temperature is above 2000 K 00393 * then it is evaluated at 2000K - first line is just rate as given in paper */ 00394 cs_c2_h12 = 1e-10*(4.4716028+ 0.69658785*pow(temp, 0.31692387)); 00395 00396 if(phycon.te > 2e3) 00397 { 00398 /* temperature is above 2000 K so extrapolate rate as a power law */ 00399 cs_c2_h12 *= pow(phycon.te/2e3, 0.31692387); 00400 } 00401 00402 /* now convert rate into equivalent cs */ 00403 cs_c2_h12 *= 4.*(dense.xIonDense[ipHYDROGEN][0] + hmi.Hmolec[ipMH2g])/dense.cdsqte; 00404 00405 /* >>chng 05 apr 10, make sure we have good current set of vars */ 00406 ASSERT( fabs(dense.eden + dense.xIonDense[ipHYDROGEN][0]*1.7e-4 * dense.HCorrFac -dense.EdenHCorr )/ 00407 dense.EdenHCorr < 1e-8 ); 00408 00409 PutCS( cse12+cs_c2_h12 ,&TauLines[ipT157]); 00410 00411 /* CII 1335 all collision strengths and A'S from 00412 * >>refer c2 cs Lennon, D.J., Dufton, P.L., Hibbert, A., Kingston, A.E. 1985, ApJ, 294, 200 00413 * >>refer c2 cs Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425 */ 00414 cs = MIN2(6.73,2.316*phycon.te10); 00415 PutCS(cs,&TauLines[ipT1335]); 00416 atom_level2(&TauLines[ipT1335]); 00417 00418 /*atom_level2(&TauLines[ipT157]);*/ 00419 /*AtomSeqBoron compute cooling from 5-level boron sequence model atom */ 00420 /* >>refer c2 cs Blum, R.D., & Pradhan, A.K., 1992, ApJS 80, 425 00421 * >>refer c2 cs Lennon, D.J., Dufton, P.L., Hibbert, A., Kingston, A.E. 1985, ApJ, 294, 200*/ 00422 /* >>refer c2 as Nahar, S.N. 2003, ADNDT, 80, 205 */ 00423 AtomSeqBoron(&TauLines[ipT157], 00424 &TauLines[ipC2_2325], 00425 &TauLines[ipC2_2324], 00426 &TauLines[ipC2_2329], 00427 &TauLines[ipC2_2328], 00428 &TauLines[ipC2_2327], 00429 0.2349 , 0.8237 , 0.8533 , 1.9818 , pump_rate , "C 2"); 00430 { 00431 /* following should be set true to print contributors */ 00432 enum {DEBUG_LOC=false}; 00433 if( DEBUG_LOC && nzone > 80 ) 00434 { 00435 fprintf(ioQQQ,"DEBUG\t%.2f\t%.3e\t%.3e\t%.2e\t%.2e\t%.2e\t%.2e\n", 00436 fnzone , 00437 phycon.te, 00438 TauLines[ipT157].Coll.cool , 00439 cse12, 00440 csh12, 00441 dense.eden, 00442 (dense.xIonDense[ipHYDROGEN][0] + hmi.Hmolec[ipMH2g])/dense.cdsqte); 00443 } 00444 } 00445 00446 sum = 0.; 00447 /* now save pops to add col den in radinc */ 00448 for( i=0; i<5; ++i) 00449 { 00450 colden.C2Pops[i] = (realnum)atoms.PopLevels[i]; 00451 sum += colden.C2Pops[i]; 00452 } 00453 ASSERT( fabs(sum-dense.xIonDense[ipCARBON][1])/SDIV(dense.xIonDense[ipCARBON][1]) < 1e-4 ); 00454 00455 /* following used for pumping - cs just made up - no real data */ 00456 PutCS(.1,&TauLines[ipT386]); 00457 atom_level2(&TauLines[ipT386]); 00458 00459 PutCS(.1,&TauLines[ipT310]); 00460 atom_level2(&TauLines[ipT310]); 00461 00462 PutCS(.1,&TauLines[ipT291]); 00463 atom_level2(&TauLines[ipT291]); 00464 00465 PutCS(.1,&TauLines[ipT280]); 00466 atom_level2(&TauLines[ipT280]); 00467 00468 PutCS(.1,&TauLines[ipT274]); 00469 atom_level2(&TauLines[ipT274]); 00470 00471 PutCS(.1,&TauLines[ipT270]); 00472 atom_level2(&TauLines[ipT270]); 00473 00474 /* C III 1909 00475 * A for 1909 itself from 00476 * >>refer c3 as Kwong, V., Fang, Z., Gibbons, T.T., Parkinson, W.H., Smith, P.L. 00477 * >>refercon 1993, ApJ, 411, 431 00478 * experimental value of 121 is larger than old NS 96, cs from 00479 * >>refer c3 cs Berrington, K.A., Burke, P.G., Dufton, P.L., Kingston, A.E. 1985, 00480 * >>refercon At. Data Nucl. Data Tables, 33, 195 00481 * AtomSeqBeryllium(CS23,CS24,CS34,tarray,A41) */ 00482 /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */ 00483 /* >>refer c2 as Nahar, S.N. 2003, ADNDT, 80, 205 */ 00484 cs = MIN2(1.1,2.67/phycon.te10); 00485 a21 = 5.149e-3; 00486 PutCS(cs,&TauLines[ipT1909]); 00487 /* C1909 = AtomSeqBeryllium(.96,.73,2.8 , T1909 ,5.19E-3 ) 00488 * A's 00489 * >>refer c3 as Fleming, J., Bell, K.L, Hibbert, A., Vaeck, N., Godefroid, M.R. 00490 * >>refercon 1996, MNRAS, 279, 1289 */ 00491 AtomSeqBeryllium(.96,.73,2.8,&TauLines[ipT1909],a21); 00492 embesq.em1908 = (realnum)(atoms.PopLevels[3]*a21*1.04e-11); 00493 /*DumpLine(&TauLines[ipT1909]);*/ 00494 00495 /* >>chng 02 mar 08, add 13C line - this is totally forbidden for 12C 00496 * and so provides a mathod of deducing 13C/12C */ 00497 /* >>refer C3 13C As Clegg, R.E.S., Storey, P.J., Walsh, J.R., & Neale, L. 00498 * >>refercon 1997, MNRAS, 284, 348 */ 00499 a21 = 6.87e-4; 00500 /* this is the correction for depopulation of the P_0 level due to A21, which is no 00501 * present in 12C */ 00502 cs = 2.8*dense.cdsqte/5.*1.667; 00503 popratio = cs/(cs + a21); 00504 embesq.em13C1910 = (realnum)(a21 * atoms.PopLevels[1]*popratio* 1.04e-11 / co.C12_C13_isotope_ratio); 00505 00506 /* CIII 1175 excited state line 00507 * following were computed by previous call to AtomSeqBeryllium */ 00508 /*popup = atoms.PopLevels[1] + atoms.PopLevels[2] + atoms.PopLevels[3];*/ 00509 popup = 0.; 00510 colden.C3Pops[0] = (realnum)atoms.PopLevels[0]; 00511 for( i=1; i<4; ++i) 00512 { 00513 popup += atoms.PopLevels[i]; 00514 colden.C3Pops[i] = (realnum)atoms.PopLevels[i]; 00515 } 00516 00517 SaveAbun = dense.xIonDense[ipCARBON][2]; 00518 dense.xIonDense[ipCARBON][2] = (realnum)popup; 00519 /* cs 00520 * >>refer c3 cs Berrington, K.A., Burke, P.G., Dufton, P.L., Kingston, A.E. 1985, 00521 * >>refercon At. Data Nucl. Data Tables, 33, 195 */ 00522 cs = MIN2(30.,4.806*phycon.te10*phycon.te05/phycon.te01/phycon.te003); 00523 PutCS(18.45,&TauLines[ipc31175]); 00524 atom_level2(&TauLines[ipc31175]); 00525 dense.xIonDense[ipCARBON][2] = (realnum)SaveAbun; 00526 00527 /* C III 977, cs from 00528 * >>refer c3 cs Berrington, K.A. 1985, J.Phys. B, 18, L395 */ 00529 cs = MIN2(7.0,1.556*phycon.te10); 00530 PutCS(cs,&TauLines[ipT977]); 00531 atom_level2(&TauLines[ipT977]); 00532 00533 /* CIV 1548, 1550 doublet 00534 * >>refer c4 cs Cochrane, D.M., & McWhirter, R.W.P. 1983, PhyS, 28, 25 */ 00535 ligbar( 00536 6, 00537 &TauLines[ipT1548], 00538 &TauLines[ipT312], 00539 &cs2s2p,&cs2s3p); 00540 PutCS(cs2s2p,&TauLines[ipT1548]); 00541 PutCS(cs2s2p*0.5,&TauLines[ipT1550]); 00542 PutCS(1.0,&TauDummy); 00543 atom_level3( 00544 &TauLines[ipT1550], 00545 &TauDummy, 00546 &TauLines[ipT1548]); 00547 00548 PutCS(cs2s3p,&TauLines[ipT312]); 00549 atom_level2(&TauLines[ipT312]); 00550 return; 00551 }