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. но я не могу рассматривать результат как сюжет. Я правильно определил зрителя, как это предлагается в коде для примера. Все еще не помогает. Вектор решения работает отлично. Но я не могу использовать функцию просмотра. может ли кто-нибудь помочь? Спасибо!fipy viewer not plotting
Возможно, вы захотите добавить сообщение об ошибке из консоли в свой вопрос. Кроме того, импортируйте определенный просмотрщик с чем-то вроде 'from fipy.viewers.matplotlibViewer.matplotlib1DViewer импортируйте Matplotlib1DViewer в качестве средства просмотра под импортом' fipy', чтобы помочь диагностировать проблему. Существуют блоки 'try' и' except' вокруг некоторых импортируемых зрителей, которые могут маскировать ошибку. – wd15
спасибо за ответ. импортщик matplotlib viewer решил проблему. – sankethrg