-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathexport_figure_data.jl
111 lines (96 loc) · 3.94 KB
/
export_figure_data.jl
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
101
102
103
104
105
106
107
108
109
110
111
include("analysis_fcns.jl")
stepsize=0.005
## FIGURE 1
# Li100 interpolated DOS
dosfile = "DOSes/Li_100_dos.txt"
dos_f, avg_dos, E_min, E_max = get_dos(dosfile)
E_vals = range(E_min, E_max, step=stepsize)
dos_vals = dos_f.(E_vals)
dos_data = hcat(E_vals, dos_vals)
open("figure_data/fig1_Li100/dos_interp.txt", "w") do io
write(io, "E, dos\n")
writedlm(io, dos_data)
end;
# MHC fit for ECDEC including Gaussian electrolyte DOSes with fitted parameters
exp_data = readdlm("exp_data/ecdec.txt", ',')
MHC_λ, MHC_A = best_fit_params(exp_data, avg_dos, E_min, E_max, false)
MHC_DOS_λ, MHC_DOS_A = best_fit_params(exp_data, dos_f, E_min, E_max, true)
# save parameter values
params = [MHC_λ, MHC_A, MHC_DOS_λ, MHC_DOS_A]
open("figure_data/fig1_Li100/ecdec_fitparams.txt", "w") do io
write(io, "MHC_lambda, MHC_A, MHC_DOS_lambda, MHC_DOS_A\n")
writedlm(io, params)
end;
# calculate and save k vs. V
eη_range = range(-3.5, 3.5, step=stepsize)
MHC_k = [MHC_A * compute_k_MHC(E_min, E_max, MHC_λ, eη, avg_dos) for eη in eη_range]
MHC_DOS_k = [MHC_DOS_A * compute_k_MHC_DOS(E_min, E_max, MHC_DOS_λ, eη, dos_f) for eη in eη_range]
open("figure_data/fig1_Li100/ecdec_fitdata.txt", "w") do io
write(io, "V, MHC_k, MHC_DOS_k\n")
writedlm(io, hcat(eη_range, MHC_k, MHC_DOS_k))
end;
## FIGURE 2
# Cu111 DOS
dos_f, avg_dos, E_min, E_max = get_dos("DOSes/Cu_111_dos.txt")
E_vals = range(E_min, E_max, step=stepsize)
dos_vals = dos_f.(E_vals)
dos_data = hcat(E_vals, dos_vals)
open("figure_data/fig2_Cu111/dos_interp.txt", "w") do io
write(io, "E, dos\n")
writedlm(io, dos_data)
end;
# and rate constant comparison, at equilibrium Ef
# for now using same reorg energy from above
V_range = range(-5.0, 5.0, step=stepsize)
MHC_k = [compute_k_MHC(E_min, E_max, MHC_λ, V, avg_dos) for V in V_range]
MHC_DOS_k = [compute_k_MHC_DOS(E_min, E_max, MHC_DOS_λ, V, dos_f) for V in V_range]
open("figure_data/fig2_Cu111/k_vs_V.txt", "w") do io
write(io, "V, MHC_k, MHC_DOS_k\n")
writedlm(io, hcat(V_range, MHC_k, MHC_DOS_k))
end;
## FIGURE 3
# SEI (semiconductor) case
dos_f, avg_dos, E_min, E_max = get_dos("DOSes/LiF_Li2CO3_dos.txt")
E_vals = range(E_min, E_max, step=stepsize)
dos_vals = dos_f.(E_vals)
dos_data = hcat(E_vals, dos_vals)
open("figure_data/fig3_SEI/dos_interp.txt", "w") do io
write(io, "E, dos\n")
writedlm(io, dos_data)
end;
# and rate constant comparison, at equilibrium Ef
# for now using same reorg energy from above
V_range = range(-5.0, 5.0, step=stepsize)
MHC_k = [compute_k_MHC(E_min, E_max, MHC_λ, V, avg_dos) for V in V_range]
MHC_DOS_k = [compute_k_MHC_DOS(E_min, E_max, MHC_DOS_λ, V, dos_f) for V in V_range]
open("figure_data/fig3_SEI/k_vs_V.txt", "w") do io
write(io, "V, MHC_k, MHC_DOS_k\n")
writedlm(io, hcat(V_range, MHC_k, MHC_DOS_k))
end;
## FIGURE 4
# impact of changing eq. Ef on SEI
# first do DOS again
dos_f, avg_dos, E_min, E_max = get_dos("DOSes/LiF_Li2CO3_dos.txt"; Ef=-2.0)
E_vals = range(E_min, E_max, step=stepsize)
dos_vals = dos_f.(E_vals)
dos_data = hcat(E_vals, dos_vals)
open("figure_data/fig4_params/SEI_dos_interp_Ef-2.txt", "w") do io
write(io, "E, dos\n")
writedlm(io, dos_data)
end;
# then recompute k's
MHC_k = [compute_k_MHC(E_min, E_max, MHC_λ, V, avg_dos) for V in V_range]
MHC_DOS_k = [compute_k_MHC_DOS(E_min, E_max, MHC_DOS_λ, V, dos_f) for V in V_range]
open("figure_data/fig4_params/SEI_k_vs_V_Ef-2.txt", "w") do io
write(io, "V, MHC_k, MHC_DOS_k\n")
writedlm(io, hcat(V_range, MHC_k, MHC_DOS_k))
end;
# and now, impact of changing λ on the Cu111 case
dos_f, avg_dos, E_min, E_max = get_dos("DOSes/Cu_111_dos.txt")
V_range = range(-5.0, 5.0, step=stepsize)
MHC_k = [compute_k_MHC(E_min, E_max, MHC_DOS_λ*2, V, avg_dos) for V in V_range]
MHC_DOS_k = [compute_k_MHC_DOS(E_min, E_max, MHC_DOS_λ*2, V, dos_f) for V in V_range]
open("figure_data/fig4_params/Cu111_k_vs_V_doublelambda.txt", "w") do io
write(io, "V, MHC_k, MHC_DOS_k\n")
writedlm(io, hcat(V_range, MHC_k, MHC_DOS_k))
end;