python有限元传热求解_二维稳态热传导基本方程的有限元求解(2)
四节点矩形单元
在二维稳态热传导基本方程的有限元求解(1)这篇文章中,我们仅仅给出了有限元单元方程的一种比较标准的推导步骤,并未涉及某种具体的单元。且在式(20)中,单元
上温度
的近似函数表示成节点温度的函数,但是对于具体的一个单元,该如何推导出用节点函数值表达的近似函数呢?接下来以四节点矩形单元为例,并利用Python的Sympy库进行说明。
四节点矩形单元以及节点布置如下图所示。
四节点矩形单元
该单元内的插值函数模式为:
对于现在的情况,单元内的函数值是坐标
,
的双线性函数,
~
为待定系数,称之为广义坐标。将4个节点坐标分别代入式(
)中可得到在相应节点的函数值,用矩阵表示为:
可利用Python的SymPy库来求解
~
,代码如下:
import sympy as sym
a, b = sym.symbols("a, b")
M = sym.Matrix([[1, -a, -b, a*b], [1, a, -b, -a*b],
[1, a, b, a*b], [1, -a, b, -a*b]])
T1, T2, T3, T4 = sym.symbols("T_1, T_2, T_3, T_4")
b = sym.Matrix([T1, T2, T3, T4])
a = M.LUsolve(b)
for i in range(0, len(a)):
a[i] = a[i].together()
x, y = sym.symbols("x, y")
T = a[0] + a[1]*x + a[2]*y + a[3]*x*y
T
执行上述代码后[^1],得到的结果为:
将式(
)用节点值表示,则可以得到:
其中
~
为形函数,分别为:
读者也可查阅文献[^2][^3]提供的用张量乘的方式推导上式,而不涉及繁琐的计算过程。式(
)也可以通过Python的SymPy库来求解,代码如下:
a, b = sym.symbols("a, b")
M = sym.Matrix([[1, -a, -b, a*b], [1, a, -b, -a*b],
[1, a, b, a*b], [1, -a, b, -a*b]])
T1, T2, T3, T4 = sym.symbols("T_1, T_2, T_3, T_4")
b = sym.Matrix([T1, T2, T3, T4])
a = M.LUsolve(b)
for i in range(0, len(a)):
a[i] = a[i].together()
x, y = sym.symbols("x, y")
T = a[0] + a[1]*x + a[2]*y + a[3]*x*y
T = T.expand()
T = T.collect([T1, T2, T3, T4])
T
执行上述代码后[^1],得到的结果为:
稍加整理式(
),便可得到式(
)。此外,式(
)也可以表示为:
有了式(
),就可以带入到式(
)中,得到单元矩阵
的表达式。为简便,这里假设热传导张量
的分量的矩阵表达为:
同样我们可以借助Sympy来计算
,代码如下:
import sympy as sym
a, b, x, y = sym.symbols("a, b, x, y")
B = sym.Matrix([[-(b-y)/(4*a*b), (b-y)/(4*a*b), (b+y)/(4*a*b), -(b+y)/(4*a*b)],
[-(a-x)/(4*a*b), -(a+x)/(4*a*b), (a+x)/(4*a*b), (a-x)/(4*a*b)]])
dx, dy = sym.symbols("d_x, d_y")
D = sym.Matrix([[dx, 0],
[ 0, dy]])
B_TDB = B.transpose()*D*B
K_e = sym.Matrix(4, 4, lambda m, n: 0)
for i in range(0, len(B_TDB)):
K_e[i] = sym.integrate(B_TDB[i], (x, -a, a), (y, -b, b))
K_e[i] = K_e[i].simplify()
K_e
执行上述代码后得到[^1]:
文献[^4]也同样求解可该单元矩阵的表达式(见下图),可与式
进行比较(注意
,
)。
单元矩阵的表达式
从式(
)可以看出,如果不借助符号计算系统,是很难通过手算得到单元矩阵的表达式。何况,四节点矩形单元不能适应复杂的几何形状。因此,在实际使用有限元中,更多的还是要利用数值积分和等参元这两种工具,这将在后续的文章中介绍。
[^1]: 这里是在Jupyter Notebook或JupyterLab中执行
[^2]: Jacob Fish, Ted Belytschko. A First Course in Finite Elements. 2007, P161-P163.
[^3]: Young W.Hwon, Hyochoong Bang. The Finite Element Method Using MATLAB(2nd) [M]. 2000, P90-P91.
[^4]: M.Asghar Bhatti. Fundamental Finite Element Analysis and Applications: with Mathematica and Matlab Computations[M]. 2005, P332.
python有限元传热求解_二维稳态热传导基本方程的有限元求解(2)相关推荐
- 二维稳态热传导基本方程的有限元方程
二维稳态热传导基本方程的有限元方程 - 知乎 二维稳态热传导基本方程的有限元求解(2) - 知乎 关于学习拉格朗日矩形单元和serendipity四边形单元形函数的构造方法 - 知乎 CFD理论学习- ...
- c语言求解热传导方程,二维稳态导热问题的数值解法.docx
核科学与技术学院 <传热学> 二维稳态导热问题的 数值解法作业 姓名:罗晓 学号: 2014151214 班级:任课教师:李磊,张智刚 哈尔滨工程大学 核科学与技术学院 2016 年 11 ...
- 【Comsol学习】二维稳态热传导问题
问题分析 根据comsol例程,问题给出条件如下 稳态建模仿真 选择二维稳态研究,选择固体传热物理场,开始设定各类条件 几何条件 根据问题描述构建几何模型 物理条件 按照问题描述,为矩形设置其热导率等 ...
- 二维稳态热传导 代码实现_常用振动激励方式:稳态正弦 、瞬态和随机激振
在测量机械设备或结构的振动力学参量或动态性能,如固有频率.阻尼.刚度.响应和模态等时,需要对被测对象施加一定的外力,让其作受迫振动或自由振动,以便获得相应的激励及其响应.激励方式通常可以分为稳态正弦激 ...
- 二维稳态热传导 代码实现_博世壁挂炉发生故障代码及处理办法
博世bosch是来自德国的知名壁挂炉品牌,由于其出色的工艺技术,故障在同类产品中属于较低一类,国内业主普遍反映较好.那么,假如我们家里的博世燃气壁挂炉出现故障代码时,该如何解决呢?这里为大家就博世壁挂 ...
- comsol官方案例学习——2、二维稳态导热
二维稳态热传导 模型定义 解析解 建模仿真 几何条件 边界条件 物理条件 划分网格 计算 分析比较 模型定义 设定了一个宽和高分别为 0.6 m 和 1.0 m 的矩形域.边界条件: • 左边界为绝缘 ...
- 二维稳态对流扩散问题,无源项,QUICK格式,四周边界定壁温的Python程序
二维稳态对流扩散,QUICK格式 原理 模型 四面为定壁温
- MATLAB实现二维稳态导热
MATLAB实现二维稳态导热 一.理论基础 二.代码实现 一.理论基础 步骤: Step.1 二维模型传热控制微分方程的确定,具体推导可以在任何一本传热学的书中找到. d 2 T d x 2 + d ...
- python实现归一化去噪_二维FFT的归一化处理
首先,需要注意的是,这个问题与1D和2D fft之间的差异无关,而是与总功率和平均功率如何随阵列中元素的数量而变化有关.在 当您说9的因子来自a中的元素比b中的元素多9倍时,您说得非常正确.令人困惑的 ...
最新文章
- 70亿美金!英伟达欲竞购这家以色列芯片公司!
- Oracle中数据导出成CVS,EXCEL
- VirtraulBox中安装Ubuntu16.04
- oracle for函数,oracle分区表述的FOR语句(一)
- 一张图带你了解 Insider Dev Tour 2019中国技术大会
- oracle中exp/imp讲解
- jQuery源码解析(2)—— Callback、Deferred异步编程
- Navicat PatchNavicat
- python selenium爬虫代码示例_python3通过selenium爬虫获取到dj商品的实例代码
- G-SYNC技术是什么
- 多台云服务器中Redis的主从复制
- python黑网站_python
- 单电路板双W5500驱动代码,基于WIZnet官方驱动修改,STM32H743/H750
- 串口助手是怎么做出来的 :第一节,串口助手界面的实现及串口通信原理的介绍
- c语言关于多边形的所有算法,教你如何在C语言中进行点在多边形内算法
- Flutter使用系统相机和相册获取图片
- nginx代理邮件服务
- python Numpy模块汇总(字母排序) 备注:内容很多,用control/command(Mac系统)+ F可以在网页内关键词查找,希望你能找到想要的内容
- Android学习之——操作SIM卡联系人
- 如何推动区块链与物联网深度融合,赋能数字化转型?
热门文章
- 鸿蒙系统非手机用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- 理解 Generator 的执行
- 第 14 章 结构和其他数据形式(names)
- Photoshop: 机关单位公章
- Exchange2007获取OWA邮箱容量的代码
- rust大油田分解机_辽河油田曙光采油厂:智慧党建建强战斗堡垒
- OpenGL ES与EGL的关系(二十一)
- Ubuntu18.04安装微信(可用)
- Ubuntu14.04开启wifi热点(亲测有效)
- odex vdex art区别