python - 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.235、0.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)上运行它。
解决方案
当作为测试套件的一部分运行时,此示例仅执行 5 次扫描,并且数字检查为此硬连线。当您单独运行该示例时,它会进行 300 次扫描,并且解决方案会更好(或至少不同地)收敛。这个例子没有任何问题,除了它没有以非常健壮的方式编写。感谢您提出这个问题;我们将尝试清理示例。
推荐阅读
- javascript - JQuery 递归切换子项
- eclipse - 是否有类似于 netbeans 或 eclipse 中的 VScode 中的 ctrl+d 可以一次更改多行的功能?
- html - 使用 Parsel 选择器提取类名内容时绕过 em 标签
- angular - 在到达服务器之前,Angular 7 对服务器的所有请求都处于待处理状态
- android - 面临与元素类型“uses-permission”关联的错误“tools:node”未绑定
- google-analytics - 我们如何使用谷歌分析跟踪网站上的 mp4 视频?
- php - Laravel - LoginController::authenticated() 没有在每次登录时触发?
- solr - 尽管退出,Solr 找不到配置文件
- c# - 返回每月的第 4 天而不是第 4 天
- python-3.x - Python:我有文本文件,需要按日期时间数据升序排序