fipy - 级别设置1D

时间:2015-04-21 18:48:25

标签: numerical-methods differential-equations fipy

我正在尝试运行下面的代码来设置1D级别的问题(例如在fipy网页中)。我收到了这个错误:

追踪(最近一次通话):   文件“C:/ Users / sgowda / Documents / pde solver code / level set 1D.py”,第20行,in     var.calcDistanceFunction()   在calcDistanceFunction中输入文件“C:\ Users \ sgowda \ AppData \ Local \ Continuum \ Anaconda \ lib \ site-packages \ fipy \ variables \ distanceVariable.py”,第335行     提出异常,“在$ PATH上找不到lsmlibskfmm” 例外:在$ PATH

上找不到lsmlibskfmm

你能否告诉我如何解决这个问题。我试着调查distancefucntion(),但我不确定这个错误意味着什么?

from fipy import Grid1D, CellVariable, TransientTerm, DiffusionTerm, Viewer, DistanceVariable
import matplotlib.pyplot as plt

velocity = 1.
dx = 1.
nx = 10
timeStepDuration = 1.
steps = 2
L = nx * dx
interfacePosition = L / 5.

from fipy.tools import serialComm
mesh = Grid1D(dx=dx, nx=nx, communicator=serialComm)

var = DistanceVariable(name='level set variable',
                       mesh=mesh,
                       value=-1.,
                       hasOld=1)
var.setValue(1., where=mesh.cellCenters[0] > interfacePosition)
var.calcDistanceFunction()

advEqn = TransientTerm() + FirstOrderAdvectionTerm(velocity)

viewer = Viewer(vars=var, datamin=-10., datamax=10.)
viewer.plot()
for step in range(steps):
    var.updateOld()
    advEqn.solve(var, dt=timeStepDuration)
    viewer.plot()

plt.show()

1 个答案:

答案 0 :(得分:1)

FiPy没有本机级别设置实现,因此使用LSMLIB或Scikit-fmm来提供级别设置/快速行进方法功能。

要查看是否正确安装了它们,请使用

$ python -c “import pylsmlib; pylsmlib.test()”

$ python -c “import skfmm; skfmm.test()”

进行测试。

FiPy文档中概述了该要求,请参阅http://www.ctcms.nist.gov/fipy/INSTALLATION.html#level-set-packages

最初安装Scikit-fmm可能更容易,请参阅https://pythonhosted.org/scikit-fmm/,但

$ pip install scikit-fmm

应该有用。

相关问题