Lithium-ion Battery Realisation Algorithms (LiiBRA)

Build Status Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

Create and Simulation Reduced Order Lithium-Ion Battery Models

LiBRA provides an open-source implementation of realisation algorithms commonly used for generating reduced-order state-space models. For more information on the current derived transfer functions used to represent the lithium-ion cell, please refer to 1, 2.

Install (Julia 1.6 and later)

(v1.6) pkg> add LiiBRA

(Type ] to enter package mode.)

Example Usage

using LiiBRA, Plots

Setup:

Cell = Construct("LG M50")
SList = collect(0.8:-0.05:0.7)
SOC = 0.75
T = 298.15

Realisation:

A,B,C,D = Realise(Cell,SList,T)

HPPC Simulation:

Cell_V, Ce, jNeg, jPos, RtotNeg, RtotPos, η0, ηL, η_neg, η_pos, ϕ_ẽ1, ϕ_ẽ2, Uocp_Neg, Uocp_Pos, ϕ_e, Cse_Neg, Cse_Pos, Cell_SOC, tDra, j0, jL = HPPC(Cell,SList,SOC,4.0,-3.0,A,B,C,D)

Plot Results:

plotly()
display(plot(tDra[1:end-1],Cell_V[1:end-1], legend=:topright,color=:blue,bottom_margin=5Plots.mm, left_margin = 5Plots.mm, right_margin = 15Plots.mm, ylabel = "Terminal Voltage [V]", xlabel = "Time [s]"))
display(plot(tDra[1:end-1],Ce[1:end-1,:], legend=:topright,bottom_margin=5Plots.mm, left_margin = 5Plots.mm, right_margin = 15Plots.mm, ylabel = "Electrolyte Concen. [mol/m^3]", xlabel = "Time [s]"))
display(plot(tDra[1:end-1],Cse_Pos[1:end-1,:], legend=:topright,bottom_margin=5Plots.mm, left_margin = 5Plots.mm, right_margin = 15Plots.mm, ylabel = "Pos. Electrode Concen. [mol/m^3]", xlabel = "Time [s]"))
display(plot(tDra[1:end-1],Cse_Neg[1:end-1,:], legend=:topright,bottom_margin=5Plots.mm, left_margin = 5Plots.mm, right_margin = 15Plots.mm, ylabel = "Neg. Electrode Concen. [mol/m^3]", xlabel = "Time [s]"))

Bug Tracking

Please report any issues using the Github issue tracker. All feedback is welcome.