#include #include #define dt 0.001 /* 時間の刻み幅 */ #define dr 0.01 /* 空間の刻み幅 */ #define imx 26 /* x方向の最大格子点数 */ #define jmx 26 /* y方向の最大格子点数 */ #define tmx 5000 /* 最大 TimeStep 数 */ #define nu 1E-3 /* 動粘性率 */ #define e 1E-5 /* 収束判定条件 */ #define U 4.04E-4 /* 上辺壁速度設定 */ #define buf 20 /* 出力ファイル名buf */ #define step 100 /* ファイル出力間隔 */ #define imm (imx-1) #define jmm (jmx-1) #define imp (imx+1) #define jmp (jmx+1) #define hdr (dr /2) static double pwr[imx+2][jmx+2]; static double npw[imx+2][jmx+2]; static double trs[imx+2][jmx+2]; static double vx[imx+2][jmx+2]; static double vy[imx+2][jmx+2]; static double nx[imx+2][jmx+2]; static double ny[imx+2][jmx+2]; static double hvx[imx+2][jmm+2]; static double hvy[imm+2][jmx+2]; static double mvx[imm+2][jmx+2]; static double mvy[imm+2][jmx+2]; static double DD[imx+2][jmx+2]; static double amp,XX,YY; static char fname[buf]; static int i,j; static int lap = 0; void init_value(void); void solv_power(void); void solv_half(void); void solv_velocity(void); void chan_cases(void); void diag_bunch(void); void diag_velocity(void); void diag_power(void); int main() { init_value(); diag_bunch(); for(lap=1;lap<=tmx;lap++) { solv_half(); solv_power(); solv_velocity(); chan_cases(); diag_bunch(); printf("%6.2f %% \n",(double)(lap/(double)tmx*100)); } return 0; } void init_value(void) { /* All parameter init */ for(i=0;i<=imx+1;i++) for(j=0;j<=jmx+1;j++) pwr[i][j] = npw[i][j] = 0.0; for(i=0;i<=imx+1;i++) for(j=0;j<=jmx+1;j++) nx[i][j] = vx[i][j] = ny[i][j] = vy[i][j] = 0.0; for(i=0;i<=imx+1;i++) for(j=0;j<=jmx+1;j++) DD[i][j] = 0.0; } void solv_half(void) { /* hvx[i][j] = vx(i+1/2,j+1/2); hvy[i][j] = vy(i+1/2,j+1/2) */ for(i=0;i<=imx+1;i++) for(j=0;j