Games201-混合欧拉拉格朗日方法(一)

PIC

APIC

PolyPIC

MPM

拉格朗日和欧拉的对比

定义一个算法好:

1、守恒:动量、角动量、体积、能量

2、性能(并行性,访存性能)

3、复杂程度(实现的角度,越复杂越难优化)

没有一个算法各个方面都好

一个流体sovler一般有两步:

1、Advection

2、Projection(保证不可压缩性)

欧拉视角擅长projection,易于离散化、邻居搜索、precondition,但欧拉grid面对advection很难,模拟的时候回油能量损失,流体看起来非常粘

拉格朗日擅长advection,可以容易的移动粒子,动量守恒很容易,但粒子在空间中不规则,离散化非常tricky,邻居搜索也很头疼

结合两种方法的特点得到混合欧拉拉格朗日视角

混合欧拉拉格朗日

粒子是一等公民,存所有的数据,网格是二等公民,附属的用来计算中间结果的东西

信息在两种格式之间来回转换

PIC ——Particle InCell

速度、温度、力

传输到网格点上信息,从网格点上收集信息

粒子对更近的邻居更重要,一般来说会使用核函数来进行一个模拟

一般就是用Quadratic,足够smooth,linear不够smooth导致系统不够稳定

记录速度和网格点权重,后面要用总的速度除权重

把网格速度重新收集到粒子上

无散度是可以保证体积不变性

PIC就是会有能量耗散

demo PIC vs APIC 平移没有耗散。拉式,旋转,剪切都是有耗散的,运动一会就不动了

自由度变化,从18个自由度到粒子上自由度只有2个了

解决办法:

1、给粒子记录更多的信息,旋转量、剪切量等等 APIC PolyPIC

2、减少耗散的base,只将delta信息进行传输 FLIP

APIC Affine Particle in Cell

记了x y 方向的拉伸、剪切

数学推导复杂但是实现起来很容易

APIC是角动量守恒的

PolyPIC

通过记录更多维度信息,尝试做到无损传输

FLIP

不去gather物理量了,而是gather grid上的物理量的增量

Flip只是一个advection的格式

Particle to Particle (base) + Particle to Grid (delta)

Flip会有noisy的现象,看起来表面很乱

需要一点点的PIC,PIC耗散很大,可以在PIC和FLIP的结果之间进行一个插值

选择哪个

PIC 能量耗散太大

PolyPIC 实现起来复杂。但是精益求精可以使用。

FLIP比较noisy,需要多个grid求delta

APIC 各方面都不错也是MLS-MPM的基础

粒子内存很多的时候网格上的内存基本就可以不计了

MPM

particle存的东西变多了很多

MPM是近年非常火的

处理不同的材料很方便

处理自碰撞

自动的fracture(拉伸到一定程度就破碎)

处理大形变很不错,大形变在模拟里大家都觉得很喜欢

早期10步方法

MLS-MPM

是个Compute bound的算法

就是需要多算一些东西

初始化内容

P2G的过程,多了一个stress,称为 Cauchy Stress,起到的作用是表现抵抗压缩的力

处理权重和边界条件

J表示一个体积的变化

posted @ 2021-02-28 15:32  飞翔的子明  阅读(1160)  评论(0编辑  收藏  举报