1

我正在尝试针对水平集一维问题运行下面的代码(例如在 fipy 网页中)。我收到此错误:

回溯(最后一次调用):文件“C:/Users/sgowda/Documents/pde solver code/level set 1D.py”,第 20 行,在 var.calcDistanceFunction() 文件“C:\Users\sgowda\AppData\ Local\Continuum\Anaconda\lib\site-packages\fipy\variables\distanceVariable.py”,第 335 行,在 calcDistanceFunction 中引发异常,“在 $PATH 上lsmlibskfmm找不到”异常:在 $PATH 上lsmlib也找不到也skfmm找不到小路

你能否让我知道如何解决这个问题。我尝试查看 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()
4

1 回答 1

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

应该管用。

于 2015-04-23T15:18:32.430 回答