2
저는 fipy를 사용하여 python에서의 이류 확산 방정식을 풀려고합니다. 대류 계수를 조작하여 도메인의 중심을 가리키고 싶습니다.Fipy에서의 이류 계수 조작 : Advection 확산 수식
내 코드는 당신이 볼 수있는 것처럼, 시간이 함께 파도 대류 계수의 벡터에 의해 설립 된 방향으로 이동
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()
입니다. 웨이브의 대류 계수를 조작하는 코드는 어떻게하면 내 도메인의 중심쪽으로 만 움직일 수 있습니까?
의견을 보내 주시면 감사하겠습니다.
안녕하세요, 귀하의 제안을 제 코드에 넣었지만 작동하지 않았습니다. 대류 계수가 벡터 여야 함을 나타내는 오류를 반환합니다. –
죄송합니다. 계수를 벡터로 만들기 위해'rank = 1' 인수를 생략했습니다. – wd15
정말 고마워요. –