技术改变命运,技术成就未来

【Heskey带你玩模拟】流体基础

首先,老规矩:

未经允许禁止转载(防止某些人乱转,转着转着就到蛮牛之类的地方去了)

B站:Heskey0


我发布了NS方程的推导视频,附带一些水渲染知识

https://www.bilibili.com/video/BV1Vg411o76E

Eulerian-View

N-S:

ρDvDt=ρgp+μ2v

v=0

operator splitting之后,分为

  • advection

    ρDvDt=ρg+μ2v

  • projection : 把velocity散度投影为0

    ρDvDt=p

    v=0

Finite difference

  • Forward difference

    qxqi+1qiΔx

  • backward difference

  • central difference(unbiased, 精度高)

    qxqi+1qi12Δx

    改进:(staggered grid)

    qxqi+1/2qi1/2Δx

1. Advection

物理量的material derivative为0

DqDt=qt+vq=0

在Lagrangian view下,粒子上的表现为:

qn+1=qn

在Eulerian View下

semi-Lagrangian :

  • 假设粒子 qn+1 正好运动到了grid marker(grid的中心点)
  • 上一帧 qn 的位置反算出来,然后可以通过双线性插值算出quantity

2. Projection

上下左右分别做 Finite Difference

ρDvDt=p

最终得到 :

Δtρp=vn

问题转化为:Poisson problem

Boundary conditions :

  • 狄利克雷boundary condition (流体顶部与空气接触的地方) (知道边界外的压力为0)

    • p=0 for void grids
  • 诺依曼boundary condition (流体与容器接触的地方) (不知道墙的压力是多少)

    • 知道压强的梯度,反推墙的压强

线性系统的解

  • Direct solvers (e.g. PARDISO)
  • Iterative solvers:
    • Gauss-Seidel
    • (Damped) Jacobi
    • (Preconditioned) Krylov-subspace solvers (e.g. conjugate gradients)

Krylov-subspace solvers

很有效的linear system solvers,有很多变形,最常用的一种是conjugate gradients

Poisson equation的解

  • 一般会用conjugate gradients,其中multi-grid做precondition

  • multi-grid的每一层用damped Jacobi做smoothing

  • multi-grid的最下面一层用PARDISO这个Direct solver

Hybrid Eulerian-Lagrangian Schemes (Lagrangian View + Eulerian View) :

fluid solver has two components(对于incompressible fluid solver来说):

  • Advection (移动流场)
    • Material derivative
    • Quantity advection
  • Projection (enforcing incompressibility 把速度的散度分量投影掉)
    • Poisson's equation
    • Boundary conditions

1. Eulerian View :

  • 方便discretize,容易查找邻居,所以擅长于Projection
  • Advection过程中存在数值耗散.

2. Lagrangian View :

  • 擅长advection
  • 难以projection,例如SPH中找邻居很复杂.

Hybrid Eulerian-Lagrangian

粒子作为一轮共鸣,网格作为二轮共鸣

  1. Particle to Grid
  2. Grid操作(projection)
  3. Grid to Particle
  4. Particle操作(Advection)

具体方法 :

PIC (Particle in cell)
  1. P2G, scatter velocity from particles to grid,传递时,使用kernel(靠近的点权重大)(常用Quadratic的B样条曲线)
  2. Grid normalization,归一化(除以权重的和,保证物理量守恒)
  3. pressure projection
  4. G2P gather velocity(自由度损耗,丢失信息)
  • 数值耗散大
APIC (Affine Particle in cell) : 推导及其复杂,实现非常简单
  1. P2G, 除了velocity还会转移局部的affine速度场

    grid_v = weight*(v + affine)
    
  2. 更新affine

  • 在Particle上记录更多信息,Particle上记录了6个自由度(除了x,y方向速度之外,增加了4个,拉伸,剪切等
PolyPIC(poly particle in cell)
  • APIC的升级版,在Particle上记录更多自由度
MPM(Material Point Method)
MLS-MPM(Moving Least Squares MPM)
  • 基于APIC
posted @   Heskey0  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

本站勉强运行 1191 天 16 小时 09 分 08 秒

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示