首页/文章/ 详情

偏微分方程实例程序

3年前浏览1991

image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,qq:927550334

QQ图片20210424105303.png

     过冷水在往期和大家分享了偏微分方程的数值解法,并且给出案例,本期过冷和大家分享更多实用案例,瞬态热传导、牛顿流体方程、固定床二维均相模型。

瞬态热传导

针对这样一个问题:

image.png

边界条件:

image.png

初始条件:

image.png

已知:

image.png

原方程可化为标准形式

image.png

据此求解程序如下:

function pde
global h k rho Cp Tr
h=0.17;k=0.017;
T0=323;Tr=293;
rho=4.92*10^4;Cp=0.4605;
R=0.12;m=1;
rmesh=linspace(0,R,30);
tspan=0:0.001:0.1;
sol = pdepe(m,@pdefun,@icfun,@bcfun,rmesh,tspan);
surf( rmesh,tspan,sol)
xlabel('r'), ylabel('time'), zlabel('Temperature');
shading interp
colormap cool

function [c,f,s]= pdefun(x,t,u,du)
    c=rho*Cp;
    f=k*du;
    s=0;
end

function u=icfun(x)
    T0=323;
    u=T0
end
function [pl,ql,pr,qr]= bcfun(xl,ul,xr,ur,t)
    pl = ul;
    ql =0;
    pr =h*( ur-Tr);
    qr=k;
end
end

结果为:

untitled1.jpg

牛顿流体运动方程

水平圆管中装有静止的牛顿流体﹐从某个时刻起外加压力△p,流体开始流动,以采用如下方程描述:

image.png

边界条件:

image.png

初始条件:

image.png

已知:

image.png

程序:

function pde
global rho miu deltP
rho=1000;
miu=1;
L=0.5;
dP=3*10^5;
deltP=dP/L;
R=0.002;
m=1;
rmesh=linspace(0,R,30);
tspan=0:0.001:0.1;
sol = pdepe(m,@pdefun,@icfun,@bcfun,rmesh,tspan);
surf( rmesh,tspan,sol)
shading interp
colormap cool
pp=pchip(sol(:,1),tspan);
SF=0.98*sol(end,1);
ST=ppval(pp,SF);
function [c,f,s]= pdefun(x,t,u,du)
    c=rho;
    f=miu*du;
    s=deltP;
end

function u=icfun(x)
    u=0
end
function [pl,ql,pr,qr]= bcfun(xl,ul,xr,ur,t)
    pl = ul;
    ql =0;
    pr =ur;
    qr=0;
end
end

结果为:

untitled2.jpg

固定床均相模型

在固定床反应器中进行乙烯催化氧化制备环氧乙烷反应,如果忽略环氧乙烷的燃烧反应,则反应器内进行的反应如下。

image.png

采用二维拟均相反应器模型进行模拟,求产物环氧乙烷浓度和反应器温度沿反应器管长的变化。反应器模型可构建为:

image.png

初始条件:

image.png

边界条件:

image.png

其中Derλer分别为流体径向有效扩散和传热系数,数值分别为Der=6×10-4 m2 /s,λer= 0.1 J/(m2· s.K); hw为反应器器壁的导热系数,其值为250 J/(m2· s ·K);

源程序为:

dt=0.0508;
Tw=498;
L=12;
rmesh=linspace(0,dt,10);
tspan=linspace(0,L,40);
m=1;
sol = pdepe(m,@pdefun,@icfun,@bcfun,rmesh,tspan);
%求不同床层位置的平均温度和产物浓度
CEO=sol(:,:,3);
T=sol(:,:,4);
[row,col]=size(CEO);
for i=1:row
cpp=pchip(rmesh,CEO(i,:));
cav(i)=quadl(@ppval,rmesh(1),dt,[],[],cpp)./dt;
tpp=pchip(rmesh,T(i,:));
Tav(i)=quad(@ppval,rmesh(1),dt,[],[],tpp)/dt;
end
plot(tspan,cav,'Linewidth',2);
xlabel('Bed Length [m]','fontsize',16)
ylabel('EO Concentration [mol/m^3]','fontsize',16)
set(gca,'Fontsize',16)
figure
plot( tspan,Tav,'linewidth',2);
xlabel('Bed Length [m]','fontsize',16);
ylabel ( 'Bed Temperature [K]','fontsize',16)
set(gca,'Fontsize',16)
function C=icfun(r)
C=[224,14,0,498];
end
function [c,f,s]= pdefun(r,z,C,dCdr)
dt=0.0508;
Tw=498;
CEH=C(1);CO2=C(2);CEO=C(3);T=C(4);
us= 1.3;
rhouf = 6.06;
cp= 1160 ;
Uw=270;
Der= 6e-4;
lbr=0.1;
dH1=-210000;
dH2=-473000;
R=8.314 ;
k1= 35.2 * exp( -59860/R/T);
k2= 24700 * exp(-89791/R/T);
R1=810 *k1*CO2;
R2=2430* k2*CO2;
c=[us/Der;us/Der;us/Der;us*rhouf*cp/lbr];
f=[dCdr(1); dCdr(2); dCdr(3); dCdr(4)];
s=[-(2*R1 1/3*R2)/Der;
-(R1 R2)/Der;
2*R1/Der;
((-dH1*R1-dH2*R2)-4*Uw*(T-Tw)/dt)/lbr];
end
function [pl,ql,pr,qr]= bcfun(rl,ul,rr,ur,z)
dt=0.0508;
Tw=498;
hw =250;
lbr=0.6;
pl =[0;0;0;0];
ql=[1;1;1;1];
pr =[0;0:0;-hw*(ur-Tw)/lbr];
%pr =[0;0;0;0];
qr=[1;1;1;1];
end

untitled3.jpguntitled4.jpg

图片

        过冷水发表于仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

附件

50积分example.rar
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-07-07
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 356粉丝 176文章 109课程 11
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈