/*===========================*/ /* gccONDO4-splot.c */ /*===========================*/ #include #include #include #include #include #define NDmax 2000 #define NEmax 2000 #define MAmax 10 #define NTOUTmax 10 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_splot(char fnameF[50],int NODT,int NELT,int kakom[NEmax+1][5],double x[NDmax+1],double y[NDmax+1],double tempand[NDmax+1][NTOUTmax],int ntout); /*------------------------------------------------------------------------------*/ 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[],char fnameF[]) { /*2次元四角形要素熱伝導解析 */ FILE *fin,*fout; char dat[1000]=""; char sv[20]=""; int i,j,k,l,kk,ne,n,ia,ja,mn; char strcom[256]=""; /* 書出用コメント */ int NODT; /*節点総数*/ int NELT; /*要素総数*/ int MATEL; /*材料種類数*/ int KOT; /*温度指定節点数*/ int KOC; /*熱伝達指定辺数*/ /*--------------------------------------------------------------------------------------*/ /*配列寸法宣言*/ /*--------------------------------------------------------------------------------------*/ int kakom[NEmax+1][5]; /* 要素構成節点番号 */ int matno[NEmax+1]; /* 材料種別No */ double x[NDmax+1]; /* 節点x座標 */ double y[NDmax+1]; /* 節点y座標 */ double wk; int itmax,iw,iw1,iw2,ntout; double tempand[NDmax+1][NTOUTmax]; /******************************************************/ /*データ入力*/ /******************************************************/ 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); NODT =atoi(strtok(dat,",")); NELT =atoi(strtok(NULL,",")); MATEL =atoi(strtok(NULL,",")); KOT =atoi(strtok(NULL,",")); KOC =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); strtok(dat,","); itmax=atoi(strtok(NULL,",")); printf("itmax=%d\n",itmax); fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); for(i=0;i<=itmax;i++){ fgets(dat,sizeof dat,fin); } fgets(dat,sizeof dat,fin); fgets(dat,sizeof dat,fin); strtok(dat,","); ntout=atoi(strtok(NULL,",")); printf("ntout=%d\n",ntout); fgets(dat,sizeof dat,fin); for(i=1;i<=NODT;i++){ fgets(dat,sizeof dat,fin); iw=atoi(strtok(dat,",")); for(j=0;j<=ntout;j++){ tempand[i][j]=atof(strtok(NULL,",")); } } fclose(fin); /* GPL_mesh(fnameF,NODT,NELT,kakom,x,y); */ GPL_splot(fnameF,NODT,NELT,kakom,x,y,tempand,ntout); } /*------------------------------------------------------------------------------*/ 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_ondo.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]