/home66/gary/public_html/cloudy/c08_branch/source/cool_sili.cpp

Go to the documentation of this file.
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 }

Generated on Mon Feb 16 12:01:14 2009 for cloudy by  doxygen 1.4.7