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 parametersexperiment.py: Specifies electrochemical cycling protocoldegradation.py: Optional degradation mechanism functionscrossover.py: Optional crossover mechanism
Examples
To simulate a full cell with constant current (CC) cycling:
from rfbzero.redox_flow_cell import ZeroDModel
from rfbzero.experiment import ConstantCurrent
# define full cell and electrolyte parameters
cell = ZeroDModel(
volume_cls=0.005, # liters
volume_ncls=0.010, # liters
c_ox_cls=0.01, # molar
c_red_cls=0.01, # molar
c_ox_ncls=0.01, # molar
c_red_ncls=0.01, # molar
ocv_50_soc=1.0, # volts
resistance=0.5, # ohms
k_0_cls=1e-3, # cm/s
k_0_ncls=1e-3, # cm/s
)
# define cycling protocol
protocol = ConstantCurrent(
voltage_limit_charge=1.5, # volts
voltage_limit_discharge=0.5, # volts
current=0.1, # amps
)
# simulate cell via protocol for 1000 seconds
results = 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:
from rfbzero.redox_flow_cell import ZeroDModel
from rfbzero.degradation import ChemicalDegradationReduced
from rfbzero.experiment import ConstantCurrentConstantVoltage
# define symmetric cell and electrolyte parameters
cell = ZeroDModel(
volume_cls=0.005, # liters
volume_ncls=0.010, # liters
c_ox_cls=0.01, # molar
c_red_cls=0.01, # molar
c_ox_ncls=0.01, # molar
c_red_ncls=0.01, # molar
ocv_50_soc=0.0, # volts
resistance=0.5, # ohms
k_0_cls=1e-3, # cm/s
k_0_ncls=1e-3, # cm/s
)
# define cycling protocol
protocol = ConstantCurrentConstantVoltage(
voltage_limit_charge=0.2, # volts
voltage_limit_discharge=-0.2, # volts
current_cutoff_charge=0.005, # amps
current_cutoff_discharge=-0.005, # amps
current=0.1, # amps
)
# define first order chemical degradation mechanism
chem_deg = ChemicalDegradationReduced(rate_order=1, rate_constant=1e-5)
# simulate cell via protocol for 1000 seconds
results = 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
Metadata
Release files for rfbzero 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rfbzero-1.0.1.tar.gz | 404.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rfbzero-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 423.1 kB
Release files / rfbzero-1.0.1.tar.gz
| Download URL | rfbzero-1.0.1.tar.gz |
|---|---|
| Size | 404.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d6330f7c4af6eb1f26b9056f710e9df3b098c84a58028641cfbfae1d8210ed1
|
|
BLAKE2b-256 checksum How to use checksums |
3d8c7badcee723c3532c3a714c25871b3e1b438044cb90e96e2f5c0141cb2f9d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.10.4
|
Release files / rfbzero-1.0.1-py3-none-any.whl
| Download URL | rfbzero-1.0.1-py3-none-any.whl |
|---|---|
| Size | 19.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9f777cda041406654f19901a63bc4b5e42ce7a411ace14c3dece6d6335f65e42
|
|
BLAKE2b-256 checksum How to use checksums |
3c653720913496f8becadbf2d9bdb1b1b279cdc7bf743becaafd111608a6a9ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.10.4
|