?? 555.cpp
字號:
+---+---+---+---+--
0 1 2 3
*/
sc[0][0]=sc[3][3]; /* A */
sc[0][1]=sc[3][2]; /* C */
sc[1][0]=sc[2][3]; /* B */
sc[1][1]=sc[2][2]; /* D */
/* right & bottom
| | | |
-+---+---+---+---
3 | B | A | |
-+---+---+---+---
2 | D | C | |
-+---+---+---+---
1 | | | C | D
-+---+---+---+---
0 | | | A | B
-+---+---+---+---
-4 -3 -2 -1
*/
sc[IMAX-1][0]=sc[IMAX-4][3]; /* B */
sc[IMAX-1][1]=sc[IMAX-4][2]; /* D */
sc[IMAX-2][0]=sc[IMAX-3][3]; /* A */
sc[IMAX-2][1]=sc[IMAX-3][2]; /* C */
/* left & top (wall condition)
-1 | A | B | |
+---+---+---+---
-2 | C | D | |
+---+---+---+---
-3 | | | D | C
+---+---+---+---
-4 | | | B | A
+---+---+---+---
0 1 2 3
*/
sc[0][JMAX-1]=sc[3][JMAX-4]; /* A */
sc[0][JMAX-2]=sc[3][JMAX-3]; /* C */
sc[1][JMAX-1]=sc[2][JMAX-4]; /* B */
sc[1][JMAX-2]=sc[2][JMAX-3]; /* D */
/* right & top (wall condition)
-1 | | | D | C
-+---+---+---+---
-2 | | | A | B
-+---+---+---+---
-3 | B | A | |
-+---+---+---+---
-4 | C | D | |
-+---+---+---+---
-4 -3 -2 -1
*/
sc[IMAX-1][JMAX-1]=sc[IMAX-4][JMAX-4]; /* C */
sc[IMAX-1][JMAX-2]=sc[IMAX-4][JMAX-3]; /* B */
sc[IMAX-2][JMAX-1]=sc[IMAX-3][JMAX-4]; /* D */
sc[IMAX-2][JMAX-2]=sc[IMAX-3][JMAX-3]; /* A */
return(0);
}
int bc_velo(double un[IMAX][JMAX], double vn[IMAX][JMAX]){
int i,j;
double zz, dlt;
/* Ref. MOLESKINE 26/06/07 */
/***** LEFT SIDE *****/
/*... wall ... */
for(j=OUTLET+2; j<=JMAX-1; j++)
un[2 ][j]=0.;
/***** BOTTOM *****/
for(i=0; i<=IMAX-1; i++)
vn[i][2 ]=0.;
/***** un for LEFTSIDE *****/
/* ... outlet ... */
for(j=2; j<=OUTLET+1; j++){
un[0 ][j]=OUT_U;
un[1 ][j]=OUT_U;
un[2 ][j]=OUT_U;
}
/* ... wall ... */
for(j=OUTLET+2; j<=JMAX-1; j++){
un[0 ][j]=-un[4][j];
un[1 ][j]=-un[3][j];
}
/***** un for RIGHTSIDE *****/
/* ... inlet ... */
for(j=2; j<=JMAX-1; j++){
un[IMAX-1][j]=V0;
un[IMAX-2][j]=un[IMAX-1][j];
}
/***** vn for LEFTSIDE *****/
/* ... outlet ... */
//for(j=3; j<=OUTLET+1; j++){ //slx.change
for(j=2;j<=OUTLET+1;j++){
vn[0 ][j]=vn[2 ][j];
vn[1 ][j]=vn[2 ][j];
}
vn[0 ][OUTLET+2]=0.;
vn[1 ][OUTLET+2]=0.;
/* ... wall ... */
for(j=OUTLET+3; j<=JMAX-1; j++){
vn[0 ][j]=-vn[3 ][j];
vn[1 ][j]=-vn[2 ][j];
}
/***** vn for RIGHTSIDE *****/
/* ... inlet ... */
for(j=3; j<=INLET+2; j++){
vn[IMAX-1][j]=IN_V;
vn[IMAX-2][j]=IN_V;
}
/* ... openboundary on inlet ... */
for(j=OUTLET+2; j<=JMAX-1; j++){
vn[IMAX-1][j]=vn[IMAX-3][j];
vn[IMAX-2][j]=vn[IMAX-3][j];
}
/***** un for BOTTOM *****/
for(i=3; i<=IMAX-3; i++){
un[i][0 ]=-un[i][3 ];
un[i][1 ]=-un[i][2 ];
}
/***** un for TOP (open boundary) *****/
for(i=0; i<=IMAX-1; i++){
un[i][JMAX-1]=un[i][JMAX-3];
un[i][JMAX-2]=un[i][JMAX-3];
}
/***** vn for BOTTOM *****/
for(i=3; i<=IMAX-4; i++){
vn[i][0 ]=-vn[i][4 ];
vn[i][1 ]=-vn[i][3 ];
}
/* vn for TOP */
for(i=0; i<=IMAX-1; i++){
vn[i][JMAX-1]=vn[i][JMAX-3];
vn[i][JMAX-2]=vn[i][JMAX-3];
}
/* corner */
/* left & bottom
for u
+---+---+---+---+
3 | | | > ?
+---+---+---+---+
2 | | | x *
+---+---+---+---+
1 * x | | |
+---+---+---+---+
0 ? > | | |
+---+---+---+---+
0 1 2 3 4
for v
4 +---+---+->-+-?-+
| | | | |
3 +---+---+-x-+-*-+
| | | | |
2 +---+---+---+---+
| | | | |
1 +-*-+-x-+---+---+
| | | | |
0 +-?-+->-+---+---+
0 1 2 3
*/
un[0][0]=un[4][3]; /* ? */
un[1][0]=un[3][3]; /* > */
un[0][1]=un[4][2]; /* * */
un[1][1]=un[3][2]; /* x */
vn[0][0]=vn[3][4]; /* ? */
vn[1][0]=vn[2][4]; /* > */
vn[0][1]=vn[3][3]; /* * */
vn[1][1]=vn[2][3]; /* x */
/* right & top
for u
-1 | | | ?
+---+---+---+-
-2 | | | *
+---+---+---+-
-3 | * | |
+---+---+---+-
-4 | ? | |
+---+---+---+-
-4 -3 -2 -1
*/
un[IMAX-1][JMAX-1]=un[IMAX-3][JMAX-4]; /* ? */
un[IMAX-1][JMAX-2]=un[IMAX-3][JMAX-3]; /* * */
/*
for v
| | | |
-1 +---+---+->-+-?-
| | | |
-2 +---+---+---+---
| | | |
-3 +-?-+->-+---+---
-4 -3 -2 -1
*/
vn[IMAX-2][JMAX-1]=vn[IMAX-3][JMAX-3]; /* > */
vn[IMAX-1][JMAX-1]=vn[IMAX-4][JMAX-3]; /* ? */
/* right & bottom
for u
+---+---+---+---+-
3 | | * | |
+---+---+---+---+-
2 | | ? | |
+---+---+---+---+-
1 | | | | ?
+---+---+---+---+-
0 | | | | *
+---+---+---+---+-
-5 -4 -3 -2 -1
*/
un[IMAX-1][0]=un[IMAX-3][3]; /* * */
un[IMAX-1][1]=un[IMAX-3][2]; /* ? */
/*
for v
| | | |
4 +->-+-?-+---+---
| | | |
3 +-x-+-*-+---+---
| | | |
2 +---+---+---+---
| | | |
1 +---+---+-*-+-x-
| | | |
0 +---+---+-?-+->-
-4 -3 -2 -1
*/
vn[IMAX-1][0]=vn[IMAX-4][4];/* > */
vn[IMAX-2][0]=vn[IMAX-3][4];/* ? */
vn[IMAX-1][1]=vn[IMAX-4][3];/* x */
vn[IMAX-2][1]=vn[IMAX-3][3];/* * */
/* left & top
for u
-1 * x | | |
+---+---+---+---+
-2 ? > | | |
+---+---+---+---+
-3 | | | > ?
+---+---+---+---+
-4 | | | x *
+---+---+---+---+
0 1 2 3 4
*/
un[0][JMAX-1]=un[4][JMAX-4]; /* * */
un[1][JMAX-1]=un[3][JMAX-4]; /* x */
un[0][JMAX-2]=un[4][JMAX-3]; /* ? */
un[1][JMAX-2]=un[3][JMAX-3]; /* > */
/*
for v
| | | | |
-1 +->-+-?-+---+---+
| | | | |
-2 +---+---+---+---+
| | | | |
-3 +---+---+-?-+->-+
| | | | |
0 1 2 3
*/
vn[0][JMAX-1]=vn[3][JMAX-3]; /* > */
vn[1][JMAX-1]=vn[2][JMAX-3]; /* ? */
return(0);
}
int bc_sc_grad(double gxscn[IMAX][JMAX], double gzscn[IMAX][JMAX]){
int i,j;
/* bottom & top, parallel direction for gx, normal direction for gy */
for(i=2; i<=IMAX-3; i++){
gxscn[i][0 ]= gxscn[i][3 ];
gxscn[i][1 ]= gxscn[i][2 ];
gxscn[i][JMAX-1]= gxscn[i][JMAX-3];
gxscn[i][JMAX-2]= gxscn[i][JMAX-3];
gzscn[i][0 ]=-gzscn[i][3 ];
gzscn[i][1 ]=-gzscn[i][2 ];
gzscn[i][JMAX-1]=0.;
gzscn[i][JMAX-2]=0.;
}
/* sidewall, parallel direction for gy, normal direction for gx */
/***** LEFT *****/
/*... outlet ...*/
for(j=2; j<=OUTLET+1; j++){
gxscn[0 ][j]=0.;
gxscn[1 ][j]=0.;
gzscn[0 ][j]= gzscn[2 ][j];
gzscn[1 ][j]= gzscn[2 ][j];
}
/* ... wall ...*/
for(j=OUTLET+2; j<=JMAX-1; j++){
gxscn[0 ][j]=-gxscn[3 ][j];
gxscn[1 ][j]=-gxscn[2 ][j];
gzscn[0 ][j]= gzscn[3 ][j];
gzscn[1 ][j]= gzscn[2 ][j];
}
/***** RIGHT *****/
for(j=2; j<=JMAX-3; j++){
/*... inlet ... */
gxscn[IMAX-1][j]=0.;
gxscn[IMAX-2][j]=0.;
gzscn[IMAX-1][j]= gzscn[IMAX-3][j];
gzscn[IMAX-2][j]= gzscn[IMAX-3][j];
}
/* corner */
/* left bottom */
gxscn[0][0]=-gxscn[3][3];
gxscn[0][1]=-gxscn[3][2];
gxscn[1][0]=-gxscn[2][3];
gxscn[1][1]=-gxscn[2][2];
gzscn[0][0]=-gzscn[3][3];
gzscn[0][1]=-gzscn[3][2];
gzscn[1][0]=-gzscn[2][3];
gzscn[1][1]=-gzscn[2][2];
/* right bottom */
gxscn[IMAX-1][0]=-gxscn[IMAX-4][3];
gxscn[IMAX-1][1]=-gxscn[IMAX-4][2];
gxscn[IMAX-2][0]=-gxscn[IMAX-3][3];
gxscn[IMAX-2][1]=-gxscn[IMAX-3][2];
gzscn[IMAX-1][0]=-gzscn[IMAX-4][3];
gzscn[IMAX-1][1]=-gzscn[IMAX-4][2];
gzscn[IMAX-2][0]=-gzscn[IMAX-3][3];
gzscn[IMAX-2][1]=-gzscn[IMAX-3][2];
/* left top */
gxscn[0][JMAX-1]=-gxscn[3][JMAX-4];
gxscn[0][JMAX-2]=-gxscn[3][JMAX-3];
gxscn[1][JMAX-1]=-gxscn[2][JMAX-4];
gxscn[1][JMAX-2]=-gxscn[2][JMAX-3];
gzscn[0][JMAX-1]=-gzscn[3][JMAX-4];
gzscn[0][JMAX-2]=-gzscn[3][JMAX-3];
gzscn[1][JMAX-1]=-gzscn[2][JMAX-4];
gzscn[1][JMAX-2]=-gzscn[2][JMAX-3];
/* right top */
gxscn[IMAX-1][JMAX-1]=-gxscn[IMAX-4][JMAX-4];
gxscn[IMAX-1][JMAX-2]=-gxscn[IMAX-4][JMAX-3];
gxscn[IMAX-2][JMAX-1]=-gxscn[IMAX-3][JMAX-4];
gxscn[IMAX-2][JMAX-2]=-gxscn[IMAX-3][JMAX-3];
gzscn[IMAX-1][JMAX-1]=-gzscn[IMAX-4][JMAX-4];
gzscn[IMAX-1][JMAX-2]=-gzscn[IMAX-4][JMAX-3];
gzscn[IMAX-2][JMAX-1]=-gzscn[IMAX-3][JMAX-4];
gzscn[IMAX-2][JMAX-2]=-gzscn[IMAX-3][JMAX-3];
return(0);
}
int bc_velo_grad(double gu[IMAX][JMAX], double gv[IMAX][JMAX],
double u[IMAX][JMAX], double v[IMAX][JMAX], int Xderiv){
int i,j;
double sgn;
/* NOTICE.. definition points are different between u and v ! */
if(Xderiv==1)sgn=1.;
else if(Xderiv==0) sgn=-1.;
else{
printf("(bc_velo_grad) UNDEFINED Xderiv value (%d)\n",Xderiv);
exit(-1);
}
/********** for u **********/
/********** for u **********/
/***** LEFT SIDE *****/
for(j=2; j<=OUTLET+1; j++){
/*... outlet ...*/
gu[0][j]=-(Xderiv-1)*gu[3][j];
gu[1][j]=-(Xderiv-1)*gu[3][j];
gu[2][j]=-(Xderiv-1)*gu[3][j];
}
for(j=OUTLET+2; j<=JMAX-3; j++){
/*... wall ...*/
gu[0][j]=sgn*gu[4][j];
gu[1][j]=sgn*gu[3][j];
gu[2][j]=Xderiv*(u[3][j]/DX); /* in the case of Yderiv, gu[2][]=0. because u[2][]=0.*/
}
/***** RIGHT SIDE *****/
for(j=2; j<=JMAX-3; j++){
gu[IMAX-1][j]=-(Xderiv-1)*gu[IMAX-4][j];
gu[IMAX-2][j]=-(Xderiv-1)*gu[IMAX-4][j];
gu[IMAX-3][j]=-(Xderiv-1)*gu[IMAX-4][j];
}
/* BOTTOM & TOP */
for(i=3; i<=IMAX-3; i++){
/* bottom */
gu[i][0]=-sgn*gu[i][3];
gu[i][1]=-sgn*gu[i][2];
/* top */
gu[i][JMAX-1]=Xderiv*(-sgn*gu[i][JMAX-4]);
gu[i][JMAX-2]=Xderiv*(-sgn*gu[i][JMAX-3]);
}
/* corner */
/* left bottom */
gu[0][0]=-gu[4][3];
gu[0][1]=-gu[4][2];
gu[1][0]=-gu[3][3];
gu[1][1]=-gu[3][2];
/* right bottom */
gu[IMAX-1][0]=-gu[IMAX-3][3];
gu[IMAX-1][1]=-gu[IMAX-3][2];
/* left top */
gu[0][JMAX-1]=-gu[4][JMAX-4];
gu[0][JMAX-2]=-gu[4][JMAX-3];
gu[1][JMAX-1]=-gu[3][JMAX-4];
gu[1][JMAX-2]=-gu[3][JMAX-3];
/* right top */
gu[IMAX-1][JMAX-1]=-gu[IMAX-3][JMAX-4];
gu[IMAX-1][JMAX-2]=-gu[IMAX-3][JMAX-3];
/********** for v **********/
/********** for v **********/
/*... LEFT SIDE ...*/
for(j=2; j<=OUTLET+1; j++){
/* outlet */
gv[0][j]=-(Xderiv-1)*gv[2][j];
gv[1][j]=-(Xderiv-1)*gv[2][j];
}
for(j=OUTLET+2; j<=JMAX-1; j++){
/* wall */
gv[0][j]=sgn*gv[3][j];
gv[1][j]=sgn*gv[2][j];
}
/*... RIGHT SIDE ...*/
for(j=2; j<=JMAX-3; j++){
/* inlet & open boundary, same condition..*/
gv[IMAX-1][j]=-(Xderiv-1)*gv[IMAX-3][j];
gv[IMAX-2][j]=-(Xderiv-1)*gv[IMAX-3][j];
}
/* bottom & top */
for(i=3; i<=IMAX-3; i++){
/* bottom */
gv[i][0]=-sgn*gv[i][4];
gv[i][1]=-sgn*gv[i][3];
gv[i][2]=(1-Xderiv)*(v[i][3]/DY);
/* top */
gv[i][JMAX-1]=-(Xderiv-1)*gv[i][JMAX-3];
gv[i][JMAX-2]=-(Xderiv-1)*gv[i][JMAX-3];
}
/* corner */
/* left bottom */
gv[0][0]=-gv[3][4];
gv[0][1]=-gv[3][3];
gv[1][0]=-gv[2][4];
gv[1][1]=-gv[2][3];
/* right bottom */
gv[IMAX-1][0]=-gv[IMAX-4][3];
gv[IMAX-1][1]=-gv[IMAX-4][2];
gv[IMAX-2][0]=-gv[IMAX-3][3];
gv[IMAX-2][1]=-gv[IMAX-3][2];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -