我需要使用 fipy 在周期性边界条件下求解扩散方程,但我希望有一个取决于位置的漂移项,如下所示:
我是 fipy 的新手,我能够解决扩散系数与空间相关的扩散问题,但我遇到了这个问题。
有人知道如何管理吗?或者,如果你知道一种更简单的方法来数值求解这个方程。
我需要使用 fipy 在周期性边界条件下求解扩散方程,但我希望有一个取决于位置的漂移项,如下所示:
我是 fipy 的新手,我能够解决扩散系数与空间相关的扩散问题,但我遇到了这个问题。
有人知道如何管理吗?或者,如果你知道一种更简单的方法来数值求解这个方程。
可变对流项的工作方式与可变扩散项的工作方式相同:1表示(例如)(以及为简单起见的狄利克雷条件),你可以写
from fipy import *
# generate mesh
nx = 50
dx = 1.
mesh = Grid1D(nx=nx, dx=dx)
x = mesh.cellCenters[0]
# solution phi on mesh with boundary conditions phi(0)=0, phi(1)=1
phi = CellVariable(name="solution variable", mesh=mesh, value=0.)
phi.constrain(0., mesh.facesRight)
phi.constrain(1., mesh.facesLeft)
# define pde phi_t = phi_xx + ((1+x^2)*phi)_x
D = 1.
omega = 1.+x**2
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff=D) + \
ConvectionTerm(CellVariable(mesh=mesh,value=[omega]))
# time steps
timeStepDuration = 0.9 * dx**2 / (2 * D)
steps = 100
t = timeStepDuration * steps
# solve
for step in range(steps):
eqX.solve(var=phi, dt=timeStepDuration)
1. 见http://ctcms.nist.gov/fipy/documentation/FAQ.html(在“如果我的术语涉及因变量,但不涉及 FiPy 的位置怎么办?”)