You are on page 1of 8

/*simple*/

#include<stdio.h>
#include<math.h>
int main()
{
FILE*fg;
int i,j,itr;
float pstr[11][11],xp[11][11],yp[11][11],xu[11][11],yu[11][11],xv[11][11],yv[11]
[11],ustr[11][11],vstr[11][11],delt=0.001,delx=0.1,dely=0.1,a,b,c,d,unimg[11],uf
img[11],vnimg[11],vfimg[11],k1,k2,k3,k4,Astr,Bstr,ustr1[11][11],pprime[11][11],u
[11][11],v[11][11],p[11][11],mu=0.0009,pprime1[11][11],uprime[11][11],vprime[11]
[11],vstr1[11][11],uf[11][11],vf[11][11];
float u1av,u2av,v1av,v2av,ro=1,pr,di,err,err1;
xp[1][1]=0.0;
yp[1][1]=0.0;
/*initialization*/
for(i=1;i<=10;i++)
{
for(j=1;j<=9;j++)
{
xp[i][j+1]=xp[i][j]+0.1;
yp[i][j+1]=yp[i][j];
xu[i][j]=(xp[i][j]+xp[i][j+1])/2;
yu[i][j]=yp[i][j];
}
if(i<10)
{
xp[i+1][1]=xp[i][1];
yp[i+1][1]=yp[i][1]+0.1;
}
}
for(i=1;i<=9;i++)
{
for(j=1;j<=10;j++)
{
yv[i][j]=(yp[i][j]+yp[i+1][j])/2;
xv[i][j]=xp[i][j];
}
}
/*initial values for pressure @ internal points*/
for(i=2;i<=9;i++)
{
for(j=2;j<=9;j++)
{
pstr[i][j]=0.0;
}
}
/*inflow boundary pressure values*/
for(i=2;i<=9;i++)
{
pstr[i][1]=0.0;
}
/*outflow boundary pressure values*/
for(i=2;i<=9;i++)
{
pstr[i][10]=0.0;
}
/*near wall boundary pressure values*/
for(j=1;j<=10;j++)
{

pstr[1][j]=0.0;
}
/*far wall boundary pressure values*/
for(j=1;j<=10;j++)
{
pstr[10][j]=0.0;
}
/*initial values for velocity 1 @ internal points*/
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
ustr[i][j]=0.0;
}
}
/*near end solid boundary velocity 1 values*/
for(j=1;j<=9;j++)
{
ustr[1][j]=0.0;
}
/*far end solid boundary velocity 1 values*/
for(j=1;j<=9;j++)
{
ustr[10][j]=0.0;
}
/*initial values for velocity 2 @ internal points*/
for(i=1;i<=9;i++)
{
for(j=2;j<=10;j++)
{
vstr[i][j]=0.0;
}
}
/*inflow velocity 2 boundary conditions*/
for(i=1;i<=9;i++)
{
vstr[i][1]=0.0;
}
/*outflow velocity 2 boundary conditions*/
for(i=1;i<=9;i++)
{
vstr[i][10]=0.0;
}
/*initial values for pprime*/
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
pprime[i][j]=0.0;
}
}
/*image b.c.for vel1*/
for(i=2;i<=9;i++)
{
unimg[i]=1.0;
ufimg[i]=0;
}
unimg[1]=0.0;
ufimg[10]=0.0;
unimg[10]=0.0;

ufimg[1]=0.0;
for(j=1;j<=10;j++)
{
vnimg[j]=0.0;
vfimg[j]=0.0;
}
/*itrations to be started*/
for(itr=1;itr<=50000;itr++)
{
/*vel1 mass flux at inflow in boundary*/
for(i=2;i<=9;i++)
{
v1av=(vstr[i-1][1]+vstr[i-1][2])/(2);
v2av=(vstr[i][1]+vstr[i][2])/(2);
k1=(((ustr[i][2]*ustr[i][2])*ro)-((unimg[i]*unimg[i])*ro))/(2*delx);
k2=(((ro*ustr[i+1][1]*v2av))-((ro*ustr[i-1][1]*v1av)))/(2*dely);
k3=(ustr[i][2]-2*ustr[i][1]+unimg[i])/(delx*delx);
k4=(ustr[i+1][1]-2*ustr[i][1]+ustr[i-1][1])/(dely*dely);
Astr=-(k1+k2)+(mu)*(k3+k4);
ustr1[i][1]=(1/ro)*((ro*ustr[i][1])+Astr*delt-((delt/delx)*(pstr[i][2]-pstr[i][1
])));
/*printf("%d %d %f\n",i,j,ustr1[i][1]);*/
}
/*vel2 mass flux at outflow in boundary*/
for(i=2;i<=9;i++)
{
v1av=(vstr[i-1][9]+vstr[i-1][10])/(2);
v2av=(vstr[i][9]+vstr[i][10])/(2);
k1=-(((ustr[i][8]*ustr[i][8])*ro)-((ufimg[i]*ufimg[i])*ro))/(2*delx);
k2=(((ro*ustr[i+1][9]*v2av))-((ro*ustr[i-1][9]*v1av)))/(2*dely);
k3=(ustr[i][8]-2*ustr[i][9]+ufimg[i])/(delx*delx);
k4=(ustr[i+1][9]-2*ustr[i][9]+ustr[i-1][9])/(dely*dely);
Astr=-(k1+k2)+(mu)*(k3+k4);
ustr1[i][9]=(1/ro)*((ro*ustr[i][9])+Astr*delt-((delt/delx)*(pstr[i][10]-pstr[i][
9])));
/*printf("%d %f\n",i,ustr1[i][9]);*/
}
/*flux at internal points*/
for(i=2;i<=9;i++)
{
for(j=2;j<=8;j++)
{
v1av=(vstr[i-1][j]+vstr[i-1][j+1])/(2);
v2av=(vstr[i][j]+vstr[i][j+1])/(2);
k1=(((ustr[i][j+1]*ustr[i][j+1])*ro)-((ustr[i][j-1]*ustr[i][j-1])*ro))/(2*delx);
k2=(((ro*ustr[i+1][j]*v2av))-((ro*ustr[i-1][j]*v1av)))/(2*dely);
k3=(ustr[i][j+1]-2*ustr[i][j]+ustr[i][j-1])/(delx*delx);
k4=(ustr[i+1][j]-2*ustr[i][j]+ustr[i-1][j])/(dely*dely);
Astr=-(k1+k2)+(mu)*(k3+k4);
ustr1[i][j]=(1/ro)*((ro*ustr[i][j])+Astr*delt-((delt/delx)*(pstr[i][j+1]-pstr[i]
[j])));
/*printf("%d %d %f\n",i,j,ustr1[i][j]);*/
}
}
/*flux near near solid boundary*/
for(j=2;j<=9;j++)
{
u1av=(ustr[1][j-1]+ustr[2][j-1])/(2);
u2av=(ustr[1][j]+ustr[2][j])/(2);
k1=(((vstr[2][j]*vstr[2][j])*ro)-((vnimg[j]*vnimg[j])*ro))/(2*dely);

k2=(((vstr[1][j+1]*u2av))-((vstr[1][j-1]*u1av)))/(2*delx);
k3=(vstr[1][j+1]-2*vstr[1][j]+vstr[1][j-1])/(delx*delx);
k4=(vstr[2][j]-2*vstr[1][j]+vnimg[j])/(dely*dely);
Bstr=-(k1+k2)+(mu)*(k3+k4);
vstr1[1][j]=(1/ro)*((ro*vstr[1][j])+Bstr*delt-((delt/dely)*(pstr[2][j]-pstr[1][j
])));
/*printf("%d %f\n",j,vstr1[1][j]);*/
}
/*vel2 mass flux at outflow in boundary*/
for(j=2;j<=9;j++)
{
u1av=(ustr[10][j-1]+ustr[9][j-1])/(2);
u2av=(ustr[10][j]+ustr[9][j])/(2);
k1=-(((vstr[8][j]*vstr[8][j])*ro)-((vfimg[j]*vfimg[j])*ro))/(2*dely);
k2=(((ro*vstr[9][j+1]*u2av))-((ro*vstr[9][j-1]*u1av)))/(2*delx);
k3=(vstr[9][j+1]-2*vstr[9][j]+vstr[9][j-1])/(delx*delx);
k4=(vstr[8][j]-2*vstr[9][j]+vfimg[j])/(dely*dely);
Bstr=-(k1+k2)+(mu)*(k3+k4);
vstr1[9][j]=(1/ro)*((ro*vstr[9][j])+Bstr*delt-((delt/dely)*(pstr[10][j]-pstr[9][
j])));
/*printf("%d %f\n",j,vstr1[9][j]);*/
}
/*flux at internal points*/
for(i=2;i<=8;i++)
{
for(j=2;j<=9;j++)
{
u1av=(ustr[i][j-1]+ustr[i+1][j-1])/(2);
u2av=(ustr[i][j]+ustr[i+1][j])/(2);
k1=(((vstr[i+1][j]*vstr[i+1][j])*ro)-((vstr[i-1][j]*vstr[i-1][j])*ro))/(2*dely);
k2=(((ro*vstr[i][j+1]*u2av))-((ro*vstr[i][j-1]*u1av)))/(2*delx);
k3=(vstr[i][j+1]-2*vstr[i][j]+vstr[i][j-1])/(delx*delx);
k4=(vstr[i+1][j]-2*vstr[i][j]+vstr[i-1][j])/(dely*dely);
Bstr=-(k1+k2)+(mu)*(k3+k4);
vstr1[i][j]=(1/ro)*((ro*vstr[i][j])+Bstr*delt-((delt/dely)*(pstr[i+1][j]-pstr[i]
[j])));
/*printf("%d %d %f\n",i,j,vstr1[i][j]);*/
}
}
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
/*printf("%d %d %f\n",i,j,ustr1[i][j]/ustr[i][j]);*/
ustr[i][j]=ustr1[i][j];
/*printf("%d %d %f\n",i,j,ustr[i][j]);*/
}
}
/*inflow floating boundaries*/
for(i=1;i<=10;i++)
{
/*unimg[i]=ustr[i][1];*/
ufimg[i]=ustr[i][9];
}
for(i=1;i<=9;i++)
{
vstr[i][1]=vstr[i][2];
}

for(i=1;i<=9;i++)
{
vstr[i][10]=vstr[i][9];
}
for(j=1;j<=10;j++)
{
vnimg[j]=-/*(3/2)**/vstr[1][j];
vfimg[j]=-/*(3/2)**/vstr[9][j];
}
/*for(i=1;i<=10;i++)
{
printf("%d %f\n",i,ufimg[i]);
}*/
/*for(j=1;j<=10;j++)
{
printf("%d %f\n",j,vfimg[j]);
}*/
for(i=1;i<=9;i++)
{
for(j=2;j<=9;j++)
{
vstr[i][j]=vstr1[i][j];
/*printf("%f\n",vstr[i][j]);*/
}
}
/*for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
/*printf("%f\n",ustr[i][j]);*/
/*}
}*/
do
{
pr=0.0;
di=0.0;
for(i=2;i<=9;i++)
{
for(j=2;j<=9;j++)
{
a=2*((delt/(delx*delx))+(delt/(dely*dely)));
b=-delt/(delx*delx);
c=-delt/(dely*dely);
d=((1/delx)*(ro*ustr[i][j]-ro*ustr[i][j-1])+(1/dely)*(ro*vstr[i][j]-ro*vstr[i-1]
[j]));
pprime1[i][j]=-(1/a)*((b*pprime[i][j+1]+b*pprime[i][j-1]+c*pprime[i-1][j]+c*ppri
me[i+1][j]+d));
pr=pr+((pprime1[i][j]-pprime[i][j])*(pprime1[i][j]-pprime[i][j]));
di=di+d;
/*printf("%d %d %f %f %f\n",i,j,ustr[i][j],ustr[i][j-1],d);*/
}
}
printf("%f %f\n",pr,di/64);
for(i=2;i<=9;i++)
{
for(j=2;j<=9;j++)
{

pprime[i][j]=pprime1[i][j];
/*printf("%d %d %f\n",i,j,pprime[i][j]);*/
}
}
}
while(pow(pr/100,0.5)>=0.0001);
for(i=2;i<=9;i++)
{
for(j=2;j<=9;j++)
{
pstr[i][j]=pstr[i][j]+0.1*pprime[i][j];
}
}
for(i=2;i<=9;i++)
{
pstr[i][1]=pstr[i][2];
/*pstr[i][10]=pstr[i][9];*/
}
for(j=1;j<=10;j++)
{
pstr[1][j]=pstr[2][j];
pstr[10][j]=pstr[9][j];
}
for(i=2;i<=9;i++)
{
for(j=1;j<=9;j++)
{
uprime[i][j]=-((delt)/(2*delx*ro))*(pprime[i][j+1]-pprime[i][j]);
ustr[i][j]=ustr[i][j]+0.1*uprime[i][j];
}
}
for(i=1;i<=9;i++)
{
for(j=2;j<=9;j++)
{
vprime[i][j]=-((delt)/(2*dely*ro))*(pprime[i+1][j]-pprime[i][j]);
vstr[i][j]=(vstr[i][j]+0.1*vprime[i][j]);
}
}
for(i=1;i<=9;i++)
{
vstr[i][1]=vstr[i][2];
}
for(i=1;i<=9;i++)
{
vstr[i][10]=vstr[i][9];
}
/*inflow floating boundaries*/
for(i=1;i<=10;i++)
{
/*unimg[i]=ustr[i][1];*/
ufimg[i]=ustr[i][9];
}
for(j=1;j<=10;j++)
{
vnimg[j]=-/*(3/2)**/vstr[1][j];
vfimg[j]=-/*(3/2)**/vstr[9][j];
}
}

for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
p[i][j]=pstr[i][j];
/*printf("%f\n",p[i][j]);*/
}
}
for(i=1;i<=10;i++)
{
for(j=1;j<=9;j++)
{
u[i][j]=ustr[i][j];
}
}
for(i=1;i<=9;i++)
{
for(j=1;j<=10;j++)
{
v[i][j]=vstr[i][j];
}
}
for(i=1;i<=10;i++)
{
uf[i][1]=(u[i][1]+unimg[i])/2;
}
for(i=1;i<=10;i++)
{
uf[i][10]=(u[i][9]+ufimg[i])/2;
}
for(i=1;i<=10;i++)
{
for(j=2;j<=9;j++)
{
uf[i][j]=(u[i][j-1]+u[i][j])/2;
}
}
for(j=1;j<=10;j++)
{
vf[1][j]=(v[1][j]+vnimg[j])/2;
}
for(j=1;j<=10;j++)
{
vf[10][j]=(v[10][j]+vfimg[j])/2;
}
for(i=2;i<=9;i++)
{
for(j=1;j<=10;j++)
{
vf[i][j]=(v[i-1][j]+v[i][j])/2;
}
}
fg=fopen("multi1.txt","w");
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
fprintf(fg,"%f %f %f %f %f\n",xp[i][j],yp[i][j],uf[i][j],vf[i][j],pstr[i][j]);

}
}
fclose(fg);
fg=fopen("multi.txt","w");
for(i=1;i<=10;i++)
{
for(j=1;j<=9;j++)
{
fprintf(fg,"%f %f %f \n",xu[i][j],yu[i][j],u[i][j]);
}
}
fclose(fg);
fg=fopen("mult.txt","w");
for(i=1;i<=9;i++)
{
for(j=1;j<=10;j++)
{
fprintf(fg,"%f %f %f \n",xv[i][j],yv[i][j],v[i][j]);
}
}
fclose(fg);
}

You might also like