在 Fipy 中操纵平流系数:平流扩散方程
Manipulating advection coefficient in Fipy: Advection Diffusion Equation
我正在尝试使用 fipy 求解 python 中的平流扩散方程。我想操纵对流系数,使其指向域的中心。
我的密码是
from fipy import *
# Setting mesh and discretising space
nx = 10
dx = 1.
mesh = Grid1D(nx=nx, dx=dx)
x = mesh.cellCenters[0]
# Setting variable of results and adding inicial conditions
phi = CellVariable(name="solution variable", mesh=mesh, value=0.)
phi.setValue(1., where=(4 < x) & (6 > x))
# Plotting inicial conditions
if __name__ == '__main__':
viewer = Viewer(vars=phi, datamin=-0.1, datamax=1.5)
viewer.plot()
# Diffusion and convection coefficients
D = 1.
C = (1.,)
# Setting PDE
eqX = TransientTerm() == DiffusionTerm(coeff=D) - \
ConvectionTerm(coeff=C)
# Solving Transient term
timeStepDuration = 0.1
steps = 15
t = timeStepDuration * steps
for step in range(steps):
eqX.solve(var=phi, dt=timeStepDuration)
# Plotting results
if __name__ == '__main__':
viewer = Viewer(vars=phi, datamin=0., datamax=1.)
viewer.plot()
如您所见,随着时间的推移,波的移动方向由对流系数向量确定。控制波的对流系数的代码如何只向我的域的中心移动?
如有任何建议,我们将不胜感激!
对流系数控制行波的方向。例如,要使波总是向域的中心传播,将对流系数更改为
C = CellVariable(mesh=mesh, rank=1)
C[:] = 1.
C.setValue(-1., where=x > 5.)
如果波在域的前半部分,这将以速度 1 平流波,如果在域的后半部分,则以 -1 速度平流。如果初始方波偏离中心,那么它将 return 到中心。
我正在尝试使用 fipy 求解 python 中的平流扩散方程。我想操纵对流系数,使其指向域的中心。
我的密码是
from fipy import *
# Setting mesh and discretising space
nx = 10
dx = 1.
mesh = Grid1D(nx=nx, dx=dx)
x = mesh.cellCenters[0]
# Setting variable of results and adding inicial conditions
phi = CellVariable(name="solution variable", mesh=mesh, value=0.)
phi.setValue(1., where=(4 < x) & (6 > x))
# Plotting inicial conditions
if __name__ == '__main__':
viewer = Viewer(vars=phi, datamin=-0.1, datamax=1.5)
viewer.plot()
# Diffusion and convection coefficients
D = 1.
C = (1.,)
# Setting PDE
eqX = TransientTerm() == DiffusionTerm(coeff=D) - \
ConvectionTerm(coeff=C)
# Solving Transient term
timeStepDuration = 0.1
steps = 15
t = timeStepDuration * steps
for step in range(steps):
eqX.solve(var=phi, dt=timeStepDuration)
# Plotting results
if __name__ == '__main__':
viewer = Viewer(vars=phi, datamin=0., datamax=1.)
viewer.plot()
如您所见,随着时间的推移,波的移动方向由对流系数向量确定。控制波的对流系数的代码如何只向我的域的中心移动?
如有任何建议,我们将不胜感激!
对流系数控制行波的方向。例如,要使波总是向域的中心传播,将对流系数更改为
C = CellVariable(mesh=mesh, rank=1)
C[:] = 1.
C.setValue(-1., where=x > 5.)
如果波在域的前半部分,这将以速度 1 平流波,如果在域的后半部分,则以 -1 速度平流。如果初始方波偏离中心,那么它将 return 到中心。