/*===========================*/ /* gccMESH4nod-pg.c */ /*===========================*/ #include #include #include #include #include #define NDmax 5000 #define NEmax 3000 #define MAmax 10 #define NTmax NDmax*2 int main_part(char fnameR[50],char fnameF[50]); void GPL_mesh(char fnameF[50],int NODT,int NELT,int kakom[NEmax+1][5],double x[NDmax+1],double y[NDmax+1]); void GPL_stress(char fnameF[50],int NODT,int NELT,int kakom[NEmax+1][5],double x[NDmax+1],double y[NDmax+1],double stress[NEmax+1][5][7]); /*------------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { char fnameR[50]; char fnameF[50]; strcpy(fnameR,argv[1]); strcpy(fnameF,argv[2]); main_part(fnameR,fnameF); return 0; } /*------------------------------------------------------------------------------*/ int main_part(char fnameR[50],char fnameF[50]) { /*2次元四角形要素応力解析 */ FILE *fin,*fout; char dat[256]=""; char sv[20]=""; int i,j,k,l,kk,ne,n,ia,ja,mn; char strcom[256]=""; /* 書出用コメント */ int NSTRES; /* 応力状態(0;平面歪み,1;平面応力) */ int NODT; /* 節点総数 */ int NELT; /* 要素総数 */ int MATEL; /* 材料種類数 */ int KOX; /* x方向変位既知節点数 */ int KOY; /* y方向変位既知節点数 */ int NF; /* 載荷節点数 */ /*--------------------------------------------------------------------------------------*/ /*配列寸法宣言*/ /*--------------------------------------------------------------------------------------*/ int kakom[NEmax+1][5]; /* 要素構成節点番号 */ int matno[NEmax+1]; /* 材料種別No */ double x[NDmax+1]; /* 節点x座標 */ double y[NDmax+1]; /* 節点y座標 */ double wk; int iw,iw1,iw2; double stress[NEmax+1][5][7]; /******************************************************/ /*データ入力*/ /******************************************************/ fin=fopen(fnameR,"r"); fgets(dat,sizeof dat,fin);strncpy(strcom,dat,strlen(dat)-1); fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); NSTRES=atoi(strtok(dat,",")); NODT =atoi(strtok(NULL,",")); NELT =atoi(strtok(NULL,",")); MATEL =atoi(strtok(NULL,",")); KOX =atoi(strtok(NULL,",")); KOY =atoi(strtok(NULL,",")); NF =atoi(strtok(NULL,",")); fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); for(i=1;i<=NODT;i++){ fgets(dat,sizeof dat,fin); iw =atoi(strtok(dat,",")); x[i]=atof(strtok(NULL,",")); y[i]=atof(strtok(NULL,",")); } fgets(dat,sizeof dat,fin); for(ne=1;ne<=NELT;ne++){ fgets(dat,sizeof dat,fin); iw=atoi(strtok(dat,",")); kakom[ne][1]=atoi(strtok(NULL,",")); kakom[ne][2]=atoi(strtok(NULL,",")); kakom[ne][3]=atoi(strtok(NULL,",")); kakom[ne][4]=atoi(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); wk=atof(strtok(NULL,",")); matno[ne]=atoi(strtok(NULL,",")); } fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); for(i=1;i<=NODT;i++){ fgets(dat,sizeof dat,fin); } fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); for(i=1;i<=NODT;i++){ fgets(dat,sizeof dat,fin); } fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); for(ne=1;ne<=NELT;ne++){ fgets(dat,sizeof dat,fin); iw1=atoi(strtok(dat,",")); iw2=atoi(strtok(NULL,",")); stress[iw1][iw2][1]=atof(strtok(NULL,",")); stress[iw1][iw2][2]=atof(strtok(NULL,",")); stress[iw1][iw2][3]=atof(strtok(NULL,",")); stress[iw1][iw2][4]=atof(strtok(NULL,",")); stress[iw1][iw2][5]=atof(strtok(NULL,",")); stress[iw1][iw2][6]=atof(strtok(NULL,",")); fgets(dat,sizeof dat,fin); iw1=atoi(strtok(dat,",")); iw2=atoi(strtok(NULL,",")); stress[iw1][iw2][1]=atof(strtok(NULL,",")); stress[iw1][iw2][2]=atof(strtok(NULL,",")); stress[iw1][iw2][3]=atof(strtok(NULL,",")); stress[iw1][iw2][4]=atof(strtok(NULL,",")); stress[iw1][iw2][5]=atof(strtok(NULL,",")); stress[iw1][iw2][6]=atof(strtok(NULL,",")); fgets(dat,sizeof dat,fin); iw1=atoi(strtok(dat,",")); iw2=atoi(strtok(NULL,",")); stress[iw1][iw2][1]=atof(strtok(NULL,",")); stress[iw1][iw2][2]=atof(strtok(NULL,",")); stress[iw1][iw2][3]=atof(strtok(NULL,",")); stress[iw1][iw2][4]=atof(strtok(NULL,",")); stress[iw1][iw2][5]=atof(strtok(NULL,",")); stress[iw1][iw2][6]=atof(strtok(NULL,",")); fgets(dat,sizeof dat,fin); iw1=atoi(strtok(dat,",")); iw2=atoi(strtok(NULL,",")); stress[iw1][iw2][1]=atof(strtok(NULL,",")); stress[iw1][iw2][2]=atof(strtok(NULL,",")); stress[iw1][iw2][3]=atof(strtok(NULL,",")); stress[iw1][iw2][4]=atof(strtok(NULL,",")); stress[iw1][iw2][5]=atof(strtok(NULL,",")); stress[iw1][iw2][6]=atof(strtok(NULL,",")); } fclose(fin); /* GPL_mesh(fnameF,NODT,NELT,kakom,x,y); */ GPL_stress(fnameF,NODT,NELT,kakom,x,y,stress); } /*------------------------------------------------------------------------------*/ void GPL_mesh(char fnameF[50],int NODT,int NELT,int kakom[NEmax+1][5],double x[NDmax+1],double y[NDmax+1]) { FILE *fp; char fnameW[50]="gpl_temp.txt"; double x0,y0, x1,y1,x2,y2,x3,y3,ang; char str[50],sv[50],cn[10]; int i,j,k,l,ne; double xmin,xmax,ymin,ymax; strcpy(cn,"#FFFFE0"); xmin=x[1]; xmax=x[1]; ymin=y[1]; ymax=y[1]; for(i=1;i<=NODT;i++){ if(x[i]