1
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 扩散问题。但我无法将结果视为一个情节。我已经按照示例代码中的建议正确定义了查看器。仍然没有帮助。解向量运行良好。但我无法使用查看器功能进行绘图。谁能帮忙?谢谢你!

4

1 回答 1

0

你的代码在我的电脑上运行良好。可能是 FiPy 使用的绘图库的问题。

检查原始示例是否有效(只需从 fipy 文件夹中运行)

python examples/diffusion/mesh1D.py

如果没有,请从项目的 github 页面https://github.com/usnistgov/fipy下载 FiPy并再次尝试该示例。如果没有,请检查绘图库是否已正确安装。

无论如何,您应该指定您正在使用的平台以及您遇到的错误。第一次我也遇到了绘图库的一些问题。

于 2015-04-10T09:43:52.083 回答