PyBaMM(Python电池数学建模)是一个用Python编写的开源电池模拟包。我们的使命是通过提供用于多机构、跨学科协作的开源工具来加速电池建模研究。概括地说,PyBaMM 包含 (i) 用于编写和求解微分方程组的框架,(ii) 电池模型和参数库,以及 (iii) 用于模拟电池特定实验和可视化结果的专用工具。这些共同实现了灵活的模型定义和快速的电池模拟,使用户能够探索不同电池设计和建模假设在各种操作场景下的效果。
PyBaMM 使用开放的治理模型,并由NumFOCUS 提供财政赞助。考虑进行免税捐赠,以帮助项目支付开发人员的时间、专业服务、旅行、研讨会和各种其他需求。
使用 PyBaMM 最简单的方法是使用您选择的模型和所有默认设置运行 1C 恒流放电:
import pybammmodel = pybamm.lithium_ion.DFN() # Doyle-Fuller-Newman model sim = pybamm.Simulation(model) sim.solve([0, 3600]) # solve for 1 hour sim.plot()
model = pybamm.lithium_ion.DFN() # Doyle-Fuller-Newman model sim = pybamm.Simulation(model) sim.solve([0, 3600]) # solve for 1 hour sim.plot()" tabindex="0" role="button">
或者模拟恒流放电、恒流恒压充电等实验:
import pybammexperiment = pybamm.Experiment( [ ( "Discharge at C/10 for 10 hours or until 3.3 V", "Rest for 1 hour", "Charge at 1 A until 4.1 V", "Hold at 4.1 V until 50 mA", "Rest for 1 hour", ) ] * 3, ) model = pybamm.lithium_ion.DFN() sim = pybamm.Simulation(model, experiment=experiment, solver=pybamm.CasadiSolver()) sim.solve() sim.plot()
experiment = pybamm.Experiment( [ ( "Discharge at C/10 for 10 hours or until 3.3 V", "Rest for 1 hour", "Charge at 1 A until 4.1 V", "Hold at 4.1 V until 50 mA", "Rest for 1 hour", ) ] * 3, ) model = pybamm.lithium_ion.DFN() sim = pybamm.Simulation(model, experiment=experiment, solver=pybamm.CasadiSolver()) sim.solve() sim.plot()" tabindex="0" role="button">
然而,还可以进行更多的定制。可以更改物理场、参数值、几何形状、子网格类型、子网格点数、空间离散化方法和积分求解器(请参阅 DFN脚本或笔记本)。
对于新用户,我们推荐入门指南。这些旨在成为非常简单的分步指南,以展示 PyBaMM 的基本功能,并且可以在本地下载和使用,也可以通过Google Colab在线使用。
更多详细信息可以在 github 上托管的许多详细示例中找到。此外,还有完整的 API 文档,托管在Read The Docs上。可以在此处找到其他支持材料 。
请注意,默认分支上的示例develop
是在最新develop
提交上进行测试的。在同步到分支的 pybamm pip 包上运行示例时,这有时可能会导致错误main
。您可以切换到main
github 上的分支来查看与最新 pip 版本兼容的示例版本。
PyBaMM 每四个月发布一次版本,我们使用CalVer,这意味着版本号是YY.MM
.发布时间大约在一月底、五月和九月。增加年份的版本和增加月份的版本之间没有区别;特别是,增加月份的版本可能会带来重大变化。每个版本的重大更改都通过CHANGELOG传达,并附带弃用警告或错误,这些警告或错误至少保留一年(3 个版本)。如果您发现未记录的重大更改,或者认为应该撤消该更改,请在GitHub上提出问题。
PyBaMM 可在 GNU/Linux、MacOS 和 Windows 上使用。我们强烈建议在 python 虚拟环境中安装 PyBaMM,以免更改任何分发 python 文件。有关如何为 PyBaMM 创建虚拟环境的说明,请参阅文档。
pip install pybamm
PyBaMM 可通过 conda-forge 通道作为 conda 包使用。
conda install -c conda-forge pybamm
以下 GNU/Linux 和 macOS 求解器可供选择:
- 基于scikits.odes的求解器,请参阅文档。
- 基于jax的求解器,请参阅文档。
如果您在工作中使用 PyBaMM,请引用我们的论文
Sulzer, V.、Marquis, SG、Timms, R.、Robinson, M. 和 Chapman, SJ (2021)。 Python 电池数学建模 (PyBaMM)。开放研究软件杂志,9(1)。
您可以使用 BibTeX
@article{Sulzer2021,
title = {{Python Battery Mathematical Modelling (PyBaMM)}},
author = {Sulzer, Valentin and Marquis, Scott G. and Timms, Robert and Robinson, Martin and Chapman, S. Jon},
doi = {10.5334/jors.309},
journal = {Journal of Open Research Software},
publisher = {Software Sustainability Institute},
volume = {9},
number = {1},
pages = {14},
year = {2021}
}
如果您也能引用相关论文,我们将不胜感激。这些将根据您使用的模型和求解器而变化。要找出您应该引用哪些论文,请添加以下行
pybamm.print_citations()
到脚本的末尾。这会将 BibTeX 信息打印到终端;传递文件名会将print_citations
BibTeX 信息打印到指定文件。所有引文的列表也可以在引文文件中找到。特别是,PyBaMM 严重依赖CasADi。有关如何在贡献时添加自己的引用的信息,请参阅CONTRIBUTING.md 。
如果您想通过添加新方法、编写文档或修复令人尴尬的错误来帮助我们开发 PyBaMM,请先查看这些指南。
如有任何问题、意见、建议或错误报告,请参阅联系页面。
PyBaMM 是完全开源的。有关其许可证的更多信息,请参阅许可证。
感谢这些优秀的人(表情符号键):
该项目遵循所有贡献者规范。欢迎任何形式的贡献!