Milestone-8: Successful demonstration of parametrization by non-invasive approach and cell tear-down.
Documentation of non-destructive cell parameterization and resulting model-based simulation results.
This repository aims at leveraging the tools developed in DigiBatt to extract equivalent circuit parameters from data generated in the project.
The resulting equivalent curcuit model is used to demonstrate module level simulations.
- Timeseries measurements from Galvanostatic Intermittent Titration Technique (GITT) performed by DLR is included in
/data/DigiBatt-BAK-5000-N21700CG-006-GITT-data.parquet. - bdat (https://digibatt.github.io/bdat/) was used to wrap the the provided GITT measurements and segment the data into steps.
- PyBaMM (https://pybamm.org/) was used to to define an Equivalent Circuit Model (ECM) for use in the paramerter extraction process.
- PyBOP (https://pybop-docs.readthedocs.io/en/latest/index.html) was used used to optimize the ECM parameters in the PyBaMM model.
fit.pyexecutes as a script and performs the following steps- Load the GITT data as
bdat.CyclingDatavia the function defined in utils.py - Detect all the steps via
steps = list(bdat.steps.find_steps(data)) - Looks for data chunks of type [Charge - Rest - Charge], [Discharge - Rest - Discharge], [Charge - Rest] or [Discharge - Rest].
- Each chunk is passed to
fit_chunk, which will utilize PyBaMM+PyBOP to extract OCV and RC parameters. - Final results are saved as
data/parameters_<n>for n=1, 2 or 3 RC-branches.
- Load the GITT data as
plot.pyexecutes as a script and generates graphs of- The provided GITT data.
- The parameters of the equivalent circuit model.
parameters.ipynbmakes scatter plots of the exctracted parameters directly in the notebook.sim_cycle.ipynbis notebook, and not a script, because a lot of people like notebooks, and performs the following steps:- Defines options for the interpolants for (OCV, R0,etc) used by the ECM model (lookup-table, spline or average)
- Defines the module, where number of cells in parallel and series can be changed, along with mean and standard deviation of cell SOH and SOR, and bussbar properties such as the mean and standard deviation of the series resistance (i.e. resistance from positive cell terminal to the next negative cell terminal), or parallel resistance (i.e. resistance from negative or positive terminal, to the adjacent negative or positive terminal)
- Passed the module along to the
cycle(module)simulation defined in simulations.py. The user can change the number of cycles, depth of discharge, rest time between charge/discharge, charge C-rate and discharge C-rate. - Makes some graphs, and saves to graphs to
/figures/
sim_dcir.ipynbdoes the same assim_cycle.ipynb, but runs a simple multipulse resistance test.
-
/data/includes timeseries GITT measurementsDigiBatt-BAK-5000-N21700CG-006-GITT-data.parquetand ECM parameters extracted from the timeseries data. -
utils.py:-
load_gitt()loads the bundled GITT data inDigiBatt-BAK-5000-N21700CG-006-GITT-data.csvand return it as abdat.CyclingDatainstance.
-
-
fit.pyexecutes as a script and uses PyBOP to extract Open-circuit voltage (OCV), ohmic resistance$\left(R_0\right)$ and R-C parameters ($R_i$ and$\tau_i$ where$i=\left[1,2,3...\right]$ ) from the bundled GITT data. -
/simulate/contains modules defining aCellGrid,Module, as well as a simpleDAESolverandInterpolant. The models and solver are simple implementations in numpy/scipy that uses the extracted equivalent circuit parameters to define a module level model. -
simulate.py-
dcir()runs a DCIR simulation and returns a convenientSimulationResultsobject. -
cycle()runs a simple cycling simulation and returns a convenientSimulationResultsobject.
-
-
/figures/stores any figures generated. - The notebooks
sim_cycleandsim_dcirdemonstrates some simulations and graphs.
CellGrid is a simple equivalent circuit model with CellGrid is vectorized to
Module Provides the expressions to simulate the current- and potential distribution in a bussbar, where the CellGrid contribute to the voltage difference between potential nodes in the main current path.
DAESolver solves the simulation problem on the form
where
The model is set up to accept a mean and standard deviation of parameters such as cell SOH, cell SOR, bussbar series resistance, etc.
With constraints to the timeconstants, SciPyMinimize was the only available optimizer.
The timeconstants and resistances would grow to very large values if unconstrained in the range
Extract the individual electrode ECM parameters to investigate the source of the aformentioned large resistances and timeconstants
Separating the OCV model into electrode-level open-circuit potential (OCP) for each electrode allows one to also estimate the individual electrode capacities.
which introduces a set of nonlinear equations for composite electrodes (i.e. silicon-graphite).
With an initial model for
where SOR is the average resistance growth, analogous to SOH for capacity decline. With an electrode-level OCP model, the total parameter-set for esimtation is then given as