Regional Time Stepping for SPH
摘要
针对经典弱可压缩光滑粒子流体动力学(WCSPH)方法,本文提出一种新颖高效的策略,可根据自由表面流的局部动力学特性,在空间上自适应分配计算量。该方法采用便捷且易于并行化的分块策略,为流体不同区域分配不同的时间步长并以不同速率求解,从而最大限度降低计算成本。实验表明,即便在高动态场景中,该方法的运算速度也较标准方法提升约一倍。
主要方法
适用于(WCSPH)的区域时间步长法(RTS),首个考虑不同区域的时间自适用算法。
怎样管理粒子的仿真步长?
将模拟域划分为虚拟网格,以分块为单位计算各区域的时间步长,而非以单个粒子为单位。
怎样计算一个粒子的适合的步长?
[TODO] 图1
- 所有粒子计算自身的速度和总受力;
- 粒子将自身属性传递至所属分块,分块根据内部粒子的最大受力和最大速度,计算该分块的最小时间步长;
- 各分块将计算得到的时间步长分配至内部所有粒子。
怎样算是合适的步长?
-
考虑时间步长内的突发加速度
[TODO] 公式2
- 根据粒子在一个时间步长内以当前速度移动的距离占其支撑半径的比例,为每个粒子分配对应的时间步长(本文新增)
[TODO] 公式3
判定条件 公式 作用 系数设置 CFL 条件(经典) Δtn≤csλvr 限制粒子在一个步长内的移动距离,避免穿透 λv≤0.4,cs为介质声速 加速度条件(经典) Δtn≤λfFmaxrm 应对突发加速度,保证动力学稳定性 λf≤0.25,Fmax为分块最大受力,m为粒子质量 速度分区条件(新增) rΔtnVmax≤αβn 根据粒子速度占支撑半径的比例分区,实现步长的空间梯度 α=0.4;β1=∞,βn=0.4(0.2)n−2(n≥2)
不同仿真步长对仿真过程有什么影响?
粒子新增了两个属性变量:
- 有效性(validity):表示粒子最新计算的属性的有效最小时间步长数(即距离其实际时间步长结束剩余的子步数);
- 计算标记(compute):布尔变量,标记粒子当前是否为活动粒子(即是否需要重新计算加速度,并在步长结束时校正位置和速度),当validity≤0 时,该标记为真。
若粒子为活动粒子,则计算其邻近粒子集合,并求解局部密度和受力;否则跳过上述计算步骤。在每次循环结束时,更新所有粒子的位置和速度,并按照塞尔纳的策略 [SRS03] 对活动粒子的速度和位置进行校正(算法 1 第 25-30 行)。
- 若粒子为活动粒子,则计算其邻近粒子集合,并求解局部密度和受力。否则跳过这一步。
- 所有粒子更新速度和位置。
- 若粒子为活动粒子,按照塞尔纳的策略对活动粒子的速度和位置进行校正
不同仿真步长之间的切换?
粒子可在其有效性属性过期前更改时间步长。这一设计使方法能在流体遭遇边界碰撞等突发加速度的情况下,保持模拟的稳定性。
不同仿真粒子表现的跳变?
定位不同时间步长区域的边界,并确定大时间步长一侧的分块集合,将该区域分配为其相邻区域的较小时间步长。
局限性
- 仅适用于WCSPH(弱可压缩 SPH),未拓展至更主流的不可压缩 SPH(如 PCISPH、IISPH);
- 分块的支撑半径固定为2s,未考虑自适应分块(如高动态区域细划分块,低动态区域粗划分块);
- 步长判定的系数为经验值,未给出自适应调优策略。