二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本

本文主要是介绍二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

专栏导读

  • 作者简介:工学博士,高级工程师,专注于工业软件算法研究
  • 本文已收录于专栏:有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元类型包含:杆单元,梁单元,平面三角形单元,薄板单元,厚板单元,壳单元,四/六面体实体单元,金字塔单元等;3.物理场问题涉及:力学传热学电磁学多物理场耦合等问题的稳态(静力学)和瞬态(动力学)求解。专栏旨在帮助有志于有限元工业软件开发的小伙伴,快速上手有限元编程,在案例中成长,摆脱按部就班填鸭式教学
  • 所有专栏文章均提供视频教程和源码有限元编程从入门到精通30讲视频教程与源码获取地址: https://www.bilibili.com/video/BV1kP4y1d7Zo
  • 欢迎订阅专栏,订阅用户可私聊进入有限元编程交流群(知识交流、问题解答),并获赠丰厚的有限元相关学习资料教材、源码、视频课
  • 专栏订阅地址:有限元编程从入门到精通_suoge223的博客-CSDN博客

​一、案例介绍

本案例实现了下述二维三角形区域的泊松方程的Matlab有限元编程求解,边界条件包含了第一类Direchliet和第二类Neumann边界条件,采用的单元为三角形单元,具体方程形式如下图,介绍了泊松方程有限元求解基本原理,将Matlab求解的结果与Comsol求解的结果进行对比,证明了本Matlab求解程序的准确性。提供案例源码供大家练习。

你将获得:二维三角形区域的泊松方程有限元求解Matlab源码+说明文本

获取地址:二维泊松方程(三角形区域)Matlab有限元编程求解|案例源码+说明文本

二、原理说明

根据变分原理,平面三角形区域内无体力的泊松方程的泛函表达式为:

​其中,q,h,f为边界条件系数。

将求解域离散,节点u值通过形函数表示:

​采用三角形单元,在面积坐标系中,形函数为:

​将形函数表示的u值代入泛函表达式,根据泛函取极值,其一阶变分为0可得有限元方程:

​其中[K]表示整体刚度矩阵,由单元的[Ke]矩阵和[He]矩阵组装得到;[P]表示边界条件矩阵,由边界单元的[PeH]矩阵和[PeQ]矩阵组装得到,具体为:

三、程序介绍

将压缩文件解压后放入matlab运行目录,运行主函数“mian”便可得到计算结果,结果包括:

​1.域D的网格划分情况(来自于“element.txt”和“node.txt”):

​2.变量u在D域中的分布:

​3.将u在D域中的分布记录为文本文件,第一列表示x值,第二列为y值,第三列为u值。

程序的子函数共有三个,分别为:“KeCalculate.m”用于计算公式(5);“HeCalculate.m”用于计算公式(6);“PeCalculate.m”用于计算公式(7)(8)。程序中矩阵的装配对应公式(9)(10)。

边界条件数值通过三个系数q,h,f控制,程序中通过乘大数法定义BC边界条件,设置h =1e8,f=0;AB边界条件设置q=1;AC边界条件设置q=0。

具体过程在程序中都写好了注释。

四、程序计算结果和COMSOL商用有限元软件对比:

Matlab计算结果

Comsol计算结果

结果一致,可验证准确性。

这篇关于二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963345

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

poj2576(二维背包)

题意:n个人分成两组,两组人数只差小于1 , 并且体重只差最小 对于人数要求恰好装满,对于体重要求尽量多,一开始没做出来,看了下解题,按照自己的感觉写,然后a了 状态转移方程:dp[i][j] = max(dp[i][j],dp[i-1][j-c[k]]+c[k]);其中i表示人数,j表示背包容量,k表示输入的体重的 代码如下: #include<iostream>#include<

hdu2159(二维背包)

这是我的第一道二维背包题,没想到自己一下子就A了,但是代码写的比较乱,下面的代码是我有重新修改的 状态转移:dp[i][j] = max(dp[i][j], dp[i-1][j-c[z]]+v[z]); 其中dp[i][j]表示,打了i个怪物,消耗j的耐力值,所得到的最大经验值 代码如下: #include<iostream>#include<algorithm>#include<

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get