扩散时间的比较 - 理论值与计算值

计算科学 pde matlab 数字 扩散
2021-12-15 01:10:45

这是我之前帖子的后续

对于一维扩散方程,我一直在尝试比较从理论推导(在我之前的帖子中回答)获得的扩散时间和计算获得的扩散时间。

理论上,扩散时间由下式给出

D=l22D
计算D, l = 5 nm 和 D = 500n2/一世nD= 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 分钟时达到稳态。

有人可以解释为什么理论上和计算上的计算存在差异吗?做这个比较合适吗?

0个回答
没有发现任何回复~