第五十三篇 有限元法

有限元方法采用与有限差分完全不同的原理,即选择微分方程在解域的子区间上近似求解。这些子区域被称为“有限单元”,通常局限于简单的形状——三角形或四边形表示平面面积,四面体或六面体(“砖块”)表示体积。这些元素可能有弯曲的边(面),但通常仅限于线性边和面。
以下图为例,
等效的有限元展示在下图。

该区域被划分为16个等大小的四边形单元(在这种情况下都是正方形),有25个“节点”,相当于有限差分的“网格点”。在这种情况下,更简单的做法是将所有节点的温度视为“未知数”,即使是在边界上。一个典型的四边形单元如下图所示。
它在角上有4个节点,在单元中未知φ的变化用“形状函数”在局部坐标中描述。使用这些函数,元素的性质被描述为一个矩阵方程,将节点上的输入{q}(在这种情况下,通量等)与一般形式的输出{φ}(温度)值联系起来


其中[kc]为“传导率矩阵”。
如果元素是如下图所示的矩形,则传导率矩阵可以很容易地写成如下的闭合形式

式中kx和ky为x方向和y方向的热导率。

对于当前的例子,进一步用正方形元素(a = b)和各向同性性质(kx = ky)进行简化,得到矩阵方程

为了解决完整的边值问题,必须组装16个[kc]矩阵(包括节点上的求和),以产生一个矩阵形式的全局方程组

将25个节点温度{Φ}与25个节点净通量{Q}联系起来。净通量向量{Q}是相当稀疏的,仅在温度固定的边界节点上包含非零项。
虽然这个例子没有绝缘(无流动)边界,但如果需要的话,在有限元处理中可以自动满足这些边界。条件φ =常数是通过在线性方程组求解中的“罚”方法来执行的。

程序如下

对之前有限差分的计算实例1进行有限元分析

import numpy as np
import B
g_num=np.zeros((4,16),dtype=np.int64)
kdiag=np.zeros((25),dtype=np.int64)
num=np.zeros((4),dtype=np.int64)
kc=np.zeros((4,4))
loads=np.zeros((25))
print('简单的有限元分析')
kc[0,:]=(4.0,-1.0,-2.0,-1.0)
kc[1,:]=(-1.0,4.0,-1.0,-2.0)
kc[2,:]=(-2.0,-1.0,4.0,-1.0)
kc[3,:]=(-1.0,-2.0,-1.0,4.0)
kc[:]=kc[:]/6.0
def geometry(iel):geometry=np.zeros((4))iq=(iel-1)//4+1;ip=iel-(iq-1)*4geometry[:]=(iq*5+ip,(iq-1)*5+ip,(iq-1)*5+ip+1,iq*5+ip+1)return geometry
for iel in range(1,16):num[:]=geometry(iel)g_num[:,iel-1]=num[:]B.fkdiag(kdiag,num)
for i in range(2,26):kdiag[i-1]=kdiag[i-1]+kdiag[i-2]
kv=np.zeros((kdiag[24]))
for iel in range(1,16):num=g_num[:,iel-1];B.fsparv(kv,kc,num,kdiag)
kv[kdiag[0:4]-1]=kv[kdiag[0:4]-1]+1e20
loads[0:4]=kv[kdiag[0:4]-1]*50.0
kv[kdiag[5:16:5]-1]=kv[kdiag[5:16:5]-1]+1e20
loads[5:16:5]=kv[kdiag[5:16:5]-1]*50.0
kv[kdiag[9:20:5]-1]=kv[kdiag[9:20:5]-1]+1e20
kv[kdiag[21:24]-1]=kv[kdiag[21:24]-1]+1e20
B.sparin(kv,kdiag);B.spabac(kv,loads,kdiag)
print('节点  温度')
for i in range(1,26):print(i,end='  ')print('{:9.4e}'.format(loads[i-1]))

对于节点5和21,选择了预先不设置边界值的情况
终端输出结果如下:

第一大块全部结束。

简单的有限元分析(python)相关推荐

  1. python简单编程-编程中最简单的语言Python,这样学或许更容易

    最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...

  2. python与excel表格-超简单:用Python让Excel飞起来

    超简单:用Python让Excel飞起来 作者:王秀文;郭明鑫;王宇韬 编著 出版日期:2020年07月 文件大小:20.30M 支持设备: ¥45.00在线试读 适用客户端: 言商书局 iPad/i ...

  3. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

  4. 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...

    简介 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块. 举个例子: ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘 ...

  5. python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...

    Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到 发表时间:2020-08-20 当传入多个值时,需要使用split()函数来切割 ...

  6. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  7. python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)

    反驳下Pythoner说的简单 之前很多人都说Python用起来简单,我的第一感觉就是胡扯,现在我稍微学了一点,更加坚信了那是胡扯. 当然Python在很小很小的项目里面可能是简单,例如Python写 ...

  8. 十、简单线性回归的python实现(详解)

    4. 简单线性回归的python实现 点击标题即可获取源代码和笔记 4.1 导入相关包 import numpy as np import pandas as pd import random imp ...

  9. python函数后面两个括号_简单了解为什么python函数后有多个括号

    这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一般而言,函数后面只有一个括号.如果看见 ...

最新文章

  1. 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】
  2. linux下ip冲突检测 arp
  3. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
  4. Oracle_Net_Configuration_Assistant_配置步骤
  5. linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
  6. Redis的基本操作二
  7. 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
  8. mysql重置root密码方法
  9. 2、Android构建本地单元测试
  10. c++11 数值类型和字符串的相互转换
  11. 栈的效率为什么比堆高?为什么栈的运行速度比堆快?
  12. Django发送邮件
  13. Linux系统定时任务Crond
  14. 物联网还是泄秘网?嗅探流量即可知用户动向
  15. 中英文对照 —— 哲学
  16. Markdown-Latex全称量词和存在量词(对于全体、存在)
  17. matlab车标识别,MATLAB车辆标识识别技术研究
  18. Google Earth Pro软件无法登录,打开为黑色
  19. cocos2d-x屏幕适配原理
  20. Placing Lampposts

热门文章

  1. win98 支持html5,穿越1999:如何装一台Win98时代的PC
  2. Mongodb数据库教程
  3. RK3399平台开发系列讲解(UART子系统)4.47、UART子系统详解
  4. 软件研发费用怎么算? 如何报价? 是否贵了?
  5. C语言-volatile关键字
  6. python实现图像添加噪声、噪声处理、滤波器代码实现
  7. IDEA中使用Junit4进行测试的入门配置
  8. FTP 传送文件到远程服务器
  9. Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。
  10. STM8S103 105唯一序列码的读取