在学习太极图形课S1第10讲:流体仿真01
,但是,我有两个问题没有想明白。
-
在P2 时间积分:积分算子分解
中讲到,可以假设物体是弱可压缩的,于是在Projection/pressure solver
的时候,就不需要求解方程组了,可以直接使用 dv=-\frac {1}{\rho}\nabla(k(\rho-\rho_0)) 。我的问题是,这里的 \rho 怎么来的?视频中说直接看作已知量。
-
太极图形课S1第10讲
中,花费了极大的篇幅介绍SPH
技术,我不太清楚为什么需要这项技术?在P4 实现细节: WCSPH
中,介绍了利用SPH
技术来计算 \rho ,但是之前不是假设 \rho 是已知的吗?为什么这里又需要计算?
通过跟别人的讨论,这里我弄明白了第一个问题:
\rho 是宏观状态下,物体的密度,而不是粒子的密度。粒子在不停的运动,所以这个密度会发生改变。但是,粒子运动后,要统计密度,这个时候就需要用 SPH
技术来统计密度。
网上的一份资料中给出了一种理解:对于拉格朗日视角,粒子的流速是: v(x_0, y_0, z_0, t) ,这里的 (x_0, y_0, z_0) 实际上表示的是不同的粒子。
于是,全微分可以写成: Dv/Dt = dv/dt + dv/dx_0 \cdot dx_0/dt + dv/dy_0 \cdot dy_0/dt + dv/dz_0 \cdot dz_0/dt 。而这里的 (x_0, y_0, z_0) 都与时间无关,于是: $dx_0/dt = dy_0/dt = dz_0/dt = 0$,于是全微分就是: Dv/Dt = dv/dt + dv/dx_0 \cdot 0 + dv/dy_0 \cdot 0 + dv/dz_0 \cdot 0 = dv/dt ,于是全微分退化成了速度对时间的导数。注意: 这里只是 dx_0/dt = dy_0/dt = dz_0/dt = 0 , dv/dx_0 并不等于0,并不影响后面的 \nabla^2v 。