首页/文章/ 详情

FLUENT用pid算法模拟温度调节

8月前浏览648

正文共: 2696字 8图     预计阅读时间: 7分钟

1 前言

今天我们做一个比较有意思的案例,之所以说有意思,是因为通常不会在设备层级做这个模拟。有如下的二维问题,左侧为热空气入口,右侧为冷空气入口,两者汇合后从下侧流出。假设热空气流量一定,但是温度呈现323.15~363.15K做正弦规律波动(任何规律都可以),拟采用pid算法调节冷空气入口流量(冷空气温度一定),使得出口的平均温度控制在314.5K。显然,需要用UDF来赋予冷空气入口边界条件,本案例的核心在于pid算法的实现。
 
 

2 边界条件与求解设置

基本的设置这里不再赘述,仅仅说明一下关键设置,注意,本案例忽略了温度对介质热物性的影响
将热空气入口设置速度入口,速度恒定在5m/s,温度采用UDF设定。
 
 
将冷空气入口设置为速度入口,温度恒定在293.15K,速度值采用UDF设定。
 
 
出口设置为压力出口,表压0Pa。
本案例需要用Adjust挂载UDF实现pid调节。
 
 
按如下值进行初始化,瞬态求解,时间步长0.01s。
 
 

3 计算结果

先看一下热空气入口的温度曲线,按照正弦规律波动。
 
 
再看一下冷空气入口的速度调节结果,符合预期,冷空气流量将随着热空气温度做同向波动,即热空气温度越高,需要越多的冷空气来降温。
 
 
最后看一下出口的温度曲线,基本上稳定在314.5K附近,误差不大。
 
 
本案例的UDF代码如下,需通过编译来调用,注意,pid三个参数(比例、积分、微分)需要自行整定,本案例提供了一组不错的设置。

来源:仿真与工程
FluentUDF控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-11
最近编辑:8月前
余花生
签名征集中
获赞 259粉丝 606文章 392课程 0
点赞
收藏
作者推荐

FLUENT锂电池单体产热模拟

正文共:2861字12图预计阅读时间:8分钟1前言为了确保锂电池循环寿命,良好的电化学性能以及能量效率,电池热管理系统(BTMS)必须保证每一颗电池处于正常工作范围内。对于BTMS而言,选择合适的冷却方式(材料等)、设计合适的介质流道是保证电池组温度均匀性的根本。电池产热模型是研究电池内部温度分布以及温度变化的理论基础,也是BTMS设计的必要前提。在各种产热模型中,Bernardi等人在1985年提出的模型应用最为广泛,该模型的表达式为:式中,I为充放电电流,Vb为电池体积,Eocv、U分别为电池的开路电压和工作电压,T为电池温度,Rohm为欧姆内阻,Rp为极化内阻,ITdE/dT表示可逆反应热(通常比重不大)。该模型表明电池产热主要跟电流和电池内阻有关。今天,我们以18650锂电池为例,做一个单电池产热的模拟案例。需要指出的是,笔者阅读的4篇硕士论文中,只有2篇具有相对较好的可复现性,而且这两篇论文的作者把电池产热模型的UDF代码直接附在文中了,这才是做仿真的正确姿势,况且,对于上述模型的UDF可以说几乎没有什么技术含量了。锂离子动力电池技术在我国已经非常成熟先进了,不然也不会各种企业一股脑的冲进“新能源车”领域了。因此,本文没有什么应用指导价值了,可能读者朋友里也是卧虎藏龙,如果文章内容有误还请多多指教。2建模与网格参考相关论文的做法,将18650锂电池简化成直径18mm,高度65mm的圆柱,划分结构化网格。由于这是一个纯固体导热问题,因此网格划分简单,没有边界层,而且很容易就能获得网格无关解。注意建模的坐标选择,应为在设置导热系数时会用到各向异性模型。3边界条件与求解设置只需要开启能量方程,其他所有方程关闭。按如下设置电池的材料属性,注意这些都是复合材料的等效值。这里有个疑惑,在设置各向异性材料导热系数时,有的文章把轴向和周向设置成相等,有的文章把径向和周向设置成相等,而两个导热系数的数值存在量级的差别,显然上述的设置必然有个是正确的,有个是错误的。本案例设置成后者,但笔者觉得这个设置应该不对,从导热方向分析,由于电池是多层包裹的,因此只有径向表现为电阻串联,周向和轴向表现为电阻并联。如果有专门搞锂电池的读者可以留个言~~将电池的柱面和上下面都设置成如下对流换热边界。电池生热模型参数我们参考浙江大学洪文华同学的研究成果(《相变材料在锂离子动力电池热管理中的应用研究,2019》),对于可逆反应热的计算,文中认为TdE/dT电池生热的影响较小,工程计算一般取经验常数11.16mV。该模型的UDF代码如下,需要指出的是,体积热源实际上是温度的函数,因此最好是进行线性化处理,但是直接简单粗暴的将dS[eqn]设置为0也没有影响计算。#include"udf.h"realcapacity=2400;//capacityofthebattery,mArealrate=1;//dischargerate,Crealvolume=0.00001654048532;//volumeofthebattery,m^3reala1=0.0000147;reala2=-0.00026;reala3=0.129576;reala4=4.10751;reala5=178.64;reala6=-0.00258;reala7=-0.13313;reala8=-13.1129;reala9=-529.623;reala10=0.221655;reala11=10.2777;reala12=545.39;reala13=-9.02;reala14=-226.48;reala15=157.3587;realb1=-0.000037;realb2=0.005017;realb3=0.349707;realb4=2.49231;realb5=-109.99;realb6=-0.0025;realb7=-0.89205;realb8=-30.4102;realb9=-13.8608;realb10=0.5673;realb11=49.59766;realb12=819.933;realb13=-26.412;realb14=-1071.79;realb15=488.823;DEFINE_SOURCE(heat,cell,thread,dS,eqn){realtime=RP_Get_Real("flow-time");realRj;realRp;realSOC=1-time/(3600/rate);realTdE_dT=11.16/1000;realcurrent=capacity/1000*rate;//currentofdischarge,Arealsource;realtemp=C_T(cell,thread)-273.15;Rj=(a1*pow(temp,4)+a2*pow(temp,3)*SOC+a3*pow(temp,2)*pow(SOC,2)+a4*temp*pow(SOC,3)+a5*pow(SOC,4)+a6*pow(temp,3)+a7*pow(temp,2)*SOC+a8*temp*pow(SOC,2)+a9*pow(SOC,3)+a10*pow(temp,2)+a11*temp*SOC+a12*pow(SOC,2)+a13*temp+a14*SOC+a15)/1000;Rp=(b1*pow(temp,4)+b2*pow(temp,3)*SOC+b3*pow(temp,2)*pow(SOC,2)+b4*temp*pow(SOC,3)+b5*pow(SOC,4)+b6*pow(temp,3)+b7*pow(temp,2)*SOC+b8*temp*pow(SOC,2)+b9*pow(SOC,3)+b10*pow(temp,2)+b11*temp*SOC+b12*pow(SOC,2)+b13*temp+b14*SOC+b15)/1000;source=current/volume*(current*(Rj+Rp)+TdE_dT);C_UDMI(cell,thread,0)=source;C_UDMI(cell,thread,1)=current/volume*(current*(Rj+Rp));C_UDMI(cell,thread,2)=current/volume*TdE_dT;C_UDMI(cell,thread,3)=Rj;C_UDMI(cell,thread,4)=Rp;dS[eqn]=0;returnsource;}瞬态计算,时间步长10s,总计算步数要和充放电倍率对应上,比如1C倍率时,总时间为3600s,0.5C倍率时,总时间为7200s,1.5C倍率时,总时间为2400s,再带着体积热源往下计算就没意义了,因为上述终了时刻的SOC为0。4计算结果首先,看一下不同放电倍率下,电池表面的温度曲线,基本符合实际情况。其次,看一下不同放电倍率终了时刻,电池轴向截面的温度分布。来源:仿真与工程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈