-
Notifications
You must be signed in to change notification settings - Fork 0
/
electrolyte_potential.jl
82 lines (65 loc) · 2.89 KB
/
electrolyte_potential.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
include("initial_params.jl")
"""
Interfacial potential at negative electrode
"""
function ϕ₂ᵢₙ(I, paramsₙ, paramsₛ)
2*θ*log(c₂ᵢₙ(paramsₙ)./c₂ₘ(paramsₛ)) + I*lₛ/(2*k₂ₛ(lₙ, paramsₙ))
end
function ϕ₂ᵢₙ(I, c₂ᵢₙ::Float64, c₂ₘ::Float64)
2*θ*log(c₂ᵢₙ./c₂ₘ) + I*lₛ/(2*k₂ₛ(c₂ᵢₙ))
end
"""
Interfacial potential at positive electrode
"""
function ϕ₂ᵢₚ(I, paramsₚ, paramsₛ)
2*θ*log(c₂ᵢₚ(paramsₚ)./c₂ₘ(paramsₛ)) - I*lₛ/(2*k₂ₛ(lₙ + lₛ, paramsₚ))
end
function ϕ₂ᵢₚ(I, c₂ᵢₚ::Float64, c₂ₘ::Float64)
2*θ*log(c₂ᵢₚ./c₂ₘ) - I*lₛ/(2*k₂ₛ(c₂ᵢₚ))
end
# Electrloyte potentials in different domains of battery
# TODO: Fix below 3 fns
"""
Electrolyte potential in negative electrode
"""
function ϕ₂ₙ(x, I, paramsₙ::Vector{Float64}, paramsₛ::Vector{Float64}, args...)
dₙ₁ = args[1]
ϕ₂ᵢₙ(I, paramsₙ, paramsₛ) + 2*θ*log(c₂(x, paramsₙ)./c₂ᵢₙ(paramsₙ)) + I*(lₙ-x)/k₂ₙ(x, paramsₙ) - I*exp(dₙ₁)*((lₙ-x) - lₙ*(1-exp(-dₙ₁+dₙ₁*x/lₙ))/dₙ₁)/(k₂ₙ(x, paramsₙ)*(exp(dₙ₁) - 1))
end
function ϕ₂ₙ(x, I::Float64, c₂::Float64, c₂ᵢₙ::Float64, ϕ₂ᵢₙ::Float64, dₙ₁::Float64)
ϕ₂ᵢₙ + 2*θ*log(c₂/c₂ᵢₙ) + I*(lₙ-x)/k₂ₙ(c₂) - I*exp(dₙ₁)*((lₙ-x) - lₙ*(1-exp(-dₙ₁+dₙ₁*x/lₙ))/dₙ₁)/(k₂ₙ(c₂)*(exp(dₙ₁) - 1))
end
"""
Electrolyte potential in separator
"""
function ϕ₂ₛ(x, I, paramsₛ, args...)
2*θ*log(c₂(x, paramsₛ)./c₂ₘ(paramsₛ)) - I*(x - (lₙ + lₛ/2))/k₂ₛ(x, paramsₛ)
end
function ϕ₂ₛ(x, I, c₂::Float64, c₂ₘ::Float64)
2*θ*log(c₂/c₂ₘ) - I*(x - (lₙ + lₛ/2))/k₂ₛ(c₂)
end
"""
Electrolyte potential in positive electrode
"""
function ϕ₂ₚ(x, I, paramsₚ, paramsₛ, args...)
dₚ₁ = args[1]
# println(c₂ᵢₚ(params))
# println(c₂(x, params))
ϕ₂ᵢₚ(I, paramsₚ, paramsₛ) + 2*θ*log(c₂(x, paramsₚ)./c₂ᵢₚ(paramsₚ)) + I*(lₙ+lₛ-x)/(k₂ₚ(x, paramsₚ)) + I*exp(dₚ₁)*((x-lₙ-lₛ) + lₚ*(-1+exp(-dₚ₁*(x-lₙ-lₛ)/lₚ))/dₚ₁)/((k₂ₚ(x, paramsₚ))*(exp(dₚ₁) - 1))
end
function ϕ₂ₚ(x, I, c₂::Float64, c₂ᵢₚ::Float64, ϕ₂ᵢₚ::Float64, dₚ₁::Float64)
ϕ₂ᵢₚ + 2*θ*log(c₂/c₂ᵢₚ) + I*(lₙ+lₛ-x)/(k₂ₚ(c₂)) + I*exp(dₚ₁)*((x-lₙ-lₛ) + lₚ*(-1+exp(-dₚ₁*(x-lₙ-lₛ)/lₚ))/dₚ₁)/((k₂ₚ(c₂))*(exp(dₚ₁) - 1))
end
# Overall electrolyte potential @x
"""
Overall electrolyte potential function
"""
function ϕ₂(x, I, paramsₖ, paramsₛ, args...)
if x <= lₙ
ϕ₂ₙ(x, I, paramsₖ, paramsₛ, args...)
elseif x > lₙ && x <= lₙ + lₛ
ϕ₂ₛ(x, I, paramsₖ, args...)
else
ϕ₂ₚ(x, I, paramsₖ, paramsₛ, args...)
end
end