LoKI-B

In this tutorial we show how to obtain rate coefficients from LoKI-B and format them for use in CRANE. LoKI-B is written in MATLAB. If you do not have access to MATLAB, you can use BOLSIG+. BOLSIG+ is a standalone executable that can be run in Windows and Linux operating systems.

We will use the example of argon, for the simple case of ionization and metastable excitation. We will show how to solve the EBE and obtain the ionization rate coefficient \(k_i\) as a function of the reduced electric field \(E/N\) for the simple problem of an argon plasma made of three speices only. The resulting rate coefficients are tabulated and saved in a .txt file, which is read by CRANE.

Step 1. Cross-sections from LxCat

The first step is to save the electron-impact cross-sections of interest in a tabulated format. The cross-sections can be obtained from the LxCat database. The LxCat database contains a large number of electron-impact cross-sections for a wide range of species. The cross-sections are tabulated in a .txt file, which can be downloaded from the LxCat website.

The .txt LxCat file contains a header with information about the cross-sections, and the cross-sections are tabulated in a table. The table contains the electron energy in eV, the total cross-section in m^2, and the cross-sections for different processes in m^2. The first column of the table contains the electron energy in eV, and the first row contains the process names. The process names are in the format <species><process>, where <species> is the species name and <process> is the process name.

For example, the process name Ar* corresponds to the metastable excitation process of argon. The process names are not standardized, and the same process can have different names in different databases. The process names are parsed by LoKI-B to identify the cross-sections of interest. The cross-sections of interest are specified in the LoKI-B.inp file, which is read by LoKI-B. The cross-sections of interest are specified in the LoKI-B.inp file by the process names. The process names are specified in the LoKI-B.inp file in the format <species><process>, where <species> is the species name and <process> is the process name.

A minimal set of cross-sections for a species includes a specific process ionization cross-section, the elastic momentum transfer cross-section, and a loss channel such as metastable excitation. The ionization cross-section is needed

However, we will also include the metastable excitation cross-section, and importantly, the elastic momentum transfer cross-section. The elastic momentum transfer cross-section is needed to calculate the electron energy loss rate, which is needed to solve the EBE.

LxCat has multiple databases for Ar. Here, we use the Morgan database. From the Morgan database we select cross-sections for the following processes:

  • Ar: elastic momentum transfer

  • Ar*: metastable excitation

  • Ar+: ionization

The cross-sections are tabulated in a .txt file, which can be downloaded from the LxCat website. We have saved the .txt file in the directory crane/tutorials/TwoReactionArgon/data. The file is renamed to Ar_Morgan.txt. The file is modified such that: (a) only the metastable excitation pathway is included (i.e. we exclude the “total excitation” process) and is renamed from Ar* to Ar(eff), and (b) the first comment of each process describes the reaction from the ground state Ar(1S0), which is parsed by LoKI-B.

Ar_Morgan.txt (lines 50-65)
ELASTIC
Ar
 1.360000e-5
SPECIES: e / Ar
PROCESS: E + Ar -> E + Ar, Elastic
PARAM.:  m/M = 0.0000136, complete set
COMMENT: [e + Ar(1S0) -> e + Ar(1S0), Elastic]
COMMENT: ELASTIC MOMENTUM TRANSFER.
UPDATED: 2013-04-19 07:30:41
COLUMNS: Energy (eV) | Cross section (m2)
-----------------------------
 0.000000e+0	7.920000e-20
 3.000000e-3	5.744000e-20
 6.000000e-3	4.996000e-20
 1.000000e-2	4.316000e-20
Ar_Morgan.txt (lines 124-138)
EXCITATION
Ar -> Ar(eff)
 1.155000e+1
SPECIES: e / Ar
PROCESS: E + Ar -> E + Ar(eff), Excitation
PARAM.:  E = 11.55 eV, complete set
COMMENT: [e + Ar(1S0) -> e + Ar(eff), Excitation]
COMMENT: Excitation Metastable.
UPDATED: 2011-01-16 03:39:58
COLUMNS: Energy (eV) | Cross section (m2)
-----------------------------
 1.155000e+1	0.000000e+0
 1.200000e+1	1.500000e-22
 1.300000e+1	7.000000e-22
 1.500000e+1	1.130000e-21
Ar_Morgan.txt (lines 155-168)
IONIZATION
Ar -> Ar+
 1.575900e+1
SPECIES: e / Ar
PROCESS: E + Ar -> E + E + Ar+, Ionization
PARAM.:  E = 15.759 eV, complete set
COMMENT: [e + Ar(1S0) -> e + e + Ar(+,gnd), Ionization]
UPDATED: 2015-11-17 10:19:47
COLUMNS: Energy (eV) | Cross section (m2)
-----------------------------
 1.575900e+1	0.000000e+0
 1.600000e+1	2.023000e-22
 1.700000e+1	1.337000e-21
 1.800000e+1	2.938000e-21

Warning

In this example, we are only interested in obtaining the ionization rate coefficient from LoKI-B. However, this DOES NOT mean the ionization cross section should be the only one tabulated. The other cross sections, especially elastic scattering, are absolutely necessary to accurately reflect the relaxation of the electrons.

Step 2. Run LoKI

Set up a LoKI-B input file Ar_lumped.in to solve for the EBE with the provided cross sections and operating conditions, and obtain the ionization rate coefficient.

The LoKI-B input file Ar_lumped.in that was used for this tutorial can be found in crane/tutorials/TwoReactionArgon/data/Ar_lumped.in. The input file is reported below. The input file is divided into sections. The first section is the Species section, which specifies the species properties. The second section is the Processes section, which specifies

Ar_lumped.in
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   SWARM ANALYSIS ARGON   %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% --- configuration of the working conditions ---
workingConditions:
  reducedField: logspace(-3,3,100)            % in Td
  electronTemperature: linspace(0.03, 5, 100) % in eV
  excitationFrequency: 0                      % in Hz
  gasPressure: 101325                         % in Pa
  gasTemperature: 295                         % in K   (average gas temperature)
  wallTemperature: 390                        % in K   (wall temperature)
  extTemperature: 300                         % in K   (external temperature)
  surfaceSiteDensity: 1e19                    % in m-2 (used for surface kinetics)
  electronDensity: 1e19                       % in m-3
  chamberLength: 1.0                          % in m
  chamberRadius: 1.0                          % in m

% --- configuration of the electron kinetics ---
electronKinetics:
  isOn: true                           % true or false (to activate or deactivate the electron kinetics)
  eedfType: boltzmann                  % boltzmann or prescribedEedf (generalized expression Maxwellian/Druyvesteyn)
%   shapeParameter: 1                  % prescribedEedf shape parameter from 1 (Maxwellian) to 2 (Druyvesteyn)
  ionizationOperatorType: usingSDCS    % conservative, oneTakesAll, equalSharing or usingSDCS
  growthModelType: temporal            % temporal or spatial
  includeEECollisions: false           % true or false (to include / remove e-e collisions)
  LXCatFiles:                          % cross section files
    - Argon/Ar_Morgan.txt
  gasProperties:                       % properties of the gases (S.I. Units)
    mass: Databases/masses.txt
    fraction:
      - Ar = 1
    harmonicFrequency: Databases/harmonicFrequencies.txt
    anharmonicFrequency: Databases/anharmonicFrequencies.txt
    rotationalConstant: Databases/rotationalConstants.txt
    electricQuadrupoleMoment: Databases/quadrupoleMoment.txt
    OPBParameter: Databases/OPBParameter.txt
  stateProperties:                     % properties of the states (S.I. Units except for the energy [eV])
    population:
      - Ar(1S0) = 1.0
  numerics:                            % configuration of numerical details of the simulation
    energyGrid:                        % properties of the energy grid (in eV)
      maxEnergy: 1                     % (use 18-20 for time-dependent simulations)
      cellNumber: 1000                 % (use 1800-2000 for time-dependent simulations)
      smartGrid:                       % configuration of the smart grid
        minEedfDecay: 20               % minimum number of decade-fall for the EEDF
        maxEedfDecay: 25               % maximum number of decade-fall for the EEDF
        updateFactor: 0.05             % factor used to increase or decrease the maximum value of the energy grid
    maxPowerBalanceRelError: 1e-9      % threshold for the relative power balance warning message (use at least 100 for time dependent simulations)
    nonLinearRoutines:
      algorithm: mixingDirectSolutions % mixingDirectSolutions or temporalIntegration
      mixingParameter: 0.7             % mixingDirectSolutions mixing parameter from 0 to 1
      maxEedfRelError: 1e-9            % maximum rel. variation for EEDF between two iterations (stop criterion)
%       odeSetParameters:                % optional parameters for the ode solver of the "temporalIntegration" algorithm	           
%         AbsTol: 1e-300
%         RelTol: 1e-6
%         MaxStep: 1e-7

% --- configuration for the heavy species kinetics ---
chemistry:
  isOn: false

% --- configuration of the graphical user interface ---
gui: 
  isOn: true
  refreshFrequency: 1

% ---  configuration of the output files ---
output: 
  isOn: true
  folder: ArLumped
  dataFiles:
%     - inputs
    - log
    - eedf
    - swarmParameters
    - rateCoefficients
    - powerBalance
    - lookUpTable

Place both Ar_lumped.in and the cross section file Ar_Morgan.txt in the directory LoKI/Code/Input/Argon, and run LoKI in Matlab with the command

>> lokibcl('Argon/Argon_lumped.in')

while in LoKI/Code will execute the input file.

After the input file is executed, a new directory LoKI/Output/ArLumped is generated which includes the output lookup table lookUpTableRateCoeff.txt. This file contains the rate coefficients in units of \(\text{m}^3/\text{s}\) for each process versus the reduced electric field in Td.

lookUpTableRateCoeff.txt (lines 1-16)
################################################################################
# ID   Description                                                             #
# 1    e+Ar(1S0)->e+Ar(1S0),Elastic                                            #
# 2    e+Ar(1S0)->e+Ar(eff),Excitation                                         #
# 3    e+Ar(1S0)->e+e+Ar(+,gnd),Ionization                                     #
#                                                                              #
# *** Extra rate coefficients ***                                              #
#                                                                              #
# ID   Description                                                             #
################################################################################

RedField(Td)          R1_ine(m^3s^-1)       R2_ine(m^3s^-1)       R3_ine(m^3s^-1)       
+1.00000000000000e-03 2.18060811453753e-15  0.00000000000000e+00  0.00000000000000e+00  
+1.14975699539774e-03 2.15144244232265e-15  0.00000000000000e+00  0.00000000000000e+00  
+1.32194114846603e-03 2.11095828053449e-15  0.00000000000000e+00  0.00000000000000e+00  
+1.51991108295293e-03 2.05596617312813e-15  0.00000000000000e+00  0.00000000000000e+00  

Step 3. Tabulate the rate coefficient in CRANE format

Tabulate the ionization rate coefficient in a CRANE-acceptable format, for example using the following Python script

RateCoeffReader.py
# import numpy for reading .txt file
import numpy as np

# read and store tabulated data using genfromtxt, ignoring lines with #
data = np.genfromtxt("lookUpTableRateCoeff.txt",comments='#')

# delete first line that contains non-acceptable string information
data = data[1:,:]

# select reduced electric field column
RedField = data[:,0] # Td

# select ionization rate coefficient
kIon = data[:,3] # m^3/s
# convert to cm3/s
kIon = kIon*1e6 # cm^3/s

# write CRANE-compatible lookup table
with open(r'ionization.txt','w') as f:
    np.savetxt(f,np.column_stack([RedField,kIon]),fmt='%.6e',delimiter=' ')

This writes a new two-column file ionization.txt, parsable by CRANE, where the first column is the reduced electric field in Td, and the second column is the ionization rate coefficient in \(\text{cm}^3/\text{s}\).

ionization.txt (lines 56-66)
2.154435e+00 0.000000e+00
2.477076e+00 0.000000e+00
2.848036e+00 5.344192e-31
3.274549e+00 7.650413e-28
3.764936e+00 2.934291e-25
4.328761e+00 3.927777e-23
4.977024e+00 2.212973e-21
5.722368e+00 6.283659e-20
6.579332e+00 1.038318e-18
7.564633e+00 1.116985e-17
8.697490e+00 8.504812e-17