cloudy  trunk
cool_alum.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 /*CoolAlum compute aluminum cooling */
4 #include "cddefines.h"
5 #include "embesq.h"
6 #include "taulines.h"
7 #include "phycon.h"
8 #include "coolheavy.h"
9 #include "dense.h"
10 #include "ligbar.h"
11 #include "lines_service.h"
12 #include "atoms.h"
13 #include "cooling.h"
14 
15 void CoolAlum(void)
16 {
17  double cs ,
18  cs2s2p,
19  cs2s3p;
20  realnum p2;
21 
22  DEBUG_ENTRY( "CoolAlum()" );
23 
24  /* Al I 3957 */
27 
28  /* Al I 3090 */
31 
32  /* AlII 1670.787
33  * >>chng 96 may 09 put back into level 2 for array processor speed up
34  * cs from
35  * >>refer Al2 CS Tayal, S. S., Burke, P. G., & Kingston, A. E. 1985, J. Phys. B, 18, 4321
36  * >>refer Al2 CS Tayal, S. S., Burke, P. G., & Kingston, A. E. 1984, J. Phys. B, 17, 3847
37  * cs = MIN( 5.0 , 0.0125 * sqrte*te10*te003 )
38  * call PutCS( cs , al1671 )
39  * call atom_level2( al1671 )
40  *
41  * Al 2, 3P in
42  * >>refer Al2 CS Keenan, F. P., Harra, L. K., Aggarwal, K. M., & Feibelman, W. A. 1992, ApJ, 385, 375
43  * doublet at 2660, 2669 */
44  /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */
45  PutCS(3.56,TauLines[ipT2670]);
46 
47  /* C2670 = AtomSeqBeryllium( 1.67,2.00,6.54, T2670 , 3.67E-3 ) * 7.45E-12 */
48  AtomSeqBeryllium(1.67,2.00,6.54,TauLines[ipT2670],3.67e-3);
49  embesq.em2669 = (realnum)(atoms.PopLevels[3]*3.67e-3*7.45e-12);
50 
51  /* Aluminum al 3, 1854, 1862 doublet, 3s ^2 S gnd, ^2P^o 1/2 3/5 exc
52  * f=0.854 from
53  * >>refer Al3 AS Dufton, P. L., Brown, P. J. F., Lennon, D. J., & Lynas-Gray, A. E. 1986, MNRAS, 222, 713
54  * cs from
55  * >>refer Al3 CS Dufton, P. L., & Kingston, A. E. 1987, J. Phys. B, 20, 3899 */
56  cs = 4.407*phycon.te10*phycon.te03*phycon.te01;
57  cs = MIN2(25.0,cs);
58  PutCS(cs*0.667,TauLines[ipT1855]);
59  PutCS(cs*0.333,TauLines[ipT1863]);
60  PutCS(1.0,*TauDummy);
62 
63  /* Al V 2.905mm, cs
64  * >>referold al5 cs Saraph, H.E. & Tully, J.A. 1994, A&AS, 107, 29 */
65  /*cs = MIN2(0.524,1.113/(phycon.te10/phycon.te02/phycon.te003));*/
66  /* >>refer Al5 CS Berrington, K. A., Saraph, H. E. & Tully, J. A. 1998, A&AS, 129,161 */
67  /* >>chng 06 jul 11 - Humeshkar Nemala*/
68  if(phycon.te < 1.58E5)
69  {
71  }
72  else
73  {
74  cs = (realnum)(3.1991/((phycon.te20/phycon.te04)*(phycon.te003/phycon.te0002)));
75  }
76 
77  PutCS(cs,TauLines[ipAl529]);
78 
80 
81  /* Al VI 3.66, 9.12 microns */
82  cs = 639.1/(phycon.sqrte*pow(phycon.te03,phycon.te003)*phycon.te001);
83  cs = MIN2(5.5 , cs);
84  PutCS(cs,TauLines[ipAl6366]);
85 
86  cs = MIN2(1.10,49.37/(phycon.sqrte/phycon.te10*phycon.te02/
87  phycon.te001));
88  PutCS(cs,TauLines[ipAl6912]);
89 
90  cs = MIN2(2.0,319.11/(phycon.sqrte*phycon.te10/phycon.te02/
91  phycon.te001));
92  PutCS(cs,*TauDummy);
93 
95 
96  /* [Al VI] 2428.4, 2601, 1169.8, 2124.9
97  * POP3(G1,G2,G3,O12,O13,O23,A21,A31,A32,E12,E23,P2,ABUND,GAM2)
98  * cs from
99  * >>refer Al6 CS Butler, K., & Zeippen, C. J. 1994, A&AS, 108, 1
100  */
101  CoolHeavy.c1170 = atom_pop3(9.,5.,1.,1.044,0.145,0.463,6.63,72.9,7.79,
102  5.92e4,6.767e4,&p2,dense.xIonDense[ipALUMINIUM][5],0.,0.,0.)*72.9*1.70e-11;
103 
104  CoolHeavy.c2428 = p2*6.63*8.19e-12;
105  CoolHeavy.c2125 = CoolHeavy.c1170*(7.79/72.9)*(1169.5/2124.9);
106  CoolAdd("Al 6",1170,CoolHeavy.c1170);
107  CoolAdd("Al 6",2428,CoolHeavy.c2428);
108  CoolAdd("Al 6",2125,CoolHeavy.c2125);
109 
110  /* Al VIII 5.85, 3.72 microns
111  * collision strength
112  * >>refer Al8 CS Lennon, D. J., & Burke, V. M. 1994, A&AS, 103, 273 */
113  cs = MIN2(0.39,0.0459*phycon.te20/phycon.te003/phycon.te003);
114  PutCS(cs,TauLines[ipAl8575]);
115  cs = MIN2(1.062,0.0407*phycon.te30/phycon.te003/phycon.te003);
116  PutCS(cs,TauLines[ipAl8370]);
117  cs = MIN2(0.27,2.694e-3*phycon.te20*phycon.te20*phycon.te01*
118  phycon.te003);
119  PutCS(cs,*TauDummy);
121 
122  /* [Al IX] 2.04 micron, no collision strength, A NIST */
123  PutCS(1.,TauLines[ipAl09204]);
125 
126  /* Al 10 639, CS
127  * >>refer Al10 CS Keenan, F. P. Berrington, K. A., Burke, P. G., et al. 1986, PhyS, 34, 216
128  * A is extrapolation along iso seq */
129  cs = 0.73492 - 0.16964*phycon.alogte + 0.0096631*POW2(phycon.alogte);
130  cs = MAX2(0.01,cs);
131  PutCS(cs,TauLines[ipT639]);
133 
134  /* Al 11 Li seq 2s2p 556
135  * >>refer Al11 CS Cochrane, D. M., & McWhirter, R. W. P. 1983, PhyS, 28, 25 */
136  ligbar(13,TauLines[ipTAl550],TauLines[ipTAl48],&cs2s2p,&cs2s3p);
137  PutCS(cs2s2p,TauLines[ipTAl550]);
138  PutCS(cs2s2p*0.5,TauLines[ipTAl568]);
139  PutCS(1.0,*TauDummy);
141 
142  PutCS(cs2s3p,TauLines[ipTAl48]);
144  return;
145 }
t_CoolHeavy::c1170
double c1170
Definition: coolheavy.h:9
ipAl529
long ipAl529
Definition: atmdat_readin.cpp:66
ipAl09204
long ipAl09204
Definition: atmdat_readin.cpp:67
t_CoolHeavy::c2125
double c2125
Definition: coolheavy.h:11
dense
t_dense dense
Definition: dense.cpp:24
atoms.h
MakeCS
void MakeCS(const TransitionProxy &t)
Definition: transition.cpp:613
ipAlI3090
long ipAlI3090
Definition: atmdat_readin.cpp:64
t_phycon::te001
double te001
Definition: phycon.h:67
realnum
float realnum
Definition: cddefines.h:103
atom_level3
void atom_level3(const TransitionProxy &t10, const TransitionProxy &t21, const TransitionProxy &t20)
Definition: atom_level3.cpp:15
t_phycon::te03
double te03
Definition: phycon.h:59
ipAl6912
long ipAl6912
Definition: atmdat_readin.cpp:66
phycon
t_phycon phycon
Definition: phycon.cpp:6
t_phycon::te005
double te005
Definition: phycon.h:63
embesq.h
lines_service.h
CoolAdd
void CoolAdd(const char *chLabel, realnum lambda, double cool)
Definition: cool_etc.cpp:13
ipAlI3957
long ipAlI3957
Definition: atmdat_readin.cpp:64
ipTAl48
long ipTAl48
Definition: atmdat_readin.cpp:68
POW2
#define POW2
Definition: cddefines.h:929
ligbar
void ligbar(long int ized, const TransitionProxy &t2s2p, const TransitionProxy &t2s3p, double *cs2s2p, double *cs2s3p)
Definition: atmdat_ligbar.cpp:11
MIN2
#define MIN2
Definition: cddefines.h:761
dense.h
ipTAl568
long ipTAl568
Definition: atmdat_readin.cpp:68
coolheavy.h
t_phycon::te01
double te01
Definition: phycon.h:61
cooling.h
ipT2670
long ipT2670
Definition: atmdat_readin.cpp:65
cddefines.h
t_phycon::te0002
double te0002
Definition: phycon.h:70
atoms
t_atoms atoms
Definition: atoms.cpp:5
TauDummy
TransitionProxy::iterator TauDummy
Definition: taulines.cpp:60
t_phycon::te02
double te02
Definition: phycon.h:60
PutCS
void PutCS(double cs, const TransitionProxy &t)
Definition: transition.cpp:317
ipALUMINIUM
const int ipALUMINIUM
Definition: cddefines.h:317
MAX2
#define MAX2
Definition: cddefines.h:782
t_phycon::te30
double te30
Definition: phycon.h:53
ipTAl550
long ipTAl550
Definition: atmdat_readin.cpp:68
CoolAlum
void CoolAlum(void)
Definition: cool_alum.cpp:15
t_dense::xIonDense
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
TauLines
TransitionList TauLines("TauLines", &AnonStates)
t_phycon::te04
double te04
Definition: phycon.h:58
ipAl6366
long ipAl6366
Definition: atmdat_readin.cpp:66
t_phycon::te003
double te003
Definition: phycon.h:65
t_phycon::te10
double te10
Definition: phycon.h:55
AtomSeqBeryllium
void AtomSeqBeryllium(double cs12, double cs13, double cs23, const TransitionProxy &t, double a30)
Definition: atom_seq_beryllium.cpp:13
ligbar.h
atom_level2
void atom_level2(const TransitionProxy &t)
Definition: atom_level2.cpp:17
t_embesq::em2669
realnum em2669
Definition: embesq.h:14
atom_pop3
double atom_pop3(double g1, double g2, double g3, double o12, double o13, double o23, double a21, double a31, double a32, double Tex12, double Tex23, realnum *pop2, double abund, double gam2, double r12, double r13)
Definition: atom_pop3.cpp:10
t_phycon::te20
double te20
Definition: phycon.h:54
t_phycon::alogte
double alogte
Definition: phycon.h:82
ipAl8370
long ipAl8370
Definition: atmdat_readin.cpp:67
taulines.h
ipAl8575
long ipAl8575
Definition: atmdat_readin.cpp:66
CoolHeavy
t_CoolHeavy CoolHeavy
Definition: coolheavy.cpp:5
ipT1863
long ipT1863
Definition: atmdat_readin.cpp:65
phycon.h
embesq
t_embesq embesq
Definition: embesq.cpp:5
t_phycon::sqrte
double sqrte
Definition: phycon.h:48
t_atoms::PopLevels
double PopLevels[LIMLEVELN+1]
Definition: atoms.h:270
t_phycon::te05
double te05
Definition: phycon.h:57
ipT639
long ipT639
Definition: atmdat_readin.cpp:67
t_phycon::te
double te
Definition: phycon.h:11
t_CoolHeavy::c2428
double c2428
Definition: coolheavy.h:10
ipT1855
long ipT1855
Definition: atmdat_readin.cpp:65
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684