数值传热二维导热C程序
二维导热物体温度场的数值模拟教程文件
维导热物体温度场的数值模拟Urwvorwty of 帥©fix T KhzIogy Beijing金属凝固过程计算机模拟题目二维导热物体温度场的数值模拟Solidworks十字接头的传热分析作者:张杰学号:S2*******学院:北京有色金属研究总院专业:材料科学与工程成绩:2015年12月二维导热物体温度场的数值模拟图1二维均质物体的网格划分用有限差分法模拟二维导热物体的温度场,首先将二维物体划分为如图1所示的网格,x 与y 可以是不变的常量,即等步长,也可以是变量(即在区域内 的不同处是不同的),即变步长?如果区域内各点处的温度梯度相差很大,则在温度 变化剧烈处,网格布得密些,在温度变化不剧烈处,网格布得疏些?至于网格多少,步长取多少为宜,要根据计算精度与计算工作量等因素而定 ?在有限的区域内,将二维不稳定导热方程式应用于节点(i , j )可写成:2T 2T ,jP十P 1 十PT T,j T.i ,j5工i ,j x 2i ,j当 时,即x 、PTx i . i ,jP PP T i 1 ,j 2T ,jTi 1 ,j2T P T Pi , j i ,j 1 2yy 较小时,忽略()、x)2y)2x)2、2y )项。
当X yx 、 y 方向网格划分步长相等?最后得到节点U ,j)的差分方程:T P 1T P匚 T PT P T P T P 4T P1 i ,jT i ,jF 0T i 1 ,jT i 1, j 1 i ,j 1 T i ,j 1 4l i ,j式中:F o 2C p x假设边界为对流和辐射边界,对流用以下公式计算:P 1 P P PPPT i , j T i , j F 0 2T i 1 ,j T i ,j 1 T i ,j 1 4T i ,jMATLAB 编程模拟表1计算机模拟参数在MATLAB 中编程求解,程序如下: clc; clear; format lo ng %%参数输入moni_canshu=xlsread 模拟参数输入.xlsx',1,'B2:B11'); %读取exceI 中的模拟参数 s=moni_canshu(1);%几何尺寸,m t0=moni_can shu(2);% 初始温度,°C tf=mo ni_can shu(3); % 辐射(空气)边界,C rou=mon i_ca nshu(4);% 密度,kg/m3 lamda=moni_canshu(5);%导热系数,w/(m C ) Cp=moni_can shu(6);% 比热,J/(kg C )n=moni_canshu(7);%工件节点数,个 <1000 dt=60*mo ni_can shu(8); % 时间步长,min to s m=moni_canshu(9);%时间步数,个 <100 dx=s/( n-1);% 计算 dx f0=lamda*dt/(rou*Cp*dx*dx); %计算f0 %%初始参数矩阵,初始温度 for iii=1: n for jjj=1: n Told(iii,jjj)=t0; end endTold(1,:)=tf; Told( n,:)=tf; Told(:,1)=tf; Told(:, n)=tf; %%写文件表头xlswrite('data.xlsx',{['坐标位置']}, 'sheet1:'A1'); asc=97; for ii=1: nbiaotou 仁{['第'nu m2str(ii)'点']};a cT fT j , jC p xasc=asc+1;xlswrite('data.xlsx',biaotou1:sheet1:[char(asc) '1']);xlswrite('data.xlsx',biaotou1:sheet1:['A' num2str(ii+1)]);end%%模拟运算for jj=1:2copyfile('data.xlsx:'data1.xlsx)Tn ew(1:1: n)=tf;Tn ew( n:1: n)=tf;Tn ew(1: n:1)=tf;Tn ew(1: n:n )=tf;for i=2: n-1for j=2: n-1Tn ew(i:j)=Told(i:j)+fO*(Told(i-1:j)-4*Told(i:j)+Told(i+1:j)+Told(i:j- 1)+Told(i:j+1));endendTold=T new;pcolor(Told);% 绘图shad ingin terpcolormap(jet)pause(O.I)saveas(gcf:[第' num2str(jj*0.1) 's温度图像.jpg']);xlswrite('data1.xlsx',Told,'sheet1:'B2');copyfile('data1.xlsx:['第'num2str(jj*0.1) 's数据.xlsx']) delete(datal.xlsx);end模拟结果:251010 15 20 25图3模拟物体的温度分布25201 J5 10 15 20 25图2模拟物体的温度等高线图和温度梯度分布图。
VC++工程设计报告 热传导问题
VC++ 工程设计报告学院(系):年级专业:学生姓名:指导教师:完成日期:一、热传导问题简介热量从系统的一部分传到另一部分或由一个系统传到另一个系统的现象叫热传导。
热传导是热传递三种基本方式之一。
它是固体中热传递的主要方式,在不流动的液体或气体层中层层传递,在流动情况下往往与对流同时发生。
热传导实质是由大量物质的分子热运动互相撞击,而使能量从物体的高温部分传至低温部分,或由高温物体传给低温物体的过程。
二、二维热传导的模型模型:稳态热传导问题a,b,D 可调分别在1,2或3点给定温度,其它边界条件另定。
)dS T T 2T α(TdS q d qT )y T ()x T (k 21322122-++Ω⎭⎬⎫⎩⎨⎧-⎥⎦⎤⎢⎣⎡∂∂+∂∂=∏⎰⎰⎰ΓΓΩ三、有限元步骤: 1, 基本数据输入。
2, 网格划分,单元编号,节点编号。
3, 形成单元刚度阵。
4, 组装总刚度阵。
5, 形成右端项。
6, 处理边界条件。
7, 求解未知变量。
8, 后处理,包括数据文件,图形,曲线等存储和输出。
四、具体数学推导过程二维热传导方程:q )yT ()x T (t T ρc p+∂∂∂∂+∂∂∂∂=∂∂y x k y k x T --- 温度(C o )t --- 时间 (s)p c--- 定压比热 (J/ (kg C o ))x k , y k--- x, y 方向的导热系数 (W/ (m C o ))ρ---密度 (3kg/m )q --- 内热源强度 (3W/m )对于各向同性问题k k y ==x k 原方程简化为:q y T x T k t T ρc 2222p +⎪⎪⎭⎫ ⎝⎛∂∂+∂∂=∂∂边界条件:T |T I =Γ1q |n Tk-II =∂∂Γ )T T (α|n T k -III -=∂∂Γ T--- 给定的边界温度(C o ) α--- 对流换热系数 (W/ (m 2C o )) 1q--- 热流密度 (W/ m 2) T ---周围介质温度(C o )初始条件:00t T |T == 0T--- 已知温度分布函数无内热源热传导方程(Fourier):⎪⎪⎭⎫ ⎝⎛∂∂+∂∂=∂∂2222p y T x T k t T ρc稳态热传导方程(Poisson):0q y T x T k 2222=+⎪⎪⎭⎫⎝⎛∂∂+∂∂无内热源稳态热传导方程(Laplace):0yT xT 2222=∂∂+∂∂考虑如下稳态热传导问题:0q y T x T k 2222=+⎪⎪⎭⎫⎝⎛∂∂+∂∂ T |T I =Γ1q |n Tk-II =∂∂Γ )T T (α|n T k -III -=∂∂Γ由加权余值法有:⎰⎰ΓΩ-Ω⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+⎥⎥⎦⎤⎢⎢⎣⎡∂∂+∂∂1)WdS T -(T d W q y T x T k 2222 0]WdS nTk )T T ( [α)WdS n T k(q 321=∂∂+--∂∂+-⎰⎰ΓΓΩ⎥⎥⎦⎤⎢⎢⎣⎡∂∂+∂∂⎰Ωd W y T x T k 2222 Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂-Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂=⎰⎰ΩΩd y T y W x T x W k d )y T W (y )x T W (x k Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂-∂∂=⎰⎰ΩΓd y T y W x T x W k dS W n Tk)dS Qn (Pn Qdy Pdx d )y Px (2Γ1+=+=Ω∂∂-∂∂⎰⎰⎰ΩQ ds nT dx y T dy x T ∂∂=∂∂-∂∂ Ω-Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂⎰⎰ΩΩd qW d y T y W x T x W k ⎰⎰ΓΓ+∂∂-1)WdS T -(T dS W n Tk0]WdS nTk )T T ( [α)WdS n T k (q 321=∂∂+-+∂∂++⎰⎰ΓΓ Ω-Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂⎰⎰ΩΩd qW d y T y W x T x W k ⎰⎰ΓΓ+∂∂-11)WdS T -(T dS W nTk0)WdS T T ( αWdS q 321=-++⎰⎰ΓΓ去掉强迫边界条件部分(这部分在最后数值求解时处理)得到:Ω-Ω⎥⎦⎤⎢⎣⎡∂∂∂∂+∂∂∂∂⎰⎰ΩΩd qW d y T y W x T x W k 0)WdS T T ( αWdS q 321=-++⎰⎰ΓΓ或写为:Ω-Ω∇∇⎰⎰Ωd qW d T Wk ΩT0)WdS T T ( αWdS q 321=-++⎰⎰ΓΓ其中 T}yx{∂∂∂∂=∇设单元内温度为:e e [N]{T}T =则域内温度为:e e[N]{T }T ∑=加权函数离散后,令N][[W]= 对于一个单元有积分dS {T}[N] [N]αd Ω[N]{T}k [N]e ΓTΩe Te 3e ⎰⎰+∇∇dS T [N] αdS q [N]d Ωq [N]TΓΓ1T ΩTe3e2e ⎰⎰⎰+-=上式可表示为矩阵形式e 3e 2e Ωe e 1e }{F }{F }{F ){T}][K ([K]++=+其中d Ωk[B][B]d Ω[N]k [N]][e e ΩTΩT ⎰⎰∇∇=e K=e 1][K dS [N] [N]e 3ΓαT⎰=Ωe }{F d Ωq [N]eΩT ⎰ =e 2}{F ⎰-e 2Γ1T dS q [N]=e 3}{F dS T [N] αTΓe3⎰[N][B]∇=在全域内的方程可由单元组装后得到}{F }{F }{F ]){T}[K ([K]32Ω1++=+对于三角形单元e e [N]{T}T =[]{}T m j im j iT T T N N N =m)j,(i, y)/2Δc x b (a N i i i i ++=i m m i i y x y x a -=m i i y -y b =j m i x x c -=/2Δb x /N i i =∂∂/2Δc y /N i i =∂∂⎥⎦⎤⎢⎣⎡∆=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡∂∂∂∂∂∂∂∂∂∂∂∂=m ji m j i m j i m j ic c c b b b 21y N yN y N x N x N xN B][ ]k[B]Δ[B K][T e = ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+++++++++=2m 2m mj m j mi m i m j m j 2j 2j j i j i m i m i ji j i 2i2i c b c c b b c c b b c c b b c b c c b b c c b b c c b b c b 4Δk=e 1][K ⎥⎦⎤⎢⎣⎡=⎰3/16/16/13/1αL dS [N] [N] ij ΓαTe 3=Ωe }{F ⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧=⎰1113q d Ωq [N]e ΩT=e 2}{F ⎭⎬⎫⎩⎨⎧=-⎰2/12/1L q dS q [N]ij 1Γ1Te 2=e 3}{F ⎭⎬⎫⎩⎨⎧=⎰2/12/1L T αdS T [N] αij T Γe 3其中ij L 为求积分的杆的长度。
有限元算例二维传热c++程序源代码5
{ai=pE[i*2+j*ny*2].a[idx];bi=pE[i*2+j*ny*2].b[idx];ci=pE[i*2+j*ny*2].c[idx];pE[i*2+j*ny*2].fi[idx]=GaussIntegral(2,js,fn,fnGaussLimit);}for(idx=0;idx<3;idx++) //for the second triangle in the rectangle{ai=pE[i*2+j*ny*2+1].a[idx];bi=pE[i*2+j*ny*2+1].b[idx];ci=pE[i*2+j*ny*2+1].c[idx];pE[i*2+j*ny*2+1].fi[idx]=GaussIntegral(2,js,fn,fnGaussLimit2);}}printf("OK!\n");//单元矩阵元素累加到总体矩阵相应的位置上printf("单元矩阵元素累加到总体矩阵相应的位置上...\n");for(idx=0;idx<nx*ny*2;idx++)for(i=0;i<3;i++){for(j=0;j<3;j++)pMatrix[pE[idx].nd[i].number*iNode+pE[idx ].nd[j].number] +=pE[idx].Aij[i][j];pMf[ pE[idx].nd[i].number ]+=pE[idx].fi[i];}printf("OK!\n");double dBig=pow(10,20); //边界条件对角线扩大法处理所用的大数double Ur=1.0; //边界条件1(边界条件2通过Galerkin弱解表达式自动满足)for(i=0;i<nx+1;i++){ j=nx+1;pMatrix[(j*nx+i)*iNode+(j*nx+i)]*=dBig;pMf[(j*nx+i)]*=dBig*Ur;}for(j=0;j<nx+1;j++){ i=(nx+1)*(j+1)-1;pMatrix[i*iNode+i]*=dBig;pMf[i]*=dBig*Ur;}printf("调用全选主元高斯消去法函数解方程组...\n");Gauss(pMatrix,pMf,iNode); //调用全选主元高斯消去法函数解方程组。
简单的二维热传导模拟-c_c++ code
HANDLE_ERROR(cudaMalloc((void**)&data.dev_constSrc,bitmap.image_size()));
float *temp=(float*)malloc(bitmap.image_size());
}
int main(void)
{
DataBlock data;
CPUAnimBitmap bitmap(DIM,DIM,&data);
data.bitmap=&bitmap;
data.totalTime=0;
data.frames=0;
HANDLE_ERROR(cudaEventCreate(&data.start));
//将作为热源的单元温度值复制到网格中相应的单元中,
__global__ void copy_const_kernel(float *iptr,const float *cptr){
//
int x=threadIdx.x+blockIdx.x*blockDim.x;
int y=threadIdx.y+blockIdx.y*blockDim.y;
{
for(int x=400;x<500;x++)
{
temp[x+y*DIM]=MIN_TEMP;
}
}
HANDLE_ERROR(cudaMemcpy(data.dev_constSrc,temp,bitmap.image_size(),cudaMemcpyHostToDevice));
二维热传导方程的可视化计算
二维热传导方程的可视化计算二维热传导方程是描述二维物体热传导过程的数学模型。
在工程领域中,通过求解二维热传导方程,可以预测物体内部的温度分布,进而进行热设计和优化。
热传导是指物体内部由高温区向低温区传递热量的过程。
二维热传导方程是基于热传导定律和能量守恒定律建立的,它可以描述物体内部温度的时空变化。
二维热传导方程的一般形式如下:∂²T/∂x² + ∂²T/∂y² = α ∂T/∂t其中,T是温度,x和y是空间坐标,t是时间,α是热扩散系数。
为了求解二维热传导方程,需要给定边界条件和初始条件。
边界条件是指在物体表面的温度分布情况,而初始条件是指在初始时刻物体内部各点的温度分布。
通常情况下,我们采用数值方法来求解二维热传导方程,其中最常用的方法是有限差分法。
有限差分法将连续的空间和时间离散化,将二维热传导方程转化为一组离散的代数方程。
在计算机中,可以使用计算软件来实现二维热传导方程的可视化计算。
首先,需要将物体的几何形状离散化为一个个小区域,然后对每个小区域进行温度计算。
在计算过程中,可以使用迭代方法来逐步求解离散方程,直到达到收敛条件。
通过迭代计算,可以得到物体在不同时间点的温度分布情况。
在可视化计算中,可以将温度用不同的颜色表示,从而直观地显示物体内部的温度分布。
通过观察温度分布的变化,可以了解物体的热传导特性,并对其进行优化设计。
除了温度分布的可视化,还可以计算物体的热流量、热传导速率等热学参数。
这些参数对于热设计和工程优化非常重要,可以帮助工程师在设计过程中做出准确的决策。
二维热传导方程的可视化计算在工程领域中具有重要的应用价值。
通过求解二维热传导方程,可以预测物体内部的温度分布,为工程设计提供参考依据。
同时,可视化计算也为工程师提供了直观的数据展示方式,帮助他们更好地理解和分析热传导过程。
二维稳态导热问题 数值解法
{for(n=1;n<4;n++)
9
二维稳态导热问题的数值解法 t[m][n]=0; } for(i=0;i<90;i++) {for(m=1;m<6;m++) {for(n=1;n<4;n++) t[m][n]=0.25*(t[m+1][n]+t[m-1][n]+t[m][n+1]+t[m][n-1]); } } for(n=0;n<5;n++) {for(m=0;m<7;m++) printf("%10f",t[m][n]); printf("\n"); } }
n=5 60.000000 69.999992 77.320499 80.000000 77.320526 70.000038 60.000000
n=4 60.000000 65.811876 70.066472 71.623769 70.066489 65.811899 60.000000
n=3 60.000000 63.181051 65.509751 66.362121 65.509766 63.181070 60.000000
0.9987
0.9912
0.956
0.93
0.912
2.第一题
1
二维稳态导热问题的数值解法
传热学上机C程序源答案之一维稳态导热的数值计算
一维稳态导热的数值计算1.1物理问题一个等截面直肋,处于温度=80的流体中。
肋表面与流体之间的对流换热系数为t ∞,肋基处温度,肋端绝热。
肋片由铝合金制成,其导热系数为ℎ=45W/(m 2∙℃)t w =300℃,肋片厚度为,高度为H=0.1m 。
试计算肋内的温度分布及肋λ=110W/(m ∙℃)δ=0.01m 的总换热量。
1.2数学描述及其解析解引入无量纲过余温度,则无量纲温度描述的肋片导热微分方程及其边界θ=t ‒t ∞t w ‒t ∞条件:2220d m dxθθ-=x=0,θ=θw =1x=H,0xθ∂=∂其中 m =上述数学模型的解析解为:[()]()()w ch m x H t t t t ch mH ∞∞--=-⋅ ()()w hp t t th mH m∞∅=-1.3数值离散1.3.1区域离散计算区域总节点数取N 。
1.3.2微分方程的离散对任一借点i 有:2220i d m dx θθ⎛⎫-= ⎪⎝⎭用θ在节点i 的二阶差分代替θ在节点i 的二阶导数,得:211220i i i i m x θθθθ+--+-=V 整理成迭代形式: (i=2,3……,N-1)()112212i i i m x θθθ+-=++V1.3.3边界条件离散补充方程为:11w θθ==右边界为第二类边界条件,边界节点N 的向后差分得:,将此式整理为10N N x θθ--=V 迭代形式,得:N 1N θθ-=1.3.4最终离散格式11w θθ== (i=2,3……,N-1)()112212i i i m x θθθ+-=++V N 1N θθ-=1.3.5代数方程组的求解及其程序假定一个温度场的初始发布,给出各节点的温度初值:,,….,。
将这些初01θ02θ0N θ值代入离散格式方程组进行迭代计算,直至收敛。
假设第K 步迭代完成,则K+1次迭代计算式为:K 11wθθ+= (i=2,3……,N-1)()11112212i i K K K i m x θθθ+-++=++V 111N K K N θθ-++=#include<stdio.h>#include<math.h>#define N 11main(){int i;float cha;/*cha 含义下面用到时会提到*/float t[N],a[N],b[N];float h,t1,t0,r,D,H,x,m,A,p; /*r 代表λ,x 代表Δx ,D 代表δ*/printf("\t\t\t 一维稳态导热问题\t\t");printf("\n\t\t\t\t\t\t----何鹏举\n");printf("\n 题目:补充材料练习题一\n");printf("已知:h=45,t1=80, t0=200, r=110, D=0.01, H=0.1 (ISO)\n");/*下面根据题目赋值*/h=45.0; t1=80.0; t0=300.0; r=110.0; D=0.01; H=0.1;x=H/N; A=3.1415926*D*D/4; p=3.1415926*D; m=sqrt((h*p)/(r*A));/*x代表步长,p代表周长,A代表面积*/printf("\n请首先假定一个温度场的初始分布,即给出各节点的温度初值:\n");for(i=0;i<N;i++){scanf("%f",&t[i]);a[i]=(t[i]-t1)/(t0-t1);b[i]=a[i];/*这里b[i]用记录一下a[i],后面迭代条件及二阶采用温度初场要用到*/ }/*采用一阶精度的向后差分法数值离散*/cha=1;while(cha>0.0001){a[0]=1;for(i=1;i<N;i++)a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);a[N-1]=a[N-2];cha=0;for(i=0;i<N;i++)cha=cha+a[i]-b[i];cha=cha/N;/*cha代表每次迭代后与上次迭代各点温度差值的平均值*/}for(i=0;i<N;i++)t[i]=a[i]*(t0-t1)+t1;printf("\n\n经数值离散(一阶精度的向后差分法)计算得肋片的温度分布为:\n");for(i=0;i<N;i++)printf("%4.2f\t",t[i]);printf("\n\n");getchar();/*采用二阶精度的元体平衡法数值离散(温度初值还用设定的初场,便于比较)*/ for(i=0;i<N;i++)a[i]=b[i];cha=1;while(cha>0.0001){a[0]=1;for(i=1;i<N;i++)a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);a[N-1]=a[N-2]/(1+0.5*m*m*x*x);cha=0;for(i=0;i<N;i++)cha=cha+a[i]-b[i];cha=cha/N;}for(i=0;i<N;i++)t[i]=a[i]*(t0-t1)+t1;printf("\n\n经数值离散(二阶精度的元体平衡法)计算得肋片的温度分布为:\n"); for(i=0;i<N;i++)printf("%4.2f\t",t[i]);printf("\n\n");getchar();}。
(完整word版)数值传热二维导热C程序
问题:假定一个方形材料100mm*100mm ,四边分别为第一、第二、第三类边界条件,无内热源,导热系数为常数,分析该区域内的温度变化。
2.求解过程—热平衡法(1)区域离散化对正方形区域进行离散,将该区域划分成不同节点数的不重叠子区域。
设置节点时采用内点法。
(2)控制方程离散化依据题意,二维稳态无源项的纯导热问题的控制方程如式(1)22220T x T y ∂+∂∂= (1)扩散项——中心差分,如式(2)(3) (2) (3)将(2)、(3)、(4)式代入方程(1)可得到离散后的代数方程(5)21,,1,222,2()()i j i j i j i j t t t d t O x dx x +--+⎛⎫⎡⎤=+∆ ⎪⎣⎦∆⎝⎭2,1,,1222,2()()i j i j i j i jt t t d t O y dy y +--+⎛⎫⎡⎤=+∆ ⎪⎣⎦∆⎝⎭1,,1,,1,,122220()()i j i j i ji j i j i j t t t t t t x y +-+--+-++=∆∆ (4)因为采用正方形的网格,即△x =△y ,且无内热源(q V =0) ,则式(4 ) 简化为(3)边界条件处理 均为第一类边界条件,依据题意,设定边界条件如下:x=0时,t=800x=1时,t=600y=0时,t=200y=1时,t=1004.结果1.第一类边界条件下的温度分布:输入四个边界温度分别为 800k 600k 200k 100k2,边界为第二类边界时的结果边界条件:X=0,t=10yY=0,t=10xX=100,t=10y+10(M-1)Y=100,t=10x+10(N-1)3,边界为第一、第二类边界时:X=0,t=10yY=0,t=10xX=100,t=100Y=100,t=2003.程序得出四边第一类边界条件下的长方形的温度分布#include<stdio.h>#include <stdlib.h> #include<math.h>(),1,1,,1,114i j i j i j i j i j t t t t t +-+-=+++#define M 10#define N 20void main(){/****************键盘输入边界条件**************/float Tleft, Tright, Tdown, Ttop;printf("请输入长方形的四边温度条件Tleft Tright Tdown Ttop\n");scanf("%f%f%f%f",&Tleft,&Tright,&Tdown,&Ttop);/****************二维计算区域离散**************/float T[M][N];float Tcopy[M][N];//定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft;T[i][N-1] = Tcopy[i][N-1] = Tright;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop;T[M-1][j] = Tcopy[M-1][j]= Tdown;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Tdown +Ttop );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}第二类边界条件的温度分布#include<stdio.h>#include <stdlib.h>#include<math.h>#define M 11#define N 21void main(){/****************二维计算区域离散**************/float Tleft, Tright, Tdown, Ttop;float T[M][N];float Tcopy[M][N]; //定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft=10*i;T[i][N-1] = Tcopy[i][N-1] = Tright=10*i+10*N-10;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop=10*j;T[M-1][j] = Tcopy[M-1][j]= Tdown=10*j+10*M-10;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Ttop + Tdown );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}第一第二类边界:#include<stdio.h>#include <stdlib.h>#include<math.h>#define M 11#define N 21void main(){/****************二维计算区域离散**************/float Tleft, Tright, Tdown, Ttop;float T[M][N];float Tcopy[M][N]; //定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft=10*i;T[i][N-1] = Tcopy[i][N-1] = Tright=100;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop=10*j;T[M-1][j] = Tcopy[M-1][j]= Tdown=200;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Ttop + Tdown );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}。
传热学内容总结
绪论部分一、热量传递的三种基本方式⒈导热应充分理解导热是物质的固有本质,无论是气体、液体还是固体液态还是固态,都具有导热的本领。
利用傅里叶定律进行稳态一维物体导热量的计算。
应能区分热流量Φ和热流密度q。
前者单位是w,后者单位是w/m2,且q=Φ/A。
同时还应将热流量Φ与热力学中的热量Q区别开来,后者的单位是J。
传热学中引入了时间的概念,强调热量传递是需要时间的。
充分掌握导热系数λ是一物性参数,其单位为w/(m·K);它取决于物质的热力状态,如压力、温度等。
对不同的物质,可用教材的附录查得导热系数值。
⒉对流掌握对流换热是流体流过固体壁面且由于其与壁面间存在温差时的热量传递现象,它与流体的流动机理密不可分;同时,由于导热也是物质的固有本质,因而对流换热是流体的宏观热运动(热对流)与流体的微观热运动(导热)联合作用的结果。
初步会运用牛顿冷却公式或计算对流换热量。
注意其中A为换热面积,必须是流体与壁面间相互接触的、与热量传递方向相垂直的面积。
掌握对流换热的表面传热系数h为一过程量,而不像导热系数λ那样是物性参数。
也正因为如此,不同对流换热过程的表面传热系数的数量级相差很大。
⒊热辐射掌握热辐射的特点,区分它与导热及对流的不同之处。
掌握黑体辐射的斯蒂藩—玻耳兹曼定律。
它是一个黑体表面向外界发射的辐射热量,而不是一个表面与外界之间以辐射方式交换的热量。
通过对两块非常接近的互相平行黑体壁面间辐射换热的计算,以了解辐射换热的概念。
应注意三种热量传递方式并不是单独出现,常常串联或并联在一起起作用。
可以结合日常生活及工程实际中的实例加深理解。
二、传热过程与传热系数⒈传热过程充分理解传热过程是热量在被壁面隔开的两种流体之间热量传递的过程。
在传热过程中三种热量传递方式常常联合起作用。
能对一维平壁的传热过程进行简单的计算。
理解传热系数K是表征传热过程强弱的标尺。
既然对流换热表面传热系数h是过程量,它常作为传热过程的一个环节,因而传热系数也是过程量。
二维热传导方程的可视化计算
二维热传导方程的可视化计算二维热传导方程是描述热量在二维空间中传导过程的数学模型。
它广泛应用于工程领域和物理学研究中,可以帮助我们理解和预测物体在不同温度条件下的热传导行为。
在二维热传导方程中,考虑一个平面内的物体,假设它在x轴和y 轴方向上都具有均匀的温度分布。
热传导方程可以写作:∂u/∂t = α(∂²u/∂x² + ∂²u/∂y²)其中u是物体的温度分布,t是时间,α是热扩散系数。
为了更好地理解热传导方程,我们可以通过可视化计算的方法来观察温度在时间上的变化。
通过数值计算,我们可以模拟热传导方程在不同初始条件和边界条件下的演化过程,并将结果可视化呈现出来。
在进行可视化计算之前,我们首先需要确定研究对象的几何形状和初始温度分布。
例如,我们可以考虑一个正方形的金属板,假设初始时刻整个板的温度分布是均匀的。
接下来,我们可以设定板的边界条件,例如固定边界温度或热绝缘边界。
通过这些设定,我们可以开始进行数值计算。
在数值计算过程中,我们将二维空间离散化为一个网格,每个网格点代表一个小区域。
然后,我们通过迭代计算每个网格点的温度,根据热传导方程的离散形式进行更新。
在计算过程中,我们需要注意选择合适的时间步长和空间步长,以确保计算的准确性和稳定性。
较小的步长可以提高计算精度,但也会增加计算时间。
因此,我们需要在准确性和计算效率之间进行权衡。
完成数值计算后,我们可以将结果进行可视化展示。
常见的可视化方法包括绘制温度随时间的变化曲线图、绘制温度随空间坐标的分布图或制作动态的温度动画。
这些可视化结果可以帮助我们直观地观察和分析热传导过程中的温度变化规律。
通过可视化计算,我们可以更深入地理解二维热传导方程,并将其应用于实际问题的解决中。
例如,在工程领域中,我们可以通过热传导方程来优化材料的热传导性能,提高能源利用效率。
在物理学研究中,我们可以利用热传导方程来研究材料的热导率和热容等物理性质。
二维稳态导热问题的数值解法
核科学与技术学院《传热学》二维稳态导热问题的数值解法作业姓名:罗晓学号:2014151214班级:20141512任课教师:李磊,张智刚哈尔滨工程大学核科学与技术学院2016年11月28日问题重述:第一题:如图所示,一个无限长矩形柱体,其横截面的边长分别为L 1和L 2,常物性。
该问题可视为二维稳态导热问题,边界条件如图中所示,其中L 1=0.6m ,L 2=0.4m ,T w 1=60℃,T w 2=20℃,λ=200W/(mK)。
1)编写程序求解二维导热方程。
2)绘制x =L 1/2和y=L 2/2处的温度场,并与解析解进行比较。
已知矩形内的温度场的解析解为:()()()()1211w2w1sh sh sin ,L L L y L x t t y x t πππ+=。
第二题将第一题中2y L =处的边界条件变为2w t t =,其他条件不变。
1)编写程序求解二维导热方程并计算从y =0处导入的热量2Φ。
2)当21L L 时,该二维导热问题可简化为一维导热问题。
在一维的近似下,试计算从y =0处导入的热量1Φ,并比较不同L 2/L 1下21ΦΦ的比值。
由该问题的解析解可知:L 2/L 10.0070.010.050.080.121ΦΦ0.99870.99120.9560.930.912解:(第一题第一问)对于此问题,由于可以视为二维稳态导热问题,由二维稳态热传导1,1,,,1,1,22220m n m n m nm n m n m nt t t t t t xy+-+-+-+-+=∆∆基本方程:22220t tx y∂∂+=∂∂用数值法对该区域进行节点划分(如下图所示):x 方向上一共划分M 个节点,y 方向上一共划分N 个节点。
可以将以上方程改为:如果我们取x y ∆=∆则有:1,1,1,1,,4m n m n m n m nm n t t t t t +-+-+++=考虑到节点位置的特殊性,我们在此将节点的种类进行如下划分,并给出节点的离散方程。
2二维传热差分算法分析及通用计算程序实现
文章编号:IOD21124f0006}02一f跏702化学工程师ChⅧcalEn目n∞r2006年2月二维传热差分算法分析及通用计算程序实现孙怀宇,王祝敏(沈阳化工学院化学工程学院.辽宁沈阳110142)摘要:在对用有限差分法计算:维稳态传热的过程及算法进行分析的基础上,研究了用于描述差分节点及其关系的数据结构,井研究了自动生成热量衡算方程组的方法。
基于此方法开发了一维传热计算程序,程序支持交互没汁传热网络,能够自动生成传热方程组并求解方程组=关键词:传热计算;有限差分;计算方法中图分类号:TQ0213文献标识码:AAIlal辨。
f丘dtedmrenceme曲。
dfortw0一dime蛹帅h船tlr哪s蛔‘鲫Iddevd唧即t0fa础r∞掣p】q乒踟SUNHu撕一vu.WANGZhu—min(DepaI蜘咖0fo帅dE【l舯ecnng,sh朗y“Wll武imfe0f0l“面c—Rholo盯tSh。
lvallg110142.c拉岫)Abstract:Base()IImlaly血19thep‘0ce(1LR址1daIit}lIrleticofh岫一dim即鲥蚰steady8bkheattrall如rbynIlikdif玷∞nceme小0(】,thedabst兀】cn此is出si丹ldIode蝌iptdi舴remenodesandthelrI幽Ⅱon出p.Inad由joⅡ,吐他medlod话陀黑a耐L。
dt0automaticg即珊teoqua£;oⅡss毗0th船&嘣arIcesy¥㈣.Usingdislnethod,then帅~dB狞nsioilheat—tran出r龇1aly出p39ram诂developed,il811H”rLsrⅢLualdes研0fhe吐曲n出rr剐esand画ds.and证c册au咖na№gerI啪tet11eheat一劬珊丘r。
q11a60nsset丑IIdd化IIsoheand舯1wilKevH啦出:heat—trallsfermlaly出;6枷把di仃j工en∽;compu埘ionme山txl工程中经常进行的传热计算,一般包括物体内导热及物体与外界的对流传热,问题的复杂性主要体现在不规则的几何形状和复杂的边界条件。
二维稳态导热数值计算 python github
题目:使用Python和GitHub进行二维稳态导热数值计算在科学研究和工程领域中,热传导是一个非常重要的现象。
特别是在材料研究、能源生产和环境工程方面,对于热传导的准确理解和计算是至关重要的。
而在二维稳态导热数值计算方面,Python和GitHub 的应用越来越受到关注和重视。
在这篇文章中,我将对二维稳态导热数值计算及其在Python和GitHub中的应用进行深度探讨,希望能够为你对这个主题的理解和应用提供一些帮助。
一、二维稳态导热数值计算的基本原理1. 二维稳态导热方程的描述及数值解法2. 有限差分法和有限元法在二维稳态导热数值计算中的应用3. 二维热传导问题的边界条件和初始条件设置4. 常用的二维稳态导热数值计算算法及其优缺点二、Python在二维稳态导热数值计算中的应用1. Python在科学计算和数值模拟方面的优势2. NumPy、SciPy和Matplotlib等Python库在二维稳态导热数值计算中的使用3. 通过Python实现二维稳态导热数值计算的示例和代码解析三、GitHub在二维稳态导热数值计算中的应用1. GitHub在科学研究和工程项目协作中的重要性2. 如何使用GitHub进行版本控制和团队协作3. 在GitHub上共享和获取二维稳态导热数值计算的开源代码和项目总结与展望二维稳态导热数值计算是一个复杂且重要的科学问题,而Python和GitHub为我们提供了强大的工具和评台来解决这个问题。
通过本文的探讨,希望能够帮助大家更深入地理解二维稳态导热数值计算的原理和方法,并且认识到Python和GitHub在这个领域的重要作用。
我个人认为,未来随着人工智能和大数据技术的发展,二维稳态导热数值计算将会得到更加广泛和深入的应用,而Python和GitHub作为强大的工具和评台,将大大促进这一进程的实现。
希望本文能够对您有所帮助,也欢迎大家对这个问题进行深入讨论和研究。
二维稳态导热数值计算是在二维空间中进行热传导模拟的一种重要方法。
二维数值传热学C程序代码
#include<>#include<iostream>#include<>#include<fstream>//////////////////////////////////////////////////////////////////////////////// /******************************************************************************/ //////////////////////////////////////////////////////////////////////////////// //从此开始至下一个/*/标记带处之间的代码可以写在头文件里。
//////////////////////////////////////////////////////////////////////////////// 计算参数宏定义开始//////////////////////////////////////////////////////////////////////////////// #define GRID_ROW 82#define GRID_COLUMN 102//网格横纵数目,边界处多出一列处理#define DX#define DY//网格单元尺寸,m#define DEN_COPPER 8900#define DEN_STEEL 7850#define DEN_CONCRETE 2430//材料的密度,kg/(m^3)#define C_COPPER 390#define C_STEEL 460#define C_CONCRETE 970//材料比热容,J/(kg*K)#define COND_COPPER 400#define COND_STEEL 20#define COND_CONCRETE//材料导热系数,W/(m*K)#define CONV 5//空气与各种材料的对流换热系数,W/(m^2*K)#define INITL_TMPRT 298//初始温度,K#define T_C2K(x) ((x)+273)//C to K#define T_K2C(x) ((x)-273)//K to C//摄氏温度与绝对温度相互转换#define T_AIR 298;//空气温度,K#define t_END 3600//计算时长,s#define t_STEP 1//时间步长,s#define COND_COP_CON#define COND_COP_STL#define COND_CON_STL//不同材料的两个相邻结点,导热系数取调和平均数,W/(m*K)////////////////////////////////////////////////////////////////////////////////计算参数宏定义结束//////////////////////////////////////////////////////////////////////////////// enum Property{ copper, steel, concrete, iso834, adiabat, air };//结点属性的枚举类型声明struct Grid{double mNodeT[GRID_ROW][GRID_COLUMN];//结点温度Property mNodeProperty[GRID_ROW][GRID_COLUMN];//结点材料属性double mNodeC[GRID_ROW][GRID_COLUMN];//结点比热容double mNodeDen[GRID_ROW][GRID_COLUMN];//结点密度};//结构体Grid定义,此为计算的主要承载数据结构,将在计算中存储温度数据//函数全局声明开始void SetProperty(Grid &);//属性设置函数void InitlTMPRT(Grid &);//温度初始化函数void SetNodePara(Grid &);//结点物性参数设置函数void CalculateTMPRT(Grid &);//温度计算函数,几乎全部数值计算的承担者void write(int,Grid &);//写文件函数,每隔100秒输出温度分布文件到当前目录//函数全局说明结束void SetProperty(Grid &A){for (int j = 0; j < GRID_COLUMN;++j)[0][j] = air;//第一行为空气边界,计算区域外for (int j = 0; j < GRID_COLUMN; ++j)[GRID_ROW-1][j] = adiabat;//最后一行为绝热边界,计算区域外for (int i = 0; i < GRID_ROW; ++i)if ((i >= 0 && i <= 40) || (i >= 61 && i < GRID_ROW))[i][0] = air;else[i][0] = iso834;//第一列的空气边界和ISO834边界,计算区域外for (int i = 0; i < GRID_ROW; ++i)[i][GRID_COLUMN - 1] = air;//最后一列,空气边界,计算区域外for (int i = 1; i < GRID_ROW - 1; ++i)for (int j = 1; j < GRID_COLUMN - 1; ++j){if ((i >= 1 && i <= 44 && j >= 1 && j <= 20) || (i >= 61 && i < GRID_ROW - 2 && j >= 1 && j <= (100 - (80 - i)*(49 / 19))))[i][j] = concrete;//混凝土区域else if ((i - 20)*(i - 20) + (j - 25)*(j - 25) <= 20 * 20)[i][j] = air;//圆孔空气区域else if (i >= 41 && i <= 60 && j >= 1 && j <= 90 && ((i - 20)*(i - 20) + (j - 25)*(j - 25) >= 20 * 20))[i][j] = copper;//金属铜区域的一部分else if (i >= 1 && i < +40 && j >= 21 && j <= 90)[i][j] = copper;//金属铜区域的另一部分else[i][j] = steel;//剩下的即为金属铁的区域}}//属性设置函数,将Grid结构体A的所有网格赋予材料属性(枚举类型 Property)void InitlTMPRT(Grid &A){for (int i = 0; i < GRID_ROW ; ++i)for (int j = 0; j < GRID_COLUMN ; ++j)[i][j] = INITL_TMPRT;}//温度初始化函数,将Grid结构体A的全部结点温度设置为初始温度INITL_TMPRTvoid CalculateTMPRT(Grid &A){double QE=0, QW=0, QN=0, QS=0;//四个方向传来的热量for (int i = 1; i < GRID_ROW - 1; ++i)for (int j = 1; j < GRID_COLUMN - 1; ++j){switch [i][j]){{switch [i][j + 1])//判断右侧属性,并计算QE{case copper:QE = [i][j + 1] - [i][j])*COND_COPPER;break;case air:QE = [i][j + 1] - [i][j])*CONV*DY;break;case steel:QE = [i][j + 1] - [i][j])*COND_COP_STL;break;case concrete:QE = [i][j + 1] - [i][j])*COND_COP_CON;break;case iso834:QE = 2 * [i][j + 1] - [i][j])*COND_COPPER;break;case adiabat:QE = 0;break;default:std::cout << i << "," << j + 1 << "结点属性未指定\n";getchar();}// std::cout << QE << "\n";switch [i][j - 1])//判断左侧属性,并计算QW{case copper:QW = [i][j - 1] - [i][j])*COND_COPPER;break;case air:QW = [i][j - 1] - [i][j])*CONV*DY;break;case steel:QW = [i][j - 1] - [i][j])*COND_COP_STL;break;case concrete:QW = [i][j - 1] - [i][j])*COND_COP_CON;break;case iso834:QW = 2 * [i][j - 1] - [i][j])*COND_COPPER;break;case adiabat:QW = 0;break;default:{std::cout << i << "," << j - 1 << "结点属性未指定\n";getchar(); }}switch [i - 1][j])//判断上侧属性,并计算QN{case copper:QN = [i - 1][j] - [i][j])*COND_COPPER;break;case air:QN = [i - 1][j] - [i][j])*CONV*DX;break;case steel:QN = [i - 1][j] - [i][j])*COND_COP_STL;break;case concrete:QN = [i - 1][j] - [i][j])*COND_COP_CON;break;case iso834:QN = 2 * [i - 1][j] - [i][j])*COND_COPPER;break;case adiabat:QN = 0;break;default:std::cout << i - 1 << "," << j << "结点属性未指定\n";getchar();}switch [i + 1][j])//判断下侧属性,并计算QS{case copper:QS = [i + 1][j] - [i][j])*COND_COPPER;break;case air:QS = [i + 1][j] - [i][j])*CONV*DX;break;case steel:QS = [i + 1][j] - [i][j])*COND_COP_STL;break;case concrete:QS = [i + 1][j] - [i][j])*COND_COP_CON;break;case iso834:QS = 2 * [i + 1][j] - [i][j])*COND_COPPER;break;case adiabat:QS = 0;break;default:std::cout << i + 1 << "," << j << "结点属性未指定\n";getchar();}break; }{switch [i][j + 1])//判断右侧属性,并计算QE{case copper:QE = [i][j + 1] - [i][j])*COND_COP_STL;break;case air:QE = [i][j + 1] - [i][j])*CONV*DY;break;case steel:QE = [i][j + 1] - [i][j])*COND_STEEL;break;case concrete:QE = [i][j + 1] - [i][j])*COND_CON_STL;break;case iso834:QE = 2 * [i][j + 1] - [i][j])*COND_STEEL;break;case adiabat:QE = 0;break;default:std::cout << i << "," << j + 1 << "结点属性未指定\n";getchar();}switch [i][j - 1])//判断左侧属性,并计算QW{case copper:QW = [i][j - 1] - [i][j])*COND_COP_STL;break;case air:QW = [i][j - 1] - [i][j])*CONV*DY;break;case steel:QW = [i][j - 1] - [i][j])*COND_STEEL;break;case concrete:QW = [i][j - 1] - [i][j])*COND_CON_STL;break;case iso834:QW = 2 * [i][j - 1] - [i][j])*COND_STEEL;break;case adiabat:QW = 0;break;default:std::cout << i << "," << j - 1 << "结点属性未指定\n";getchar();}switch [i - 1][j])//判断上侧属性,并计算QN{case copper:QN = [i - 1][j] - [i][j])*COND_COP_STL;break;case air:QN = [i - 1][j] - [i][j])*CONV*DX;break;case steel:QN = [i - 1][j] - [i][j])*COND_STEEL;break;case concrete:QN = [i - 1][j] - [i][j])*COND_CON_STL;break;case iso834:QN = 2 * [i - 1][j] - [i][j])*COND_STEEL;break;case adiabat:QN = 0;break;default:std::cout << i - 1 << "," << j << "结点属性未指定\n";getchar();}switch [i + 1][j])//判断下侧属性,并计算QS{case copper:QS = [i + 1][j] - [i][j])*COND_COP_STL;break;case air:QS = [i + 1][j] - [i][j])*CONV*DX;break;case steel:QS = [i + 1][j] - [i][j])*COND_STEEL;break;case concrete:QS = [i + 1][j] - [i][j])*COND_CON_STL;break;case iso834:QS = 2 * [i + 1][j] - [i][j])*COND_STEEL;break;case adiabat:QS = 0;break;default:std::cout << i + 1 << "," << j << "结点属性未指定\n";getchar();}break; }{switch [i][j + 1])//判断右侧属性,并计算QE{case copper:QE = [i][j + 1] - [i][j])*COND_COP_CON;break;case air:QE = [i][j + 1] - [i][j])*CONV*DY;break;case steel:QE = [i][j + 1] - [i][j])*COND_CON_STL;break;case concrete:QE = [i][j + 1] - [i][j])*COND_CONCRETE;break;case iso834:break;case adiabat:QE = 0;break;default:std::cout << i << "," << j + 1 << "结点属性未指定\n";getchar();}switch [i][j - 1])//判断左侧属性,并计算QW{case copper:break;case air:QW = [i][j - 1] - [i][j])*CONV*DY;break;case steel:break;case concrete:QW = [i][j - 1] - [i][j])*COND_CONCRETE;break;case iso834:case adiabat:QW = 0;break;default:std::cout << i << "," << j - 1 << "结点属性未指定\n";getchar();}switch [i - 1][j])//判断上侧属性,并计算QN{case copper:QN = [i - 1][j] - [i][j])*COND_COP_CON;break;case air:QN = [i - 1][j] - [i][j])*CONV*DX;break;case steel:QN = [i - 1][j] - [i][j])*COND_CON_STL;break;case concrete:QN = [i - 1][j] - [i][j])*COND_CONCRETE;break;case iso834:break;case adiabat:QN = 0;break;default:std::cout << i - 1 << "," << j << "结点属性未指定\n";getchar();}switch [i + 1][j])//判断下侧属性,并计算QS{case copper:QS = [i + 1][j] - [i][j])*COND_COP_CON;break;case air:QS = [i + 1][j] - [i][j])*CONV*DX;break;case steel:QS = [i + 1][j] - [i][j])*COND_CON_STL;break;case concrete:QS = [i + 1][j] - [i][j])*COND_CONCRETE;case iso834:break;case adiabat:QS = 0;break;default:std::cout << i + 1 << "," << j << "结点属性未指定\n";getchar();}break;}{[i][j] = T_AIR;break;}default:break;}[i][j] = (QE + QN + QS + QW) / [i][j] * [i][j] * DX*DY);}}//函数会判断每个结点相邻4个结点的属性,然后将四个结点传来的热量加和, //最后根据能量守恒计算出中间结点的温度值(时间全显式)void write(int t, Grid &A){char filename[40];int x = 1, y = 1;sprintf_s(filename, "temperature%", t);std::ofstream fout(filename);fout << "X,Y,TEMPERATURE\n";for (int i = GRID_ROW - 2; i > 0; --i){for (int j = 1; j < GRID_COLUMN - 1; ++j){if (y > 100)y = 1;fout << x << "," << y << "," << [i][j] << "\n";++y;}++x;}}void SetNodePara(Grid &A){for (int i = 0; i < GRID_ROW; ++i)for (int j = 0; j < GRID_COLUMN; ++j)switch [i][j]){case copper:[i][j] = C_COPPER;[i][j] = DEN_COPPER;break;case steel:[i][j] = C_STEEL;[i][j] = DEN_STEEL;break;case concrete:[i][j] = C_CONCRETE;[i][j] = DEN_CONCRETE;break;default:[i][j] = 1;[i][j] = 1;}}//////////////////////////////////////////////////////////////////////////////// /******************************************************************************/ //////////////////////////////////////////////////////////////////////////////// //主函数开始int main(){Grid P;SetProperty(P);InitlTMPRT(P);SetNodePara(P);for (int t = 1; t <= t_END; ++t){for (int i = 41; i <= 60; ++i)[i][0] = T_C2K(345 * log10(8 * t / 60 + 1) + 26);CalculateTMPRT(P);if (!(t % 100))write(t, P);}}。
6 二维流动与传热的数值计算
三、用Fluent求解
用Fluent求解包括导入和检查网格、建 立求解模型、设置边界条件、求解、显 示计算结果等。
1 网格的导入和检查及有关操作
启动Fluent6后,在以下窗口中选2D求解器,后按 Run,进入Fluent。
Flie: Read: Case…,在打开对话框中,指定到在 Gambit中导出的网格文件e:\example\mixer.msh, 点击OK后,将网格文件导入到Fluent中。
用同样方法,可以显示压力分布图和速度分布图
Display: Velocity Vector,显示速度矢量场,在弹出 的对话框中按照如下选择,并按Display按钮
4 设置边界条件
Define: Boundary Conditions…打开对话框如下,在 Gambit设置的三个边界类型inlet1、inlet2和Outlet之外, 还有fluid(流体)和壁(wall)这两种边界属性。
左侧栏中选中fluid,右侧类型中选fluid,按Set按钮,流体 对话框显示如下,将Material Name选择water-liquid(这 是我们刚才设置流体属性时,从Fluent材料库中复制过来的 流体),然后按OK按钮。
容
一、二维流动与传热问题描述
二、利用Gambit建立计算模型 三、利用Fluent-2D求解器求解
一、问题描述
一个冷热水混合器内部 流动与热量交换问题。 混合器的长宽均为20cm, 上部带3cm的圆角,温 度为T=350K的热水自上 部的热水管嘴流入,与 下部右侧的管嘴流入的 温度为290K的冷水再混 合器内进行热量与动量 交换后,自下部左侧的 小管嘴流出。
(完整版)传热学c语言编程
#include<stdio.h>#include<math.h>#define Nx 5 /*横坐标*/#define Ny 6 /*纵坐标*/#define k 22.7 /*导热系数*/#define h 42 /*对流换热表面传热系数*/#define tf 500 /*对流换热温度*/#define qw 45 /*对流换热温度*/#define Precision 1e-5 /*精度*/void main(){int i,j,m,n;float dx[4],dy[5];float t0[Nx][Ny],t1[Nx][Ny];float Wid=1.0,Height=1.5;float a,b,SY,PY,SX,PX;printf("\n经数值离散计算的该矩形区域内温度分布为:\n");for(m=0; m<3; m++){dx[0]=0.1;dx[m+1]=dx[m]+0.1;}for(n=0; n<4; n++){dy[0]=0.1;dy[n+1]=dy[n]+0.1;}/*赋边界值ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/ /*左边界值*/for(j=0; j<Ny-1; j++){t1[0][j]=200;}/*下边界值*/for(i=1; i<Nx-1; i++){t1[i][0]=75;}/*赋初值ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/ for(j=1; j<Ny-1; j++){for(i=1; i<Nx-1; i++){t1[i][j]=0;}}/*更新数据cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/line10:;for(j=0;j<Ny-1;j++){for(i=0;i<Nx-1;i++){t0[i][j]=t1[i][j];}}/*迭代开始ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*//*内部节点*/for(j=1;j<Ny-2;j++){for(i=1;i<Nx-2;i++){for(m=0; m<2; m++){for(n=0; n<3; n++){SY=dy[n]*dy[n+1];PY=dy[n]+dy[n+1];SX=dx[m]*dx[m+1];PX=dx[m]+dx[m+1];t1[i][j]=SY*PY*(dx[m+1]*t0[i-1][j]+dx[m]*t0[i+1][j])+SX*PX*(dy[n]*t0[i][j-1]+dy[n]*t0[i][j+1]); t1[i][j]= t1[i][j]/(PX*PY*(SX +SY));}}}}/* 右边界*/i= Nx-1;for(j=1;j<Ny-2;j++){for(m=3; m<3; m++){for(n=0; n<3; n++){SY=dy[n]*dy[n+1];PY=dy[n]+dy[n+1];a=dx[m]*dx[m];b=dy[n]*dy[n];t1[i][j]= SY*PY*(t0[i-1][j]+dx[m]*qw/k)+a*(dy[n+1]*t0[i][j-1]+dy[n]*t0[i][j]);t1[i][j]= t1[i][j]/((SY+a)*PY);}}}/*上边界*/j= Ny-1;for(i=1;i<Nx-2;i++){for(m=0; m<2; m++){for(n=4; n<=4; n++){ SX=dx[m]*dx[m+1];PX=dx[m]+dx[m+1];b=dy[n]*dy[n];t1[i][j]=k* b *(dx[m+1]*t0[i-1][j]+dx[m]*t0[i+1][j])+ SX*PX*(k*t0[i][j-1]+h*tf*dy[n]);t1[i][j]=t1[i][j]/( PX*(k* b+SX*(k+h*dy[n])));}}}/*右上角*/j=Ny-1;i=Nx-1;m=3;n=4;a=dx[m]*dx[m];b=dy[n]*dy[n];t1[i][j]=k* b *t0[i-1][j]+k*a*t0[i][j-1]+dx[m]* b *qw+ a*dy[n]*h*tf;t1[i][j]=t1[i][j]/(k*(a +b)+h* a*dy[n]);/*检验精度ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/ for(i=1;i<Nx-1;i++)for(j=1;j<Ny-1;j++){if(abs(t1[i][j]-t0[i][j])>Precision) goto line10;}/*迭代收敛,输出结果ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/for(j=Ny-1;j>=0;j--){for(i=0;i<=Nx-1;i++)printf("%7.1f",t1[i][j]);printf("\n");}}。
计算传热学程序介绍
计算传热学程序介绍计算传热学是用计算的方法研究热传递过程,给出刻画这些过程的状态量的数值大小,并据此来认识热传递过程及其变化规律,实际上计算传热学是一种近似方法,其基础是数值方法是离散化的近似算法,通过求解非连续的(分析解是连续的)区域代表点上待求变量的近似值。
本课程计算传热学程序的核心是用一系列的点代表连续的求解区域,本程序求解的核心是用离散的变量代替连续的变量。
计算传热学程序计算方法的计算步骤如下:⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧→⎪⎩⎪⎨⎧ 积分法级数展开法方程离散化内节点法外节点法区域离散化能量守恒动量守恒质量守恒数学模型物理模型计算传热学步骤控制容积多项项拟合T aylor 计算方法首先提出问题——流动性质(内流、外流;层流、湍流;单相流、多项流;可压、不可压……),确定流体属性(牛顿流体:液体、单组分气体、多组分气体、化学反应气体;非牛顿流体);然后分析问题——建模——N-S 方程(连续性假设),Boltzmann 方程(稀薄气体流动),各类本构方程与封闭模型; 根据分析结果解决问题——差分格式的构造/选择,程序的具体编写/软件的选用,后处理的完成;最后形成成果说明——文字,提交报告。
本课程计算传热学程序采用二维椭圆型流动和传热问题通用计算程序为基础研究计算传热学程序的计算方法,该程序具有以下特点:1. 采用原始变量法,即以速度U 、V 及压力P 作为直接求解的变量2. 守恒型的差分格式,离散方程系对守恒型的控制方程通过对控制容积作积分而得出的,无论网格疏密程度如何,均满足在计算区域内守恒的条件;3. 采用区域离散化方法B ,即先定控制体界面、再定节点位置4. 采用交叉网格,速度U 、V 与其他变量分别存储于三套网格系统中;5.不同的项在空间离散化过程中去不同的型线假设,源项采用局部线性化方法;扩散——对流项采用乘方格式(但很容易转化为中心差分、迎风差分或混合格式);街面上的扩散系数采用调和平均法,而密度与流速则用线性插值;6.不稳态问题采用全隐格式,以保证在任何时间步长下均可获得具有物理意义的解;7.边界条件采用附加源项法处理;8.耦合的流速与压力采用SIMPLE算法来求解;9.迭代式的求解方法,对非线性问题,整个求解过程具有迭代性质;对于代数方程也采用迭代法求解;10.采用交替方向先迭代法求解代数方程并补以块修正技术以促进收敛。
传热学上机C程序源答案之二维非稳态导热的数值计算
二维稳态导热的数值计算2.1物理问题一矩形区域,其边长L=W=1,假设区域内无内热源,导热系数为常数,三个边温度为T1=0,一个边温度为T2=1,求该矩形区域内的温度分布。
2.2 数学描述 对上述问题的微分方程及其边界条件为:2222T T 0x y∂∂+=∂∂ x=0,T=T 1=0x=1,T=T 1=0y=0,T=T 1=0y=1,T=T 2=1 该问题的解析解:112121(1)sin n n n sh y T T n L x n T T n L sh W L ππππ∞=⎛⎫⋅ ⎪---⎛⎫⎝⎭=⋅ ⎪-⎛⎫⎝⎭⋅ ⎪⎝⎭∑ 2.3数值离散2.3.1区域离散区域离散x 方向总节点数为N ,y 方向总节点数为M ,区域内任一节点用I,j 表示。
2.3.2方程的离散 对于图中所有的内部节点方程可写为:2222,,0i j i jt t x y ⎛⎫⎛⎫∂∂+= ⎪ ⎪∂∂⎝⎭⎝⎭ 用I,j 节点的二阶中心差分代替上式中的二阶导数,得:+1,,-1,,+1,,-1222+2+0i j i j i ji j i j i j T T T T T T x y --+=上式整理成迭代形式:()()22,1,-1,,1,-12222+2()2()i j i j i j i j i j y x T T T T T x y x y ++=++++ (i=2,3……,N -1),(j=2,3……,M -1)补充四个边界上的第一类边界条件得:1,1j T T = (j=1,2,3……,M),1N j T T = (j=1,2,3……,M),1i j T T = (i=1,2,3……,N),2i M T T (i=1,2,3……,N)#include<stdio.h>#include<math.h>#define N 10#define M 10main(){char s;int i,j,l;float cha,x,y;float t[N][M],a[N][M];/*打印出题目*/printf("\t\t\t 二维稳态导热问题\t\t");printf("\n\t\t\t\t\t\t----何鹏举\n");printf("\n 题目:补充材料练习题二\n");printf("\n 矩形区域,边长L=W=1,假设区域内无内热源,导热系数为常熟,三个边温度为T1=0,一个边温度为T2=1,求该矩形区域内的温度分布。
二维稳态导热实验报告材料.doc
实用标准文案传热学二维导热物体温度场的数值模拟作者:陈振兴学号:10037005 学院 ( 系) :化工学院专业:过程装备与控制工程班级:装备01指导教师:李增耀实验时间:2012-10二维导热物体温度场的数值模拟一、物理描述有一个用砖砌成的长方形截面的冷空气通道,其截面尺寸和示意图如图1-1 所示,假设在垂直纸面方向上冷空气及砖墙的温度变化很小,可以近似地予以忽略。
在以下情况下试计算:(1)砖墙横截面上的温度分布;(2)垂直于纸面方向的每米长度上通过砖墙的导热量。
1、内外表面均为第三类边界条件,且已知:t 1 30 C, h1 10 .33 W / m2 Ct 2 10 C,h2 3.93 W / m2 C砖墙的导热系数0.53W / m C2、内外壁分布均匀地维持在 0 C及 30C;图1-1二、数学描述该结构的导热问题可以作为二维问题处理,并且其截面如图1-1 所示,由于对称性,仅研究其 1/4 部分即可。
其网络节点划分如图2-1 ;上述问题为二维矩形域内的稳态、无内热源、常物性的导热问题,对于这样的物理问题,我们知道,描写其的微分方程即控制方程,就是导热微分方程:2 t 2 tx2 y 2第三类边界条件:内外表面均为第三类边界条件,且已知:t 1 30 C, h1 10.33 W / m2 Ct 2 10 C, h2 3.93 W / m2 C砖墙的导热系数0.53W / m Ca f( m, n)c bx = yxn ye m d图 2-1三:方程的离散如上图2-1 所示,用一系列与坐标轴平行的网络线把求解区域划分成许多子区域,以网格线的交点作为需要确定温度值的空间位置,即节点,节点的位置已该点在两个方向上的标号m、n 来表示。
每一个节点都可以看成是以它为中心的小区域的代表,如上(m,n):对于( m,n)为内节点时:由级数展开法或热平衡法都可以得到,当x = y时:t m,n 1(t m 1,n t m 1,ntm,n 1tm ,n 1) 4对于( m,n)为边界节点时:位于平直边界上的节点:t m, n 1(t m 1,n 2t m 1,ntm,n 1) 4外部角点:如图 2-1 中 a、 b、 d、 e、 f 点,t m,n 1(t m 1,ntm,n 1) 2内部角点:如图 2-1 中 c 点,t m,n 1( t m 1,n2tm 1,n2tm,n 1tm,n 1) 6由已知条件有,当 m=1或 n=13 时的节点的温度衡为t w1 =30 C )和(n=8 ,当( m=6且 n<9且6<m<17)时的节点的温度为 t w2 =10 C。
二维导热物体温度场的数值模拟
传热大作业二维导热物体温度场的数值模拟(等温边界条件)姓名:班级:学号:墙角稳态导热数值模拟(等温条件)一、物理问题有一个用砖砌成的长方形截面的冷空气空道,其截面尺寸如下图所示,假设在垂直于纸面方向上冷空气及砖墙的温度变化很小,可以近似地予以忽略。
在下列两种情况下试计算:(1)砖墙横截面上的温度分布;(2)垂直于纸面方向的每米长度上通过砖墙的导热量.外矩形长为3。
0m ,宽为2.2m ;内矩形长为2.0m ,宽为1。
2m 。
第一种情况:内外壁分别均匀地维持在0℃及30℃;第二种情况:内外表面均为第三类边界条件,且已知:外壁:30℃ ,h1=10W/m2·℃,内壁:10℃ ,h2= 4 W/m2·℃砖墙的导热系数λ=0。
53 W/m ·℃由于对称性,仅研究1/4部分即可。
二、数学描写对于二维稳态导热问题,描写物体温度分布的微分方程为拉普拉斯方程 02222=∂∂+∂∂y t x t这是描写实验情景的控制方程.三、方程离散用一系列与坐标轴平行的网格线把求解区域划分成许多子区域,以网格线的交点作为确定温度值的空间位置,即节点.每一个节点都可以看成是以它为中心的一个小区域的代表。
由于对称性,仅研究1/4部分即可。
依照实验时得点划分网格:建立节点物理量的代数方程对于内部节点,由∆x=∆y ,有 )(411,1,,1,1,-+-++++=n m n m n m n m n m t t t t t由于本实验为恒壁温,不涉及对流,故内角点,边界点代数方程与该式相同。
设立迭代初场,求解代数方程组。
图中,除边界上各节点温度为已知且不变外,其余各节点均需建立类似3中的离散方程,构成一个封闭的代数方程组。
以C t 000=为场的初始温度,代入方程组迭代,直至相邻两次内外传热值之差小于0.01,认为已达到迭代收敛。
四、编程及结果1) 源程序#include <stdio 。
h 〉#include <math.h 〉int main () {int k=0,n=0;double t[16][12]={0},s[16][12]={0}; double epsilon=0.001;double lambda=0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题:假定一个方形材料100mm*100mm ,四边分别为第一、第二、第三类边界条件,无内热源,导热系数为常数,分析该区域内的温度变化。
2.求解过程—热平衡法 (1)区域离散化对正方形区域进行离散,将该区域划分成不同节点数的不重叠子区域。
设置节点时采用内点法。
(2)控制方程离散化依据题意,二维稳态无源项的纯导热问题的控制方程如式(1)22220T x T y ∂∂+∂= (1)扩散项——中心差分,如式(2)(3)............................(2) . (3)将(2)、(3)、(4)式代入方程(1)可得到离散后的代数方程(5)21,,1,222,2()()i j i j i j i jt t t d t O x dx x +--+⎛⎫⎡⎤=+∆ ⎪⎣⎦∆⎝⎭2,1,,1222,2()()i j i j i j i jt t t d t O y dy y +--+⎛⎫⎡⎤=+∆ ⎪⎣⎦∆⎝⎭1,,1,,1,,122220()()i j i j i ji j i j i j t t t t t t x y +-+--+-++=∆∆ (4)因为采用正方形的网格,即△x =△y ,且无内热源(q V =0) ,则式(4 ) 简化为(3)边界条件处理 均为第一类边界条件,依据题意,设定边界条件如下:x=0时,t=800 x=1时,t=600 y=0时,t=200y=1时,t=100 4.结果1.第一类边界条件下的温度分布:输入四个边界温度分别为 800k 600k 200k 100k2,边界为第二类边界时的结果 边界条件: X=0,t=10y Y=0,t=10xX=100,t=10y+10(M-1) Y=100,t=10x+10(N-1)3,边界为第一、第二类边界时: X=0,t=10y Y=0,t=10x X=100,t=100 Y=100,t=200 3.程序得出四边第一类边界条件下的长方形的温度分布#include<stdio.h> #include <stdlib.h> #include<math.h>(),1,1,,1,114i j i j i j i j i j t t t t t +-+-=+++#define M 10#define N 20void main(){/****************键盘输入边界条件**************/float Tleft, Tright, Tdown, Ttop;printf("请输入长方形的四边温度条件Tleft Tright Tdown Ttop\n");scanf("%f%f%f%f",&Tleft,&Tright,&Tdown,&Ttop);/****************二维计算区域离散**************/float T[M][N];float Tcopy[M][N];//定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft;T[i][N-1] = Tcopy[i][N-1] = Tright;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop;T[M-1][j] = Tcopy[M-1][j]= Tdown;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Tdown +Ttop );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}第二类边界条件的温度分布#include<stdio.h>#include <stdlib.h>#include<math.h>#define M 11#define N 21void main(){/****************二维计算区域离散**************/float Tleft, Tright, Tdown, Ttop;float T[M][N];float Tcopy[M][N]; //定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft=10*i;T[i][N-1] = Tcopy[i][N-1] = Tright=10*i+10*N-10;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop=10*j;T[M-1][j] = Tcopy[M-1][j]= Tdown=10*j+10*M-10;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Ttop + Tdown );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}第一第二类边界:#include<stdio.h>#include <stdlib.h>#include<math.h>#define M 11#define N 21void main(){/****************二维计算区域离散**************/float Tleft, Tright, Tdown, Ttop;float T[M][N];float Tcopy[M][N]; //定义迭代对比矩阵int i,j,k;/*****************边界条件设置**************/for(i = 1;i < M-1;i++){T[i][0] = Tcopy[i][0] = Tleft=10*i;T[i][N-1] = Tcopy[i][N-1] = Tright=100;}for(j = 0;j < N;j++){T[0][j] = Tcopy[0][j] =Ttop=10*j;T[M-1][j] = Tcopy[M-1][j]= Tdown=200;}/*****************初始化**************/for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){T[i][j] = Tcopy[i][j] = 0.25 * ( Tleft + Tright + Ttop + Tdown );}/*****************迭代计算**************/float dif[M][N];float max,temp;for(i = 0;i < M;i++){for(j = 0;j < N;j++)dif[i][j] = 1.0;}float e = 0.001; //设置迭代误差限;for(k=1;k < 100;k++) // 设置最大迭代次数;{for(i = 1;i < M-1;i++) //完成一次迭代;for(j = 1;j < N-1;j++){T[i][j] = 0.25 * ( T[i-1][j] + T[i+1][j] + T[i][j-1] + T[i][j+1] );}for(i = 1;i < M-1;i++) //求相邻两迭代温度值的差值;for(j = 1;j < N-1;j++){dif[i][j] = fabs(T[i][j] - Tcopy[i][j]);}max = dif[1][1];for(i = 1;i < M-1;i++) //求相邻两迭代温度值的最大差值;for(j = 1;j < N-1;j++){if(max < dif[i][j])max = dif[i][j];}if(max <= e) break;for(i = 1;i < M-1;i++)for(j = 1;j < N-1;j++){Tcopy[i][j] = T[i][j];}}for(j = 0;j < N;j++)for(i = 0;i < M;i++){printf("%5.2f ", T[i][j]);if((i+1)%M==0) printf("\n");}system("pause");}。