目的:
参考《GPU Gems》,尝试重现2D流体模拟。
本节解释文中对上上节Navier–Stokes equations的变形,及需要变形的原因,导出最终算法的结构。
参考:
观察:
分析:
1.边界
归于实际,我们的这些场是要应用在一个有限的2D区域上的,不妨称此区域为D。一般来说,只有在其边界上处处可微,才能应用这些定理和公式。不过我们由于是离散形式,又可以不考虑4个角,也能在边界上进行一般操作,问题不大,后面会谈到。
不过,我发现了一个从大学时期就没懂的问题,为啥区域D的边界总是写成 ?这跟偏导有啥关系?
经过科学搜索,竟然发现了陶哲轩?的回答:
其实本质道理十分显然,下图既可以适用于2D,也可以想象成3D:
(注意:已更换符号)
当趋向0,D区域增加的体积趋向于D区域的表面积(D区域边界的模),去除掉绝对值符号,把
当作D的边界也合情合理。
对于答主下面拿圆举例的公式,我觉得有失细致,乍看会误导人,以为圆面积对r导数一下就是周长,其他图像也一样。其误导之处在于这里的半径r与上面的r-neighbourhoods不是同一个东西。在圆这个例子中,如果要和上面的思想保持一致,那么就该这么写,这里我根据第一段的r(r-neighbourhoods)的思想,引出圆的位矢变化长度p。重设圆的半径为R。
那么,所谓的就是函数
,对p求导并令p=0,得
,这样,这个形式和p就和上面的r-neighbourhoods对应了。
注意这里的函数G也不是唯一的。因为把一个图形扩出去,不一定要沿着法线方向,你想怎么来就怎么来,函数也千变万化,但是对微变化量求导,取0就为原图形周长是一定的。所以没把这个p规定死为位矢变化量或法线方向大小,就说是neighbourhoods。
另一种解释有关拓扑,咱也不懂,就不说了。
总的来说,用