cloudy trunk
Loading...
Searching...
No Matches
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
15void 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 {
70 cs = (realnum)(0.893/(phycon.te05*phycon.te005*phycon.te001*phycon.te0002));
71 }
72 else
73 {
74 cs = (realnum)(3.1991/((phycon.te20/phycon.te04)*(phycon.te003/phycon.te0002)));
75 }
76
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);
85
86 cs = MIN2(1.10,49.37/(phycon.sqrte/phycon.te10*phycon.te02/
87 phycon.te001));
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);
115 cs = MIN2(1.062,0.0407*phycon.te30/phycon.te003/phycon.te003);
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 */
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}
void ligbar(long int ized, const TransitionProxy &t2s2p, const TransitionProxy &t2s3p, double *cs2s2p, double *cs2s3p)
long ipTAl48
long ipAl6912
long ipAl8370
long ipAl8575
long ipTAl568
long ipAl09204
long ipAlI3957
long ipAl6366
long ipT1863
long ipTAl550
long ipAl529
long ipT639
long ipT1855
long ipAlI3090
long ipT2670
void atom_level2(const TransitionProxy &t)
void atom_level3(const TransitionProxy &t10, const TransitionProxy &t21, const TransitionProxy &t20)
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
void AtomSeqBeryllium(double cs12, double cs13, double cs23, const TransitionProxy &t, double a30)
t_atoms atoms
Definition atoms.cpp:5
const int ipALUMINIUM
Definition cddefines.h:317
#define MIN2
Definition cddefines.h:761
#define POW2
Definition cddefines.h:929
float realnum
Definition cddefines.h:103
#define MAX2
Definition cddefines.h:782
#define DEBUG_ENTRY(funcname)
Definition cddefines.h:684
void CoolAlum(void)
Definition cool_alum.cpp:15
void CoolAdd(const char *chLabel, realnum lambda, double cool)
Definition cool_etc.cpp:13
t_CoolHeavy CoolHeavy
Definition coolheavy.cpp:5
t_dense dense
Definition dense.cpp:24
t_embesq embesq
Definition embesq.cpp:5
t_phycon phycon
Definition phycon.cpp:6
TransitionProxy::iterator TauDummy
Definition taulines.cpp:60
TransitionList TauLines("TauLines", &AnonStates)
void MakeCS(const TransitionProxy &t)
void PutCS(double cs, const TransitionProxy &t)