使用MATLAB做传热学分析及后处理——CFDTool 官方例程

2023-10-26

 

目录

 

前言

1、环境配置

2、问题背景

3、传热学例程 heat_transfer3

最后:中国加油、武汉加油!!!


前言

        cfdtool (官网:https://www.cfdtool.com/)是一个MATLAB的扩展工具箱,既然看到这个CFD问题了,大家都知道CFD是做什么的了。而在MATLAB里,计算偏微分方程以前都是代码。我也是因为课题要求,电脑又有限制,装不了Ansys,所以就来搞matlab 的了。这里我也是才入门,所以就记一次学习笔记,大家互相学习。

说明:(1)适应版本:MATLAB R2009 及以上;

(2)下载地址:https://github.com/precise-simulation/cfdtool  我就不赚大家的积分了,大家下这种东西就尽量去Github上先找找,别再被CSDN的一些博主 pian(4) 积分了。

(3)目前只支持 1D ,2D 的,3D 的话大家还是用其他软件吧,或者不嫌麻烦就代码走起。

(4)这是扩展的工具包,并不是内置的,所以别直接运行命令来开启软件了。

1、环境配置

Github上直接下载 zip 就行,然后解压到你的 MATLAB 工作目录下面,这是一个比较重要的问题。我见过有些用了MATLAB很久的同学也会搞错这个东西,MATLAB如果不做修改,启动的时候一般工作目录在软件安装目录那里,你可以切换到你自己的工作目录,或者设置它的搜索目录,这样你运行 cfdtool 这个命令时才不会报错。

命令行里面输入:

>> cfdtool      % 启动当前目录下的cfdtool

 一般来说会需要你等一会,然后会弹出cfdtool 的窗口,要记得 Accept 那个界面。

2、问题背景

        其实背景我也不知道什么,做完例程自己简单总结一下:现在有一块合金板,形状如下图所示,给定合金板的尺寸参数,底板材质为钢,其密度、热容、导热系数均为已知,合金板为金属钨,其各项参数也均为已知,环境温度17摄氏度。先对金属钨顶端加热,仿真出合金板16秒内的温度情况。

3、传热学例程 heat_transfer3

例程目录:**/cfdtool-master/tutorials/03_Heat_Transfer/heat_transfer3

计算过程如下(前面有一丢丢没录到,抱歉):

步骤:

(1)点击 New Model 按钮,或者点击 File->New model... 来创建一个新的模型。

(2)根据自己的情况选择计算的维度,这里选择 2D。

(3)点击 OK 完成物理模式的选择。

(4)我们要想得到需要的形状,就要通过裁剪和添加的方式完成。首先创建一个矩形,点击 Create square/rectangle 按钮,然后点击主绘图窗口,按住鼠标左键。移动鼠标指针绘制形状,松开鼠标左键完成最终的形状。这里得到一个矩形。

(5)在几何对象选择列表框(Selection)中选择R1(单击选中,选中会变色)。 

(6)要修改和编辑所选矩形,请单击Inspect/edit selected geometry object 按钮来打开图形属性的对话框(双击区域也可以打开编辑界面,但是有个小坑,就是不要选中后再双击,而是直接双击需要编辑的区域)。

(7)在 x_min 中输入 0。

(8)在 x_max 中输入0.11。

(9)在 y_min 中输入0。

(10)在 y_max 中输入 0.12。

(11)点击 OK 按钮完成并关闭对话框。

(12)要创建一个圆或椭圆,首先单击 Create circle/ellipse 工具按钮。 然后左键在主绘图轴窗口中单击,然后按住鼠标按钮。 移动鼠标指针绘制形状。然后释放按钮以最终确定形状(随便在一个位置绘制即可,大小也随意,因为后面会修改设置)。

(13)在几何对象选择列表框中选择 E1。

(14)为了能够修改和编辑椭圆,点击 Inspect/edit selected geometry object 工具按钮打开 Edit Geometry Object 对话框。

(15)在 center 处输入 0.065 0  (这是一个二维坐标(0.065,0))。

(16)在 x_radius 输入 0.015。

(17)在 y_radius 输入 0.015。

(18)点击 OK 完成并关闭对话框。

(19)同(12),要创建一个圆或椭圆,首先单击 Create circle/ellipse 工具按钮。 然后左键在主绘图轴窗口中单击,然后按住鼠标按钮。 移动鼠标指针绘制形状。然后释放按钮以最终确定形状。

(20)在几何对象选择列表框中选择 E2。

(21)同(14)为了能够修改和编辑椭圆,点击 Inspect/edit selected geometry object 工具按钮打开 Edit Geometry Object 对话框。

(22)在 center 输入 0.11 0.12.

(23)在 x_radius 输入 0.035。

(24)在 y_radius 输入 0.035。

(25)点击 OK 完成并关闭对话框。

(26)同12,要创建一个圆或椭圆,首先单击 Create circle/ellipse 工具按钮。 然后左键在主绘图轴窗口中单击,然后按住鼠标按钮。 移动鼠标指针绘制形状。然后释放按钮以最终确定形状。

(27)在几何对象选择列表框中选择 E3。

(28)同(14)为了能够修改和编辑椭圆,点击 Inspect/edit selected geometry object 工具按钮打开 Edit Geometry Object 对话框。

(29)在 center 输入 0 0.06.

(30)在 x_radius 输入 0.025。

(31)在 y_radius 输入 0.025。

(32)点击 OK 完成并关闭对话框。

(33)在 Geometry 菜单里选择 Combine Objects...(这个在下拉菜单里面)

(34)在 Geometry Formula 编辑框里输入 R1-E1-E2-E3。意思就是把这些圆的部分从矩形中去掉。

(35)点击 OK 完成并关闭对话框。

(36)创建一个矩形,同(4),点击 Create square/rectangle 按钮,然后点击主绘图窗口,按住鼠标左键。移动鼠标指针绘制形状,松开鼠标左键完成最终的形状。这里得到一个矩形。

(37)在几何对象选择列表框中选择 R2。

(38)要修改和编辑所选矩形,请单击Inspect/edit selected geometry object 按钮来打开图形属性的对话框。

(39)在  x_min 处输入 0.065。

(40)在 x_max 处输入 0.16。

(41)在 y_min 处输入 0.05。

(42)在 y_max 处输入 0.07。

(43)点击 OK 完成并关闭对话框。

(44)同(12),要创建一个圆或椭圆,首先单击 Create circle/ellipse 工具按钮。 然后左键在主绘图轴窗口中单击,然后按住鼠标按钮。 移动鼠标指针绘制形状。然后释放按钮以最终确定形状。

(45)在几何对象选择列表框中选择 E4。

(46)同(14)为了能够修改和编辑椭圆,点击 Inspect/edit selected geometry object 工具按钮打开 Edit Geometry Object 对话框。

(47)在 center 处输入 0.065 0.06。

(48)在 x_radius 处输入 0.01。

(49)在 y_radius 处输入 0.01。

(50)点击 OK 完成并关闭对话框。

(51)在几何对象选择列表框中选择 R2 和 E4。

(52)点击 +/Add geometry objects 工具按钮。

(53)在几何对象选择列表框中选择 CJ1 。

(54)点击 Copy and/or transform selected geometry object 工具按钮。

(55)选择 Make copy of geometry object 复选框。

(56)点击 OK 完成并关闭对话框(这时,发现多了一个CJ2,它下面就是 CJ1)。

(57)在几何对象选择列表框中选择 CS3 (就是我们之前截下的那个背景)和 CJ2 。

(58)点击 - / Subtract geometry objects 工具按钮。

(59)在 Mode 工具下面选择 Grid 模式。

    默认网格可能太粗糙,无法确保准确的解决方案。减小网格大小并生成更细的网格可以更好地解决弯曲边界。

(60)在 Grid Size 编辑框输入 0.0025。

(61)点击 Generate 按钮来调用生成网格的算法(图没啥变化)。

(62)在 Mode 工具下面选择 Equation 模式。

方程和材料系数在“方程/子域”(Equation/Subdomain)模式中指定。 在方程设置对话框中; 在框中输入密度,热容量,导热系数和初始温度的系数、 材料。

(63)在“子域”(Subdomains)列表框中选择1。

(64)清除 Flow 复选框。

(65)选择 Temperature 复选框。

(66)在 Density (密度)输入 rho_tungsten。

(67)在 Heat capacity (热容) 输入 cp_tungsten。

(68)在 Thermal conductivity (导热系数) 中输入 k_tungsten。

钨(tungsten)   钢(steel)

(69)在“子域”(Subdomains)列表框中选择 2。

(70)清除 Flow 复选框。

(71)选择 Temperature 复选框。

(72)在 Density 输入 rho_steel 。

(73)在 Heat capacity (热容) 输入 cp_steel。

(74)在 Thermal conductivity (导热系数) 中输入 k_steel。

(75)点击 OK 以完成方程式和子域设置说明。

Model Constants and Expressions (模型常量和表达式功能)可用于定义和存储方便的表达式。 然后可以在点,方程,边界系数中以及作为后处理表达式使用它们; 此处用于定义材料参数。

(76)点击 Constants 工具栏按钮,或从Equation 菜单中选择相应的条目,然后在 Model Constants and Expressions 对话框中输入以下变量。 在最后一个表达式之后按 Enter 键,或使用 Add Row 按钮展开表达式列表。

Name Expression
rho_tungsten 19000
cp_tungsten 134
k_tungsten 163
rho_steel 7500
cp_steel 470
k_steel 44

 

(77)在 Mode 工具栏下选择 Boundary 。

(78)在 Boundary Settings 对话框,选择 Heat flux 为所有边界选择热通量边界条件,在编辑字段中输入 k_tungsten 和 k_steel作为每种材料对应的边界的对流传递系数,并为周围参考温度 Tinf 输入17。这里注意边界对应的系数,1~3是钨的,其余是钢的。一定要注意那个外界温度的填写方式。

(79)现在已经确定了问题,请按 Solve(解决方案模式)按钮切换到解决方案模式。 由于这是一个与时间相关的研究,因此请打开求解器设置(settings)并选择 Time-Dependent 求解器。 将 Time step(时间步长)设置为0.25,将 Simulation time(仿真时间)设置为16,将时间停止标准设置为0,然后按 slove 以启动求解过程。

(80)点击 Expression 按钮。

(81)在 Initial condition for T in subdomain 1 处输入 84。

(82)在 Initial condition for T in subdomain 2 处输入 -10 。

(83)点击 OK 完成并关闭对话框。

(84)点击 Plot Option 工具栏按钮。

(85)选择 Contour Plot 复选框。

(86)在 Number or specified vector of contour levels to plot 处输入 20.

(87)点击 Apply 以绘制并可视化所选的后处理选项。

回顾解决方案,并验证组件已冷却至大约 t = 13 s 的 70 度温度。 请注意,颜色栏和“Limits”字段都将显示最小和最大表面图值。

(88)从 Available solutions/times 下拉菜单中选择12.75。

(89)点击 OK 以绘制并可视化所选的后处理选项。

最后:中国加油、武汉加油!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用MATLAB做传热学分析及后处理——CFDTool 官方例程 的相关文章

  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 如何在Python中显示坐标网格线的变换?

    假设我有常规的笛卡尔坐标系 x y 并且我考虑一个矩形网格区域 D 分成小方块 我想看看域 D 如何在 Python 中的坐标变换 T x y gt u x y v x y 下映射 我正在寻找这样的东西 See here https mat
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 如何安全地将 CGFloat 降低或提高到 int?

    我经常需要在地板或天花板上安装CGFloat to an int 用于计算数组索引 我永远看到的问题floorf theCGFloat or ceilf theCGFloat 是浮点不准确可能会带来麻烦 那如果我的CGFloat is 2
  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • 两组数的最小公等和及组合

    我目前正在用 C 创建一个程序 该程序将查找两组数字的尽可能低的相等总和 您可以在其中根据需要多次重复这些数字 比如我有这两套 10 13 18 and 12 16 22 我能得到的最低金额是28 10 18 and 12 16 另一个例子
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • UE4如何动态修改材质(材质参数集)

    UE4如何动态修改材质 材质参数集 UE4如何动态修改材质 一 Material Parameter collection是什么 二 使用步骤 1 创建材质参数集 2 创建参数 3 添加到材质 4 动态修改材质参数集 UE4如何动态修改材质
  • linux系统编程

    fcntl 改变文件属性 include
  • Rust 交叉编译:在Windows 10 64位系统编译 32位的Rust 库

    1 添加 x86编译链接器 rustup target add i686 pc windows msvc 如果没有相应的 x86 编译环境 执行x86的编译命令 会有截图找不到crate的错误 2 编译x86版本库 继续沿用 C 调用 Ru
  • 千锋老师回忆起Hadoop大数据时代

    在大数据领域 Hadoop是一个具有重要意义的技术框架 它为处理大规模数据集提供了可靠且高效的解决方案 本文将回顾千锋老师对于Hadoop大数据时代的追忆 并通过相关的源代码展示其强大的功能 Hadoop最著名的组件之一是Hadoop分布式
  • 五年的努力!年薪达40W,Java程序员奋斗史

    金九银十 面试季刚开始不久 前几天跟朋友在一起聚会的时候提了一个问题 说Java程序员年薪如何达到40W 技术水平需要达到什么程度 有人回答说这只能是大企业或者互联网企业工程师才能拿到 也许是的 小公司或者非互联网企业拿到40W的不太可能是
  • QT 串口的监控

    QSocketNotifier 用来监听系统文件操作 将操作转换为Qt事件进入系统的消息循环队列 并调用预先设置的事件接受函数 处理事件 一共存在3类事件 read write exception QSocketNotifier Read
  • Kafka日志清除

    25条消息 Kafka日志清除策略 鸭梨山大哎的博客 CSDN博客 kafka 日志删除策略 修改server properties The minimum age of a log file to be eligible for dele
  • Faceswap安装及使用(附图文介绍,简单易上手)

    Faceswap是github上面的一个项目 可以用于实现换脸 本章分为两节 分别介绍了faceswap具体的安装步骤以及使用方法 操作简单易上手 阅读完本文觉得有用的记得点个赞奥 谢谢大家 一 faceswap安装 1 打开faceswa
  • docker “no space left on device” 解决方案

    问题原因 出现此问题一般是 docker 根目录空间不足导致 解决方案 修改 Docker Root Dir 的值 指向一个更大空间的目录 1 查看docker磁盘使用情况 docker system df 2 查看docker挂载目录 d
  • 在ubantu下安装sublime

    1添加Sublime text 3软件包的软件源sudo add apt repository ppa webupd8team sublime text 32使用以下命令更新系统软件源sudo apt get update3使用以下命令安装
  • 五、Jvm调优

    Jvm调优调什么 这个疑问必须要有 当对一个技术或者系统调优的时候 我们一定要知道去调什么 这样有一个出发点 有一个目标 不能胡乱的调对吧 那么Jvm调优 主要调以下 1 减少Full GC 2 解决OOM 3 总的来说就是 使用较小的内存
  • 【JAVA与C#比较】语言选择

    JAVA与C 是当下使用率很高的高级语言中 最为相近的两门语言 在语言特性上非常相似 其差别比起其它流行的高级编程语言 例如c object c swift 也是最小的 在版本演进中 也存在相互借签 取长补短 java 语言是1996 年发
  • MyBatisPlus 分页查询

    首先要定义一个配置类 MybatisConfig 放在 config 类下 他的生效是通过拦截生效的 所以是要写拦截器的 这段拦截器的配置是固定的 CV 也可以 Configuration public class MybatisConfi
  • 卷积神经网络CNN原理——结合实例matlab实现

    程序及数据下载链接 https download csdn net download u010540396 10839936 程序及数据下载链接 https download csdn net download u010540396 108
  • INVALID_USER_SCODE问题的解决办法

    在用高德地图API的时候 还会遇见一个为题 就是总是提示 INVALID USER SCODE 当遇见这个问题的时候 一般的问题都是 注册key之后没有十分钟就开始使用这个key值了 另外一种情况就是注册的key值有问题 应该重新注册一个k
  • 使用STM32让示波器显示图片及播放动画思路的经验分享

    到手了一块某夕夕上一百三入手的STM32F407VE的开发板 一个字 香 把玩时发现了DAC这个看起来就很有意思的功能 软件输出了正弦波三角波之后突然想起了示波器的XY模式 刚好这个芯片有一个DAC两路通道 于是便折腾了一下用XY模式显示图
  • pgbackrest 简要使用说明

    测试环境 CentOS Linux release 7 4 1708 Core X64 PostgreSQL 10 1 Source pgbackrest pgbackrest release 1 27 tar gz 1 Test Simp
  • 5.1 activiti执行监听器ExecutionListener

    1 执行监听器的使用场景 1 1 人员动态分配 节点审批人员需要在流程运行过程中动态分配 当前任务节点完成的时候 指定需要指定下一个节点的处理人 比如 一个请假流程 a员工请假 需要指定下一步需要处理请假流程的领导 1 2 任务节点调取业务
  • MongoDB文档数据库

    一 引言 MongoDB 是一个开源的文档数据库 并是领先的NoSQL数据库 MongoDB 是由C 语言编写 通过本系列教程的讲解 使得学习者可以了解并掌握创建和部署高度可扩展和高性能的面向对象数据库MongoDB概念和理解 该系列教程是
  • 使用MATLAB做传热学分析及后处理——CFDTool 官方例程

    目录 前言 1 环境配置 2 问题背景 3 传热学例程 heat transfer3 最后 中国加油 武汉加油 前言 cfdtool 官网 https www cfdtool com 是一个MATLAB的扩展工具箱 既然看到这个CFD问题了