cloudy  trunk
cool_argo.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 /*CoolArgo compute argon cooling */
4 #include "cddefines.h"
5 #include "coolheavy.h"
6 #include "phycon.h"
7 #include "ligbar.h"
8 #include "taulines.h"
9 #include "dense.h"
10 #include "thermal.h"
11 #include "lines_service.h"
12 #include "atoms.h"
13 #include "cooling.h"
14 
15 void CoolArgo(void)
16 {
17  realnum a12,
18  a13,
19  a14,
20  a15,
21  a23,
22  a24,
23  a25,
24  a34,
25  a35,
26  a45,
27  cs12,
28  cs13,
29  cs14,
30  cs15,
31  cs23,
32  cs24,
33  cs25,
34  cs34,
35  cs35,
36  cs45,
37  pop2,
38  popn3;
39  double cs, p[5];
40  static double gAr4[5]={4.,4.,6.,2.,4.};
41  static double exAr4[4]={21090.4,128.9,13636.2,177.1};
42 
43  DEBUG_ENTRY( "CoolArgo()" );
44 
45  /* Argon II 6.98 micron
46  * trans prob from
47  * >>refer Ar2 AS Nussbaumer, H., & Storey, P. J. 1988, A&A, 200, L25
48  * Y(ik) from
49  * >>refer Ar2 CS Pelan, J., & Berrington, K. A. 1995, A&AS, 110, 209 */
50  PutCS(3.1,TauLines[ipTAr7]);
52 
53  /* A III 7136, 7751, 3109, 5192 CS
54  * >>refer Ar3 CS Galavis, M. E., Mendoza, C., & Zeippen, C. J. 1995, A&AS, 111, 347
55  * >>chng 97 mar 19, break up into three level atom */
56  cs12 = 4.825f;
57  cs13 = 0.841f;
58  cs23 = (realnum)MIN2(1.30,3.296/(phycon.te10*phycon.te01/phycon.te001/
59  phycon.te001));
60  a12 = 0.3963f;
61  a23 = 2.59f;
62  a13 = 3.952f;
63  /* POP3(G1,G2,G3,O12,O13,O23,A21,A31,A32,E12,E23,P2,ABUND,GAM2) */
64  popn3 = (realnum)(atom_pop3(9.,5.,1.,cs12,cs13,cs23,a12,a13,a23,1.955e4,2.770e4,
65  &pop2,dense.xIonDense[ipARGON][2],0.,0.,0.));
66  CoolHeavy.c7136 = pop2*a12*2.7e-12;
67  CoolHeavy.c5192 = popn3*a23*3.83e-12;
68  CoolHeavy.c3109 = popn3*a13*6.40e-12;
69  CoolAdd("Ar 3",7136,CoolHeavy.c7136);
70  CoolAdd("Ar 3",5192,CoolHeavy.c5192);
71  CoolAdd("Ar 3",3109,CoolHeavy.c3109);
72  /* add to deriv */
73  /* >>chng 01 mar 10, did not have second pair of lines included */
76 
77  /* Ar III 21.8(J=0,1), 9.0 (J=1,2) mircon lines,
78  * >>refer Ar3 CS Galavis, M. E., Mendoza, C., & Zeippen, C. J. 1995, A&AS, 111, 347 */
79  PutCS(3.1,TauLines[ipTAr9]);
80  cs = MIN2(1.384,3.110/(phycon.te10/phycon.te001*phycon.te001));
81  PutCS(cs,TauLines[ipTAr22]);
82  if( phycon.te < 1e4 )
83  {
84  cs = 0.671;
85  }
86  else
87  {
88  cs = MIN2(0.906,0.150*phycon.te20/phycon.te02/phycon.te02*
89  phycon.te003);
90  }
91  PutCS(cs,*TauDummy);
93 
94  /* Argon IV 4711+4740, 7335 lines (O II like)
95  * CS from
96  * >>refer Ar4 CS Zeippen, C. J., Le Bourlot, J., & Butler, K. 1987, A&A, 188, 251
97  * >>chng 97 jan 31, increase to full 5 level atom
98  * Ar IV, cs data from
99  * >>refer Ar4 CS Ramsbottom, C. A., Bell., K. L., & Keenan, F. P. 1997, MNRAS 284, 754
100  * differs by 2-3x from older values
101  * temp dependence form
102  *>>refer Ar4 CS Ramsbottom, C. A., & Bell, K. L. 1997, At. Data Nucl. Data Tables, 66, 65 */
103  cs12 = (realnum)MAX2(0.761,0.481*phycon.te05);
104  cs12 = (realnum)MIN2(0.853,cs12);
105  a12 = 2.23e-2f;
106 
107  cs13 = (realnum)MAX2(1.14,0.719*phycon.te05);
108  cs13 = (realnum)MIN2(1.3,cs13);
109  a13 = 1.77e-3f;
110 
111  cs14 = (realnum)MAX2(0.39,0.108*phycon.te10*phycon.te02*phycon.te02);
112  cs14 = (realnum)MIN2(0.5,cs14);
113  a14 = 0.862f;
114 
115  cs15 = (realnum)MAX2(0.78,0.216*phycon.te10*phycon.te02*phycon.te02);
116  cs15 = (realnum)MIN2(1.0,cs15);
117  a15 = 2.11f;
118 
119  cs23 = 7.06f;
120  a23 = 2.30e-5f;
121 
122  cs24 = (realnum)MAX2(1.53,0.346*phycon.te10*phycon.te05);
123  cs24 = (realnum)MIN2(1.96,cs24);
124  a24 = 0.603f;
125 
126  cs25 = (realnum)MAX2(2.18,0.664*phycon.te10*phycon.te02);
127  cs25 = (realnum)MIN2(2.65,cs25);
128  a25 = 0.789f;
129 
130  cs34 = (realnum)MAX2(1.56,0.475*phycon.te10*phycon.te02);
131  cs34 = (realnum)MIN2(1.89,cs34);
132  a34 = 0.119f;
133 
134  cs35 = (realnum)MAX2(4.01,1.00*phycon.te10*phycon.te02*phycon.te02);
135  cs35 = (realnum)MIN2(5.03,cs35);
136  a35 = 0.598f;
137 
138  cs45 = (realnum)(0.0359*phycon.te20*phycon.te20*phycon.te02*phycon.te02);
139  a45 = 4.94e-5f;
140 
141  /* FIVEL( G(1-5) , ex(wn,1-5), cs12,cs13,14,15,23,24,25,34,35,45,
142  * A21,31,41,51,32,42,52,43,53,54, pop(1-5), abund) */
143  double Cooling;
144  double CoolingDeriv;
145  atom_pop5(gAr4,exAr4,cs12,cs13,cs14,cs15,cs23,cs24,cs25,cs34,cs35,
146  cs45,a12,a13,a14,a15,a23,a24,a25,a34,a35,a45,p,
147  dense.xIonDense[ipARGON][3],&Cooling , &CoolingDeriv, 0.,0.,0.,0.);
148  CoolHeavy.Ar4740 = p[1]*a12*4.20e-12;
149  CoolHeavy.Ar4711 = p[2]*a13*4.20e-12;
150  CoolHeavy.Ar2868 = p[3]*a14*6.94e-12;
151  CoolHeavy.Ar2854 = p[4]*a15*6.94e-12;
152  CoolHeavy.Ar7263 = p[3]*a24*2.74e-12;
153  CoolHeavy.Ar7171 = p[4]*a25*2.74e-12;
154  CoolHeavy.Ar7331 = p[3]*a34*2.74e-12;
155  CoolHeavy.Ar7237 = p[4]*a35*2.74e-12;
156 
157  // total cooling from 5-level atom
158  CoolAdd("Ar 4",4740,Cooling);
159  thermal.dCooldT += CoolingDeriv;
160 
161  /* Argon V 6435+7007,
162  * >>refer Ar5 AS Mendoza, C., & Zeippen, C. J. 1982, MNRAS, 199, 1025
163  * >>refer Ar5 CS Galavis, M. E., Mendoza, C., & Zeippen, C. J. 1995, A&AS, 111, 347
164  * POPEXC( O12,g1,g2,A21,excit,abund); result already*a21, excit in Kelvin */
165  if( phycon.te < 1e4 )
166  {
167  cs12 = 3.09f;
168  }
169  else
170  {
171  cs12 = (realnum)MIN2(4.454,0.634*phycon.te20/phycon.te03*phycon.te001*
172  phycon.te001);
173  }
174  cs13 = 0.56f;
175  cs23 = 1.65f;
176  a12 = 0.68f;
177  a13 = 6.55f;
178  a23 = 3.35f;
179 
180  /* >>chng 01 mar 10, convert from 2 to 3 level atom */
181  popn3 = (realnum)(atom_pop3(9.,5.,1.,cs12,cs13,cs23,a12,a13,a23,2.055e4,3.110e4,
182  &pop2,dense.xIonDense[ipARGON][4],0.,0.,0.));
183  CoolHeavy.c7007 = pop2*a12*2.84e-12;
184  CoolHeavy.c4626 = popn3*a23*4.30e-12;
185  CoolHeavy.c2691 = popn3*a13*7.39e-12;
186 
187  CoolAdd("Ar 5",7007,CoolHeavy.c7007);
188  CoolAdd("Ar 5",4626,CoolHeavy.c4626);
189  CoolAdd("Ar 5",2691,CoolHeavy.c2691);
190 
191  /* add to deriv */
192  /* >>chng 01 mar 10, did not have second pair of lines included */
193  thermal.dCooldT += CoolHeavy.c7007*2.055e4*thermal.tsq1 +
195 
196  /* Ar V 3P fine structure lines , A from
197  * >>refer Ar5 AS Mendoza, C. 1982, in IAU Symp. 103, Planetary
198  * >>refercon Nebulae, ed. D. R. Flower, (Dordrecht, Holland: D. Reidel Publishing Co.), 143
199  * >>refer Ar5 CS Galavis, M. E., Mendoza, C., & Zeippen, C. J. 1995, A&AS, 111, 347 */
200  cs = MIN2(3.26,26.27/(phycon.te20*phycon.te03*phycon.te01*
201  phycon.te003));
202  PutCS(cs,TauLines[ipTAr13]);
203 
204  cs = MIN2(8.47,44.31/(phycon.te20/phycon.te003/phycon.te003));
205  PutCS(cs,TauLines[ipTAr8]);
206 
207  cs = MIN2(1.95,7.280/(phycon.te10*phycon.te05*phycon.te005));
208  PutCS(cs,*TauDummy);
209 
211 
212  /* [Ar VI] 4.53 micron, cs from
213  * >>refer Ar6 CS Saraph, H. E., & Storey, P. J. 1996, A&AS, 115, 151
214  * >>chng 96 dec 11, cs should have been 6.33, caught by Simon Casassus */
215  PutCS(6.33,TauLines[ipAr06453]);
216 
218 
219  return;
220 }
thermal.h
t_CoolHeavy::Ar4711
double Ar4711
Definition: coolheavy.h:19
atom_pop5
void atom_pop5(const double g[], const double EnerWN[], double cs12, double cs13, double cs14, double cs15, double cs23, double cs24, double cs25, double cs34, double cs35, double cs45, double a21, double a31, double a41, double a51, double a32, double a42, double a52, double a43, double a53, double a54, double p[], realnum abund, double *Cooling, double *CoolingDeriv, double pump01, double pump02, double pump03, double pump04)
Definition: atom_pop5.cpp:13
t_CoolHeavy::c5192
double c5192
Definition: coolheavy.h:16
dense
t_dense dense
Definition: dense.cpp:24
atoms.h
t_CoolHeavy::Ar2854
double Ar2854
Definition: coolheavy.h:21
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
phycon
t_phycon phycon
Definition: phycon.cpp:6
t_phycon::te005
double te005
Definition: phycon.h:63
ipTAr7
long ipTAr7
Definition: atmdat_readin.cpp:79
lines_service.h
CoolAdd
void CoolAdd(const char *chLabel, realnum lambda, double cool)
Definition: cool_etc.cpp:13
CoolArgo
void CoolArgo(void)
Definition: cool_argo.cpp:15
ipTAr22
long ipTAr22
Definition: atmdat_readin.cpp:79
t_CoolHeavy::Ar4740
double Ar4740
Definition: coolheavy.h:18
MIN2
#define MIN2
Definition: cddefines.h:761
t_CoolHeavy::Ar7331
double Ar7331
Definition: coolheavy.h:24
dense.h
t_CoolHeavy::Ar7171
double Ar7171
Definition: coolheavy.h:23
coolheavy.h
t_phycon::te01
double te01
Definition: phycon.h:61
cooling.h
cddefines.h
TauDummy
TransitionProxy::iterator TauDummy
Definition: taulines.cpp:60
thermal
t_thermal thermal
Definition: thermal.cpp:5
t_CoolHeavy::c4626
double c4626
Definition: coolheavy.h:14
ipTAr13
long ipTAr13
Definition: atmdat_readin.cpp:79
t_phycon::te02
double te02
Definition: phycon.h:60
t_CoolHeavy::c2691
double c2691
Definition: coolheavy.h:15
t_CoolHeavy::c7007
double c7007
Definition: coolheavy.h:13
PutCS
void PutCS(double cs, const TransitionProxy &t)
Definition: transition.cpp:317
t_CoolHeavy::Ar7263
double Ar7263
Definition: coolheavy.h:22
MAX2
#define MAX2
Definition: cddefines.h:782
t_dense::xIonDense
double xIonDense[LIMELM][LIMELM+1]
Definition: dense.h:125
ipTAr8
long ipTAr8
Definition: atmdat_readin.cpp:80
TauLines
TransitionList TauLines("TauLines", &AnonStates)
ipAr06453
long ipAr06453
Definition: atmdat_readin.cpp:80
t_phycon::te003
double te003
Definition: phycon.h:65
t_phycon::te10
double te10
Definition: phycon.h:55
t_CoolHeavy::Ar7237
double Ar7237
Definition: coolheavy.h:25
t_CoolHeavy::c3109
double c3109
Definition: coolheavy.h:17
ligbar.h
atom_level2
void atom_level2(const TransitionProxy &t)
Definition: atom_level2.cpp:17
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_thermal::dCooldT
double dCooldT
Definition: thermal.h:119
taulines.h
CoolHeavy
t_CoolHeavy CoolHeavy
Definition: coolheavy.cpp:5
phycon.h
ipTAr9
long ipTAr9
Definition: atmdat_readin.cpp:79
t_CoolHeavy::Ar2868
double Ar2868
Definition: coolheavy.h:20
t_phycon::te05
double te05
Definition: phycon.h:57
ipARGON
const int ipARGON
Definition: cddefines.h:322
t_thermal::tsq1
double tsq1
Definition: thermal.h:122
t_phycon::te
double te
Definition: phycon.h:11
t_CoolHeavy::c7136
double c7136
Definition: coolheavy.h:12
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684