知行编程网知行编程网  2022-03-08 07:00 知行编程网 隐藏边栏 |   抢沙发  108 
文章评分 0 次,平均分 0.0

这是菜鸟学Python的粉丝第8篇原创投稿

阅读本文大概需要3.5 分钟

本篇作者:小匡同学


    作为科研 goMATLAB 一直是做数值计算的标配。然而目前 Python 的火爆程度、 丰富的第三方库、灵活便捷的编程方式,也让科研 go 们垂涎不已。本篇文章从NHT(数值传热学)的基本原理与 Python 代码实现两个方面带领 NHT 小白入坑, 老司机自动略过


要点:

  • 工具 Pycharm 

  • 第三方库为 Numpy matplotlib 

  • Py3


01

开发环境准备


1).Python 用于科学计算

要先安装第三方的科学计算库,这里我们主要做数值计算,Numpy就可以啦。数值计算结果需要以图形曲线的形式输出,在 Pythonmatplotlib 库可用于绘制类似于 MATLAB 的图表


2).对于习惯了 MATLAB 编程的人员来说

MATLAB 安装的时候直接安装了 所有库,非常便捷。然而Python 的所有库都需要自己安装


3).可以安装 Anaconda

它基本包括了市面上所有常用库,然后将 pycharm的解释器修改为 anaconda 的解释器,相当于 MATLAB 了。由于安装的库多,相 应的软件的启动运行都非常慢,想想 MATLAB 启动就知道了


4).第三方库的安装

对于新手比较麻烦。这里推荐一种简单的方法。 在 FileSettingsProject Interpreter 中,可以看到已安装的库 

用 Python 做导热问题的数值计算


右边红框中,减号表示卸载选中的库,箭头表示升级库,如果要安装新库,

则选择加号

用 Python 做导热问题的数值计算


在上方可以在线搜索所需要的库,右下角可以选择版本,点击安装就可以在 线安装库。全程傻瓜式操作,方便快捷!


02

导热问题分析


1).金属导热问题

假设一根等截面的直金属棒,长度 2m,受到内热源加热,线热流密度为1000W/m,金属棒两端为定壁温边界,温度 300K。稳态导热下,温度分布满足 如下的控制方程。

用 Python 做导热问题的数值计算2).如果将坐标原点选择在金属棒的中心,则本问题的解析解为:

用 Python 做导热问题的数值计算

3).在数值传热学的计算中

需要在金属棒上划分网格节点,本例中我们在金属 棒上均匀布置 n 个节点,考虑到两端各需要一个节点,因此金属棒实际被分成了n-1 段微元。这 n 各节点上的温度值组成了一个一维数组,因此可以用一个一维 数组保存各节点的温度信息

用 Python 做导热问题的数值计算


  • 有了这个离散方程,基本就可以开始进行数值计算中最常用的迭代计算了。 然而还需要一个判断迭代结束的条件,在 CFD/NHT 中,叫做收敛准则

  • 事实上 数值计算的基本原理就是通过设计好的算法不断迭代,从而构建一个柯西列,如 果这个数列依范数收敛了,则可以认为它收敛于真实解。

  • 依范数收敛可以简单的 认为就是相邻两次迭代之差的范数(12,无穷范数都可)趋于 0,就可以认为 收敛。

因此内存中要始终保持两个一维数组,一个保存当前迭代得到的温度值, 一个是上一次迭代得到的温度值。最后,完整的程序代码如下:

 

用 Python 做导热问题的数值计算

迭代结果如下 :

用 Python 做导热问题的数值计算


  • 多次迭代结果都是在 300K 附近,迭代似乎没有进行就结束了。事实上,观 察第 14 行,是将当前的温度数组赋值给上一步的温度数组,然后迭代计算更新 当前的温度数组

  • 这个过程中,出现了数组的拷贝操作,不同于 MATLAB,在Python 中数组的拷贝并不是创建一个新数组,而只是将新的数组名指向原数组在 内存中的地址

  • 这样做的结果就是 temp temp_up 在内存中其实是存储了相同的数据,二者同步改变,二者之差的范数因此始终是 0,程序认为迭代已收敛, 直接跳出了 


4).多次迭代的结果

迭代10次

用 Python 做导热问题的数值计算

数值结果在不断趋近于解析结果


迭代 200次

用 Python 做导热问题的数值计算

数值结果与解析结果已经完全重合,计算完成。
熟悉 MATLAB 的同学可能发现,Python 绘图与 MATLAB 十分类似,不仅是操作代码近似,图片风格也一样。这是因为 matplotlib 库的开发初衷就是为了 像 MATLAB 那样方便快捷的绘制图形曲线


03

关于Pycharm断点调试


1).首先设置断点

然后 alt+shift+F9,进入调试模式。注意这里需要键盘操作。直接点击 pycharm界面的 debug 按钮,无法进行下一步的操作。 进入调试后,从下面的 debugger进入 console 界面 

用 Python 做导热问题的数值计算


2).点击那个“show Python prompt”按钮 

用 Python 做导热问题的数值计算


3).就可以在 console 中输入想要查看的变量的数值了

比如本例中的 xxline 存储的 是所有网格节点的 x 坐标,是个一维数组 

用 Python 做导热问题的数值计算




欢迎大家关注 菜鸟学Python",更多好玩有趣的Python原创教程,趣味算法,经验技巧,行业动态,尽在菜鸟学Python,一起来学python吧


 长按二维码,关注【菜鸟学python】


本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享