简单的有限元分析(python)
第五十三篇 有限元法
有限元方法采用与有限差分完全不同的原理,即选择微分方程在解域的子区间上近似求解。这些子区域被称为“有限单元”,通常局限于简单的形状——三角形或四边形表示平面面积,四面体或六面体(“砖块”)表示体积。这些元素可能有弯曲的边(面),但通常仅限于线性边和面。
以下图为例,
等效的有限元展示在下图。
该区域被划分为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)相关推荐
- python简单编程-编程中最简单的语言Python,这样学或许更容易
最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...
- python与excel表格-超简单:用Python让Excel飞起来
超简单:用Python让Excel飞起来 作者:王秀文;郭明鑫;王宇韬 编著 出版日期:2020年07月 文件大小:20.30M 支持设备: ¥45.00在线试读 适用客户端: 言商书局 iPad/i ...
- 如何简单地理解Python中的if __name__ == '__main__'
如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...
- 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块...
简介 一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块. 举个例子: ["徐汇区虹漕路461号58号楼5楼", "泉州市洛江区万安塘 ...
- python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...
Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到 发表时间:2020-08-20 当传入多个值时,需要使用split()函数来切割 ...
- python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...
简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...
- python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)
反驳下Pythoner说的简单 之前很多人都说Python用起来简单,我的第一感觉就是胡扯,现在我稍微学了一点,更加坚信了那是胡扯. 当然Python在很小很小的项目里面可能是简单,例如Python写 ...
- 十、简单线性回归的python实现(详解)
4. 简单线性回归的python实现 点击标题即可获取源代码和笔记 4.1 导入相关包 import numpy as np import pandas as pd import random imp ...
- python函数后面两个括号_简单了解为什么python函数后有多个括号
这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一般而言,函数后面只有一个括号.如果看见 ...
最新文章
- 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】
- linux下ip冲突检测 arp
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
- Oracle_Net_Configuration_Assistant_配置步骤
- linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
- Redis的基本操作二
- 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
- mysql重置root密码方法
- 2、Android构建本地单元测试
- c++11 数值类型和字符串的相互转换
- 栈的效率为什么比堆高?为什么栈的运行速度比堆快?
- Django发送邮件
- Linux系统定时任务Crond
- 物联网还是泄秘网?嗅探流量即可知用户动向
- 中英文对照 —— 哲学
- Markdown-Latex全称量词和存在量词(对于全体、存在)
- matlab车标识别,MATLAB车辆标识识别技术研究
- Google Earth Pro软件无法登录,打开为黑色
- cocos2d-x屏幕适配原理
- Placing Lampposts