📄 sg-cog.cxx
字号:
static char *rcsid= "$Id: sg-cog.cxx,v 1.2 1997/11/05 15:40:13 fuhrmann Exp $";#include <stdio.h>#include <stdlib.h>#include <string.h>#include "sg-cog.hxx"#include "sg-dump.hxx"int sgNx=0;int sgNy=0;int sgNz=0;ibgFloat sgCxmin=1.0;ibgFloat sgCxmax=0.0;ibgFloat sgCymin=1.0;ibgFloat sgCymax=0.0;ibgFloat sgCzmin=1.0;ibgFloat sgCzmax=0.0;ibgFloat sgCx[sgCOORDMAX]={0.0, 0.5, 1.0};ibgFloat sgCy[sgCOORDMAX]={0.0, 0.5, 1.0};ibgFloat sgCz[sgCOORDMAX]={0.0, 0.5, 1.0};int sgCMaterialTable[sgCMAX];int sgFMaterialTable[sgFMAX];wzRegion (*sgCMatFunction)(const cogPoint&p)=NULL;wzFace (*sgFMatFunction)(const cogPoint&p)=NULL;void sgCreateCoordinates(int n,ibgFloat coord[], ibgFloat min, ibgFloat max){ int i; ibgFloat h; if (n>sgCOORDMAX) { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);} if (n<1) { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);} if (n>1) h=(max-min)/(double)(n-1); coord[0]=min; for(i=1;i<n-1;i++) coord[i]=coord[i-1]+h; coord[n-1]=max;}static char sgFileName[64];void sgInitGrid(int argc, char *argv[]){ int i; sgCMatFunction=0; sgFMatFunction=0; sprintf(sgFileName,"%s.%s",argv[0],"sgz"); i=1; while (i<argc) { if (strcmp(argv[i],"-o")==0) { sprintf(sgFileName,"%s",argv[i+1]); i+=2;} else if (strcmp(argv[i],"-nx")==0) { sgNx= atoi(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-ny")==0) { sgNy= atoi(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-nz")==0) { sgNz= atoi(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-xmin")==0) { sgCxmin=atof(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-xmax")==0) { sgCxmax=atof(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-ymin")==0) { sgCymin=atof(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-ymax")==0) { sgCymax=atof(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-zmin")==0) { sgCzmin=atof(argv[i+1]); i+=2;} else if (strcmp(argv[i],"-zmax")==0) { sgCzmax=atof(argv[i+1]); i+=2;} else {printf("I-Arg, Argument %s not parsed\n",argv[i++]); } } sgCreateCoordinates(sgNx,sgCx,sgCxmin,sgCxmax); sgCreateCoordinates(sgNy,sgCy,sgCymin,sgCymax); sgCreateCoordinates(sgNz,sgCz,sgCzmin,sgCzmax); for(i=0;i<sgFMAX;i++) sgFMaterialTable[i]=0; for(i=0;i<sgCMAX;i++) sgCMaterialTable[i]=i, sgFMaterialTable[i]=i;}void sgCreateGridAndDump(Cogeometry &cog, ibgCriteria &crit){ FILE *SimplexFile; char cmdname[64]; int dim; printf("I-Data: cgrid size %d x %d x %d\n", sgNx, sgNy, sgNz); printf("I-Data: cgrid volume [ %g , %g ] x [ %g x %g ] x [ %g x %g]", sgCx[0],sgCx[sgNx-1], sgCy[0],sgCy[sgNy-1], sgCz[0],sgCz[sgNz-1]); if (sgNx<1) { printf("E-Wrong, wrong x coordinate number\n", sgNx); exit(1);} if (sgNy<1) { printf("E-Wrong, wrong y coordinate number\n", sgNy); exit(1);} if (sgNz<1) { printf("E-Wrong, wrong z coordinate number\n", sgNz); exit(1);} if (sgCx[0]>sgCx[sgNx-1]){ printf("E-Wrong, wrong x coordinate values\n"); exit(1);} if (sgCy[0]>sgCy[sgNy-1]){ printf("E-Wrong, wrong y coordinate values\n"); exit(1);} if (sgCz[0]>sgCz[sgNz-1]){ printf("E-Wrong, wrong z coordinate values\n"); exit(1);} if (sgNx>1) dim=1; if (sgNy>1) dim=2; if (sgNz>1) dim=3; ibgRegularGrid coarse(dim); if (sgNx>1) coarse.setList(0,sgNx,sgCx); if (sgNy>1) coarse.setList(1,sgNy,sgCy); if (sgNz>1) coarse.setList(2,sgNz,sgCz); ibGrid *grid = ibgOldGridGenerate( coarse, cog,crit); printf("\n\nI-Start: creation of simplex file %s started\n", sgFileName); sprintf(cmdname,"gzip > %s", sgFileName); SimplexFile = popen(cmdname,"w"); sgWriteSmp(grid, SimplexFile, sgCMAX,sgCMaterialTable,sgCMatFunction, sgFMAX,sgFMaterialTable,sgFMatFunction ); fflush(SimplexFile); pclose(SimplexFile); printf("I-Success: Creation of simplex file %s successful\n", sgFileName); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -