首页/文章/ 详情

用魔法打败魔法:Deepseek教我圆柱仿真

12小时前浏览6

背景

上一篇文章用simulink书写传热学分析了平板导热simulink自建库的开发,而另外一种比较重要的导热方式就是圆筒壁导热,主要应用于圆柱电芯热仿真、供热管道保温层厚度评估和圆筒结构新材料开发(真空隔热板、PCM材料)等,所以类似于amesim圆筒传热的子模型在simulink平台下也有必要开发下。

两边对流的圆筒壁换热  

圆筒壁传热单元

基于之前的热流量算法需要计算两个温度间的热阻,所以第一时间想到了最近非常火爆的Deepseek需求理论支持,得到了如下的理论公式推导,非常完整:

Deepseek给出的圆筒壁公式推导  

而热阻就是我们想要的最重要的公式,跟前篇文章一样,直接在simulink里搭建然后封装并设置相关参数定义就可以了。

圆柱传热公式Simulink封装  

若是圆筒壁包含两种材料和两种材料间的接触热阻,总热阻即是材料热阻与材料接触热阻相加。

圆筒壁两种材料传热  

案例应用

现有如下圆柱电芯散热案例,2170电芯被相变材料包裹,圆柱电芯有一定的发热量,材料四周与空气对流换热。

2170换热简图  

运用热质量块与热阻单元搭建一维模型,相变材料的比热容用随温度变化的两组数组定义就可以,模型及结果如下:

模型及结果示例  

S-function算法

当然,觉得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的模块代替刚才的传热模型,得到的结果肯定是一模一样的,因为底层的算法逻辑是一样的,只是实现方式不同。

S-function替代自定义库  

总结

Deepseek等AI大模型确实厉害,不仅能总结学科背景知识,还能编出一套完整可用的程序来,其他功能也可以深度挖掘下,随着大模型的发展势必会影响各行各业。但对研发工程师来说,个人感觉如何更好地应该此类工具是个值得思考的问题,比如精细化对话需求,利用自身工程经验纠错等等。



来源:韩工的酱油台
ACTMATLABUGUMAMESim理论材料管道
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-03-09
最近编辑:12小时前
电工韩
硕士 签名征集中
获赞 29粉丝 64文章 29课程 0
点赞
收藏
作者推荐

不是Simscape不好使,而是自建库上手更容易

Simulink Simscape仿真感受搞热仿真的工作中往往需要被控模型(plant model)与控制模型(simulink)耦合仿真,要知道simulink自带功能强大的simscape多物理场仿真库,能在同一个软件下仿真效率是最高的。 用simscape的thermal elements搭了一个简单的二段式铝管传热case,最大感觉就是simscape比较注重节点,就是把所有属性都挂在节点上(可能是我感觉不对),这样带来的一个问题如果搭建离散程度比较高的热模型会显得比较杂乱。 用多了amesim,cruiseM等基于功率键合图(Bond graph)搭建方法,显然是有点不太习惯,而且amesim热传导元件里用的最多两种材料之间导热的子模型在simscape也没找到。 Simulink自建传热库既然在simscape不太好用,那么只能通过自编算法来实现,这个对于有着强大的信号处理和逻辑运算能力的simulink来说,简直不要太easy。传热学公式基础公式算法就那么几个,可以参照传热学入门文章极简传热学,对于不同几何特征的热传导直接参考amesim的help文档就行。热质量(thermal mass)首先是热质量块的建模,热质量块是材料吸收、储存和释放热量的能力,温度变化公式为: 两边同时积分即得到 ,再加上初始温度就能得到实时温度,在simulink里可视化算法为: 将子系统进行封装,只留输入热量 和温度输出口 ,内部变量的话,也就是计算时需要输入的材料参数,定义好重量、比热容和初始温度,使用时在模块参数界面输入参数就可以。 导热(conduction)基础的导热公式为: 在simulink里算法如下图,因为涉及到换热量 的进出,所以为 和 两个输出口, 内部变量方面,需要定义导热率、两质点间距离和接触面积。两材料间导热(conduction 2 materials)其实个人用的最多的两材料间的导热,电池建模时适用性比较广: 其实,amesim的help文档已经将公式双手奉上了,就是等效热阻的表达式,顺便把接触热阻也加上去了。 simulink里的算法为: 需要定义的材料参数稍微多一些,好处是可以考虑接触内阻。 基础对流(imposed HTC)对流这块基础公式如下: 在simulink里将对流换热系数设置成定值的算法,若需要htc可变,将这个信号拉出来自己定义即可。 参数定义只有两个,换热系数htc和换热面积A。搭模型基础库建好后就可以搭建模型,与amesim最大的区别是,amesim的元件一个口包含了信息的进出,可以直接相连,而这套自建传热库温度和热量口分别连接,但是参数设置上跟amesim保持一致。最后来用自建库搭了铝管散热case,由于自建库是纯数学算法,所以运行和输出都不需要额外的转化元件,相对简洁直观一些。 模型搭完后,simulink可以在同一界面下建模和运算,非常方便,而且仿真速度也嘎嘎快。当然两个模型的结果都是一样的,只是搭建用的方法和元件的区别。有了这套基础库,个人感觉熟悉amesim热模型搭建的朋友在simulink里会更容易上手一些。文章仅代表个人观点,本人也是simulink初学,欢迎留言交流。来源:韩工的酱油台

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