从二维矢量场中以数值方式提取螺线管(又名无散度)场的软件/代码

计算科学 数值分析 流体动力学 软件 向量
2021-12-02 10:22:54

有人可以指点我从二维矢量场中提取螺线管(又名无散度)场的软件/代码吗?

有大量的论文和文档描述了如何做到这一点,但由于某种原因,没有一个作者(或其他任何人)在网上发布了一段简单的源代码来实现该功能。我发现的只是相当大的包或非常神秘的代码。

更新。更具体地说,对于我的情况:我有两个大小为 64x64 的二维数组,带有双精度浮点数。这两个阵列代表流体流动的 x 和 y 速度。使用周期性边界。我想将速度的螺线管部分提取到两个新的二维阵列中。

1个回答


经过一番搜索,我在Jos Stam 的文章“游戏的实时流体动力学”中找到了一个名为 project() 的 C/C++ 函数
http://www.dgp.toronto.edu/people/stam/reality/Research/pdf /GDC03.pdf
我必须进行一些编辑,例如增加迭代变量k(取决于输入字段的发散程度)和使用周期性边界。之后它对我有用并解决了我的问题。这篇文章还包含对函数输出内容的相当直观的描述,而没有详细介绍它是如何做到这一点的。

我还发现相当小的 Python 软件包 windspharm 可以提取螺线管场 http://ajdawson.github.io/windspharm/api/windspharm.cdms.html#windspharm.cdms.VectorWind.nondivergentcomponent
我没有测试这个。