过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,qq:927550334
过冷水在往期和大家分享了偏微分方程的数值解法,并且给出案例,本期过冷和大家分享更多实用案例,瞬态热传导、牛顿流体方程、固定床二维均相模型。
瞬态热传导
针对这样一个问题:
边界条件:
初始条件:
已知:
原方程可化为标准形式:
据此求解程序如下:
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
结果为:
牛顿流体运动方程
水平圆管中装有静止的牛顿流体﹐从某个时刻起外加压力△p,流体开始流动,以采用如下方程描述:
边界条件:
初始条件:
已知:
程序:
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
结果为:
固定床均相模型
在固定床反应器中进行乙烯催化氧化制备环氧乙烷反应,如果忽略环氧乙烷的燃烧反应,则反应器内进行的反应如下。
采用二维拟均相反应器模型进行模拟,求产物环氧乙烷浓度和反应器温度沿反应器管长的变化。反应器模型可构建为:
初始条件:
边界条件:
其中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
过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。
精品回顾
过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享