//=================================================================C // 2-Dimensional Cavity Flow by Stream function and Vorticity C // with FDM and SOR C //-----------------------------------------------------------------C // Written by Yasunori Ushiro, 2007/06/04 C // ( Tokyo Polytechnic University ) C // 後 保範(東京工芸大学) C //=================================================================C #include #include #include // Global Define #define NDX 301 #define NDY 301 double PHI[NDX][NDY], OMG[NDX][NDY], OMGW[NDX][NDY] ; double U[NDX][NDY], V[NDX][NDY] ; FILE *FT1 ; // Function Definition void PHISOR(int NX, int NY, double H2, double ALP, double EPS) ; void OUTUVP(int NX, int NY) ; // Main Program void main() { int i, j, k, NX, NY, NT, MT, ID, T1, T2, NI1, NI2 ; double Re, DT, T, H, DH, H2, D2, EPS, ALP, CPU ; char FLOW1[13]={'F','L','O','W','1','-','?','?','.','t','x','t',} ; char NTABL[10]={'0','1','2','3','4','5','6','7','8','9'} ; // Initial Data ID = 0 ; printf("Type In NX,Re \n") ; scanf("%d %lf",&NX,&Re) ; printf("DT,NT(Total NO.),MT(Output Interval) \n") ; scanf("%lf %d %d",&DT,&NT,&MT) ; if(NX >= NDX) { NX = NDX - 1 ; } NY = NX ; printf("# Cavity Flow Numerical Analysis \n") ; printf("NX=%d NY=%d Re=%f DT=%f NT,MT=%d %d \n",NX,NY,Re,DT,NT,MT) ; // Initial Constant T = 0.0 ; DH = NX ; H = 1.0/DH ; H2 = H*H ; D2 = DH*DH ; // Set Initial Condition for (i=0; i<=NX; i++) { for (j=0; j<=NY; j++) { OMG[i][j] = 0.0 ; PHI[i][j] = 0.0 ; } } // SOR Parameter (ALP) ALP = 1.0 + log(NX*1.0)/log(NDX*1.2) ; EPS = 1.0e-4 ; // Main Loop T1 = clock() ; for (k=1; k<=NT; k++) { T = T + DT ; // Set Boundary Condition for (i=0; i<=NX; i++) { OMG[i][0] = -2.0*PHI[i][1]*D2 ; OMG[i][NY] = -2.0*(PHI[i][NY-1] + H)*D2 ; } for (j=1; j return C //-----------------------------------------------------------------C // Written by Yasunori Ushiro, 2007/06/04 C // ( Tokyo Polytechnic University ) C //=================================================================C { int i, j, k ; double BN, RN, ERR, W1, R ; // Get 2-Norm B=D2*OMG BN = 0.0 ; for (i=1; i