首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用FiPy求解具有一维零梯度边界条件和零通量条件的偏微分方程组

用FiPy求解具有一维零梯度边界条件和零通量条件的偏微分方程组
EN

Stack Overflow用户
提问于 2021-02-12 05:31:01
回答 2查看 73关注 0票数 0

我修改了examples.convection.exponential1D.mesh1D示例,当我运行它时,它给出了一个错误。

代码语言:javascript
运行
复制
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)

当我运行它时,我得到以下错误:

代码语言:javascript
运行
复制
...\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的新手,我知道这种形式的偏微分方程可能没有任何意义,但我想从一个更简单的例子开始,最后我想用这些边界条件和源来求解一个偏微分方程。添加一个源码能解决我的问题吗?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-12 06:33:20

这是一个警告,而不是一个错误。在打印var的值时,它们都是零,这是给定边界条件的正确答案。

该警告是由代码残差引起的divide by zero warning引起的,应对此进行修复,以处理残差从零开始的情况。但是,长处和短处是让用户忽略该警告,因为求解器仍然返回正确的结果。

票数 0
EN

Stack Overflow用户

发布于 2021-02-12 06:30:07

这是一个警告,而不是一个错误。这只是意味着我们在归一化一个零误差的方程时并不是很聪明。

PDE仍然可以解决(尽管解决方案不是很有趣)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66163197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档