Решение УЧП с одномерным граничным условием нулевого градиента и условием нулевого потока с FiPy

Я изменил пример examples.convection.exponential1D.mesh1D, и он выдает ошибку при запуске.

from fipy import CellVariable, Grid1D, DiffusionTerm, PowerLawConvectionTerm
from fipy.tools import numerix

diffCoeff = 1.
convCoeff = (10.,)
L = 10.
nx = 100
mesh = Grid1D(dx=L / nx, nx=nx)

valueLeft = (0.,)
valueRight = 0.    
var = CellVariable(mesh=mesh, name="variable")    
var.faceGrad.constrain(valueLeft, where=mesh.facesLeft)
var.constrain(valueRight, mesh.facesRight)

eq = (DiffusionTerm(coeff=diffCoeff)
      + PowerLawConvectionTerm(coeff=convCoeff))
eq.solve(var=var)

Когда я запускаю его, я получаю следующую ошибку:

...\fipy\solvers\scipy\linearLUSolver.py:41: RuntimeWarning: invalid value encountered in double_scalars
if (numerix.sqrt(numerix.sum(errorVector**2)) / error0)  <= self.tolerance:

Правильно ли я реализовал граничное условие с нулевым градиентом? Я нашел только 2D-примеры. В этой одномерной задаче valueLeft даже должен быть вектором? Я пробовал со скаляром, но все равно получил ту же ошибку.

Я новичок в FiPy и знаю, что это УЧП в этой форме может не иметь никакого смысла, но я хотел начать с более простого примера и, в конце концов, хочу решить УЧП с этими граничными условиями и источником. Решит ли мою проблему добавление источника?

Любая помощь будет оценена.


person Ferenc Lengyel    schedule 11.02.2021    source источник


Ответы (2)



Это предупреждение, а не ошибка. Это просто означает, что мы не очень умны в нормализации уравнения с нулевой ошибкой.

PDE все еще решает (хотя решение не очень интересное).

person jeguyer    schedule 11.02.2021