反映FiPy中的边界条件

时间:2018-08-04 01:50:36

标签: differential-equations fipy

我正在尝试求解FiPy中的对流扩散方程。目前,我试图实现的只是一个Neumann边界条件,以便波在右侧边界处反射回,而不是传播出域。

我添加了以下行:

phi.faceGrad.constrain(0,mesh.exteriorFaces)

但这似乎没有任何改变。

我施加了错误的边界条件吗?我加错了吗?我已经搜索过了,但是似乎找不到一个示例,该示例具有从边界反射的波的简单属性!我的代码如下。非常感谢。

from fipy import *

nx = 100
L = 1.
dx = L/nx
steps = 160
dt = 0.1
t = dt * steps

mesh = Grid1D(nx=nx, dx=dx)
x = mesh.cellCenters[0]

phi = CellVariable(name="solution variable", mesh=mesh, value=0.)
phi.setValue(1., where=(x>0.03) & (x<0.09))

# Diffusion and convection coefficients
D = FaceVariable(name='diffusion coefficient',mesh=mesh,value=1.*10**(-4.))
C = (0.1,)

# Boundary conditions
phi.faceGrad.constrain(0, mesh.exteriorFaces)

eq = TransientTerm() == DiffusionTerm(coeff=D) - ConvectionTerm(coeff=C)

for step in range(steps):
    eq.solve(var=phi, dt=dt)
    if step%20==0:
        viewer = Viewer(vars=phi, datamin=0., datamax=1.)
        viewer.plot()

0 个答案:

没有答案