From 9bd6e0a14669ac7bfbe0ed2c09761579a07c0601 Mon Sep 17 00:00:00 2001 From: Eric Fell Date: Wed, 31 Jan 2024 08:58:26 -0500 Subject: [PATCH 1/2] update readthedocs url, include docs info --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef75fe9..fb79b01 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Documentation Status](https://readthedocs.org/projects/ericfell-rfbzero/badge/?version=latest)](https://ericfell-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) +[![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) @@ -17,6 +17,19 @@ This package includes modules to describe the initial flow cell setup, chemical git clone git@github.com:ericfell/rfbzero.git ``` +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 From 573105100b22ae1bc7e453c61c6201ef335d1cc9 Mon Sep 17 00:00:00 2001 From: Eric Fell Date: Wed, 31 Jan 2024 09:08:26 -0500 Subject: [PATCH 2/2] update readthedocs url --- .../examples/simulate_RFB_example.ipynb | 54 +++++++++---------- pyproject.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/source/examples/simulate_RFB_example.ipynb b/docs/source/examples/simulate_RFB_example.ipynb index a87f3ef..75ba4ca 100644 --- a/docs/source/examples/simulate_RFB_example.ipynb +++ b/docs/source/examples/simulate_RFB_example.ipynb @@ -42,8 +42,8 @@ "source": [ "We'll first describe the redox flow cell and electrolytes to be cycled.\n", "\n", - "Flow cell design is configured via the [`ZeroDModel`](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class. Adjustable, RFB-specific, parameters include electrode active area, electrode geometric area, cell ohmic resistance, initial concentrations of redox-active species (oxidized and/or reduced), and\n", - "reservoir volumes of the capacity limiting side (CLS) and non-capacity limiting side (NCLS) electrolytes. A full description of all available parameters can be found in the [documentation](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html). The user can also declare one of two electrolyte configurations for the RFB: \n", + "Flow cell design is configured via the [`ZeroDModel`](https://rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class. Adjustable, RFB-specific, parameters include electrode active area, electrode geometric area, cell ohmic resistance, initial concentrations of redox-active species (oxidized and/or reduced), and\n", + "reservoir volumes of the capacity limiting side (CLS) and non-capacity limiting side (NCLS) electrolytes. A full description of all available parameters can be found in the [documentation](https://rfbzero.readthedocs.io/en/latest/flowcell.html). The user can also declare one of two electrolyte configurations for the RFB: \n", "\n", "1. **Full Cell**: different redox-active species in each reservoir and an OCV > 0 V. Species with the more negative reduction potential in the negative electrolyte (negolyte) and species with the more positive reduction potential in the positive electrolyte (posolyte).\n", "\n", @@ -56,7 +56,7 @@ "metadata": {}, "source": [ "Below, we define a cell with a 5 mL CLS, 10 mL NCLS, and 10 mM initial concentrations for all four species ($C_{ox,\\scriptscriptstyle CLS},~C_{red,\\scriptscriptstyle CLS},~C_{ox,\\scriptscriptstyle NCLS},~C_{red,\\scriptscriptstyle NCLS}$). The voltage difference between the formal reduction potential ($E^{o^{\\prime}}$) of the posolyte and negolyte species is 1.0 V, defined as $E_{cell}^{o^{\\prime}}=E_{\\scriptscriptstyle posolyte}^{o^{\\prime}}-E_{\\scriptscriptstyle negolyte}^{o^{\\prime}}$. \n", - "A cell ohmic resistance of 1.0 $\\Omega$, and electrochemical rate constants ($k_{o}$) of $10^{-3}$ cm/s for both posolyte and negolyte species, are also defined. The [`ZeroDModel`](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class defaults to one-electron transfers for redox-active species, but this can be changed as shown in the [documentation](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html). Additionally, the simulation timestep `time_step` defaults to 0.01 seconds." + "A cell ohmic resistance of 1.0 $\\Omega$, and electrochemical rate constants ($k_{o}$) of $10^{-3}$ cm/s for both posolyte and negolyte species, are also defined. The [`ZeroDModel`](https://rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class defaults to one-electron transfers for redox-active species, but this can be changed as shown in the [documentation](https://rfbzero.readthedocs.io/en/latest/flowcell.html). Additionally, the simulation timestep `time_step` defaults to 0.01 seconds." ] }, { @@ -93,7 +93,7 @@ "id": "2653df4f", "metadata": {}, "source": [ - "Cells can be electrochemically cycled by constant current (**CC**), constant current followed by constant voltage (**CCCV**), or constant voltage (**CV**) protocols. CC and CCCV cycling require user input of applied currents, while CCCV and CV cycling require input of current cutoffs for charge and discharge. All techniques require input of voltage limits for charge and discharge. If at any time during CCCV cycling the cell cannot provide the desired applied current, CV cycling will take place. The abstract base class for all cycling protocols is the [`CyclingProtocol`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol) class." + "Cells can be electrochemically cycled by constant current (**CC**), constant current followed by constant voltage (**CCCV**), or constant voltage (**CV**) protocols. CC and CCCV cycling require user input of applied currents, while CCCV and CV cycling require input of current cutoffs for charge and discharge. All techniques require input of voltage limits for charge and discharge. If at any time during CCCV cycling the cell cannot provide the desired applied current, CV cycling will take place. The abstract base class for all cycling protocols is the [`CyclingProtocol`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol) class." ] }, { @@ -101,7 +101,7 @@ "id": "c328337f", "metadata": {}, "source": [ - "We define a CC protocol with the [`ConstantCurrent`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrent) class to charge the flow cell up to 1.4 V and discharge down to 0.6 V, both at a current of 100 mA." + "We define a CC protocol with the [`ConstantCurrent`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrent) class to charge the flow cell up to 1.4 V and discharge down to 0.6 V, both at a current of 100 mA." ] }, { @@ -170,7 +170,7 @@ "id": "0bf0d44a", "metadata": {}, "source": [ - "The `results` object is obtained from our simple RFB cycling simulation and is an instance of the [`CyclingResults`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingResults) class. This object has multiple temporal profiles of useful cell information such as voltage, current, capacities, concentrations, overpotentials, etc. Let's plot a few outputs describing the cell we just ran:" + "The `results` object is obtained from our simple RFB cycling simulation and is an instance of the [`CyclingResults`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingResults) class. This object has multiple temporal profiles of useful cell information such as voltage, current, capacities, concentrations, overpotentials, etc. Let's plot a few outputs describing the cell we just ran:" ] }, { @@ -215,7 +215,7 @@ "id": "bc4ac5eb", "metadata": {}, "source": [ - "We define a CCCV protocol with the [`ConstantCurrentConstantVoltage`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage) class to charge an identical flow cell up to 1.2 V and discharge down to 0.8 V, at a current of $\\pm$ 100 mA. We set the current cutoffs for the constant voltage holds to be $\\pm$ 5 mA." + "We define a CCCV protocol with the [`ConstantCurrentConstantVoltage`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage) class to charge an identical flow cell up to 1.2 V and discharge down to 0.8 V, at a current of $\\pm$ 100 mA. We set the current cutoffs for the constant voltage holds to be $\\pm$ 5 mA." ] }, { @@ -292,7 +292,7 @@ "id": "cdd3fb74", "metadata": {}, "source": [ - "We define a CV protocol with the [`ConstantVoltage`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantVoltage) class to charge a flow cell up to 1.5 V and discharge down to 0.5 V, at constant voltage. We set the current cutoffs to be $\\pm$ 5 mA." + "We define a CV protocol with the [`ConstantVoltage`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantVoltage) class to charge a flow cell up to 1.5 V and discharge down to 0.5 V, at constant voltage. We set the current cutoffs to be $\\pm$ 5 mA." ] }, { @@ -362,9 +362,9 @@ "source": [ "**In summary**, the general simulation procedure is as follows: \n", "\n", - "1. Describe flow cell with the [`ZeroDModel`](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class.\n", - "2. Select the electrochemical cycling protocol class i.e., [`ConstantCurrent`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrent), [`ConstantCurrentConstantVoltage`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage), or [`ConstantVoltage`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantVoltage).\n", - "3. Simulate the cell for some duration by calling the [`run`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol.run) function of the cycling protocol class.\n" + "1. Describe flow cell with the [`ZeroDModel`](https://rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) class.\n", + "2. Select the electrochemical cycling protocol class i.e., [`ConstantCurrent`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrent), [`ConstantCurrentConstantVoltage`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage), or [`ConstantVoltage`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantVoltage).\n", + "3. Simulate the cell for some duration by calling the [`run`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol.run) function of the cycling protocol class.\n" ] }, { @@ -398,7 +398,7 @@ "\n", "where $\\xi=$ red or ox, $\\theta=$ CLS or NCLS, $n=$ electrons transferred per half reaction, $i=$ current, $F=$ Faraday constant, and $v=$ reservoir volume.\n", "\n", - "Addition/subtraction of the second term depends on the redox species, whether the cell is charging or discharging, and if the CLS is the negolyte or posolyte. [`ZeroDModel`](https://ericfell-rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) defaults to $\\Delta t=0.01~s$, where in the limit of increasingly small time steps the simulation perfectly models the described equations. The model is deterministic, but as with any finite element discretization, there is a trade-off between simulation accuracy and computational speed. We don't recommend using time steps greater than 1 second.\n", + "Addition/subtraction of the second term depends on the redox species, whether the cell is charging or discharging, and if the CLS is the negolyte or posolyte. [`ZeroDModel`](https://rfbzero.readthedocs.io/en/latest/flowcell.html#src.rfbzero.redox_flow_cell.ZeroDModel) defaults to $\\Delta t=0.01~s$, where in the limit of increasingly small time steps the simulation perfectly models the described equations. The model is deterministic, but as with any finite element discretization, there is a trade-off between simulation accuracy and computational speed. We don't recommend using time steps greater than 1 second.\n", "
\n", "
\n", "\n", @@ -510,7 +510,7 @@ "Optional capacity fade mechanisms can also be incorporated. These include chemical degradation, chemical redox of active species (e.g. self-discharge), dimerization, or multiple stacked degradation mechanisms. Rate constants and reaction rate orders can be adapted as needed to the electrolyte chemistries in each reservoir. \n", "
\n", "\n", - "A mechanism class is first declared, and then passed to a cycling protocol's [`run`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol.run) method. The same mechanism can be applied to both CLS and NCLS via `.run(degradation=...)` (standard for a symmetric cell), or individual reservoirs can be selected for degradation mechanisms, e.g., `.run(cls_degradation=..., ncls_degradation=...)`. The abstract base class for all degradations is the [`DegradationMechanism`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.DegradationMechanism) class.\n", + "A mechanism class is first declared, and then passed to a cycling protocol's [`run`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingProtocol.run) method. The same mechanism can be applied to both CLS and NCLS via `.run(degradation=...)` (standard for a symmetric cell), or individual reservoirs can be selected for degradation mechanisms, e.g., `.run(cls_degradation=..., ncls_degradation=...)`. The abstract base class for all degradations is the [`DegradationMechanism`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.DegradationMechanism) class.\n", "
\n", "Currently available degradation mechanism classes:" ] @@ -521,7 +521,7 @@ "metadata": {}, "source": [ "## a. Chemical degradation, oxidized species\n", - "The [`ChemicalDegradationOxidized`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationOxidized) class provides an $\\mathrm{n^{th}}$ order chemical degradation of the oxidized species ($C_{ox}$) of interest, with rate constant $k_n$:\n", + "The [`ChemicalDegradationOxidized`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationOxidized) class provides an $\\mathrm{n^{th}}$ order chemical degradation of the oxidized species ($C_{ox}$) of interest, with rate constant $k_n$:\n", "\n", "\n", "
\n", @@ -538,7 +538,7 @@ "metadata": {}, "source": [ "## b. Chemical degradation, reduced species\n", - "The [`ChemicalDegradationReduced`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationReduced) class provides an $\\mathrm{n^{th}}$ order chemical degradation of the reduced species ($C_{red}$) of interest, with rate constant $k_n$:\n", + "The [`ChemicalDegradationReduced`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationReduced) class provides an $\\mathrm{n^{th}}$ order chemical degradation of the reduced species ($C_{red}$) of interest, with rate constant $k_n$:\n", "\n", "\n", "
\n", @@ -555,7 +555,7 @@ "metadata": {}, "source": [ "## c. Auto-oxidation (self-discharge)\n", - "The [`AutoOxidation`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoOxidation) class provides a $\\mathrm{1^{st}}$ order chemical oxidation of $C_{red}\\rightarrow C_{ox}$ (no active material is destroyed), with rate constant $k_1$:\n", + "The [`AutoOxidation`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoOxidation) class provides a $\\mathrm{1^{st}}$ order chemical oxidation of $C_{red}\\rightarrow C_{ox}$ (no active material is destroyed), with rate constant $k_1$:\n", "\n", "\n", "
\n", @@ -572,7 +572,7 @@ "metadata": {}, "source": [ "## d. Auto-reduction (self-discharge)\n", - "The [`AutoReduction`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoReduction) class provides a $\\mathrm{1^{st}}$ order chemical reduction of $C_{ox}\\rightarrow C_{red}$ (no active material is destroyed), with rate constant $k_1$:\n", + "The [`AutoReduction`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoReduction) class provides a $\\mathrm{1^{st}}$ order chemical reduction of $C_{ox}\\rightarrow C_{red}$ (no active material is destroyed), with rate constant $k_1$:\n", "\n", "\n", "
\n", @@ -589,7 +589,7 @@ "metadata": {}, "source": [ "## e. Dimerization\n", - "The [`Dimerization`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.Dimerization) class provides a reversible chemical dimerization of $C_{ox} + C_{red} \\leftrightarrow C_{dimer}$, dictated by the dimerization equilibrium constant ($K_{dimer}$):\n", + "The [`Dimerization`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.Dimerization) class provides a reversible chemical dimerization of $C_{ox} + C_{red} \\leftrightarrow C_{dimer}$, dictated by the dimerization equilibrium constant ($K_{dimer}$):\n", "\n", "
\n", "\\begin{equation}\n", @@ -612,7 +612,7 @@ "metadata": {}, "source": [ "## f. Multiple mechanisms\n", - "The [`MultiDegradationMechanism`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.MultiDegradationMechanism) class provides the option to input multiple degradation mechanisms, and allows for different and/or multiple mechanisms to be applied to reduced and/or oxidized species. Degradation mechanisms are applied in the same order they are inputted, which only matters computationally at large time steps where accuracy is decreased." + "The [`MultiDegradationMechanism`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.MultiDegradationMechanism) class provides the option to input multiple degradation mechanisms, and allows for different and/or multiple mechanisms to be applied to reduced and/or oxidized species. Degradation mechanisms are applied in the same order they are inputted, which only matters computationally at large time steps where accuracy is decreased." ] }, { @@ -630,7 +630,7 @@ "source": [ "## Full cell, CCCV, chemical degradation of reduced species in CLS and NCLS\n", "\n", - "Half-cycle capacities can be accessed via the `charge_cycle_capacity` and `discharge_cycle_capacity` data from the simulation results container obtained from the [`CyclingResults`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingResults) class. Likewise, the cycle time of those cycles can be accessed via `charge_cycle_time` and `discharge_cycle_time`." + "Half-cycle capacities can be accessed via the `charge_cycle_capacity` and `discharge_cycle_capacity` data from the simulation results container obtained from the [`CyclingResults`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.CyclingResults) class. Likewise, the cycle time of those cycles can be accessed via `charge_cycle_time` and `discharge_cycle_time`." ] }, { @@ -823,7 +823,7 @@ "id": "09fa65a5", "metadata": {}, "source": [ - "Crossover of redox-active species through the ion-exchange membrane, driven by concentration gradients, can also be included in simulations. Permeabilities of oxidized and reduced species, and membrane thickness, can be set by the user via the [`Crossover`](https://ericfell-rfbzero.readthedocs.io/en/latest/crossover.html#src.rfbzero.crossover.Crossover) class. Currently, crossover of active species is only available for a symmetric cell, as it is indistinguishable from a first order degradation mechanism in a single reservoir of a full cell, when no interactions between crossing posolyte/negolyte species are taken into consideration. Furthermore, current-driven crossover cannot currently be simulated in `rfbzero.py`. Crossover of redox-active species is defined as follows:" + "Crossover of redox-active species through the ion-exchange membrane, driven by concentration gradients, can also be included in simulations. Permeabilities of oxidized and reduced species, and membrane thickness, can be set by the user via the [`Crossover`](https://rfbzero.readthedocs.io/en/latest/crossover.html#src.rfbzero.crossover.Crossover) class. Currently, crossover of active species is only available for a symmetric cell, as it is indistinguishable from a first order degradation mechanism in a single reservoir of a full cell, when no interactions between crossing posolyte/negolyte species are taken into consideration. Furthermore, current-driven crossover cannot currently be simulated in `rfbzero.py`. Crossover of redox-active species is defined as follows:" ] }, { @@ -860,8 +860,8 @@ "source": [ "## Example: Symmetric cell with crossover, where $P_{ox} \\neq P_{red}$. Chemical degradation of reduced species\n", "\n", - "We define a CCCV protocol with the [`ConstantCurrentConstantVoltage`](https://ericfell-rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage) class for a **symmetric cell**, to charge up to 0.2 V and discharge down to -0.2 V, at $\\pm$ 100 mA. We set the current cutoffs to be $\\pm$ 5 mA.\\\n", - "We now include a crossover mechanism via the [`Crossover`](https://ericfell-rfbzero.readthedocs.io/en/latest/crossover.html#src.rfbzero.crossover.Crossover) class, with a membrane thickness of $\\mathrm{50~\\mu m}$, and permeabilities for oxidized and reduced species: $P_{ox}=1\\times10^{-7}~cm^{2}/s~,~P_{red}=5\\times10^{-7}~cm^{2}/s$.\n", + "We define a CCCV protocol with the [`ConstantCurrentConstantVoltage`](https://rfbzero.readthedocs.io/en/latest/experiment.html#src.rfbzero.experiment.ConstantCurrentConstantVoltage) class for a **symmetric cell**, to charge up to 0.2 V and discharge down to -0.2 V, at $\\pm$ 100 mA. We set the current cutoffs to be $\\pm$ 5 mA.\\\n", + "We now include a crossover mechanism via the [`Crossover`](https://rfbzero.readthedocs.io/en/latest/crossover.html#src.rfbzero.crossover.Crossover) class, with a membrane thickness of $\\mathrm{50~\\mu m}$, and permeabilities for oxidized and reduced species: $P_{ox}=1\\times10^{-7}~cm^{2}/s~,~P_{red}=5\\times10^{-7}~cm^{2}/s$.\n", "\n", "The amount of species, in mols, that is crossing the membrane at each timestep (right hand side of **(15)** or **(16)**, multiplied by timestep) is given by the `crossed_ox_mols` and `crossed_red_mols` data from the simulation results container. A positive `crossed_..._mols` means that species are crossing from CLS to NCLS." ] @@ -1052,10 +1052,10 @@ "1. CCCV protocol \n", " - Charge @100 mA up to 1.2 V, with 5 mA current cutoff during voltage hold.\n", " - Discharge @-50 mA down to 0.8 V, with -10 mA current cutoff during voltage hold.\n", - "2. CLS has a [`MultiDegradationMechanism`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.MultiDegradationMechanism) consisting of two mechanisms:\n", - " - A $\\mathrm{1^{st}}$ order [`ChemicalDegradationReduced`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationReduced) mechanism.\n", - " - An [`AutoReduction`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoReduction) mechanism (chemical reduction of oxidized species).\n", - "3. NCLS has a $\\mathrm{2^{nd}}$ order [`ChemicalDegradationOxidized`](https://ericfell-rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationOxidized) mechanism.\n", + "2. CLS has a [`MultiDegradationMechanism`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.MultiDegradationMechanism) consisting of two mechanisms:\n", + " - A $\\mathrm{1^{st}}$ order [`ChemicalDegradationReduced`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationReduced) mechanism.\n", + " - An [`AutoReduction`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.AutoReduction) mechanism (chemical reduction of oxidized species).\n", + "3. NCLS has a $\\mathrm{2^{nd}}$ order [`ChemicalDegradationOxidized`](https://rfbzero.readthedocs.io/en/latest/degradation.html#src.rfbzero.degradation.ChemicalDegradationOxidized) mechanism.\n", "4. Asymmetric charge/discharge currents and current cutoffs." ] }, diff --git a/pyproject.toml b/pyproject.toml index 080799c..cb4b5d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ keywords = ["electrochemistry", "batteries", "redox flow"] [project.urls] Homepage = "https://github.com/ericfell/rfbzero" -Documentation = "https://ericfell-rfbzero.readthedocs.io/en/latest/index.html#" +Documentation = "https://rfbzero.readthedocs.io/en/latest/index.html#" [tool.pytest.ini_options]