Skip to content

Commit 5bf0306

Browse files
committed
Store ThermalDiffusionLithiumDensityParameters.H in units of cal
1 parent 7b55a18 commit 5bf0306

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

src/ImpurityDensities/ThermalDiffusionLithiumDensityParameters.jl

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,41 @@
11
function _ThermalDiffusionLithiumParameters(
2-
config::AbstractDict;
3-
T::Type = Float32,
4-
temperature_ranges::AbstractVector{<:AbstractDict} = config["annealing_temperature_ranges"] ,
5-
a::Union{Real, String} = config["experimental_parameters"]["a"],
6-
b::Union{Real, String} = config["experimental_parameters"]["b"],
7-
input_units::Union{Missing, NamedTuple} = missing
8-
)
2+
config::AbstractDict;
3+
T::Type = Float32,
4+
temperature_ranges::AbstractVector{<:AbstractDict} = config["annealing_temperature_ranges"] ,
5+
a::Union{Real, String} = config["experimental_parameters"]["a"],
6+
b::Union{Real, String} = config["experimental_parameters"]["b"],
7+
input_units::Union{Missing, NamedTuple} = missing
8+
)
99

1010
temperature_unit = !ismissing(input_units) ? input_units.temperature : internal_temperature_unit
1111
diffusivity_unit = !ismissing(input_units) ?
1212
input_units.length^2 / internal_time_unit : internal_length_unit^2/internal_time_unit
1313

14-
temp_ranges_parameters = Vector{LithiumDiffusionParameters{T}}()
15-
16-
for r in temperature_ranges
17-
push!(temp_ranges_parameters,
14+
diffusion_params = Tuple(
1815
LithiumDiffusionParameters{T}(
1916
_parse_value(T, r["T_min"], temperature_unit),
2017
_parse_value(T, r["T_max"], temperature_unit),
2118
_parse_value(T, r["D0"], diffusivity_unit),
22-
_parse_value(T, r["H"], u"cal")
19+
_parse_value(T, r["H"], u"cal") / ustrip(Unitful.NoUnits, one(T) * u"cal" / internal_energy_unit) # convert to cal internally
2320
)
21+
for r in temperature_ranges
2422
)
25-
end
2623

27-
for i in 1:length(temp_ranges_parameters)
28-
if(temp_ranges_parameters[i].T_max < temp_ranges_parameters[i].T_min)
29-
throw(ConfigFileError("Invalid annealing temperature range $i: T_max must be ≥ T_min."))
30-
end
31-
if(i>1 && temp_ranges_parameters[i-1].T_max != temp_ranges_parameters[i].T_min)
32-
throw(ConfigFileError("Annealing temperature ranges must be contiguous and increasing: range $i-1 ends at a different temperature than range $i starts."))
24+
for i in eachindex(diffusion_params)
25+
if(diffusion_params[i].T_max < diffusion_params[i].T_min)
26+
throw(ConfigFileError("Invalid annealing temperature range $i: T_max must be ≥ T_min."))
27+
end
28+
if(i>1 && diffusion_params[i-1].T_max != diffusion_params[i].T_min)
29+
throw(ConfigFileError("Annealing temperature ranges must be contiguous and increasing: range $(i-1) ends at a different temperature than range $i starts."))
30+
end
3331
end
34-
end
3532

36-
diffusion_params = Tuple(temp_ranges_parameters)
33+
saturation_params = LithiumSaturationParameters{T}(_parse_value(T, a, Unitful.NoUnits), _parse_value(T, b, Unitful.NoUnits))
3734

38-
saturation_params = LithiumSaturationParameters{T}(
39-
T(a),
40-
T(b)
41-
)
42-
43-
return ThermalDiffusionLithiumDensityParameters(
44-
diffusion_params,
45-
saturation_params
46-
)
35+
return ThermalDiffusionLithiumDensityParameters(
36+
diffusion_params,
37+
saturation_params
38+
)
4739
end
4840

4941
const minimum_num_of_temp_ranges = 2

0 commit comments

Comments
 (0)