学习教程来自:GAMES201:高级物理引擎实战指南2020
以下大部分图片来自教程PPT,仅作为笔记用于学习和分享,侵删
笔记内容大多为课程内容的翻译和转述,外加一些自己的理解,若有不正确的地方恳请大家交流和指正
上一讲难产了,不知道能不能补过来了,先学这一讲吧hh
笔记
这节本质上是使用有限元的方法,最终得到一个线性系统用于求解。
1. FEM(Finite element method)
Galerkin methods(加辽金方法)的一种,FEM将continuous PDEs转化为线性系统,用于后续求解
步骤:
- 将强型PDEs转化为弱型PDEs
- 分步积分
- 散度定理进一步简化偏微分方程并得到诺依曼(Neumann)边界条件的显式形式
- 离散化
- 求解线性系统
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)浅谈)