【发布时间】:2021-05-15 16:38:33
【问题描述】:
我修改了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:
我是否实现了零梯度边界条件,对吗?我只找到了二维示例。在这个一维问题中,valueLeft 甚至必须是一个向量吗?我尝试使用标量,但仍然遇到同样的错误。
我是 FiPy 的新手,我知道这种形式的 PDE 可能没有任何意义,但我想从一个更简单的例子开始,最后我想用这些边界条件和一个资源。添加源会解决我的问题吗?
任何帮助将不胜感激。
【问题讨论】: