PLASIMO User Guide: The Plasimo Team September 18, 2020
PLASIMO User Guide: The Plasimo Team September 18, 2020
1 Introduction 4
2
5.5.2 Cascaded Arc Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.5.3 Building a 1D non-LTE Quasi-neutral Model from Scratch . . . . . . . . . . . . . . 42
5.6 LTE properties calculator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.6.2 LTE properties of Ar mixture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.7 Other Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.7.1 Monte Carlo model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.7.2 EM model - 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.7.3 EM model - 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3
Chapter 1
Introduction
PLASIMO is a framework for simulating low-temperature plasmas and gas discharges. It is being devel-
oped in the group Elementary Processes in Gas DIscharges (EPG) at the Department of Applied Physics
of Eindhoven University of Technology (TU/e). Since 2015 the TU/e’s spin-off company Plasma Mat-
ters B.V. is responsible for the distribution of the software, providing software support and consultancy
services.
For requesting an access to PLASIMO, please fill in the access request form on the PLASIMO
web page https://plasimo.phys.tue.nl/form_access_request.php or contact the PLASIMO team
[email protected].
For an overview of PLASIMO’s present capabilities we refer to the review paper [1] and to the
PLASIMO website https://plasimo.phys.tue.nl.
If PLASIMO is suitable for your particular application, you need to sign the software license.
PLASIMO team will provide you with information about the terms and conditions. After obtaining
a license you will be able to download the software and you will have access to all relevant documenta-
tion on this website.
This guide
This guide starts with a quick install procedure for PLASIMO. After this we will explain in more detail
an important part of PLASIMO: its graphical user interface (GUI). Next, using the GUI we will install
and run a series of example models to show the capabilities of our simulation toolkit.
4
Chapter 2
PLASIMO is available in two flavors: stable, released versions, and an experimental developer version,
where all the changes are done for the next release.
Before downloading PLASIMO, you should take a decision which branch you want to use: “Stable” or
“Developer” (also called HEAD). “Developer” is recommended for people who need the latest features of
PLASIMO. The downside is that experimental changes are allowed to go in and carry the risk of breaking
user input files or crashing the user interface. Users that need to update their input files are advised
how to do so. The file NEWS contains the documentation on what has changed since the last release. Note
that it’s possible to have more than one copy of the PLASIMO source tree on your machine, so you can
work with several versions if needed.
In both cases root privileges are needed to install PLASIMO. The installation directory is /opt.
5
For Unix/Linux users: Ubuntu
Save the .deb file to disk and from the command line execute (replacing ’XXX’):
sudo dpkg -i plasimo-XXX-XXX.deb
Most probably, your system wil notify you that the installation failed due to missing packages, which
can be fixed with the command:
sudo apt-get -f install
For macOS
The installation can simply be started by double-clicking the .mpkg file. When installing the package
you might get an error message informing you that it originates from an “unidentified developer”. To
install the package anyway, open “System Preferences” and go to “Security & Privacy”. If there is a
message saying something similar to “plasimo.mpkg was blocked from opening because it is not from an
identified developer.” you can press the button “Open Anyway”. Otherwise, temporarily “allow apps
downloaded from: Anywhere” and try installing the package again.
Execution on Windows:
In order to facilitate starting the executables under an MS Windows environment, a set of batch files is
shipped with the distribution, these can be found in the PLASIMO root directory.
You can start PLASIMO with the graphical user-interface by simply executing the script Plasimo.bat,
which resides in the PLASIMO root directory, for example with Windows Explorer. Together with two
console windows the PLASIMO main window appears. The second console window shows the log of
PLASIMO. After starting the application with an ‘empty’ model, you should see a window like that in
figure 2.1.
Execution on Linux/Unix:
As part of the build process, some information about the location of various files is recorded and stored
in a scripts, set-plasimo. This will set the current working directory as /home/jan.
Execute the following commands from your home directory:
1. . /opt/plasimo/bin/set-plasimo
or source /opt/plasimo/bin/set-plasimo
2. /opt/plasimo/bin/wxplasimo
Before continuing with loading a model, you have to prepare a directory where PLASIMO can write the
output data. You have to create a directory data in your home directory:
mkdir data
After starting the application with an ‘empty’ model, you should see a window similar to the one
shown in figure 2.1.
6
Execution on macOS:
Since macOS is certified as Unix, it can be run the same way as the Linux/Unix version. On a stan-
dard install of macOS the /opt directory where PLASIMO is installed is not shown in Finder, so you
can not simply use the file selection dialog to open one of the demosuite files that are shipped with
PLASIMO. The first option is to make the /opt directory visible in Finder with the following command:
sudo SetFile -a v /opt/. The second option is to use the “go to” feature of Finder by using the keyboard
shortcut “Command + Shift + g” and typing /opt.
Execute the following commands from your home directory:
1. . /opt/plasimo/bin/set-plasimo
or source /opt/plasimo/bin/set-plasimo
2. /opt/plasimo/bin/wxplasimo
After starting the application with an ‘empty’ model, you should see a window similar to the one shown
in figure 2.1.
Figure 2.1: Two screen-shot of PLASIMO’s graphical user interface (GUI). The screen-shot of the main
window (left figure) has been taken just after starting the application, when no model file has been
loaded yet. The elements of the main window (left figure) are a menu bar, a tool button bar and set of
tab windows. In the figure a tab window called ‘model editor’ is active. Context-sensitive help text is
displayed in a second window (right).
1. New button gives you the possibility to create a new model by selecting a model type from the
pop-up menu.
7
(a) PLASIMO graphical user interface (b) Help window
Figure 2.2: A screen-shot of PLASIMO’s graphical user interface (GUI). The screen-shot has been taken
just after loading an existing model.
2. Open pops up a file dialog which allows you to load a model by selecting an existing input file. A
number of existing models are shipped with the PLASIMO distribution. All the PLASIMO input
files reside in the directory input/. The location of this directory depends on the specific PLASIMO
version you are running:
• Windows zip: the installation directory;
• Linux package: in directory /opt/plasimo-XXX-XXX (or appropriate softlink /opt/plasimo);
The files in the input/ directory are separated in sub-folders depending on the sub-modules of
PLASIMO. Some of the existing example input files are described in more detail in the chapter 5.
3. Please load the example file plplugins/flow_temperature/input/cylindrical_2d_atmospheric_pressure.gum.
If there were no errors, the main window should now look like 2.2. In the tree window on the left
you see a tree representation of the model. The window on the right shows the contents of the
active tree item. These editors will be discussed in detail in chapter 3, tutorial sessions are provided
in chapter 5.
4. The Reload button allows you to reload an input file. PLASIMO uses simply text files that can
be edited with any of your favorite editors. In case you made changes in the this text input file,
this provides a quick way to reload the modified model.
5. The Help button activates or deactivates the visibility of a help window. By default it is activated.
It shows you a detailed description and requirements of the active tree item.
6. After a model has been loaded or modified to the user’s needs, it must be prepared for running.
Press the Install button to do this. This will do all kinds of necessary one-time installations, and
perform various checks on the sanity of the model file. Installing a model might therefore take
some time, typically up to a few seconds. If anything goes wrong during installation, a message
box will be popped up, telling the user what went wrong. After the problems have been solved,
one can try to install the model once more.
7. When the model is successfully installed, additional buttons are activated. These are:
• Run. Run the successfully installed model.
8
• Proceed (one step). All models are assumed to run in steps. A step can be either a time
step, or an iteration. Selecting this item causes a (paused) model to do one such step. This
can be useful if you use the application interactively, for example to find out the reasons for
divergence of otherwise unexpected behavior.
• Stop. Pauses a running model; this can be useful to inspect intermediate results.
For more information how to modify an existing model and how to manipulate the input data, please
follow the steps in 5. Information about all the functionalities if the graphical user interface of PLASIMO,
please read chapter 3.
9
Chapter 3
This chapter discusses the usage of the graphical user interface (GUI), its functionalities such as the
various model editors, settings and model specific GUI extensions.
• A status bar, displaying the current status of the model Installed, Paused, Running, etc.
As the menu/tool bars were previously discussed in chapter 2.3, the following text provides detailed
information about the tab windows Global settings, Model editor and the additional Model data
window, that appears after installing a model, as well as some model specific extensions.
10
In general, the structure of the Model editor window resembles the interface of most file managers,
showing the directory (section) tree on the left (Tree editor), while the window on the right shows the
contents of the active section (Leaf editor).
• Cut Removes the active node and the contents is copy to the clipboard.
• Copy Copy the active node
• Paste Paste the copied/cut node
• Paste into section Paste a copied node into the active section
• Disable this disables the entry if it is enabled. Disabled sections can be recognized by the light-up
color
• Enable this enables the entry if it is disabled. Pressing the right mouse button over a disabled
section pops up a menu which allows to re-enable the section.
• Undo all changes This option will undo the results of editing the active node. Node that after
switching to another node, editing can no longer be undone.
• Add... Add a relevant context dependent section. It is possible to have multiple choices. After
one is selected a small addition window appears with the following options:
– Create default section This will create a section with the default specifications. Note, that
the relevant subsections will not be created recursively.
– Copy file into a section This option allows you to copy data structures from external files.
It works like this: the model will copy the data from an external file and paste it in your input
model file.
– Include file as a section This option also allows the usage of external data files. But it
works slightly different: the model will only use the external data without writing the whole
data it in your model file. Instead, you will see in your input file in the relevant section a
line like this: Include filename.in SectionName. This allows to have only one definition of an
argon mixture, say, on disk, which can be shared (included) by all models that describe some
argon plasma.
11
(a) Dialog Editor (b) Text Editor
Figure 3.1: The various leaf editor windows. Figure 3.1(a) shows the dialog editor. The example shows
the time settings of a time-dependent model edited using the dialog editor. Figure 3.1(b) shows a text
editor, as an example is a lookup table. Figure 3.1(c) shows the grid editor in action (here a PDP
geometry is being edited).
The node dialog editor window (figure 3.1(a)) is the one you will most commonly encounter. It contains
one leaf block for each data item type. The name of the data item and a short description are displayed
above the box. Note that a box may be empty. Clicking on the name of the data item with the right
mouse button pops up a menu which allows you to add a new leaf of the relevant type. The default
values will be used.
Each entry has a check box on the left, followed by one or more editor or choice fields. By clicking
12
on the check box with the left mouse button, the entry can be disabled or enabled. Disabled entries are
not taken into account when the model description is interpreted by PLASIMO. They appear in grey
and cannot be edited.
In addition, two small text editor windows are available. The ’Annotation’ widget can be used to
provide a description of the active section. If one exists, it will be shown. The window titled ’Other
entries’ can be used to add entries in text raw form. PLASIMO also dumps entries it cannot handle here
when creating a dialog editor, so it should be empty after creating a fresh dialog editor.
The grid editor (figure 3.1(c)) facilitates editing of grids (“matrices”) consisting of elements which can
be represented as strings. Sometimes the matrix is to big to be visualized in the grid editor. You can
zoom out/zoom in the matrix by pressing the control key and scrolling the mouse wheel. The matrix
consists on cells with different colors as to each color is assigned different material type.
There are two editing modes, the Grid layout mode and Grid cell mode mode. By default, the cell
mode is active. One can switch between these modes via the context menu which is activated by pressing
the right mouse button on the grid region.
The Grid cell mode deals with the properties of the cells, such as assignment of new material type.
Clicking or selecting cells with the left mouse button will assign the active color to them (by default this
is the color black, which always corresponds to the material with the lowest alphabetic key value). If the
control key is down, instead the material under the left mouse button is picked up as active color. New
material color-index pairs can be created via the menu which is activated by clicking the right mouse
button and selecting Select material. A list of previously defined materials will pops up for selection
of material type.
In Grid layout mode only entire rows or columns can be selected. Row and column selection can be
activated by clicking on the grey label bar at the left and top side of the grid, respectively. The presently
selected row(s) or column(s) can be cut and copied via the menu which is activated by clicking the right
mouse button. Then, the cut or copied row(s)/column(s) can be pasted before the active row/column.
Finally, after editing the geometry matrix, you may want to keep or discard the changes. The changes
will be automatically saved after switching to an other node. If you do not want to save the changes you
made, you can retrieve the original matrix by pressing the right mouse button on the CellMatrix in
the tree editor and selecting Undo all changes from the menu. Note, that after switching to another
node, editing can no longer be undone.
The text editor window allows the user to manipulate the data entries in raw format. In some cases
the creation of a text editor window is requested explicitly, because the nature of the data does not
allow convenient editing inside a node dialog or grid editor dialog. Perhaps an appropriate editor will be
provided later. An example is a look up table in a two-column format (see figure 3.1(b)).
The text editor is also used as fallback option if the creation of a node dialog or grid editor window
fails for some reason. If the latter happens, the user will be informed and is kindly requested to send a
bug report to the PLASIMO maintainers.
There are a few things to think of when using the text editor window. Firstly, disabled leafs occur in
raw text format with an underscore ( ) prepended. Secondly, make sure to quote items inside this entry
which consist of multiple words. As an example, an entry which specifies a name should be written as
Name "Jan van Dijk" instead of Name Jan van Dijk. In the latter case, you will perhaps get an error
when PLASIMO interprets this entry, but more likely the part van Dijk will be silently ignored. The
text control correctly handles special characters, so newlines, tabs and backslashes can be safely used.
13
3.4 The Data Window
After installing the model, an additional tab windows has appeared, named Model data. You will
see that the available data in this window have been organized as a tree, displayed on the left. The
tree consists of a model-dependent data, which may be grouped into sections of related variables. As a
minimum, a section called General has been created for every PLASIMO model. Not surprisingly, its
contents provide some general information about the model, such as the status of the calculation (you
may think of data like elapsed time and the number of iterations). This can be activated by double
clicking on the item common data inside section General.
Figure 3.2: A screen-shot of PLASIMO’s graphical user interface (GUI). The screen-shot has been made
during a run of the model cylindrical 2d atmospheric pressure.gum and shows an OpenGL plot of the
temperature of the plasma region.
For each data item a “viewer” can be created. Creating a viewer can be easily achieved by moving
the mouse over the data item ‘temperature’, say, and double click on it will open the default OpenGL
viewer and you get the result shown in figure 3.2. Please take a moment to see what data are there.
By default, all viewers are embedded at the right hand side of the data window, and are displayed
as a series of tab windows. If you would like to monitor the viewers simultaneously, just drag the tab to
the bottom or to the right of the data window.
PLASIMO offers the option to open all the viewers in separate windows (not embedded in the ap-
plication). You can achieve by selecting option EmbeddedViewers no in the GlobalSetting menu before
installing a model. If you would like to keep this behaviour permanently, you can change the setting
EmbeddedViewers in the configuration file runtimecnf.in. The file is located in folder plasimo_root_directory/config/.
Additional viewer types are available and you can choose one by clicking the right mouse button
in the selected item. This will pop up a menu which offers the option ‘Add view’. Some additional
14
functionalities of the various viewers are discussed in the following section.
OpenGL
The OpenGL viewer is the default viewer in PLASIMO for plotting 2D and 3D plots. The plot can be
rotated by pressing the left mouse button on the plot and drag the plot until the final orientation is
reached. The same effect can be obtained using the arrow keys. If you keep the shift key pressed during
such operations, the plot will be translated, rather than rotated. The plot window can also be controlled
with the following keys:
MathPlot WireFrame
This viewer is suitable for plotting data in a X-Y format. This is the default viewer in PLASIMO for
plotting this type of data. Pressing the right mouse button, the pop up menu will give you a list of all
options available for this plot.
Text view
The viewer shows the data in text format.
Grid
This viewer shows the data for one field variable as a spreadsheet. The cells in the spreadsheet are placed
to resemble the positions of the corresponding data field variable in the master grid. This means that
for a cell showing the value of a field defined at the nodal points (e.g. the species densities), the north,
south, west and east cells are empty, because in the master grid they represent the positions of the flux
15
field variables. See the grid document for more information.
For x-y data plots the attribute can be logarithmic scale. For instance, if you would like to visualize the
convergence log with logarithmic y axes, the leaf Viewer should look like this:
You can add viewers leafs as many as you can/want. Note that the editor is case sensitive!
• Adjustment of relaxation factors: PLASIMO models allow the inspection and adjustment of the
iterative control parameters while a simulation is in progress.
If the model supports these functionalities, after installing it, you will see an additional menu called
Controls. This menu provides access to the extensions. If the extensions are not relevant for your
model, the menu item is greyed out. As an example, the relaxation factor control is disabled if there are
no relaxation factors in your model.
Grid Resizing
Grid resizing can be seen as a poor man’s implementation of the multi-grid algorithm. Essentially, in
such methods the number of grid cells is not kept constant. Rather, the results of rapidly converging but
inaccurate calculations on coarse meshes are combined with accurate, yet slowly converging calculations
16
on finer meshes. The result is a net reduction of the time-to-convergence. Typically a number of grid
changes is made in both directions. A full multi-grid algorithm has not been implemented in PLASIMO.
However, wxPlasimo allows its users to manually adjust the mesh size while a simulation is in progress.
After a grid resize all grid-dependent variables are interpolated to the new grid and the iterative process
resumes.
Please note that this grid resizing can also be configured to be done automatically at the input file
level, see section MainIterConfig of chapter ‘Input File Reference’ of the User Reference Guide for details.
17
Chapter 4
18
symbol comments
() grouping, function calls
[] array indexing
x^y exponentiation, xy
+x unary plus: +x is equal to x
-x negation
~x bitwise not
x * y multiplication
x / y division
x % y remainder
x + y addition
x - y subtraction
x << y bitwise left shift
x >> y bitwise right shift
< comparison
<=
>
>=
x == y comparison
x != y
x & y bitwise and
x ^| y bitwise exclusive-or
x | y bitwise or
a && b logical-and
a || b logical-or
a ? b : c if-then-else
x = y declares x, assigns y
x , y equals y, but first x is evaluated
Table 4.1: Operators, from high to low precedence. Operators within the same block have the same
precedence. Note that the caret is used for exponentiation, whereas C(++) users would expect it to
denote an exclusive-or. Also the assignment operator is different, since it declares a new identifier x.
19
Constants
symbol comment value
`pi π 3.1415926535897932384626433833
`c speed of light 2.99792458 × 108 m/s
`G gravity constant 6.67408 × 10−11 kg−1 m3 s−2
`me electron mass 9.10938356 × 10−31 kg
`mp proton mass 1.672621898 × 10−27 kg
`qe elementary charge 1.6021766208 × 10−19 s A
`kB Boltzmann constant 1.38064852 × 10−23 kg m2 s−2 K−1
`NA Avogadro’s constant 6.022140857 × 1023 mol−1
`h Planck’s constant 6.626070040 × 10−34 kg m2 s−1
`hbar `h/(2*`pi) 1.05457 × 10−34 kg m2 s−1
SI base units
base alternative
kg g , amu
m Ang , in
s minute, hour, day, year
A
K eVT(=11604.5 K )
mol
cd
rad deg(=0.0174533 rad )
sr
Derived units
symbol value
C 1s A
F 1 kg−1 m−2 s4 A2
H 1 kg m2 s−2 A−2
Hartree 4.35974 × 10−18 kg m2 s−2
Hz 1 s−1
J 1 kg m2 s−2
N 1 kg ms−2
Ohm 1 kg m2 s−3 A−2
Pa 1 kg m−1 s−2
S 1 kg−1 m−2 s3 A2
T 1 kg s−2 A−1
Td 1 × 10−21 kg m4 s−3 A−1
Torr 133.322 kg m−1 s−2
V 1 kg m2 s−3 A−1
W 1 kg m2 s−3
Wb 1 kg m2 s−2 A−1
atm 101325 kg m−1 s−2
bar 100000 kg m−1 s−2
cm1 1.98645 × 10−23 kg m2 s−2
eV 1.60218 × 10−19 kg m2 s−2
l 0.001 m3
lm 1 cd sr
lx 1 m−2 cd sr
sccm 4.47797 × 1017 s−1
sccs 2.68678 × 1019 s−1
Table 4.3: Functions that are available for int, double and complex<double> value types. †: these functions
require that the imaginary parts of both arguments are zero and operate on the real parts if that is the
case.
21
symbol GM LTE 2T DDI
Species
Density('<species>') X X X X
MassFraction('<species>') X X X X
Mass('<species>') X X X X
Charge('<species>') X X X X
Energy('<species>') X X X X
TotalDensity() X
MassDensity() X
Species transport
Diffusion('<species>') X
Mobility('<species>') X
FluxDensity('<species>') X
ElectronMobilityN() X
ElectronDN() X
Flow
Pressure() X X X
LaminarViscosity() X X X
MassDens() X X X X
EM
ElectricalConductivity() X X
RelativePermittivity() X X
OhmicDissipation() X X X
Potential() X X X
ElectricField() X X X
SurfaceChargeDensity() X
VolumeChargeDensity() X
Temperature
Temperature() X
Temperature('<species>') X X X
GasTemperature() X X X
ElectronTemperature() X
ElasticEnergyTransfer() X X X
ThermalConductivity() X
ThermalConductivityHP() X
ThermalConductivityEL() X
Table 4.4: Variables that are available and can be used in custom expressions in the Global model (GM),
LTE, quasi-neutral 2-temperature model (2T) and the drift-diffusion-inertia (DDI) model. Note that the
variables are available for the various models only if they are calculated.
22
Chapter 5
5.1 Introduction
This chapter explains some of the existing demo models that were shipped with the PLASIMO distri-
bution. The examples give also information how you can edit an existing model and create a new one
using the graphical user interface.
∂np ~ p = Sp ,
+∇·Γ (5.1)
∂t
where Sp is the net source term determined by the reactions occurring in the discharge. The flux density
~ p describes the transport of particles due to drift and diffusion:
Γ
~ p = µp En
Γ ~ p − Dp ∇np (5.2)
∂nε ~ ε = Sε
+∇·Γ (5.3)
∂t
with electron energy flux density given by:
~ ε = 5 µe En
Γ ~ ε − 5 De ∇nε . (5.4)
3 3
Here nε = ne ε is the electron energy density and ε is the mean electron energy.
23
The effective source term Sε for electron energy is given by:
X
Sε = Γ ~e ·E
~ − ne εr kr nr − Lε , (5.5)
r
where the first term represent heating by the electric field and the second the energy loss in inelastic
collisions. The summation runs only over the electron impact reactions, with nr the density of the target
particles and εr the threshold energy. The last term Lε in the equation represent the energy loss due to
elastic collisions.
These equations are coupled with the Poisson equation for computation of the electric field. The
transport equations — the continuity equation (5.1), the momentum balance equation (5.2), and the
electron energy balance equation (5.3) are coupled to Poisson equation for computation of the electric
field:
~ = −∇ · (∇V ) = ρ,
∇ · (E) (5.6)
where is the dielectric permittivity, V the electrostatic potential, and ρ the space charge density given
by:
X
ρ= q p np . (5.7)
p
Poisson equation is solved in the plasma region and the dielectric regions, in order to account for the
influence of charged species on the electric field. Note that ρ may be discontinuous and that surface
charges may be present.
More information about the governing equations and their derivation can be found in [2, 3].
Boundary conditions
The default boundary conditions in the drift-diffusion module are: At the symmetry axis and the open
boundaries homogeneous Neumann BC are employed, meaning that the derivatives of the quantities in
the directions perpendicular to these boundaries are set to zero. For the potential distribution at the
electrodes, the expressions of the applied voltages are used (Dirichlet boundary conditions). The BC for
np and nε at the physical boundary are given by expressions for the flux densities Γ~ p and Γ
~ ε [4].
~ p · ~n = (1 − r)np ap µp E
Γ ~ · ~n + 1 vth − Sp (5.8)
4
p
where r is the reflection coefficient, vth = 8kT /πm the thermal velocity. The parameter ap is set to 1
if the drift velocity is directed to the wall and zero otherwise:
ap = 1, ~ · ~n > 0
µp E
= 0, ~ · ~n < 0
µp E (5.9)
The source term Sp account for wall production/destruction at the wall, such as secondary emis-
sion, sputtering, desorption, thermo-ionic emission. These wall processes are user-specified in section
WallProcessList.
Optionally the above-described boundary conditions can be overwritten by adding an optional section
BoundaryConditions.
Module options
Optionally the drift-diffusion model described above can be consistently coupled with gas temperature
calculations. We solve the energy balance equation in terms of heavy particle temperature.
Optionally, the effect of the gas flow is described with solving the mass balance equation for the
heavy particles together with the Navier-Stokes equation (bulk momentum balance). The time rate of
24
change of the mean momentum, in each fluid element, is due to the net pressure forces, viscous stress,
the Lorentz force and gravity. The pressure contribution is due to gradient in the pressure, rather than
the pressure itself. The absolute pressure is dealt with the ideal gas law. For the viscous part of the
stress tensor we apply Stokes model: This is applicable for laminar flows. For turbulent flows, there is an
additional turbulent stress term which requires a turbulence model. In PLASIMO κ– and κ–ω models
are available.
This section presents example input files and shows how the drift-diffusion module is used.
Model specifications
This input file contains a model of a low pressure DC discharge with a simple geometry: two parallel
electrodes at a distance of 45 cm , enclosed in a glass tube with a inner radius of 3.2 cm . The gas is He
and only electron impact ionization is considered. The gas pressure is constant at 1 Torr , and a constant
voltage of −400 V is applied.
• Discharge Region:
This section contains all variables that are calculated inside the plasma region. The section is
subdivided into:
– EM Data:
In this section you can see the EM data that is calculated on the discharge region. That is
(reduced) electric field, power dissipation and current density.
– Electron Energy: contains the data from the energy equation, such as the mean electron
energy, mean energy source, mean energy flux density.
– Gas Temperature: contains the gas temperature related variables.
– Mixture: contains Species (variables for each species, such as density, mobility, source, flux)
and Reactions (rates of the specified reactions).
– History Data: This section is available if it is requested from the input. It contains plots of
user-specified variables as a function of time, averaged over the volume. In this example, the
variables are the species densities.
• EM Region:
In this section you can see the EM data, such as potential distribution, surface and volume charge
densities.
• General:
Naturally contains the general common data, such as the status of the simulation. You can see the
model status by double-clicking on common data.
• Geometry:
Here you can see the geometry - the configuration and the control volume grids.
25
Results
When the model is loaded, installed, and run, it will be possible to identify several regions in the
discharge:
• Negative glow:
In the negative glow an intense electron impact ionization occurs. The electrons lose their energy
and the E-field drops to almost zero. Select the Discharge Region -> Mixture -> Reactions node
for the reaction rate and Discharge Region -> Mixture -> Species -> e to see the power dissipation
of the electrons.
• Positive column:
In this region the potential gradient is practically constant, and electron impact ionization occurs
throughout this region.
Output files
All calculated variables are not only shown in the GUI but are also stored on disk. The data path as well
as the number of writes of the output data can be specified in the input (see MainIterConfig). By default,
the program store the output files in the main PLASIMO folder if no data path is specified in the leaf
[MainIterConfig]->Directory. In subsection [MainIterConfig]->[TimeSchedule]->[ScheduleBlock] the
leaf dt_log specifies the period of writing the output data.
The spatial distribution of each quantity is written in a separate text file. The files names are
constructed as follows:
<region name>_<variable name>_<suffix>.<extension>
In this example two calculation regions are available: the plasma region that contains only material
with ID 0, and interior region that contains materials with ID 0 and 2 (dielectric). The variables that
are calculated on the plasma regions starts with plasma_, while the variables that are calculated on the
interior region starts with interior_.
For some of the calculated variables the data is printed per species. These variables are the density,
diffusion, mobility, flux density, source and power dissipation. The <variable name> then consists of he
variable’s name followed by the index of the species. The indexing of the species starts from 0 and
matches the order of the species specified in the input. In this case density_0 contains the density
distribution of the electrons while density_1 is the density distribution of the second defined particle, in
this case He+ .
The <Prefix> is a user-specified prefix (leaf [MainIterConfig]->Prefix). Changing the prefix can help
you to distinguish output from different calculations. In this example, the prefix is case1. Thus, the full
name of the output file that contains the electron density data is case1_plasma_density_0.dat.
26
Apart from the spatial distribution of the variables, a number of additional output files are produced:
history.out: volume averaged quantities as a function of time. The quantities are written with out-
put refresh rate as specified in LogInterval in section MainIterConfig.
status.dat: the status of the calculation together with some variables averaged over the volume; the file
is overwritten at every time step.
status_history.out: the same data as in status.dat, but written at a user-specified period.
• Volume averaged time-dependent data This data can be requested by adding an optional section
HistoryData where you can specify which data should be recorded as a function of time.
Model specifications
The input file contains a model of a hollow cathode discharge (HCD) used for laser application. Descrip-
tion of the complete model you can find in [5, 6, 2], while here is a simplified version for demonstration
purposes.
The geometry is a cylindrical hollow cathode with 4 mm inner diameter and 50 mm length; two anode
rings are placed at both sides of the cathode, separated from each other with quartz rings. The geometry
is symmetric around the center of the cathode (both axially and azimuthally). Hence, the simulated
discharge region is half of the cathode length, the anode region and the dielectric in between. A fixed
voltage of -300 V is applied.
The operating gas is He at constant pressure of 2.3 kPa . The considered species are He+ , Cu and
+
Cu . The buffer gas atoms are ionized by electron impact ionization. The metal atoms in the discharge
are produced only by sputtering due to ion bombardment of the cathode surface. The metal atoms are
ionized in the plasma and they also can produce sputtering (self-sputtering). The ionization mechanism
of Cu includes electron impact ionization and charge transfer with buffer gas ions.
27
Sputtering module
The sputtering process can be taken into account in the model and it can be applied at different materials
if multiple materials are present. This can be done as follows:
• In section PlasmaRegion with the right mouse bottom add section WallProcessList
• Select WallProcess; on the right side window you can fill the species bombarding the wall (the
projectile) and the sputtered atoms (recoils). You have to specify also the material where the
process should be applied. The names of the materials are defined in section Geometry. The
sputtering process is applied on materials with names cathode and anode.
• The sputtering yield for every projectile species is specified by adding a subsection SputteringYield.
The SputteringYield is of type Constant.
Table 5.1: Input parameters. The data is taken from ref. [7].
where ε is the mean electron energy. In this model only electron impact ionization will take place, other
elastic and inelastic processes are not taken into account.
The boundary conditions for this model are as follows: For the ion densities Homogeneous Neumann
BC are applied on both electrodes, for the electron density and electron energy density homogeneous
Dirichlet BC are applied, and finally for the potential boundary conditions are the applied voltages
28
(Dirichlet BC). In PLASIMO’s drift diffusion model flux boundary conditions are used by default. We
will see later how the default boundary conditions can be overwritten in order to achieve the desired
model behavior.
Model construction
We will begin by creating the computational grid, followed by the species and their reactions, and finally
the model control parameters.
Whenever the text says to create a new section and the section contains some text between square
brackets, for instance NewSection[SomeType] the text between the brackets is the Type of the section. This
means that in the submenu of the right-click menu the appropriate entry must be selected. At all times
the help window can give you more information about the section of the model currently selected.
1. Start PLASIMO as described in section 2.2.
2. Click Create new model (left icon, or use the menu) and select DriftDiffusion-1D.
3. In Model add !1D!Grid[cartesian].
4. Set x_max to 0.02*m.
5. Add section Geometry and set the entry for BaseRefinementPower to 5. The help window gives you
more information about the grid refinement.
6. In Geometry add 3 Material sections named plasma, grounded and powered. Set the Id in each of the
materials starting with 0 for the plasma, 1 for the anode and 2 for the cathode.
7. In Material plasma add a property by right-clicking in the Property frame, with key Type and value
DischargeGas.
8. In both the grounded and powered sections add two Property key-value pairs, namely Type —
Electrode.
9. Add section CellVector and set the materials in the matrix (see the user guide on how to use
the grid material editor). By default you will see a cell vector containing the Id’s of the defined
materials: 102
10. Add a section Stretch[TwoPt_Stretch]. That means that a stretching of the numerical grid will
be applied aground two points, logically more grid points in the sheath regions, i.e. close to the
electrodes. On the leaf editor, specify for Point1 0.0 and Density1 2; and for the second point
Point2 1.0 and Density2 2.
11. In Model add PlasmaRegion[DriftDiffusion]. The section is created with one subsection which is
not used for this model.
12. Set RegionId to interior.
13. Set the pressure to 1*Torr. The right-hand side pull-down menu can be used to select more
convenient units.
14. In PlasmaRegion add GasTemperature[Fixed]. In the default created subsection TemperatureFunction
the value is set by default to 300 K .
15. Add section Mixture[DriftDiffusion]. The section is created with three required subsections:
GasList, SpeciesList and ReactionList[List].
29
18. In SpeciesList add subsection Species. Set name to Ar^+, InitDens to 5e15*m^-3.
19. In the Species add a State[Atom] named ion with Energy to 15.578*eV, and Weight to 6.
20. In the Species we have to add the transport coefficient: Mobility and Diffusion. PLASIMO requires
the mobility µ × N in units of m−1 V−1 s−1 and the diffusion D × N in units of m−1 s−1 . You can
convert the pressure-based units from table 5.1 and use Mobility[Constant_muN]. Other option is to
let PLASIMO do the conversion for you. The latter can be achieved by selecting Mobility[Custom].
and write the following function:
0.14*m^2*V^-1*s^-1*Pressure()/(`kB*Temperature('Ar'))
In function expressions you can use the common physics constants preceded by backtick, such as
`pi, `c, `kB.
22. In SpeciesList add another Species named e with initial density InitDens of 5e15*m^-3.
25. In ReactionList[List] add Reaction called ionization with the format Ar + e -> Ar^+ + e + e.
26. Add a section RateCoefficient[Custom] and write the function as it is given in table 5.1:
(MeanElectronEnergy()>5.3*eV) ?
8.7e-15*m^3/s*(MeanElectronEnergy()/eV-5.3)*exp(-4.9/(sqrt(MeanElectronEnergy()/eV-5.3)))
: 0*m^3/s
27. In Mixture add ElasticEnergyTransfer[Constant_L/N] with the LossTerm set to 0.0 eVs−1 m3 .
28. In order to overwrite the default boundary conditions, in section PlasmaRegion add a section
BoundaryConditions and set Target the ionic species Ar+. In BoundaryConditions add a subsection
BndConfig and add two leafs ApplyAt and fill the names of the electrodes: grounded and powered in
each leaf. Inside BndConfig add the desired boundary condition type: BndCond[HomNeumann].
29. Add another section BoundaryConditions with Target e. Add again the subsection BndConfig and
fill the two leafs ApplyAt again for both electrodes. Inside BndConfig add boundary condition type:
BndCond[HomDirichlet].
31. In Model add DataSchedule and inside the subsection DataFiles add DataFormat[Plain].
30
33. In TimeSchedule add section ScheduleBlock. Set BlockDuration to 140 µs , InitialTimeStep to 1 ns ,
NumberOfStartingSteps to 1, dt_min to 1 ps , dt_max to 1 ns , and dt_log to 140 µs . The right-hand
side pull-down menu can be used to select more convenient units.
34. In Model add MatrixSolver[SuperLUSolver] and let the default matrix pre-ordering.
37. Set the constant potential to 0 V and in the Sinusoidal set Amplitude to 40 V and the frequency
at 13.56 MHz .
38. Save the file as “model1.gum” (press “OK” to leave “Include” sections as is).
Model construction
1. Start PLASIMO as described in section 2.2.
3. In Model add Grid[cylindrical]. You can give a name of this grid, for example “mygrid”.
5. In Grid[cylindrical] add subsection Geometry and set BaseRefinementPower to 4 2 (note the space
in-between the numbers). The two numbers specify the BaseRefinementPower for the first and
second direction, respectively.
6. In section Grid[cylindrical] add first a subsection Stretch[OnePt_Stretch] and specify Point 0.0
and Density 2.0. This mean that stretching will be applied close to the left boundary, i.e. the
cathode. Secondly add another section Stretch[No_Stretch]. Note that the first Stretch section
applies for the first coordinate (in this case z), and the second section for the second coordinate
(r).
7. In Geometry add 5 Material sections, named plasma, cathode, anode, quartz, and boundary, with the
respective Id values 0 through 4.
31
8. In section Material with a name plasma add a leaf Property by right-clicking in the Property frame.
In this leaf enter the key-value pair Type — DischargeGas.
9. In both the cathode and anode material add a Property key-value pair Type — Electrode.
10. In the quartz material add the Property two key-value pairs: Type — Dielectricum and Eps_r —
6.0.
11. In the boundary material add a Property key-value pair Type — Boundary.
12. In Geometry add section CellMatrix. The default cell matrix contains already the four materials.
The black color represents the plasma material surrounded by the other materials from each side.
Change the cell matrix as follows:
(a) Select material boundary from the pop-up menu (right-click on the grid).
(b) Set the top and bottom rows to the material boundary.
(c) Select material quartz and set the second row from the top to the material quartz.
(d) At this point your model in progress should look like the one in figure 5.2 (the cell colors may
be different).
Figure 5.2: The cell matrix with assigned materials. The black color represents the plasma with Id 0,
The blue on the left is the cathode (Id 1), cyan the anode (Id 2), purple the dielectric (Id 3) and the
white is the boundary (Id 4). The axes of symmetry is on the bottom of the cell matrix.
13. In Grid→Geometry add one Region section. Set the name of this region to plasma and enter 0 in
Involves. PLASIMO set first a region called interior that contains all the materials in-between the
boundaries, in this case the interior region contains materials plasma and dielectric. By adding a
region plasma we instruct PLASIMO to create one more region. The EM calculations will be done
on region interior, while the plasma calculations will be done on the second region.
32
14. In Model add PlasmaRegion[DriftDiffusion]
16. In PlasmaRegion add GasTemperature[Fixed] and inside TemperatureFunction set the temperature
to 300 K .
• Add Reaction, call it ionization and set the format to He + e -> He^+ + e + e.
• In Reaction add Rate[K(eps)] and select the file
plmd2d_v2/input/data/bolsigdata_He/C3_He_Ionization_24.58_eV.lut.
21. In Mixture add ElasticEnergyTransfer[EnergyLoss/N(eps)], enable the leaf File and select the file
plmd2d_v2/input/data/bolsigdata_He/elastic_power.lut.
22. In section PlasmaRegion add section WallProcessList. In this section you can add processes such as
Reflection, Secondary emission, Sputtering, Thermoionic emission, Photoemission. In this example
we will add Secondary emission process. Add a WallProcess of type SecondaryEmission and fill in the
following: Projectile He^+, SecondaryEmissionCoefficient 0.2 and SecondaryEmissionEnergy 2 eV.
Add two leafs ApplyAt and add the electrode’s names: cathode and anode.
25. In the first set V0 to −400 V , and in the second to 0 V . Note that the order of these specification
correspond to the order of the materials in the MaterialList, i.e. the first section Potential will
apply the specified potential to the first electrode that appears in the list of materials.
33
26. In Model add MainIterConfig.
30. Save the file as “model2.gum” (press “OK” to leave “Include” sections as is).
Model specifications
This simple argon model is inspired by a model by Ashida et al. [9]. The main parts of the input file are
the following sections:
1. Mixture → SpeciesList
The model contains three argon species (ground, excited, ion) and the electron species. The
definition of the species is rather straightforward, and is mostly characterized by defining their
unique name (by which they can be used in reactions) and energy. The energy is used to determine
source terms for the electron energy balance.
2. Mixture → ReactionList
Reactions are defined by a Format for the reaction formula and a rate coefficient. Rate coefficients
can be defined in many ways, such as Arrhenius rate coefficients and look-up tables. In this
particular input file only rate coefficients of the type Custom are used. This is the most flexible
type, since it accepts any mathematical expression. For increased flexibility certain functions are
34
available to use species properties in the rate coefficients, namely Temperature(), Density, Mass(),
Charge(), and Weight(). In addition, the Global Model plugin allows the user to define constants
and functions that can subsequently be used in expressions in Custom type rate coefficients. This
will be explained in more detail in the section Declares. The ApplyDB option indicates whether
detailed balancing needs to be applied to automatically include the reverse process. This will not
result in an extra reaction, but only in a modified rate.
The processes included in the reactions are (de)excitation, ionization, and radiation, the rates of
which are adopted from the original model.
The process of deexcitation at the wall is in this model included as a reaction, named wall_Ar*. It
has the same format as the radiative decay process (Ar*_rad) but with a different rate coefficient.
For this particular wall process this is possible, since the resulting reaction follows conservation of
mass, charge, and elemental density, which are all required for PLASIMO reactions. The process
of recombination at the wall cannot be written as a reaction, since the required electrons are drawn
from the vessel wall. To include such a process so-called Extra Sources can be used.
3. ElasticEnergyTransfer
This section is intended specifically for including energy exchange processes between heavy particles
and electrons. Only the name, rate, heavy species involved in the exchange are needed. The amount
of energy that is exchanged per event is
2µeh 3
kB (Te − Th ) , (5.11)
me + mh 2
me mh
with µeh = me +mh .
4. ExtraSourceList
To complete the model the process of recombination at the wall must be included. This is accom-
plished by defining two extra sources: one for the density and one for the energy. The DensitySource
takes into account the sink of ions and the source of neutral ground atoms, i.e., the Target leafs with
the appropriate stoichiometric coefficients. Effectively, this represents the reaction Ar+ → Ar. The
Source leaf represents the density with which the rate coefficient is multiplied in order to obtain
the rate. This physical process also results in loss of energy to the wall, which is accounted for by
an EnergySource. For this extra source the stoichiometric coefficient needs to be defined (the target
is implicitly the electron energy) as well as the energy that is transferred per event.
Using extra sources it is possible to include any kind of process in the global model, since every
physical process in this kind of model is represented by a frequency of species particles and energy
either appearing into or disappearing from the plasma volume.
5. Declarations
The rate coefficients for processes can become quite complex. An example of this is the rate
coefficient for ion recombination at the wall
Aeff
Krecomb,Ar+ = uB , (5.12)
V
which in the model by Ashida when completely written out is
" − 12
1 L
Krecomb,Ar+ = 0.86 3.0 + 2πR2 +
πR2 L 2nneutral σi
− 12 #s
R kB Te
0.80 4.0 + 2πRL ,
nneutral σi MAr+
where R and L are the radius and length of the cylindrical vessel and σi is the ion neutral collision
cross section. As an expression in the Global Model input file this would be something like
35
(0.86*(3.0+L/(2*(Density('Ar')+Density('Ar*'))*sigma_i))^(-0.5)*
2*`pi*R^2+0.80*(4.0+R/((Density('Ar')+Density('Ar*'))*sigma_i))^(-0.5)*
2*`pi*R*L)*sqrt(`kB*Temperature('e')/Mass('Ar+'))/(`pi*R^2*L)
which is not very practical and error-prone. To make this more readable and manageable the user
can define constants and functions, which can be used in rate coefficients or in other constants
and functions, and so on. The difference between a constant and a function is that a constant
will not change during the course of the model, while a function can. Additionally, a function can
have parameters, namely zero, one, two, or three, i.e., a nullary, unary, binary, or ternary function,
respectively. In gm_Ar.gum this feature is used to first define a number of constants representing
the geometry of the vessel (radius, length, areas, and volume), followed by a number of functions
representing quantities that might change during the course of the model, such as the diffusion
length, and Bohm velocity. The Bohm velocity function also takes as a parameter a species name
so it can be applied to different species. Note that nullary functions are functions, so when used
they must be accompanied by a set of empty parentheses. Also note that in principle a function
can be used in the definition of a constant, but since the result is a constant it will not change
and be fixed at the value at which it is initially evaluated. Furthermore, any of the definitions in
Declares can be used in any of the rate coefficients (as long as they are of the type CustomRate).
The definitions and their composition in this example are completely optional. For instance, the
length is a constant, but it might also depend on some other quantity and therefore change. Finally,
there is one variable called time which represent the current time of the model in seconds. Though
it will change during the course of the model it is written as a constant, i.e., without parentheses,
but it acts as a nullary function.
6. InputPowerDensity
The power density input into the system must be defined in a separate section. This must always
be an expression that evaluates to W/m3 or compatible unit. In gm_Ar.gum a trick is used to include
an input power from a look-up table. The mathparser allows for functions to be defined which are
evaluated as a look-up from a table in an external file. In this case the file gm_power_modulation.lut
contains the power as function of time. By using the built-in time variable as index into the table
and dividing the result by the Volume (see the appropriate Declare), an input power density as
function of time is defined. Its shape is whatever the table looks like, using linear interpolation.
7. InitialValues
This section contains the initial densities of all the species present in the system. If a species is not
mentioned in this section its initial value is zero.
8. Schedule
This section simply states the start and time of the model. Note that it is not compulsory for the
model to start at time zero.
9. Stepper
The stepper is the ode solver that is to be used. Depending on the solver some additional options
are available, such as maximum time step, tolerance, etc.
10. Options
Some general options for the model can be set. By default, for each defined species a balance
equation will be constructed and solved. By adding a species to the ConstantDensity section the
source term for that species will be set to zero so it will remain at its initial value. Furthermore,
quasi-neutrality can be imposed, so the electron density is not solved separately, but set equal to
the total ion density. By default the electron density will equal the summed ion density:
X
(qi ni ) − ne = 0, (5.13)
i
36
where the sum runs over all ions i, with each having a charge qi .
Since it is possible to define ion species that are not meant to be part of the bulk plasma (a pseudo
species at the wall for instance), the user can optionally define which ion species are to be used to
calculate quasi-neutrality.
Finally, a minimum value of the electron density can be imposed. If this is enabled the electron
temperature will not fall below the heavy particle temperature.
11. Output
Finally, the location, extension, and filenames for the output are required. Only a file name for the
densities and temperature (combined in one file which also contains the energy density) is required,
the output of rates, sources, and sinks are optional.
2. Create a new model (using the menu or toolbar) of the type GlobalModel.
4. In the automatically created Species section inside the SpeciesList section that is already there
set the Name to Ar.
6. To SpeciesList add another Species named Ar+ and add to it a section State[Atom] called ion with
Energy set to 15.76 eV and Weight to 6.
7. Add a third Species called e and add to it a section State[Atom] named ground with Weight set to
2.
8. In the section ReactionList inside the Mixture section, add a Reaction and give it the name
ionization and set the format to e + Ar -> e + e + Ar+
9. In the newly created Reaction section add a section RateCoefficient[FromCrossSection] and set
TRange from 300 K to 100 eVT and add a section CrossSection[Step].
10. In Model add a section Declarations. Using Declare leafs, you can declare constants and functions
that you can use in expressions elsewhere in the model.
11. Inside the Declarations section add a Declare[Constant] with the name Length and value 20*cm.
12. Add another Declare[Constant] with the name Radius and value 5*cm.
13. Add a third Declare[Constant] with the name Volume. The previously defined length and width
can now be used to define the volume by setting value to `pi*Radius^2*Length (note the “backtick”
in `pi which is a predefined constant).
14. Add a fourth Declare[Constant] named PowerFreq with the value 2.5e5*Hz.
In this expression rad is the radian unit and time is a builtin variable representing the current time
of the model in seconds.
37
16. In the Model section, add a section ExtraSourceList, and inside the new section add a section
Process.
17. In the Process set the name to wall_recomb. This term represents recombination at the wall, i.e.,
ions leaving the volume and neutral ions entering the volume. Set the Format of the reaction:
Ar+ -> Ar. Set the Stoichiometry to -1 (it is a loss term), and set the expression for the electron
energy loss at the wall as 5.0/2.0*`kB*Temperature('e').
18. Add a Rate[Constant] to the Process[wall_recomb] section and specify value for the rate coefficient
equal to 1e5*Hz.
19. To the Model section add a section InitialValues[Values].
20. Inside section InitialValues[Values] add section Densities and add three Species leafs, one for
each species and fill in the species names and set the density of Ar to 1e20 m− 3 and of Ar+ and e
to 1e17 m− 3 .
21. To the Model add a section Temperature of type 2T.
22. Inside section Temperature[2T] add a subsection GasTemperature of type Constant and set the value
to 300 K .
23. Inside section Temperature[2T] add a subsection ElectronTemperature of type Calculated and set
the InitilaValue to 300 K .
24. In the Model section, add a section Schedule, and set EndTime to 4e − 4 s .
25. In the Model section, add a section Options.
26. In the Model section, add a section Stepper[ODEPack_LSODA].
27. In the Model section, add a section Output.
28. Save the file as “mymodel.gum” for example (press “OK” to leave “Include” sections as is).
29. Install and run the model.
38
A third issue is that sometimes the solver will not be able to even calculate the first step. This typically
happens when there is a too large difference between the initial densities of the different species. Though
it might be tempting to set the densities to zero for any species except the background or feed gas
species, it is usually not strictly necessary, since also in reality densities of ions, excited species, and
radicals have a low but non-zero value because of external influences like cosmic radiation. In practice a
relative density difference of 12 orders of magnitude is a reasonable starting condition. Another option
is to use the relative tolerance setting some solvers provide. Setting this to a low enough value can allow
for a larger relative difference between initial densities.
Consider a continuous one-dimensional Cartesian geometry in which heat conduction takes place. In the
absence of heat sources the temperature T (x, t) is governed by the equation
∂ρcp T ∂ ∂T
− λ = 0. (5.14)
∂t ∂x ∂x
Here ρ is the mass density of the medium, cp its specific heat and λ its thermal conductivity. If these
coefficients are constant in time and uniform in space, this equation can be written as
∂T ∂2T
− α 2 = 0, (5.15)
∂t ∂x
where
λ
α= . (5.16)
ρcp
Let us assume that for t < 0 the temperature is uniform and given by T = Ti . At t = 0 the temperature
at x = 0 is suddenly increased to the value Tw . Because of heat conduction the surrounding medium
will gradually attain the temperature Tw as well. If the medium is unbounded, the solution for x ≥ 0 is
given by the analytical expression
√
Ta (x, t) = Tw + (Ti − Tw ) erf x/ 2 αt . (5.17)
Zu
2 2
erf(u) = √ e−u du. (5.18)
π
0
39
Numerical simulation
In order to obtain the solution by means of numerical simulation, we will restrict ourselves to the spatial
interval x ∈ [0, x0 ] and to times t ∈ [0, t0 ]. The initial condition of the problem above can be stated as
(
Tw x = 0;
T (x, 0) = (5.19)
Ti x ∈ (0, x0 ].
The boundary conditions need a little more thought. At position x = 0 the boundary condition is
straightforward: the temperature is given by T (0, t) = Tw . But at the boundary x = x0 there is no
natural boundary condition: in order to get the same result as for the unbounded case, we impose a
boundary value in accordance with the analytical solution,
With this choice the solution of the boundary value problem is the same as that of the original problem,
which was defined on the half-open interval x = [0, ∞), and we expect that the numerical solution will
be an approximation of this result.
Additional notes
We can use the simulation parameters x0 and t0 as characteristics length and time scales and use those
to write the governing equation in terms of dimensionless parameters t̃ = t/t0 and x̃ = x/x0 . Is is readily
established that the result can be written as
∂T ∂2T
− Fo 2 = 0. (5.21)
∂ t̃ ∂ x̃
Here we have introduced the dimensionless Fourier number Fo, which is defined as
αt0 λ t0
Fo = = . (5.22)
x20 ρcp x20
The Fourier number characterizes the degree of temperature leveling that is achieved by conduction
in the medium with size x0 in the time interval t0 . If the Fourier number exceeds unity by far, the
temperature will be nearly uniform at t = t0 , for a small Fourier number the temperature at x0 will still
be close to its original value. The analytical solution in terms of t̃, x̃ and the Fourier number is given by
p
T (x, t) = Tw + (Ti − Tw ) erf x̃/ 2 Fo t̃ . (5.23)
A fully dimensionless form of the solution can be obtained by defining the dimensionless temperature
T̃ as
T (x(x̃), t(t̃)) − Tw
T̃ (x̃, t̃) = , (5.24)
Ti − Tw
for which we find p
T̃ (x̃, t̃) = erf x̃/ 2 Fo t̃ . (5.25)
40
background gas that is responsible for most of the interactions with other particles. In plasmas this
assumption is easily violated due to the much larger cross sections of charged-charged interactions in
comparison to neutral-neutral interactions. Additionally, there may be strong gradients of the species
densities that do not guarantee a dominant background gas everywhere in the plasma.
In a 2D or 3D model the mass averaged velocity is solved for as well. The calculated species diffusive
velocities are inserted in the species mass balances. These mass balances account for the temporal
behavior of the species mass densities, the diffusive and convective transport, chemical reactions and
radiative transitions.
The energy balance consists out of the two-temperature equations. It is assumed that the heavy-
particles can be described by a single temperature, Th . The electrons can have a deviating temperature,
Te .
Model specifications
This model deals with a plasma created in an arc by means of a DC current. The plasma source has the
shape of a cigarette; it is a cylinder with a radius of about 2 mm and a length of about 60 mm . The
current creating this plasma is about 50 A . We write “about” because you can play with these plasma
control parameters and look what effect they have on the plasma properties, like the electron density
and temperature (ne, Te), the gas temperature (Tg), and the flow field (velocities).
After loading the model, it can be explored by navigating through the leaves in the Model editor. The
main sections that are present are:
• MainIterConfig: This section contains some parameters to control the iterations.
• PlasmaRegion: The input data is organized in the following subsections:
– Grid: contains specifications of the geometry, coordinates and involved materials.
– TemperatureHP: This section describes the heavy particle temperature. It contains a separate
boundary condition (BndConfig) for every wall, and control of the iterations is handled in the
IterConfig subsections.
– TemperatureEL: Similar to TemperatureHP only now for the electron temperature.
– Mixture: This describes the composition of the plasma, i.e. the species that are taken into
account in the simulation and the relevant reactions that they are involved in.
– Flow: This section configures the flow field calculations.
• EM: The EM calculations. In this case it is an uniform current of 50 A .
41
The characteristics of this plasma source are the same as that of a positive column (PC). For this
PC a global model can be made, which will have the general outcome:
• The electron temperature is (almost) independent of the power (density), but is dictated by the
electron loss frequency. The latter is often “diffusive”, meaning that this frequency more or less
equals Da /R2 , where Da is the ambipolar diffusion coefficient, and R the plasma radius.
• The electron density ( m−3 ) is determined by the power density ( Wm−3 ).
• The heavy particle temperature is among others ruled by the electron density and the pressure
(the plasma size. . . ). So increasing ne leads to higher Th values.
Model specifications
This model is a 1D model of an Ar plasma at a pressure of 400 Pa . The model includes four different
species. These are the ground state Ar, an excited state Ar[m], an ion Ar+ and an electron. Excitation
and ionization are included via Arrhenius rates. Ionization is included with detailed balancing. At
the wall the excited and ionized species are assumed to deexcite or recombine. The diffusive fluxes are
calculated using the Stefan-Maxwell equations. A single radiative transition is included using ray-tracing
to demonstrate that a significant amount of the emitted radiation is absorbed again.
The applied power in this low-pressure Ar plasma is 40 W/m . The power is expressed in units of
W/m because a 1D model assumes a height of 1 m . In order to use the correct power density for a
different electrode separation (height) the input power should be divided by that height.
Model construction
In this section, we will demonstrate how you can build the model described above. In this example we
will not include the radiation transport calculations.
We will begin by creating the computational grid, the EM module, electron and heavy particle
temperature modules, followed by the species and their reactions.
Whenever the text says to create a new section and the section contains some text between square
brackets, for instance NewSection[SomeType] the text between the brackets is the Type of the section. This
means that in the sub-menu of the right-click menu the appropriate entry must be selected. At all times
the help window can give you more information about the section of the model currently selected.
1. Start plasimo as described in section 2.2.
2. Click Create new model (left icon, or use the menu) and select ModelNonLTELinsys-1D.
3. First we will load the necessary libraries for this model.
4. Add section MainIterConfig - the configuration of this simulation. Choose Create default section
from the pop-up menu. After the default section is created, click on the section in order to modify
the relevant settings. You may want to specify the output path where the output files will be
written on your hard disk (Directory). The rest of the settings we will leave as default in this
example.
5. Add section Discretizer[SteadyState].
6. Add section EM[EMuniformE1DPower]. Set the power to 40 W . In the relevant subsection Sigma set
σ to 500/(Ohm*m)
42
7. In Model add PlasmaRegion[NonLTELinsys] (the only available option for this model type). You will
see that three subsections already appeared. We will come back to them later. First we will set up
the geometry and the mixture.
Section PlasmaRegion[NonLTELinsys]
With right-mouse button add the following required sections:
1D!Grid[cylindrical_1d]
Mixture[NonLTELinsys]
Transport
Flow[Fixed]
TemperatureHP
TemperatureEL
RadTrans
We will go through these sections to setup the model.
• 1D!Grid[cylindrical_1d]
1. In this example we will use the default name. Fill free to name the grid according to you
preference. Change r_max to 25 mm .
2. Add a subsection Stretch[No_Stretch].
3. In subsection Geometry set BaseRefinementPower to 5.
4. We need to create a list of materials that will be involved. In Geometry add Material sections
named discharge, axes and glass. Set the Id in each of the materials starting with 0 for the
discharge, 1 for the axes and 2 for the glass.
5. In subsection CellVector(already created by default) you will see the default: 102. These
correspond to the IDs of the defined materials. That means we have on the left hand side
axes with ID 1, on the right hand side glass with ID 2 and the discharge with ID 0 is
in-between. Once the list of materials is defined you can select a material and “draw” you
geometry. (For information how to use the grid editor, please refer to chapter 3).
• Mixture[NonLTELinsys] With right-mouse button add the following required subsections:
IterConfig
SpeciesList
InitFraction
ReactionList[List]
BoundaryConditions
Radiation
CrossSections
DiffusiveFluxModel[Ambipolar]
1. IterConfig
Add a subsection MatrixSolver[SuperLUSolver]. Set the under-relaxation factor URF to 0.1.
2. SpeciesList
We have to create a list of all species that will be involved in the simulation. One subsection
is already predefined.
(a) In subsection Species set the name to Ar and provide a radius of 1.92e-10 m . For this
species add a subsection State[Atom]. In State set Name to Ar_ground_state.
(b) In order to add other species repeat the item above for every species. Add species e, Ar+
with energy 15.759 eV and Ar[m] with energy 11.5 eV .
3. InitFraction
Add the following leafs:
43
Species Ar Value 0.999979
Species Ar[m] Value 1e-6
Species Ar+ Value 1e-5
Species e Value 1e-5
4. ReactionList[List]
(a) In subsection Reaction give a name of the first reaction, for instance: Ar_excitation and
give the correct format for Ar excitation: Ar + e -> Ar[m] + e. Then Add a subsection
RateCoeffcient[Arrhenius]. Give the following values: for the constants C 8e-17*m^3/s
and for the exponent TExp 0.5.
(b) Repeat the procedure above to add the following reactions with the following input data:
Name Ar_ionization
Format Ar + e -> Ar+ + e + e
ApplyDB yes
RateCoeffcient[Arrhenius]
C 2.61348e-17*m^3/s
TExp 0.6851
Name Ar_ladder_ionization
Format Ar[m] + e -> Ar+ + 2 e
RateCoeffcient[Arrhenius]
C 8e-15*m^3/s
TExp 0.5
5. BoundaryConditions
(a) Add a subsection BndConfig. And activate leaf ApplyAt. Add: glass All. That means
these boundary conditions will be applied on material ’glass’ at all interfaces. In this case
only east interface.
(b) Inside the BndCond add WallProcess[ThermalFlux]. Give a name of that process, for in-
stance “recombination” and set the correct format of that process: Ar+ + e -> Ar. Then
fill FluxSpecies Ar+ and Chance 1.
(c) Repeat the above for process de-excitation:
Name Ar[m]_deexcitation
Format Ar[m] + e -> Ar + e
FluxSpecies Ar[m]
Chance 1
(d) We need to add BC to the axes as well: In section BoundaryConditions add BndConfig.
Set: ApplyAt axes All.
6. Radiation
Add a subsection Radiation add TransitionList→Transition[AtomicRadiation]. Give a name
of this transition and add the correct format of the transition: Ar[m] -> Ar. Set the number
of sample points to 1000 and the frequency range to 100 GHz . For the line transition use the
following: Line 0*eV 8e+06*1/s 1 1.
7. CrossSections
We will leave this section empty. If nothing is specified here PLASIMO will find the best from
the data base.
8. DiffusiveFluxModel[Ambipolar]
Nothing to be done here.
9. ChemSourceClipping
Nothing to be done here.
44
• Transport. The required sections are predefined. Inside every transport section we have to add
Calculator - how this transport coefficient will be calculated. Add the following:
ThermalCondHP -> Calculator[Thc_HPTranslational_MC]
ThermalCondEl -> Calculator[Thc_Electron_Devoto]
SpecificHeatEl -> Calculator[StdSpecificHeatEl]
SpecificHeatHP -> Calculator[StdSpecificHeatHP]
ViscosityHP -> Calculator[visc_HP_CE1]
ElectricalCond -> Calculator[ElecCond_Devoto]
ElasticEnergyTransfer -> Calculator[StdElasticEnergyTransfer]
• Flow[Fixed]
• TemperatureHP
• TemperatureEL
• RadTrans
Add a subsection Transfer[Default].
Save the file as “model1.gum” (press “OK” to leave “Include” sections as is). Install and run the
model.
45
Model details
Three sections must be specified in order to calculate the transport properties. The first section is the
mixture section. The mixture section contains a SpeciesList. This example model uses species definitions
from /input/mixture/species where the particle states are defined. For atoms the most important entries
in the states are the energy level Ei and the statistical weight, gi = 2 ∗ Ji + 1 with Ji the total angular
momentum. Note that the energy levels must be defined relative to a consistent basis. For example, in
the Ar system the ground state of neutral Ar is set to 0 eV. That means that all the other energies are
measured relative to the Ar ground state. This includes all Ar internal states, but also every possible Ar
ion. For that reason the energy of the ground state of Ar+ is not zero.
Another subsection inside Mixture is InitFraction. This section specifies the mass fraction of the
elements that occur in the mixture. Note that the electrons are also considered as an element. For a
neutral plasma the electron fraction should be set to zero. Since there is no other element than Ar,
the Ar mass fraction is set to 1. It is recommended to not change the other subsections in the Mixture
section.
The second section that must be specified is the Transport section. Specific calculators can be
chosen for the various properties. It is recommended to use the settings given in the example for all
calculations. Note that for the thermal conductivity four calculators are specified. These represent
the four contributions that make up the thermal conductivity: The translational contributions of the
heavy particles and the electrons; the reactive thermal conductivity and the thermal conductivity due to
internal excitation. The last two contributions represent the transport of chemical and internal energy.
The third section is TRange. It specifies the temperature range for which the calculation will be
performed. A minimum and a maximum temperature can be selected along with the number of points.
Additionally you can choose between a linear or a logarithmic distribution of points with the option
LogarithmicT.
By installing the model the ‘Model data’ tab appears. Inside this tab you can inspect the transport
properties and the calculated composition. The results are updated whenever values are available for
the next temperature point.
Model specifications
This model is simple kinetic drift model. We have Ar gas (density swarm) and we inject 10000 particles
(electrons) into the simulation. The particles are injected as point sources at coordinates (0,0,0). An
uniform electric field is applied in z-direction.
The main branches of the tree structure in the Model Editor tab are:
• Environment: this node contains the setup of the vessel, specifies the particles that are injected
into the vessel, and defines the swarm list, i.e. the environmental particles the injected particles
will collide with (the background gas). In this example vessel of type Infinity is specified. This
practically means that there is no vessel. The particles are moving under the influence of a constant
electric field. The electric field is applied in z-direction (pointing to the screen). There are two
more “Vessel” sections which are disabled. Vessel of type plate places a wall (a plate) at some
specified distance (in z-direction) from the particle injection source. You can activate this section
by pressing right mouse button over the disabled section.
• Statistics: obviously the necessary statistics are collected in this node, such as particle positions
and velocities, and EDF’s of the particle swarm that is followed. Moreover, the Statistics class
46
can collect statistics of wall collisions (if there is any wall), such as position and velocity at the
moment when the particle hits the wall, as well as EDF and deposition profile.
• mcSpeciesList: This section contains a list of all species that are involved in the simulation, hence
the model should know about.
• FlightControl: this node controls the “flight” of the particles, that must be followed, the chem-
ical reactions that they are involved in and the time settings of the “flight”. Therefore, the
FlightControl section contains SwarmList, mcProcessList and TimeSettings subsections.
After installing the model a tab Model data appears that contains all the output data. The output data
is grouped into three main sections, as you can see on the left-hand side:
• General: containing the status of the calculation and the model-specific general data.
• Collision frequency: the collision frequencies for all collision processes.
• Species: positions, velocities and EDF for the followed particles. If specified in the input, the wall
EDF or deposition profile of the followed particles will appear.
Few steps after starting the model you should see already the multiplication of the particles due to
ionization processes. Recall that the electric field is applied in direction pointing to the screen. So that
the electrons will move in opposite direction, away from the screen. To see clearly the moving of the
particle cloud rotate the plot as shown in figure 5.3.
5.7.2 EM model - 1
Example input file: circular_bessel.gum
Location: plplugins/em/input/
47
The model represents transversal magnetic modes in a circular waveguide. The geometrical configu-
ration is shown in figure 5.4.
Algorithm
• Finite Differences in Frequency Domain
The excitation boundary creates a wave in z + -direction, that interacts with the wave reflecting back
from the metal wall at the end (2). Thus, standing waves are observed.
Below a critical radius, Rc , there are only evanescent (decaying) solutions instead standing waves. De-
crease the radius R, until only evanescent solutions appear in the circular waveguide.
5.7.3 EM model - 2
Example input file: radial_to_coaxial_wg_show.gum
Location: plplugins/em/input/
The model represents radial-coaxial waveguide coupling. The geometrical configuration is shown on
figure 5.5.
Algorithm
• Finite Differences in Frequency Domain
48
Figure 5.5: Geometry
The excitation boundary creates a wave in r− -direction. When it reaches the coupling, the wave is
converted into a wave propagating in z + -direction. An open boundary condition (2) prevents most of
the reflection, and almost no standing wave pattern is created in the coaxial waveguide. However, in the
radial parallel plate waveguide, there is a standing pattern due to the reflection with the metal wire at
the axis.
• Go to the Model editor and select in the hierarchical tree Model/Grid/Geometry/CellMatrix. You
can now modify the geometry and draw a triangle (pyramidal cylinder in 3D), such as the one
shown in the figure below.
Right click and Select Material. Choose the Metal. Change the materials cells to metal by left
clicking on them. Note that you can also enable the other section CellMatrix, where the triangle
is already included.
What happens to the standing waves in the radial waveguide?
49
• Change the boundary (2) from the open boundary condition (plane wave tangential E fields) to
the homogeneous Dirichlet condition (null tangential E fields). You should notice a standing wave
appearing in the coaxial waveguide.
50
Bibliography
[1] Jan van Dijk, Kim Peerenboom, Manuel Jimenez, Diana Mihailova, and Joost van der Mullen. The
plasma modelling toolkit plasimo. Journal of Physics D: Applied Physics, 42(19), 194012 (14pp),
2009.
[2] D.B. Mihailova. PhD thesis, Eindhoven University of Technology, The Netherlands, 2010.
[3] G.J.M. Hagelaar. Modeling of Microdischarges for Display Technology. PhD thesis, Eindhoven Uni-
versity of Technology, The Netherlands, 2000.
[4] J.P. Boeuf and L.C. Pitchford. Phys. Ref. E, 51, 1376, 1995.
[5] D. Mihailova, M. Grozeva, G.J.M. Hagelaar, J. van Dijk, W.J.M. Brok, and J.J.A.M. van der Mullen.
J. Phys. D: Appl. Phys., 41, 245202, 2008.
[6] D. Mihailova, J. van Dijk, M. Grozeva, G.J.M. Hagelaar, and J.J.A.M. van der Mullen. J. Phys. D:
Appl. Phys., 43, 145203, 2010.
[7] M. Davoudabadi, J.S. Shrimpton, and F. Mashayek. On accuracy and performance of high-order
finite volume methods in local mean energy model of non-thermal plasmas. J. Comput. Physics, 228,
2468, 2009.
[8] H. W. Ellis, R. Y. Pai, E. W. McDaniel, E. A. Mason, and L. A. Viehland. Transport properties of
gaseous ions over a wide energy range. Atomic Data and Nuclear Data Tables, 17(3), 177, 1976.
[9] S. Ashida, C. Lee, and M.A. Lieberman. Spatially averaged (global) model of time modulated high
density argon plasmas. American Vacuum Society, 13(5), 2498, 1995.
51