⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmvread.c

📁 一个用来实现偏微分方程中网格的计算库
💻 C
📖 第 1 页 / 共 5 页
字号:
            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 + -