📄 ibgsave.c
字号:
/* last edit: Ilja Schmelzer -------------- 20-OCT-1994 11:16:12.44 */
/************************************************************************/
/* */
/* <<< I B G >>> - Intersection - Based Grid generation package */
/* */
/* Version 1.1 by Ilja Schmelzer schmelzer@iaas-berlin.d400.de */
/* */
/* to be distributed under IBG license conditions (see "readme.ibg") */
/* */
/************************************************************************/
#include "ibgg.h"
#include "ibglib.h"
#include "ibgoutput.h"
#include <stdio.h>
int ibGridSave(ibGrid *gg, FILE *file)
{int rc;
rc = fprintf(file,"IBGRID unformatted version 1.00\n");
rc = fwrite(gg,sizeof(ibGrid),1,file);
rc = fwrite(gg->Point,IBGPOINTSIZE,gg->lastPoint+1,file);
rc = fwrite(gg->CellType,sizeof(ibgCellType),gg->lastCell+1,file);
rc = fwrite(gg->CellSegment,sizeof(int),gg->lastCell+1,file);
rc = fwrite(gg->CPointFirst,sizeof(int),gg->lastCell+1,file);
rc = fwrite(gg->CSideFirst,sizeof(int),gg->lastCell+1,file);
rc = fwrite(gg->CPoint,sizeof(int),gg->freeCPoint,file);
rc = fwrite(gg->CSide,sizeof(int),gg->freeCSide,file);
if(gg->lastCOut>0){
rc = fwrite(gg->COutNext,sizeof(int),gg->lastCOut+1,file);
rc = fwrite(gg->COutside,sizeof(int),gg->lastCOut+1,file);
}
return ibgSuccess;
}
ibGrid *ibGridLoad(FILE *file)
{ibGrid *gg = malloc(sizeof(ibGrid));
int rc;
rc = fscanf(file,"IBGRID unformatted version 1.00\n");
if(rc==EOF) {ibgmessage(ibgMELoadError); ibGridFree(gg); return ibgNULL;}
rc = fread(gg,sizeof(ibGrid),1,file);
gg->Point = malloc(IBGPOINTSIZE*(gg->maxPoint+1));
gg->CellType = malloc(sizeof(ibgCellType)*(gg->maxCell+1));
gg->CellSegment = malloc(sizeof(int)*(gg->maxCell+1));
gg->CPointFirst = malloc(sizeof(int)*(gg->maxCell+1));
gg->CSideFirst = malloc(sizeof(int)*(gg->maxCell+1));
gg->CPoint = malloc(sizeof(int)*(gg->maxCPoint+1));
gg->CSide = malloc(sizeof(int)*(gg->maxCSide+1));
rc = fread(gg->Point,IBGPOINTSIZE,gg->lastPoint+1,file);
rc = fread(gg->CellType,sizeof(ibgCellType),gg->lastCell+1,file);
rc = fread(gg->CellSegment,sizeof(int),gg->lastCell+1,file);
rc = fread(gg->CPointFirst,sizeof(int),gg->lastCell+1,file);
rc = fread(gg->CSideFirst,sizeof(int),gg->lastCell+1,file);
rc = fread(gg->CPoint,sizeof(int),gg->freeCPoint,file);
rc = fread(gg->CSide,sizeof(int),gg->freeCSide,file);
if(gg->lastCOut>0){
gg->COutNext = malloc(sizeof(int)*(gg->maxCOut+1));
gg->COutside = malloc(sizeof(int)*(gg->maxCOut+1));
rc = fread(gg->COutNext,sizeof(int),gg->lastCOut+1,file);
rc = fread(gg->COutside,sizeof(int),gg->lastCOut+1,file);
}
return gg;
}
int ibGridWrite(ibGrid *gg, FILE *file)
{int i,rc;
rc = fprintf(file,"IBGRID ASCII-format version 1.00\n");
rc = fprintf(file,"grid dimension %d space dimension %d\n"
,gg->gridDimension, gg->spaceDimension);
rc = fprintf(file,"Window x: %f %f y: %f %f z: %f %f\n"
,gg->xmin[0],gg->xmax[0]
,gg->xmin[1],gg->xmax[1]
,gg->xmin[2],gg->xmax[2]);
rc = fprintf(file,"maximal Point: %d Cell: %d CN: %d CS: %d CO: %d\n"
,gg->maxPoint,gg->maxCell,gg->maxCPoint
,gg->maxCSide,gg->maxCOut);
rc = fprintf(file,"first Point: %d Cell: %d\n"
,gg->firstPoint,gg->firstCell);
rc = fprintf(file," Reg: %d Face: %d Line: %d Vert: %d\n"
,gg->firstRegion,gg->firstFace,gg->firstLine,gg->firstNode);
rc = fprintf(file,"last Point: %d Cell: %d CO: %d\n"
,gg->lastPoint,gg->lastCell,gg->lastCOut);
rc = fprintf(file," Reg: %d Face: %d Line: %d Vert: %d\n"
,gg->lastRegion,gg->lastFace,gg->lastLine,gg->lastNode);
rc = fprintf(file,"free CPoint: %d CSide: %d\n"
,gg->freeCPoint,gg->freeCSide);
rc = fprintf(file,"point data:\n");
for(i=gg->firstPoint;i<=gg->lastPoint;i++){
rc = fprintf(file,"%d: %f %f %f %d %d\n",i
,gg->Point[i].xx[0],gg->Point[i].xx[1],gg->Point[i].xx[2]
,(int)gg->Point[i].tt
,gg->Point[i].uu);
}
rc = fprintf(file,"cell data:\n");
for(i=gg->firstCell;i<=gg->lastCell;i++){
rc = fprintf(file,"%d: %d %d %d %d\n",i
,(int)gg->CellType[i]
,gg->CellSegment[i]
,gg->CPointFirst[i]
,gg->CSideFirst[i]);
}
rc = fprintf(file,"cellpoint data:\n");
for(i=0;i<gg->freeCPoint;i++){
rc = fprintf(file,"%d: %d\n",i
,gg->CPoint[i]);
}
rc = fprintf(file,"cellside data:\n");
for(i=0;i<gg->freeCSide;i++){
rc = fprintf(file,"%d: %d\n",i
,gg->CSide[i]);
}
rc = fprintf(file,"celloutside data:\n");
for(i=1;i<=gg->lastCOut;i++){
rc = fprintf(file,"%d: %d\n",i
,gg->COutNext[i]
,gg->COutside[i]);
}
rc = fprintf(file,"end of ibGrid\n");
return ibgSuccess;
}
#define buflen 1000
static char buffer[buflen];
ibGrid *ibGridRead(FILE *file)
{int i,i0,rc;
ibgSegmentType utyp;
ibgCellType ctyp;
ibGrid *gg = calloc(1,sizeof(ibGrid));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"IBGRID ASCII-format version 1.00");
if(rc==EOF) {ibgmessage(ibgMELoadError); ibGridFree(gg); return ibgNULL;}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"grid dimension %d space dimension %d"
,&(gg->gridDimension),&(gg->spaceDimension));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"Window x: %f %f y: %f %f z: %f %f"
,&(gg->xmin[0]),&(gg->xmax[0])
,&(gg->xmin[1]),&(gg->xmax[1])
,&(gg->xmin[2]),&(gg->xmax[2]));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"maximal Point: %d Cell: %d CN: %d CS: %d CO: %d"
,&(gg->maxPoint),&(gg->maxCell),&(gg->maxCPoint)
,&(gg->maxCSide),&(gg->maxCOut));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"first Point: %d Cell: %d"
,&(gg->firstPoint),&(gg->firstCell));
fgets(buffer,buflen,file);
rc = sscanf(buffer," Reg: %d Face: %d Line: %d Vert: %d"
,&(gg->firstRegion),&(gg->firstFace)
,&(gg->firstLine),&(gg->firstNode));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"last Point: %d Cell: %d CO: %d"
,&(gg->lastPoint),&(gg->lastCell),&(gg->lastCOut));
fgets(buffer,buflen,file);
rc = sscanf(buffer," Reg: %d Face: %d Line: %d Vert: %d"
,&(gg->lastRegion),&(gg->lastFace)
,&(gg->lastLine),&(gg->lastNode));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"free CPoint: %d CSide: %d"
,&(gg->freeCPoint),&(gg->freeCSide));
gg->Point = malloc(IBGPOINTSIZE*(gg->maxPoint+1));
gg->CellType = malloc(sizeof(ibgCellType)*(gg->maxCell+1));
gg->CellSegment = malloc(sizeof(int)*(gg->maxCell+1));
gg->CPointFirst = malloc(sizeof(int)*(gg->maxCell+1));
gg->CSideFirst = malloc(sizeof(int)*(gg->maxCell+1));
gg->CPoint = malloc(sizeof(int)*(gg->maxCPoint+1));
gg->CSide = malloc(sizeof(int)*(gg->maxCSide+1));
gg->COutNext = malloc(sizeof(int)*(gg->maxCOut+1));
gg->COutside = malloc(sizeof(int)*(gg->maxCOut+1));
fgets(buffer,buflen,file);
rc = sscanf(buffer,"point data:");
for(i=gg->firstPoint;i<=gg->lastPoint;i++){
fgets(buffer,buflen,file);
rc = sscanf(buffer,"%d: %f %f %f %d %d",&i0
,&(gg->Point[i].xx[0]),&(gg->Point[i].xx[1]),&(gg->Point[i].xx[2])
,&utyp
,&(gg->Point[i].uu));
gg->Point[i].tt = utyp;
ibgAssert(i==i0);
}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"cell data:");
for(i=gg->firstCell;i<=gg->lastCell;i++){
fgets(buffer,buflen,file);
rc = sscanf(buffer,"%d: %d %d %d %d",&i0
,&ctyp
,&(gg->CellSegment[i])
,&(gg->CPointFirst[i])
,&(gg->CSideFirst[i]));
gg->CellType[i] = ctyp;
ibgAssert(i==i0);
}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"cellpoint data:");
for(i=0;i<gg->freeCPoint;i++){
fgets(buffer,buflen,file);
rc = sscanf(buffer,"%d: %d",&i0
,&(gg->CPoint[i]));
ibgAssert(i==i0);
}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"cellside data:");
for(i=0;i<gg->freeCSide;i++){
fgets(buffer,buflen,file);
rc = sscanf(buffer,"%d: %d",&i0
,&(gg->CSide[i]));
ibgAssert(i==i0);
}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"celloutside data:");
for(i=0;i<=gg->lastCOut;i++){
fgets(buffer,buflen,file);
rc = sscanf(buffer,"%d: %d",&i
,&(gg->COutNext[i])
,&(gg->COutside[i]));
}
fgets(buffer,buflen,file);
rc = sscanf(buffer,"end of ibGrid");
return gg;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -