Sodium ion modeling
This is an example for showing a sodium ion simulation based on chayambuka_2022. There is hardly any difference between the sodium ion and lithium ion PXD basis model and equations. The only difference is that for the SodiumIonBattery model you can chose a slightly adapted butler volmer equation from chayambuka_2022. See documentation for more information.
julia
using BattMo, GLMakie
######### Load Simulation Data #########
cell_parameters = load_cell_parameters(; from_default_set = "chayambuka_2022")
cycling_protocol = load_cycling_protocol(; from_default_set = "cc_discharge")
model_settings = load_model_settings(; from_default_set = "p2d")
simulation_settings = load_simulation_settings(; from_default_set = "p2d")
######### Alter model settings #########
model_settings["ButlerVolmer"] = "Chayambuka"
######### Alter simulation settings #########
simulation_settings["NegativeElectrodeCoatingGridPoints"] = 8
simulation_settings["PositiveElectrodeCoatingGridPoints"] = 50
simulation_settings["NegativeElectrodeParticleGridPoints"] = 50
simulation_settings["PositiveElectrodeParticleGridPoints"] = 50
simulation_settings["SeparatorGridPoints"] = 5
######### Alter cycling protocol #########
cycling_protocol["InitialStateOfCharge"] = 0.99
cycling_protocol["LowerVoltageLimit"] = 2.0
cycling_protocol["UpperVoltageLimit"] = 4.2
######### Run simulation ##########
model = SodiumIonBattery(; model_settings);
drates = [0.1, 0.5, 1.2, 1.4]
delta_t = [200, 50, 50, 50]
fig = Figure()
ax = Axis(fig[1, 1], title = "Voltage", xlabel = "Capacity / mAh", ylabel = "Voltage / V")
outputs_crate = []
for (i, rate) in enumerate(drates)
cycling_protocol["DRate"] = rate
simulation_settings["TimeStepDuration"] = delta_t[i]
sim = Simulation(model, cell_parameters, cycling_protocol; simulation_settings)
output = solve(sim;)
time_series = output.time_series
lines!(ax, time_series["CumulativeCapacity"] .* 1000, time_series["Voltage"], label = "$rate C")
end
axislegend(position = :lb)
fig
Example on GitHub
If you would like to run this example yourself, it can be downloaded from the BattMo.jl GitHub repository as a script.
This page was generated using Literate.jl.