这是我之前帖子的后续
对于一维扩散方程,我一直在尝试比较从理论推导(在我之前的帖子中回答)获得的扩散时间和计算获得的扩散时间。
理论上,扩散时间由下式给出
计算, l = 5 nm 和 D = 500给 = 0.025 分钟。
以下是使用 pdepe 求解器模拟一维扩散系统的 MATLAB 代码。
function sol=so()
format short
global D nnode init_co find_index
m = 0;
xend = 5;
D = 500;
x = 0:1:xend;
find_index = 0:1:xend;
t = 0:0.00001:0.5;
init_co = 1*ones(length(x),1);
nnode = length(x);
sol = pdepe(m,@pdefun,@icfun,@bcfun,x,t)
plot(t,sol)
function [g,f,s] = pdefun(x,t,c,DcDx)
g = 1;
f = D*DcDx;
s = 0;
end
function c0 = icfun(x)
c0 = init_co(find(find_index==x));
end
function [pl,ql,pr,qr] = bcfun(xl,cl,xr,cr,t)
% Dirichlet at left (concentration at left boundary = 2, Neumann at right(dC/dx = 0)
pl = cl - 3;
ql = 0;
pr = 0;
qr = 1;
end
end
结果:
从 C 与时间的关系图中,所有曲线在 0.1 分钟时达到稳态。
有人可以解释为什么理论上和计算上的计算存在差异吗?做这个比较合适吗?