Python Fipy中对流系数的处理:对流扩散方程
我正在尝试使用fipy在python中求解对流扩散方程。我想操纵对流系数,使它指向区域的中心 我的代码是Python Fipy中对流系数的处理:对流扩散方程,python,vector,pde,coefficients,fipy,Python,Vector,Pde,Coefficients,Fipy,我正在尝试使用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 = Cell
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()
从fipy导入*
#设置网格和离散化空间
nx=10
dx=1。
网格=Grid1D(nx=nx,dx=dx)
x=网格。单元中心[0]
#设置结果变量并添加特殊条件
φ=单元变量(name=“solution variable”,网格=网格,值=0。)
φ设置值(1,式中=(4x))
#恶劣条件
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
查看器=查看器(vars=phi,datamin=-0.1,datamax=1.5)
viewer.plot()
#扩散和对流系数
D=1。
C=(1.,)
#设置PDE
eqX=瞬变项()=扩散项(系数=D)-\
对流项(系数=C)
#求解瞬态项
timeStepDuration=0.1
步骤=15
t=时间步长持续时间*步长
对于步进范围(步数):
方程求解(var=phi,dt=timeStepDuration)
#绘图结果
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
查看器=查看器(vars=phi,datamin=0,datamax=1。)
viewer.plot()
如你所见,随着时间的推移,波的运动方向由对流系数的矢量确定。当波只向我的区域中心移动时,如何处理对流系数的代码
任何建议都将不胜感激 对流系数控制行波的方向。例如,要使波始终朝域中心移动,请将对流系数更改为
C = CellVariable(mesh=mesh, rank=1)
C[:] = 1.
C.setValue(-1., where=x > 5.)
如果波位于域的前半部分,这将使波以1的速度平流;如果波位于域的后半部分,则以-1的速度平流。如果初始方波偏离中心,则它将返回中心。您好,我已将您的建议放入我的代码中,但它不起作用。它返回一个错误,指示对流系数必须是向量。抱歉,我省略了
rank=1
参数,使系数成为向量。