rfbzero


Namerfbzero JSON
Version 1.0.0.post1 PyPI version JSON
download
home_page
SummaryA package for zero dimensional simulation of electrochemical cycling in redox flow batteries
upload_time2024-02-01 17:41:27
maintainer
docs_urlNone
author
requires_python>=3.10
license
keywords batteries electrochemistry redox flow
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            [![Documentation Status](https://readthedocs.org/projects/rfbzero/badge/?version=latest)](https://rfbzero.readthedocs.io/en/latest/?badge=latest)  [![codecov](https://codecov.io/github/ericfell/rfbzero/graph/badge.svg)](https://codecov.io/github/ericfell/rfbzero)  [![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)  [![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint)



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](https://pypi.org/project/rfbzero/) using pip.

```bash
pip install rfbzero
```

See [Getting started with `rfbzero.py`](https://rfbzero.readthedocs.io/en/latest/getting-started.html) 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](https://rfbzero.readthedocs.io/en/latest/index.html).

##  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:

```python
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:

```python
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)
```



## License
[MIT](https://choosealicense.com/licenses/mit/) 

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "rfbzero",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "batteries,electrochemistry,redox flow",
    "author": "",
    "author_email": "Eric Fell <efell@g.harvard.edu>, Jeremy Fell <jfell@sfu.ca>",
    "download_url": "https://files.pythonhosted.org/packages/58/e4/2c87afa29789d9033c4df08b9871e3116e4db1ace2f2edd692bb37c31cf3/rfbzero-1.0.0.post1.tar.gz",
    "platform": null,
    "description": "[![Documentation Status](https://readthedocs.org/projects/rfbzero/badge/?version=latest)](https://rfbzero.readthedocs.io/en/latest/?badge=latest)  [![codecov](https://codecov.io/github/ericfell/rfbzero/graph/badge.svg)](https://codecov.io/github/ericfell/rfbzero)  [![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)  [![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint)\n\n\n\nRFBzero\n------------\n\n`rfbzero` is a Python package for zero dimensional simulation of electrochemical cycling in redox flow batteries (RFBs). \n\nThis 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.\n\n## Installation\n\n`rfbzero` can be installed from [PyPI](https://pypi.org/project/rfbzero/) using pip.\n\n```bash\npip install rfbzero\n```\n\nSee [Getting started with `rfbzero.py`](https://rfbzero.readthedocs.io/en/latest/getting-started.html) for instructions on simulating RFBs.\n\n### Dependencies\n\n`rfbzero.py` requires:\n\n- Python (>=3.10)\n- SciPy\n\n### Examples and Documentation\n\nSeveral 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](https://rfbzero.readthedocs.io/en/latest/index.html).\n\n##  Package Structure\n\n- `redox_flow_cell.py`: Configures flow cell and electrolyte parameters\n- `experiment.py`: Specifies electrochemical cycling protocol\n- `degradation.py`: Optional degradation mechanism functions\n- `crossover.py`: Optional crossover mechanism\n\n\n## Examples\n\nTo simulate a full cell with constant current (CC) cycling:\n\n```python\nfrom rfbzero.redox_flow_cell import ZeroDModel\nfrom rfbzero.experiment import ConstantCurrent\n\n\n# define full cell and electrolyte parameters\ncell = ZeroDModel(\n    volume_cls=0.005,   # liters\n    volume_ncls=0.010,  # liters\n    c_ox_cls=0.01,      # molar\n    c_red_cls=0.01,     # molar\n    c_ox_ncls=0.01,     # molar\n    c_red_ncls=0.01,    # molar\n    ocv_50_soc=1.0,     # volts\n    resistance=0.5,     # ohms\n    k_0_cls=1e-3,       # cm/s\n    k_0_ncls=1e-3,      # cm/s\n)\n\n# define cycling protocol\nprotocol = ConstantCurrent(\n    voltage_limit_charge=1.5,      # volts\n    voltage_limit_discharge=0.5,   # volts\n    current=0.1,                   # amps\n)\n\n# simulate cell via protocol for 1000 seconds\nresults = protocol.run(cell_model=cell, duration=1000)\n```\n\nor a symmetric cell with constant current constant voltage (CCCV) cycling, with an electrolyte undergoing a first order chemical degradation in the reduced form:\n\n```python\nfrom rfbzero.redox_flow_cell import ZeroDModel\nfrom rfbzero.degradation import ChemicalDegradationReduced\nfrom rfbzero.experiment import ConstantCurrentConstantVoltage\n\n\n# define symmetric cell and electrolyte parameters\ncell = ZeroDModel(\n    volume_cls=0.005,   # liters\n    volume_ncls=0.010,  # liters\n    c_ox_cls=0.01,      # molar\n    c_red_cls=0.01,     # molar\n    c_ox_ncls=0.01,     # molar\n    c_red_ncls=0.01,    # molar\n    ocv_50_soc=0.0,     # volts\n    resistance=0.5,     # ohms\n    k_0_cls=1e-3,       # cm/s\n    k_0_ncls=1e-3,      # cm/s\n)\n\n# define cycling protocol\nprotocol = ConstantCurrentConstantVoltage(\n    voltage_limit_charge=0.2,         # volts\n    voltage_limit_discharge=-0.2,     # volts\n    current_cutoff_charge=0.005,      # amps\n    current_cutoff_discharge=-0.005,  # amps\n    current=0.1,                      # amps\n)\n\n# define first order chemical degradation mechanism\nchem_deg = ChemicalDegradationReduced(rate_order=1, rate_constant=1e-5)\n\n# simulate cell via protocol for 1000 seconds\nresults = protocol.run(cell_model=cell, degradation=chem_deg, duration=1000)\n```\n\n\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/) \n",
    "bugtrack_url": null,
    "license": "",
    "summary": "A package for zero dimensional simulation of electrochemical cycling in redox flow batteries",
    "version": "1.0.0.post1",
    "project_urls": {
        "Documentation": "https://rfbzero.readthedocs.io/en/latest/index.html#",
        "Homepage": "https://github.com/ericfell/rfbzero"
    },
    "split_keywords": [
        "batteries",
        "electrochemistry",
        "redox flow"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7d3fcfb0b27ebc50019df965db27466543bf23bab8b9211939fe799ffdc9406",
                "md5": "5afd8dbe62caf0ab0f89bd32cdd317f5",
                "sha256": "f9bec3cc77d8d9a0939a3db45f4ee2e7ecb4ccb342c6783069ae3a3d0c4b6d2f"
            },
            "downloads": -1,
            "filename": "rfbzero-1.0.0.post1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5afd8dbe62caf0ab0f89bd32cdd317f5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 18580,
            "upload_time": "2024-02-01T17:41:26",
            "upload_time_iso_8601": "2024-02-01T17:41:26.048524Z",
            "url": "https://files.pythonhosted.org/packages/c7/d3/fcfb0b27ebc50019df965db27466543bf23bab8b9211939fe799ffdc9406/rfbzero-1.0.0.post1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "58e42c87afa29789d9033c4df08b9871e3116e4db1ace2f2edd692bb37c31cf3",
                "md5": "96cf21f50c8320d58d05e3f770af806e",
                "sha256": "6c431299b3b65908bd804192a4785e9f78a811a6ca8ea7f3dfac249a0a084ca7"
            },
            "downloads": -1,
            "filename": "rfbzero-1.0.0.post1.tar.gz",
            "has_sig": false,
            "md5_digest": "96cf21f50c8320d58d05e3f770af806e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 395270,
            "upload_time": "2024-02-01T17:41:27",
            "upload_time_iso_8601": "2024-02-01T17:41:27.709053Z",
            "url": "https://files.pythonhosted.org/packages/58/e4/2c87afa29789d9033c4df08b9871e3116e4db1ace2f2edd692bb37c31cf3/rfbzero-1.0.0.post1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-01 17:41:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ericfell",
    "github_project": "rfbzero",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "lcname": "rfbzero"
}
        
Elapsed time: 0.16588s