首页 > 解决方案 > 在 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()

标签: differential-equationsfipy

解决方案


推荐阅读