有限元法之有限元空间的构造

news2024/9/20 0:18:09

目录

一、区域Ω的剖分

二、三角形一次元

三、一次元的基函数与面积坐标

四、三角形二次元及其基函数


        前两节我们介绍了有限元基本概念和变分理论的推导,本节我们继续探讨有限元空间的构造。 

一、区域Ω的剖分

        对矩形区域\Omega =[x_{a},x_{b}]\times [y_{c},y_{d}]进行三角剖分,其中x方向剖分m份,y方向剖分n份,共得到(m+1)(n+1)个节点及2mn个三角形单元。图1是m=5,n=4的剖分情况,节点编号用数字表示,单元用带圈的数字表示。为了实现后面的程序编写,必须明确单元上的局部编号与整体编号,如图2所示。通过设置剖分数,可以建立单元上整体编号与局部编号之间的关系,可设置二维数组lnd[\;][\;],第一个参数为单元编号,第二个参数为局部节点编号,如lnd[3][0]=8等,表示第3个单元第0号局部节点的整体节点编号为8,而lnd[2][1]=2则表示第2个单元第1号局部节点的整体节点编号为2。可以通过循环设置所有的节点。

图1 三角形剖分

图2 三角形单元的整体编号i,j,k与局部编号0,1,2

二、三角形一次元

        前面两节提到,可以选取V_{h}\subset V=H^{1}_{0}(\Omega)为分片连续的一次多项式函数空间,也就是在每个单元e上,V_{h}中的函数都是一次多项式,且要保证整体连续。因此对于相邻的两个三角形单元,它们有一条公共边,只要保证分片一次多项式在这条公共边的两个端点(也是剖分节点)处函数值相同即可保证函数整体连续。这样,分片一次多项式在每个单元上的表达式就可以由它在3个顶点处的值唯一确定。下面,在节点P_{i},P_{j},P_{k}(对应整体编号为i,j,k)的单元e上考虑数值解u_{h}的表达式,尝试用基函数来表示u_{h}(x,y)|_{e}=u_{i}\lambda _{0}(x,y)+u_{j}\lambda _{1}(x,y)+u_{k}\lambda _{2}(x,y),其中\lambda_{0},\lambda_{1},\lambda_{2}为待定基函数,满足以下性质:

\lambda_{0}(P_{i})=1,\lambda_{0}(P_{j})=0,\lambda_{0}(P_{k})=0 \;\;\;\;\; (1)

\lambda_{1}(P_{i})=0,\lambda_{1}(P_{j})=1,\lambda_{1}(P_{k})=0 \;\;\;\;\; (2)

\lambda_{2}(P_{i})=0,\lambda_{2}(P_{j})=0,\lambda_{2}(P_{k})=1 \;\;\;\;\; (3)

且它们都是一次函数。这样,数值解u_{h}在单元e上的表达式完全由它在3个顶点处P_{i},P_{j},P_{k}处的值u_{i},u_{j},u_{k}决定,u_{i},u_{j},u_{k}可以看作精确解u在整体编号i,j,k的节点处的近似。一旦把所有u_{i},i=0,1,\cdots,(m+1)(n+1)-1求出来(边界点除外,因为u_{h}\in V_{h}从而边界节点处u_{h}的值为零),则数值解u_{h}的表达式也就确定了。所以现在的基本问题是对离散问题式

u_{h}(x,y)\in V_{h},使得a(u_{h},v_{h})=(f,v_{h})\;\;\;\;\forall v_{h}(x,y)\in V_{h}

建立u_{i},i=0,1,\cdots,(m+1)(n+1)-1的关系式。

三、一次元的基函数与面积坐标

        由于基函数在单元e上是一次多项式,尝试设\lambda_{0}(x,y)|_{e}=ax+by+c,其中a,b,c为待定系数,且单元e上s号节点P_{s}的坐标为(x_{s},y_{s}),s=i,j,k,则由条件公式(1)可知:

\left\{\begin{matrix} ax_{i}+by_{i}+c=1,\\ ax_{j}+by_{j}+c=0,\\ ax_{k}+by_{k}+c=0, \end{matrix}\right.\;\;is\begin{pmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{pmatrix}\begin{pmatrix} a\\ b\\ c \end{pmatrix}=\begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix}

从而解出

a=\frac{\begin{vmatrix} 1 & y_{i} & 1\\ 0 & y_{j} & 1\\ 0 & y_{k} & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}=\frac{y_{j}-y_{k}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}                b=\frac{\begin{vmatrix} x_{i} & 1 & 1\\ x_{j} & 0 & 1\\ x_{k} & 0 & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}=\frac{x_{k}-x_{j}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}

c=\frac{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 0\\ x_{k} & y_{k} & 0 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}=\frac{x_{j}y_{k}-x_{k}y_{j}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}

代入可得

\lambda_{0}(x,y)|_{e}=\frac{x(y_{j}-y_{k})+y(x_{k}-x_{j})+(x_{j}y_{k}-x_{k}y_{j})}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}=\frac{\begin{vmatrix} x & y & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} &y_{k} &1 \end{vmatrix}}

可以证明以P_{i},P_{j},P_{k}(逆时针排列)为顶点的三角形单元e的面积S_{e}=\frac{1}{2}\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}

        于是,若\Delta P_{i}P_{j}P_{k}内有一点P的坐标为(x,y),如图3所示,则

\lambda_{0}(x,y)|_{e}=\frac{\begin{vmatrix} x & y & 1\\ x_{j} & y_{j} & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} &y_{k} &1 \end{vmatrix}}=\frac{2S_{\Delta PP_{j}P_{k}}}{2S_{\Delta P_{i}P_{j}P_{k}}}=\frac{S_{\Delta PP_{j}P_{k}}}{S_{e}}\;\;\;(4)

图3 三角形单元

 同理,

\lambda_{1}(x,y)|_{e}=\frac{\begin{vmatrix} x_{i} & y_{i} & 1\\ x & y & 1\\ x_{k} & y_{k} & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} &y_{k} &1 \end{vmatrix}}=\frac{S_{\Delta P_{i}PP_{k}}}{S_{e}},\lambda_{2}(x,y)|_{e}=\frac{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x & y & 1 \end{vmatrix}}{\begin{vmatrix} x_{i} & y_{i} & 1\\ x_{j} & y_{j} & 1\\ x_{k} &y_{k} &1 \end{vmatrix}}=\frac{S_{\Delta P_{i}P_{j}P}}{S_{e}}\;\;\;(5)

注意到S_{e}=S_{\Delta P_{i}P_{j}P_{k}}=S_{\Delta PP_{j}P_{k}}+S_{\Delta P_{i}PP_{k}}+S_{\Delta P_{i}P_{j}P},显然有

\lambda_{0}+\lambda_{1}+\lambda_{2}=1\;\;\;\;(6)

也就是说\lambda_{0},\lambda_{1},\lambda_{2}不是相互独立的。换言之,\Delta P_{i}P_{j}P_{k}内任一点P(x,y),必然可以唯一对应一组坐标(\lambda_{0},\lambda_{1}),基函数\lambda_{0},\lambda_{1},\lambda_{2}被称为重心坐标。由于它们又都是三角形的面积比,所以它们也称为面积坐标。面积坐标在有限元分析中非常重要,它是从一般单元变化到标准单元的工具,也是进行Sobolev空间范数估计的有效手段。事实上,公式(4)、(5)可以反解出直角坐标(x,y)与重心坐标之间的对应关系式:

\left\{\begin{matrix} x=x_{i}\lambda_{0}+x_{j}\lambda_{1}+x_{k}\lambda_{2}\\ y=y_{i}\lambda_{0}+y_{j}\lambda_{1}+y_{k}\lambda_{2} \end{matrix}\right.\;\;\;\; or\;\;\;\left\{\begin{matrix} x=(x_{i}-x_{k})\lambda_{0}+(x_{j}-x_{k})\lambda_{1}+x_{k}\\ y=(y_{i}-y_{k})\lambda_{0}+(y_{j}-y_{k})\lambda_{1}+y_{k} \end{matrix}\right.\;\;\;(7)

从而可以实现将一般的三角形单元\Delta P_{i}P_{j}P_{k}变换成标准单元\widehat{e},如图4所示。

图4 利用仿射坐标变换从一般单元变到标准单元

四、三角形二次元及其基函数

        我们除了可以选取V_{h}为分片连续的一次多项式函数空间外,也可以选取V_{h}为分片连续的二次多项式函数空间,也就是在每个单元e上,V_{h}中的函数都是二次多项式,且要保证整体连续。因此在每个单元e上,V_{h}中的分片二次多项式函数v(x,y)就形如v|_{e}=Ax^{2}+Bxy+Cy^{2}+Dx+Ey+F,其中A,B,C,D,E,F均为待定常数,从而需要有6个条件来唯一确定这个表达式。与一次元相似,要确定这6个常数,我们可以取三角形单元e的3个顶点及3条边的中点值作为条件(这些条件称为自由度),即分片二次多项式在每个单元上的表达式就可以由它在这个单元3个顶点和3条边的中点处的值唯一确定,这样也可以保证函数的整体连续性。事实上,在相邻的两个三角形单元上的公共边上,位置变量x和y有一个直线方程的线性约束,从而v(x,y)在这条边上成为一个只关于自变量x的二次函数,这个函数在3个不同的点(两个顶点和一个中点)上取值相同,说明v(x,y)在公共边上的表达式所示唯一确定的,也就是说,这个分片二次多项式在相邻两个单元上虽然整体表达式不相同,但在其公共边上表达式相同,这就保证了函数在\Omega上整体连续,从而实现V_{h}\subset V=H^{1}_{0}(\Omega)

        对于以上的三角形二次元,由于涉及到三角形单元的中点,所以尽管三角形剖分情况不变,即共有2mn个三角形单元,但整体节点数变为(2m+1)(2n+1)个,且节点的编号将随之发生改变。例如,图1将变为图5。

图5 三角形剖分及二次元节点图(各顶点也包含在内)

        接下来,在单元e上考虑数值解u_{h}\in V_{h}的表达式,其中e的3个顶点为P_{i},P_{j},P_{k}(对应整体编号为i,j,k),3条边的中点为P_{jk},P_{ki},P_{ij}(对应整体编号为\frac{j+k}{2},\frac{k+i}{2},\frac{i+j}{2}),如图6。

图6 三角形二次元

        u_{h}在单元e上的表达式尝试用基函数表示为

u_{h}(x,y)|_{e}=u_{i}\varphi_{0}(x,y)+u_{j}\varphi_{1}(x,y)+u_{k}\varphi_{2}(x,y)+u_{jk}\Psi_{0}(x,y)+u_{ki}\Psi_{1}(x,y)+u_{ij}\Psi_{2}(x,y)

其中\varphi_{0},\varphi_{1},\varphi_{2},\Psi_{0},\Psi_{1},\Psi_{2}为待定基函数,满足以下性质:

\varphi_{0}(P_{i})=1,\varphi_{0}(P_{j})=0,\varphi_{0}(P_{k})=0,\varphi_{0}(P_{jk})=0,\varphi_{0}(P_{ki})=0,\varphi_{0}(P_{ij})=0,

\varphi_{1}(P_{i})=0,\varphi_{1}(P_{j})=1,\varphi_{1}(P_{k})=0,\varphi_{1}(P_{jk})=0,\varphi_{1}(P_{ki})=0,\varphi_{1}(P_{ij})=0,

\varphi_{2}(P_{i})=0,\varphi_{2}(P_{j})=0,\varphi_{2}(P_{k})=1,\varphi_{2}(P_{jk})=0,\varphi_{2}(P_{ki})=0,\varphi_{2}(P_{ij})=0,

\Psi_{0}(P_{i})=0,\Psi_{0}(P_{j})=0,\Psi_{0}(P_{k})=0,\Psi_{0}(P_{jk})=1,\Psi_{0}(P_{ki})=0,\Psi_{0}(P_{ij})=0,

\Psi_{1}(P_{i})=0,\Psi_{1}(P_{j})=0,\Psi_{1}(P_{k})=0,\Psi_{1}(P_{jk})=1,\Psi_{1}(P_{ki})=1,\Psi_{1}(P_{ij})=0,

\Psi_{2}(P_{i})=0,\Psi_{2}(P_{j})=0,\Psi_{2}(P_{k})=0,\Psi_{2}(P_{jk})=1,\Psi_{2}(P_{ki})=0,\Psi_{2}(P_{ij})=1. 

        利用重心坐标,很容易将上述基函数表示出来,即有分别对应于三角形单元3个顶点P_{i},P_{j},P_{k}的基函数:

\varphi_{0}(x,y)=\lambda_{0}(2\lambda_{0}-1),\varphi_{1}(x,y)=\lambda_{1}(2\lambda_{1}-1),\varphi_{2}(x,y)=\lambda_{2}(2\lambda_{2}-1)

及对应于三角形3条边中点P_{jk},P_{ki},P_{ij}的 基函数:

\Psi_{0}=4\lambda_{1}\lambda_{2},\Psi_{1}=4\lambda_{2}\lambda_{0},\Psi_{2}=4\lambda_{0}\lambda_{1}

至此,数值解 u_{h}在单元e上的表达式就确定为:

u_{h}(x,y)|_{e}=u_{i}\lambda_{0}(2\lambda_{0}-1)+u_{j}\lambda_{1}(2\lambda_{1}-1)+u_{k}\lambda_{2}(2\lambda_{2}-1)+4u_{jk}\lambda_{1}\lambda_{2}+4u_{ki}\lambda_{2}\lambda_{0}+4u_{ij}\lambda_{0}\lambda_{1}

        综上,有限元空间X_{h}由一个三元组(e,V_{h},\sum)确定。具体的,设\tau_{h}是区域Ω的一个剖分,e是剖分\tau_{h}中的单元,参数h定义为所有单元的最大直径,即h=\underset{e\in\tau_{h}}{max}(diam(e))V_{h}是选定的分片多项式函数空间,\sum是每个e上用于唯一确定V_{h}内的多项式函数所需要的条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1703778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1: 示例2: 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

C++ 程序的基本要素

一 标识符 程序中变量、类型、函数和标号的名称称标识符。 a,b,name,int,char,main,void等。 系统已有的标识符称为关键字。 常见关键字 using,namespace,void,return; int,float,double,char,bool,signed,unsignex, long,short,const,true,false,sizeof if,else,for,do,whil…

基于STM32实现智能空气净化系统

目录 引言环境准备智能空气净化系统基础代码示例:实现智能空气净化系统 空气质量传感器数据读取风扇和滤网控制显示系统用户输入和设置应用场景:家庭空气净化与健康管理问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统中…

揭秘淘宝API接口:轻松连接电商巨头,打造无限商业可能

淘宝API接口是淘宝平台对外开放的一系列接口,通过这些接口,开发者可以获取淘宝平台上的商品信息、订单信息、物流信息等数据,实现与淘宝平台的交互。淘宝API接口支持多种数据格式,如JSON、XML等,方便开发者根据自己的需…

【Python】【报错解决】【无法安装socket库】No matching distribution found for socket

一、问题描述 如下图,笔者在做一个安全相关的项目时,遇到如下报错: No matching distribution found for socket 在尝试安装socket(套接字)库时报错,报错代码: pip install socket二、原因及解…

基于SSM前后端分离版本的论坛系统

目录 前言 一、项目背景 二、相关技术及工具 三、数据库设计 四、软件开发 4.1、搭建环境 4.1.1、创建工程 4.1.2、配置application.yml文件 4.1.3、环境测试 创建测试接口 4.1.4、继续配置 4.2、公共组件 4.2.1、创建工程结构 4.2.2、配置数据源 添加相关依赖 …

视频监控平台AS-V1000产品介绍:账户或用户数据的导入和导出功能介绍

目录 一、功能描述 (一)导入功能定义 (二)导出功能定义 二、用户数据的导入导出的作用 三、AS-V1000新版本的导出和导入功能介绍 (一)功能主界面 (二)导出功能 1、导出操作 …

彭永东所交“答卷”道尽万般无奈,贝壳找房营收、利润双双锐减

就今年第一季度业绩披露后两日的股价变动来看,贝壳找房(下称“贝壳”)似乎并未在港股和美股市场取得预期的效果。 港股市场,截至5月24日收盘,贝壳-W(HK:02423)报收43.9港元/股,当日跌…

单元测试(了解)

单元测试定义 针对最小功能单元(方法),编写测试代码对其进行正确性测试 之前如何进行单元测试?有什么问题? main中编写测试代码,调用方法测试 问题: 无法自动化测试 每个方法的测试可能不是…

Node.js —— Express 中间件、接口编写、接口跨域 【0基础向Express模块学习】

目录 中间件的概念 什么是中间件 现实生活中的例子 Express 中间件的调用流程 ​编辑 Express 中间件的格式 next 函数的作用 Express 中间件的初体验 定义中间件函数 全局生效的中间件 定义全局中间件的简化形式 中间件的作用 ​编辑 定义多个全局中间件 局部生…

OrangePi AIpro评测 - AI服务篇

0. 环境 ●OrangePi AIpro ●windows电脑 ●路由器 之前我已经对OrangePi AIpro进行了些嵌入式基本操作的评测。接下来进行AI部分。来看看华为昇腾的特别之处。 1.普通CPU和AI CPU 这里请提前用调试串口或者ssh到板子上,记得用户名和密码,分别是HwHiAiUs…

IDEA创建Spring Boot项目

1 打开新建项目界面 如图1,打开IDEA,点击菜单栏的File->New->Project,打开新建项目界面。 图1 新建项目 2 填写项目信息 在新建项目界面点击左侧工具栏的Spring Initializr选项,进行Spring Boot项目信息的填写&#xff…

Pytorch深度学习实践笔记11(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】 0 问题描述&解决 问题描述: 通过go编写了一个程序,产生的/var/log/xx日志文件发现普通用户无权限打开 - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限 - 查看该日…

AI数学知识

AI数学知识 1、线性代数相关(矩阵)1、什么是秩2、奇异值分解3、特征值分解和奇异值分解4、低秩分解 回归分类知识点2、概率论相关1、先验概率和后验概率2、条件概率、全概率公式、贝叶斯公式、联合概率3、最大似然估计4、贝叶斯公式和最大似然估计5、伯努…

深入解读力扣154题:寻找旋转排序数组中的最小值 II(多种方法及详细ASCII图解)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

【VTKExamples::Utilities】第十三期 SaveSceneToFile

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例SaveSceneToFile,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步…

高项案例分析知识点总结

文章目录 纠错题计算题进度估算成本管理立项管理版本管理组合管理知识产权信息技术计算题运筹学 纠错题 人:人员经验、能力、数量、缺少培训;自己一个人完成需求和计划不正确流程:先做什么,后做什么,流程是否正确。是…

【UE Slate】 虚幻引擎Slate开发快速入门

目录 0 引言1 Slate框架1.0 控件布局1.1 SWidget1.1.1 SWidget的主要作用1.1.2 SWidget的关键方法1.1.3 使用SWidget创建自定义控件1.1.4 结论 1.2 SCompoundWidget1.2.1 SCompoundWidget的主要作用1.2.2 SCompoundWidget的使用示例1.2.3 SCompoundWidget的关系1.2.4 总结 1.3 …

闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?

前言 虽然说,目前 .NET FrameWork 上的大部分类都已经移植到 .NET Core 上,而且 .NET FrameWork 也已经停止了更新,未来必然是 .NET Core 的天下,但要说现在 .NET Core 就能淘汰 .NET FrameWork,我觉得为时尚早&#…