我正在按照Jos Stam的论文进行研究。
在本文中,它说速度场必须是质量守恒的。以我的理解,流入细胞的速度应该与流出的速度相同。
为了获得这个质量守恒场,使用了霍奇分解,文字说:
"every vector field is the sum of a mass conserving field and a gradient field."
Velocity field = mass conserving field + gradient field
1)是否有一种直观的方法来理解上述说法为何正确?
2)文本还说,可以通过解决泊松方程来计算梯度场,是否简单解释了泊松方程的原因可以用来近似这个领域?我想知道还有什么可以代替。
您可以在深入研究所有数学之前,为我提供一些有助于直观理解我的两个问题的资源吗?
#1 楼
假设我有一种像水一样不可压缩的流体。即,其密度是恒定的。我可以找出这种流体如何流动。假设我在各个点上注射染料,然后观察染料颗粒的移动方式。我可以估计每个点的速度,即速度场$ \ mathbf {w} $。但是水是不可压缩的。这意味着真实速度场$ \ mathbf {u} $必须保持质量。我想“校正”我的估计值\\ mathbf {w} $来找到最接近的质量守恒速度场。通过矢量场的发散来计算流体的局部累积或耗竭。 ,$ \ operatorname {div} \ mathbf {w} $。 (Stam将$ \ mathbf {w} $的差异写为$ \ nabla \ cdot \ mathbf {w} $。)差异是一个导数,在这里很重要,因为这意味着它是线性的。两个向量字段之和的差异就是它们的差异之和:
$$ \ operatorname {div}(\ mathbf {u} + \ mathbf {v})= \ operatorname {div} \ mathbf {u } + \ operatorname {div} \ mathbf {v}。 $$
我们想找到一个质量守恒的领域;也就是说,我们要找到一个零散度的字段。这意味着我们要构造一个字段$ \ mathbf {v} $,其散度与$ \ mathbf {w} $相同;然后
$$ \ operatorname {div} \ mathbf {w}-\ operatorname {div} \ mathbf {v} = \ operatorname {div}(\ mathbf {w}-\ mathbf {v})= 0 $ $
,这样我们就可以得到质量守恒字段$ \ mathbf {u} = \ mathbf {w}-\ mathbf {v} $。
唯一的问题是我们如何构造一个给定差异的字段。由于原因,我将在下面解释几段,我们说$ \ mathbf {v} $是标量字段$ q $的梯度,$ \ mathbf {v} = \ operatorname {grad} q $。 (Stam将其写为$ \ nabla q $。)然后,我们有
$$ \ operatorname {div} \ mathbf {w} = \ operatorname {div} \ mathbf {v} =
\ operatorname { div} \ operatorname {grad} q。$$
值得一说。向量场的散度是一个标量场;在每个点上,它给出了流体的局部堆积或消耗。散度和梯度都是导数(这就是为什么它们也都可以用$ \ nabla $编写的原因)。因此,该方程式表示标量场($ \ mathbf {w} $的散度)是标量场$ q $的特定二阶导数。此派生类称为拉普拉斯算子(Stam将其写为$ \ nabla ^ 2 q $)。与标量字段$ q $和$ a $
$$ \ operatorname {div} \ mathrm {grad} \ q = a $$
有关的微分方程是泊松方程。您可以用它来估计$ q $,而不是因为它是$ q $的实际定义。
因此,要“校正”我们的估计$ \ mathbf {w} $,我们可以计算其散度(标量字段)
$$ f = \ operatorname {div} \ mathbf {w},$$
求解Poisson方程以找到标量字段$ q $
$ $ \ operatorname {div} \ operatorname {grad} q = f,$$
,然后从$ \ mathbf {w} $中减去$ \ operatorname {grad} q $来找到我们的质量守恒速度场
$$ \ mathbf {u} = \ mathbf {w}-\ operatorname {grad} q。 $$
上面我们只是假设$ \ mathbf {v} = \ operatorname {grad} q $对于$ q $。我们真正想要的是找到一个字段$ \ mathbf {v} $,在某种意义上,该字段是具有给定散度的“最小”字段,因此我们可以找到“最近的”质量守恒字段$ \ mathbf {u} = \ mathbf {w}-\ mathbf {v} $;在这里,我将说明标量场的梯度如何满足该要求。
我们有固定数量的流体在空间中流动。
如果我们的流量是质量守恒的,那么我们有一定量的流体,没有局部积聚或消耗。如果我们根本没有运动,那么流体必须循环运动。与我们使用散度运算符测量局部累积的方式相同,我们可以通过使用另一个向量运算符curl(可以将其写为$ \ nabla \ times \ mathbf {v} $)来测量流的局部循环行为。 。广义上讲,某个点的卷曲给出了该点附近绕流的轴。
现在,考虑标量场$ \ operatorname {grad} q $的梯度。 (例如,$ q(x,y)= \ sin x \ cos y $。)可以将电位绘制为高度场:
然后该场的梯度放在每个点指向最陡峭的上坡方向的矢量:
但是由于您总是尽可能快地“上坡”,因此我认为很明显,此矢量场中没有循环!实际上,对于任何标量潜在的$ q $,
$$ \ operatorname {curl} \ operatorname {grad} q = 0! $$
还有另一个相似的标识:$ \ operatorname {div} \ operatorname {curl} \ mathbf {v} = 0 $;不幸的是,我想不出那种直觉。 (但是请查看Math.SX的答案以获得更多数学解释。)我们可以使用以下两个身份来明确地编写Hodge分解:$ \ mathbf {w} = \ mathbf {v} + \ mathbf {u} $,其中$ \ mathbf {v} $没有卷曲,$ \ mathbf {u} $没有散度,或者
$$ \ mathbf {w} = \ operatorname {grad} q + \ operatorname {curl} \ mathbf {\ nu},¹$$
用于某些标量字段$ q $和向量字段$ \ mathbf {\ nu} $。
¹如果您的空间不简单(例如有限且呈球形),则霍奇分解实际上会更加复杂;在更复杂的空间(例如圆环的表面)上,我们有无卷曲的场,它不是任何东西的梯度,而有无散度的场子不是任何东西的卷曲。但是,对于CG中的大多数流体建模而言,这通常不是问题。
评论
$ \ begingroup $
感谢您的回答!您对Stam论文中所用公式的起源的解释,确实有助于加深对数学的理解。
$ \ endgroup $
–Mn9
18-10-21在13:25