From b2b7fd7d25a5a5ed27d614d9ed03325a44c31100 Mon Sep 17 00:00:00 2001 From: Alexander Bills Date: Mon, 10 Feb 2025 16:00:55 -0800 Subject: [PATCH 1/2] rename CrateTermination to CRateTermination because the step is CRate --- CHANGELOG.md | 1 + .../api/experiment/experiment_steps.rst | 2 +- src/pybamm/experiment/step/__init__.py | 2 +- .../experiment/step/step_termination.py | 19 +++++++++++++++++-- .../test_experiments/test_experiment_steps.py | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac422425c0..e49a4f004b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Features +- Deprecated `CrateTermination` and renamed it to `CRateTermination`. ([#4834](https://github.com/pybamm-team/PyBaMM/pull/4834)) - Added 'get_summary_variables' to return dictionary of computed summary variables ([#4824](https://github.com/pybamm-team/PyBaMM/pull/4824)) - Added support for particle size distributions combined with particle mechanics. ([#4807](https://github.com/pybamm-team/PyBaMM/pull/4807)) diff --git a/docs/source/api/experiment/experiment_steps.rst b/docs/source/api/experiment/experiment_steps.rst index ca26b02a43..3a1d2d78d3 100644 --- a/docs/source/api/experiment/experiment_steps.rst +++ b/docs/source/api/experiment/experiment_steps.rst @@ -37,7 +37,7 @@ Standard step termination events are implemented by the following classes, which called when the termination is specified by a specific string. These classes can be either be called directly or via the string format specified in the class docstring -.. autoclass:: pybamm.step.CrateTermination +.. autoclass:: pybamm.step.CRateTermination :members: .. autoclass:: pybamm.step.CurrentTermination diff --git a/src/pybamm/experiment/step/__init__.py b/src/pybamm/experiment/step/__init__.py index b2613a50d7..0ee7f4a1ee 100644 --- a/src/pybamm/experiment/step/__init__.py +++ b/src/pybamm/experiment/step/__init__.py @@ -1,5 +1,5 @@ from .steps import * from .base_step import BaseStep, BaseStepExplicit, BaseStepImplicit -from .step_termination import BaseTermination, CurrentTermination, VoltageTermination, CustomTermination, CrateTermination, _read_termination +from .step_termination import BaseTermination, CurrentTermination, VoltageTermination, CustomTermination, CRateTermination, CrateTermination, _read_termination __all__ = ['base_step', 'step_termination', 'steps'] diff --git a/src/pybamm/experiment/step/step_termination.py b/src/pybamm/experiment/step/step_termination.py index a17bae87f4..06ec5359be 100644 --- a/src/pybamm/experiment/step/step_termination.py +++ b/src/pybamm/experiment/step/step_termination.py @@ -1,4 +1,5 @@ import pybamm +from warnings import warn class BaseTermination: @@ -43,7 +44,7 @@ def __eq__(self, other): return False -class CrateTermination(BaseTermination): +class CRateTermination(BaseTermination): """ Termination based on C-rate, created when a string termination of the C-rate type (e.g. "C/10") is provided @@ -60,6 +61,20 @@ def get_event(self, variables, step): return event +class CrateTermination(CRateTermination): + """ + Termination based on C-rate, created when a string termination of the C-rate type + (e.g. "C/10") is provided + """ + + def __init__(self, value, operator=None): + super().__init__(value, operator) + warning = DeprecationWarning( + "CrateTermination is deprecated and will be removed in a future release. Use CRateTermination instead." + ) + warn(warning, stacklevel=2) + + class CurrentTermination(BaseTermination): """ Termination based on current, created when a string termination of the current type @@ -193,6 +208,6 @@ def _read_termination(termination): termination_class = { "current": CurrentTermination, "voltage": VoltageTermination, - "C-rate": CrateTermination, + "C-rate": CRateTermination, }[typ] return termination_class(value) diff --git a/tests/unit/test_experiments/test_experiment_steps.py b/tests/unit/test_experiments/test_experiment_steps.py index e79b18d47e..a4026fa6e3 100644 --- a/tests/unit/test_experiments/test_experiment_steps.py +++ b/tests/unit/test_experiments/test_experiment_steps.py @@ -163,7 +163,7 @@ def test_step_string(self): "value": 3, "type": "Voltage", "duration": 3600 * 24, - "termination": [pybamm.step.CrateTermination(0.02)], + "termination": [pybamm.step.CRateTermination(0.02)], }, { "type": "CRate", From 1f8d1973b7e8aa78c05b453f94feba2c3288ee0d Mon Sep 17 00:00:00 2001 From: Alexander Bills Date: Tue, 11 Feb 2025 10:45:34 -0800 Subject: [PATCH 2/2] comments --- CHANGELOG.md | 5 ++++- .../test_experiment_step_termination.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e49a4f004b..1bc56c8d96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,13 @@ ## Features -- Deprecated `CrateTermination` and renamed it to `CRateTermination`. ([#4834](https://github.com/pybamm-team/PyBaMM/pull/4834)) - Added 'get_summary_variables' to return dictionary of computed summary variables ([#4824](https://github.com/pybamm-team/PyBaMM/pull/4824)) - Added support for particle size distributions combined with particle mechanics. ([#4807](https://github.com/pybamm-team/PyBaMM/pull/4807)) +## Breaking changes + +- Deprecated `CrateTermination` and renamed it to `CRateTermination`. ([#4834](https://github.com/pybamm-team/PyBaMM/pull/4834)) + # [v25.1.1](https://github.com/pybamm-team/PyBaMM/tree/v25.1.1) - 2025-01-20 ## Features diff --git a/tests/unit/test_experiments/test_experiment_step_termination.py b/tests/unit/test_experiments/test_experiment_step_termination.py index 650babf50a..95ac9d8120 100644 --- a/tests/unit/test_experiments/test_experiment_step_termination.py +++ b/tests/unit/test_experiments/test_experiment_step_termination.py @@ -15,3 +15,16 @@ def test_base_termination(self): assert term == pybamm.step.BaseTermination(1) assert term != pybamm.step.BaseTermination(2) assert term != pybamm.step.CurrentTermination(1) + + def test_c_rate_termination(self): + term = pybamm.step.CRateTermination(0.02) + assert term.value == 0.02 + assert term.operator is None + variables = {"C-rate": pybamm.Scalar(0.02)} + assert term.get_event(variables, None).evaluate() == 0 + with pytest.warns(DeprecationWarning): + term_old = pybamm.step.CrateTermination(0.02) + assert ( + term.get_event(variables, None).evaluate() + == term_old.get_event(variables, None).evaluate() + )