Skip to main content

Documentation Status codecov Checked with mypy linting: pylint pypi

DOI DOI

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:

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

MIT

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)

Source distribution for rfbzero 1.0.1
File Size Uploaded
rfbzero-1.0.1.tar.gz 404.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rfbzero 1.0.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page