Starofus

你好呀,我是Sans

【HPC 02】欧拉视角的流体模拟

2023-2-18

欧拉视角下的纯网格烟雾模拟,pic网格和粒子混合法,mpm混合粒子有限元法

代码:https://github.com/mrzhuzhe/Reisen

1. 概述

之前做了了Position base dynamic光滑粒子法流体和离散元法法的练习,那些方法都是基于拉格朗日视角的模拟过程质保正粒子之间相互作用的物理守恒:动量,质量,角动量等守恒

本着入门就把常见方法都试一下的和taichi老师推荐的路线,最近把基于欧拉网格的方法也试了一下

欧拉视角把当前空间划分成一个个网格,利用了力场的概念,网格中每个格子在xyz方向都有不同的速度(加速度),粒子在场内的运动会遵循场的加速度来改变当前速度和方向

例如:

原本的(只显示粒子)

显示出网格(注意粒子都被框在一个个的小格子里)

演示网址:https://matthias-research.github.io/pages/tenMinutePhysics/18-flip.html

所以:为什么要用网格? :更好的处理projection(也就是相互作用,和限制条件)

  • 1.没有网格算粒子之间相互作用就只能用粒子搜索粒子附近的粒子去计算碰撞/密度/概率来进行,这样会引起很多问题,比如粒子临域搜索就很麻烦
  • 2.不过光滑粒子法也能处理自碰撞,固流耦合,柔性物体和欧拉方法能做的几乎一样
  • 3.欧拉方法的守恒只存在网格之间的守恒不存在粒子之间的守恒,如果网格只存了速度,就默认没有体积的守恒

2. 演示

TODO此处添加视频

1. SPH固流耦合 https://github.com/mrzhuzhe/Reisen/blob/main/sph/main.py

2. 纯欧拉法烟雾https://github.com/mrzhuzhe/Reisen/blob/main/euler/test.py

3. 欧拉混合拉格朗日流体(dt不能太大)https://github.com/mrzhuzhe/Reisen/blob/main/euler/pic.py

4. 3d Partical in cell flip apichttps://github.com/mrzhuzhe/Reisen/blob/main/flip/3d_pic.py

5. mpm https://github.com/mrzhuzhe/Reisen/blob/main/mpm/2_compare.py

3. 相关工作

代码大量借鉴了

4. 实验

遇到的问题

5. 原理

流程

  • 1. p2g particle to grid
  • 2. project solve pressure divergen
  • 3. g2p grid to particle
  • 4. advect

6. 讨论

  • 1. projection 的隐式求解
  • 2. 隐式时间积分
  • 3. 数值稳定性
  • 4. mpm应力的求解
  • 5. 极分解
CFD