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 /*CoolMagn compute magnesium cooling */ 00004 #include "cddefines.h" 00005 #include "coolheavy.h" 00006 #include "taulines.h" 00007 #include "phycon.h" 00008 #include "dense.h" 00009 #include "ligbar.h" 00010 #include "lines_service.h" 00011 #include "atoms.h" 00012 #include "cooling.h" 00013 00014 void CoolMagn(void) 00015 { 00016 realnum cs, 00017 csdum, 00018 csoi; 00019 double cs2s2p, 00020 cs2s3p; 00021 00022 DEBUG_ENTRY( "CoolMagn()" ); 00023 00024 /* Mg I 2853 00025 * fit to Dima's integration of 00026 * >>refer mg1 cs Leep, D., & Gallagher, A. 1976, Phys Rev A, 13, 148 */ 00027 cs = (realnum)(5.21e-4*phycon.te/phycon.te10); 00028 PutCS(cs,&TauLines[ipMgI2853]); 00029 atom_level2(&TauLines[ipMgI2853]); 00030 00031 /* Mg I 2026, */ 00032 MakeCS(&TauLines[ipMgI2026]); 00033 atom_level2(&TauLines[ipMgI2026]); 00034 00035 /* Mg 1 4571, data from Mendoza 00036 * >>refer mg1 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103, 00037 * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143 00038 * cs set to O I */ 00039 csoi = (realnum)(2.68e-5*phycon.te*(1. + 1.67e-6*phycon.te - 2.95e-10*phycon.te* 00040 phycon.te)); 00041 csoi = (realnum)MAX2(0.1,csoi); 00042 PutCS(csoi/9.,&TauLines[ipT4561]); 00043 atom_level2(&TauLines[ipT4561]); 00044 00045 /* Mg II 2798 00046 * cs from 00047 * >>refer mg2 cs Sigut, A., & Pradhan, A.K., 1994, J Phys B sub 00048 * refer not publ as of '97, cs agrees fairly well with Harrington et al. 00049 * previous reference (~'82) */ 00050 cs2s2p = 4.50*phycon.te10; 00051 PutCS(cs2s2p,&TauLines[ipT2796]); 00052 PutCS(cs2s2p*0.5,&TauLines[ipT2804]); 00053 PutCS(1.0,&TauDummy); 00054 atom_level3(&TauLines[ipT2804],&TauDummy,&TauLines[ipT2796]); 00055 /* call PutCS( cs , t2800 ) 00056 * call atom_level2( t2800 ) 00057 * 00058 * following used in MAGNES for photo destruction rate */ 00059 if( atoms.PopLevels[0] > 0. ) 00060 { 00061 atoms.popmg2 = (realnum)((atoms.PopLevels[2] + atoms.PopLevels[1])/ 00062 atoms.PopLevels[0]); 00063 } 00064 else 00065 { 00066 atoms.popmg2 = 0.; 00067 } 00068 00069 /* MG IV 4.487 MIC 00070 * cs 00071 * >>referold mg4 cs Saraph, H.E. & Tully, J.A. 1994, A&AS, 107, 29 */ 00072 /*cs = (realnum)MIN2(0.425,0.180*phycon.te05*phycon.te02); 00073 cs = (realnum)MAX2(0.356,cs);*/ 00074 /* >>chng 06 jul 06-Humeshkar Nemala*/ 00075 /*>> refer Mg IV cs Berrington,K.A., Saraph,H. E., & Tully, J.A. 1998,A&AS,129,161 */ 00076 /*This is the cs of the transition between the levels of 2P^o term(J=1/2 - J=3/2)*/ 00077 if(phycon.te < 4E5) 00078 { 00079 cs = (realnum)(0.155*phycon.te07*phycon.te01* 00080 phycon.te003*phycon.te0005*phycon.te0001); 00081 } 00082 else 00083 { 00084 cs = (realnum)(5.124/((phycon.te20/phycon.te02)* 00085 phycon.te007*phycon.te0005*phycon.te0001)); 00086 } 00087 PutCS(cs,&TauLines[ipTMg4]); 00088 00089 atom_level2(&TauLines[ipTMg4]); 00090 00091 /* MG V 5.61, 13.54 micron, 00092 * >>refer mg5 cs Butler, K., & Zeippen, C.J. 1994, A&AS, 108, 1 00093 * >>chng 96 jul 16 had been constant 0.3 */ 00094 cs = (realnum)MIN2(0.311,0.11*phycon.te10); 00095 PutCS(cs,&TauLines[ipTMg14]); 00096 00097 cs = (realnum)MIN2(1.06,0.339*phycon.te10); 00098 PutCS(cs,&TauLines[ipTMg6]); 00099 /* >>chng 96 jul 16 had been constant 0.3 */ 00100 cs = (realnum)MIN2(0.297,0.0745*phycon.te10*phycon.te02); 00101 PutCS(cs,&TauDummy); 00102 atom_level3(&TauLines[ipTMg6],&TauLines[ipTMg14],&TauDummy); 00103 00104 /* [Mg V] 2751+2893- Ne III-like, cs 00105 * >>refer mg5 as Mendoza, C., & Zeippen, C.J. 1987, MNRAS, 224, 7p 00106 * >>chng 96 aug 5 to three level atom 00107 * c2751 = atom_pop2(1.33,9.,5.,2.4,5.14e4,xmg(5))*7.11e-12 00108 * dCooldT = dCooldT + c2751*5.14e4*tsq1 00109 * call CoolAdd( 'Mg 5' , 2751 , C2751 ) 00110 * 00111 * following is 2-1 transition, both 2928 and 2783, 00112 * >>refer mg5 cs Butler, K., & Zeippen, C.J. 1994, A&AS, 108, 1 */ 00113 PutCS(1.187,&TauLines[ipxMg52855]); 00114 00115 cs = (realnum)MIN2(0.278,0.0171*phycon.te20*phycon.te05/ 00116 phycon.te005/phycon.te003); 00117 cs = (realnum)MAX2(0.182,cs); 00118 00119 /* 3-2 transition, 2417.5 */ 00120 PutCS(cs,&TauLines[ipxMg52417]); 00121 00122 /* 3-1 transition, 1324.58 */ 00123 PutCS(0.153,&TauLines[ipxMg51325]); 00124 00125 atom_level3(&TauLines[ipxMg52855],&TauLines[ipxMg52417],&TauLines[ipxMg51325]); 00126 00127 /* Mg VI, 1806- OII like, data 00128 * >>refer mg6 all Kafatos, M., & Lynch, J.P. 1980, ApJS, 42, 611 */ 00129 /* >>refer mg6 as Becker, Butler, Zeippen, 1989, A&A 221, 375 00130 * >>refer mg6 cs Ramsbottom & Bell 1997, A&AS 125, 543 */ 00131 CoolHeavy.c1806 = atom_pop2(0.6,4.,10.,0.1,7.974e4,dense.xIonDense[ipMAGNESIUM][5])* 00132 1.11e-11; 00133 CoolAdd("Mg 6",1806,CoolHeavy.c1806); 00134 00135 /* [Mg VII] IR lines at 5.517 and 9.03 microns, 00136 * carbon-like, 00137 * >>refer mg7 cs Lennon, D.J. Burke, V.M. 1994, A&AS, 103, 273 */ 00138 if( phycon.alogte < 4.4 ) 00139 { 00140 cs = (realnum)(0.027*phycon.te30/phycon.te03*phycon.te003*phycon.te001); 00141 } 00142 else 00143 { 00144 cs = 0.44f; 00145 } 00146 PutCS(cs,&TauLines[ipfsMg790]); 00147 if( phycon.alogte < 4.6 ) 00148 { 00149 cs = (realnum)(MIN2(1.456,0.0577*phycon.te30*phycon.te02/phycon.te001/ 00150 phycon.te001)); 00151 csdum = (realnum)(8.275e-3*phycon.sqrte/phycon.te10/phycon.te001); 00152 } 00153 else 00154 { 00155 cs = (realnum)(3.257/(phycon.te05*phycon.te02*phycon.te003*phycon.te003)); 00156 csdum = (realnum)(1.456/(phycon.te10*phycon.te01*phycon.te005)); 00157 } 00158 PutCS(cs,&TauLines[ipfsMg755]); 00159 PutCS(csdum,&TauDummy); 00160 /* atom_level3( t10,t21,t20) */ 00161 atom_level3(&TauLines[ipfsMg790],&TauLines[ipfsMg755],&TauDummy); 00162 00163 /* [mg vii] 2510, 2629 00164 * c2596 = atom_pop2( 1.7,9.,5.,10.,5.76e4,dense.xIonDense(12,7))*7.96e-12 00165 * dCooldT = dCooldT + c2596 * 5.76e4*tsq1 00166 * call CoolAdd( 'Mg 7' , 2596 , C2596 ) 00167 * 00168 * >>chng 96 aug 5, converted to 3 level atom */ 00169 cs = (realnum)MIN2(0.22,0.3622/(phycon.te05*phycon.te02*phycon.te003)); 00170 PutCS(cs,&TauLines[ipxMg71190]); 00171 00172 /* 2-1 transitions, 2509.2A+2629.1A together */ 00173 cs = (realnum)MIN2(1.067,0.247*phycon.te10*phycon.te03*phycon.te005); 00174 PutCS(cs,&TauLines[ipxMg72569]); 00175 00176 /* 3-2 transition, 2261.5A */ 00177 cs = (realnum)MIN2(0.542,3.863/(phycon.te20*phycon.te03* 00178 phycon.te01/phycon.te003)); 00179 cs = (realnum)MAX2(0.3735,cs); 00180 PutCS(cs,&TauLines[ipxMg72261]); 00181 00182 atom_level3(&TauLines[ipxMg72569],&TauLines[ipxMg72261],&TauLines[ipxMg71190]); 00183 /* atom_level3( t10,t21,t20) 00184 * 00185 * Mg VIII 3.03 micron, data from 00186 * >>refer mg8 as Chandra, S. 1982, SoPh, 75, 133 00187 * cs from 00188 * >>refer mg8 cs Zhang, H.L., Graziani, M., Pradhan, A.K. 1994, A&A, 283, 319 */ 00189 PutCS(1.0,&TauLines[ipxMg08303]); 00190 atom_level2(&TauLines[ipxMg08303]); 00191 /* fs303 = atom_pop2(0.26,2.,4.,0.324,4752.,xmg(8))*6.58E-13 00192 * call CoolAdd( 'Mg 8' , 303 , FS303 ) 00193 * 00194 * Mg IX 704.5, 1909-like, A from 00195 * >>refer mg9 as Muhlethaler, H.P., & Nussbaumer, H. 1976, A&A 48, 109 00196 * AtomSeqBeryllium line, cs data from 00197 * >>refer mg9 cs Keenan, F.P. Berrington, K.A., Burke, P.G., Dufton, P.L., 00198 * >>refercon Kingston, A.E. 1986, PhyS 34, 216 00199 * A's 00200 * >>refer mg9 as Fleming, J., Bell, K.L, Hibbert, A., Vaeck, N., Godefroid, M.R. 00201 * >>refercon 1996, MNRAS, 279, 1289 */ 00203 cs = (realnum)(0.98288 - 0.23766*phycon.alogte + 0.014334*POW2(phycon.alogte)); 00204 cs = (realnum)MAX2(0.01,cs); 00205 PutCS(cs,&TauLines[ipT705]); 00206 atom_level2(&TauLines[ipT705]); 00207 00208 /* Mg X 610 00209 * >>refer mg10 cs Cochrane, D.M., & McWhirter, R.W.P. 1983, PhyS, 28, 25 */ 00210 ligbar(12,&TauLines[ipTMg610],&TauLines[ipT58],&cs2s2p,&cs2s3p); 00211 PutCS(cs2s2p,&TauLines[ipTMg610]); 00212 PutCS(cs2s2p*0.5,&TauLines[ipTMg625]); 00213 PutCS(1.0,&TauDummy); 00214 atom_level3(&TauLines[ipTMg625],&TauDummy,&TauLines[ipTMg610]); 00215 00216 /* Mg X 58A */ 00217 PutCS(cs2s3p,&TauLines[ipT58]); 00218 atom_level2(&TauLines[ipT58]); 00219 return; 00220 }