📄 gmvread.c
字号:
break; case(POLYGONS): readpolygons(gmvin,ftype); break; case(TRACERS): readtracers(gmvin,ftype); break; case(SURFACE): readsurface(gmvin,ftype); break; case(SURFVARS): readsurfvars(gmvin,ftype); break; case(SURFFLAG): readsurfflag(gmvin,ftype); break; case(UNITS): readunits(gmvin,ftype); break; case(VINFO): readvinfo(gmvin,ftype); break; case(GROUPS): readgroups(gmvin,ftype); break; case(SUBVARS): readsubvars(gmvin,ftype); break; case(VECTORS): readvects(gmvin,ftype); break; } } /* Read and process keyword based data until endgmv found. */ if (readkeyword == 1) { if (ftype != ASCII) { binread(keyword,charsize,CHAR,(long)8,gmvin); *(keyword+8)=(char)0; } if (ftype == ASCII) fscanf(gmvin,"%s",keyword); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) iend = 1; /* If comments keyword, read through comments, */ /* then read and proces next keyword. */ if (strncmp(keyword,"comments",8) == 0) { readcomments(gmvin,ftype); if (ftype != ASCII) { binread(keyword,charsize,CHAR,(long)8,gmvin); *(keyword+8)=(char)0; } if (ftype == ASCII) fscanf(gmvin,"%s",keyword); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) iend = 1; } if (strncmp(keyword,"endgmv",6) == 0) { curr_keyword = GMVEND; iend = 1; } else if (strncmp(keyword,"nodes",5) == 0) { curr_keyword = NODES; node_inp_type = 0; } else if (strncmp(keyword,"nodev",5) == 0) { curr_keyword = NODES; node_inp_type = 1; } else if (strncmp(keyword,"cells",5) == 0) curr_keyword = CELLS; else if (strncmp(keyword,"faces",5) == 0) curr_keyword = FACES; else if (strncmp(keyword,"vfaces",6) == 0) curr_keyword = VFACES; else if (strncmp(keyword,"xfaces",6) == 0) curr_keyword = XFACES; else if (strncmp(keyword,"material",8) == 0) curr_keyword = MATERIAL; else if (strncmp(keyword,"velocity",8) == 0) curr_keyword = VELOCITY; else if (strncmp(keyword,"variable",8) == 0) curr_keyword = VARIABLE; else if (strncmp(keyword,"flags",5) == 0) curr_keyword = FLAGS; else if (strncmp(keyword,"polygons",8) == 0) curr_keyword = POLYGONS; else if (strncmp(keyword,"tracers",7) == 0) curr_keyword = TRACERS; else if (strncmp(keyword,"probtime",8) == 0) curr_keyword = PROBTIME; else if (strncmp(keyword,"cycleno",7) == 0) curr_keyword = CYCLENO; else if (strncmp(keyword,"nodeids",7) == 0) curr_keyword = NODEIDS; else if (strncmp(keyword,"cellids",7) == 0) curr_keyword = CELLIDS; else if (strncmp(keyword,"surface",7) == 0) curr_keyword = SURFACE; else if (strncmp(keyword,"surfmats",8) == 0) curr_keyword = SURFMATS; else if (strncmp(keyword,"surfvel",7) == 0) curr_keyword = SURFVEL; else if (strncmp(keyword,"surfvars",8) == 0) curr_keyword = SURFVARS; else if (strncmp(keyword,"surfflag",8) == 0) curr_keyword = SURFFLAG; else if (strncmp(keyword,"surfids",7) == 0) curr_keyword = SURFIDS; else if (strncmp(keyword,"units",5) == 0) curr_keyword = UNITS; else if (strncmp(keyword,"vinfo",5) == 0) curr_keyword = VINFO; else if (strncmp(keyword,"traceids",7) == 0) curr_keyword = TRACEIDS; else if (strncmp(keyword,"groups",6) == 0) curr_keyword = GROUPS; else if (strncmp(keyword,"codename",8) == 0) curr_keyword = CODENAME; else if (strncmp(keyword,"codever",7) == 0) curr_keyword = CODEVER; else if (strncmp(keyword,"simdate",7) == 0) curr_keyword = SIMDATE; else if (strncmp(keyword,"cellpes",7) == 0) curr_keyword = CELLPES; else if (strncmp(keyword,"subvars",7) == 0) curr_keyword = SUBVARS; else if (strncmp(keyword,"ghosts",6) == 0) curr_keyword = GHOSTS; else if (strncmp(keyword,"vectors",7) == 0) curr_keyword = VECTORS; else curr_keyword = INVALIDKEYWORD; /* If invalid keyword, send error. */ if (curr_keyword == INVALIDKEYWORD) { gmv_data.keyword = GMVERROR; fprintf(stderr,"Error, %s is an invalid keyword.\n",keyword); } strcpy(sav_keyword,keyword); /* Set skipflag if reading from a fromfile. */ if (reading_fromfile) { if (curr_keyword == ff_keyword) skipflag = 0; else skipflag = 1; } /* Check for keywords that are allowed before nodes, cells, etc. */ before_nodes_ok = 0; if (curr_keyword == CODENAME || curr_keyword == CODEVER || curr_keyword == SIMDATE) before_nodes_ok = 1; /* Check that nodes have been input. */ if (curr_keyword > NODES && nodes_read == 0 && before_nodes_ok == 0) { fprintf(stderr,"Error, 'nodes' keyword missing.\n"); gmv_data.keyword = GMVERROR; } /* Check that cells, faces, vfaces or xfaces have been input. */ if (curr_keyword > XFACES && cells_read == 0 && faces_read == 0 && before_nodes_ok == 0) { fprintf(stderr,"Error, 'cells, faces or xfaces' keyword missing.\n"); gmv_data.keyword = GMVERROR; } /* Read current keyword data. */ switch (curr_keyword) { case(NODES): fromfilecheck(NODES); if (fromfileflag == 1) break; readnodes(gmvin,ftype); readkeyword = 1; break; case(CELLS): fromfilecheck(CELLS); if (fromfileflag == 1) break; readcells(gmvin,ftype); if (amrflag_in == 0 && structflag_in == 0) readkeyword = 0; break; case(FACES): fromfilecheck(FACES); if (fromfileflag == 1) break; readfaces(gmvin,ftype); readkeyword = 0; break; case(VFACES): fromfilecheck(VFACES); if (fromfileflag == 1) break; readvfaces(gmvin,ftype); readkeyword = 0; break; case(XFACES): fromfilecheck(XFACES); if (fromfileflag == 1) break; readxfaces(gmvin,ftype); readkeyword = 0; break; case(MATERIAL): fromfilecheck(MATERIAL); if (fromfileflag == 1) break; readmats(gmvin,ftype); readkeyword = 1; break; case(VELOCITY): readvels(gmvin,ftype); readkeyword = 1; break; case(VARIABLE): readvars(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(FLAGS): fromfilecheck(FLAGS); if (fromfileflag == 1) break; readflags(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(POLYGONS): fromfilecheck(POLYGONS); if (fromfileflag == 1) break; readpolygons(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(TRACERS): readtracers(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(PROBTIME): if (ftype != ASCII) { if (ftype == IEEEI4R8 || ftype == IEEEI8R8) binread(&ptime,doublesize,DOUBLE,(long)1,gmvin); else { binread(&tmptime,floatsize,FLOAT,(long)1,gmvin); ptime = tmptime; } } if (ftype == ASCII) fscanf(gmvin,"%lf",&ptime); gmv_data.keyword = PROBTIME; gmv_data.datatype = 0; gmv_data.ndoubledata1 = 1; gmv_data.doubledata1 = (double *)malloc(1*sizeof(double)); gmv_data.doubledata1[0] = ptime; readkeyword = 1; break; case(CYCLENO): if (ftype != ASCII) binread(&cycleno,intsize,INT, (long)1,gmvin); if (ftype == ASCII) fscanf(gmvin,"%d",&cycleno); gmv_data.keyword = CYCLENO; gmv_data.num = cycleno; readkeyword = 1; break; case(NODEIDS): fromfilecheck(NODEIDS); if (fromfileflag == 1) break; readnodeids(gmvin,ftype); readkeyword = 1; break; case(CELLIDS): fromfilecheck(CELLIDS); readcellids(gmvin,ftype); readkeyword = 1; break; case(FACEIDS): fromfilecheck(FACEIDS); readfaceids(gmvin,ftype); readkeyword = 1; break; case(TRACEIDS): fromfilecheck(TRACEIDS); readtracerids(gmvin,ftype); readkeyword = 1; break; case(SURFACE): fromfilecheck(SURFACE); if (fromfileflag == 1) break; readsurface(gmvin,ftype); readkeyword = 0; break; case(SURFMATS): fromfilecheck(SURFMATS); if (fromfileflag == 1) break; readsurfmats(gmvin,ftype); readkeyword = 1; break; case(SURFVEL): readsurfvel(gmvin,ftype); readkeyword = 1; break; case(SURFVARS): readsurfvars(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(SURFFLAG): readsurfflag(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(SURFIDS): fromfilecheck(SURFIDS); readsurfids(gmvin,ftype); readkeyword = 1; break; case(UNITS): fromfilecheck(UNITS); if (fromfileflag == 1) break; readunits(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(VINFO): readvinfo(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(GROUPS): fromfilecheck(GROUPS); if (fromfileflag == 1) break; readgroups(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(CODENAME): case(CODEVER): case(SIMDATE): if (ftype != ASCII) { binread(tmpchar,charsize,CHAR,(long)8,gmvin); *(tmpchar+8)=(char)0; } if (ftype == ASCII) { fscanf(gmvin,"%s",tmpchar); *(tmpchar+8)=(char)0; } ioerrtst(gmvin); gmv_data.keyword = curr_keyword; gmv_data.datatype = 0; strcpy(gmv_data.name1,tmpchar); readkeyword = 1; break; case(CELLPES): fromfilecheck(CELLPES); readcellpes(gmvin,ftype); readkeyword = 1; break; case(SUBVARS): readsubvars(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; case(GHOSTS): readghosts(gmvin,ftype); readkeyword = 1; break; case(VECTORS): readvects(gmvin,ftype); if (readkeyword == 1) readkeyword = 0; break; } } if (iend) { gmv_data.keyword = GMVEND; /* fclose(gmvin); */ } if (gmv_data.keyword == GMVERROR) fclose(gmvin); if (readkeyword == 1 && reading_fromfile && curr_keyword == ff_keyword) endfromfile(); if (readkeyword == 2) { if (reading_fromfile && curr_keyword == ff_keyword) endfromfile(); readkeyword = 1; } if (fromfileflag == 1 && fromfileskip == 1) fromfileflag = 0; if (fromfileflag == 1 && reading_fromfile == 0) fromfileflag = 0;}void rdints(int iarray[], int nvals, FILE* gmvin){ /* */ /* Read an integer array from an ASCII text file. */ /* */ int i; for (i = 0; i < nvals; i++) { fscanf(gmvin,"%d",&iarray[i]); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) { fprintf(stderr,"I/O error while reading gmv input file.\n"); gmv_data.keyword = GMVERROR; return; } }}void rdlongs(long iarray[], long nvals, FILE* gmvin){ /* */ /* Read an integer array from an ASCII text file. */ /* */ long i; for (i = 0; i < nvals; i++) { fscanf(gmvin,"%ld",&iarray[i]); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) { fprintf(stderr,"I/O error while reading gmv input file.\n"); gmv_data.keyword = GMVERROR; return; } }}void rdfloats(double farray[], long nvals, FILE* gmvin){ /* */ /* Read an integer array from an ASCII text file. */ /* */ int i; for (i = 0; i < nvals; i++) { fscanf(gmvin,"%lf",&farray[i]); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) { fprintf(stderr,"I/O error while reading gmv input file.\n"); gmv_data.keyword = GMVERROR; return; } }}int rdcellkeyword(FILE* gmvin, int ftype, char* keystring){ char ckeyword[9]; if (ftype != ASCII) { binread(ckeyword, charsize, CHAR, (long)8, gmvin); if ((feof(gmvin) != 0) | (ferror(gmvin) != 0)) return (-1); *(ckeyword+8)=(char)0; } if (ftype == ASCII) fscanf(gmvin,"%s",ckeyword); return strncmp(ckeyword,keystring,strlen(keystring));}void fromfilecheck(int fkeyword)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -