function A=secdim2

% 本程序可实现两种可选边界条件的对流扩散实时动态模拟
% 采用乘方格式
% 初始温度场为10,速度可选
% 时间差分采用全隐式格式
clc
dt=0.001; 
bc=input('南北边界条件:1-第一类,2-第二类:  ');
q=0;
ddt=input('迭代次数: ');
L1=0.02;r=1000;k=0.017;sp=0;L2=0.01;
u=input('横向速度: ');

if bc==2
    v=0;
else
    v=input('纵向速度 : ');
end
n=100;m=100;
dx=L1/n;dy=L2/m;F1=r*u*dy;F2=r*v*dx;
ap0=r*dx*dy/dt;
D1=k*dy/dx;pe1=F1/D1;D2=k*dx/dy;pe2=F2/D2;

tp0=10*ones(n*m,1);%初场温度

tw=10;te=10; %边界条件

A=sparse(n*m);
b=ap0*tp0;
%二维影响系数采用乘方格式
ae=D1*max(0,(1-0.1*abs(pe1^5)))+max(-F1,0);
aw=D1*max(0,(1-0.1*abs(pe1^5)))+max(0,F1);
as=D2*max(0,(1-0.1*abs(pe2^5)))+max(0,F2);
an=D2*max(0,(1-0.1*abs(pe2^5)))+max(0,-F2);

ap=aw+ae+as+an+ap0-sp;

spw=-1*2*k*dy/dx;
spe=-1*2*k*dy/dx;
%边界条件源项处理
if bc==2
    q=input('热流为: ');
    spn=0;sps=0;
    tn=0;ts=0;te=0;spe=0;
else
    tn=input('北侧温度: ');
    ts=input('南侧温度: ');
spn=-1*2*k*dx/dy;
sps=-1*2*k*dx/dy;
end
sun=zeros(n,1);
sus=zeros(n,1);
sun(5:64)=2*k*tn*dx/dy+q*dx;
sus(5:64)=2*k*ts*dx/dy+q*dx;
suw=2*k*tw*dy/dx;
sue=2*k*te*dy/dx;

%系数矩阵,常数向量赋值
for i=1:n*m
%南s边界点赋值  
 if(i<n&&i>1)
      A(i,i)=ae+an+aw+ap0-sps;
      A(i,i+1)=-ae; A(i,i-1)=-aw;A(i,i+n)=-an;
      b(i)=b(i)+sus(i);
%内节点inner赋值
 else if(i>n&&rem(i,n)~=1&&rem(i,n)~=0&&i<n*(m-1)+1)   
      A(i,i)=ap;
      A(i,i+n)=-an; A(i,i-n)=-as; A(i,i+1)=-ae; A(i,i-1)=-aw;
%北n边界点赋值
 else if(i>n*m-n+1&&i<n*m)          
      A(i,i)=ae+aw+as+ap0-spn;
      A(i,i+1)=-ae; A(i,i-1)=-aw; A(i,i-n)=-as;
      b(i)=b(i)+sun(i-n*m+n);
 %西w边界点赋值    
 else if(i>n&&i<n*m-n+1&&rem(i,n)==1)
      A(i,i)=ae+an+as+ap0-spw;
       A(i,i+n)=-an; A(i,i-n)=-as;  A(i,i+1)=-ae;
       b(i)=b(i)+suw;
 %东e边界点赋值
 else if(i>n&&i<n*m&&rem(i,n)==0)
       A(i,i)=aw+an+as+ap0-spe;
       A(i,i+n)=-an; A(i,i-n)=-as;  A(i,i-1)=-aw;
       b(i)=b(i)+sue;
 else
 
    
     end
     end
     end
     end
 end
end
%四个角点赋值
 %西南角点
       A(1,1)=1; 
 %东南角点  
       A(n,n)=1;  
 %西北角点    
       A(n*m-n+1,n*m-n+1)=1;
 %东北角点
       A(n*m,n*m)=1;
       

%
end

     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.

【物理应用】Matlab 二维对流扩散温度场_物理应用 ​