📄 mainsgtest.html
字号:
<TITLE>COG 2.1: Interface to sxgrid</TITLE><PRE>#include <stdio.h>#include <stdlib.h>#include "sg-cog.hxx"#include "segtest.cxx"#include "gentest.cxx"#include "outtest.cxx"#include "sgtest.cxx"int sgNx=2;int sgNy=2;int sgNz=2;ibgFloat sgCxmin=0.0;ibgFloat sgCxmax=1.0;ibgFloat sgCymin=0.0;ibgFloat sgCymax=1.0;ibgFloat sgCzmin=0.0;ibgFloat sgCzmax=1.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;char sgFileName[500];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;}#define generator_initialize_definedvoid generator_initialize(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 {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;}ibgcoarse test_coarse(){ 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; ibgcoarse coarse = new ibgCoarseGrid(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); return coarse;}/* obsolete */void sgInitGrid(int argc, char *argv[]) { generator_initialize(argc,argv); output_initialize(argc,argv);}void sgCreateGridAndDump(Cogeometry &cog, ibgCriteria &crit){ test_segment_description test_segments; ibgcoarse box = test_coarse(); ibggenerator gen = test_generator(); wzgrid grid = (*gen)(&cog,box,&crit); for(int i=1;i<sgCMAX;i++){ if(wzRegion(i).valid()) wzRegion(i).material() = sgCMaterialTable[i]; } test_output(&cog,grid);}</PRE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -