cloudy trunk
Loading...
Searching...
No Matches
prt_lines_lv1_li_ne.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/*lines_lv1_li_ne place lines of elements lithium through neon into lines storage stack */
4/*GetLineRec return recombination coefficient*hnu*eden*n_ion for C, N, or O recombination lines from Dima's list,
5 * also zero's line in master stack so not entered second time in later dump of all rec lines */
6#include "cddefines.h"
7#include "carb.h"
8#include "nitro.h"
9#include "oxy.h"
10#include "coolheavy.h"
11#include "atmdat.h"
12#include "doppvel.h"
13#include "ionbal.h"
14#include "dense.h"
15#include "phycon.h"
16#include "physconst.h"
17#include "atoms.h"
18#include "mole.h"
19#include "embesq.h"
20#include "taulines.h"
21#include "trace.h"
22#include "lines_service.h"
23#include "lines.h"
24STATIC double GetLineRec(
25 /* this is the number of the emission line in the stack of lines, on the C scale */
26 long int ip,
27 /* the multiplet wavelength */
28 long int lWl);
29
31{
32 long int ipnt;
33 double
34 chem ,
35 corr,
36 ct4363,
37 ctRate,
38 efac,
39 effec,
40 efficn2,
41 fac,
42 HBeta ,
43 p386,
44 pump,
45 r4363,
46 r6584,
47 raten3,
48 rb,
49 rec,
50 rn3mor,
51 rn3tot,
52 rnii,
53 rp300,
54 rp386,
55 r12 ,
56 r13 ,
57 sum,
58 rate_OH_dissoc;
59 double rec7323 , rec7332, rec3730 , rec3726 , rec2471,
60 reco23tot , reco22tot;
61
62 DEBUG_ENTRY( "lines_lv1_li_ne()" );
63
64 if( trace.lgTrace )
65 {
66 fprintf( ioQQQ, " lines_lv1_li_ne called\n" );
67 }
68
69 /* level 1 ines */
70 ipnt = StuffComment( "level 1 lines" );
71 linadd( 0., (realnum)ipnt , "####", 'i',
72 " start level 1 ines" );
73
74 linadd(CoolHeavy.colmet,0,"Mion",'c',
75 " cooling due to collisional ionization of heavy elements" );
76
77 /* lithium */
78
79 /* beryllium */
80
81 /* boron*/
82
83 /* carbon*/
84
85 /* >>chng 97 may 02, added better rec coefficient
86 * C I 1656 recombination, all agents */
87 //rec = GetLineRec(3,1657)*(1.-TauLines[ipT1656].Emis().ColOvTot());
88 rec = GetLineRec(3,1657)*emit_frac(TauLines[ipT1656]);
89 PutExtra(rec);
90
92 " C 1 1656, collision strength from van Regemoter");
93
94 linadd(rec,1656,"REC ",'i',
95 " C 1 1656 recomb; n.b. coll deexcitation not in" );
96
97 PntForLine(9850.,"C 1",&ipnt);
98 lindst(carb.c9850,9850,"C Ic",ipnt,'c',true,
99 " C 1 9850, coll excit" );
100
101 /* >>chng 97 may 02, added better rec coefficient
102 * C 1 9850, recombination contribution rec coefficient from
103 * >>refer C1 rec Escalante, Vladimir, & Victor, G.A., 1990, ApJS 73, 513.
104 * r9850 is correction for collisional deexcitation as in carb cool
105 * >>chng 97 aug 2, had factor of rec, changed to r9850, this
106 * was a big mistake */
107 rec = (GetLineRec(1,9088) + GetLineRec(2,9658))*carb.r9850;
108 lindst(rec,9850,"C Ir",ipnt,'r',true,
109 " C I 9850 recombination contribution" );
110
111 // total intensity added as information line but in outward
112 // beam since cooling done above
113 linadd(rec+carb.c9850,9850,"TOTL",'i',
114 " total intensity, all processes, C I 9850");
115
116
117 PntForLine(8727.,"C 1",&ipnt);
118 lindst(carb.c8727,8727,"C 1",ipnt,'t',true,
119 "C 1 8727; equivalent to 4363" );
120
121 linadd(carb.c8727*1.22e-6,4621,"C 1",'c',
122 " 1S - 3P" );
123
125 " C 1 610 micron ");
126
128 " C 1 370 micron ");
129
131 " C 2 158 micron, both e- and H0, H2 in excitation ");
132
133 linadd(
134 TauLines[ipC2_2325].Emis().xIntensity()+
135 TauLines[ipC2_2324].Emis().xIntensity()+
136 TauLines[ipC2_2329].Emis().xIntensity()+
137 TauLines[ipC2_2328].Emis().xIntensity()+
138 TauLines[ipC2_2327].Emis().xIntensity()+
139 ionbal.PhotoRate_Shell[ipCARBON][0][1][0]*dense.xIonDense[ipCARBON][0]*0.1*8.6e-12,
140 2326,"TOTL",'i',
141 " total intensity of C II] 2326, all lines in the multiplet " );
143 " ");
145 " ");
147 " ");
149 " ");
151 " ");
152
153 linadd(ionbal.PhotoRate_Shell[ipCARBON][0][1][0]*dense.xIonDense[ipCARBON][0]*0.1*8.6e-12,2326,"Phot",'i' ,
154 " photoproduction, Helfand and Trefftz");
155
156 /* >>chng 97 may 02, better rec coef */
157 /*rec = GetLineRec(11,1335)*(1.-TauLines[ipT1335].ColOvTot());*/
158 /* >>chng 02 jul 01, add function to return emission probability */
159 rec = GetLineRec(11,1335)*emit_frac(TauLines[ipT1335]);
160
161 /* total intensity of C 2 1335 */
162 PutExtra(MAX2(0.,rec));
164 " total intensity of C 2 1335");
165
166 linadd(rec,1335,"REC ",'i',
167 " C 2 1335 recombination," );
168
169 /* the CII 3918.98/3920.68 and 6578.05/6582.88 multiplets,
170 * contributions by both continuum pumping through XUV line
171 * and recombination */
172 /* this is the driving line, pump is photons cm^-3 s^-1 */
173 if( nWindLine > 0 )
174 {
175 pump = TauLine2[186].Emis().pump()*TauLine2[186].Emis().PopOpc();
176 }
177 else
178 {
179 pump = 0.;
180 }
181
182
183 // pumped 3920, count as recomb since does remove energy
184 PntForLine(3920.,"C 2",&ipnt);
185 lindst(pump*0.387 * 5.08e-12/(1.+dense.eden/1e12) ,3920,"pump",ipnt,'t',true ,
186 " CII 3918.98/3920.68 is only pumped, no recombination part");
187
188 /* recombination and specific pump for CII 5684 */
189 rec = GetLineRec(8, 6580 );
190 /* convert UV pump rate to intensity with branching ratio and hnu */
191 pump *= 0.305 * 0.387 * 3.02e-12;
192 linadd(rec/(1.+dense.eden/1e12),6580,"C 2r",'i',
193 " recombination part of C II 6580 line " );
194 linadd(pump/(1.+dense.eden/1e12),6580,"C 2p",'i',
195 " pumped part of line C II 6580" );
196
197 // pumped 3920, count as recomb since does remove energy
198 PntForLine(6580.,"C 2",&ipnt);
199 lindst((rec+pump)/(1.+dense.eden/1e12),6580,"TOTL",ipnt,'t',true ,
200 " total intensity, all processes, C II 6580");
201
202 /* C 3 977
203 * recombination contribution from nussbaumer and story 84 */
204 /*rec = GetLineRec(179,977)*(1.-TauLines[ipT977].ColOvTot());*/
205 /* >>chng 02 jul 01, add function to compute emission fraction */
206 rec = GetLineRec(179,977)*emit_frac(TauLines[ipT977]);
207
208 /* continuum pumped C 3 977 by continuum near 386A */
209 rp386 = TauLines[ipT386].Emis().pump()*TauLines[ipT386].Emis().PopOpc();
210
211 /* higher lines, same process */
212 rp300 = TauLines[ipT310].Emis().pump()*TauLines[ipT310].Emis().PopOpc() +
213 TauLines[ipT291].Emis().pump()*TauLines[ipT291].Emis().PopOpc() +
214 TauLines[ipT280].Emis().pump()*TauLines[ipT280].Emis().PopOpc() +
215 TauLines[ipT274].Emis().pump()*TauLines[ipT274].Emis().PopOpc() +
216 TauLines[ipT270].Emis().pump()*TauLines[ipT270].Emis().PopOpc();
217
218 /* total line intensity due to pumping */
219 /*p386 = (rp386 + rp300)*2.03e-11*(1.-TauLines[ipT977].ColOvTot());*/
220 /* >>chng 02 jul 01, add function to compute emission fraction */
221 p386 = (rp386 + rp300)*2.03e-11*emit_frac(TauLines[ipT977]);
222
223 /* total C 3 977 including recombination and pumping */
224 PutExtra(p386+MAX2(0.,rec));
225
227 " total C 3] 977, recombination + collisional + pumped excitation ");
228
229 linadd(rec,977,"C3 R",'i',
230 " dielectronic recombination contribution to C 3 977 " );
231
232 linadd(p386,977,"P386",'i',
233 " C 3 977 pumped by continuum near 386A" );
234
235 /* C 3 1909 collision, both lines together */
236 fac = embesq.em1908 + TauLines[ipT1909].Emis().xIntensity();
237 lindst(fac,1909,"TOTL",TauLines[ipT1909].ipCont(),'t',false,
238 "C 3 1909 collision, both lines together");
239
240 // the faster line, which might become optically thick
242 "C III 19091");
243
244 // the very slow transition
245 PntForLine(1907.,"C 3",&ipnt);
246 lindst(embesq.em1908,1907,"C 3",ipnt,'t',true,
247 " C 3 1908 j-2 to ground" );
248
249 lindst(embesq.em13C1910,1910,"13C3",ipnt,'t',true,
250 " the 13C forbidden line of C III " );
251
252 /*corr = 1.-TauLines[ipT1909].ColOvTot();*/
253 /* >>chng 02 jul 01, add function to compute emission fraction */
254 corr = emit_frac(TauLines[ipT1909]);
255 fac = dense.eden*dense.xIonDense[ipCARBON][3]/(phycon.te/phycon.te10);
256
257 linadd(3.1e-19*fac*corr,1909,"C3 R",'i',
258 " C 3 1909 recombination from Storey" );
259
260 linadd(ionbal.PhotoRate_Shell[ipCARBON][1][1][0]*dense.xIonDense[ipCARBON][1]*0.62*corr*1.05e-11,1909,"Phot",'i',
261 " C 3 1909 following relax following inner shell photoionization" );
262
263 /* >>chng 97 may 02, better rec ocef */
264 /*rec = GetLineRec(178,1176)*(1.-TauLines[ipc31175].ColOvTot());*/
265 /* >>chng 02 jul 01, add function to compute emission fraction */
266 rec = GetLineRec(178,1176)*emit_frac(TauLines[ipc31175]);
267 PutExtra(MAX2(0.,rec));
268
270 " C 3* 1175, excited state line, above 1909 ");
271
272 linadd(MAX2(0.,rec),1175,"Rec ",'i',
273 " dielectronic recombination contribution to C 3 1175 " );
274
275 /* recombination C 4 1549 from C 5
276 * >>chng 97 may 02, better rec coef */
277 /*rec = GetLineRec(25,1549)*(1.-TauLines[ipT1550].ColOvTot());*/
278 /* >>chng 02 jul 01, add function to compute emission fraction */
279 rec = GetLineRec(25,1549)*emit_frac(TauLines[ipT1550]);
280
281 linadd(
282 TauLines[ipT1550].Emis().xIntensity()+
283 TauLines[ipT1548].Emis().xIntensity()+
284 rec,1549,"TOTL",'i',"total intensity of C 4 1549, all processes " );
285
286 sum =
287 TauLines[ipT1550].Emis().xIntensity()*TauLines[ipT1550].Emis().FracInwd() +
288 TauLines[ipT1548].Emis().xIntensity()*TauLines[ipT1548].Emis().FracInwd();
289
290 linadd(sum+rec*TauLines[ipT1550].Emis().FracInwd(),1549,"Inwd",'i',
291 "inward part of C 4 " );
292
293 PutExtra(rec*.3333);
295 " ");
296
297 PutExtra(rec*.6666);
299 " ");
300
301 linadd((TauLines[ipT1550].Emis().ots()+
302 TauLines[ipT1548].Emis().ots())*TauLines[ipT1548].EnergyErg(),
303 1549,"DEST",'i',
304 " part of line destroyed by photoionization of Balmer continuum " );
305
306 linadd(rec,1549,"C4 r",'i',
307 " recombination C 4 1549 from CV" );
308
310 " Li seq 2s 3p Li seq transition");
311
312 /*************************/
313
314 /* nitrogen */
315
316 // these are the FUV lines that pump [N I]
317 PutLine(TauLines[ipNI_pumpIndirect],"FUV indirect excitation");
318 for( int i=0; i < NI_NDP; ++i )
319 PutLine(TauLines[ipNI_pumpDirect[i]],"FUV direct excitation");
320
321 PutLine(TauLines[ipT1200]," N I 1200, full multiplet, all processes");
322
323 PntForLine(3466.52,"N 1",&ipnt);
324 lindst( nitro.xN3466, 3466, "N 1", ipnt, 't', true, " [N I] 3466.50 only" );
325
326 lindst( nitro.xN3467, 3468, "N 1", ipnt, 't', true, " [N I] 3466.54 only" );
327
328 // doublet together
329 lindst( nitro.xN3467+nitro.xN3466, 3467, "TOTL", ipnt, 't', false,
330 " [N I] 3466.54, 3466.50 together" );
331
332 PntForLine(5199.,"N 1",&ipnt);
333 /**** Terry's addition **************/
334 lindst( nitro.rec5199, 5199, "TOTr", ipnt, 'r', true,
335 " estimate of contribution to [N I] 5199 by recombination" );
336
337 /* this is upper limit to production of 5200 by chemistry - assume every photo dissociation
338 * populates upper level
339 * co.nitro_dissoc_rate is the total N photo dissociation rate, cm-3 s-1 */
340 // count as recombination since removes energy but is not coolng
341 chem = mole.dissoc_rate("N") * 3.82e-12 * nitro.quench_5200;
342 lindst( chem, 5199, "chem", ipnt, 'r', true,
343 " upper limit to [N I] 5199 produced by chemistry" );
344
345 /* this is upper limit to production of 5200 by charge transfer -
346 * atmdat.HCharExcRecTo_N0_2D is the rate coefficient (cm3 s-1) for N+(3P) + H0 -> H+ + N0(2D) */
347 ctRate = atmdat.HCharExcRecTo_N0_2D*dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipNITROGEN][1] *
348 3.82e-12 * nitro.quench_5200;
349 lindst( ctRate, 5199, "H CT", ipnt, 'r', true,
350 " upper limit to [N I] 5199 produced by charge transfer" );
351
352 // estimate of pumping contribution to 5200 doublet
353 lindst( nitro.pump5199, 5199, "pump", ipnt, 'r', true,
354 " estimate of contribution to [N I] 5199 by FUV pumping" );
355
356 /* >>chng 06 jul 08, add chem process to total assuming in proportion to stat weight */
357 lindst( nitro.xN5200 + (ctRate+chem)*0.6, 5200, "N 1", ipnt, 't', true,
358 " [N I] 5200 - all processes - stat weight is 6 - total in term is 10" );
359
360 lindst( nitro.xN5198 + (ctRate+chem)*0.4, 5198, "N 1", ipnt, 't', true,
361 " [N I] 5198 - all processes - stat weight is 4 - total in term is 10" );
362
363 // doublet together
364 lindst( nitro.xN5200+nitro.xN5198 + (ctRate+chem), 5199, "TOTL", ipnt, 't', false,
365 " [N I] 5200 + 5198 together" );
366
367 PntForLine(10403.,"N 1",&ipnt);
368 lindst( nitro.xN10397, 10397, "N 1", ipnt, 't', true, " [N I] 10397.7 only");
369 lindst( nitro.xN10398, 10398, "N 1", ipnt, 't', true, " [N I] 10398.2 only");
370 lindst( nitro.xN10407, 10407, "N 1", ipnt, 't', true, " [N I] 10407.2 only");
371 lindst( nitro.xN10408, 10408, "N 1", ipnt, 't', true, " [N I] 10407.6 only");
372
373 // entire multiplet together
374 lindst( nitro.xN10398+nitro.xN10397+nitro.xN10408+nitro.xN10407, 10403, "TOTL", ipnt, 't', false,
375 " [N I] 10398.2, 10397.7, 10407.6, 10407.2 together");
376
377 /*************************/
378
379 PutLine(TauLines[ipT671] ," 6 lines with fake collision strengths" );
380 PutLine(TauLines[ipT315] ," 6 lines with fake collision strengths" );
381 PutLine(TauLines[ipT333] ," 6 lines with fake collision strengths" );
382 PutLine(TauLines[ipT324] ," 6 lines with fake collision strengths" );
383 PutLine(TauLines[ipT374g]," 6 lines with fake collision strengths" );
384 PutLine(TauLines[ipT374x]," 6 lines with fake collision strengths" );
385
386 PntForLine(6584.,"N 2",&ipnt);
387 lindst(nitro.c6584/(1.+1./2.951),6584,"N 2",ipnt,'t',true ,
388 " N 2 6584 alone " );
389
390 PntForLine(6548.,"N 2",&ipnt);
391 lindst(nitro.c6584/(1.+2.951),6548,"N 2",ipnt,'t',true,
392 " N 2 6548 alone " );
393
394 efficn2 = 4e-3/(4e-3 + 5.18e-6*dense.eden/phycon.sqrte);
395 r6584 = 8e-22/(phycon.te70/phycon.te03/phycon.te03)*efficn2;
396 linadd(r6584*dense.xIonDense[ipNITROGEN][2]*dense.eden,6584,"REC ", 'i',
397 " N 2 6584 alone, recombination contribution" );
398
399 /* helium charge transfer from
400 >>refer n2 CT Sun Sadeghpour, Kirby Dalgarno and Lafyatis, CfA preprint 4208 */
401 ctRate = 1.8e-11*dense.xIonDense[ipHELIUM][0]*dense.xIonDense[ipNITROGEN][2]*1.146/(1.146 +
402 0.87*dense.cdsqte)*3.46e-12;
403
404 /* >>chng 01 jul 09, add recombination contribution to 5755 */
405 /* >>refer n2 rec Liu, X.W., Storey, P.J., Barlow, M.J., Danziger, I.J., Cohen, M.,
406 * >>refercon & Bryce, M., 2000, MNRAS, 312, 585 */
407 /* they give intensity in terms of hbeta intensity as their equation 1 */
408 if( dense.xIonDense[ipHYDROGEN][1] > SMALLFLOAT )
409 {
410 /* this test on >0 is necessary because for sims with no H-ionizing radiation
411 * the H+ density is initially zero */
412 /* H beta recombination, assuming old case B, needed since HS tables have
413 * only a narrow temperature range - at this point units are ergs cm^3 s-1 */
414 HBeta = (pow(10.,-20.89 - 0.10612*POW2(phycon.alogte - 4.4)))/phycon.te;
415
416 /* now convert to ergs cm-3 s-1
417 * >>chng 05 mar 17, this step was missing, so recombination intensity off by density squared,
418 * bug reported by Marcelo Castellanos */
419 HBeta *= dense.eden * dense.xIonDense[ipHYDROGEN][1];
420
421 /* CoolHeavy.xN2_A3_tot is fraction of excitations that produce a photon
422 * and represents the correction for collisional deexcitation */
423 /*>>chng 05 dec 16, Liu et al. (2000) eqn 1 uses t = Te/10^4 K, not Te so phycon.te30
424 * is too large: (10^4)^0.3 = 16 - div by 15.8489 - bug caught by Kevin Blagrave */
425 rec = nitro.xN2_A3_tot * HBeta *
426 3.19 * phycon.te30 / 15.84893 * dense.xIonDense[ipNITROGEN][2]/dense.xIonDense[ipHYDROGEN][1];
427 }
428 else
429 {
430 HBeta = 0.;
431 rec = 0.;
432 }
433
434 linadd(nitro.c5755+ctRate+rec ,5755,"N 2",'i',
435 " N 2 5755 total, collisions plus charge transfer plus recombination" );
436
437 PntForLine(5755.,"N 2",&ipnt);
438 lindst(nitro.c5755,5755,"Coll",ipnt,'c',true,
439 " N 2 5755 collisional contribution" );
440
441 lindst(ctRate,5755,"C T ",ipnt,'r',true,
442 " N 2 5755 charge transfer contribution " );
443
444 lindst( rec ,5755,"N 2r",ipnt,'r',true,
445 " N 2 5755 recombination contribution" );
446
448 " N 2 fine structure line ");
449
451 " N 2 fine structure line " );
452
454 " N 2 2140 intercombination line " );
455
456 /* >>chng 97 may 02, better rec contribution */
457 /*rec = GetLineRec(201,1085)*(1.-TauLines[ipT1085].ColOvTot());*/
458 /* >>chng 02 jul 01, add function to compute emission fraction */
459 rec = GetLineRec(201,1085)*emit_frac(TauLines[ipT1085]);
460 PutExtra(MAX2(0.,rec));
461
463 " N 2 1084, CS guess from g-bar " );
464
465 linadd(MAX2(0.,rec),1085,"Rec ",'i',
466 " dielectronic recombination contribution to N 2 1085" );
467
468 /* continuum pumping of N 2 intersystem transition */
469 rnii = TauLines[ipT671].Emis().pump()*TauLines[ipT671].Emis().PopOpc();
470
471 linadd(rnii*0.377*0.75*3.02e-12*efficn2,6584,"N2cn",'i',
472 " continuum pumped N 2 6584 " );
473
474 efficn2 = 1./(1. + COLL_CONST*dense.eden/phycon.sqrte);
475 linadd(rnii*0.0117*3.46e-12*efficn2,5755,"N2cn",'i',
476 " continuum pumped N 2 5755" );
477
478 /* pumping of the NII 509A line excites 2p4s ^3P^o,
479 * which decays through the 3328, 5679, and 671 multiplets
480 * the NII 3311 (6 lines), 3840 (6 lines), and 3600 (3 lines) multiplets,
481 * contributions by both continuum pumping through XUV line
482 * and recombination */
483 /* this is the driving line, pump is photons cm^-3 s^-1 */
484 if( nWindLine > 0 )
485 {
486 pump = TauLine2[265].Emis().pump()*TauLine2[265].Emis().PopOpc();
487 }
488 else
489 {
490 pump = 0.;
491 }
492
493 PntForLine(3311.,"N 2",&ipnt);
494 lindst(pump*0.236 * 6.01e-12/(1.+dense.eden/1e12) ,3311,"pump",ipnt,'r',true,
495 " NII 3311.42 - 3331.31 (6 lines) are only pumped, no recombination part" );
496
497 PntForLine(3840.,"N 2",&ipnt);
498 lindst(pump*0.186 * 5.18e-12/(1.+dense.eden/1e12) ,3840,"pump",ipnt,'r',true,
499 " NII 3829.8-3856.06 (6 lines) are only pumped, no recombination part" );
500
501 PntForLine(3609.,"N 2",&ipnt);
502 lindst(pump*0.025 * 5.52e-12/(1.+dense.eden/1e12) ,3609,"pump",ipnt,'r',true,
503 " NII 3593.60/3609.1/3615.86 (3 lines) are only pumped, no recombination part" );
504
505
506 PntForLine(4640.,"N 2",&ipnt);
507 lindst(pump*0.186*0.595 * 4.31e-12/(1.+dense.eden/1e12) ,4640,"pump",ipnt,'r',true ,
508 " NII 4601.5-4643.1 (6 lines) are only pumped, no recombination part");
509
510 PntForLine(5010.,"N 2",&ipnt);
511 lindst(pump*0.025*0.442 * 3.97e-12/(1.+dense.eden/1e12) ,5010,"pump",ipnt,'r',true,
512 " NII 5002.7/5010.6/5045.1 (3 lines) are only pumped, no recombination part " );
513
514 /* recombination and specific pump for NII 5679 */
515 rec = GetLineRec(44, 5679 );
516 /* convert UV pump rate to intensity with branching ratio and hnu */
517 pump *= 0.236 * 0.626 * 3.50e-12;
518
519 linadd(rec/(1.+dense.eden/1e12),5679,"N 2r",'i',
520 " recombination part of N II 5679 line" );
521
522 linadd(pump/(1.+dense.eden/1e12),5679,"N 2p",'i',
523 " pumped part of line N II 5679 " );
524
525 PntForLine(5679.,"N 2",&ipnt);
526 lindst((rec+pump)/(1.+dense.eden/1e12),5679,"TOTL",ipnt,'t',true,
527 " total intensity, all processes, N II 5679 " );
528
530 " [N 3] 57 micron fine structure line");
531
532 linadd(
533 TauLines[ipN3_1749].Emis().xIntensity()+
534 TauLines[ipN3_1747].Emis().xIntensity()+
535 TauLines[ipN3_1754].Emis().xIntensity()+
536 TauLines[ipN3_1752].Emis().xIntensity()+
537 TauLines[ipN3_1751].Emis().xIntensity(),
538 1750,"TOTL",'i',
539 " total intensity of N III] 1750, all lines in the multiplet " );
541 " ");
543 " ");
545 " ");
547 " ");
549 " ");
550
551 /* continuum pumped "Bowen" N 3
552 * rate system a is populated */
553 raten3 = TauLines[ipT374x].Emis().PopOpc()*TauLines[ipT374x].Emis().pump();
554
555 /* rate system b is populated */
556 if( DoppVel.TurbVel < 200. )
557 {
558 rb = TauLines[ipT374x].Emis().PopOpc()*TauLines[ipT374x].Emis().pump() +
559 TauLines[ipT374g].Emis().PopOpc()*TauLines[ipT374g].Emis().pump();
560 }
561 else
562 {
563 /* only one line if both fully overlap due to large turb */
564 rb = TauLines[ipT374g].Emis().PopOpc()*TauLines[ipT374g].Emis().pump();
565 }
566
567 rn3mor =
568 TauLines[ipT315].Emis().PopOpc()*TauLines[ipT315].Emis().pump()*0.448 +
569 TauLines[ipT324].Emis().PopOpc()*TauLines[ipT324].Emis().pump()*0.78 +
570 TauLines[ipT333].Emis().PopOpc()*TauLines[ipT333].Emis().pump()*0.434;
571
572 /* pumping of optical N 3 bowen lines */
573 rn3tot = (rb + raten3)*0.439 + rn3mor;
574
575 sum = raten3*4.29e-12;
576 PntForLine(4640.,"N3cn",&ipnt);
577 lindst(sum,4640,"N3cn",ipnt,'r',true ,
578 " continuum pumped \"Bowen\" N 3, optically thin excited line ");
579
580 /* */
581 sum = rb*4.29e-12*0.834;
582 PntForLine(4634.,"N3cn",&ipnt);
583 lindst(sum,4634,"N3cn",ipnt,'r',true ,
584 " continuum pumped \"Bowen\" N 3, optically thin excited line");
585
586 sum = rb*4.29e-12*(1. - 0.834);
587 PntForLine(4642.,"N3cn",&ipnt);
588 lindst(sum,4642,"N3cn",ipnt,'r',true,
589 " continuum pumped \"Bowen\" N 3, optically thin excited line" );
590
591 /* total rate for N 3 990
592 * correction factor for collisional deexcitation */
593 /*fac = 1.-TauLines[ipT990].ColOvTot();*/
594 /* >>chng 02 jul 01, add function to compute emission fraction */
595 fac = 1.-emit_frac(TauLines[ipT990]);
596
597 /* >>chng 97 may 02, better rec coef */
598 /*rec = GetLineRec(216,991)*(1.-TauLines[ipT990].ColOvTot());*/
599 /* >>chng 02 jul 01, add function to compute emission fraction */
600 rec = GetLineRec(216,991)*emit_frac(TauLines[ipT990] );
601 PutExtra(MAX2(0.,rec)+rn3tot*2.01e-11*fac);
602
604 " N 3 990, all processes ");
605
606 linadd(rec+rn3tot*2.01e-11*fac,990,"extr",'i',
607 " total N 3 990, both electron excitation and continuum pumping" );
608
609 linadd(rec,990,"rec ",'i',
610 " part of N 3 990 due to recombination " );
611
612 linadd(rn3tot*2.01e-11,990,"N 3p",'r',
613 " N 3 989.8, continuum pumped" );
614
615 linadd(embesq.em1486+TauLines[ipT1486].Emis().xIntensity(),1486,"TOTL",'i',
616 " N 4] 1486, total intensity of both lines" );
617
619 " ");
620
621 PntForLine(1485.,"N 4",&ipnt);
622 lindst(embesq.em1486,1485,"N 4",ipnt,'t',true ,
623 " the N IV] slow transition by itself " );
624
625 /* >>chng 97 may 02, better expression for dielectronic recombination */
626 /*rec = GetLineRec(287,765)*(1.-TauLines[ipT765].ColOvTot());*/
627 /* >>chng 02 jul 01, add function to get emission fraction */
628 rec = GetLineRec(287,765)*emit_frac(TauLines[ipT765] );
629
630 /* dielectronic recombination contribution from Nussbaumer and Storey 1984 */
631 PutExtra(rec);
632
634 " N 4 765, collisionally excited");
635
636 linadd(MAX2(0.,rec),765,"rec ",'i',
637 " N 4 765 recombination," );
638
639 linadd(TauLines[ipT1243].Emis().xIntensity()+TauLines[ipT1239].Emis().xIntensity(),1240,"TOTL",'i',
640 " continuum pumping of NV 1240, N 5 1240, total emission, collisions plus pumping " );
641 sum = TauLines[ipT1243].Emis().xIntensity()*TauLines[ipT1243].Emis().FracInwd() + TauLines[ipT1239].Emis().xIntensity()*
642 TauLines[ipT1239].Emis().FracInwd();
643
644 linadd(sum,1240,"Inwd",'i',
645 " inward part of N 5 " );
647 " ");
649 " ");
650
652 " N 5 209, 2s-3p Li seq ");
653
654 PntForLine(6300.,"O 1",&ipnt);
655 lindst(CoolHeavy.c6300,6300,"O 1",ipnt,'t',true ,
656 " oxygen total Oxygen I 6300, including continuum optical depth ");
657
658 /* the intensity of [OI] 6300 line due to OH photodistruction */
659 /* last term is fraction that emit rather than collisionally deexcited,
660 * factor of 0.55 is branching ratio from chemistry for producing
661 * OI in correct excited state
662 * this is used to get OH photo formation of [OI] 6300
663 *>>refer OI photoexcitation Storzer, H., & Hollenbach, D. 2000, ApJ, 539, 751-759
664 * discussion on bottom left side of page 752 */
665 /* rate_OH_dissoc is number of OH destruction events, OH -> O + H, cm-3 s-1,
666 * 0.55 is fraction of OH dissociation that lead to pop of upper level of 6300
667 * r12 is energy emitted per unit vol, erg cm-3 s-1, in 6300, due to OH dest */
668 rate_OH_dissoc = mole.findrate("PHOTON,OH=>O,H");
669 r12 = rate_OH_dissoc * 0.55 * 3.16e-12 * CoolHeavy.c6300_frac_emit;
670
671 lindst( r12*TauLines[ipT6300].Emis().Aul()/(TauLines[ipT6300].Emis().Aul()+TauLines[ipT6363].Emis().Aul()) ,
672 6300., "OH p",ipnt , 'i' , false,
673 " the intensity of [OI] 6300 line due to OH photodestruction");
674
675 lindst( r12*TauLines[ipT6363].Emis().Aul()/(TauLines[ipT6300].Emis().Aul()+TauLines[ipT6363].Emis().Aul()) ,
676 6363., "OH p",ipnt , 'i' , false,
677 " the intensity of [OI] 6363 line due to OH photodestruction ");
678
679 PntForLine(6363.,"O 1",&ipnt);
680 lindst(CoolHeavy.c6363,6363,"O 1",ipnt,'t',true,
681 " total Oxygen I 6363, including continuum optical depth " );
682
683 PntForLine(5577.,"O 1",&ipnt);
684 lindst(CoolHeavy.c5577,5577,"O 1",ipnt,'t',true,
685 " auroral OI " );
686
687 r13 = rate_OH_dissoc * 0.05 * 3.57e-12 * 0.94*CoolHeavy.c5577_frac_emit;
688 lindst( r13 , 5577., "OH p",ipnt , 'i', false,
689 " 94% of excitations to highest level decay via 5577" );
690
692 " O I fine structure line ");
693
695 " O I fine structure line ");
696
697 linadd(MAX2(0.,CoolHeavy.coolOi),0,"TOIc",'c',
698 " total collisional cooling due to 6-level OI atom" );
699
700 linadd(MAX2(0.,-CoolHeavy.coolOi),0,"TOIh",'h',
701 " total collisional heating due to 6-level OI atom " );
702
703 /* OI 8446 from six level atom */
704 /* >>chng 04 nov 15, upper level for 8446 was incorrect - was 4 should have been 2
705 * bug caught by Yoshiki Matsuoka */
706 sum = atoms.popoi[2]*TauLines[ipT8446].Emis().Pesc_total()*TauLines[ipT8446].Emis().Aul()*2.36e-12;
707 PntForLine(8446.,"O 1",&ipnt);
708
709 lindst(sum,8446,"6lev",ipnt,'i',false,
710 " OI 8446 from six level atom" );
711
712 PntForLine(1304.,"O 1",&ipnt);
713 sum = atoms.popoi[1]*TauLines[ipT1304].Emis().Pesc_total()*TauLines[ipT1304].Emis().Aul()*1.53e-11;
714 lindst(sum,1304,"6lev",ipnt,'i',false,
715 " OI 1304 from six level atom " );
716
717 PntForLine(1039.,"O 1",&ipnt);
718 sum = atoms.popoi[3]*TauLines[ipT1039].Emis().Pesc_total()*TauLines[ipT1039].Emis().Aul()*1.92e-11;
719 lindst(sum,1039,"6lev",ipnt,'i',false ,
720 " OI 1039 from six level atom");
721
722 PntForLine(4368.,"O 1",&ipnt);
723 sum = atoms.popoi[5]*TauLines[ipT4368].Emis().Pesc_total()*TauLines[ipT4368].Emis().Aul()*4.55e-12;
724 lindst(sum,4368,"6lev",ipnt,'i',false,
725 " OI 4368 from six level atom" );
726
727 PntForLine(13100.,"O 1",&ipnt);
728 sum = atoms.popoi[3]*TauLines[ipTOI13].Emis().Pesc_total()*TauLines[ipTOI13].Emis().Aul()*1.52e-12;
729 lindst(sum,13100,"6lev",ipnt,'i',false ,
730 " OI 1.3 micron from six level atom");
731
732 PntForLine(11300.,"O 1",&ipnt);
733 sum = atoms.popoi[4]*TauLines[ipTOI11].Emis().Pesc_total()*TauLines[ipTOI11].Emis().Aul()*1.76e-12;
734 lindst(sum,11300,"6lev",ipnt,'i',false ,
735 " OI 1.1 micron from six level atom");
736
737 PntForLine(29000.,"O 1",&ipnt);
738 sum = atoms.popoi[5]*TauLines[ipTOI29].Emis().Pesc_total()*TauLines[ipTOI29].Emis().Aul()*6.86e-13;
739 lindst(sum,29000,"6lev",ipnt,'i',false ,
740 " OI 2.9 micron from six level atom");
741
742 PntForLine(46000.,"O 1",&ipnt);
743 sum = atoms.popoi[5]*TauLines[ipTOI46].Emis().Pesc_total()*TauLines[ipTOI46].Emis().Aul()*4.32e-13;
744 lindst(sum,46000,"6lev",ipnt,'i',false ,
745 " OI 4.6 micron from six level atom");
746
747 /*double rec7323 , rec7332, rec3730 , rec3726 , rec2471
748 * reco23tot , reco22tot;*/
749
750 /* total recombination to 2P^o, the highest two levels of the 5-level atom,
751 * which produces the 7325 multiplet, last factor accounts for coll deexcitation
752 * this implements equation 2 of
753 * refer o2 rec Liu, X-W., Storey, P.J., Barlow, M.J., Danziger, I.J.,
754 * refercon Cohen, M., & Bryce, M., 2000, MNRAS, 312, 585 */
755 /* >>chng 05 dec 29, from first eqn, or unknown origin, to second, from indicated
756 * reference. They agreed within 20% */
757 /*reco23tot = 3.484e-11 / ( phycon.sqrte / phycon.te05 * phycon.te003 ) *
758 dense.eden * dense.xIonDense[ipOXYGEN][2] * CoolHeavy.O2_A3_tot *2.72e-12;*/
759 if( dense.xIonDense[ipHYDROGEN][1] > SMALLFLOAT )
760 {
761 /* this test is necessary because for sims with no H-ionizing radiation
762 * the H+ density is initially zero */
763 reco23tot = CoolHeavy.O2_A3_tot * HBeta *
764 9.36 * phycon.te40*phycon.te04 / 57.544 * dense.xIonDense[ipOXYGEN][2]/dense.xIonDense[ipHYDROGEN][1];
765 }
766 else
767 {
768 reco23tot = 0.;
769 }
770
771 sum = CoolHeavy.O2471*2471./7325. + CoolHeavy.O7323 + CoolHeavy.O7332;
772 if( sum > SMALLFLOAT )
773 {
774 /* assume effective branching ratio according to predicted intensities from 5-lev atom*/
775 reco23tot /= sum;
776 }
777 else
778 {
779 reco23tot = 0.;
780 }
781 /* these are now ergs per sec unit vol for each transition */
782 rec7323 = reco23tot * CoolHeavy.O7323;
783 rec7332 = reco23tot * CoolHeavy.O7332;
784 rec2471 = reco23tot * CoolHeavy.O2471*2471./7325. * 8.05e-12/2.72e-12;
785
786 /* total recombination to 2D^o, the middle two levels of the 5-level atom,
787 * which produces the 3727 multiplet, last factor accounts for coll deexcit */
788 reco22tot = 1.660e-10 / ( phycon.sqrte * phycon.te03 * phycon.te005 ) *
789 dense.eden * dense.xIonDense[ipOXYGEN][2] * CoolHeavy.O2_A2_tot;
790 /* assume effective branching ratio according to predicted intensities from 5-lev atom*/
791 sum = CoolHeavy.O3726 + CoolHeavy.O3730;
792 if( sum > SMALLFLOAT )
793 {
794 reco22tot /= sum;
795 }
796 else
797 {
798 reco22tot = 0.;
799 }
800 /* these are now ergs per sec unit vol for each transition */
801 rec3726 = reco22tot * CoolHeavy.O3726 * 5.34e-12;
802 rec3730 = reco22tot * CoolHeavy.O3730 * 5.34e-12;
803
804 /* O II 3727 produced by photoionization OF O0 */
805 oxy.s3727 = (realnum)((oxy.s3727 + oxy.s7325*0.5)*5.34e-12*
806 9.7e-5/(9.7e-5 + dense.eden*1.15e-6/phycon.sqrte));
807
808 PntForLine(3727.,"O 2",&ipnt);
809 fac = CoolHeavy.c3727+oxy.s3727+rec3726+rec3730;
810 lindst(fac ,3727,"TOTL",ipnt,'t',true,
811 " O II 3727, all lines of multiplet together " );
812
813 PntForLine(7325.,"O 2",&ipnt);
814 fac = CoolHeavy.c7325+rec7323+rec7332;
815 lindst( fac ,7325,"TOTL",ipnt,'t',true ,
816 " O II 7325, all lines of multiplet together");
817
818 linadd(oxy.s3727,3727,"IONZ",'i',
819 " line produced by photoionization of Oo; already in TOTL" );
820 oxy.s7325 = (realnum)(oxy.s7325*2.72e-12*0.34/(0.34 + dense.eden*
821 6.04e-6/phycon.sqrte));
822
823 linadd(oxy.s7325,7325,"IONZ",'i',
824 " line produced by photoionization of Oo; already in TOTL" );
825
826 linadd(CoolHeavy.c7325,7325,"Coll",'i',
827 " collisional contribution to line " );
828
829 linadd(CoolHeavy.c3727,3727,"Coll",'i',
830 " collisional contribution to line " );
831
832 PntForLine(3727.,"O 2",&ipnt);
833 lindst(CoolHeavy.O3730,3729,"O II",ipnt,'t',false,
834 " five level atom calculations; D5/2 - S3/2" );
835
836 lindst(CoolHeavy.O3726,3726,"O II",ipnt,'t',false,
837 " D3/2 - S3/2 transition" );
838
839 PntForLine(2471.,"O 2",&ipnt);
840 lindst(CoolHeavy.O2471,2471,"O II",ipnt,'t',false,
841 " both 2P 1/2 and 3/2 to ground " );
842
843 PntForLine(7325.,"O 2",&ipnt);
844 lindst(CoolHeavy.O7323,7323,"O II",ipnt,'t',false,
845 " P1/2-D5/2 and P3/2-D5/2 together" );
846
847 lindst(CoolHeavy.O7332,7332,"O II",ipnt,'t',false,
848 " P1/2-D3/2 and P3/2-D3/2 together " );
849
850 linadd( rec3730 ,3729,"O 2r",'i',
851 " recombination contribution refer o2 rec Liu, X-W., Storey, P.J., Barlow, M.J., Danziger, I.J.,refercon Cohen, M., & Bryce, M., 2000, MNRAS, 312, 585 recombination contributions five level atom calculations; D5/2 - S3/2 " );
852
853 linadd( rec3726 ,3726,"O 2r",'i',
854 " D3/2 - S3/2 transition" );
855
856 linadd(rec2471,2471,"O 2r",'i',
857 " both 2P 1/2 and 3/2 to ground " );
858 linadd(rec7323,7323,"O 2r",'i',
859 " P1/2-D5/2 and P3/2-D5/2 together " );
860
861 linadd(rec7332,7332,"O 2r",'i',
862 " P1/2-D3/2 and P3/2-D3/2 together " );
863
865 " O II 833.8 coll excit ");
866
867 /* the OII multiplets,
868 * contributions by both continuum pumping through XUV line
869 * and recombination */
870 /* this is the driving line, pump is photons cm^-3 s^-1 */
871 if( nWindLine > 0 )
872 {
873 pump = TauLine2[387].Emis().pump()*TauLine2[387].Emis().PopOpc();
874 }
875 else
876 {
877 pump = 0.;
878 }
879
880 PntForLine(3120.,"O 2",&ipnt);
881 lindst(pump*0.336 * 6.37e-12/(1.+dense.eden/1e12) ,3120,"pump",ipnt,'r',true,
882 " OII 3113.62 - 3139.68 (8 lines) are only pumped, no recombination part" );
883
884 PntForLine(3300.,"O 2",&ipnt);
885 lindst(pump*0.147 * 6.03e-12/(1.+dense.eden/1e12) ,3300,"pump",ipnt,'r',true,
886 " OII 3277.56 - 3306.45 (6 lines) are only pumped, no recombination part" );
887
888 PntForLine(3762.,"O 2",&ipnt);
889 lindst(pump*0.087 * 5.29e-12/(1.+dense.eden/1e12) ,3762,"pump",ipnt,'r',true,
890 " OII 3739.76/3762.47/3777.42 (3 lines) are only pumped, no recombination part" );
891
892 /* recombination and specific pump for OII 4638.86-4696.35 (8 lines) */
893 rec = GetLineRec(82, 4651 );
894 PntForLine(4651.,"O 2",&ipnt);
895 lindst(rec,4651,"O 2r",ipnt,'r',true,
896 " O II 4651 total recombination, 4638.86-4696.35 (8 lines) " );
897
898 /* convert UV pump rate to intensity with branching ratio and hnu recombination
899 * part of O II 4651 line */
900 linadd(pump* 0.336 * 0.933 * 4.27e-12/(1.+dense.eden/1e12),4651,"O 2p",'i',
901 " pumped part of line O II 4651 " );
902
903 /* recombination and specific pump for OII 4317.14-4366.89 (6 lines) */
904 rec = GetLineRec(83, 4341 );
905
906 linadd(rec/(1.+dense.eden/1e12),4341,"O 2r",'i',
907 " recombination contribution to O II 4341 line " );
908
909 linadd(pump* 0.147 * 0.661 * 4.58e-12/(1.+dense.eden/1e12),4341,"O 2p",'i',
910 " pumped part of line O II 4341 " );
911
912 PntForLine(4341.,"O 2",&ipnt);
913 lindst(rec+pump* 0.147 * 0.661 * 4.58e-12/(1.+dense.eden/1e12),4341,"TOTL",ipnt,'t',true,
914 " total intensity, all processes, O II 4341" );
915
916 /* recombination and specific pump for OII 3712.74/3727.32/3749.48 (3 lines) */
917 rec = GetLineRec(84, 3736 );
918 /* convert UV pump rate to intensity with branching ratio and hnu */
919
920 linadd(rec/(1.+dense.eden/1e12),3736,"O 2r",'i',"\n recombination part of O II 3736 line " );
921 linadd(pump* 0.087 * 0.763 * 5.33e-12/(1.+dense.eden/1e12),3736,"O 2p",'i',
922 " pumped part of line O II 3736" );
923
924 PntForLine(3736.,"O 2",&ipnt);
925 lindst((rec+pump* 0.087 * 0.763 * 5.33e-12)/(1.+dense.eden/1e12),3736,"TOTL",ipnt,'t',true,
926 " total intensity, all processes, O II 3736" );
927
928 /* O III 1661+1666 */
929 /*efac = ((1.-TauLines[ipT1666].ColOvTot()) + (1.-TauLines[ipT1661].ColOvTot()))*0.5;*/
931
932 linadd(TauLines[ipT1666].Emis().xIntensity()+TauLines[ipT1661].Emis().xIntensity(),1665,"TOTL",'i',
933 "total intensity of OIII] 1665, all processes " );
935
937
938 linadd(ionbal.PhotoRate_Shell[ipOXYGEN][3][1][0]*dense.xIonDense[ipOXYGEN][1]*0.3*1.20e-11*efac,1665,"Phot",'i',
939 " contribution to OIII 1665 due to inner shell (2s^2) ionization " );
940
941 linadd(oxy.AugerO3*1.20e-11*efac*0.27,1665,"Augr",'i',
942 " contribution to OIII 1665 due to K-shell ionization " );
943
944 PntForLine(5007.,"O 3",&ipnt);
945 lindst(CoolHeavy.c5007/(1.+1./3.01),5007,"O 3",ipnt,'t',true ,
946 " O III 5007 alone, collisions, tot OIII is this times 1.333 fac = c5007/(1.+1./2.887) >>chng 01 may 04, branching ratio had been 2.887, revised to 3 as per refer o3 as Storey, P.J., & Zeippen, C.J., 2000, 312, 813-816 ");
947
948 PntForLine(4959.,"O 3",&ipnt);
949 lindst(CoolHeavy.c5007/(1.+3.01),4959,"O 3",ipnt,'t',true,
950 " O III 4959 alone, collisions, tot OIII is this times 4" );
951
952 PntForLine(4931.,"O 3",&ipnt);
953 lindst(CoolHeavy.c5007/(1.+3.01)*4.09e-4 ,4931,"O 3",ipnt,'t',true ,
954 " O III 4931 alone, collisions >>chng 01 jul 11, added this line >>refer o3 as Nussbaumer, H., & Storey, P., 1981, A&A, 99, 177 >>refer o3 as Mathis, J.S., & Liu, X.-W., 1999, ApJ, 521, 212-216 ");
955
956 linadd(oxy.d5007t/1.25,5007,"LOST",'i',
957 " O III 5007 lost through excited state photo" );
958
959 /* collisional quenching ratio */
960 effec = 1.6/(1.6 + 0.9*dense.cdsqte);
961
962 /* O III 4363 recombination, coefficient from Burgess and Seaton */
963 r4363 = 6.3e-21/(phycon.te70*phycon.te10)*dense.eden*dense.xIonDense[ipOXYGEN][3]*
964 effec;
965
966 /* charge exchange,
967 * >>refer O3 CT Dalgarno+Sternberg ApJ Let 257, L87.
968 * scaled to agree with
969 * >>refer O3 CT Gargaud et al AA 208, 251, (1989) */
970 ct4363 = phycon.sqrte*1.3e-12*4.561e-12*dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipOXYGEN][3]*
971 effec;
972
973 fac = CoolHeavy.c4363 + r4363 + ct4363;
974 linadd(fac,4363,"TOTL",'i',
975 " O III 4363, sum of rec, coll, ct excitation" );
976
977 PntForLine(4363.,"O 3",&ipnt);
978 lindst(CoolHeavy.c4363,4363,"Coll",ipnt,'c',true,
979 " O III 4363,collisions from five level atom " );
980
981 lindst(r4363,4363,"Rec ",ipnt,'r',true,
982 " O III 4363 recombination, coefficient from Burgess and Seaton " );
983
984 PntForLine(2321.,"O 3",&ipnt);
985 lindst(CoolHeavy.c4363*0.236,2321,"O 3",ipnt,'t',true ,
986 " collisional excitation of 2321, 5-level atom");
987 linadd(ct4363,4363,"C EX",'i' ,
988 " call linadd( c4363*0.236 , 2321 , 'O 3','c') charge exchange, Dalgarno+Sternberg ApJ Let 257, L87. ");
989
990 linadd(dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipOXYGEN][3]*0.225*3.56e-12*1.34e-11*phycon.sqrte,
991 5592,"C EX",'i'," charge exchange rate, D+S " );
992
994 " O III 88 micron, collisionally excited");
995
997 " O III 52 micron, collisionally excited ");
998
999 /* >>chng 97 may 02, better rec contribution */
1000 /*rec = GetLineRec(331,835)*(1.-TauLines[ipT835].ColOvTot());*/
1001 rec = GetLineRec(331,835)*emit_frac(TauLines[ipT835]);
1002 PutExtra(MAX2(0.,rec));
1003
1005 " O III 834A, collisions and dielectronic recombination ");
1006
1007 linadd(MAX2(0.,rec),835,"rec ",'i',
1008 " O III 834A, dielectronic recombination only" );
1009
1011 " O IV 26 micron ");
1012
1013 linadd(
1014 TauLines[ipO4_1400].Emis().xIntensity()+
1015 TauLines[ipO4_1397].Emis().xIntensity()+
1016 TauLines[ipO4_1407].Emis().xIntensity()+
1017 TauLines[ipO4_1405].Emis().xIntensity()+
1018 TauLines[ipO4_1401].Emis().xIntensity(),
1019 1402,"TOTL",'i',
1020 " total intensity of O IV] 1402, all lines in the multiplet " );
1021
1023 " ");
1025 " ");
1027 " ");
1029 " ");
1031 " ");
1032
1033 linadd(ionbal.PhotoRate_Shell[ipOXYGEN][2][1][0]*dense.xIonDense[ipOXYGEN][2]*0.43*1.42e-11,1401,"InSh",'i',
1034 " inner shell photoionization, relaxation " );
1035
1036 /* >>chng 97 may 02, better rec contribution */
1037 //rec = GetLineRec(378,789)*(1.-TauLines[ipT789].Emis().ColOvTot());
1038 rec = GetLineRec(378,789)*emit_frac(TauLines[ipT789]);
1039 PutExtra(MAX2(0.,rec));
1040
1041 PutLine(TauLines[ipT789]," O IV 789A");
1042
1043 linadd(MAX2(0.,rec),789,"rec ",'i',
1044 " O IV 789A, dielectronic recombination only" );
1045
1046 /* >>chng 97 may 02, better rec contribution */
1047 rec = GetLineRec(466,630);
1048 PutExtra(MAX2(0.,rec));
1049
1050 PutLine(TauLines[ipT630],"O V 630, collisional excitation and dielectronic recombination");
1051
1052 linadd(MAX2(0.,rec),630,"rec ",'i',
1053 " O V 630A, dielectronic recombination only" );
1054
1055 linadd(embesq.em1218+TauLines[ipT1214].Emis().xIntensity(),1218,"TOTL",'i',
1056 " O V 1218], total intensity of both lines " );
1057 PutLine(TauLines[ipT1214], " ");
1058
1059 linadd(embesq.em1218,1211,"O 5",'i',
1060 " the slow transition by itself" );
1061
1062 linadd(1.4e-21/phycon.te70*dense.eden*dense.xIonDense[ipOXYGEN][5]*
1063 /*(1.-TauLines[ipT1214].ColOvTot()),5112,"O 5",'i' );*/
1064 emit_frac(TauLines[ipT1214]),5112,"O 5",'i',
1065 " BS O V 5112, recombination " );
1066
1067 linadd(TauLines[ipT1032].Emis().xIntensity()+TauLines[ipT1037].Emis().xIntensity(),1035,"TOTL",'i',
1068 " O VI 1035, total of pumping and collisional excitation " );
1069 sum = TauLines[ipT1032].Emis().xIntensity()*TauLines[ipT1032].Emis().FracInwd() +
1070 TauLines[ipT1037].Emis().xIntensity()* TauLines[ipT1037].Emis().FracInwd();
1071
1072 linadd(sum,1035,"Inwd",'i',
1073 " inward part of OVI line" );
1075 " ");
1077 " ");
1078
1080 "O VI 150, Li seq 2s 3p ");
1081
1083 " neon Neon II 12.8 micron ");
1084
1086 " Ne III fine structure line ");
1087
1089 " Ne III fine structure line ");
1090
1091 PntForLine(3869.,"Ne 3",&ipnt);
1092 lindst(CoolHeavy.c3869/(1.+1./3.318),3869,"Ne 3",ipnt,'t',true,
1093 " Ne III 3869, of 3968+3869 doublet" );
1094
1095 PntForLine(3968.,"Ne 3",&ipnt);
1096 lindst(CoolHeavy.c3869/(1.+3.318),3968,"Ne 3",ipnt,'t',true,
1097 " Ne III 3968, of 3968+3869 doublet" );
1098
1099 PntForLine(3343.,"Ne 3",&ipnt);
1100 lindst(CoolHeavy.c3343,3343,"Ne 3",ipnt,'t',true,
1101 " NeIII auroral line " );
1102
1103 PntForLine(1815.,"Ne 3",&ipnt);
1104 lindst(CoolHeavy.c3343*1.38,1815,"Ne 3",ipnt,'t',true ,
1105 " NeIII auroral line");
1106
1107 PntForLine(2424.,"Ne 4",&ipnt);
1108 lindst(CoolHeavy.c2424,2424,"Ne 4",ipnt,'t',true,
1109 " Ne IV 2424, collisional excitation" );
1110
1111 PntForLine(4720.,"Ne 4",&ipnt);
1112 lindst(CoolHeavy.c4720,4720,"Ne 4",ipnt,'t',true,
1113 " Ne IV N=3-2 lines, three level atom approx, this is the sum of the 4714.5, 4724.2, 4725.5 lines" );
1114
1115 PntForLine(1602.,"Ne 4",&ipnt);
1116 lindst(CoolHeavy.c4720*4.34,1602,"Ne 4",ipnt,'t',true ,
1117 " Ne IV N=3 lines, three level atom approx");
1118
1119 PntForLine(3426.,"Ne 5",&ipnt);
1120 lindst(CoolHeavy.c3426/(1.+1./2.738),3426,"Ne 5",ipnt,'t',true,
1121 " Ne V 3426 of 3426, 3346 doublet" );
1122
1123 PntForLine(3346.,"Ne 5",&ipnt);
1124 lindst(CoolHeavy.c3426/(1.+2.738),3346,"Ne 5",ipnt,'t',true,
1125 " Ne V 3346 of 3426, 3346 doublet " );
1126
1127 PntForLine(2976.,"Ne 5",&ipnt);
1128 lindst(CoolHeavy.c2975,2976,"Ne 5",ipnt,'t',true,
1129 " auroral line " );
1130
1131 PntForLine(1575.,"Ne 5",&ipnt);
1132 lindst(CoolHeavy.c1565,1575,"Ne 5",ipnt,'t',true,
1133 " collisionally excited" );
1134
1135 PutLine(TauLines[ipTNe24],"\n Ne V 24.2, 14.3 micron ");
1136
1137 PutLine(TauLines[ipTNe14],"\n Ne V 24.2, 14.3 micron ");
1138
1139 PntForLine(1141.,"Ne 5",&ipnt);
1140 lindst(CoolHeavy.c1134,1141,"Ne 5",ipnt,'t',true," both components of 5S-3P 1146.1, 1137.0 doublet " );
1141
1142 PutLine(TauLines[ipxNe0676],"\n [Ne VI] 7.6 microns ");
1143
1144 linadd(embesq.em895+TauLines[ipT895].Emis().xIntensity(),895,"TOTL",'i',
1145 " Ne VII 895, collisionally excited, both lines " );
1146
1148 " Ne VII 895, only fast transition ");
1149
1150 linadd(embesq.em895,890,"Ne 7",'i',
1151 " Ne VII 890, single line " );
1152
1153 linadd(TauLines[ipT770].Emis().xIntensity()+TauLines[ipT780].Emis().xIntensity(),774,"TOTL",'i',
1154 " Ne VIII 774, collisionally excited " );
1155
1156 sum = TauLines[ipT770].Emis().xIntensity()*TauLines[ipT770].Emis().FracInwd() +
1157 TauLines[ipT780].Emis().xIntensity()*TauLines[ipT780].Emis().FracInwd();
1158 linadd(sum,774,"Inwd",'i',
1159 " inward part of NeVIII 774 line" );
1160
1162 " the NeVIII 770 780 doublet ");
1164 " ");
1165
1167 " Ne VIII 88 2s 3p, collisionally excited ");
1168
1169 if( trace.lgTrace )
1170 {
1171 fprintf( ioQQQ, " lines_lv1_li_ne returns\n" );
1172 }
1173 return;
1174}
1175
1176/*GetLineRec return rec coef*hnu*eden*n_ion for C, N, or O recombination lines from Dima's list,
1177 * also zero's line in master stack so not entered second time in later dump of all rec lines */
1179 /* this is the number of the emission line in the stack of lines, on the C scale */
1180 long int ip,
1181 /* the multiplet wavelength */
1182 long int lWl)
1183{
1184 double GetLineRec_v;
1185
1186 DEBUG_ENTRY( "GetLineRec()" );
1187
1188 if( (long)(LineSave.RecCoefCNO[2][ip]+0.5) != lWl )
1189 {
1190 fprintf( ioQQQ, " GetLineRec called with incorrect wavelength.\n" );
1191 fprintf( ioQQQ, " index, call and get wl are %5ld%5ld%5ld\n",
1192 ip, lWl, (long)(LineSave.RecCoefCNO[2][ip]+0.5) );
1194 }
1195
1196 /* final product is vol emissivity in line */
1197 GetLineRec_v = LineSave.RecCoefCNO[3][ip]*dense.eden*
1198 dense.xIonDense[(long)(LineSave.RecCoefCNO[0][ip])-1][(long)(LineSave.RecCoefCNO[0][ip]-LineSave.RecCoefCNO[1][ip]+2)-1]*
1199 1.99e-8/LineSave.RecCoefCNO[2][ip];
1200
1201 /* zero out rec coefficient so that not used again in master dump
1202 * this routine cannot be called twice on same line */
1203 LineSave.RecCoefCNO[3][ip] = 0.;
1204 return( GetLineRec_v );
1205}
t_atmdat atmdat
Definition atmdat.cpp:6
long ipT157
long ipT770
long ipT1085
long ipTNe14
long ipC2_2329
long ipT386
long ipTNe13
long ipT977
long ipTNe24
long ipT6363
long ipT1661
long ipO4_1401
long ipT324
long ipT2140
long ipT205
long ipO4_1405
long ipT1666
long ipC2_2327
long ipO4_1397
long ipT146
long ipT26
long ipT280
long ipTNe36
long ipT1550
long ipO4_1407
long ipT780
long ipTO88
long ipC2_2328
long ipC2_2324
long ipT990
long ipC2_2325
long ipT1656
long ipTOI46
long ipc31175
long ipT1037
long ipT88
long ipN3_1752
long ipT1243
long ipT209
long ipT765
long ipN3_1754
long ipT1909
long ipT374x
long ipN3_1751
long ipT1486
long ipTOI11
long ipT370
long ipT270
long ipN3_1747
long ipT122
long ipTOI13
long ipT52
long ipxNe0676
long ipO4_1400
long ipT8446
long ipT4368
long ipT835
long ipT310
long ipN3_1749
long ipT333
long ipT895
long ipT150
long ipT834
long ipT1304
long ipTOI29
long ipT1214
long ipT274
long ipTNe16
long ipT57
long ipT315
long ipT630
long ipT1039
long ipT1335
long ipT1239
long ipT671
long ipNI_pumpIndirect
long ipT1548
long ipT6300
long ipT312
long ipT1200
long ipT291
long ipNI_pumpDirect[NI_NDP]
long ipT63
long ipT789
long ipT610
long ipT1032
long ipT374g
t_atoms atoms
Definition atoms.cpp:5
t_carb carb
Definition carb.cpp:5
FILE * ioQQQ
Definition cddefines.cpp:7
#define STATIC
Definition cddefines.h:97
const int ipNITROGEN
Definition cddefines.h:311
const int ipCARBON
Definition cddefines.h:310
const int ipOXYGEN
Definition cddefines.h:312
#define POW2
Definition cddefines.h:929
#define EXIT_FAILURE
Definition cddefines.h:140
#define cdEXIT(FAIL)
Definition cddefines.h:434
const int ipHELIUM
Definition cddefines.h:306
float realnum
Definition cddefines.h:103
#define MAX2
Definition cddefines.h:782
const int ipHYDROGEN
Definition cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition cddefines.h:684
long nWindLine
Definition cdinit.cpp:19
t_CoolHeavy CoolHeavy
Definition coolheavy.cpp:5
const realnum SMALLFLOAT
Definition cpu.h:191
t_dense dense
Definition dense.cpp:24
t_DoppVel DoppVel
Definition doppvel.cpp:5
t_embesq embesq
Definition embesq.cpp:5
t_ionbal ionbal
Definition ionbal.cpp:5
t_LineSave LineSave
Definition lines.cpp:5
long int StuffComment(const char *chComment)
void linadd(double xInten, realnum wavelength, const char *chLab, char chInfo, const char *chComment)
void PntForLine(double wavelength, const char *chLabel, long int *ipnt)
void lindst(double xInten, realnum wavelength, const char *chLab, long int ipnt, char chInfo, bool lgOutToo, const char *chComment)
t_mole_local mole
Definition mole.cpp:7
t_nitro nitro
Definition nitro.cpp:5
t_oxy oxy
Definition oxy.cpp:5
t_phycon phycon
Definition phycon.cpp:6
UNUSED const double COLL_CONST
Definition physconst.h:229
STATIC double GetLineRec(long int ip, long int lWl)
void lines_lv1_li_ne(void)
TransitionList TauLine2("TauLine2", &AnonStates)
TransitionList TauLines("TauLines", &AnonStates)
const int NI_NDP
Definition taulines.h:90
t_trace trace
Definition trace.cpp:5
void PutExtra(double Extra)
void PutLine(const TransitionProxy &t, const char *chComment, const char *chLabelTemp)
double emit_frac(const TransitionProxy &t)