diff --git a/CHANGELOG.md b/CHANGELOG.md index a311584..2f332b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ ### Optimizations ### Bug Fixes -- `Solution.plot` now blocks at the end of a program ([#5](https://github.com/NREL/thevenin/pull/5)). Figures no longer automatically close when programs are run from scripts. Blocking only occurs at the end of a program so that opening figures do not stop other lines of code from running. +- `*Solution.plot()` now has a `show_plot` option to register `plt.show()` and block at the end of a program ([#5](https://github.com/NREL/thevenin/pull/5)). This keeps figures from auto-closing at the end of scripts run in non-interactive environments. Interactive environments (IPython, Jupyter Notebook) are not affected. When set to `False`, users running in non-interactive environments must manually call `plt.show()`. The default is `True`. ### Breaking Changes - New Coulombic efficiency option means users will need to update old `params` inputs to also include `ce` diff --git a/docs/jupyter_execute/6bb7a27b622843940ad2ca349877c1a8e8d12b6b3ed0a1856e574ef8c53129c4.png b/docs/jupyter_execute/6bb7a27b622843940ad2ca349877c1a8e8d12b6b3ed0a1856e574ef8c53129c4.png new file mode 100644 index 0000000..3f3c400 Binary files /dev/null and b/docs/jupyter_execute/6bb7a27b622843940ad2ca349877c1a8e8d12b6b3ed0a1856e574ef8c53129c4.png differ diff --git a/docs/jupyter_execute/examples/dict_inputs.ipynb b/docs/jupyter_execute/examples/dict_inputs.ipynb index 9150472..1327068 100644 --- a/docs/jupyter_execute/examples/dict_inputs.ipynb +++ b/docs/jupyter_execute/examples/dict_inputs.ipynb @@ -128,25 +128,13 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'ce'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[3], line 17\u001b[0m\n\u001b[0;32m 1\u001b[0m params \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 2\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_RC_pairs\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 3\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msoc0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1.\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC1\u001b[39m\u001b[38;5;124m'\u001b[39m: C1_func,\n\u001b[0;32m 15\u001b[0m }\n\u001b[1;32m---> 17\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43mthev\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mModel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mparams\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\Documents\\thevenin\\src\\thevenin\\_model.py:108\u001b[0m, in \u001b[0;36mModel.__init__\u001b[1;34m(self, params)\u001b[0m\n\u001b[0;32m 106\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msoc0 \u001b[38;5;241m=\u001b[39m params\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msoc0\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcapacity \u001b[38;5;241m=\u001b[39m params\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcapacity\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mce \u001b[38;5;241m=\u001b[39m \u001b[43mparams\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpop\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mce\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 109\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmass \u001b[38;5;241m=\u001b[39m params\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmass\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 110\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39misothermal \u001b[38;5;241m=\u001b[39m params\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124misothermal\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[1;31mKeyError\u001b[0m: 'ce'" - ] - } - ], + "outputs": [], "source": [ "params = {\n", " 'num_RC_pairs': 1,\n", " 'soc0': 1.,\n", " 'capacity': 75.,\n", + " 'ce': 1.,\n", " 'mass': 1.9,\n", " 'isothermal': False,\n", " 'Cp': 745.,\n", @@ -174,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -199,13 +187,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "soln = model.run(expr)\n", "soln.plot('time_h', 'voltage_V')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/jupyter_execute/examples/yaml_inputs.ipynb b/docs/jupyter_execute/examples/yaml_inputs.ipynb index 6c8c9ed..8061ee9 100644 --- a/docs/jupyter_execute/examples/yaml_inputs.ipynb +++ b/docs/jupyter_execute/examples/yaml_inputs.ipynb @@ -33,6 +33,7 @@ "num_RC_pairs: 1\n", "soc0: 1.\n", "capacity: 75.\n", + "ce: 1.\n", "mass: 1.9\n", "isothermal: False\n", "Cp: 745.\n", @@ -47,7 +48,7 @@ "R1: !eval |\n", " lambda soc, T_cell: 1e-5 + soc/1e5 - T_cell/3e9\n", "C1: !eval |\n", - " lambda soc, T_cell: 1e4 + soc*1e4 + np.exp(T_cell/300.)\n", + " lambda soc, T_cell: 1e2 + soc*1e4 + np.exp(T_cell/300.)\n", "```\n", "\n", "Although this example only uses a single RC pair, `num_RC_pairs` can be as low as 0 and can be as high as $N$. The number of defined `Rj` and `Cj` elements in the '.yaml' file should be consistent with `num_RC_pairs`. For example, if `num_RC_pairs=0` then only `R0` should be defined, with no other resistors or capacitors. However, if `num_RC_pairs=3` then the user should specify `R0`, `R1`, `R2`, `R3`, `C1`, `C2`, and `C3`. Note that the series resistor element `R0` is always included, even when there are no RC pairs. " diff --git a/docs/jupyter_execute/user_guide/basic_tutorial.ipynb b/docs/jupyter_execute/user_guide/basic_tutorial.ipynb index 843e6f7..66ef272 100644 --- a/docs/jupyter_execute/user_guide/basic_tutorial.ipynb +++ b/docs/jupyter_execute/user_guide/basic_tutorial.ipynb @@ -162,7 +162,7 @@ "output_type": "stream", "text": [ "CycleSolution(\n", - " solvetime=0.011 s,\n", + " solvetime=0.006 s,\n", " success=[True, True],\n", " status=[2, 1],\n", " nfev=[257, 69],\n", diff --git a/docs/source/_templates/copyright.html b/docs/source/_templates/copyright.html new file mode 100644 index 0000000..08f6c80 --- /dev/null +++ b/docs/source/_templates/copyright.html @@ -0,0 +1,12 @@ +{# Displays the copyright information (which is defined in conf.py). #} +{% if show_copyright and copyright %} + +{% endif %} \ No newline at end of file diff --git a/docs/source/api/thevenin/index.rst b/docs/source/api/thevenin/index.rst index f97aba8..c4d9e81 100644 --- a/docs/source/api/thevenin/index.rst +++ b/docs/source/api/thevenin/index.rst @@ -81,7 +81,7 @@ Package Contents - .. py:method:: plot(x, y, **kwargs) + .. py:method:: plot(x, y, show_plot = True, **kwargs) Plot any two variables in 'vars' against each other. @@ -89,6 +89,13 @@ Package Contents :type x: str :param y: A variable key in 'vars' to be used for the y-axis. :type y: str + :param show_plot: For non-interactive environments only. When True (default) this + registers `plt.show()` to run at the end of the program. If False, + you must call `plt.show()` manually. + :type show_plot: bool, optional + :param \*\*kwargs: Keyword arguments to pass through to `plt.plot()`. For more info + please refer to documentation for `maplotlib.pyplot.plot()`. + :type \*\*kwargs: dict, optional :returns: *None.* @@ -796,7 +803,7 @@ Package Contents :type timer: float - .. py:method:: plot(x, y, **kwargs) + .. py:method:: plot(x, y, show_plot = True, **kwargs) Plot any two variables in 'vars' against each other. @@ -804,6 +811,13 @@ Package Contents :type x: str :param y: A variable key in 'vars' to be used for the y-axis. :type y: str + :param show_plot: For non-interactive environments only. When True (default) this + registers `plt.show()` to run at the end of the program. If False, + you must call `plt.show()` manually. + :type show_plot: bool, optional + :param \*\*kwargs: Keyword arguments to pass through to `plt.plot()`. For more info + please refer to documentation for `maplotlib.pyplot.plot()`. + :type \*\*kwargs: dict, optional :returns: *None.* diff --git a/docs/source/conf.py b/docs/source/conf.py index d4fc165..763f0f0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -9,7 +9,7 @@ import thevenin as thev project = 'thevenin' -copyright = '2024, Corey R. Randall' +copyright = 'Alliance for Sustainable Energy, LLC' author = 'Corey R. Randall' version = thev.__version__ release = thev.__version__ diff --git a/docs/source/examples/dict_inputs.ipynb b/docs/source/examples/dict_inputs.ipynb index ca02a66..7350dd7 100644 --- a/docs/source/examples/dict_inputs.ipynb +++ b/docs/source/examples/dict_inputs.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -134,6 +134,7 @@ " 'num_RC_pairs': 1,\n", " 'soc0': 1.,\n", " 'capacity': 75.,\n", + " 'ce': 1.,\n", " 'mass': 1.9,\n", " 'isothermal': False,\n", " 'Cp': 745.,\n", @@ -161,7 +162,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -193,6 +194,13 @@ "soln = model.run(expr)\n", "soln.plot('time_h', 'voltage_V')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -211,7 +219,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.7" } }, "nbformat": 4, diff --git a/docs/source/examples/yaml_inputs.ipynb b/docs/source/examples/yaml_inputs.ipynb index c7886c7..e5f659a 100644 --- a/docs/source/examples/yaml_inputs.ipynb +++ b/docs/source/examples/yaml_inputs.ipynb @@ -33,6 +33,7 @@ "num_RC_pairs: 1\n", "soc0: 1.\n", "capacity: 75.\n", + "ce: 1.\n", "mass: 1.9\n", "isothermal: False\n", "Cp: 745.\n", @@ -47,7 +48,7 @@ "R1: !eval |\n", " lambda soc, T_cell: 1e-5 + soc/1e5 - T_cell/3e9\n", "C1: !eval |\n", - " lambda soc, T_cell: 1e4 + soc*1e4 + np.exp(T_cell/300.)\n", + " lambda soc, T_cell: 1e2 + soc*1e4 + np.exp(T_cell/300.)\n", "```\n", "\n", "Although this example only uses a single RC pair, `num_RC_pairs` can be as low as 0 and can be as high as $N$. The number of defined `Rj` and `Cj` elements in the '.yaml' file should be consistent with `num_RC_pairs`. For example, if `num_RC_pairs=0` then only `R0` should be defined, with no other resistors or capacitors. However, if `num_RC_pairs=3` then the user should specify `R0`, `R1`, `R2`, `R3`, `C1`, `C2`, and `C3`. Note that the series resistor element `R0` is always included, even when there are no RC pairs. " diff --git a/src/thevenin/__init__.py b/src/thevenin/__init__.py index 9c65d60..d946b75 100644 --- a/src/thevenin/__init__.py +++ b/src/thevenin/__init__.py @@ -27,7 +27,7 @@ from . import loadfns from . import plotutils -__version__ = '0.1.2.dev' +__version__ = '0.2.0.dev' __all__ = [ 'IDASolver', diff --git a/src/thevenin/_solutions.py b/src/thevenin/_solutions.py index 1d53a0a..6dc5da1 100644 --- a/src/thevenin/_solutions.py +++ b/src/thevenin/_solutions.py @@ -88,6 +88,9 @@ def plot(self, x: str, y: str, show_plot: bool = True, **kwargs) -> None: For non-interactive environments only. When True (default) this registers `plt.show()` to run at the end of the program. If False, you must call `plt.show()` manually. + **kwargs : dict, optional + Keyword arguments to pass through to `plt.plot()`. For more info + please refer to documentation for `maplotlib.pyplot.plot()`. Returns -------