FiPy 的 stokesCavity 示例 returns False

stokesCavity example for FiPy returns False

我已尝试 运行 stokesCavity 示例,该示例使用盖子驱动的边界条件进行流动。在代码的末尾,将右上角单元格中的值与一些参考值进行比较。

>>> print(numerix.allclose(pressure.globalValue[..., -1], 162.790867927)) #doctest: +NOT_PYAMGX_SOLVER
1
>>> print(numerix.allclose(xVelocity.globalValue[..., -1], 0.265072740929)) #doctest: +NOT_PYAMGX_SOLVER
1
>>> print(numerix.allclose(yVelocity.globalValue[..., -1], -0.150290488304)) #doctest: +NOT_PYAMGX_SOLVER
1

当我尝试运行这个例子时,我的输出是



我为右上角单元格获得的实际值是 129.2350.278627-0.166620(而不是162.790867927、0.265072740929 和 -0.150290488304)。有谁知道为什么我得到不同的值?我试过更改求解器(使用 scipy、Trilinos 和 pysparse),但结果不会更改到第 12 位。速度曲线看起来与他们 manual 中显示的曲线相似,但我仍然担心有问题。
我 运行 它在 Linux (python 2.7.14, fipy 3.2, pysparse 1.2.dev0, Trilinos 12.12, scipy 1.2.1) 和 Windows (python 2.7.15,fipy 3.1.3,scipy 1.1.0)。

当 运行 作为测试套件的一部分时,此示例仅执行 5 次扫描,并且数字检查是硬连接的。当您 运行 孤立的示例时,它会进行 300 次扫描并且解决方案更好(或至少不同)收敛。除了 not written in a very robust way 之外,该示例没有任何问题。感谢您询问此事;我们将尝试清理示例。