Пример stokesCavity для FiPy возвращает False - PullRequest
0 голосов
/ 25 сентября 2019

Я попытался запустить пример 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).

1 Ответ

0 голосов
/ 26 сентября 2019

При запуске в составе набора тестов в этом примере выполняется только 5 циклов, и для этого используется цифровая проверка.Когда вы запускаете пример изолированно, он делает 300 разверток, и решение лучше (или, по крайней мере, по-другому) сходится.В этом примере нет ничего плохого, кроме того, что написано не очень надежно .Спасибо, что спросили об этом;попробуем привести пример в порядок.

...