Skip to content

Repository files navigation

Documentation StatuscodecovChecked with mypylinting: pylintpypi

DOIDOI

RFBzero

rfbzero is a Python package for zero dimensional simulation of electrochemical cycling in redox flow batteries (RFBs).

This package includes modules to describe the initial flow cell setup, chemical and electrochemical properties of the redox-active electrolytes being cycled, cell cycling protocol selection, and optional inputs for capacity degradation mechanisms and active species crossover.

Installation

rfbzero can be installed from PyPI using pip.

pip install rfbzero

See Getting started with rfbzero.py for instructions on simulating RFBs.

Dependencies

rfbzero.py requires:

  • Python (>=3.10)
  • SciPy

Examples and Documentation

Several simulated RFB examples can be found in a notebook in docs/source/examples (requires Jupyter notebook/lab). The documentation can be found at rfbzero.readthedocs.

Package Structure

  • redox_flow_cell.py: Configures flow cell and electrolyte parameters
  • experiment.py: Specifies electrochemical cycling protocol
  • degradation.py: Optional degradation mechanism functions
  • crossover.py: Optional crossover mechanism

Examples

To simulate a full cell with constant current (CC) cycling:

fromrfbzero.redox_flow_cellimportZeroDModelfromrfbzero.experimentimportConstantCurrent# define full cell and electrolyte parameterscell=ZeroDModel(
volume_cls=0.005, # litersvolume_ncls=0.010, # litersc_ox_cls=0.01, # molarc_red_cls=0.01, # molarc_ox_ncls=0.01, # molarc_red_ncls=0.01, # molarocv_50_soc=1.0, # voltsresistance=0.5, # ohmsk_0_cls=1e-3, # cm/sk_0_ncls=1e-3, # cm/s
)
# define cycling protocolprotocol=ConstantCurrent(
voltage_limit_charge=1.5, # voltsvoltage_limit_discharge=0.5, # voltscurrent=0.1, # amps
)
# simulate cell via protocol for 1000 secondsresults=protocol.run(cell_model=cell, duration=1000)

or a symmetric cell with constant current constant voltage (CCCV) cycling, with an electrolyte undergoing a first order chemical degradation in the reduced form:

fromrfbzero.redox_flow_cellimportZeroDModelfromrfbzero.degradationimportChemicalDegradationReducedfromrfbzero.experimentimportConstantCurrentConstantVoltage# define symmetric cell and electrolyte parameterscell=ZeroDModel(
volume_cls=0.005, # litersvolume_ncls=0.010, # litersc_ox_cls=0.01, # molarc_red_cls=0.01, # molarc_ox_ncls=0.01, # molarc_red_ncls=0.01, # molarocv_50_soc=0.0, # voltsresistance=0.5, # ohmsk_0_cls=1e-3, # cm/sk_0_ncls=1e-3, # cm/s
)
# define cycling protocolprotocol=ConstantCurrentConstantVoltage(
voltage_limit_charge=0.2, # voltsvoltage_limit_discharge=-0.2, # voltscurrent_cutoff_charge=0.005, # ampscurrent_cutoff_discharge=-0.005, # ampscurrent=0.1, # amps
)
# define first order chemical degradation mechanismchem_deg=ChemicalDegradationReduced(rate_order=1, rate_constant=1e-5)
# simulate cell via protocol for 1000 secondsresults=protocol.run(cell_model=cell, degradation=chem_deg, duration=1000)

📖 Citing RFBzero

If you use RFBzero in your work, please cite our paper

Fell, E. M., Fell, J. A., & Aziz, M. J. (2024). RFBzero: A Python package for zero-dimensional simulation of redox flow battery cycling. Journal of Open Source Software, 9, 6537.

You can use the BibTeX

@article{Fell2024,
title = {{RFBzero: A Python package for zero-dimensional simulation of redox flow battery cycling}},
author = {Fell, Eric M. and Fell, Jeremy A. and Aziz, Michael J.},
doi = {10.21105/joss.06537}, journal = {Journal of Open Source Software},
publisher = {The Open Journal},
volume = {9}, number = {98}, pages = {6537},
year = {2024},
url = {https://doi.org/10.21105/joss.06537},
}

License

MIT

About

Redox flow battery electrochemical cycling models in Python

Topics

Resources

Contributing

Stars

11 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages