以下を完成させよ.
001: #include <stdio.h> 002: #define MAXDIM 510 003: 004: void initialize(double u[][MAXDIM], int flag[][MAXDIM]); 005: void set_cordinate(int n,double x[][MAXDIM],double y[][MAXDIM]); 006: void set_boundary_wall_pot(int n, double u[][MAXDIM], int f[][MAXDIM]); 007: void set_circle(double x0, double y0, double r, double v, 008: int n, double x[][MAXDIM], double y[][MAXDIM], 009: double u[][MAXDIM], int f[][MAXDIM]); 010: 011: /*=====================================================================*/ 012: /* main */ 013: /*=====================================================================*/ 014: int main(void){ 015: double u[MAXDIM][MAXDIM]; 016: double x[MAXDIM][MAXDIM], y[MAXDIM][MAXDIM]; 017: int flag[MAXDIM][MAXDIM]; 018: int i,j; 019: int k, iteration; 020: int nlat; 021: FILE *fp; 022: 023: nlat=100; 024: 025: initialize(u, flag); 026: set_cordinate(nlat,x,y); 027: set_boundary_wall_pot(nlat, u, flag); 028: set_circle(0.3, 0.3, 0.2, 20.0, nlat, x, y, u, flag); 029: set_circle(0.7, 0.6, 0.03, -20.0, nlat, x, y, u, flag); 030: 031: iteration=2000; 032: 033: /*---------------------------------*/ 034: /* ここにガウスザイデル法の計算を書く */ 035: /* 3重の繰り返し構造 */ 036: /*---------------------------------*/ 037: 038: 039: fp=fopen("result.txt","w"); 040: 041: for(j=0; j<=nlat; j++){ 042: for(i=0; i<=nlat; i++){ 043: fprintf(fp, "%f\t%f\t%f\n",x[i][j],y[i][j],u[i][j]); 044: } 045: fprintf(fp,"\n"); 046: } 047: 048: fclose(fp); 049: 050: return 0; 051: 052: } 053: 054: /*=====================================================================*/ 055: /* initialize function */ 056: /*=====================================================================*/ 057: void initialize(double u[][MAXDIM], int flag[][MAXDIM]){ 058: 059: 060: /*---------------------------------*/ 061: /* 繰り返しを使って、初期化する。 */ 062: /*---------------------------------*/ 063: 064: } 065: 066: /*=====================================================================*/ 067: /* set coordinate */ 068: /*=====================================================================*/ 069: void set_cordinate(int n,double x[][MAXDIM],double y[][MAXDIM]){ 070: 071: 072: /*-------------------------------------------*/ 073: /* 繰り返しを使って、格子点の座標を設定する。 */ 074: /*-------------------------------------------*/ 075: 076: 077: } 078: 079: /*=====================================================================*/ 080: /* set external boudary points */ 081: /*=====================================================================*/ 082: void set_boundary_wall_pot(int n, double u[][MAXDIM], int f[][MAXDIM]){ 083: 084: 085: /*---------------------------------------------------------*/ 086: /* 繰り返しを使って、外部境界のポテンシャルとフラグを設定する */ 087: /*---------------------------------------------------------*/ 088: 089: 090: 091: } 092: 093: /*=====================================================================*/ 094: /* set circler boundary */ 095: /*=====================================================================*/ 096: void set_circle(double x0, double y0, double r, double v, 097: int n, double x[][MAXDIM], double y[][MAXDIM], 098: double u[][MAXDIM], int f[][MAXDIM]){ 099: /*---------------------------------------------------------------*/ 100: /* 繰り返しを使って、電極内部の格子点のポテンシャルとフラグを設定する */ 101: /*---------------------------------------------------------------*/ 102: 103: } 104:
last update: