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 /*CoolSili compute silicon cooling */ 00004 #include "cddefines.h" 00005 #include "taulines.h" 00006 #include "phycon.h" 00007 #include "dense.h" 00008 #include "ligbar.h" 00009 #include "lines_service.h" 00010 #include "colden.h" 00011 #include "embesq.h" 00012 #include "atoms.h" 00013 #include "sil.h" 00014 #include "cooling.h" 00015 00016 void CoolSili(void) 00017 { 00018 double cs, 00019 cs2s2p, 00020 cs2s3p, 00021 cs01, 00022 cs02, 00023 cs12, 00024 tused, 00025 temp, 00026 pump_rate; 00027 realnum 00028 p2, 00029 rate; 00030 long int i; 00031 static bool lgFirst=true; 00032 static long int *ipSi2Pump=NULL, 00033 nSi2Pump=0; 00034 00035 DEBUG_ENTRY( "CoolSili()" ); 00036 00037 /*>>refer Si I cs Hollenbach, D. & McKee, C.F. 1989, ApJ, 342, 306 */ 00038 /* >>chng 03 nov 15, add these lines */ 00039 /* the Si I 25.2 micron line */ 00040 /* rates are said to be ok over range 30 - 3000K */ 00041 tused = MAX2( 30. , phycon.te ); 00042 tused = MIN2( 3000. , phycon.te ); 00043 tused /= 100.; 00044 00045 /* derive their rate, then convert to collision strength */ 00046 rate = (realnum)(7.2e-9 * dense.eden + 00047 /* >>chng 05 jul 05, eden to cdsqte */ 00048 /*3.5e-10*pow(tused, -0.03 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/ 00049 3.5e-10*pow(tused, -0.03 )*dense.xIonDense[ipHYDROGEN][0] ); 00050 LineConvRate2CS( &TauLines[ipSi1_130m] , rate ); 00051 00052 /* the Si I 56.6 micron line */ 00053 rate = (realnum)(2.2e-8 * dense.eden + 00054 /* >>chng 05 jul 05, eden to cdsqte */ 00055 /*5.0e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/ 00056 5.0e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] ); 00057 LineConvRate2CS( &TauLines[ipSi1_68m] , rate ); 00058 00059 rate = (realnum)(7.2e-9 * dense.eden + 00060 /* >>chng 05 jul 05, eden to cdsqte */ 00061 /*1.7e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/ 00062 1.7e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] ); 00063 TauDummy.Hi->g = TauLines[ipSi1_68m].Hi->g; 00064 LineConvRate2CS( &TauDummy , rate ); 00065 /* this says that line is a dummy, not real one */ 00066 TauDummy.Hi->g = 0; 00067 00068 /* solve model atom for Si I */ 00069 atom_level3(&TauLines[ipSi1_130m],&TauLines[ipSi1_68m],&TauDummy); 00070 00071 /* Si I 2518 */ 00072 MakeCS(&TauLines[ipSii2518]); 00073 atom_level2(&TauLines[ipSii2518]); 00074 00075 /* Si I 2215 */ 00076 MakeCS(&TauLines[ipSii2215]); 00077 atom_level2(&TauLines[ipSii2215]); 00078 00079 /* Silicon II 35 micron */ 00080 /* hydrogen collision strength from 00081 * >>referold si2 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722 00082 * they give rate de-ex 6.5E-10 cm^3 s^-1, indep of temp */ 00083 /*cs += 6.5e-10/dense.cdsqte*4.*dense.xIonDense[ipHYDROGEN][0];*/ 00084 /* >> chng 05 may 21, GS, rate with hydrogen is updated from 2005, ApJ, 620,537*/ 00085 /* >>refer si2 cs Barinovs, G., van Hemert, M., Krems, R. & Dalgarno, A. 2005, ApJ, 620, 537 */ 00086 /* original data only extend up to 2000K 00087 * following is valid up to 2000K */ 00088 temp = MIN2(2e3, phycon.te); 00089 cs = 1e-10*(3.9436853+ 0.11176758*pow(temp, 0.55762129)); 00090 /* for high temperatures simply extend the power law */ 00091 if( phycon.te>2e3 ) 00092 { 00093 cs *= pow(phycon.te/2e3, 0.55762129); 00094 } 00095 /* above was rate coef, convert to cs and mult by den of colliders */ 00096 cs *= 4.*dense.xIonDense[ipHYDROGEN][0]/dense.cdsqte; 00097 00098 /* add on elec cs from 00099 *>>refer si2 cs Dufton, P.L., & Kingston, A.E. 1994, At. Data Nucl. Data Tables, 00100 *>>refercon 57, 273 */ 00101 cs += 5.77; 00102 00103 PutCS(cs,&TauLines[ipTSi35]); 00104 00105 00106 /* one time initialization if first call, and level 2 lines are on */ 00107 if( lgFirst && nWindLine ) 00108 { 00109 lgFirst = false; 00110 nSi2Pump = 0; 00111 for( i=0; i<nWindLine; ++i ) 00112 { 00113 /* don't test on nelem==ipIRON since lines on physics, not C, scale */ 00114 if( TauLine2[i].Hi->nelem ==14 && TauLine2[i].Hi->IonStg==2 ) 00115 { 00116 ++nSi2Pump; 00117 } 00118 } 00119 if( nSi2Pump<0 ) 00120 TotalInsanity(); 00121 else if( nSi2Pump > 0 ) 00122 /* create the space - can't malloc 0 bytes */ 00123 ipSi2Pump = (long *)MALLOC((unsigned)(nSi2Pump)*sizeof(long) ); 00124 nSi2Pump = 0; 00125 for( i=0; i<nWindLine; ++i ) 00126 { 00127 /* don't test on nelem==ipIRON since lines on physics, not C, scale */ 00128 if( TauLine2[i].Hi->nelem ==14 && TauLine2[i].Hi->IonStg==2 ) 00129 { 00130 # if 0 00131 DumpLine( &TauLine2[i] ); 00132 # endif 00133 ipSi2Pump[nSi2Pump] = i; 00134 ++nSi2Pump; 00135 } 00136 } 00137 } 00138 else 00139 /* level 2 lines are not enabled */ 00140 nSi2Pump = 0; 00141 00142 /* now sum pump rates */ 00143 pump_rate = 0.; 00144 for( i=0; i<nSi2Pump; ++i ) 00145 { 00146 pump_rate += TauLine2[ipSi2Pump[i]].Emis->pump; 00147 # if 0 00148 fprintf(ioQQQ,"DEBUG C %li %.3e %.3e\n", 00149 i, 00150 TauLine2[ipSi2Pump[i]].WLAng , TauLine2[ipSi2Pump[i]].pump ); 00151 # endif 00152 } 00153 /*atom_level2(&TauLines[ipTSi35]);*/ 00154 /*AtomSeqBoron compute cooling from 5-level boron sequence model atom */ 00155 /* >>refer s4 cs Tayal, S.S., 2000, ApJ 530, 1091*/ 00156 /*>>refer si2 cs Dufton, P.L., & Kingston, A.E., 1991, MNRAS, 248, 827*/ 00157 /*>>refer si2 as Dufton, P.L., Keenan, F.P., Hibbert, A., 00158 *>>rerercon Stafford, R.P., Byrne, P.B., & Agnew, D., 1991, MNRAS, 253, 474*/ 00159 AtomSeqBoron(&TauLines[ipTSi35], 00160 &TauLines[ipSi2_2334], 00161 &TauLines[ipSi2_2329], 00162 &TauLines[ipSi2_2350], 00163 &TauLines[ipSi2_2344], 00164 &TauLines[ipSi2_2336], 00165 0.534 , 4.51 , 1.67 , 6.94 , 00166 pump_rate ,"Si 2"); 00167 /*fprintf(ioQQQ,"DEBUG Si2\t%.2f\t%.5e\t%.5e\t%.5e\n", 00168 fnzone, 00169 phycon.te, 00170 TauLines[ipTSi35].cool, dense.eden);*/ 00171 for( i=0; i < 5; i++ ) 00172 { 00173 /* pops and column density for SiII atom */ 00174 colden.Si2Pops[i] = (realnum)atoms.PopLevels[i]; 00175 } 00176 00177 /* Si II 1808, permitted resonance line, 00178 * osc str from 00179 * >>refer si2 as morton et al 88 (apj sup); 00180 * all si ii collision data (following 4 lines) are from 00181 * >>refer si2 cs Dufton, P.L., & Kingston, A.E. 1991, MNRAS, 248, 827 00182 * following assumes there is typo in table 1 of dufton and kingston 00183 * and that they meant 2s 2p^2 ^2D instead of 3d */ 00184 00185 /* Si II 1814 */ 00186 PutCS(13.01,&TauLines[ipT1808]); 00187 atom_level2(&TauLines[ipT1808]); 00188 00189 /* Si II 1531 */ 00190 PutCS(3.61,&TauLines[ipT1527]); 00191 atom_level2(&TauLines[ipT1527]); 00192 00193 /* Si II 1307.7 */ 00194 PutCS(2.89,&TauLines[ipT1305]); 00195 atom_level2(&TauLines[ipT1305]); 00196 00197 /* Si II 1263.3 */ 00198 PutCS(12.25,&TauLines[ipT1260]); 00199 atom_level2(&TauLines[ipT1260]); 00200 00201 /* permitted Si III 1206.5, collision strength from 00202 * >>refer si3 cs Callaway, J. 1994, At. Data Nucl. Data Tables, 57, 9 */ 00203 cs = MIN2(7.0,1.442*phycon.te10*phycon.te03*phycon.te03/ 00204 phycon.te01); 00205 PutCS(cs,&TauLines[ipT1207]); 00206 atom_level2(&TauLines[ipT1207]); 00207 00208 /* Si III] 1895, CS= 00209 * >>refer si3 cs Dufton, P.L., & Kingston, A.E. 1989, MNRAS, 241, 209 00210 * >>refer si3 cs Dufton, P.L., & Kingston, A.E. 1994, ADNDT, 57, 273 00211 * grnd 3s^2 ^1S, upper lev 3p ^3P^o j=0,1,2 */ 00212 /* >>refer si3 as Callegari, F., & Trigueiros, A.G., 1998, ApJS, 119, 181 00213 * >>chng 00 nov 01, A about 3x larger than before */ 00214 cs = 106./(phycon.te10*phycon.te10*phycon.te10*phycon.te02); 00215 /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */ 00216 PutCS(cs,&TauLines[ipT1895]); 00217 AtomSeqBeryllium(1.8,3.6,10.4,&TauLines[ipT1895],.013); 00218 embesq.em1895 = (realnum)(atoms.PopLevels[3]*0.013*1.05e-11); 00219 00220 /* Si IV 1394, 1403, data from 00221 * >>refer si4 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103, 00222 * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143 00223 * cs from 00224 * >>refer si4 cs Dufton, P.L., & Kingston, A.E. 1987, J.Phys. B, 20, 3899 */ 00225 cs = 6.37*phycon.te10; 00226 PutCS(cs*0.667,&TauLines[ipT1394]); 00227 PutCS(cs*0.333,&TauLines[ipT1403]); 00228 PutCS(1.0,&TauDummy); 00229 atom_level3(&TauLines[ipT1403],&TauDummy,&TauLines[ipT1394]); 00230 00231 /* Si VI 1.96 micron 00232 * >>referold si6 cs Saraph, H.E. & Tully, J.A. 1994, A&AS, 107, 29 00233 * >>chng 96 jul 16 had been constant */ 00234 /*cs = MIN2(0.43,0.0448*phycon.te20/phycon.te003/phycon.te003);*/ 00235 /*cs = MAX2(0.3,cs);*/ 00236 /* >>refer si6 cs Berrington,K.A.,Saraph, H.E. & Tully, J.A. 1998, A&AS, 124, 161*/ 00237 /* >>chng 06 jul 11-Humeshkar Nemala*/ 00238 if(phycon.te< 1.43E5) 00239 { 00240 cs = (realnum)(0.0207*(phycon.te30/phycon.te04)*phycon.te0001); 00241 } 00242 else 00243 { 00244 cs = (realnum)(3.9042/((phycon.te20/phycon.te02)*phycon.te001*phycon.te0003)); 00245 } 00246 PutCS(cs,&TauLines[ipSi619]); 00247 atom_level2(&TauLines[ipSi619]); 00248 00249 /* Si VII 2148- OIII like, 00250 * >>refer si7 cs Kafatos, M., & Lynch, J.P. 1980, ApJS, 42, 611 */ 00251 sil.c2148 = 00252 atom_pop2(0.4,9.,5.,15.,6.7e4,dense.xIonDense[13][6])*9.26e-12; 00253 CoolAdd("Si 7",2148,sil.c2148); 00254 00255 /* Si VII ground term, 2.48, 6.51 microns 00256 * cs 00257 * >>refer si7 cs Butler, K., & Zeippen, C.J. 1994, A&AS, 108, 1 */ 00258 /* more recent paper, for solar case, which does not give thermal averaged 00259 * collision strengths, is 00260 * >>refer Si7 data Bhatia, A.K., & Landi, E. 2003, ApJ, 585, 587-597 */ 00263 cs = MIN2(0.217,0.0904*phycon.te05*phycon.te03/phycon.te003/ 00264 phycon.te001); 00265 PutCS(cs,&TauLines[ipTSi65]); 00266 00267 cs = MIN2(0.70,8.79e-2*phycon.te10*phycon.te10/phycon.te02); 00268 PutCS(cs,&TauLines[ipTSi25]); 00269 00270 cs = MIN2(0.20,9.751e-3*phycon.te20*phycon.te03*phycon.te03/ 00271 phycon.te003); 00272 PutCS(cs,&TauDummy); 00273 00274 atom_level3(&TauLines[ipTSi25],&TauLines[ipTSi65],&TauDummy); 00275 00276 /* Si 8 1446, 3727-like, 00277 * >>refer si8 cs Kafatos, M., & Lynch, J.P. 1980, ApJS, 42, 611 */ 00278 sil.c1446 = 00279 atom_pop2(0.4,4.,10.,1.,9.97e4,dense.xIonDense[13][7])* 00280 1.39e-11; 00281 CoolAdd("Si 8",1446,sil.c1446); 00282 00283 /* Si 9 1985, 2150 00284 * cs, As from 00285 * >>refer si9 cs Aggarwal, K.M. 1983, J.Phys. B, 16, L59 00286 * >>refer si9 as Baluja, K.L. 1985, J.Phys. B, 18, L413 */ 00287 sil.c949 = 00288 atom_pop3(9.,5.,1.,0.5913,0.0757,0.225,26.3,214.,5.16, 00289 7.62e4,7.902e4,&p2,dense.xIonDense[13][8],0.,0.,0.)*214.*2.096e-11; 00290 sil.c1815 = sil.c949*1.912*0.0516; 00291 sil.c1985 = p2*26.3*1.0e-11; 00292 CoolAdd("Si 9",949,sil.c949); 00293 CoolAdd("Si 9",1815,sil.c1815); 00294 CoolAdd("Si 9",1985,sil.c1985); 00295 00296 /* Si 9 3P fine structure lines, A= 00297 * >>refer si9 as Baluja, K.L. 1985, J.Phys. B, 18, L413 00298 * 2.583, 3.9microns 00299 * CS= 00300 * >>refer si9 cs Lennon, D.J. Burke, V.M. 1994, A&AS, 103, 273 */ 00301 cs01 = MIN2(0.98,28.51/(phycon.te10*phycon.te10*phycon.te10* 00302 phycon.te10/phycon.te03*phycon.te003*phycon.te001*phycon.te001)); 00303 00304 cs12 = MIN2(2.7,81.21/(phycon.te10*phycon.te10*phycon.te10* 00305 phycon.te10/phycon.te01/phycon.te01/phycon.te001/phycon.te001)); 00306 00307 cs02 = MIN2(0.70,19.67/(phycon.te10*phycon.te10*phycon.te10* 00308 phycon.te10/phycon.te03*phycon.te001)); 00309 00310 PutCS(cs01,&TauLines[ipTSi4]); 00311 PutCS(cs12,&TauLines[ipTSi3]); 00312 PutCS(cs02,&TauDummy); 00313 00314 atom_level3(&TauLines[ipTSi4],&TauLines[ipTSi3],&TauDummy); 00315 00316 /* 5S0 - 3P, cs from, A=guess 00317 * >>refer si9 cs Aggarwal, K.M. 1984, ApJS, 54, 1 */ 00318 sil.c691 = atom_pop2(40.6/phycon.sqrte*phycon.te10,9.,5., 00319 1e4,2.081e5,dense.xIonDense[13][8])*2.88e-11; 00320 CoolAdd("Si 9",691,sil.c691); 00321 00322 /* Si 10 606, actually three lines clumped together, ll 621.1, 611.7, 598.6 00323 * atomic data 00324 * >>refer si10 cs Saha, H.P., & Trefftz, E. 1982, A&A, 116, 224 */ 00325 /* >>chng 03 sep 27, rm expion move to simple two level with rt */ 00326 /*CoolHeavy.c606 = 00327 0.10*1.42e-16*expion(2.4e5,dense.xIonDense[13][10-1]); 00328 CoolAdd("Si10",606,CoolHeavy.c606);*/ 00329 PutCS(0.1,&TauLines[ipSi10_606]); 00330 atom_level2(&TauLines[ipSi10_606]); 00331 00332 /* Si 10 1.43m, A from 00333 * >>refer si10 as Chandra, S. 1982, SoPh, 75, 133 00334 * cs from 00335 * >>refer si10 cs Zhang, H.L., Graziani, M., Pradhan, A.K. 1994, A&A, 283, 319 */ 00336 if( phycon.te <= 40500. ) 00337 { 00338 cs = 0.190*phycon.te20/phycon.te001; 00339 } 00340 else 00341 { 00342 cs = 24.93/(phycon.te20*phycon.te03*phycon.te01*phycon.te003* 00343 phycon.te003); 00344 } 00345 PutCS(cs,&TauLines[ipSi10143]); 00346 atom_level2(&TauLines[ipSi10143]); 00347 00348 /* SI 11 582.9, 1909-LIKE, CS= 00349 * >>refer si11 cs Berrington, K.A., Burke, P.G., Dufton, P.L., Kingston, A.E. 00350 * >>refercon 1985, At. Data Nucl. Data Tables, 33, 195 00351 * A= 00352 * >>refer si11 as Muhlethaler, H.P., & Nussbaumer, H. 1976, A&A 48, 109 */ 00353 sil.c583 = 00354 atom_pop2(0.10,1.,9.,1e5,2.47e5,dense.xIonDense[13][11-1])* 00355 3.4e-11; 00356 CoolAdd("Si11",583,sil.c583); 00357 00358 /* li seq 2s2p and 2s3p, Si 12 499, 521 00359 * >>refer si12 cs Cochrane, D.M., & McWhirter, R.W.P. 1983, PhyS, 28, 25 */ 00360 ligbar(14,&TauLines[ipTSi499],&TauLines[ipTSi41],&cs2s2p,&cs2s3p); 00361 PutCS(cs2s2p,&TauLines[ipTSi499]); 00362 PutCS(cs2s2p*0.5,&TauLines[ipTSi521]); 00363 PutCS(1.0,&TauDummy); 00364 atom_level3(&TauLines[ipTSi521],&TauDummy,&TauLines[ipTSi499]); 00365 00366 PutCS(cs2s3p,&TauLines[ipTSi41]); 00367 atom_level2(&TauLines[ipTSi41]); 00368 return; 00369 }