You are on page 1of 3

#include <stdio.

h>
#include <math.h>
int main()
{
double Re=2, alp=0.2, t[100][100], tl[100][100], tp[100][100], dR, dz, A,
Q=0.1, ro=0.03, w=0.007, e[100][100], ep[100][100], maxer, maxe, a[100][4], b[100];
int i, j, n=20, m=10, it, itt=0;
dR=(Re-1)/(n-1);
dz=1.0/(m-1);
A=pow((2*ro*dR)/(dz*w),2);
/*printf("%lf\t%lf\t%lf\n", dR, dz, A);*/
for(j=1;j<=m;j++)
t[1][j]=1;
for(i=1;i<=n;i++)
t[i][m]=0;
for(i=2;i<=n;i++)
{
for(j=1;j<m;j++)
t[i][j]=0.5;
}
do
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
tp[i][j]=t[i][j];
}
it=0;
do
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
tl[i][j]=t[i][j];
}
for(j=2;j<m;j++)
{
for(i=2;i<n;i++)
{
a[i][3]=(1+(0.5*dR)/(1+(i-1)*dR))*(1+alp*tp[i][j])
+0.5*alp*(tp[i+1][j]-tp[i-1][j]);
a[i][1]=(1-(0.5*dR)/(1+(i-1)*dR))*(1+alp*tp[i][j])-
0.5*alp*(tp[i+1][j]-tp[i-1][j]);
if(j==2)
{
a[i][2]=-2*(1+alp*tp[i][j])+alp*(tp[i+1][j]*(1+(0.5*dR)/(1+
(i-1)*dR))+tp[i-1][j]*(1-(0.5*dR)/(1+(i-1)*dR)))+(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*(-2+alp*(tp[i][j+1]+tp[i][j-1]-4*tp[i][j]))+(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*(1+alp*(tp[i][j]-0.5*(tp[i][j+1]-tp[i][j-1])));
b[i]=(-1)*(A/pow(1+1.0/pow(1+(i-1)*dR,2),2))*(1+alp*(tp[i]
[j]+0.5*(tp[i][j+1]-tp[i][j-1])))*tl[i][j+1]+alp*tp[i][j]*(tp[i+1][j]-2*tp[i][j]
+tp[i-1][j]+((0.5*dR)*(tp[i+1][j]-tp[i-1][j]))/(1+(i-1)*dR))+0.25*alp*pow(tp[i+1]
[j]-tp[i-1][j],2)+(A/pow(1+1.0/pow(1+(i-1)*dR,2),2))*alp*(tp[i][j]*(tp[i][j+1]-
2*tp[i][j]+tp[i][j-1])+0.25*pow(tp[i][j+1]-tp[i][j-1],2))-Q*dR*dR;
}
else
{
a[i][2]=-2*(1+alp*tp[i][j])+alp*(tp[i+1][j]*(1+(0.5*dR)/(1+
(i-1)*dR))+tp[i-1][j]*(1-(0.5*dR)/(1+(i-1)*dR)))+(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*(-2+alp*(tp[i][j+1]+tp[i][j-1]-4*tp[i][j]));
b[i]=(-1)*(A/pow(1+1.0/pow(1+(i-1)*dR,2),2))*(1+alp*(tp[i]
[j]+0.5*(tp[i][j+1]-tp[i][j-1])))*tl[i][j+1]-(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*(1+alp*(tp[i][j]-0.5*(tp[i][j+1]-tp[i][j-1])))*tl[i][j-1]+alp*tp[i]
[j]*(tp[i+1][j]-2*tp[i][j]+tp[i-1][j]+((0.5*dR)*(tp[i+1][j]-tp[i-1][j]))/(1+(i-
1)*dR))+0.25*alp*pow(tp[i+1][j]-tp[i-1][j],2)+(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*alp*(tp[i][j]*(tp[i][j+1]-2*tp[i][j]+tp[i][j-1])+0.25*pow(tp[i][j+1]-
tp[i][j-1],2))-Q*dR*dR;
}
}
b[2]=b[2]-a[2][1];
a[2][1]=0;
a[n-1][2]=a[n-1][2]+a[n-1][3];
a[n-1][3]=0;
for(i=3;i<n;i++)
{
a[i][2]=a[i][2]-(a[i][1]/a[i-1][2])*a[i-1][3];
b[i]=b[i]-(a[i][1]/a[i-1][2])*b[i-1];
}
t[n-1][j]=b[n-1]/a[n-1][2];
for(i=(n-2);i>1;i--)
t[i][j]=(b[i]-a[i][3]*t[i+1][j])/a[i][2];
}
for(j=2;j<=m;j++)
t[n][j]=t[n-1][j];
for(i=2;i<=n;i++)
t[i][1]=t[i][2];
maxer=0;
for(i=2;i<n;i++)
{
for(j=2;j<m;j++)
{
e[i][j]=fabs(t[i][j]-tl[i][j]);
/*if(it<2)
e[i][j]=1;*/
if(maxer<e[i][j])
maxer=e[i][j];
}
}
printf("MX%lf\n", maxer);
it++;
}while(it<20);
maxe=0;
for(i=2;i<n;i++)
{
for(j=2;j<m;j++)
{
ep[i][j]=fabs(t[i][j]-tp[i][j]);
if(itt<2)
ep[i][j]=1;
if(maxe<ep[i][j])
maxe=ep[i][j];
}
}
itt++;
printf("\n%d\n", itt+1);
}while(itt<5);
for(i=1;i<=n;i++)
printf("%lf\n", t[i][2]);
/*(-1)*(A/pow(1+1.0/pow(1+(i-1)*dR,2),2))*(1+alp*(tp[i][j]+0.5*(tp[i][j+1]-
tp[i][j-1])))*tl[i][j+1];
-(A/pow(1+1.0/pow(1+(i-1)*dR,2),2))*(1+alp*(tp[i][j]-0.5*(tp[i][j+1]-tp[i][j-
1])))*tl[i][j-1];
+alp*tp[i][j]*(tp[i+1][j]-2*tp[i][j]+tp[i-1][j]+((0.5*dR)*(tp[i+1][j]-tp[i-1]
[j]))/(1+(i-1)*dR))+0.25*alp*pow(tp[i+1][j]-tp[i-1][j],2)+(A/pow(1+1.0/pow(1+(i-
1)*dR,2),2))*alp*(tp[i][j]*(tp[i][j+1]-2*tp[i][j]+tp[i][j-1])+0.25*pow(tp[i][j+1]-
tp[i][j-1],2))-Q*dR*dR;
*/
}

You might also like