Skip to content
julia
using BattMo, GLMakie

model_settings = load_model_settings(; from_default_set = "P2D")
model_settings["SEIModel"] = "Bolay"
cell_parameters = load_cell_parameters(; from_default_set = "Chen2020")
cycling_protocol = load_cycling_protocol(; from_default_set = "CCCV")
simulation_settings = load_simulation_settings(; from_default_set = "P2D")

model_setup = LithiumIonBattery(; model_settings)

sim = Simulation(model_setup, cell_parameters, cycling_protocol);

output = solve(sim;)

print_output_overview(output)


time_series = get_output_time_series(output)
states = get_output_states(output)
metrics = get_output_metrics(output)
(DischargeCapacity = [3.6764157469683036, 3.6764157469683036, 3.60571544414199, 0.0], CycleNumber = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0  …  2, 2, 2, 2, 2, 2, 2, 2, 2, 3], RoundTripEfficiency = [77.36228970931069, 88.66809238132515, 87.16118764442713, NaN], ChargeEnergy = [59720.46968011424, 52066.498849741176, 52053.72401009294, 0.0], DischargeEnergy = [45308.71046400285, 45274.351384286936, 44478.34774029251, 0.0], ChargeCapacity = [-4.293171612996871, -3.679487219485073, -3.6769446312578915, 0.0])

Plot a pre-defined dashboard

julia
plot_dashboard(output)

plot_dashboard(output; plot_type = "line")

plot_dashboard(output; plot_type = "contour")

Access state data and plot for a specific time step

julia
quantities = ["Time", "Position", "NeAmRadius", "NeAmConcentration",
	"NeAmSurfaceConcentration", "PeAmRadius", "PeAmConcentration",
	"PeAmSurfaceConcentration", "ElectrolyteConcentration"]


output_data = get_output_states(output, quantities = quantities);

t = 100 # time step to plot

d1 = output_data[:NeAmSurfaceConcentration][t, :]
d2 = output_data[:PeAmSurfaceConcentration][t, :]
d3 = output_data[:ElectrolyteConcentration][t, :]

f = Figure()
ax = Axis(f[1, 1], title = "Concentration at t = $(output_data[:Time][t]) s", xlabel = "Position [m]", ylabel = "Concentration")
l1 = lines!(ax, output_data[:Position], d1, color = :red, linewidth = 2, label = "NeAmSurfaceConcentration")
l2 = lines!(ax, output_data[:Position], d2, color = :blue, linewidth = 2, label = "PeAmSurfaceConcentration")
l3 = lines!(ax, output_data[:Position], d3, color = :green, linewidth = 2, label = "ElectrolyteConcentration")
axislegend(ax)
display(GLMakie.Screen(), f)

g = Figure()
ax2 = Axis(g[1, 1], title = "Active Material Concentration at t = $(output_data[:Time][t]) s", xlabel = "Position", ylabel = "Depth")
hm1 = contourf!(ax2, output_data[:Position], output_data[:NeAmRadius], output_data[:NeAmConcentration][t, :, :])
hm2 = contourf!(ax2, output_data[:Position], output_data[:PeAmRadius], output_data[:PeAmConcentration][t, :, :])
Colorbar(g[1, 2], hm1)
display(GLMakie.Screen(), g)
GLMakie.Screen(...)

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.