cloudy  trunk
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 
20 void 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);
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
262  TotalInsanity();
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));
308  PutCS(cs,TauLines[ipT1198]);
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 */
337 void 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
434 void 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
545 void 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
578 void 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 
t_CoolHeavy::c10330
double c10330
Definition: coolheavy.h:86
thermal.h
ipS4_1405
long ipS4_1405
Definition: atmdat_readin.cpp:90
ipTS19
long ipTS19
Definition: atmdat_readin.cpp:77
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_dense::eden
double eden
Definition: dense.h:190
t_CoolHeavy::c6731
double c6731
Definition: coolheavy.h:85
ipS4_1407
long ipS4_1407
Definition: atmdat_readin.cpp:90
DumpLine
void DumpLine(const TransitionProxy &t)
Definition: transition.cpp:100
dense
t_dense dense
Definition: dense.cpp:24
ipTS11
long ipTS11
Definition: atmdat_readin.cpp:77
atoms.h
sviii_cs
void sviii_cs(double &sviii_cs2P32P1)
Definition: cool_sulf.cpp:578
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
t_CoolHeavy::c6312
double c6312
Definition: coolheavy.h:87
t_phycon::te001
double te001
Definition: phycon.h:67
realnum
float realnum
Definition: cddefines.h:103
nWindLine
long nWindLine
Definition: cdinit.cpp:19
siii_cs
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)
Definition: cool_sulf.cpp:434
sii_cs
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)
Definition: cool_sulf.cpp:337
atom_level3
void atom_level3(const TransitionProxy &t10, const TransitionProxy &t21, const TransitionProxy &t20)
Definition: atom_level3.cpp:15
ipS4_1398
long ipS4_1398
Definition: atmdat_readin.cpp:90
t_phycon::te03
double te03
Definition: phycon.h:59
t_CoolHeavy::S10373
realnum S10373
Definition: coolheavy.h:109
phycon
t_phycon phycon
Definition: phycon.cpp:6
t_phycon::te005
double te005
Definition: phycon.h:63
ipS1_56m
long ipS1_56m
Definition: atmdat_readin.cpp:95
TransitionList::begin
iterator begin(void)
Definition: transition.h:305
ProxyIterator
Definition: proxy_iterator.h:58
t_phycon::te004
double te004
Definition: phycon.h:64
embesq.h
lines_service.h
ipT1198
long ipT1198
Definition: atmdat_readin.cpp:76
CoolAdd
void CoolAdd(const char *chLabel, realnum lambda, double cool)
Definition: cool_etc.cpp:13
ipHYDROGEN
const int ipHYDROGEN
Definition: cddefines.h:305
ipS1_25m
long ipS1_25m
Definition: atmdat_readin.cpp:95
MIN2
#define MIN2
Definition: cddefines.h:761
t_CoolHeavy::S4070
realnum S4070
Definition: coolheavy.h:105
t_phycon::te0004
double te0004
Definition: phycon.h:72
siv_cs
void siv_cs(double &siv_cs2P12P3)
Definition: cool_sulf.cpp:545
dense.h
AtomSeqBoron
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)
Definition: atom_seq_boron.cpp:11
ipT1194
long ipT1194
Definition: atmdat_readin.cpp:75
coolheavy.h
t_phycon::te01
double te01
Definition: phycon.h:61
cooling.h
cddefines.h
ipSULPHUR
const int ipSULPHUR
Definition: cddefines.h:320
CoolSulf
void CoolSulf(void)
Definition: cool_sulf.cpp:20
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
thermal
t_thermal thermal
Definition: thermal.cpp:5
TotalInsanity
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
TauLine2
TransitionList TauLine2("TauLine2", &AnonStates)
t_CoolHeavy::c9532
double c9532
Definition: coolheavy.h:88
t_phycon::te02
double te02
Definition: phycon.h:60
PutCS
void PutCS(double cs, const TransitionProxy &t)
Definition: transition.cpp:317
MAX2
#define MAX2
Definition: cddefines.h:782
t_phycon::te30
double te30
Definition: phycon.h:53
ipS4_1417
long ipS4_1417
Definition: atmdat_readin.cpp:90
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
t_phycon::te003
double te003
Definition: phycon.h:65
t_phycon::te10
double te10
Definition: phycon.h:55
fp_equal
bool fp_equal(sys_float x, sys_float y, int n=3)
Definition: cddefines.h:812
LineConvRate2CS
void LineConvRate2CS(const TransitionProxy &t, realnum rate)
Definition: transition.cpp:521
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
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
t_thermal::dCooldT
double dCooldT
Definition: thermal.h:119
t_CoolHeavy::S10323
realnum S10323
Definition: coolheavy.h:107
taulines.h
CoolHeavy
t_CoolHeavy CoolHeavy
Definition: coolheavy.cpp:5
dprintf
int dprintf(FILE *fp, const char *format,...)
Definition: service.cpp:1009
t_CoolHeavy::S10339
realnum S10339
Definition: coolheavy.h:110
phycon.h
embesq
t_embesq embesq
Definition: embesq.cpp:5
ipS4_1424
long ipS4_1424
Definition: atmdat_readin.cpp:90
ipT786
long ipT786
Definition: atmdat_readin.cpp:76
ipT1256
long ipT1256
Definition: atmdat_readin.cpp:75
t_atoms::PopLevels
double PopLevels[LIMLEVELN+1]
Definition: atoms.h:270
t_phycon::te05
double te05
Definition: phycon.h:57
t_phycon::te
double te
Definition: phycon.h:11
t_embesq::em1198
realnum em1198
Definition: embesq.h:16
t_CoolHeavy::S6733
realnum S6733
Definition: coolheavy.h:103
t_CoolHeavy::S6718
realnum S6718
Definition: coolheavy.h:104
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
ipTS1720
long ipTS1720
Definition: atmdat_readin.cpp:76
t_CoolHeavy::S10289
realnum S10289
Definition: coolheavy.h:108
ipTS34
long ipTS34
Definition: atmdat_readin.cpp:77
t_CoolHeavy::S4078
realnum S4078
Definition: coolheavy.h:106
g
static double * g
Definition: species2.cpp:28