Dear all,
I have a probably simple problem: I tried to solve the 2D
Convection-Diffusion problem with a velocity field that is spatially
dependent. I initialize my solution variable, phi, as 0.5. I found out that
If I don't implement the inlet boundary condition on the left (Dirichlet on
the left, on the line 24) and just impose velocity field, the solution
changes a lot when I increase mesh size. However, If I implement inlet
boundary condition, the solution seems stays the same as the mesh size
increases. I am not completely sure why mesh sizes will play a role in the
first case. Could someone clarify this problem to me ? Thank you very
much. I have copied and pasted the code in the following, and attached the
source code in the email.
-----------------------------------
from fipy import *
# when I change the nx from 400 to 200 and to 100 and ny from 400 to 200
and to 100.
# The solutions changes a lot. I don't know exactly why the mesh would
change
# the solution this much.
nx = 200.
ny = 200.
dx = 1/nx
dy = 1/ny
L = 1.
mesh = Grid2D(dx=dx, dy=dy, nx=nx, ny=ny)
#initial phi is equal to 0.5 in all the space
phi = CellVariable(name = "solution variable",mesh = mesh, value = 0.5)
# the follwing set up the velocity in vector form.
# for those direction that I don't need it, I set its value as zero.
velocityX = CellVariable(value = mesh.y,mesh=mesh, name=r'$u_x$') # linear
velocity profile
velocityY = CellVariable(value = 0,mesh=mesh, name=r'$u_y$') # zero
velocity in y direction
velocityVector = CellVariable(mesh=mesh, name=r'$\vec{u}$', rank=1)
velocityVector[0] = velocityX
velocityVector[1] = velocityY
D = 0.1
#This is the inlet boundary conditions that I tried to implement.
#phi.constrain(1, where = mesh.facesLeft)
viewer = Matplotlib2DViewer(vars=phi, title="final solution")
eq = (0 == DiffusionTerm(coeff=D)
- ExponentialConvectionTerm(coeff = velocityVector.faceValue))
eq.solve(var = phi)
viewer.plot()
--------------------------------------------
Thank you very much!
Best,
Zhekai
from fipy import *
# when I change the nx from 400 to 200 and to 100 and ny from 400 to 200 and to
100.
# The solutions changes a lot. I don't know exactly why the mesh would change
# the solution this much.
nx = 200.
ny = 200.
dx = 1/nx
dy = 1/ny
L = 1.
mesh = Grid2D(dx=dx, dy=dy, nx=nx, ny=ny)
#initial phi is equal to 0.5 in all the space
phi = CellVariable(name = "solution variable",mesh = mesh, value = 0.5)
# the follwing set up the velocity in vector form.
# for those direction that I don't need it, I set its value as zero.
velocityX = CellVariable(value = mesh.y,mesh=mesh, name=r'$u_x$') # linear
velocity profile
velocityY = CellVariable(value = 0,mesh=mesh, name=r'$u_y$') # zero velocity in
y direction
velocityVector = CellVariable(mesh=mesh, name=r'$\vec{u}$', rank=1)
velocityVector[0] = velocityX
velocityVector[1] = velocityY
D = 0.1
#This is the inlet boundary conditions that I tried to implement.
#phi.constrain(1, where = mesh.facesLeft)
viewer = Matplotlib2DViewer(vars=phi, title="final solution")
eq = (0 == DiffusionTerm(coeff=D)
- ExponentialConvectionTerm(coeff = velocityVector.faceValue))
eq.solve(var = phi)
viewer.plot()_______________________________________________
fipy mailing list
[email protected]
http://www.ctcms.nist.gov/fipy
[ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]