- 积分
- 1
- 注册时间
- 2009-8-24
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2009-9-12 10:11:09
|
显示全部楼层
来自 浙江杭州
模型的几何形状是一个圆柱,在0,1,2,5,10,20,30,60min这几个时间点上测得某种化学物质扩散入其中的量,模型方程是一个抛物线型的偏微分方程,要求最佳的扩散系数Deff。代码如下:
function ACdisc_Diffusion
clear all;clc;
global Cm;
%动力学数据
tlist=[0 1 2 5 10 20 30 60]; %测量的时间点,单位min
Cm=[0 4.30 5.20 6.17 7.53 8.41 8.80 9.04]; %测得的AC中DMSO平均浓度,单位%w/w
%非线性拟合
C0=0;
%Deff0=1; %Deff的上限值,单位mm2/min
%Deffn=2; %Deff的下限值
[Deff,resnorm,resid,exitflag,output,lambda,jacobian]=lsqnonlin(@OptObjFunc,0.0114,[],[],[],tlist,C0,Cm) %现在程序的问题是根本没有迭代发生
ci=nlparci(Deff,resid,jacobian)
%--------------------------------------------------------------------------
%求解PDE
function C=OptObjFunc(Deff,tlist,C0,Cm)
%PDE问题定义及参数初始化
g='ACdiscg1'; %定义求解域,几何尺寸单位mm
b='ACdiscb1'; %定义边界条件
d=['x/' num2str(Deff)];c='x';a=0;f=0; %方程的系数
%网格化(三角形网格划分及网格细化)
[p,e,t]=initmesh(g);
[p,e,t]=refinemesh(g,p,e,t);
p=jigglemesh(p,e,t);
%绘制PDE三角形网格
pdemesh(p,e,t);
u=parabolic(C0,tlist,b,p,e,t,c,a,f,d); %计算得到的AC中任意时间任意位置DMSO浓度
%积分求解DMSO平均浓度的计算值
xi=linspace(0,3,35);yi=linspace(0,0.38,35);
for i=1:length(tlist)
Cc{1,i}=tri2grid(p,t,u(:,i),xi,yi);
Cc0=Cc{1,i};
Cc1(1,i)=dblquad(@Func,0,3,0,0.38,[],@quadl,xi,yi,Cc0);
Cc2(1,i)=Cc1(1,i)/(3*0.38);
end
C=Cc2-Cm;
%--------------------------------------------------------------------------
function f=Func(x,y,xi,yi,Cc0)
f=interp2(xi,yi,Cc0,x,y); |
|