我尝试运行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.235、0.278627和-0.166620 (而不是162.790867927、0.265072740929和-0.150290488304)。有人知道我为什么会得到不同的价值观吗?我试着改变了求解器(使用了not,Trilinos和py稀疏),但是结果并没有改变到12位数。速度剖面看起来类似于在他们的手册中显示的,但我仍然担心一些东西是不对的。
我在Linux上运行它(python 2.7.14,fipy 3.2,py稀疏1.2.dev0,Trilino 12.12,scipy 1.2.1)和Windows (python 2.7.15,fipy 3.1.3,fipy 1.1.0)。
发布于 2019-09-26 15:00:59
当作为测试套件的一部分运行时,此示例只执行5次扫描,并且数值检查是硬连接的。当您单独运行该示例时,它会执行300次扫描,并且解决方案会更好(或至少不同)收敛。除了不是用一种非常健壮的方式写的之外,这个示例没有什么问题。谢谢你对这个问题的询问,我们将尽力清理这个例子。
https://stackoverflow.com/questions/58102525
复制相似问题