2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 纯对流问题matlab matlab一个2D差分法解决对流扩散方程

纯对流问题matlab matlab一个2D差分法解决对流扩散方程

时间:2020-02-20 17:15:19

相关推荐

纯对流问题matlab matlab一个2D差分法解决对流扩散方程

是一个二维的对流扩散问题,对流在X方向, 扩散作用在Y 方向,所以方程为 dC/dt=D*d2C/dy2-V*dC/dx (注:

D= Diffusion coefficient, C=concentration, V=

流体速度,并假设它与表面的垂直方向Y成正比,即:V=a*Y. d2C/dy2表示浓度对Y的二阶导数。 ) 边界条件为:

1 ,C = C0 when y = 0 and 0

(表示在表面(y =

0)存在药品(扩散物质)的区域(0

2, C = 0 when y> 0.1cm for all x

(表示对难容物质来说,由于流动的因素,离表面一定距离后不存在溶质)

3, C = 0 when x = 0 for all y (因为在存在药品区域之前是 没有浓度的)

4, C = 0 when y = 0 and x> L (表示

在不存在药品的表面也没有浓度)

本人用论文中介绍的显示差分算法在MATLAB 编程 [C(i , j , k+1)- C(i , j , k)]/dt =

D/(dy)^2 * [ C(i , j-1 , k) - 2*C(i , j , k) + C(i , j+1 , k)] -

V/dx * [C(i , j , k) - C(i -1, j , k)]

下面是我的代码:

问题是,虽然可以得到仿真(步长设置不好还容易发散),但是明显没有对流项的作用,画出的图应该是从左到右被“冲”的感觉,实在找不到问题出在哪儿了,恳请大侠赐教,不胜感谢!

%%%%%%%%%%%%%%%%%%

clear

clc

D = [0 ,2 , 0 , 0.1 ] %%%% region of

0

0

Mx =200

My =100

N = 1000

T = 10

dif = 9.86*10^(-6) %%%%diffusion coefficient

alfa = 4.25

visco = 0.89

dx = (D(2) - D(1))/Mx;

dy = (D(4) - D(3))/My;

dt = T/N; t = [0:N]*dt;

%initialization and boundary condition

for j = 1:Mx + 1

for i = 1:My + 1

u(i,j) = 0 ;

end

end

for j = 1:Mx /2

u(1,j) = 1;

u(My+1,j) = 0;

end

ry = dif*dt/(dy*dy);

for k = 1:N

u_1 = u; t = k*dt;

for i= 2:My+1

vx = alfa*i*D(4)/My; %%%%to be

rx = vx*dt/dx;

rx1 = 1 - rx;

for j =2 : Mx

u(i , j )=ry*(u_1(i,j-1)-2*u_1(i , j)+u_1(i , j+1)) +rx1*u_1(i ,

j)+rx*u_1(i-1 , j);

end

end

for i = 1: My + 1

u(i , Mx + 1)=u(i , Mx);

end

end

i = 1:Mx+1;

j= 1: My+1;

[I, J]=meshgrid(i,j);

surf(I , J , u)

figure;

mesh(I, J , u)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。