1.1 什么是有限元方法

有限元方法(Finite Element Method, FEM)是一种求解由偏微分方程描述或可表示为泛函极小化问题的数值方法。感兴趣的域被表示为有限单元(finite elements)的集合。有限元中的逼近函数是根据所求物理场的节点值确定的。FEM将一个连续的物理问题转化为节点值未知的离散化有限元问题,并得到一个线性方程组,求解该方程组就可以获得待求的物理量。有限元内部的值可以使用节点值恢复。

值得一提的是,FEM的两个特点:

  1. 在有限元上的物理场的分段近似提供了很好的精度,即使用简单的近似函数(增加单元的数量,我们可以达到任意精度)。
  2. 局部逼近将导致离散问题的方程组稀疏,这有助于解决具有大量节点未知数的问题。
1.2 FEM是如何工作的

为了说明有限元方法是如何工作的,我们列出如下几个有限元的主要求解步骤

  1. 离散化。第一步是将求解域划分为有限单元。有限元网格通常由预处理程序生成。网格的描述由几个数组组成,其中主要是节点坐标和单元的连通性。

  2. 选择插值函数。插值函数用于对单元上的场变量进行插值,这里通常选择多项式作为插值函数。多项式的次数取决于单元上的节点数。

  3. 寻找单元属性。建立待求函数的结点值与其他参数联系起来的矩阵方程,此步骤有多种方法可以使用,但最方便的方法是伽辽金方法(Galerkin method)。

  4. 组装单元方程。要找到整个求解区域的全局方程组,必须将所有的单元方程组合在一起。在组装过程中需要用到单元之间的连通性。同时,在求解之前还需要施加边界条件(边界条件不在单元方程中考虑)。

  5. 求解全局方程组。有限元整体方程组具有典型的稀疏、对称和正定性质,可采用直接法和迭代法来求解该方程组。待求函数在结点处的值被当做最终的解。

  6. 计算其他量。对于很多情况,我们需要计算其他的量,例如在力学问题中,除了位移外,还需要考虑应变和应力,这些位移是在求解整体方程组后得到的。

1.3 有限元方程的表述

有很多方法可以将问题的物理形式转换成有限元离散后的形式。如果物理问题是由偏微分方程描述的,则经常使用的是伽辽金方法(Galerkin method)。如果文理问题是由泛函最小化描述的,则经常使用变分公式(variational formulation)将其转换为有限元方程。

1.3.1 伽辽金方法(Galerkin method)

让我们先从简单的一维问题开始,介绍使用伽辽金方法的有限元公式。假设我们需要求解下面方程的数值解
ad2udx2+b=0,0≤x≤1(1)a\frac{d^2u}{dx^2}+b=0,\quad 0 \leq x \leq 1 \tag{1} adx2d2u​+b=0,0≤x≤1(1)
边界条件为
u∣x=0=0adudx∣x=2L=R\begin{array}{l} \left.u\right|_{x=0}=0 \\ \left.a \frac{d u}{d x}\right|_{x=2 L}=R \end{array} u∣x=0​=0adxdu​∣∣​x=2L​=R​
其中uuu是待求解量。我们将使用下图所示的两个线性一维有限元来解决这个问题。

首先我们考虑图1.1右半部分的有限元,该单元拥有两个节点,则近似函数u(x)u(x)u(x)可以表示为
u=N1u1+N2u2=[N]{u}[N]=[N1N2]{u}={u1u2}\begin{array}{l} u=N_1u_1+N_2u_2=[N]\{u\} \\ [N]=\left[\begin{array}{c}N_1 & N_2\end{array}\right] \\ \{u\}=\left\{\begin{array}{c}u_1 & u_2\end{array}\right\} \end{array} u=N1​u1​+N2​u2​=[N]{u}[N]=[N1​​N2​​]{u}={u1​​u2​​}​
这里的NiN_iNi​也称为形函数(shape functions)
N1=1−x−x1x2−x1N2=x−x1x2−x1N_1=1-\frac{x-x_1}{x_2-x_1} \\ N_2=\frac{x-x_1}{x_2-x_1} N1​=1−x2​−x1​x−x1​​N2​=x2​−x1​x−x1​​
使用这些形函数在结点出的值来插值u(x)u(x)u(x)。我们需要从全局离散方程中求解出未知的结点值u1u_1u1​和u2u_2u2​。

将节点处的值和形函数带入到式(1)的微分方程中,得到如下的近似形式
ad2dx2[N]{u}+b=ψ(2)a\frac{d^2}{dx^2}[N]\{u\}+b=\psi \tag{2} adx2d2​[N]{u}+b=ψ(2)
由于式(2)是有限元中的近似形式,所以残差ψ\psiψ是一个非零的数。伽辽金方法通过将式(2)的项乘以形函数,在单元上积分并令其等于0最小化残差:
∫x1x2[N]Tad2dx2[N]{u}dx+∫x1x2[N]Tbdx=0\int_{x_{1}}^{x_{2}}[N]^{T} a \frac{d^{2}}{d x^{2}}[N]\{u\} d x+\int_{x_{1}}^{x_{2}}[N]^{T} b d x=0 ∫x1​x2​​[N]Tadx2d2​[N]{u}dx+∫x1​x2​​[N]Tbdx=0
对其进行分部积分,得到该单元上微分方程的一种离散形式
∫x1x2[dNdx]Ta[dNdx]dx{u}−∫x1x2[N]Tbdx−{01}adudx∣x=x2+{10}adudx∣x=x1=0(3)\int_{x_{1}}^{x_{2}}\left[ \frac{dN}{dx} \right]^{T} a \left[ \frac{dN}{dx}\right] d x\{u\}-\int_{x_{1}}^{x_{2}}[N]^{T} b d x - \left\{ \begin{array}{c} 0 \\ 1 \end{array} \right\}a \left. \frac{du}{dx} \right|_{x=x_2}+ \left\{ \begin{array}{c} 1 \\ 0 \end{array} \right\}a \left. \frac{du}{dx} \right|_{x=x_1} =0 \tag{3} ∫x1​x2​​[dxdN​]Ta[dxdN​]dx{u}−∫x1​x2​​[N]Tbdx−{01​}adxdu​∣∣∣∣​x=x2​​+{10​}adxdu​∣∣∣∣​x=x1​​=0(3)
为了表示方便,我们使用如下几个记号

[k]=∫x1x2[dNdx]Ta[dNdx]dx{f}=∫x1x2[N]Tbdx+{01}adudx∣x=x2−{10}adudx∣x=x1\begin{aligned} &{[k]=\int_{x_{1}}^{x_{2}}\left[\frac{d N}{d x}\right]^{T} a\left[\frac{d N}{d x}\right] d x} \\ & \{f\}=\int_{x_{1}}^{x_{2}}[N]^{T} b d x+\left.\left\{\begin{array}{l} 0 \\ 1 \end{array}\right\} a \frac{d u}{d x}\right|_{x=x_{2}}-\left.\left\{\begin{array}{l} 1 \\ 0 \end{array}\right\} a \frac{d u}{d x}\right|_{x=x_{1}} \end{aligned} ​[k]=∫x1​x2​​[dxdN​]Ta[dxdN​]dx{f}=∫x1​x2​​[N]Tbdx+{01​}adxdu​∣∣∣∣​x=x2​​−{10​}adxdu​∣∣∣∣​x=x1​​​

则式子(3)可以写成
[k]{u}={f}\boxed{{[k]\{u\}=\{f\}}} [k]{u}={f}​
在固体力学中,[k][k][k]称为刚度矩阵(stiffness matrix);{f}\{f\}{f}称为载荷向量(load vector)。在上述我们考虑的偏微分问题中,我们分别计算两个长度为LLL单元的刚度矩阵和载荷向量。
[k1]=[k2]=aL[1−1−11][k_1]=[k_2]=\frac{a}{L} \left[ \begin{array}{c} 1 & -1 \\ -1 & 1 \end{array} \right] [k1​]=[k2​]=La​[1−1​−11​]

{f1}=bL2{11},{f2}=bL2{11}+{0R}\{f_1\}= \frac{bL}{2} \left\{ \begin{array}{c} 1 \\ 1 \end{array} \right\}, \quad \{f_2\}= \frac{bL}{2} \left\{ \begin{array}{c} 1 \\ 1 \end{array} \right\} + \left\{ \begin{array}{c} 0 \\ R \end{array} \right\} {f1​}=2bL​{11​},{f2​}=2bL​{11​}+{0R​}

对于整个求解域上2个单元,3个结点的全局方程组可以通过组装单元方程组获得。在此实例中,第二个结点时单元共用结点。组装全局方程组为
aL[1−10−12−10−11]{u1u2u3}=bL2{121}+{00R}\frac{a}{L} \left[ \begin{array}{c} 1 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 1 \end{array} \right] \left\{ \begin{array}{c} u_1 \\ u_2 \\ u_3 \end{array} \right\} =\frac{bL}{2} \left\{ \begin{array}{c} 1 \\ 2 \\ 1 \end{array} \right\} + \left\{ \begin{array}{c} 0 \\ 0 \\ R \end{array} \right\} La​⎣⎡​1−10​−12−1​0−11​⎦⎤​⎩⎨⎧​u1​u2​u3​​⎭⎬⎫​=2bL​⎩⎨⎧​121​⎭⎬⎫​+⎩⎨⎧​00R​⎭⎬⎫​
施加边界条件u(x=0)=0u(x=0)=0u(x=0)=0后,最终的全局方程为
aL[10002−10−11]{u1u2u3}=bL2{021}+{00R}\frac{a}{L} \left[ \begin{array}{c} 1 & 0 & 0 \\ 0 & 2 & -1 \\ 0 & -1 & 1 \end{array} \right] \left\{ \begin{array}{c} u_1 \\ u_2 \\ u_3 \end{array} \right\} =\frac{bL}{2} \left\{ \begin{array}{c} 0 \\ 2 \\ 1 \end{array} \right\} + \left\{ \begin{array}{c} 0 \\ 0 \\ R \end{array} \right\} La​⎣⎡​100​02−1​0−11​⎦⎤​⎩⎨⎧​u1​u2​u3​​⎭⎬⎫​=2bL​⎩⎨⎧​021​⎭⎬⎫​+⎩⎨⎧​00R​⎭⎬⎫​
结点处的值uiu_iui​可以通过求解上面的线性方程组得到。uuu在有限元内任一点处的值可以通过形函数计算。当a=1,b=1,L=1,R=1a=1,b=1,L=1,R=1a=1,b=1,L=1,R=1时有限元的解如下图所示。

在此例中,精确解是二次函数,而有限元方法中在每个单元上使用的是简单的线性函数。通过增加单元的个数或使用更加复杂的形函数可以得到更加精确的数值解。值得注意的是,在结点处有限元方法得到的解是精确的(仅针对此例中)。如果精确解是二次函数,则有限元方法使用线性形函数可在结点处获得精确值;而如果精确解是三次函数,则有限元方法使用二次形函数可在结点处获得精确值,以此类推。

有限元分析简介及伽辽金法相关推荐

  1. 【计算流体力学】Python实现加权余量法求微分方程数值解 比较伽辽金法(Galerkin法)、最小二乘法和矩法的求解精度 分析误差随n增大的变化情况

    一.简介 微分方程的经典数值方法有Ritz法.加权余量法.有限元法.有限体积法等等.对于微分方程的边值问题,如果能找到与微分方程相对应的泛函,可以通过求取相应泛函的极小值,将微分方程转化为关于基函数待 ...

  2. 二维FEM建模及求解(入门级:数理方程到代码编写)

    前言:好久没有更新了,最近一直在看关于脑电正问题建模的问题,重点是关于FEM头模型搭建的问题.网上好多资料要不就是纯理论讲解,要不就是直接上打断代码的.所以趁着现在的理解还是在由少到多的阶段,记录一下 ...

  3. 有限体积法及其网格简介

    有限体积法及其网格简介 有限体积法使目前CFD领域广泛使用的离散化方法,其特点不仅表现在对控制方程的离散结果上,还表现在所使用的网格上. 1.有限体积法的基本思想 有限体积法(Finite Volum ...

  4. keil 生成三角波dac0832_弹性波,时域显式接口简介

    COMSOL Multiphysics® 软件 5.5 版本中提供了一个节省内存的物理场接口,用于模拟弹性波在固体中的传播(结构中的振动).该弹性波,时域显式接口基于时域显示时间积分方案的高阶间断伽辽 ...

  5. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略

    DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释).案例应用之详细攻略 相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类 ...

  6. 目标追踪——光流法optical flow

    光流法简介 光流 光流法 光流的物理意义 光流场 光流法基本原理 金字塔方法 基于光流的运动目标检测(前景检测)算法 实现原理 光流 光流(optical flow)是空间运动物体在观察成像平面上的像 ...

  7. 数学建模竞赛知识点汇总(一)——层次分析法

    文章目录 简介 步骤 建立层次结构模型 构造判断矩阵 计算权重 算术平均值法 几何平均值法 特征值法 一致性检验 合并排序 层次分析法的局限性 后续 简介 ​ 层次分析法(AHP)这是一种定性和定量相 ...

  8. [清风数学建模]层次分析法(AHP)笔记及代码实现

    本文章是学习清风老师数学建模视频后所做的笔记,其中一些图片及代码实现来源于清风老师的B站视频: [强烈推荐]清风:数学建模算法.编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilib ...

  9. 有限体积法、有限差分法和有限元法介绍

    学过弹性力学的人应该都知道什么是有限元,而对学计算流体力学的来说,有限差分和有限体积法也是两种非常重要的方法.三者虽然目前形式各异,但是思想上有很多类似的地方.CFD(Computational Fl ...

  10. 基于层次分析法与熵权法的主客观组合赋权模型(原创:小青龙)

    基于层次分析法与熵权法的主客观组合赋权模型 组合赋权大家可以尝试进行改变,一个主观一个客观.(原创:小青龙) 简介 ​ 权重是用来衡量总体中各单位标志值在总体中作用大小的数值, 用来描述单因子在因子集 ...

最新文章

  1. python手机版打了代码运行不了-如何用iPad运行Python代码?
  2. luogu1514 [NOIp2010]引水入城 (bfs+记忆化搜索)
  3. 解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法...
  4. YbtOJ#482-爬上山顶【凸壳,链表】
  5. fedora 忘记root密码
  6. 华为数据通信产品VRP操作系统的使用
  7. Simulink_Debug的使用
  8. c语言else不运行,if...else if..else第三句不执行?
  9. 【每日算法Day 103】老题新做,几乎不会有人想到的解法,它来了
  10. DaisyDisk for Mac(磁盘清理软件)
  11. pytest学习(1)
  12. DBeaverEE-优秀的数据库连接工具
  13. Matlab的自相关函数corr
  14. 电脑写作与发布哪款软件好?
  15. Mysql数据库死锁实战-死锁演示-排他锁的相互等待
  16. JDK 19 / Java 19 正式发布
  17. 國罡上을 國岡上으로 고쳐쓰는者는 뭐하는者일꼬?
  18. IDEA中插件加载不出来问题解决
  19. 我要搬家到51CTO了.
  20. 有心栽花花不开,无心插柳柳成阴

热门文章

  1. AI芯片最重要的是什么?Arm中国:背后的软件生态
  2. 接收诊断响应的相关CAPL函数,具有较高的可复用性
  3. EEGLAB及其插件下载安装
  4. asp毕业设计—— 基于asp+access的网上动态同学录系统设计与实现(毕业论文+程序源码)——同学录系统
  5. 采用Turbo编码的图像传输试验(AWAG信道,matlab实现)分别验证了不同交织器类型,交织深度对turbo码性能的影响
  6. 备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结
  7. 线性调频信号(LFM)时域与频域分析
  8. 连接共享打印机0xc00000bcb
  9. iOS 录音功能实现
  10. Part I. S1. 模糊集及其运算