首页 > 解决方案 > FiPy 的 stokesCavity 示例返回 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

当我尝试运行此示例时,我的输出是
False
False
False
我得到的右上角单元格的实际值是129.2350.278627-0.166620(而不是 162.790867927、0.265072740929 和 -0.150290488304)。有谁知道为什么我会得到不同的值?我尝试更改求解器(使用 scipy、Trilinos 和 pysparse),但结果不会更改到第 12 位。速度曲线看起来与他们手册中显示的相似,但我仍然担心有什么不对劲。
我在 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)上运行它。

标签: pythonfipy

解决方案


当作为测试套件的一部分运行时,此示例仅执行 5 次扫描,并且数字检查为此硬连线。当您单独运行该示例时,它会进行 300 次扫描,并且解决方案会更好(或至少不同地)收敛。这个例子没有任何问题,除了它没有以非常健壮的方式编写。感谢您提出这个问题;我们将尝试清理示例。


推荐阅读