SPH流体控制带有自适应湍流细节

摘要

基于平滑粒子流体动力学(SPH)的流体控制通常涉及流体动画。 因为大多数现有的SPH流体控制方法都采用控制力的策略来控制流体颗粒,所以控制力引入的人工粘度将导致精细尺寸细节的损失。 尽管引入低通滤波器可以增加细节,但它很容易破坏目标形状。 为了解决先前的问题,我们对带有曲率信息的控制粒子进行采样,以表示形状的复杂性。 由于形状的复杂性,我们抑制了高曲率区域中湍流的产生,并促进了低曲率区域中的湍流。 我们的自适应方式来随机产生湍流可以有效地防止由于人工粘度引起的流体动力学的缺乏。 我们的新方法可以提高流体动画的视觉质量,并且形状控制结果与目标形状一致。

自适应湍流细节

粗略的控制力可能会产生SPH流体的不良人工粘度。 因此,在粗略的控制力作用下,流体的表面可能过于光滑,缺乏流体动力学。 Thürey等人的细节保存控制方法。 [3]比粗控制方法可以获得更丰富的流体细节。 但是,实际上,这是一种生成流体细节的全局方法,因此它无法将形状细节和流体动力学细节结合在一起。 通过这种方法生成的流体细节可能会使控制结果不忠实于目标形状。为了解决这个问题,我们提出了一种可以通过目标形状的曲率自适应地调整SPH流体细节的新颖方法。 在这里,我们通过使用SPH粒子携带的涡度来添加流体细节。SPH粒子的旋涡由CPWC引发,旋涡会在受控SPH流体的表面上引起湍流。 我们的方法不是纯粹基于物理的方法,因为我们的方法产生的湍流并不完全忠实于流体的自然特性。但是,流体控制本身并不完全符合流体的自然行为。 实际上,为了获得动画效果,这是夸张的效果,因此这种湍流效果可能是有利的。 就控制结果而言,我们的方法可以很好地再现SPH流体形状控制中目标形状的细节,并生成丰富的流体动态细节。 这是我们方法的特征之一。

在第3.3节中,我们计算了每个CPWC的曲率; 曲率反映了CPWC所在的表面形状的复杂性。在本文中,我们提出以下策略基于CPWC的曲率生成和抑制流体湍流:定义曲率阈值cc。 如果区域的曲率高于cc,则那里的湍流将被抑制。 湍流只能在曲率低于cc的区域中产生(请参见图6)。 我们在每个SPH粒子的平滑半径h中搜索控制粒子。 这是SPH粒子的三种情况:

  1. 周围没有控制粒子:SPH粒子可能不受控制力控制。
  2. 仅由低曲率控制粒子控制。
  3. 受高曲率和低曲率控制粒子的影响。
  4. 仅由高曲率控制粒子控制。

对于情况3和4,我们然后获得它们之间的最大曲率CmaxC_{max}。如果Cmax<cC_{max}<c,我们将初始化SPH粒子ii的概率ξiξ_i。如果ξi>ξξi>ξ,则将涡度ωiω_i初始化为:

ωi=μ(ui×xij)\omega_{i}=\mu \cdot\left(u_{i} \times x_{i j}\right)

其中μμ是粘度,uiu_i表示SPH粒子ii的速度,jj是最接近ii的CPWC。读者可以参考Yuan等人的SIP方法,将SPH粒子的初始化概率ξiξ_i引用。

在产生涡度ωiω_i之后,根据涡度Navier–Stokes方程,涡度应在随后的流体中演化以产生湍流。 在我们的方法中,形状表面上的SPH粒子ii可能会受到等式dudt=1ρρ+μ2u+f\frac{d u}{d t}=-\frac{1}{\rho} \nabla \rho+\mu \nabla^{2} u+f右侧的合力ff,控制力fcf_c和由涡度引起的旋转力frf_r的影响。然后我们更新方程ai=duidt=Fiρia_{i}=\frac{d u_{i}}{d t}=\frac{F_{i}}{\rho_{i}}中的力:

Fi=f+αfc+βfrfr=j(xij×ωjt)fc=fa+fv\begin{array}{c} F_{i}=f+\alpha f_{c}+\beta f_{r} \\ f_{r}=\sum_{j}\left(x_{i j} \times \omega_{j}^{t}\right) \\ f_{c}=f_{a}+f_{v} \end{array}

其中ααββ是控制力fcf_c的控制常数,而旋转力frf_rfaf_afvf_v由等式fv(i)=wvj(vjvi)W(xji,hc)f_{v}(i)=w_{v} \sum_{j}\left(v_{j}-v_{i}\right) W\left(x_{j i}, h_{c}\right)fa(i)=wajεxjxixjxiW(xji,hc)f_{a}(i)=w_{a} \sum_{j} \varepsilon \frac{x_{j}-x_{i}}{\left\|x_{j}-x_{i}\right\|} W\left(x_{j i}, h_{c}\right)求解。

通过控制力和旋转力的耦合,低曲率区域中的流体可能会不断产生湍流细节。 但是,由于涡度扩散项,湍流可能扩散到高曲率区域。 因此,它可能会损坏关键形状的细节。 因此,高曲率CPWC应该抑制周围的SPH颗粒的涡度。 另一方面,一旦SPH粒子的涡度被初始化,它将继续引起湍流。 湍流细节很难自然消散。 最后,每个SPH粒子将具有非零涡度。 因此,我们需要使SPH颗粒的涡流慢慢消散。

人工消散方法可以通过减小SPH粒子的涡旋寿命期间的涡旋ωiω_i和概率ξiξ_i来解决这些问题。 在这里,我们使用以下方程式来防止湍流过度扩散:

ωi(t+Δt)=ωi(t)exp(ktt+Δtϕ(x)dx)ξi(t+Δt)=ξi(t)exp(ktt+Δtϕ(x)dx)\begin{array}{l} \omega_{i}(t+\Delta t)=\omega_{i}(t) \exp \left(-k \int_{t}^{t+\Delta t} \phi(x) d x\right) \\ \xi_{i}(t+\Delta t)=\xi_{i}(t) \exp \left(-k \int_{t}^{t+\Delta t} \phi(x) d x\right) \end{array}

其中kk是控制常数。 从SPH粒子ii开始的时间段tt具有非零涡度;exp(ktt+Δtϕ(x)dx)\exp (-k \int_{t}^{t+\Delta t} \phi(x) d x)是人为的耗散项,随时间减少。ωiω_iξiξ_i将随时间消散, 邵氏等人推导了涡度人工耗散方程。对于高曲率区域中的SPH粒子,我们将迅速抑制湍流以保持形状细节,因此我们增大常数kk并更改φ(x)φ(x)以加快下降速度。 人工耗散方法最终可以使高曲率区域保持形状细节,而低曲率区域可以连续生成和抑制湍流,从而形成连续变化的动态湍流。 请注意,使用以前的基于SPH的形状控制方法来实现此功能相当困难。