首页/文章/ 详情

PyBaMM入门篇(一):编程流程及基础代码

1年前浏览955
PyBaMM(Python电池数学建模)是一个开源Python库,旨在开发、模拟和分析电池数学模型。它是研究人员、工程师和科学家用来深入研究电池老化、衰退、热效应和电化学行为的强大而灵活的工具,也支持电池管理系统 (BMS) 先进控制策略的开发。  

一、PyBaMM的主要特点:    

  1. 1.     预制模型      
PyBaMM库里面包含几种常见的电池模型,如单粒子模型 (SPM)、电解质单粒子模型(SPMe) 和完整的 Doyle-Fuller-Newman (DFN) 模型。用户可以根据自己的需要在这些模型之间轻松切换。  
  1. 2.  灵活性      
PyBaMM允许用户针对特定应用、不同的化学体系或实验设置定制模型,也支持添加用户自定义的模型、方程和参数。
  1. 3.  高效模拟      
PyBaMM针对用来描述电池内部电化学反应、物质传递、发热等物理化学过程的一系列复杂的耦合微分方程进行了优化,并提供时域仿真和稳态仿真的求解器。    
  1. 4.  互动性      
PyBaMM是用Python 构建的,与Matplotlib、NumPy 和 Pandas 等数据分析和可视化工具无缝集成,为参数扫描、场景分析和数据拟合提供了友好的用户友好界面。  

二、PyBaMM的建模流程及基础代码:

1.安装PyBaMM
1) 通过pip安装:pip install pybamm
2) 通过conda安装:conda install -c conda-forgepybamm
具体安装流程可以参考官方网站的说明:https://docs.pybamm.org/en/latest/source/user_guide/installation/gnu-linux-mac.html#install-pybamm
2.导入PyBaMM库并选择电池模型  
importpybamm # 在python中导入电池电化学模拟代码库  
电池模型选择下面的一种:
1) model = pybamm.lithium_ion.DFN( )#调用Doyle-Fuller-Newman (DFN) 锂离子电池模型
2)model = pybamm.lithium_ion.SPM( ) #调用Single particle锂离子电池模型
3)model = pybamm.lithium_ion.SPMe( )#调用Single particle with electrolyte锂离子电池模型
3.设置初始参数值  
PyBaMM提供了多种内置参数集,可以通过pybamm.parameter_sets模块选择或自定义参数集。  
parameter_values = pybamm.ParameterValues ("Chen2020")# 输入Pybamm内置的一套参数集  
parameter_values["Current function[A]"] = 10 # 更改某一指定参数的值,比如放电电流“Current function [A]”的数值改成10
#同时更改几个参数,比如负极片厚度"Negative electrode thickness [m]",正极片厚度"Positive electrode thickness [m]"以及放电电流 "Current function [A]":  
parameter_values = pybamm.ParameterValues(
  {

"Negativeelectrode thickness [m]": 1e-4,

"Positive electrode thickness [m]": 1.2e-4,  

"Currentfunction [A]": 10,

   }
)
4.定义实验条件:  
#定义特定的充放电实验条件,例如恒流放电、恒流恒压充电等:  
experiment = pybamm.Experiment(
   [

"Discharge atC/10 for 10 hours or until 3.3 V",

"Rest for 1hour",

"Charge at 1A until 4.1 V",

"Hold at 4.1V until 50 mA",

"Rest for 1hour",

    ]
)
#定义按照特定的充放电实验条件循环一定的圈数,例如三圈:  
experiment = pybamm.Experiment(
 [
   (

"Discharge at C/10 for 10 hours or until 3.3 V",

"Rest for1 hour",

"Chargeat 1 A until 4.1 V",

"Hold at4.1 V until 50 mA",

"Rest for1 hour",

   )
 ]
* 3
)
5.建立模拟研究:  
sim = pybamm.Simulation(model,parameter_values=parameter_values) # 输入指定参数建立模拟研究  
sim = pybamm.Simulation(model, experiment=experiment) #按特定的充放电实验条件建立模拟研究  
6.求解&绘图
sim.solve([0, 3600]) #设置求解时间(3600 s)求解  
#设置求解时间及输出步长:
t_eval = np.arange(0, 121, 1)
sim.solve(t_eval=t_eval)
sim.plot() #利用自带绘图工具绘图  
#分别绘制电解液浓度和电压随时间变化的曲线:  
output_variables = ["Electrolyte concentration[mol.m-3]", "Voltage [V]"]
sim.plot(output_variables=output_variables)
结果如下图所示:
 
sim.plot(["Current [A]", "Voltage [V]"]) #分别绘制电流和电压随时间变化的曲线:  
结果如下图所示:  
#将电极电流密度和电解液电流密度随时间变化的曲线绘制在一张图,把电压随时间变化的曲线绘制在另一张图:  
sim.plot(
  [

["Electrodecurrent density [A.m-2]", "Electrolyte current density[A.m-2]"], "Voltage [V]"

  ]
)
结果如下图所示:  

来源:锂电芯动
化学pythonUM控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-06-10
最近编辑:1年前
锂电芯动
博士 中科院博士,电芯仿真高级工程师
获赞 9粉丝 22文章 71课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈