cloudy  trunk
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cool_carb.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 /*CoolCarb evaluate total cooling due to carbon */
4 #include "cddefines.h"
5 #include "physconst.h"
6 #include "embesq.h"
7 #include "phycon.h"
8 #include "taulines.h"
9 #include "dense.h"
10 #include "hmi.h"
11 #include "h2.h"
12 #include "mole.h"
13 #include "ligbar.h"
14 #include "thermal.h"
15 #include "colden.h"
16 #include "lines_service.h"
17 #include "atoms.h"
18 #include "carb.h"
19 #include "cooling.h"
20 
21 void CoolCarb(void)
22 {
23  double SaveAbun,
24  a21,
25  a31,
26  a32,
27  cs,
28  cs01,
29  cs02,
30  cs12,
31  cs13,
32  cs23,
33  cs2s2p,
34  cs2s3p ,
35  ortho_frac ,
36  popup,
37  popratio,
38  pump_rate;
39 
40  /* added to implement Peter van Hoof additions for new ground term
41  * atomic collision data */
42  double cse01,
43  cse12,
44  cse02,
45  csh01,
46  csh12,
47  csh02,
48  csp01,
49  csp12,
50  csp02,
51  csh201,
52  csh212,
53  csh202 ,
54  csh2p01,
55  csh2p12,
56  csh2p02,
57  csh2o01,
58  csh2o12,
59  csh2o02,
60  temp;
61  double cs_c2_h12=-1.;
62  realnum pciexc ,
63  sum;
64  int i;
65  static bool lgFirst=true;
66  static long int *ipC2Pump=NULL,
67  nC2Pump=0;
68 
69  DEBUG_ENTRY( "CoolCarb()" );
70 
72  TauDummy.Hi->g = 0.;
73  TauDummy.Lo->g = 0.;
74  TauDummy.Hi->IonStg = 0;
75  TauDummy.Lo->IonStg = 0;
76  TauDummy.Hi->nelem = 0;
77  TauDummy.Lo->nelem = 0;
78  TauDummy.Emis->Aul = 0.;
79  TauDummy.EnergyErg = 0.;
80  TauDummy.EnergyK = 0.;
81  TauDummy.EnergyWN = 0.;
82 
83  /* subroutine atom_level3( t10,t21,t20)
84  *
85  * Carbon cooling
86  *
87  * C I 1656, collision strength from transition prob */
88  /*PutCS(7.3,t1656);
89  atom_level2(t1656);*/
90  PutCS(7.3, &TauLines[ipT1656] );
91  atom_level2(&TauLines[ipT1656]);
92 
93  /* C I fine structure lines data originally from
94  * >>refer c1 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722
95  * >>chng 99 jun 01, to more recent ground term collision data
96  * by Peter van Hoof */
97 
98  /* effective collision strength of C I(3P) with e
99  * >>refer c1 cs Johnson, C.T., Burke, P.G., Kingston, A.E. 1987, JPhB, 20, 2553
100  * these data are valid for 7.5K <= Te <= 10,000K*/
101  if( phycon.te<=3.0e3 )
102  {
103  /* the first fit is valid for 10K <= Te <= 300K,
104  * the second 300K <= Te <= 3000K*/
105  cse01 = MAX2(4.80E-06*phycon.te*phycon.te20/phycon.te03,
106  8.24E-07*phycon.te32/phycon.te01);
107 
108  cse12 = MAX2(7.67E-05*phycon.te/phycon.te10/phycon.te03,
109  1.47E-06*phycon.te32*phycon.te10/phycon.te03);
110 
111  cse02 = MAX2(4.72E-05*phycon.te70*phycon.te03,
112  3.05E-07*phycon.te32*phycon.te10);
113  }
114  else
115  {
116  /* the first fit is valid for 300K <= Te <= 3000K,
117  * the second up to 10,000K */
118  cse01 = MIN2(8.24E-07*phycon.te32/phycon.te01,
119  0.0035*phycon.sqrte*phycon.te01);
120 
121  cse12 = MIN2(1.47E-06*phycon.te32*phycon.te10/phycon.te03,
123 
124  cse02 = MIN2(3.05E-07*phycon.te32*phycon.te10,
126  }
127 
128  /* >>chng 04 nov 24, upper limit of 1000K is too low - for low Z DLA clouds we need
129  * C^0 populations at higher temperature - these are simple power laws - extrapolate them
130  * to 3x too high a temp */
131  /* rate coefficients for collisional de-excitation of C I(3P) with neutral H(2S1/2)
132  * >>refer c1 cs Launay & Roueff 1977, A&A 56, 289
133  * the first fit is for Te <= 100K, the second for Te >= 250K
134  * these data are valid for 4K <= Te <= 1000K*/
135  csh01 = MAX2(1.61e-10,5.66e-11*phycon.te20);
136 
137  /* these data are valid for 7K <= Te <= 1000K*/
138  csh12 = MAX2(1.93e-10*phycon.te05*phycon.te03,
139  5.64e-11*phycon.te30*phycon.te02);
140 
141  /* these data are valid for 10K <= Te <= 1000K*/
142  csh02 = MAX2(1.08e-10/phycon.te03,
143  1.67e-11*phycon.te30*phycon.te02*phycon.te02);
144 
145  /* >>chng 05 may 23, collisional de-excitations rate co-efficients (cm3s-1) of C I by proton*/
146  /*>>refer C1 cs Roueff, E. & Le Bourlot, J. 1990, A&A 236, 515
147  * upward rates are given for 100 to 20,000K*/
148  /* csp01 starts increasing below 25 K, but csp02 and csp12 behave properly*/
149  if( phycon.te < 25. )
150  temp = 25.;
151  else if( phycon.te >20000. )
152  temp = 20000.;
153  else
154  temp = phycon.te;
155  csp01 = 1e-9*pow((4.3671821 - 14.39018/log(temp)),2)*(1./3.)*exp(16.4*T1CM/temp);
156  csp12 = 1e-9*exp(3.2823932 - 60.99754*(log(temp)/temp))*(1./5.)*exp(37.1*T1CM/temp);
157  csp02 = 1e-9/(0.033932579+ (1503.4042/pow(temp,1.5)))*(3./5.)*exp(43.5*T1CM/temp);
158 
159  /* >>chng 05 feb 03, this logic had set H2 collisions to zero when
160  * temperature was > 1.2e3. this is unphysical. change to use
161  * 1200K collision rate at all higher temperatures. this is a constant
162  * rate, and the original paper suggested that the rate was fairly
163  * constant at higher tabulated temperatures
164  if( phycon.te<=1.2e3 )*/
165  /* >>chng 04 mar 15, use explicit ortho-para densities */
166  ortho_frac = h2.ortho_density/SDIV(hmi.H2_total);
167 
168  /* rate coefficients for collisional de-excitation of C I(3P) with H2(J=1,0)
169  * >>refer c1 cs Schroeder et al. 1991, J.Phys.B 24, 2487
170  * these data are valid for 10K <= Te <= 1200K
171  * the first entry is contribution from ortho H2, the second para H2.*/
172  if( phycon.te<=30. )
173  {
174  csh2p01 = MIN2(8.38E-11*phycon.te05*phycon.te01,
175  2.12e-10/phycon.te20/phycon.te05/phycon.te01);
176 
177  csh2o01 = MIN2(5.17E-11*phycon.te10*phycon.te05,
178  1.07e-10/phycon.te10*phycon.te01);
179  }
180  else if( phycon.te<=150. )
181  {
182  csh2p01 = MAX2(6.60e-11,
183  2.12e-10/phycon.te20/phycon.te05/phycon.te01);
184 
185  csh2o01 = MAX2(7.10e-11,
186  1.07e-10/phycon.te10*phycon.te01);
187  }
188  else
189  {
190  /* this is high temperature branch - increasing function of T,
191  * so hits cap set by min */
192  csh2p01 = MAX2(6.60e-11,3.38e-11*phycon.te10*phycon.te03);
193  csh2p01 = MIN2(8.10e-11,csh2p01);
194 
195  csh2o01 = MAX2(7.1e-11,3.37e-11*phycon.te10*phycon.te02*phycon.te02);
196  csh2o01 = MIN2(8.57e-11,csh2o01);
197  }
198 
199  /* use computed ortho and para H2 densities to get total collision rate */
200  csh201 = ortho_frac*csh2o01 + (1.-ortho_frac)*csh2p01;
201  if( phycon.te<=30. )
202  {
203  csh2p12 = MIN2(1.48E-10*phycon.te05*phycon.te02,
204  2.25e-10/phycon.te03/phycon.te03);
205  }
206  else if( phycon.te <= 100. )
207  {
208  csh2p12 = MAX2(1.75e-10,
209  2.25e-10/phycon.te03/phycon.te03);
210  }
211  else
212  {
213  csh2p12 = MAX2(1.75e-10,6.23e-11*phycon.te20*phycon.te01);
214  csh2p12 = MIN2(2.61e-10,csh2p12);
215  }
216 
217  csh2o12 = MIN2(2.83e-10,4.46e-11*phycon.te30/phycon.te03);
218  {
219  /*csh212 = 0.75*csh2o12 + 0.25*csh2p12;*/
220  csh212 = ortho_frac*csh2o12 + (1.-ortho_frac)*csh2p12;
221  }
222 
223  if( phycon.te<=30 )
224  {
225  csh2p02 = MIN2(8.67E-11*phycon.te02*phycon.te02,
226  1.35e-10/phycon.te10);
227  }
228  else if( phycon.te<=150. )
229  {
230  csh2p02 = MAX2(8.40e-11,
231  1.35e-10/phycon.te10);
232  }
233  else
234  {
235  csh2p02 = MAX2(8.4e-11,4.04e-11*phycon.te10*phycon.te02*phycon.te02);
236  csh2p02 = MIN2(1.04e-10,csh2p02);
237  }
238 
239  csh2o02 = MIN2(1.11e-10,3.16e-11*phycon.te20/phycon.te02);
240  /*csh202 = 0.75*csh2o02 + 0.25*csh2p02;*/
241  csh202 = ortho_frac*csh2o02 + (1.-ortho_frac)*csh2p02;
242 
245  /* assume CS for He^0 is the same as H^0*/
246  /*cs01 = cse01 + 3.*(csh01*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh201*hmi.Hmolec[ipMH2g])/dense.cdsqte;
247  cs12 = cse12 + 5.*(csh12*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh212*hmi.Hmolec[ipMH2g])/dense.cdsqte;
248  cs02 = cse02 + 5.*(csh02*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csh202*hmi.Hmolec[ipMH2g])/dense.cdsqte;*/
249  cs01 = cse01 + 3.*(csh01*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp01*dense.xIonDense[ipHYDROGEN][1] + csh201*hmi.H2_total)/dense.cdsqte;
250  cs12 = cse12 + 5.*(csh12*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp12*dense.xIonDense[ipHYDROGEN][1] + csh212*hmi.H2_total)/dense.cdsqte;
251  cs02 = cse02 + 5.*(csh02*(dense.xIonDense[ipHYDROGEN][0]+dense.xIonDense[ipHELIUM][0]) + csp02*dense.xIonDense[ipHYDROGEN][1] + csh202*hmi.H2_total)/dense.cdsqte;
252 
253  PutCS( cs01 , &TauLines[ipT610] );
254  PutCS( cs12 , &TauLines[ipT370] );
255  PutCS( cs02 , &TauDummy );
256 
257  /* ======================================================== */
258  /* end changes 99 Jun 01, by Peter van Hoof */
259  atom_level3(
260  &TauLines[ipT610],
261  &TauLines[ipT370],
262  &TauDummy);
263 
264  /* now save pops to add col den in radinc */
265  for( i=0; i<3; ++i)
266  {
267  /* >>chng 02 oct 23, bug - had been C1Colden rather than C1Pops */
269  }
270 
271  /* C I 9850, 8727, A from
272  * >>refer c1 as Mendoza, C. 1982, in Planetary Nebulae, IAU Symp No. 103,
273  * >>refercon ed by D.R. Flower, (D. Reidel: Holland), 143 */
274  if( dense.xIonDense[ipCARBON][0] > 0. && phycon.te < 40000. )
275  {
276  cs12 = 1.156e-4*phycon.te*(1.09 - 7.5e-6*phycon.te - 2.1e-10*
277  phycon.te*phycon.te);
278  cs13 = 2.8e-3*phycon.sqrte;
279  cs23 = 2.764e-3*phycon.sqrte;
280 
281  a21 = 3.26e-4*TauLines[ipT9830].Emis->Pesc;
282  a31 = 2.73e-3;
283  a32 = 0.528*TauLines[ipT8727].Emis->Pesc;
285  carb.c8727 = atom_pop3(9.,5.,1.,cs12,cs13,cs23,a21,a31,a32,
286  1.417e4,1.255e4,&pciexc,dense.xIonDense[ipCARBON][0],0.,0.,0.)*a32*
287  2.28e-12;
290  TauLines[ipT9830].Hi->Pop = 0.;
291  TauLines[ipT9830].Coll.cs = (realnum)cs12;
292  TauLines[ipT8727].Emis->PopOpc = (carb.c8727/(a32*2.28e-12));
293  TauLines[ipT8727].Lo->Pop = (carb.c8727/(a32*2.28e-12));
294  TauLines[ipT8727].Hi->Pop = 0.;
295  TauLines[ipT8727].Coll.cs = (realnum)cs23;
296 
297  carb.c9850 = pciexc*a21*2.02e-12;
300 
301  /* C I 9850 correction for deexcitation, needed for rec line */
302  carb.r9850 = (realnum)(a21/(a21 + cs12/5.*COLL_CONST/phycon.sqrte*dense.eden));
303  }
304 
305  else
306  {
307  carb.c9850 = 0.;
308  carb.c8727 = 0.;
309  carb.r9850 = 0.;
310  TauLines[ipT9830].Emis->PopOpc = 0.;
311  TauLines[ipT9830].Lo->Pop = 0.;
312  TauLines[ipT9830].Hi->Pop = 0.;
313  TauLines[ipT8727].Emis->PopOpc = 0.;
314  TauLines[ipT8727].Lo->Pop = 0.;
315  TauLines[ipT8727].Hi->Pop = 0.;
316  }
317  CoolAdd("C 1",8727,carb.c8727);
318  CoolAdd("C 1",9850,carb.c9850);
319 
320  /* one time initialization if first call, and level 2 lines are on */
321  if( lgFirst && nWindLine )
322  {
323  lgFirst = false;
324  nC2Pump = 0;
325  for( i=0; i<nWindLine; ++i )
326  {
327  /* don't test on nelem==ipCARBON since lines on physics, not C, scale */
328  if( TauLine2[i].Hi->nelem ==6 && TauLine2[i].Hi->IonStg==2 )
329  {
330  ++nC2Pump;
331  }
332  }
333  if( nC2Pump<0 )
334  TotalInsanity();
335  else if( nC2Pump > 0 )
336  /* create the space - can't malloc 0 bytes */
337  ipC2Pump = (long *)MALLOC((unsigned)(nC2Pump)*sizeof(long) );
338  nC2Pump = 0;
339  for( i=0; i<nWindLine; ++i )
340  {
341  /* don't test on nelem==ipCARBON since lines on physics, not C, scale */
342  if( TauLine2[i].Hi->nelem ==6 && TauLine2[i].Hi->IonStg==2 )
343  {
344 # if 0
345  DumpLine( &TauLine2[i] );
346 # endif
347  ipC2Pump[nC2Pump] = i;
348  ++nC2Pump;
349  }
350  }
351  }
352  else
353  /* level 2 lines are not enabled */
354  nC2Pump = 0;
355 
356  /* now sum pump rates */
357  pump_rate = 0.;
358  for( i=0; i<nC2Pump; ++i )
359  {
360  pump_rate += TauLine2[ipC2Pump[i]].Emis->pump;
361 # if 0
362  fprintf(ioQQQ,"DEBUG C %li %.3e %.3e\n",
363  i,
364  TauLine2[ipC2Pump[i]].WLAng , TauLine2[ipC2Pump[i]].pump );
365 # endif
366  }
367 
368  /* C II 158 micron emission, A=
369  * >>refer c2 as Froese Fischer, C. 1983, J.Phys. B, 16, 157
370  * CS From
371  * >>refer c2 cs Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425
372  * neutral collision data from
373  * >>refer c2 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722
374  * >>chng 96 aug 01, better fit to cs */
375  /* following is a more recent calculation but without extensive tables */
376  /* >>refer c2 cs Wilson, N.J., & Bell, K.L. 2002, MNRAS, 337, 1027-1034 */
377  /* >>chng 03 feb 24, break apart electron and neutral hydrogen for book keeping*/
378  /*cs = MIN2(2.20,0.403*phycon.te20/phycon.te02*phycon.te001*phycon.te001) +
379  5.8e-10*phycon.te02/dense.cdsqte*4.*(dense.xIonDense[ipHYDROGEN][0] +
380  hmi.Hmolec[ipMH2g]);*/
381  /* electron collision strength */
382  cse12 = MIN2(2.20,0.403*phycon.te20/phycon.te02*phycon.te001*phycon.te001);
383 
384  /* atomic hydrogen collision strength, include H2 with same rate */
385  /* >>referold c2 cs Tielens, A.G.G., & Hollenbach, D. 1985, ApJ, 291, 722 */
386  /*cs_c2_h12 = 5.8e-10*phycon.te02/dense.cdsqte*4.*(dense.xIonDense[ipHYDROGEN][0] +
387  hmi.Hmolec[ipMH2g]);*/
388  /* >> chng 05 may 21, GS, rate with hydrogen is updated from following */
389  /* >>refer c2 cs Barinovs, G., van Hemert, M., Krems, R. & Dalgarno, A. 2005, ApJ, 620, 537 */
390  temp = MIN2(2e3, phycon.te);
391 
392  /* evaluate the rate at the temperature set above, if temperature is above 2000 K
393  * then it is evaluated at 2000K - first line is just rate as given in paper */
394  cs_c2_h12 = 1e-10*(4.4716028+ 0.69658785*pow(temp, 0.31692387));
395 
396  if(phycon.te > 2e3)
397  {
398  /* temperature is above 2000 K so extrapolate rate as a power law */
399  cs_c2_h12 *= pow(phycon.te/2e3, 0.31692387);
400  }
401 
402  /* now convert rate into equivalent cs */
403  cs_c2_h12 *= 4.*(dense.xIonDense[ipHYDROGEN][0] + hmi.Hmolec[ipMH2g])/dense.cdsqte;
404 
405  /* >>chng 05 apr 10, make sure we have good current set of vars */
407  dense.EdenHCorr < 1e-8 );
408 
409  PutCS( cse12+cs_c2_h12 ,&TauLines[ipT157]);
410 
411  /* CII 1335 all collision strengths and A'S from
412  * >>refer c2 cs Lennon, D.J., Dufton, P.L., Hibbert, A., Kingston, A.E. 1985, ApJ, 294, 200
413  * >>refer c2 cs Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425 */
414  cs = MIN2(6.73,2.316*phycon.te10);
415  PutCS(cs,&TauLines[ipT1335]);
416  atom_level2(&TauLines[ipT1335]);
417 
418  /*atom_level2(&TauLines[ipT157]);*/
419  /*AtomSeqBoron compute cooling from 5-level boron sequence model atom */
420  /* >>refer c2 cs Blum, R.D., & Pradhan, A.K., 1992, ApJS 80, 425
421  * >>refer c2 cs Lennon, D.J., Dufton, P.L., Hibbert, A., Kingston, A.E. 1985, ApJ, 294, 200*/
422  /* >>refer c2 as Nahar, S.N. 2003, ADNDT, 80, 205 */
423  AtomSeqBoron(&TauLines[ipT157],
424  &TauLines[ipC2_2325],
425  &TauLines[ipC2_2324],
426  &TauLines[ipC2_2329],
427  &TauLines[ipC2_2328],
428  &TauLines[ipC2_2327],
429  0.2349 , 0.8237 , 0.8533 , 1.9818 , pump_rate , "C 2");
430  {
431  /* following should be set true to print contributors */
432  enum {DEBUG_LOC=false};
433  if( DEBUG_LOC && nzone > 80 )
434  {
435  fprintf(ioQQQ,"DEBUG\t%.2f\t%.3e\t%.3e\t%.2e\t%.2e\t%.2e\t%.2e\n",
436  fnzone ,
437  phycon.te,
438  TauLines[ipT157].Coll.cool ,
439  cse12,
440  csh12,
441  dense.eden,
443  }
444  }
445 
446  sum = 0.;
447  /* now save pops to add col den in radinc */
448  for( i=0; i<5; ++i)
449  {
451  sum += colden.C2Pops[i];
452  }
453  ASSERT( fabs(sum-dense.xIonDense[ipCARBON][1])/SDIV(dense.xIonDense[ipCARBON][1]) < 1e-4 );
454 
455  /* following used for pumping - cs just made up - no real data */
456  PutCS(.1,&TauLines[ipT386]);
457  atom_level2(&TauLines[ipT386]);
458 
459  PutCS(.1,&TauLines[ipT310]);
460  atom_level2(&TauLines[ipT310]);
461 
462  PutCS(.1,&TauLines[ipT291]);
463  atom_level2(&TauLines[ipT291]);
464 
465  PutCS(.1,&TauLines[ipT280]);
466  atom_level2(&TauLines[ipT280]);
467 
468  PutCS(.1,&TauLines[ipT274]);
469  atom_level2(&TauLines[ipT274]);
470 
471  PutCS(.1,&TauLines[ipT270]);
472  atom_level2(&TauLines[ipT270]);
473 
474  /* C III 1909
475  * A for 1909 itself from
476  * >>refer c3 as Kwong, V., Fang, Z., Gibbons, T.T., Parkinson, W.H., Smith, P.L.
477  * >>refercon 1993, ApJ, 411, 431
478  * experimental value of 121 is larger than old NS 96, cs from
479  * >>refer c3 cs Berrington, K.A., Burke, P.G., Dufton, P.L., Kingston, A.E. 1985,
480  * >>refercon At. Data Nucl. Data Tables, 33, 195
481  * AtomSeqBeryllium(CS23,CS24,CS34,tarray,A41) */
482  /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */
483  /* >>refer c2 as Nahar, S.N. 2003, ADNDT, 80, 205 */
484  cs = MIN2(1.1,2.67/phycon.te10);
485  a21 = 5.149e-3;
486  PutCS(cs,&TauLines[ipT1909]);
487  /* C1909 = AtomSeqBeryllium(.96,.73,2.8 , T1909 ,5.19E-3 )
488  * A's
489  * >>refer c3 as Fleming, J., Bell, K.L, Hibbert, A., Vaeck, N., Godefroid, M.R.
490  * >>refercon 1996, MNRAS, 279, 1289 */
491  AtomSeqBeryllium(.96,.73,2.8,&TauLines[ipT1909],a21);
492  embesq.em1908 = (realnum)(atoms.PopLevels[3]*a21*1.04e-11);
493  /*DumpLine(&TauLines[ipT1909]);*/
494 
495  /* >>chng 02 mar 08, add 13C line - this is totally forbidden for 12C
496  * and so provides a mathod of deducing 13C/12C */
497  /* >>refer C3 13C As Clegg, R.E.S., Storey, P.J., Walsh, J.R., & Neale, L.
498  * >>refercon 1997, MNRAS, 284, 348 */
499  a21 = 6.87e-4;
500  /* this is the correction for depopulation of the P_0 level due to A21, which is no
501  * present in 12C */
502  cs = 2.8*dense.cdsqte/5.*1.667;
503  popratio = cs/(cs + a21);
504  embesq.em13C1910 = (realnum)(a21 * atoms.PopLevels[1]*popratio* 1.04e-11 / co.C12_C13_isotope_ratio);
505 
506  /* CIII 1175 excited state line
507  * following were computed by previous call to AtomSeqBeryllium */
508  /*popup = atoms.PopLevels[1] + atoms.PopLevels[2] + atoms.PopLevels[3];*/
509  popup = 0.;
511  for( i=1; i<4; ++i)
512  {
513  popup += atoms.PopLevels[i];
515  }
516 
517  SaveAbun = dense.xIonDense[ipCARBON][2];
518  dense.xIonDense[ipCARBON][2] = (realnum)popup;
519  /* cs
520  * >>refer c3 cs Berrington, K.A., Burke, P.G., Dufton, P.L., Kingston, A.E. 1985,
521  * >>refercon At. Data Nucl. Data Tables, 33, 195 */
522  cs = MIN2(30.,4.806*phycon.te10*phycon.te05/phycon.te01/phycon.te003);
523  PutCS(18.45,&TauLines[ipc31175]);
524  atom_level2(&TauLines[ipc31175]);
525  dense.xIonDense[ipCARBON][2] = (realnum)SaveAbun;
526 
527  /* C III 977, cs from
528  * >>refer c3 cs Berrington, K.A. 1985, J.Phys. B, 18, L395 */
529  cs = MIN2(7.0,1.556*phycon.te10);
530  PutCS(cs,&TauLines[ipT977]);
531  atom_level2(&TauLines[ipT977]);
532 
533  /* CIV 1548, 1550 doublet
534  * >>refer c4 cs Cochrane, D.M., & McWhirter, R.W.P. 1983, PhyS, 28, 25 */
535  ligbar(
536  6,
537  &TauLines[ipT1548],
538  &TauLines[ipT312],
539  &cs2s2p,&cs2s3p);
540  PutCS(cs2s2p,&TauLines[ipT1548]);
541  PutCS(cs2s2p*0.5,&TauLines[ipT1550]);
542  PutCS(1.0,&TauDummy);
543  atom_level3(
544  &TauLines[ipT1550],
545  &TauDummy,
546  &TauLines[ipT1548]);
547 
548  PutCS(cs2s3p,&TauLines[ipT312]);
549  atom_level2(&TauLines[ipT312]);
550  return;
551 }

Generated for cloudy by doxygen 1.8.4