cloudy trunk
Loading...
Searching...
No Matches
cool_sulf.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/*CoolSulf compute sulphur cooling */
4/*S2cs compute [CoolHeavy] collision strengths
5 * compute collision strengths for [SII] transitions
6 * w/in S II ground term. From
7 *>>refer s2 cs Ramsbottom, C.A., Bell, K.L., Stafford, R.P. 1996, At. Data Nucl. Data Tables, 63, 57 */
8#include "cddefines.h"
9#include "coolheavy.h"
10#include "taulines.h"
11#include "dense.h"
12#include "phycon.h"
13#include "embesq.h"
14#include "ligbar.h"
15#include "thermal.h"
16#include "lines_service.h"
17#include "atoms.h"
18#include "cooling.h"
19
20void CoolSulf(void)
21{
22 double cs,
23 cs01,
24 cs02,
25 cs12,
26 a21,
27 a31,
28 a32,
29 a41,
30 a42,
31 a43,
32 a51,
33 a52,
34 a53,
35 p[5],
36 tused;
37 realnum pop2,
38 rate;
39 static double gS2[5]={4.,4.,6.,2.,4.};
40 static double exS2[4]={14851.9,31.5,9640.8,48.6};
41
42 long int i;
43
44 DEBUG_ENTRY( "CoolSulf()" );
45
46 /*>>refer S1 cs Hollenbach, D. & McKee, C.F. 1989, ApJ, 342, 306 */
47 /* >>chng 03 nov 15, add these lines */
48 /* rates are said to be ok over range 30 - 3000K */
49 tused = MAX2( 30. , phycon.te );
50 tused = MIN2( 3000. , phycon.te );
51 tused /= 100.;
52
53 /* the 25.2 micron line */
54 rate = (realnum)(3.3e-8 * dense.eden +
55 /* >>chng 05 jul 05, eden to cdsqte */
56 /*7.5e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/
57 7.5e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] );
59
60 /* the 56.6 micron line */
61 rate = (realnum)(1.2e-8 * dense.eden +
62 /* >>chng 05 jul 05, eden to cdsqte */
63 /*4.2e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/
64 4.2e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] );
66
67 rate = (realnum)(3.3e-8 * dense.eden +
68 /* >>chng 05 jul 05, eden to cdsqte */
69 /*7.1e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0]) / dense.eden);*/
70 7.1e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] );
71 (*(*TauDummy).Hi()).g() = (*TauLines[ipS1_56m].Hi()).g();
72 LineConvRate2CS( *TauDummy , rate );
73 /* this says that line is a dummy, not real one */
74 (*(*TauDummy).Hi()).g() = 0.;
75
77
78 /***********************************************************************************
79 **************************************S II*****************************************
80 ************************************************************************************/
81 /* Sulphur II [S II] 6731 + 6716, A
82 * >>referold s2 as trans Mendoza, C., & Zeippen, C.J., 1982, MNRAS, 198, 127
83 * >>referold s2 as Froese Fischer, C., Tachiev, G., & Irimia, A. 2006, At. Data Nucl. Data Tables, 92, 607
84 * >>refer s2 as Podobedova, L.I., Kelleher, D.E., & Wiese, W.L. 2009, JPCRD, 38, 171
85 * collision strength from
86 *>>refer s2 cs Ramsbottom, C.A., Bell, K.L., Stafford, R.P. 1996,
87 *>>refercon At. Data Nucl. Data Tables, 63, 57
88 * this agrees very well with
89 * >>refer s2 cs Tayal, S., 1997, ApJS, 111, 459
90 * */
91 double sii_cs4S32D3,
92 sii_cs4S32D5,
93 sii_cs4S32P1,
94 sii_cs4S32P3,
95 sii_cs2D32D5,
96 sii_cs2D32P1,
97 sii_cs2D52P1,
98 sii_cs2D32P3,
99 sii_cs2D52P3,
100 sii_cs2P12P3,
101 sii_cs4S34P;
102
103 /*sii_cs compute [CoolHeavy] collision strengths
104 * compute collision strengths for [SII] transitions
105 * w/in S II ground term. From
106 *>>refer s2 cs Ramsbottom, C.A., Bell, K.L., Stafford, R.P. 1996, ADNDT, 63, 57 */
107 sii_cs(sii_cs4S32D3,
108 sii_cs4S32D5,
109 sii_cs4S32P1,
110 sii_cs4S32P3,
111 sii_cs2D32D5,
112 sii_cs2D32P1,
113 sii_cs2D52P1,
114 sii_cs2D32P3,
115 sii_cs2D52P3,
116 sii_cs2P12P3,
117 sii_cs4S34P);
118
119 /* cs13 = MIN(4.95 , 3.2640828 + 1.9369099*sexp(te/30337.498) )
120 * cs12 = cs13 / 1.5
121 * cs15 = MIN( 1.59 , 0.10*te10*te10*te10/te01/te003/te001/te001)
122 * cs14 = cs15 * 0.5
123 * FIVEL( G(1-5) , ex(wn,1-5), cs12,cs13,14,15,23,24,25,34,35,45,
124 * A21,31,41,51,32,42,52,43,53,54, pop(1-5), abund) */
125
126 a21 = 6.84e-4;
127 a31 = 2.02e-4;
128 a41 = 7.72e-2;
129 a42 = 0.135;
130 a43 = 6.81e-2;
131 a51 = 1.92e-1;
132 a52 = 0.115;
133 a53 = 0.157;
134
135 double Cooling , CoolingDeriv;
136 atom_pop5(gS2,exS2,sii_cs4S32D3,sii_cs4S32D5,sii_cs4S32P1,sii_cs4S32P3,sii_cs2D32D5,
137 sii_cs2D32P1,sii_cs2D32P3,sii_cs2D52P1,sii_cs2D52P3,sii_cs2P12P3,
138 a21,a31,a41,a51,3.35e-7,a42,a52,a43,a53,
139 1.03e-6,p,dense.xIonDense[ipSULPHUR][1], &Cooling , &CoolingDeriv, 0.,0.,0.,0.);
140 CoolHeavy.S6733 = (realnum)(p[1]*a21*2.96e-12);
141 CoolHeavy.S6718 = (realnum)(p[2]*a31*2.962e-12);
142 CoolHeavy.S4070 = (realnum)(p[4]*a51*4.89e-12);
143 CoolHeavy.S4078 = (realnum)(p[3]*a41*4.88e-12);
144 CoolHeavy.S10323 = (realnum)(p[4]*a53*1.93e-12);
145 CoolHeavy.S10289 = (realnum)(p[4]*a52*1.93e-12);
146 CoolHeavy.S10373 = (realnum)(p[3]*a43*1.92e-12);
147 CoolHeavy.S10339 = (realnum)(p[3]*a42*1.92e-12);
148 CoolHeavy.c6731 = CoolHeavy.S6733 + CoolHeavy.S6718;
149 CoolHeavy.c10330 = CoolHeavy.S10323 + CoolHeavy.S10289 + CoolHeavy.S10373 + CoolHeavy.S10339;
150
151 // all cooling from 5-level atom
152 CoolAdd("S 2",6731,Cooling);
153 thermal.dCooldT += CoolingDeriv;
154
155
156 PutCS(sii_cs4S34P,TauLines[ipT1256]);
158
159 /***********************************************************************************
160 **************************************S III*****************************************
161 ************************************************************************************/
162 double siii_cs3P03P1,
163 siii_cs3P03P2,
164 siii_cs3P01D2,
165 siii_cs3P01S0,
166 siii_cs3P13P2,
167 siii_cs3P11D2,
168 siii_cs3P11S0,
169 siii_cs3P21D2,
170 siii_cs3P21S0,
171 siii_cs1D21S0,
172 siii_cs3P3D,
173 siii_cs3P5S2;
174 // siii_cs calculates collision strengths for transitions of S III
175 siii_cs(siii_cs3P03P1,
176 siii_cs3P03P2,
177 siii_cs3P01D2,
178 siii_cs3P01S0,
179 siii_cs3P13P2,
180 siii_cs3P11D2,
181 siii_cs3P11S0,
182 siii_cs3P21D2,
183 siii_cs3P21S0,
184 siii_cs1D21S0,
185 siii_cs3P3D,
186 siii_cs3P5S2);
187
188 PutCS(siii_cs3P03P1,TauLines[ipTS34]);
189 PutCS(siii_cs3P13P2,TauLines[ipTS19]);
190 PutCS(siii_cs3P03P2,*TauDummy);
192
193 /* S III O III-like lines, A from
194 * >>referold s3 as Mendoza, C., & Zeippen, C.J. 1982, MNRAS, 199, 1025
195 * >>referold s3 as Froese Fischer, C., Tachiev, G., & Irimia, A. 2006, At. Data Nucl. Data Tables, 92, 607
196 * >>refer s3 as Podobedova, L.I., Kelleher, D.E., & Wiese, W.L. 2009, JPCRD, 38, 171
197 * CS from
198 * >>referold s3 cs Galavis, M.E., Mendoza, C., & Zeippen, C.J. 1995, A&AS, 111, 347
199 * >>chng 00 Sep 11, cs changed from above to
200 * >>refer s3 cs Tayal, S.S., and Gupta, G.P. 1999 ApJ 526, 544 */
201 /*cs = MIN2(2.05,0.0821*phycon.te30);*/
202 /* POP3(G1,G2,G3,O12,O13,O23,A21,A31,A32,E12,E23,P2,ABUND,GAM2) */
203 /*CoolHeavy.c6312 = atom_pop3(9.,5.,1.,7.98,1.14,cs,7.97e-2,0.807,2.22,*/
204
205 a21 = 0.0666;
206 a31 = 0.670;
207 a32 = 2.08;
208
209 CoolHeavy.c6312 = atom_pop3(9.,5.,1.,siii_cs3P01D2+siii_cs3P11D2+siii_cs3P21D2,
210 siii_cs3P01S0+siii_cs3P11S0+siii_cs3P21S0,siii_cs1D21S0,a21,a31,a32,
211 1.55e4,2.28e4,&pop2,dense.xIonDense[ipSULPHUR][2],0.,0.,0.)*2.22*3.15e-12;
212 /* folowing is 9532 + 9069 together (OIII-like) */
213 CoolHeavy.c9532 = pop2*a21*2.11e-12;
214 CoolAdd("S 3",6312,CoolHeavy.c6312);
215 CoolAdd("S 3",9532,CoolHeavy.c9532);
216 CoolAdd("S 3",3722,CoolHeavy.c6312*0.59);
217
218 PutCS(siii_cs3P3D,TauLines[ipT1194]);
220
221 PutCS(siii_cs3P5S2,TauLines[ipTS1720]);
223
224
225
226 /***********************************************************************************
227 **************************************S IV*****************************************
228 ************************************************************************************/
229 double siv_cs2P12P3;
230 // siv_cs calculates collision strengths for transitions of S IV
231 // unknown transition
232 siv_cs(siv_cs2P12P3);
233
234 PutCS(siv_cs2P12P3,TauLines[ipTS11]);
235 /*atom_level2(TauLines[ipTS11]);*/
236
237 static vector< pair<TransitionList::iterator,double> > S4Pump;
238 S4Pump.reserve(48);
239
240 /* one time initialization if first call */
241 if( S4Pump.empty() )
242 {
243 // set up level 2 pumping lines
244 for( i=0; i < nWindLine; ++i )
245 {
246 /* don't test on nelem==ipIRON since lines on physics, not C, scale */
247 if( (*TauLine2[i].Hi()).nelem() == 16 && (*TauLine2[i].Hi()).IonStg() == 4 )
248 {
249# if 0
250 DumpLine( TauLine2.begin()+i );
251# endif
252 double branch_ratio;
253 // the branching ratios used here ignore cascades via intermediate levels
254 // usually the latter are much slower, so this should be reasonable
255 if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(2.) ) )
256 branch_ratio = 2./3.; // 2S upper level
257 else if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(6.) ) )
258 branch_ratio = 1./2.; // 2P upper level
259 else if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(10.) ) )
260 branch_ratio = 1./6.; // 2D upper level
261 else
263 pair<TransitionList::iterator,double> pp2( TauLine2.begin()+i, branch_ratio );
264 S4Pump.push_back( pp2 );
265 }
266 }
267 }
268
269 /* now sum pump rates */
270 double pump_rate = 0.;
271 vector< pair<TransitionList::iterator,double> >::const_iterator s4p;
272 for( s4p=S4Pump.begin(); s4p != S4Pump.end(); ++s4p )
273 {
274 const TransitionList::iterator t = s4p->first;
275 double branch_ratio = s4p->second;
276 pump_rate += (*t).Emis().pump()*branch_ratio;
277# if 0
278 dprintf( ioQQQ, "S IV %.3e %.3e\n",
279 (*t).WLAng , (*t).Emis().pump()*branch_ratio );
280# endif
281 }
282
283 /* S IV 1404.8, 1398.05, 1423.8, 1416.9, 1406.0 */
284 /*AtomSeqBoron compute cooling from 5-level boron sequence model atom */
285 /* >>refer s4 cs Tayal, S.S., 2000, ApJ 530, 1091*/
292 1.168 , 3.366 , 2.924 , 7.233 ,
293 pump_rate , "S 4");
294
295 /***********************************************************************************
296 **************************************S V*****************************************
297 ************************************************************************************/
298 /* S V Be-seq line, A=
299 * >>refer s5 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103,
300 * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143
301 * all cs
302 * >>refer s5 as Dufton, P.L., Hibbert, A., Keenan, F.P, Kingston, A.E., &
303 * >>refercon Doschek, G.A. 1986, ApJ, 300, 448
304 * and
305 * >>refer s5 cs Dufton, P.L., & Kingston, A.E. 1984, J.Phys. B, 17, 3321 */
306 /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */
307 cs = MIN2(1.58,35.372/(phycon.te10*phycon.te10*phycon.te10));
309 /* cs01 = MIN(1.98, 29.625/(T**0.25)) */
310 cs01 = MIN2(1.98,29.625/(phycon.te20*phycon.te05));
311 /* cs02 = MIN(2.26, 13.477/(T**0.165)) */
312 cs02 = MIN2(2.26,13.477/(phycon.te10*phycon.te03*phycon.te03*
313 phycon.te005));
314 /* cs12 = MIN(7.59, 63.994/(T**0.197)) */
315 cs12 = MIN2(7.59,63.994/(phycon.te20/phycon.te003));
316 /* AtomSeqBeryllium(cs23,cs24,cs34,tarray,a41)
317 * call AtomSeqBeryllium( 1.98 , 2.26 , 7.59, t1198 ,.066) */
318 AtomSeqBeryllium(cs01,cs02,cs12,TauLines[ipT1198],.066);
319 embesq.em1198 = (realnum)(atoms.PopLevels[3]*0.066*1.66e-11);
320
321 /* S V 786
322 * cs from
323 * >>refer s5 cs Dufton, P.L., & Kingston, A.E. 1984, J.Phys. B, 17, 3321 */
327 PutCS(8.3,TauLines[ipT786]);
329
330 return;
331}
332
333/*sii_cs compute [CoolHeavy] collision strengths
334 * compute collision strengths for [SII] transitions
335 * w/in S II ground term. From
336 *>>refer s2 cs Ramsbottom, C.A., Bell, K.L., Stafford, R.P. 1996, ADNDT, 63, 57 */
337void sii_cs(double& sii_cs4S32D3,
338 double& sii_cs4S32D5,
339 double& sii_cs4S32P1,
340 double& sii_cs4S32P3,
341 double& sii_cs2D32D5,
342 double& sii_cs2D32P1,
343 double& sii_cs2D52P1,
344 double& sii_cs2D32P3,
345 double& sii_cs2D52P3,
346 double& sii_cs2P12P3,
347 double& sii_cs4S34P)
348{
349 double telog;
350 telog = phycon.alogte;
351 /* written by Kirk Korista */
352 double a,
353 b,
354 c,
355 telogn1;
356
357 DEBUG_ENTRY( "sii_cs()" );
358
359 /* limit to stop exceeding bounds */
360 telogn1 = MAX2(3.5,telog);
361 telogn1 = MIN2(telogn1,5.0);
362
363 /* 2D5/2 - 2P3/2 S II 10320.4 A=0.179 (3-->5) */
364 a = 18.335524;
365 b = -5.1180248;
366 c = 0.44482438;
367 sii_cs2D52P3 = MIN2(5.82,a+b*telogn1+c*telogn1*telogn1);
368 sii_cs2D52P3 = MAX2(3.87,sii_cs2D52P3);
369
370 /* 2D3/2 - 2P3/2 10286.7 A=0.1335 (2-->5) */
371 a = 6.690242;
372 b = -1.061514;
373 c = 0.034535506;
374 sii_cs2D32P3 = MIN2(3.38,a+b*telogn1+c*telogn1*telogn1);
375 sii_cs2D32P3 = MAX2(2.24,sii_cs2D32P3);
376
377 /* 2D5/2 - 2P1/2 10373.3 A=0.0779 (3-->4) */
378 a = 4.2250081;
379 b = -0.46549935;
380 c = -0.010172139;
381 sii_cs2D52P1 = MIN2(2.46,a+b*telogn1+c*telogn1*telogn1);
382 sii_cs2D52P1 = MAX2(1.64,sii_cs2D52P1);
383
384 /* 2D3/2 - 2P1/2 10336.3 A=0.1626 (2-->4) */
385 a = 8.274085;
386 b = -2.6223732;
387 c = 0.2502924;
388 sii_cs2D32P1 = MIN2(2.14,a+b*telogn1+c*telogn1*telogn1);
389 sii_cs2D32P1 = MAX2(1.42,sii_cs2D32P1);
390
391 /* 2P1/2 - 2P3/2 */
392 a = -5.1994665;
393 b = 49.334586;
394 c = -70.93344;
395 sii_cs2P12P3 = MIN2(3.07,a+b/telogn1+c/(telogn1*telogn1));
396 sii_cs2P12P3 = MAX2(1.85,sii_cs2P12P3);
397
398 /* 2D3/2 - 2D5/2 */
399 a = -27.497273;
400 b = 247.27405;
401 c = -429.9142;
402 sii_cs2D32D5 = MIN2(8.01,a+b/telogn1+c/(telogn1*telogn1));
403 sii_cs2D32D5 = MAX2(4.79,sii_cs2D32D5);
404
405 /* 4S3/2 - 2P3/2 4068.6 A=0.220 */
406 a = 2.6106784;
407 b = -3.2766908e-05;
408 c = 6.5105436;
409 sii_cs4S32P3 = a+b*pow(telogn1,c);
410 sii_cs4S32P3 = MIN2(2.46,sii_cs4S32P3);
411 sii_cs4S32P3 = MAX2(1.45,sii_cs4S32P3);
412
413 /* 4S3/2 - 2P1/2 4076.4 A=0.091 */
414 sii_cs4S32P1 = 0.5*sii_cs4S32P3;
415
416 /* 4S3/2 - 2D5/2 6716.5 A=2.601e-04 */
417 a = 8.1458628;
418 b = -0.5389108;
419 c = 1.4486586;
420 sii_cs4S32D5 = a+b*pow(telogn1,c);
421 sii_cs4S32D5 = MIN2(4.77,sii_cs4S32D5);
422 sii_cs4S32D5 = MAX2(2.54,sii_cs4S32D5);
423
424 /* 4S3/2 - 2D3/2 6730.8 A=8.82e-04 */
425 sii_cs4S32D3 = sii_cs4S32D5/1.5;
426
427 /* SII 1256 */
428 sii_cs4S34P = MIN2(8.46,-4.9416304+47.01064/phycon.alogte);
429 sii_cs4S34P = MAX2(4.466,sii_cs4S34P);
430
431 return;
432}
433// siii_cs calculates collision strengths for transitions of S III
434void siii_cs(double& siii_cs3P03P1,
435 double& siii_cs3P03P2,
436 double& siii_cs3P01D2,
437 double& siii_cs3P01S0,
438 double& siii_cs3P13P2,
439 double& siii_cs3P11D2,
440 double& siii_cs3P11S0,
441 double& siii_cs3P21D2,
442 double& siii_cs3P21S0,
443 double& siii_cs1D21S0,
444 double& siii_cs3P3D,
445 double& siii_cs3P5S2)
446{
447 DEBUG_ENTRY( "siii_cs()" );
448 /* S III 18.7M, 33.6M, A
449 * >>referold s3 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103,
450 * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143
451 *
452 * >>refer s3 cs Galavis, M.E., Mendoza, C., & Zeippen, C.J. 1995, A&AS, 111, 347
453 * >>chng 99 dec 22, cs changed from above to
454 * >>refer s3 cs Tayal, S.S., and Gupta, G.P. 1999 ApJ 526, 544 */
455 /* the 1-2 transition */
456 if( phycon.te < 5000. )
457 {
458 siii_cs3P03P1 = 4.44;
459 siii_cs3P03P2 = 1.41;
460 siii_cs3P01D2 = 0.802;
461 siii_cs3P01S0 = 0.129;
462 siii_cs3P13P2 = 8.72;
463 siii_cs3P11D2 = 2.41;
464 siii_cs3P11S0 = 0.388;
465 siii_cs3P21D2 = 4.01;
466 siii_cs3P21S0 = 0.646;
467 siii_cs1D21S0 = 1.31;
468 }
469 else if( phycon.te > 1e5 )
470 {
471 siii_cs3P03P1 = 1.9;
472 siii_cs3P03P2 = 1.24;
473 siii_cs3P01D2 = 0.664;
474 siii_cs3P01S0 = 0.136;
475 siii_cs3P13P2 = 5.13;
476 siii_cs3P11D2 = 1.99;
477 siii_cs3P11S0 = 0.407;
478 siii_cs3P21D2 = 3.32;
479 siii_cs3P21S0 = 0.679;
480 siii_cs1D21S0 = 1.84;
481 }
482 else
483 {
484 siii_cs3P03P1 = 52.47/(phycon.te30/phycon.te02);
485 siii_cs3P03P2 = 1.894/(phycon.te02*phycon.te02);
486 siii_cs3P01D2 = 1.34/(phycon.te05*phycon.te01);
487 siii_cs3P01S0 = 0.109*phycon.te02;
488 siii_cs3P13P2 = 41.3/(phycon.te20/phycon.te02);
489 siii_cs3P11D2 = 4.03/(phycon.te05*phycon.te01);
490 siii_cs3P11S0 = 0.327*phycon.te02;
491 siii_cs3P21D2 = 6.708/(phycon.te05*phycon.te01);
492 siii_cs3P21S0 = 0.545*phycon.te02;
493 siii_cs1D21S0 = 0.501*phycon.te10*phycon.te01;
494 }
495 /*cs = MIN2(2.331,7.935*phycon.te/(phycon.te10*phycon.te03*phycon.te003));*/
496
497 /* the 2-3 transition
498 if( phycon.te <= 39811. )
499 {
500 cs = MIN2(5.78,3.114*phycon.te03*phycon.te03);
501 }
502 else
503 {
504 cs = 24.93/(phycon.te10*phycon.te03*phycon.te01/phycon.te001/
505 phycon.te001);
506 }*/
507
508 /* the 1-3 transition
509 cs = MIN2(1.413,0.221*phycon.te*phycon.te20/phycon.te03*phycon.te005);*/
510
511 /* S III 1194, data from
512 * >>refer s3 cs Ho, Y.K., & Henry,R.J.W. 1984, ApJ, 282, 816
513 * >>chng 97 may 17, to, about 2x larger than above
514 * >>refer s3 cs Tayal, S.S. 1997, ApJ 481, 550 */
515 if( phycon.te <= 3e4 )
516 {
517 siii_cs3P3D = 12.04/(phycon.te02*phycon.te02);
518 }
519 else if( phycon.te > 3e4 && phycon.te <= 4e4 )
520 {
521 siii_cs3P3D = 7.97;
522 }
523 else
524 {
525 siii_cs3P3D = 55.42/(phycon.te20/phycon.te02*phycon.te003);
526 }
527 /* S III] 1713.12, 1728.94, cs from
528 * >>refer s3 cs Hayes, M.A., 1986, J Phys B 19, 1853.
529 * cs = MIN( 4.0 , 7.794 / (te10/te02/te001/te001) )
530 * >>chng 97 may 17, about 20% smaller than before
531 * >>refer s3 cs Tayal, S.S. 1997, ApJ 481, 550 */
532 if( phycon.te <= 3e4 )
533 {
534 siii_cs3P5S2 = 1.786*phycon.te05*phycon.te01*phycon.te001;
535 }
536 else
537 {
538 siii_cs3P5S2 = 9.392/phycon.te10;
539 }
540
541}
542
543// siv_cs calculates collision strengths for transitions of S IV
544// unknown transition
545void siv_cs(double& siv_cs2P12P3)
546{
547 DEBUG_ENTRY( "siv_cs()" );
548 /* S IV 1062 */
549 /*>>refer S4 As Hibbert, A., Brage, T., Fleming, J. 2002, MNRAS 333, 885,
550 * typo noted in CHIANTI data file */
551 /*>>refer S4 cs Tayal S.S., 2000, ApJ, 530, 1091 */
552
553 /* S IV 10.5MI,
554 * >>refer s4 as Johnson, C.T., Kingston, A.E., Dufton, P.L. 1986, 220, 155
555 * >>referold s4 cs Johnson, C.T., Kingston, A.E., Dufton, P.L. 1986, MNRAS, 220, 155
556 * >>chng 97 feb 14, error in cs below t = 10,000K
557 * >>chng 96 dec 19, to CS from
558 * >>referold s4 cs Saraph, H.E., Storey, P.J., & Tully, J.A. 1995, 5th International
559 * >>referoldcon Colloquium on Atomic Spectra and Oscillator Strengths, ed. by
560 * >>referoldcon W.-U L. Tchang-Brillet, J.-F. Wyart, C.J. Zeippen,
561 * >>referoldcon (Meudon: Publications de l'Observaroire de Paris), p.110
562 * above said to be A&A in press */
563 /* >>refer s4 cs Tayal, S.S., 2000, ApJ, 530, 1091
564 */
565 if( phycon.te < 1e4 )
566 {
567 siv_cs2P12P3 = 3.71*phycon.te10/phycon.te01;
568 }
569 else
570 {
571 siv_cs2P12P3 = MIN2(8.5,19.472/(phycon.te10/phycon.te01));
572 }
573
574 return;
575}
576
577// sviii_cs calculates collision strengths for transitions of S VIII
578void sviii_cs(double& sviii_cs2P32P1)
579{
580 DEBUG_ENTRY( "sviii_cs()" );
581 /* S VIII 9913
582 * >>referold s8 cs Saraph, H.E. & Tully, J.A. 1994, A&AS, 107, 29 */
583 /*cs = MIN2(0.291,0.0289*phycon.te20/phycon.te01* phycon.te001);
584 cs = MAX2(0.192,cs);*/
585 /* >>refer s8 cs Berrington,K.A.,Saraph, H.E. & Tully, J.A. 1998, A&AS, 129,161 */
586 /*>>chng 06 jul 18 Changes made-Humeshkar Nemala*/
587 if(phycon.te < 6.4E5)
588 {
589 sviii_cs2P32P1 = (realnum)(0.0943*(phycon.te10/(phycon.te01*phycon.te001))*phycon.te0004);
590 }
591 else
592 {
593 sviii_cs2P32P1 = (realnum) (8.1555/(phycon.te20*phycon.te04*phycon.te004*phycon.te0002));
594 }
595
596 return;
597}
598
599
600
601
602
603
604
long ipTS34
long ipT1194
long ipT786
long ipTS19
long ipS1_25m
long ipT1256
long ipT1198
long ipTS11
long ipS4_1407
long ipTS1720
long ipS1_56m
long ipS4_1398
long ipS4_1405
long ipS4_1424
long ipS4_1417
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 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
void AtomSeqBeryllium(double cs12, double cs13, double cs23, const TransitionProxy &t, double a30)
void AtomSeqBoron(const TransitionProxy &t10, const TransitionProxy &t20, const TransitionProxy &t30, const TransitionProxy &t21, const TransitionProxy &t31, const TransitionProxy &t41, double cs40, double cs32, double cs42, double cs43, double pump_rate, const char *chLabel)
t_atoms atoms
Definition atoms.cpp:5
FILE * ioQQQ
Definition cddefines.cpp:7
#define MIN2
Definition cddefines.h:761
int dprintf(FILE *fp, const char *format,...)
Definition service.cpp:1009
float realnum
Definition cddefines.h:103
#define MAX2
Definition cddefines.h:782
const int ipSULPHUR
Definition cddefines.h:320
bool fp_equal(sys_float x, sys_float y, int n=3)
Definition cddefines.h:812
NORETURN void TotalInsanity(void)
Definition service.cpp:886
const int ipHYDROGEN
Definition cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition cddefines.h:684
long nWindLine
Definition cdinit.cpp:19
TransitionProxy::iterator iterator
Definition transition.h:280
void CoolAdd(const char *chLabel, realnum lambda, double cool)
Definition cool_etc.cpp:13
void siii_cs(double &siii_cs3P03P1, double &siii_cs3P03P2, double &siii_cs3P01D2, double &siii_cs3P01S0, double &siii_cs3P13P2, double &siii_cs3P11D2, double &siii_cs3P11S0, double &siii_cs3P21D2, double &siii_cs3P21S0, double &siii_cs1D21S0, double &siii_cs3P3D, double &siii_cs3P5S2)
void sii_cs(double &sii_cs4S32D3, double &sii_cs4S32D5, double &sii_cs4S32P1, double &sii_cs4S32P3, double &sii_cs2D32D5, double &sii_cs2D32P1, double &sii_cs2D52P1, double &sii_cs2D32P3, double &sii_cs2D52P3, double &sii_cs2P12P3, double &sii_cs4S34P)
void siv_cs(double &siv_cs2P12P3)
void CoolSulf(void)
Definition cool_sulf.cpp:20
void sviii_cs(double &sviii_cs2P32P1)
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
static double * g
Definition species2.cpp:28
TransitionList TauLine2("TauLine2", &AnonStates)
TransitionProxy::iterator TauDummy
Definition taulines.cpp:60
TransitionList TauLines("TauLines", &AnonStates)
t_thermal thermal
Definition thermal.cpp:5
void LineConvRate2CS(const TransitionProxy &t, realnum rate)
void DumpLine(const TransitionProxy &t)
void PutCS(double cs, const TransitionProxy &t)