Uploaded by 김동윤

MultiBolt v1-04

advertisement
MultiBolt Documentation
Version 3.0.1
Max Flynn
Document draft 1.04, written with LATEX
Texas Tech University, Center for Pulsed Power and Power Electronics
Lubbock, TX 79409, United States of America
March. 2022
Contents
1
Introduction
3
2 How to Cite this Program
3
3 Governing Equations
3.1 Hydrodynamic . . . . . . . . . . . . . .
3.1.1 Zeroeth-Order [ 0 ] . . . . . . . .
3.1.2 First-order Transverse [ 1T ] . . .
3.1.3 First-order Longitudinal [ 1L ] . .
3.1.4 Second-order Transverse [ 2T ] .
3.1.5 Second-order Longitudinal [ 2L ]
3.2 Steady-State Townsend [ SST ] . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
5
5
6
6
4 The Collision Operator
4.1 The Most General Form . . . . . . . . . . .
4.1.1 Elastic Collisions . . . . . . . . . .
4.1.2 Inelastic Collisions . . . . . . . . .
4.1.3 Notes on collisions and scattering .
4.2 Derivation of super elastic cross sections .
4.3 Using Isotropic Scattering . . . . . . . . . .
4.3.1 Attachment . . . . . . . . . . . . . .
4.3.2 Elastic . . . . . . . . . . . . . . . .
4.3.3 Excitation . . . . . . . . . . . . . . .
4.3.4 Ionization . . . . . . . . . . . . . . .
4.3.5 Superelastic . . . . . . . . . . . . .
4.4 Using Anisotropic Scattering . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
7
7
8
9
10
10
11
11
11
11
12
12
5 Equations for Calculated Parameters
5.1 Eigenvalues of Governing Equations
5.2 Distribution Functions . . . . . . . .
5.3 Rate Coefficients . . . . . . . . . . .
5.3.1 Individual Collisions . . . . .
5.3.2 Species-weighted Total . . .
5.4 Growth Coefficients . . . . . . . . .
5.4.1 Individual Collisions . . . . .
5.4.2 Species-weighted Total . . .
5.5 Drift Velocity . . . . . . . . . . . . .
5.5.1 SST Drift Velocity . . . . . .
5.5.2 Flux Drift Velocity . . . . . .
5.5.3 Bulk Drift Velocity . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
12
13
13
13
14
14
14
14
15
15
15
15
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.6 Mobility . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1 SST Electron Mobility . . . . . . . . . . . . . .
5.6.2 Flux Electron Mobility . . . . . . . . . . . . . .
5.6.3 Bulk Electron Mobility . . . . . . . . . . . . . .
5.7 Diffusion Coefficients . . . . . . . . . . . . . . . . . .
5.7.1 Conventional Diffusion Coefficient (Electrons)
5.7.2 Conventional Diffusion Coefficient (Neutrals)
5.7.3 Flux Transverse Diffusion Coefficient . . . . .
5.7.4 Flux Longitudinal Diffusion Coefficient . . . .
5.7.5 Bulk Transverse Diffusion Coefficient . . . . .
5.7.6 Bulk Longitudinal Diffusion Coefficient . . . .
5.8 Energy . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8.1 Average Electron Energy . . . . . . . . . . . .
5.8.2 Characteristic Electron Energies . . . . . . . .
6 How To Use This Program
6.1 C++ Header Library . . . . . .
6.2 Command Line Arguments . .
6.2.1 Model . . . . . . . . . .
6.2.2 Environmental . . . . .
6.2.3 Numeric Grid . . . . . .
6.2.4 Export . . . . . . . . . .
6.2.5 Iterations . . . . . . . .
6.2.6 Grid Remap Settings .
6.2.7 Cross section definition
6.2.8 Sweep Definition . . . .
6.3 Scattering . . . . . . . . . . . .
6.3.1 Miscellaneous . . . . .
6.4 Graphical User Interface . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
15
16
16
16
16
16
16
16
16
17
17
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
17
17
18
18
18
18
18
19
19
20
20
21
7 Contact
23
8 Usage and Distribution
8.1 MultiBolt . . . . .
8.2 Dependencies . .
8.2.1 Armadillo .
8.2.2 SuperLU .
24
24
24
24
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
Introduction
MultiBolt is a multi-term Boltzmann equation solver for low temperature
plasma (LTP). MultiBolt decomposes the full Boltzmann equation:
[∂t + ⃗v · ∂⃗r + ⃗a · ∂⃗v ]F(⃗r, ⃗v, t) = C[F(⃗r, ⃗v, t)]
(1)
to solve for the one-dimensional electron energy distribution function
(EEDF) as well as the swarm parameters (rate, growth, and transport coefficients) which can be solved-for using the EEDF.
2
How to Cite this Program
At time of writing, MultiBolt is the central work of the following publications
by the authors:
• Flynn, M., Neuber, A., & Stephens, J. (2021). Benchmarking the calculation of electrically insulating properties of complex gas mixtures using
a multi-term Boltzmann equation model. Journal of Physics D: Applied
Physics, 55(1), 015201.
• Stephens, J. (2018). A multi-term Boltzmann equation benchmark of
electron-argon cross-sections for use in low temperature plasma models. Journal of Physics D: Applied Physics, 51(12), 125203.
If you use MultiBolt for your research, please cite the two journal articles
above, and please note the version in use.
3
Governing Equations
In this section, all governing differential equations as they appear in MultiBolt
will be defined.
To reflect their implementation, all equations in this section are written in
terms of energy in Joules.
3.1
Hydrodynamic
MultiBolt applies the spherical harmonics decomposition and second-order
gradient expansion of the Boltzmann Equation (eq. 1) per the work of Robson
and Ness in the following publications:
3
• Ness, K. F., & Robson, R. E. (1986). Velocity distribution function and
transport coefficients of electron swarms in gases. II. Moment equations and applications. Physical Review A, 34(3), 2185.
• Ness, K. F. (1993). Spherical-harmonics decomposition of the Boltzmann equation for charged-particle swarms in the presence of both
electric and magnetic fields. Physical Review E, 47(1), 327.
Please note that the latter (Ness, 1993) contains corrections to the governing equations first written in the former.
3.1.1
Zeroeth-Order [ 0 ]
(ℓ + 1)
qe E0
(2ℓ + 3)
−
3.1.2
u
[0]
df(ℓ+1)
(u)
du
!
(ℓ + 2) [0]
+
f (u)
4 (ℓ+1)
!
[0]
df(ℓ−1)
(u) (ℓ − 1) [0]
ℓ
+ qe E0
−
f(ℓ−1) (u)
u
du
4
(2ℓ − 1)
!
r
h
i
um
e
f [0] (u) = 0
for 0 ≤ ℓ ≤ Nℓ − 1 (2)
C fℓ[0] (u) − Np ω0
2 ℓ
First-order Transverse [ 1T ]
[1T]
df(ℓ+1) (u) (ℓ + 2) [1T]
(ℓ + 2)
qe E0
u
+
f (u)
du
4 (ℓ+1)
(2ℓ + 3)
!
!
[1T]
df
(u)
−
1)
−
1)
(ℓ
(ℓ
(ℓ−1)
[1T]
u
−
f(ℓ−1)
(u)
+ qe E0
−
1)
du
4
(2ℓ
!
r
h
i
um
e [1T]
− C fℓ[1T] (u) − Np ω0
f (u) =
2 ℓ
1
1
[0]
[0]
Np u
f
(u) −
f (u)
(2ℓ − 1) (ℓ−1)
(2ℓ + 3) (ℓ+1)
for 1 ≤ ℓ ≤ Nℓ − 1 (3)
4
3.1.3
First-order Longitudinal [ 1L ]
(ℓ + 1)
qe E0
(2ℓ + 3)
u
[1L]
df(ℓ+1)
(u)
du
!
(ℓ + 2) [1L]
+
f (u)
4 (ℓ+1)
!
[1L]
df(ℓ−1)
(u) (ℓ − 1) [1L]
ℓ
−
f(ℓ−1) (u)
+ qe E0
u
du
4
(2ℓ − 1)
h
i
− C fℓ[1L] (u) − Np ω0 fℓ[1L] (u) =
ℓ
(ℓ + 1) [0]
[0]
f (u) +
f
(u)
Np u
(2ℓ + 3) (ℓ+1)
(2ℓ − 1) (ℓ−1)
r
ume [0]
ω1 fℓ (u)
− Np
2
for 0 ≤ ℓ ≤ Nℓ − 1 (4)
3.1.4
Second-order Transverse [ 2T ]
(ℓ + 1)
qe E0
(2ℓ + 3)
u
[2T]
df(ℓ+1)
(u)
du
!
+
2)
(ℓ
[2T]
(u)
+
f(ℓ+1)
4
!
[2T]
df(ℓ−1)
(u) (ℓ − 1) [2T]
ℓ
u
−
f(ℓ−1) (u)
+ qe E0
du
4
(2ℓ − 1)
h
i
− C fℓ[2T] (u) − Np ω0 fℓ[2T] (u) =
r
1 (ℓ + 1) [1L]
[1T]
u
f(ℓ+1) (u) + (ℓ + 2) f(ℓ+1)
(u) +
3 (2ℓ + 3)
r
1
ℓ
[1L]
[1T]
f(ℓ−1)
(u) + (ℓ − 1) f(ℓ−1)
(u)
u
3 (2ℓ − 1)
r
r
r
ume 1
ume
[1L]
−
ω1 fℓ (u) − Np
ω2 fℓ[0] (u)
2
3
2
for 0 ≤ ℓ ≤ Nℓ − 1 (5)
5
3.1.5
Second-order Longitudinal [ 2L ]
(ℓ + 1)
qe E0
(2ℓ + 3)
u
[2L]
df(ℓ+1)
(u)
du
!
(ℓ + 2) [2L]
+
f (u)
4 (ℓ+1)
!
[2L]
df(ℓ−1)
(u) (ℓ − 1) [2L]
ℓ
−
f(ℓ−1) (u)
+ qe E0
u
du
4
(2ℓ − 1)
h
i
− C fℓ[2L] (u) − Np ω0 fℓ[2L] (u) =
r
2 (ℓ + 1)
(ℓ + 2) [1T]
[1L]
f (u) −
f (u)
−u
3 (2ℓ + 3) (ℓ+1)
2 (ℓ+1)
r
2
ℓ
(ℓ − 1) [1T]
[1L]
f (u) +
f(ℓ+1) (u)
−u
3 (2ℓ − 1) (ℓ+1)
2
r
r
r
ume 2 [1L]
ume
ω1 fℓ (u) − Np
ω 2 fℓ[0] (u)
+
2
3
2
for 0 ≤ ℓ ≤ Nℓ − 1 (6)
3.2
Steady-State Townsend [ SST ]
df(ℓ+1) (u) (ℓ + 2)
(ℓ + 1) u
(ℓ + 1)
+
f(ℓ+1) (u) +
αeff f(ℓ+1) (u)
qE0
u
du
4
(2ℓ + 3)
(2ℓ + 3) 2
df(ℓ−1) (u) (ℓ − 1)
ℓ
ℓ
u
+ qE0
u
−
f(ℓ−1) (u) +
αeff f(ℓ−1) (u)
du
4
(2ℓ − 1)
(2ℓ − 1) 2
h
i
− C fℓ[SST] (u) = 0
for 0 ≤ ℓ ≤ Nℓ − 1 (7)
4
The Collision Operator
MultiBolt applies the collision operator, the change in the electron phasespace due to collisions, as is explored in the following texts:
• Loureiro, J., & Amorim, J. (2016). Kinetics and spectroscopy of low
temperature plasmas. Berlin: Springer.
• Allis, W. P. (1956). Motions of ions and electrons. In Electron-Emission
Gas Discharges I/Elektronen-Emission Gasentladungen I (pp. 383-444).
Springer, Berlin, Heidelberg.
6
Please consult both for reference.
The collision operator is linear, and is treated as a superposition of the
collision operator per specific collisions.
C fℓ (u) = Catt. fℓ (u) + Cela. fℓ (u) + Cexc. fℓ (u) + Ciz. fℓ (u) + Csup fℓ (u) (8)
4.1
The Most General Form
The differential cross section of any process i is defined as:
σi (u, χ) = I(u, χ)σi (u)
(9)
Where σ(u, χ) is specifically the ith differential cross section as a function
of both scattering angle χ and electron kinetic energy u. σi (u) is, on the other
hand, the ith total integrated cross section, and I(u, χ) captures the behavior
of anisotropic scattering.
The momentum transfer cross section σm (u) is a common type of integrated cross section which is defined with respect to the differential elastic
collision cross section instead as:
Z
σm (u) = (1 − cos(χ))σ(u, χ)dΩ
(10)
Ω
Databases normally give the elastic momentum transfer cross section
for elastic collisions, and the total integrated cross section for inelastic collisions of any kind. For the purposes of a Boltzmann solver, note that it is the
elastic momentum transfer cross section which is conserved, while the shape
of the elastic total integrated cross section may change depending on the
scattering treatment. The total integrated cross section is always unchanged
for inelastic collisions regardless of scattering.
4.1.1
Elastic Collisions
For Cela. fℓ (u) , per the references above, MultiBolt follows the form of the
collision operator using the Lorentz approximation for terms ℓ > 0:
Cela. fℓ (u) = Np
Z
σela. (u, χ) Pℓ cos(χ) − 1 dΩ ufℓ (u)
Ω
for
And fulfills the ℓ = 0 term using:
7
1 ≤ ℓ ≤ Nℓ − 1 (11)
me M
2
(me + M)
2me
Cela. fℓ (u) = Np
M
4.1.2
me
M
≈
(12)
dfℓ (u)
d
2
u σela. (u, χ) fℓ (u) + kB T
dΩ
(1 − cos(χ))
du
du
Ω
for ℓ = 0 (13)
Z
Inelastic Collisions
The general form of the collision operator for inelastic processes, considering
both the forward process i → j and the backwards process j → i, is written
instead as:
Cinel. fℓ (u) =
Z
X
Np
Xj (u + uij ) fℓ (u + uij )Pℓ cos(χ) σji (u + uij )I(u + uij , χ)dΩ − Xi ufℓ (u)σij (u) +
Ω
i,j
Z
X
Np
Xi (u − uij ) fℓ (u − uij )Pℓ cos(χ) σij (u − uij )I(u + uij , χ)dΩ − Xj ufℓ (u)σji (u)
Ω
i,j
(14)
Terms related to uij or uji of the collision denote the "scattering out" term,
with an appropriate scattering angle χ, while terms unrelated to uij or uji denote
the "scattering in" term.
It is of important note that the above is not exactly the implementation for
ionizing collisions as it has no support for the creation of secondary electrons.
This expression used is, instead:
Ciz. fℓ (u) =
( Z
X
Np
Xi
iz.=i
∞
2u+uij
( Z
X
Xi
+ Np
iz.=i
sec ′
u′ fℓ (u′ )σiz.
(u , u)
2u+uij
u+uij
)
Z
Pℓ cos(χ) I(u′ , χ)dΩdu′
Ω
prim ′
u′ fℓ (u′ )σiz.
(u , u)
Z
)
Pℓ cos(χ) I(u′ , χ)dΩdu′
Ω
− Np Xi ufℓ (u)σij (u) (15)
Where σ(u′ , u) describes the ionization cross section for the scattering-out
of a primary electron with energy u′ and the creation of a secondary electron
with energy u.
8
The first two terms are relevant to the resultant primary and secondary
electrons (the scattering-out terms) and the third term denotes the incident
electron scattering-in.
MultiBolt presumes that the real differential cross section of this process
′
σ(u , u, χ) does allow for anisotropic scattering for both the primary and secondary electron. Thus, both scattering-out terms primary electron depend on
the scattering integral.
MultiBolt currently treats σ(u′ , u) as some fraction ∆ of primary energy
being imparted to the secondary. Thus, the general expression for ionization
is ultimately:
Ciz. fℓ (u) =
u
u
Z
X X
u
1
σk
+ uk f ℓ
+ uk
+ uk
Pℓ cos(χ) I(u′ , χ)dΩ
Np Xg
∆
∆
∆
∆
Ω
g=spec. k=iz.
Z
X X
1
u
u
u
+
Np Xg
σk
+ uk f ℓ
+ uk
+ uk
Pℓ cos(χ) I(u′ , χ)dΩ
1−∆
1−∆
1−∆
1−∆
Ω
g=spec. k=iz.
X X
−
Np Xg σk (u)fℓ (u)u
for 0 ≤ ℓ ≤ Nℓ − 1 (16)
g=spec. k=iz.
While ∆ = 21 , the electrons are sharing energy equally and the first two
terms of the above expression are identical.
Note that ∆ = 0 represents a special case ("one-electron-takes-all") that
is not yet implemented.
4.1.3
Notes on collisions and scattering
Some notes on the implementation of cross sections and scattering in general:
• MultiBolt assumes all input cross sections are integrated total cross
sections for the particular inelastic process, or the momentum transfer
cross section σm (u) for elastic processes.
• In the place of an elastic momentum transfer cross section, MultiBolt
may also accept one effective momentum transfer cross section (which
is the sum of the elastic and inelastic cross sections) per input species.
In this case, MultiBolt will calculate the value of the elastic momentum
transfer cross section using the inelastic cross sections of that same
species.
9
• MultiBolt allows only the use of one cross section to describe elastic
collisions per-species.
• Depending on the particular inelastic process, several terms are guaranteed to drop out of equation 14 based on the population of the related
species, which shortens the collision operator per-type of collision.
• All cross sections are assumed to be independent of azimuthal direction
ϕ.
the solid angle integrals may instead be written as
R This meansRthat
π
f(u, Ω)dΩ = 0 2πf(u, χ)sin(χ)dχ
Ω
4.2
Derivation of super elastic cross sections
A super elastic collision is treated as a collision for which an excited state is
the reactant, and a neutral is the product. Meaning, super elastics are only
included while χg for the excited state species g is greater than zero.
If read from an LXCat cross section file, super elastics are derived from all
excitation collisions for which the reactants and products can be discerned.
This is done regardless of whether or not a single ("->") or double ("<->")
arrow is used by the cross section header. The corresponding super elastic
collisions is calculated, from the "parent" excitation, using the Klein-Rosseland
relation, also called the principal of detailed balancing (see references at
beginning of this section):
σji (u) =
gi u + uij
σij (u + uij )
gj u
(17)
Where for this case, σij (u) is the parent excitation cross section, σji (u is the
derived super elastic cross section, uij is the transition energy of the collision,
and ggij ≡ g is the statistical weight of the transition. If g is not provided by the
parent excitation cross section, it is assumed to be unity.
The derivation of super elastic cross sections is handled specifically by
CollisionLibrary rather than MultiBolt. For details, please see the documentation of CollisionLibrary instead.
4.3
Using Isotropic Scattering
When scattering is assumed to be isotropic,
1
(18)
4π
The differential and total integrated cross sections are always equal.
I(u, χ) =
10
σi (u, χ) = σi (u)
(19)
The elastic momentum transfer cross section also is likewise equal to
the differential cross section.
σela. (u, χ) = σm (u)
Attachment
X X
Catt. fℓ (u) = −
Np Xg σk (u)fℓ (u)u
(20)
4.3.1
for
0 ≤ ℓ ≤ Nℓ − 1
(21)
g=spec. k=att.
4.3.2
Elastic
X X
df0 (u)
2me d
2
Cela. fℓ (u) = δℓ,0
Np Xg
u σk (u) f0 (u) + kB T
M
du
du
g=spec. k=m
X X
− (1 − δℓ,0 )
Np Xg σk (u)fℓ (u)u
for 0 ≤ ℓ ≤ Nℓ − 1 (22)
g=spec. k=m
4.3.3
Excitation
X X
Cexc. fℓ (u) = δ0ℓ
Np Xg σk (u + uij )fℓ (u + uij )(u + uij )
g=spec. k=exc.
−
X X
Np Xg σk (u)fℓ (u)u
for 0 ≤ ℓ ≤ Nℓ − 1 (23)
g=spec. k=exc.
4.3.4
Ionization
u
u
X X
u
1
σk
+ uk fℓ
+ uk
+ uk
Ciz. fℓ (u) = δ0ℓ
Np Xg
∆
∆
∆
∆
g=spec. k=iz.
X X
1
u
u
u
+ δ0ℓ
Np Xg
σk
+ uk f ℓ
+ uk
+ uk
1
−
∆
1
−
∆
1
−
∆
1
−
∆
g=spec. k=iz.
X X
−
Np Xg σk (u)fℓ (u)u
for 0 ≤ ℓ ≤ Nℓ − 1 (24)
g=spec. k=iz.
11
4.3.5
Superelastic
X X
Csup fℓ (u) = δ0ℓ
Np Xg σk (u − uij )fℓ (u − uij )(u − uij )
g=spec. k=sup
−
X X
Np Xg σk (u)fℓ (u)u
for
0 ≤ ℓ ≤ Nℓ − 1 (25)
g=spec. k=exc.
4.4
Using Anisotropic Scattering
todo: Documentation coming soon.
5
Equations for Calculated Parameters
In this section, the equations used in MultiBolt for calculating parameters will
be given.
5.1
Eigenvalues of Governing Equations
kiz.,eff
ω0 =
=
Np
s
2qe
me
ω1 = WBulk = WFlux +
s
r
ω2 =
Z
!
∞
ε
0
2qe
me
X
Xg
g=spec.
Z
σi (ε) −
i=iz.
[0|SST]
σi (ε) f0
(ε)dε
(26)
i=att.
X
Xg
g=spec.
X
i=iz.
σi (ε) −
X
σi (ε) f0[1L] (ε)dε (27)
i=att.
1
(2DFlux,T + DFlux,L )
3
s
!
Z
X
X
1
2qe ∞ X
+
ε
Xg
σi (ε) −
σi (ε) f0[2T] (ε)dε (28)
Np m e 0
g=spec.
i=iz.
r
ω2 = −
X
!
∞
ε
0
X
i=att.
2
(DFlux,L − DFlux,T )
3
s
!
Z ∞ X
X
X
1
2qe
+
ε
Xg
σi (ε) −
σi (ε) f0[2T] (ε)dε (29)
Np me 0
g=spec.
i=iz.
12
i=att.
5.2
Distribution Functions
All distribution functions for arbitrary terms ℓ are solutions to the implicit
linear system
Ax = b
(30)
Where A models the left-hand side of the governing equation, b models the
right-hand side of the governing equation, and x is the distribution function
for all ℓ. The system is constrained with the normalization condition, for all
systems:
(
Z ∞
√
1
for ℓ = 0
εfℓ (ε) =
(31)
0
otherwise
0
And the split-boundary conditions:
[0|SST]
fℓ
(ε = 0) = 0
[0|SST]
fℓ
for
(ε = ∞) = 0
ℓ = even, ℓ = 0
for
ℓ = odd
(32)
(33)
Equation 31 above, the normalization condition, reflects that the solution
is of the units eV −3/2 . This is
√a common form for the EEDF, akin to the solution
with units eV −1 divided by ε.
In this text, the distribution function is treated as both a function of energy
in Joules and electron-volts (eV). These are proportional to each other by a
−3/2
factor of qe .
5.3
Rate Coefficients
5.3.1
Individual Collisions
For any collision with cross section σi (ε), the density-reduced rate coefficient
is calculated using:
s
Z
ki
2qe ∞
[0|SST]
=
εσi (ε)f0
(ε)dε
(34)
Np
me 0
This rate coefficient is not fractionally-weighted. This means that for an
included collision whose species fractional presence is zero, this value may
be non-zero.
13
5.3.2
Species-weighted Total
The "total" rate coefficients for the system for any process (attachment, ionization, etc.) proc., which accounts for the fractional dependence of species
spec., is calculated using:
s
Z ∞
kproc.
2qe X X
[0|SST]
εσi (ε)f0
(ε)dε
(35)
=
Xg
Np
me g=spec.
0
i=proc.
5.4
Growth Coefficients
5.4.1
Individual Collisions
A valid growth coefficient may be associated with individual ionization or
attachment collisions only in SST conditions.
For any ionization or attachment collision with cross section σi (ε), the
density-reduced ionization coefficient is calculated using:
αi kiz.,i /Np
=
Np
WSST
(36)
And the density-reduced attachment coefficient
ηi
katt.,i /Np
=
Np
WSST
5.4.2
(37)
Species-weighted Total
The total ionization and total attachment coefficients are only distinguishable
and valid for SST conditions.
X X αi
α
=
Xg
(38)
Np g=spec.
Np
i=iz.
X X
η
ηi
=
Xg
Np g=spec.
Np
(39)
i=att.
The effective ionization coefficient, in SST conditions, is the difference
between the total ionization and attachment coefficient.
αeff
α
η
=
−
Np
Np Np
(40)
This is the eigenvalue of the SST condition and is directly solved by SST
schemes.
14
HD models cannot accurately discern between growth coefficients from
individual collisions. HD+GE models instead use the following to calculate
αeff , based on the treatment in the following:
• Blevin, H. A., & Fletcher, J. (1984). Electron transport and rate coefficients in Townsend discharges. Australian journal of physics, 37(6),
593-600.
αeff
W
=
Np
2DL N
5.5
Drift Velocity
5.5.1
SST Drift Velocity
WSST
5.5.2
1
=
3
W
2DL N
s
2qe
me
2
−
∞
Z
0
kiz. /N − katt. /N
DL N
(41)
εf1[SST] (ε)dε
(42)
Flux Drift Velocity
WFlux
5.5.3
s
1
=
3
s
2qe
me
∞
Z
0
εf1[0] (ε)dε
(43)
Bulk Drift Velocity
s
WBulk = ω1 = WFlux +
2qe
me
Z
!
∞
ε
0
X
Xg
g=spec.
X
i=iz.
σi (ε) −
X
σi (ε) f0[1L] (ε)dε
i=att.
(44)
5.6
Mobility
5.6.1
SST Electron Mobility
5.6.2
µSST Np =
WSST
E0 /Np
(45)
µFlux Np =
WFlux
E0 /Np
(46)
Flux Electron Mobility
15
5.6.3
Bulk Electron Mobility
µBulk Np =
WBulk
E0 /Np
(47)
5.7
Diffusion Coefficients
5.7.1
Conventional Diffusion Coefficient (Electrons)
s
Z ∞
[0|SST]
f0
(ε)
1
2
D e Np =
qe ε
dε
3 me qe 0
σT,eff.
5.7.2
Conventional Diffusion Coefficient (Neutrals)

−1
s
Z ∞
1
2
qe  [0|SST]
Dn Np =
qe εσT,eff + kiz.,eff /N q
f0
(ε)
2
3 me qe 0
ε
(48)
(49)
qe me
5.7.3
5.7.4
5.7.5
5.7.6
Flux Transverse Diffusion Coefficient
s
Z ∞
2
1
qe εf0[1T] (ε)dε
DFlux,T Np =
3 me qe 0
Flux Longitudinal Diffusion Coefficient
s
Z ∞
1
2
DFlux,L Np =
qe εf1[1L] (ε)dε
3 me qe 0
Bulk Transverse Diffusion Coefficient
!
r
r
1
1
DBulk,T Np =
ω2 +
ω 2 Np
3
2
Bulk Longitudinal Diffusion Coefficient
r √
1
DBulk,L Np =
ω2 − 2ω 2 Np
3
16
(50)
(51)
(52)
(53)
5.8
Energy
5.8.1
Average Electron Energy
Z
⟨ε⟩ =
0
5.8.2
6
6.1
∞
3
[0|SST]
ε 2 f0
(ε)dε
(54)
Characteristic Electron Energies
D
D e Np
=
µ µ[Flux|SST] Np
(55)
DT DBulk,T Np
=
µ
µ[Bulk] Np
(56)
DL DBulk,L Np
=
µ
µ[Bulk] Np
(57)
How To Use This Program
C++ Header Library
Several example scripts (.cpp "source" files) are distributed with MultiBolt.
Please consult these scripts and adapt for your specific use.
6.2
Command Line Arguments
Most use-cases for MultiBolt can be accomplished using the command-line
API. The command-line API can be used to perform swept calculations using
collisions from LXCat input files.
Arguments are parsed using keywords which lead with a double-dash.
Sweeps are done over values which may be otherwise defined by other
commands. The sweep value will always take precedence.
6.2.1
Model
--model [option]
--N_terms [int]
#
#
#
#
Model in use.
Choose one of: [HD, HD+GE, SST]
Number of terms of expansion.
Must be even. Must be no less than 2.
17
6.2.2
Environmental
--EN_Td [float]
# Reduced electric field strength (in Td).
--T_K [float]
# Temperature (in K).
--p_Torr [float]
# Pressure (in Torr).
6.2.3
Numeric Grid
--Nu [int]
# Number of points in finite difference scheme.
--initial_eV_max [float]
# Grid maximum energy (in eV).
--ENERGY_REMAP
# flag: allow remap scheme
--use_eV_max_guess
# flag: treat initial_eV_max as equal to EN_Td
# instead of set value for all sweeps
6.2.4
Export
# flag: suppress exported data output
--no_export
--export_location [path]
# Export location path
--export_name [name]
# Name of directory to make for export
# in export_location.
# By default, uses 'Run_x'
6.2.5
Iterations
--conv_err [float]
# Convergence error threshold
--weight_f0 [float]
# Iterative weight for f[0], f[SST] convergence
# Must be between 0 and 1
--iter_max [int]
# Maximum number of iterations per scheme
--iter_min [int]
# Minimum number of iterations per scheme
6.2.6
Grid Remap Settings
--remap_target_order_span [float]
18
# Preferred log-height of EEDF.
# Must be positive.
# Maximum number of grid remap attempts
--remap_grid_trial_max [int]
6.2.7
Cross section definition
--LXCat_Xsec_fid [path]
# Read all species in LXCat cross
# section file. Call multiple times
# for multiple filenames.
--species [name] [float]
#
#
#
#
#
#
Define one species to use, and its
fractional prevalence. Species can
only be used if they can be found
in any of the given cross section
files. Fractional prevalence must be
between 0 and 1.
--keep_all_species
#
#
#
#
flag: keep all species which
could be found in all files.
Note: this can make exported
data cluttered.
--scale_Xsec [string] [float]
#
#
#
#
Assign a scalar weight to the named
collision. The collision process string
must match exactly.
Scale must be positive.
6.2.8
Sweep Definition
--sweep_option [option]
#
#
#
#
#
Define variable of sweep.
Choose one of:
[EN_Td, T_K, bin_frac, Nu, N_terms]
If value is hard-set elsewhere in arguments,
it will be ignored in favor of the sweep.
#
#
#
#
#
If using [bin_frac], all species except the
first two will be removed. The binary-fraction,
the sweep value, will be assigned to the
first species. The second species will be
assigned the complimentary fraction.
# sweep styles
# Note: Some variables are ints. If floats are given in sweep,
# the sweep value will be typecast and possibly truncated.
19
# linear sweep
--sweep_style lin [start] [stop] [num]
# logarithmic (log10) sweep. start and stop are exponents.
--sweep_style log [start] [stop] [num]
# regular sweep
--sweep_style reg [start] [stop] [delta]
# point-wise sweep. Give as many points as desired.
--sweep_style def [arg1] [arg2] ... [argN]
6.3
Scattering
# Elastic scattering treatments
# choose one of: Isotropic,
# ScreenedCoulomb
# ScreenedCoulomb [float] <- denote screening energy
--elastic_scattering [option]
# Inelastic scattering treatments
# choose one of: Isotropic,
# IdealForward,
# ScreenedCoulomb,
# ScreenedCoulomb [float] <- denote screening energy
--excitation_scattering [option]
--ionization_scattering [option]
--superelastic_scattering [option]
6.3.1
Miscellaneous
--help
# flag: Display command line options.
# Ignores all other input.
--silent
# flag: do not let MultiBolt print statements to stdout.
--multibolt_num_threads [int, max]
# Define the upper limit of
# threads to allow MultiBolt to use (requires OpenMP).
# If 'max', MultiBolt will use as many as OpenMP allows.
--export_Xsecs # flag: denote that you want to export cross sections
#in-use into files. Cross sections will be printed in the
# range [1e-3, 1e3] eV
20
6.4
Graphical User Interface
The graphical user interface is essentially a wrapper for most command-line
API functionality. Make sure you are first familiar with section 6.2.
The GUI supports the following commands:
• Main > General > Model
– "HD", button-select: --model HD
– "HD + GE", button-select: --model HD+GE
– "SST", button-select: --model SST
– "Terms", user-input <int>: --N_terms [int]
• Main > General > Environment
– "Field Strength [Td]", user-input <float>: --EN_Td [float]
– "Pressure [Torr]", user-input <float>: --p_Torr [float]
– "Temperature [K]", user-input <float>: --T_K [float]
• Main > Numeric > Numeric Grid Settings
– "Grid Points [#]", user-input <int>: --Nu [int]
– "Use Guess?", checkbox: when true, disable strict definition of
initial_eV_max. Value will instead begin the same as E/N (in Td)
per-calculation.
– "Max Energy [eV]", user-input <float>: --initial_eV_max [float]
– "Use Remap?", checkbox: when true, --ENERGY_REMAP
• Main > Export > Export Settings
– "Suppress export?", checkbox: when true, --no_export
– "Export Xsecs?", checkbox: when true, --export_Xsecs
– "Change Export Location", pushbutton: press to select directory
from file-dialog in --export_location [string]
– "Exports with name ", user-input: if not blank, --export_name "yourstring"
• Main > More > Iterations
– "Conv. Error", user-input <float>: --conv_err [float]
– "Relax. Weight", user-input <float>: --weight_f0 [float]
21
– "Max Iter.", user-input <int>: --iter_max [int]
– "Min Iter.", user-input <int>: --iter_min [int]
• Main > More > Grid Remap Settings
– "Log-Height", user-input <float>: --remap_target_order_span [float]
– "Max Trials", user-input <int>: --remap_grid_trial_max [int]
• Main > More > Parallelization
– "Threads", user-input <int, max>: --multibolt_num_threads [int, max]
• Main > Set Collisions > LXCat Cross Section Files
– "Add File", pushbutton: press to add one or more files with filedialog into --LXCat_Xsec_fid [string]
• Main > Set Collisions > Species
– Each file added by the-above adds a species to the table. Species
which are selected (checkbutton, on the left) will be added explicitly.
Species which are unselected will not be added.
Denote the species fractional dependence with the user-input to
the right of the species name.
For each selected entry: --species [string] [float]
• Main > Set Collisions > Collision
– Scale , user-input <float>: --scale_Xsec "process_string" [float]
• Main > Set Collisions > Scattering
– "Elastic", option: --elastic_scattering [option]
– "Excitation", option: --excitation_scattering [option]
– "Ionization", option: --ionization_scattering [option]
– "Superelastic", option: --superelastic_scattering [option]
• Main > Set Collisions > More
– "Electron Energy Sharing", user-input <float>: --sharing [float]
• Main > Sweep Settings > Variable For the chosen swept variable, the
scalar setting elsewhere in the console will be disabled. MultiBolt will
calculate using the sweep definition instead.
22
– "Field Strength": --sweep_option EN_Td
– "Temperature": --sweep_option T_K
– "Pressure": --sweep_option p_Torr
– "Grid Points": --sweep_option Nu
– "Terms": --sweep_option N_terms
• Main > Sweep Settings > Points Write in as many points as desired as
comma-seperated values.
– --sweep_style def [float1] [float2] ... [floatN]
• Main > Sweep Settings > Linear
– --sweep_style lin ["Start"=float] ["Stop"=float] ["N"=int]
• Main > Sweep Settings > Log10
– --sweep_style log ["Start"=float] ["Stop"=float] ["N"=int]
• Main > Sweep Settings > Regular
– --sweep_style reg ["Start"=float] ["Stop"=float] ["Delta"=float]
Output from MultiBolt which normally goes to stdout is redirected to
the console in the lower right corner.
At time of writing, bin_frac is unsupported as a sweep style through the
GUI. Please directly use the command line API, or header library, for this
instead.
7
Contact
For inquiries, you are welcome to contact the following:
• Max Flynn, TTU, max.flynn@ttu.edu
If you have found an issue with the code, consider submitting a bug report
either through the git repository or by emailing with "MultiBolt" in the subject
line.
23
8
Usage and Distribution
8.1
MultiBolt
MIT License
Copyright (c) 2021 Max Flynn, Jacob Stephens
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
8.2
Dependencies
8.2.1
Armadillo
MultiBolt uses Armadillo, a C++ header library, to perform linear algebra
operations. For distribution information, please see the license file associated
with the version of Armadillo linked in the repository.
8.2.2
SuperLU
MultiBolt makes use of SuperLU to solve sparse matrix systems. SuperLU
5.2.x is interfaced-with by Armadillo. For distribution information, please see
the license file associated with the version of SuperLU linked in the repository.
24
Download