Lecture2 拉格朗日视角(1)

extension

基于Lattice Boltzmannn Method的流体模拟器实现卡门窝街 Karman Vortex Street
卡门涡街现象:穿过物体的尾部有一连串交替分布的漩涡.(一个顺时针、一个逆时针)
(流体力学中的重要现象)
eg:水流过桥墩、风吹过烟囱、风吹过岛屿

概念

拉格朗日视角(随波逐流)

粒子节点sensor随着流体材料一起移动
观察粒子所处位置与速度
描述:拉格朗日粒子、三角网格
在这里插入图片描述

欧拉视角(岿然不动)

sensor永远不移动
观察穿过该点的流体材料的速度。
描述:网格
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

弹簧质点系统 Mass-spring System

模拟布料、头发等弹性材料。
在这里插入图片描述
每一个红点即为一个质点,每条白线为一根弹簧,怎么连接弹簧决定了布料的性质
Spring stiffness:指标数值越大,越“刚性”,强直;反之,越塌软。
damping:阻尼,指标数值越小,系统会更灵活,“晃动”,反之更黏滞。

原理

胡克定律+牛顿第二定律
在这里插入图片描述
胡克定律:在弹性限度内,弹簧的伸长量或压缩量与作用力成正比。
F=-k δ \delta δx

  1. F表示物体所受的弹性力,方向总是与位移方向相反。
  2. k表示物体的弹性系数,表示弹簧的刚度,单位为牛顿每米(N/m)。越大的 k表示弹簧越硬
  3. x 表示物体所产生的形变量,表示弹簧被拉伸或压缩的长度,单位为米(m)。

胡克定律仅在弹性限度内适用,超出这一范围,弹簧可能会发生永久变形或断裂。‘

牛顿第二定律:f=ma,图中fi表示质点i受到相邻质点作用的所有外力

时间积分器

公式:连续 vs 计算机:离散世界
离散化:dt -> δ \delta δt
假定:在 δ \delta δt时间内,a恒定计算Vt+1;v恒定计算Xt+1

在这里插入图片描述

  1. 前向欧拉法:根据现有状态直接推测下一个状态
  2. semi-implicit Euler(常用):也是根据现有状态直接推测下一个状态,区别于Forward Euler:计算位置时,用的Vt+1
  3. Backward Euler:implicit

Implementing a mass-spring system with symplectic Euler

在这里插入图片描述

显式积分器 vs 隐式积分器

显式时间积分器:未来状态只依赖于过去的状态。 (递推)易爆炸,适用于m大k小的弹性系统
隐式时间积分器:未来状态不仅依赖于过去的状态,而且还依赖于未来的状态。 复杂,难以实现、进而难以优化
在这里插入图片描述
弹簧在弹性范围内的振动是简谐振动,弹簧受力和位移的关系又满足胡克定律
弹簧的固有频率f,求倒数后得到振动周期T, δ t ≤ \delta t \le δt cT
在这里插入图片描述
隐式时间积分器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何解线性系统!!!

Jacobi迭代 / Gauss-Seidel迭代
共轭梯度(对称正定的系统,不满足找变种)
在这里插入图片描述
Jacobi迭代:每次迭代都把一个未知数的一项换成一个值,满足某行线性等式方程。
并不总是收敛的。(谱半径(特征值模长最大值)小于1,则收敛。)

积分时间器的统一

在这里插入图片描述在这里插入图片描述
如果有成千上万个弹性质点和弹簧,解决思路:

  1. 稀疏矩阵(Sparse matrices)
  2. 共轭梯度(Conjugate gradients)
  3. 预条件(Preconditioning)
  4. 物理模型上对精度和速度上的取舍,如取基于位置的物理(position-based dynamics, PBD)

Smoothed particle hydrodynamics,SPH

光滑粒子法是一种拉格朗日无网格粒子方法
它利用核函数对物理问题进行近似处理,用离散的粒子来描述宏观连续分布微观仍为粒子的流体,而每个粒子则携带了其所在位置的流体的各种性质,如质量、密度、速度、能量等。
光滑粒子法由Lucy(1977)和Gingold & Monaghan(1977)相互独立地提出,用于处理天体物理问题。之后,光滑粒子法扩展应用到气体动力学、不可压缩、爆炸、固体力学和弹性体等领域。

每个粒子携带一些物理量,再用一个核函数去近似一个连续的场。
在这里插入图片描述
邻近粒子贡献更多,距离远(超过h)的贡献少=0。
一个粒子和周围以h为半径的粒子中间有弹簧,SPH遵循的不是弹簧的胡克定律,而是通过积分插值理论来近似连续场量的值和导数‌。SPH方法通过离散采样点(粒子)来模拟流体行为,每个粒子携带某些场量,并通过从相邻粒子的值加权平均来计算粒子处的场量‌。

weakly compressible SPH, WCSPH

材料导数:跟着粒子一起移动的导数。
压强和导数会影响粒子的速度,压强越大,会让周围粒子远离该粒子,从而保持自己的体积。

在这里插入图片描述
SPH中算梯度的公式:并不准确,但保持对称性,从而能使动量守恒。
在这里插入图片描述
总体计算流程
在这里插入图片描述

变种SPH

在这里插入图片描述

从粒子运动速度考察时间步长的限制 (CFL condition)

在这里插入图片描述

加速SPH

Neighborhood search:枚举所有粒子O(n^2)----> 距离不超过h的所有邻近粒子 O(n)
在这里插入图片描述

使用Taichi实现结果可视化

导出图像
1 ti.GUI.show(filename):不仅可以在屏幕上显示 GUI 画布,还可以将 GUI 中的图像保存到指定文件filename。文件格式由filename中的后缀指定(jpg、png、bmp)
2.ti.tools.imwrite(pixels.to_numpy(), filename):可以导出 Taichi field(ti.Matrix.field,ti.Vector.field, ti.field)和 numpy 数组 np.ndarray。

导出视频
需要安装 ffmpeg
ti.VideoManager 可以帮助你以 mp4 或 gif 格式导出结果。

video_manager = ti.tools.VideoManager(output_dir=result_dir, framerate=24, automatic_build=False)

for循环里:video_manager.write_frame(pixels_img)
完成导出: video_manager.make_video(gif=True, mp4=True)

将 PNG 图片转换为视频
创建一个 40 FPS 的视频:ti video -f 40

将视频转换为 GIF:
指定FPS:ti gif -i video.mp4 -f40 来创建一个 40 FPS 的 GIF 文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值