一维对流扩散问题求解.docx
- 文档编号:7323485
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:37
- 大小:583.60KB
一维对流扩散问题求解.docx
《一维对流扩散问题求解.docx》由会员分享,可在线阅读,更多相关《一维对流扩散问题求解.docx(37页珍藏版)》请在冰豆网上搜索。
一维对流扩散问题求解
Subjects:
Aproperty
istransportedbymeansofconvectionanddiffusionthroughtheone-dimensionaldomain.Thegoverningequationis
;boundaryconditionsare
atx=0and
atx=L.Usingfiveequallyspacedcellsandthecentraldifferencingschemeforconvectionanddiffusioncalculatethedistributionof
asafunctionofxfor
(i)Case1:
(ii)Case2:
Case1:
u=2.5m/s,andcomparetheresultswiththeanalyticalsolution
.
(iii)Case3:
recalculatethesolutionfor
lengthL=1.0m,
.
Solution:
Programminglanguage:
Filename:
二维稳态导热模拟.cpp
Compilesoftware:
MicrosoftVisualC++6.0
Code:
#include
#include
#include
usingnamespacestd;
#defineGn15//网格节点数.
#defineGn220//网格节点数.
#defineP1//流体密度,单位:
kg/m/m/m.
#defineProA1//A端传递特性.
#defineProB0//B端传递特性.
//////FDD///////追赶法过程
voidTDMA1(doublea[],doubleb[],doublec[],doublef[],double*p)
{//矩阵形式
//b0c000//=f0
//a0b1c10//=f1
//...............
//00...b(N-1)c(N-2)//=f(N-1)
doubled[Gn1-1],u[Gn1],ll[Gn1-1],y[Gn1],X[Gn1];
inti;
for(i=0;i<=Gn1-2;i++)
{
d[i]=c[i];
}
u[0]=b[0];
for(i=1;i<=Gn1-1;i++)
{
ll[i-1]=a[i-1]/u[i-1];
u[i]=b[i]-ll[i-1]*c[i-1];
}
y[0]=f[0];
for(i=1;i<=Gn1-1;i++)
{
y[i]=f[i]-ll[i-1]*y[i-1];
}
X[Gn1-1]=y[Gn1-1]/u[Gn1-1];
for(i=Gn1-2;i>=0;i--)
{
X[i]=(y[i]-c[i]*X[i+1])/u[i];
}
for(i=0;i<=Gn1-1;i++)
*(p+i)=X[i];
}
voidTDMA2(doublea[],doubleb[],doublec[],doublef[],double*p)
{
doubled[Gn2-1],u[Gn2],ll[Gn2-1],y[Gn2],X[Gn2];
inti;
for(i=0;i<=Gn2-2;i++)
{
d[i]=c[i];
}
u[0]=b[0];
for(i=1;i<=Gn2-1;i++)
{
ll[i-1]=a[i-1]/u[i-1];
u[i]=b[i]-ll[i-1]*c[i-1];
}
y[0]=f[0];
for(i=1;i<=Gn2-1;i++)
{
y[i]=f[i]-ll[i-1]*y[i-1];
}
X[Gn2-1]=y[Gn2-1]/u[Gn2-1];
for(i=Gn2-2;i>=0;i--)
{
X[i]=(y[i]-c[i]*X[i+1])/u[i];
}
for(i=0;i<=Gn2-1;i++)
*(p+i)=X[i];
}
voidmain()
{
doubleu,L=1,T=0.1,min_x,F,D,aW,aE,m,n;
doublea[Gn2],b[Gn2],c[Gn2],f[Gn2],X[Gn2];
intserial_number1,serial_number2,i;
printf("Therearefourmethodstosolvethesecases:
\n");
printf("1.Thecentraldifferencingscheme.\n");
printf("2.Theupwinddifferencingscheme.\n");
printf("3.Thehybriddifferencingscheme.\n");
printf("4.Thepower-lawscheme.\n");
printf("Pleaseinputtheserialnumberofthemethodwhichyouwanttouse:
");
scanf("%d",&serial_number1);
printf("Therearethreecasesinthissubject:
\n");
printf("1.
printf("2.
printf("3.
printf("Pleaseinputtheserialnumberofthecasewhichyouwanttosolve:
");
scanf("%d",&serial_number2);
if(serial_number1==1)//中心差分法
{
if(serial_number2==1)//第一题开始
{
min_x=L/Gn1;
F=P*u;
D=T/min_x;
aW=D+F/2;
aE=D-F/2;
m=2*D+F;
n=2*D-F;
for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } voidTDMA1(doublea[],doubleb[],doublec[],doublef[],double*p); TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==2)//第二题开始 { u=2.5; min_x=L/Gn1; F=P*u; D=T/min_x; aW=D+F/2; aE=D-F/2; m=2*D+F; n=2*D-F; for(i=0;i a[i]=-aW, c[i]=-aE; for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==3)//第三题开始 { u=2.5; min_x=L/Gn2; F=P*u; D=T/min_x; aW=D+F/2; aE=D-F/2; m=2*D+F; n=2*D-F; for(i=0;i { a[i]=0; c[i]=0; } for(i=0;i { b[i]=0; f[i]=0; } for(i=0;i a[i]=-aW; c[i]=-aE; for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn2-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA2(a,b,c,f,X); printf("Result: X["); printf("%d",Gn2); printf("]=\n"); for(i=0;i<=Gn2-1;i++) { printf(""); printf("%lf\n",X[i]); } } else printf("NOcaseisselected,pleasecheckouttheinputserialnumber."); } elseif(serial_number1==2)//一阶迎风方法 { if(serial_number2==1)//第一题开始 { min_x=L/Gn1; F=P*u; D=T/min_x; aW=D+F; aE=D; m=2*D+F; n=2*D; for(i=0;i { a[i]=0; c[i]=0; } for(i=0;i { b[i]=0; f[i]=0; } for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==2)//第二题开始 { u=2.5; min_x=L/Gn1; F=P*u; D=T/min_x; aW=D+F; aE=D; m=2*D+F; n=2*D; for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==3)//第三题开始 { u=2.5; min_x=L/Gn2; F=P*u; D=T/min_x; aW=D+F; aE=D; m=2*D+F; n=2*D; for(i=0;i { a[i]=0; c[i]=0; } for(i=0;i { b[i]=0; f[i]=0; } for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn2-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA2(a,b,c,f,X); printf("Result: X["); printf("%d",Gn2); printf("]=\n"); for(i=0;i<=Gn2-1;i++) { printf(""); printf("%lf\n",X[i]); } } else printf("Nocaseisselected,pleasecheckouttheinputserialnumber.\n"); } elseif(serial_number1==3)//混合方法 { if(serial_number2==1)//第一题开始 { min_x=L/Gn1; F=P*u; D=T/min_x; aW=F; aE=0; m=2*D+F; n=2*D; for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==2)//第二题开始 { u=2.5; min_x=L/Gn1; F=P*u; D=T/min_x; aW=F; aE=0; m=2*D+F; n=2*D; for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn1-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA1(a,b,c,f,X); printf("Result: X["); printf("%d",Gn1); printf("]=\n"); for(i=0;i<=Gn1-1;i++) { printf(""); printf("%lf\n",X[i]); } } elseif(serial_number2==3)//第三题开始 { u=2.5; min_x=L/Gn2; F=P*u; D=T/min_x; aW=F; aE=0; m=2*D+F; n=2*D; for(i=0;i { a[i]=-aW; c[i]=-aE; } for(i=0;i { if(i==0) { b[i]=-c[i]+m; f[i]=m*ProA; } elseif(i==Gn2-1) { b[i]=-a[i-1]+n; f[i]=n*ProB; } else { b[i]=-c[i]-a[i-1]; f[i]=0; } } TDMA2(a,b,c,f,X); printf("Result: X["); printf("%d",Gn2); printf("]=\n"); for(i=0;i<=Gn2-1;i++) { printf(""); printf("%lf\n",X[i]); } } else printf("Nocaseisselected,pleasecheckouttheinputserialnumber.\n"); } elseif(serial_number1==4)//指数方法 { if(serial_number2==1)//第一题开始 { min_x=L/Gn1; F=P*u; D=T/min_x; aW=0.03125*D+F;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对流 扩散 问题 求解
![提示](https://static.bdocx.com/images/bang_tan.gif)