学习教程来自:GAMES201:高级物理引擎实战指南2020
以下大部分图片来自教程PPT,仅作为笔记用于学习和分享,侵删


笔记内容大多为课程内容的翻译和转述,外加一些自己的理解,若有不正确的地方恳请大家交流和指正

上一讲难产了,不知道能不能补过来了,先学这一讲吧hh

笔记

这节本质上是使用有限元的方法,最终得到一个线性系统用于求解。

1. FEM(Finite element method)

Galerkin methods(加辽金方法)的一种,FEM将continuous PDEs转化为线性系统,用于后续求解
步骤:

  1. 将强型PDEs转化为弱型PDEs
  2. 分步积分
  3. 散度定理进一步简化偏微分方程并得到诺依曼(Neumann)边界条件的显式形式
  4. 离散化
  5. 求解线性系统

2D Poisson’s equation 2维泊松方程:拉普拉斯方程是泊松方程的简化形式(来自知乎知乎用户Csa5DY),所以简单理解的话这里说的方程严格来说是拉普拉斯方程,但也算是泊松方程


</br>

Dirichlet boundary:狄利克雷边界条件/第一类边界条件,直接给定u在边界上的值


</br>

Neumann boundary:诺依曼边界条件/第二类边界条件,为u在边界上导数/梯度的值乘以法线方向


</br>

2. 离散化求解泊松方程

2.1 化简

首先,用一个任意的二维标量函数w(x),与强型式∇·∇u相乘,可以得到


</br>

另外,用w直接与∇u相乘再求导,并展开(求导的展开)化简(∇·∇u=0)得到


</br>


</br>

2边同时积分可得下方右项,因此推导成立


</br>

散度定理(Divergence theorem):一个体积内对x散度的面积分 = 边界上的向量函数x和法向量点乘,绕边界的线积分
因此可推


</br>

2.2 离散

用线性的基函数ϕ模拟连续函数u(x),如下为二维


</br>

三维情况下,图片来源2D basis functions on a triangular mesh


</br>

带入2.1结尾方程,同时离散化函数w和函数u


</br>

抽出对uj求和的部分


</br>

引入矩阵形式:
K:“stiffness” matrix 刚度矩阵
u: degree of freedoms/solution vector 自由度/解向量
f: load vector


</br>

其中有


</br>

2.3 边界条件

将u替换为对应的边界条件规定的关系

3. Linear elasticity FEM 线性弹性有限元

柯西动量方程:速度求拉格朗日导数(即加速度) = 1/密度 乘以 柯西stress tensor的散度 + 体积力/重力加速度


</br>

准静态过程下:速度很小为0,重力为0


</br>

自由度 Degree of freedom:displacement u(新的位置减去旧的位置)

3.1 求解-FEM方法

Index notion:用 , 表示求导,αβγ对应xyz轴,则原方程变化为


</br>

其中求散度的部分乘以w


</br>

分步积分


</br>

约掉为0的部分


</br>

2边积分,并使用散度定理


</br>

离散化w和u


</br>

带入


</br>

求其中σ和u的关系(线性关系)


</br>

替换符号标记表示为


</br>

带入得到线性系统Ku = f

4. Topology optimization 拓扑优化

是一种根据给定的负载情况、约束条件和性能指标,在给定的设计区域内对材料分布进行优化的数学方法,是结构优化的一种。(来自知乎拓扑优化(Topology Optimization)浅谈