cloudy
trunk
Main Page
Related Pages
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
source
atmdat_ligbar.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
/*ligbar obtain collision strength for any Li-sequence line */
4
#include "
cddefines.h
"
5
#include "
physconst.h
"
6
#include "
dense.h
"
7
#include "
phycon.h
"
8
#include "
ligbar.h
"
9
10
void
ligbar
(
long
int
ized,
11
transition
* t2s2p,
12
transition
* t2s3p,
13
double
*cs2s2p,
14
double
*cs2s3p)
15
{
16
double
a,
17
b,
18
c,
19
excit,
20
gbar;
21
22
DEBUG_ENTRY
(
"ligbar()"
);
23
24
/* compute collision strength for Li-seq g-bar approx
25
* summarized in Cochrane and McWhirter Physica Scripta 28, 25.
26
* ized is nuclear charge, can be anything larger than 2
27
* Kirk Korista
28
*
29
* ized is nuclear charge, 6 for carbon, etc
30
* t2s2p is tau array for stronger memeber of 2s 2p multiplet,
31
* which is treated as two separate lines
32
* t2s3p is next transition up, treated as an averaged multiplet
33
*
34
* cs2s2p is the cs for the single 2s2p line that comes in
35
* cs2s3p is the multiplet cs for that transition, which is
36
* treated as a multiplet average. If t2s3p is ever separated
37
* (as t2s2p was) then cs2s3p will be the single line not the multiplet
38
*
39
* T2S2P, T2S3P are line information array, defined in block data
40
*/
41
42
/* no need to evaluate coll strength if population is zero */
43
if
(
dense
.
xIonDense
[ t2s2p->
Hi
->
nelem
-1 ][ t2s2p->
Hi
->
IonStg
-1 ] == 0)
44
{
45
*cs2s2p = 1.;
46
*cs2s3p = 1.;
47
return
;
48
}
49
50
if
( ized < 3 )
51
{
52
/* this is a sanity check */
53
fprintf(
ioQQQ
,
" LIGBAR called with insane charge, ized=%4ld\n"
,
54
ized );
55
ShowMe
();
56
cdEXIT
(EXIT_FAILURE);
57
}
58
59
else
if
( ized == 6 )
60
{
61
/* CIV 1549 */
62
a = 0.292;
63
b = 0.289;
64
c = 2.67;
65
}
66
67
else
if
( ized == 7 )
68
{
69
/* NV 1240 */
70
a = 0.387;
71
b = 0.247;
72
c = 3.93;
73
}
74
75
else
if
( ized == 8 )
76
{
77
/* OVI 1035 -- values interpolated */
78
a = 0.40;
79
b = 0.256;
80
c = 4.12;
81
}
82
83
else
if
( ized == 10 )
84
{
85
/* NeVIII 774 */
86
a = 0.426;
87
b = 0.273;
88
c = 4.50;
89
}
90
91
else
if
( ized == 12 )
92
{
93
/* Mg 10 615 -- these values are general */
94
a = 0.45;
95
b = 0.27;
96
c = 5.0;
97
}
98
99
else
if
( ized == 18 )
100
{
101
/* Ar 16 365 */
102
a = 0.311;
103
b = 0.294;
104
c = 6.65;
105
}
106
107
else
if
( ized == 26 )
108
{
109
/* Fe 24 213 */
110
a = 0.435;
111
b = 0.314;
112
c = 6.92;
113
}
114
115
else
116
{
117
/* use general formula for all other cases */
118
a = 0.6 - 1.5/((
realnum
)(ized) - 2.);
119
b = 0.27;
120
c = 5.;
121
}
122
123
/* evaluate expression in terms of coefficients
124
* tarray(ipLnBolt) = line energy in degrees kelvin */
125
excit = t2s2p->
EnergyK
/
phycon
.
te
;
126
127
/* excit = e1/(te * 1.380622e-16) */
128
gbar = a + b*log(1./excit+c);
129
130
/* tarray(ipLnGF) = gf; tarray(ipLnBolt) excit temp kelvin */
131
/*
132
*cs2s2p = gbar*197.47*EVDEGK*t2s2p->Lo->gf/t2s2p->EnergyK;
133
*/
134
*cs2s2p = gbar*197.47*
EVDEGK
*t2s2p->
Emis
->
gf
/t2s2p->
EnergyK
;
135
/* small correction factors to CMcW83 2s-2p fits:
136
* fits 3.57% too small compared to R-matrix calc. for Mg X.
137
* scaled all, initially, by this constant. Pradhan & Peng (1994)
138
* compilation cites a pc with Burgess, which further scales
139
* cs(C IV) by 1.0429 and cs(N V) by 0.9691, approximately.
140
* The scaled cs(OVI) matched well with Burgess, so no further
141
* scaling was done for more highly ionized species. */
142
143
if
( ized == 6 )
144
{
145
*cs2s2p *= 1.08013;
146
}
147
148
else
if
( ized == 7 )
149
{
150
*cs2s2p *= 1.00370;
151
}
152
153
else
154
{
155
*cs2s2p *= 1.0357;
156
}
157
158
159
/* use general formula for 2s3p */
160
a = -0.244;
161
b = 0.25;
162
c = 4.;
163
164
/* excit = e2/(te * 1.380622e-16) */
165
excit = t2s3p->
EnergyK
/
phycon
.
te
;
166
gbar = a + b*log(1./excit+c);
167
/* tarray(ipLnGF) = gf */
169
*cs2s3p = gbar*197.47*
EVDEGK
*t2s3p->
Emis
->
gf
/t2s3p->
EnergyK
;
170
/* cs2s3p = gbar * 197.47*eVdegK * GF2/(e2/1.60184e-12)
171
* */
172
return
;
173
}
Generated for cloudy by
1.8.1.2