from fipy import *
nx = 50
dx = 1.
mesh = Grid1D(nx=nx, dx=dx)
phi = CellVariable(name="solution variable",
mesh=mesh,
value=0.)
D = 1.
valueLeft = 1
valueRight = 0
phi.constrain(valueRight, mesh.facesRight)
phi.constrain(valueLeft, mesh.facesLeft)
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff=D)
timeStepDuration = 0.9 * dx**2 / (2 * D)
steps = 100
phiAnalytical = CellVariable(name="analytical value",
mesh=mesh)
viewer = Viewer(vars=(phi, phiAnalytical),
datamin=0., datamax=1.)
viewer.plot()
x = mesh.cellCenters[0]
t = timeStepDuration * steps
try:
from scipy.special import erf
phiAnalytical.setValue(1 - erf(x / (2 * numerix.sqrt(D * t))))
except ImportError:
print "The SciPy library is not available to test the solution to \
the transient diffusion equation"
for step in range(steps):
eqX.solve(var=phi,
dt=timeStepDuration)
viewer.plot()
我试图从fipy示例列表中实现一个例子,即1D扩散问题。但我无法将结果视为情节。 我已按照示例代码中的建议正确定义了查看器。仍然没有帮助。 解决方案矢量运行良好。 但我无法使用查看器功能进行绘图。有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
您的代码在我的计算机上正常运行。可能是FiPy使用的绘图库存在问题。
检查原始示例是否有效(只需从fipy文件夹中运行)
python examples/diffusion/mesh1D.py
如果没有,请从项目https://github.com/usnistgov/fipy的github页面下载FiPy并再次尝试该示例。如果没有,请检查绘图库是否已正确安装。
无论如何,您应该指定您正在使用的平台以及您获得的错误。我第一次在绘图库中遇到了一些问题。