mcpField
P
pybamm

pybamm

github.com/k-dense-ai数据与数据库55.1k274 次安装2 天前更新
代码仓库

关于 pybamm

PyBaMM battery experiments 是使用 PyBaMM 模拟单体恒流充放电与静置流程,并将模型曲线与循环测量数据比较的技能。它提供求解器和网格对比,但不控制硬件,也不确定电池的运行范围。

主要功能

  1. 01模拟恒流单体测试流程
  2. 02运行 SPM 和 DFN 模型
  3. 03比较求解器容差与网格分辨率
  4. 04将电压和电流与测量值比较
  5. 05导出曲线、参数和报告

适用场景

  1. 01检查单体测试流程的电压与电量轨迹
  2. 02将 SPM 或 DFN 预测与循环数据比较
  3. 03评估求解器和网格对模拟结果的影响

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pybamm

安装后在 Claude Code 中输入/pybamm确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
chen2020-protocol.json
references/
protocol-and-comparison.md
scripts/
simulate_battery.py

详细介绍

PyBaMM 电池实验

何时使用

使用此技能对单电芯恒流充放电和静置进行建模,检查电压和电荷轨迹,或将 SPM/DFN 预测与循环测量结果进行比较。该辅助程序运行真实的 PyBaMM 实验和三种数值分辨率;它不控制电池循环仪,也不为硬件建立工作包络。

运行时和测试用例

uv venv --python 3.12 battery-env
uv pip install --python battery-env/bin/python pybamm==26.9.0.0 pybammsolvers==0.10.0

此版本需要 pybammsolvers>=0.10.0、NumPy 2 或更高版本以及 CasADi 3.8.1。测试环境使用 Python 3.12.10、NumPy 2.5.3 和 SciPy 1.18.1。推荐使用 IDAKLU 求解器;此版本中 CasadiSolver 和 ScipySolver 已弃用。请参考下面的 26.9.0.0 手册,因为 latest 可能描述未发布的 API。

包含的 assets/chen2020-protocol.json 是一个合成的等温 298.15-K SPM 案例:初始 SOC 为 80%,以 0.5C 放电 600 s,静置 120 s,以 0.5C 充电 600 s。Chen2020 提供 LG M50 参数化,标称容量为 5-Ah;此处 0.5C 表示 2.5 A。这是一个可执行的参考示例,并不声称任意用户的电芯具有这些参数。除非调用者已明确配置该变量,否则该辅助程序会禁用 PyBaMM 使用遥测。

工作流

  1. 确定电芯化学体系、几何结构、标称容量、初始状态、温度和电流符号约定。使用适当的参数集并说明其来源。区分论文的拟合参数与此特定电芯的测量值。不要在没有检查其含义和适用条件的情况下移植退化参数。
  2. 将请求的协议转换为 references/protocol-and-comparison.md 中的 JSON 契约。正仿真电流放电;负电流充电。每一步都有有限持续时间。指定的电压截止可以提前结束它;报告记录实际终止时间。C-rate 使用所选集合的标称容量。该容量的变化会改变电流。
  3. 当 SPM 的简化传输假设足够时选择 SPM;当解析电解质/电极传输很重要时使用 DFN。该辅助程序测试的模型是等温的,不包括老化、力学、镀层和电池组控制。即使数值收敛性极好,提高倍率也可能使 SPM 预测失效。
  4. 运行辅助程序。它验证协议字段,拒绝未知或被协议覆盖的参数输入,使用 IDAKLU,并在 SOC 初始化之后 快照基础参数。将协议与该快照保持在一起:实验步骤提供自己的电流。不可行或跳过的步骤是错误,而不是将部分协议静默呈现为完整。
  5. 分别阅读两种数值比较:基线对比更严格的容差隔离求解器误差;原始网格上的严格容差对比加倍网格隔离离散化。将电压差异和事件时间差异与问题所需的精度进行比较。当这些太大时再次细化;一次加倍不能证明收敛。
  6. 如果有测量值,在解释残差之前检查电流、时间原点、温度、SOC 和容量。提供匹配的秒、伏特和安培。该辅助程序报告电压 RMSE/MAE/偏差和电流 RMSE,保留残差。输入电流不匹配时的小电压误差不能验证模型。此工作流比较曲线;它不声称仅从电压识别唯一动力学参数。

运行与检查

在 skill 目录中,让 battery-env/bin/python 指向上面创建的环境:

battery-env/bin/python scripts/simulate_battery.py assets/chen2020-protocol.json \
  --output battery-reference

# measured.csv is user data with time_s,voltage_V,current_A columns.
battery-env/bin/python scripts/simulate_battery.py protocol.json \
  --measured measured.csv --mesh-points 30 --output battery-comparison

第一条命令按原样执行,并使用外部输出位置。第二条使用示例用户文件名;测量路径已在测试中针对冻结的合成参考曲线进行验证。输出目录必须是新目录。

产物说明
curve.csv基准时间、步数、电压、电流和净放电容量
tight-tolerance.csv相同网格,更严格的求解器
refined-mesh.csv网格加倍并使用更严格的求解器
parameters.jsonSOC 初始化后的基础参数;步进电流仍保留在协议中
report.json协议/校验和、包版本、参数来源、数值比较和终止条件
measurement-residuals.csv预测值减测量值以及电流失配,前提是提供了测量值

参考案例守恒了积分电荷:2.5 A 下 600 s 产生 0.4166667 Ah,随后等量电荷使净放电容量回到零。此案例中电压保持在 Chen2020 限制范围内。收紧容差使电压变化约 1 微伏;将网格从 20 点加倍到 40 点使其变化约 2.17 mV,因此声称亚毫伏级网格精度是不合理的。一个单独的真实 DFN 测试在请求的 3.9-V 事件处停止,并验证了其电荷积分。原生测试还涉及充电截止、不可行放电、容量到电流转换,以及在不重新初始化 SOC 的情况下重放导出的 SOC 调整后参数。 冻结参考是数值回归证据,而非实测电芯验证。

主要参考资料

链接的发布手册、捆绑助手、参数序列化以及参考中的可选 DataLoader 配方均已对照 PyBaMM 26.9.0.0 验证。

评论

支持 Markdown