上一篇文章用simulink书写传热学分析了平板导热simulink自建库的开发,而另外一种比较重要的导热方式就是圆筒壁导热,主要应用于圆柱电芯热仿真、供热管道保温层厚度评估和圆筒结构新材料开发(真空隔热板、PCM材料)等,所以类似于amesim圆筒传热的子模型在simulink平台下也有必要开发下。
基于之前的热流量算法需要计算两个温度间的热阻,所以第一时间想到了最近非常火爆的Deepseek需求理论支持,得到了如下的理论公式推导,非常完整:
而热阻就是我们想要的最重要的公式,跟前篇文章一样,直接在simulink里搭建然后封装并设置相关参数定义就可以了。
若是圆筒壁包含两种材料和两种材料间的接触热阻,总热阻即是材料热阻与材料接触热阻相加。
现有如下圆柱电芯散热案例,2170电芯被相变材料包裹,圆柱电芯有一定的发热量,材料四周与空气对流换热。
运用热质量块与热阻单元搭建一维模型,相变材料的比热容用随温度变化的两组数组定义就可以,模型及结果如下:
当然,觉得Deepseek只会总结下知识点就太小看他了,我给他上了点难度,打了这串字进去:
圆筒壁传热S-function开发,其中包含两种材料和两种材料间的热阻,输入圆筒壁两边温度T1,T2,输出圆筒壁热通量Q1,Q2
结果得到了非常完整的 Level-2 MATLAB S-Function,该程序只要复 制到.m文本然后就可以调用,圆柱参数定义也比较方便,按照顺序直接给参数就可以,省去了自定义库建模、封装和参数定义等一系列步骤,简直封神。
function cylinder_heat_transfer_sfun(block)
% Level-2 MATLAB S-function for cylindrical wall heat transfer calculation.
setup(block);
function setup(block)
% 设置S-function的基本属性
block.NumDialogPrms = 5; % 参数顺序: k1, k2, R_contact, [r1, r2, r3], L
block.NumInputPorts = 2;
block.NumOutputPorts = 2;
% 配置输入端口
block.InputPort(1).Dimensions = 1;
block.InputPort(1).DirectFeedthrough = true; % 输出直接依赖输入
block.InputPort(1).SamplingMode = 'Inherited';
block.InputPort(2).Dimensions = 1;
block.InputPort(2).DirectFeedthrough = true;
block.InputPort(2).SamplingMode = 'Inherited';
% 配置输出端口
block.OutputPort(1).Dimensions = 1;
block.OutputPort(1).SamplingMode = 'Inherited';
block.OutputPort(2).Dimensions = 1;
block.OutputPort(2).SamplingMode = 'Inherited';
% 连续采样时间
block.SampleTimes = [00];
% 注册必要的方法
block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('SetInputPortSamplingMode', @SetInputPortSamplingMode);
function SetInputPortSamplingMode(block, port, mode)
% 设置输入端口和输出端口的采样模式
block.InputPort(port).SamplingMode = mode;
block.OutputPort(1).SamplingMode = mode;
block.OutputPort(2).SamplingMode = mode;
function Outputs(block)
% 计算热通量并输出
T1 = block.InputPort(1).Data;
T2 = block.InputPort(2).Data;
% 获取参数
k1 = block.DialogPrm(1).Data;
k2 = block.DialogPrm(2).Data;
R_contact = block.DialogPrm(3).Data;
radii = block.DialogPrm(4).Data;
L = block.DialogPrm(5).Data;
% 提取半径
r1 = radii(1);
r2 = radii(2);
r3 = radii(3);
% 计算热阻
R1 = log(r2/r1) / (2 * pi * k1 * L);
R2 = log(r3/r2) / (2 * pi * k2 * L);
R_total = R1 + R_contact + R2;
% 计算热通量
Q = (T1 - T2) / R_total;
% 输出到两个端口
block.OutputPort(1).Data = -Q;
block.OutputPort(2).Data = Q;
不仅如此,Deepseek还给出了很多高级功能扩展,比如解释了稳态传热公式用于瞬态仿真的方法、外半径必须大于内径的错误检查,以及动态热阻定义和瞬态求解加速等功能,非常全面。然后拿S-function的模块代替刚才的传热模型,得到的结果肯定是一模一样的,因为底层的算法逻辑是一样的,只是实现方式不同。
Deepseek等AI大模型确实厉害,不仅能总结学科背景知识,还能编出一套完整可用的程序来,其他功能也可以深度挖掘下,随着大模型的发展势必会影响各行各业。但对研发工程师来说,个人感觉如何更好地应该此类工具是个值得思考的问题,比如精细化对话需求,利用自身工程经验纠错等等。