-
Notifications
You must be signed in to change notification settings - Fork 1
/
Air_for_me_lfa.py
100 lines (95 loc) · 3.28 KB
/
Air_for_me_lfa.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
from bolos import parser, grid, solver
import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as co
from collections import OrderedDict
# compute parameters needed for solver given common system inputs
p = 1.01e5
T = 300
N = p/(co.k*T)
xN2 = 0.8
xO2 = 0.2
# Set-up the electric field values we want to compute for
EStart = 2.414323855084169554e+04
EFin = 3.380053397117837518e+07
nEf = 100 # number of Electric field nodes
mult = (EFin/EStart)**(1.0/(nEf - 1.0))
EArray = np.zeros(nEf)
mu = np.zeros(nEf)
Diff = np.zeros(nEf)
alpha = np.zeros(nEf)
eta = np.zeros(nEf)
k2BodyAttach = np.zeros(nEf)
k3BodyAttach = np.zeros(nEf)
mean_energy = np.zeros(nEf)
elastic = np.zeros(nEf)
EArray[0] = EStart
for i in range(0,nEf-1):
EArray[i+1]=EArray[i]*mult
# Set-up the electron energy grid we want to compute the electron
# energy distribution on
en_start = 0.0
en_fin = 60.0
en_bins = 200
gr = grid.QuadraticGrid(en_start,en_fin,en_bins)
boltzmann = solver.BoltzmannSolver(gr)
with open('/home/alexlindsay/bolos/LXCat-June2013.txt') as fp:
processes = parser.parse(fp)
boltzmann.load_collisions(processes)
boltzmann.target['N2'].density = xN2
boltzmann.target['O2'].density = xO2
boltzmann.kT = T * co.k / solver.ELECTRONVOLT
for i in range(0,nEf):
EField = EArray[i]
En = EField/N
boltzmann.EN = En
boltzmann.init()
fMaxwell = boltzmann.maxwell(2.0)
f1 = boltzmann.converge(fMaxwell,maxn=100,rtol=1e-5)
mean_energy[i] = boltzmann.mean_energy(f1)
mu[i] = boltzmann.mobility(f1)/N
Diff[i] = boltzmann.diffusion(f1)/N
kN2 = boltzmann.rate(f1,"N2 -> N2^+")
kO2 = boltzmann.rate(f1,"O2 -> O2^+")
k2BodyAttach[i] = boltzmann.rate(f1,"O2 -> O^-+O")
k3BodyAttach[i] = boltzmann.rate(f1,"O2 -> O2^-")*N/(1e6)
alpha[i] = 1.0/(mu[i]*En)*(xN2*kN2 + xO2*kO2)
eta[i] = 1.0/(mu[i]*En)*xO2*(k2BodyAttach[i]+k3BodyAttach[i])
j = 0
d={}
for target,proc in boltzmann.iter_elastic():
d[j]=boltzmann.rate(f1,proc)
j += 1
kN2elastic = d[0]
kO2elastic = d[1]
elastic[i] = 1.0/(mu[i]*En)*(xN2*kN2elastic+xO2*kO2elastic)
D_Path = '/home/lindsayad/zapdos/src/materials/'
# t_vars = ['mob','diff','alpha','eta','mean_en']
# file_list = [D_Path + t_var + '.txt' for t_var in t_vars]
# file_list = OrderedDict.fromkeys(file_list)
# t_vars = OrderedDict.fromkeys(t_vars)
# t_vars['mob'] = mu
# t_vars['diff'] = Diff
# t_vars['alpha'] = alpha
# t_vars['eta'] = eta
# t_vars['mean_en'] = mean_energy
# for f,t_var in zip(file_list.keys(),t_vars.keys()):
f = D_Path + "td_air.txt"
with open(f,'w') as write_file:
for i in range(0,nEf):
write_file.write('{0:.18e} {1:.18e} {2:.18e} {3:.18e} {4:.18e}\n'.format(EArray[i], mu[i], Diff[i], alpha[i], eta[i]))
# D_Path = '/home/alexlindsay/bolos/'
# t_vars = ['mob','diff','alpha','eta','mean_en']
# file_list = [D_Path + t_var + '.txt' for t_var in t_vars]
# file_list = OrderedDict.fromkeys(file_list)
# t_vars = OrderedDict.fromkeys(t_vars)
# t_vars['mob'] = mu
# t_vars['diff'] = Diff
# t_vars['alpha'] = alpha
# t_vars['eta'] = eta
# t_vars['mean_en'] = mean_energy
# for f,t_var in zip(file_list.keys(),t_vars.keys()):
# with open(f,'w') as write_file:
# for i in range(0,nEf):
# write_file.write('{0:.18e}, {1:.18e}\n'.format(EArray[i],t_vars[t_var][i]))
write_file.closed