Bifrost 自适应性属性

在 bifrostAeroProperties 和 bifrostLiquidProperties 属性中都可以找到“自适应性”(Adaptivity)属性。它们可用于自动调整分辨率,以便在所需的时间和位置提供最多的细节,而不会浪费内存和计算时间(如果不需要)。

空间(Spatial)

启用(Enable)
对于液体模拟,此选项允许在通常不需要细节的液体中心使用较低分辨率的体素。在沿与碰撞对象的边界和沿自由曲面(即与空气的边界)快速移动的区域中,仍保持由“主体素大小”(Master Voxel Size)设置的最大分辨率。请参见控制空间自适应性
对于 Aero 模拟,此选项需要一个或多个自适应网格才能具有效果(请参见使用自适应网格)。在自适应网格内使用最大体素分辨率,而在其他位置使用较低的分辨率。
通常,除非遇到问题,否则应该使此选项保持启用状态以减少内存和计算时间。
删除超出粒子(Delete Exceeding Particles)(仅限液体)
低分辨率区域中的每体素粒子数超过阈值时,移除一些粒子。如果在空间自适应模拟和非自适应模拟之间遇到体积丢失或其他大的差异,则禁用此选项。

传输(Transport)时间步(Time Stepping)

“传输”(Transport)“时间步”(Time Stepping)设置控制为每个帧执行计算的次数。迭代次数越多,精确度越高,但计算时间越长。如果遇到问题(如体积丢失、自发爆炸、粒子聚束和碰撞对象泄漏),则可以尝试调整这些设置。

  • “传输”(Transport)设置控制在执行压力计算后用于沿体素速度场平流传递粒子的迭代次数。如果遇到诸如粒子穿过静态碰撞对象等问题,通常最好先尝试调整这些设置,因为它们可能会解决问题,而无需太多额外的计算时间。但是,在每次迭代中,不重新计算压力,且不重新体素化碰撞对象和其他实体 - 这意味着“传输”(Transport)设置可能对快速移动的碰撞对象和其他更复杂的情况没有帮助。
  • “时间步”(Time Stepping)设置控制每帧的整个模拟(其中包括体素化、压力和传输相位)的迭代次数。这些设置可以大大提高精确度,尤其是对于高速度,但是也可能导致计算时间更长。

两组控制协同工作,以便“传输”(Transport)设置控制每个时间步内传输相位的迭代次数。换句话说,每个帧都可能包含多个时间步,具体取决于“时间步”(Time Stepping)设置,并且每个时间步都可能包含多个传输步,具体取决于“传输”(Transport)设置。

这两组控制以类似的方式工作:
  • 始终为每个帧至少执行“最小步数”(Min Steps)次迭代。这意味着可以强制一定数量的子步,即使粒子移动速度不太快。但是,改为调整“自适应性”(Adaptivity)通常更好,这样就不会导致不必要的计算。
    注: 在模拟的第一帧上仅执行一次迭代。
  • “自适应性”(Adaptivity)值控制是否触发其他子步。每帧可以执行不同的迭代次数,具体取决于粒子在该帧中移动的距离和速度。值处于非线性比例上。
    • 在值 0.0 上,粒子可以移动实际上无限的距离,而不触发进一步的子步。
    • 在 0.1 上,在触发进一步的子步之前,粒子最多可移动 10 体素长度。
    • 在 0.32 上,在触发进一步的子步之前,粒子可移动大约 5 体素长度。
    • 在 0.5 上,在触发进一步的子步之前,粒子最多可移动 1.0 体素长度。
    • 在 0.75 上,在触发进一步的子步之前,粒子可移动大约 0.5 体素长度。
    • 在 1.0 上,在触发进一步的子步之前,粒子最多可移动 0.001 体素长度。

    调整设置时,要谨慎操作以免一次增加“自适应性”(Adaptivity)太多,特别是当值接近 1.0 时。这样做可能会导致不必要的长时间计算。

    另请注意,距离是以体素长度度量的。这意味着较低的“主体素大小”(Master Voxel Size)可能会对给定速度的粒子触发额外迭代。

  • 但为每帧执行的迭代次数不得超过“最大步数”(Max Steps)。这将限制执行的总计算量。
  • 但是,粒子将始终按其速度和帧长度所需的整个距离移动。这意味着,粒子可能不会始终遵循“自适应性”(Adaptivity)所设置的限制。例如,如果“自适应性”(Adaptivity)设置为 0.5,但是“最大步数”(Max Steps)非常低,则快速粒子可能无法在 1 体素长度的步数内经过整个距离 - 在这种情况下,每步的长度大于 1 体素长度才能移动整个距离。
传输时间比例(Transport Time Scale)(仅限“传输”(Transport)
更改粒子流的速度。大于 1.0 的值会加快流动,而不引入任何新的速度或加速;而介于 0.0 和 1.0 之间的值会减慢速度。

结果实际上可能不正确,但如果您只想快速重定时模拟,这种方法对您比较有效。由于这可能会导致不必要的负面影响,尤其是在极端设置时,因此请务必注意。