该模型为固定床动态吸附模型,模型和模型参数如下:
有两种求解方法:
1.对第一个方程经行有限差分离散,对第二个方程采用Crank-Nicolson方法离散,然后通过r=R处的边界条件联系起来求解,参见文献
《1Effect of Concentration-Dependent Surface Diffusivity on Simulation of Fixed Bed Sorption Systems》附录所示;
2.对第一个方程的床层方向z离散,对第二个方程粒径方向r离散,得到一系列关于时间的常微分方程组,然后通过r=R处的边界条件联系起来求解,参见文献
《1Adsorption dynamics of p-nitrophenol in structured fixed bed with microfibrous entrapped activated carbon》中第四页。
两种方法都尝试过,但是在两个方程的连接处不知道怎么处理(因为涉及到三维z,r,t,所以不知道怎么将两个方程通过边界条件联系起来求解),希望哪位大神帮帮忙,帮我用matlab编个程序,或者给我指点一二,谢谢了![ Last edited by 小木虫zb on 2014-2-26 at 10:00 ]
算法上好像也有问题,还是建议使用文献的方法,因为你的C在时间上已经离散了,但是每次调用ode的时候都在0-20上计算q随时间的变化,感觉很奇怪,应该算的是每个时间节点上q的空间分布才对。
附上我按这篇文献写的code:
%This function is to solve the concentration-dependent surface diffusivity on simulation of fixed bed sorption systems by D.C.K. Ko et.al
clear,clc
% variables declaration
T0=100;%run 100 min
L0=2.5;%bed length 2 dm
c0=3;%feed concentration
v0=.3;%feed velocity dm/min
R0=.003;%particle size
epsilon=.363;%void space ratio
Ds=1.2E-10;%surface diffusivity
kf=3.6E-3;%mass transfer coefficient between liquid and solid
rho=350;%bulk density
Klf=1;%mmol/g
betalf=.4;
alphalf=.3;
for m=2:ri-1
a(m-1)=-(1-1/(m-1));
b(m)=2+2*(dr^2)/Ds/dt;
C(m)=-(1+1/(m-1));
end
a(ri-1)=-2;
b(ri)=2+2*(dr^2)/Ds/dt;
A=diag(b)+diag(C,1)+diag(a,-1);
% initialize finished
e1
e2
e3
dr^2/Ds/dt
kf*dr/rho/Ds
% intergration start
%ti=1;
options=optimset('Display','off');
%%
for i=2:ti
for j=2:zi
c(j,i)=(e1*c(j-1,i)+c(j,i-1)+e2*cs(j,i))/e3;
%creat B
B(1)=q(2,i-1,j)-(1-(dr^2)/Ds/dt)*q(1,i-1,j);
for m=2:ri-1
B(m)=(1+1/(m-1))*q(m+1,i-1,j)-(2-2*(dr^2)/Ds/dt)*q(m,i-1,j)+(1-1/(m-1))*q(m-1,i-1,j);
end
B(ri)=-(2-2*(dr^2)/Ds/dt)*q(ri,i-1,j)+2*q(ri-1,i-1,j)+(1+1/(ri-1))*2*kf*dr/rho/Ds*(c(j,i)-cs(j,i)+c(j,i-1)-cs(j,i-1));
q(:,i,j)=A\B;
% cs(j,i+1)=q(ri,i,j)/(1-q(ri,i,j));
cs(j,i+1)=real(fsolve(@ldsips,1,options,[q(ri,i,j),Klf,alphalf,betalf]'));
% if cs(j,i)<0
% cs(j,i)=0;
% end
end
% c(:i)
end
%%
plot(dz.*[1:zi],c(:,10))
hold on
plot(dz.*[1:zi],c(:,200))
hold on
plot(dz.*[1:zi],c(:,300))
hold on
plot(dz.*[1:zi],c(:,100))