📄 ibgc.c
字号:
/* last edit: Ilja Schmelzer -------------- 10-JUN-1994 15:04:45.43 */
/************************************************************************/
/* */
/* <<< 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 "ibgc.h"
#include "ibg.h"
#include "ibglib.h"
int ibgcpoints[IBGCTMAX];
int ibgcedges[IBGCTMAX];
int ibgcsides[IBGCTMAX];
int ibgcudim[IBGCTMAX];
int ibgcgdim[IBGCTMAX];
int ibgccdim[IBGCTMAX];
char *ibgcname[IBGCTMAX];
int ibgcepoint1[IBGCTMAX][IBGCEMAX];
int ibgcepoint2[IBGCTMAX][IBGCEMAX];
int ibgcesidel[IBGCTMAX][IBGCEMAX];
int ibgcesider[IBGCTMAX][IBGCEMAX];
int ibgcssize[IBGCTMAX][IBGCSMAX];
int ibgcsside[IBGCTMAX][IBGCSMAX][4];
int ibgcsedge[IBGCTMAX][IBGCSMAX][4];
int ibgcspoint[IBGCTMAX][IBGCSMAX][5];
void ibgcInit()
{int t,s,e,ee;
/* <<< ibgc0Nothing >>> */
ibgcName(ibgc0Nothing) = "Null";
ibgcPoints(ibgc0Nothing) = 0;
ibgcEdges(ibgc0Nothing) = 0;
ibgcSides(ibgc0Nothing) = 0;
ibgcCODIM(ibgc0Nothing) = ibgSNothing;
ibgcGDIM(ibgc0Nothing) = ibgSNothing;
ibgcCDIM(ibgc0Nothing) = 0;
/* <<< ibgc0Node >>> */
ibgcName(ibgc0Node) = "Node 0D";
ibgcPoints(ibgc0Node) = 1;
ibgcEdges(ibgc0Node) = 0;
ibgcSides(ibgc0Node) = 0;
ibgcCODIM(ibgc0Node) = ibgSRegion;
ibgcGDIM(ibgc0Node) = 0;
ibgcCDIM(ibgc0Node) = 0;
/* <<< ibgc1Node >>> */
ibgcName(ibgc1Node) = "Node 1D";
ibgcPoints(ibgc1Node) = 1;
ibgcEdges(ibgc1Node) = 0;
ibgcSides(ibgc1Node) = 0;
ibgcCODIM(ibgc1Node) = ibgSFace;
ibgcGDIM(ibgc1Node) = 1;
ibgcCDIM(ibgc1Node) = 0;
/* <<< ibgc2Node >>> */
ibgcName(ibgc2Node) = "Node 2D";
ibgcPoints(ibgc2Node) = 1;
ibgcEdges(ibgc2Node) = 0;
ibgcSides(ibgc2Node) = 0;
ibgcCODIM(ibgc2Node) = ibgSLine;
ibgcGDIM(ibgc2Node) = 2;
ibgcCDIM(ibgc2Node) = 0;
/* <<< ibgc3Node >>> */
ibgcName(ibgc3Node) = "Node 3D";
ibgcPoints(ibgc3Node) = 1;
ibgcEdges(ibgc3Node) = 0;
ibgcSides(ibgc3Node) = 0;
ibgcCODIM(ibgc3Node) = ibgSNode;
ibgcGDIM(ibgc3Node) = 3;
ibgcCDIM(ibgc3Node) = 0;
/* <<< ibgc1Edge >>> */
ibgcName(ibgc1Edge) = "Line 1D";
ibgcPoints(ibgc1Edge) = 2;
ibgcEdges(ibgc1Edge) = 1;
ibgcSides(ibgc1Edge) = 2;
ibgcCODIM(ibgc1Edge) = ibgSRegion;
ibgcGDIM(ibgc1Edge) = 1;
ibgcCDIM(ibgc1Edge) = 1;
ibgcEPoint1(ibgc1Edge,0) = 0;
ibgcEPoint2(ibgc1Edge,0) = 1;
ibgcSSize(ibgc1Edge,0) = 1;
ibgcSSize(ibgc1Edge,1) = 1;
ibgcSPoint1(ibgc1Edge,0,0) = 0;
ibgcSPoint1(ibgc1Edge,1,0) = 1;
ibgcSPoint1(ibgc1Edge,0,1) = 0;
ibgcSPoint1(ibgc1Edge,1,1) = 1;
/* <<< ibgc2Edge >>> */
ibgcName(ibgc2Edge) = "Line 2D";
ibgcPoints(ibgc2Edge) = 2;
ibgcEdges(ibgc2Edge) = 1;
ibgcSides(ibgc2Edge) = 2;
ibgcCODIM(ibgc2Edge) = ibgSFace;
ibgcGDIM(ibgc2Edge) = 2;
ibgcCDIM(ibgc2Edge) = 1;
ibgcEPoint1(ibgc2Edge,0) = 0;
ibgcEPoint2(ibgc2Edge,0) = 1;
ibgcSSize(ibgc2Edge,0) = 1;
ibgcSSize(ibgc2Edge,1) = 1;
ibgcSPoint1(ibgc2Edge,0,0) = 0;
ibgcSPoint1(ibgc2Edge,1,0) = 1;
ibgcSPoint1(ibgc2Edge,0,1) = 0;
ibgcSPoint1(ibgc2Edge,1,1) = 1;
/* <<< ibgc3Edge >>> */
ibgcName(ibgc3Edge) = "Line 3D";
ibgcPoints(ibgc3Edge) = 2;
ibgcEdges(ibgc3Edge) = 1;
ibgcSides(ibgc3Edge) = 2;
ibgcCODIM(ibgc3Edge) = ibgSLine;
ibgcGDIM(ibgc3Edge) = 3;
ibgcCDIM(ibgc3Edge) = 1;
ibgcEPoint1(ibgc3Edge,0) = 0;
ibgcEPoint2(ibgc3Edge,0) = 1;
ibgcSSize(ibgc3Edge,0) = 1;
ibgcSSize(ibgc3Edge,1) = 1;
ibgcSPoint1(ibgc3Edge,0,0) = 0;
ibgcSPoint1(ibgc3Edge,1,0) = 1;
ibgcSPoint1(ibgc3Edge,0,1) = 0;
ibgcSPoint1(ibgc3Edge,1,1) = 1;
/* <<< ibgc2Triangle >>> */
ibgcName(ibgc2Triangle) = "Triangle 2D";
ibgcPoints(ibgc2Triangle) = 3;
ibgcEdges(ibgc2Triangle) = 3;
ibgcSides(ibgc2Triangle) = 3;
ibgcCODIM(ibgc2Triangle) = ibgSRegion;
ibgcGDIM(ibgc2Triangle) = 2;
ibgcCDIM(ibgc2Triangle) = 2;
ibgcEPoint1(ibgc2Triangle,0) = 1;
ibgcEPoint2(ibgc2Triangle,0) = 2;
ibgcEPoint1(ibgc2Triangle,1) = 2;
ibgcEPoint2(ibgc2Triangle,1) = 0;
ibgcEPoint1(ibgc2Triangle,2) = 0;
ibgcEPoint2(ibgc2Triangle,2) = 1;
ibgcSSize(ibgc2Triangle,0) = 2;
ibgcSSize(ibgc2Triangle,1) = 2;
ibgcSSize(ibgc2Triangle,2) = 2;
ibgcSSide(ibgc2Triangle,0,0) = 2;
ibgcSSide(ibgc2Triangle,0,1) = 1;
ibgcSSide(ibgc2Triangle,1,0) = 0;
ibgcSSide(ibgc2Triangle,1,1) = 2;
ibgcSSide(ibgc2Triangle,2,0) = 1;
ibgcSSide(ibgc2Triangle,2,1) = 0;
ibgcSPoint1(ibgc2Triangle,0,0) = 1;
ibgcSPoint1(ibgc2Triangle,0,1) = 2;
ibgcSPoint1(ibgc2Triangle,1,0) = 2;
ibgcSPoint1(ibgc2Triangle,1,1) = 0;
ibgcSPoint1(ibgc2Triangle,2,0) = 0;
ibgcSPoint1(ibgc2Triangle,2,1) = 1;
/* <<< ibgc3Triangle >>> */
ibgcName(ibgc3Triangle) = "Triangle 3D";
ibgcPoints(ibgc3Triangle) = 3;
ibgcEdges(ibgc3Triangle) = 3;
ibgcSides(ibgc3Triangle) = 3;
ibgcCODIM(ibgc3Triangle) = ibgSFace;
ibgcGDIM(ibgc3Triangle) = 3;
ibgcCDIM(ibgc3Triangle) = 2;
ibgcEPoint1(ibgc3Triangle,0) = 1;
ibgcEPoint2(ibgc3Triangle,0) = 2;
ibgcEPoint1(ibgc3Triangle,1) = 2;
ibgcEPoint2(ibgc3Triangle,1) = 0;
ibgcEPoint1(ibgc3Triangle,2) = 0;
ibgcEPoint2(ibgc3Triangle,2) = 1;
ibgcSSize(ibgc3Triangle,0) = 2;
ibgcSSize(ibgc3Triangle,1) = 2;
ibgcSSize(ibgc3Triangle,2) = 2;
ibgcSSide(ibgc3Triangle,0,0) = 2;
ibgcSSide(ibgc3Triangle,0,1) = 1;
ibgcSSide(ibgc3Triangle,1,0) = 0;
ibgcSSide(ibgc3Triangle,1,1) = 2;
ibgcSSide(ibgc3Triangle,2,0) = 1;
ibgcSSide(ibgc3Triangle,2,1) = 0;
ibgcSPoint1(ibgc3Triangle,0,0) = 1;
ibgcSPoint1(ibgc3Triangle,0,1) = 2;
ibgcSPoint1(ibgc3Triangle,1,0) = 2;
ibgcSPoint1(ibgc3Triangle,1,1) = 0;
ibgcSPoint1(ibgc3Triangle,2,0) = 0;
ibgcSPoint1(ibgc3Triangle,2,1) = 1;
/* <<< ibgc2Rectangle >>> */
ibgcName(ibgc2Rectangle) = "Rectangle 2D";
ibgcPoints(ibgc2Rectangle) = 4;
ibgcEdges(ibgc2Rectangle) = 4;
ibgcSides(ibgc2Rectangle) = 4;
ibgcCODIM(ibgc2Rectangle) = ibgSRegion;
ibgcGDIM(ibgc2Rectangle) = 2;
ibgcCDIM(ibgc2Rectangle) = 2;
ibgcEPoint1(ibgc2Rectangle,0) = 0;
ibgcEPoint2(ibgc2Rectangle,0) = 1;
ibgcEPoint1(ibgc2Rectangle,1) = 1;
ibgcEPoint2(ibgc2Rectangle,1) = 2;
ibgcEPoint1(ibgc2Rectangle,2) = 2;
ibgcEPoint2(ibgc2Rectangle,2) = 3;
ibgcEPoint1(ibgc2Rectangle,3) = 3;
ibgcEPoint2(ibgc2Rectangle,3) = 0;
ibgcSSize(ibgc2Rectangle,0) = 2;
ibgcSSize(ibgc2Rectangle,1) = 2;
ibgcSSize(ibgc2Rectangle,2) = 2;
ibgcSSize(ibgc2Rectangle,3) = 2;
ibgcSSide(ibgc2Rectangle,0,0) = 3;
ibgcSSide(ibgc2Rectangle,0,1) = 1;
ibgcSSide(ibgc2Rectangle,1,0) = 0;
ibgcSSide(ibgc2Rectangle,1,1) = 2;
ibgcSSide(ibgc2Rectangle,2,0) = 1;
ibgcSSide(ibgc2Rectangle,2,1) = 3;
ibgcSSide(ibgc2Rectangle,3,0) = 2;
ibgcSSide(ibgc2Rectangle,3,1) = 0;
ibgcSPoint1(ibgc2Rectangle,0,0) = 0;
ibgcSPoint1(ibgc2Rectangle,0,1) = 1;
ibgcSPoint1(ibgc2Rectangle,1,0) = 1;
ibgcSPoint1(ibgc2Rectangle,1,1) = 2;
ibgcSPoint1(ibgc2Rectangle,2,0) = 2;
ibgcSPoint1(ibgc2Rectangle,2,1) = 3;
ibgcSPoint1(ibgc2Rectangle,3,0) = 3;
ibgcSPoint1(ibgc2Rectangle,3,1) = 0;
/* <<< ibgc3Rectangle >>> */
ibgcName(ibgc3Rectangle) = "Rectangle 3D";
ibgcPoints(ibgc3Rectangle) = 4;
ibgcEdges(ibgc3Rectangle) = 4;
ibgcSides(ibgc3Rectangle) = 4;
ibgcCODIM(ibgc3Rectangle) = ibgSFace;
ibgcGDIM(ibgc3Rectangle) = 3;
ibgcCDIM(ibgc3Rectangle) = 2;
ibgcEPoint1(ibgc3Rectangle,0) = 0;
ibgcEPoint2(ibgc3Rectangle,0) = 1;
ibgcEPoint1(ibgc3Rectangle,1) = 1;
ibgcEPoint2(ibgc3Rectangle,1) = 2;
ibgcEPoint1(ibgc3Rectangle,2) = 2;
ibgcEPoint2(ibgc3Rectangle,2) = 3;
ibgcEPoint1(ibgc3Rectangle,3) = 3;
ibgcEPoint2(ibgc3Rectangle,3) = 0;
ibgcSSize(ibgc3Rectangle,0) = 2;
ibgcSSize(ibgc3Rectangle,1) = 2;
ibgcSSize(ibgc3Rectangle,2) = 2;
ibgcSSize(ibgc3Rectangle,3) = 2;
ibgcSSide(ibgc3Rectangle,0,0) = 3;
ibgcSSide(ibgc3Rectangle,0,1) = 1;
ibgcSSide(ibgc3Rectangle,1,0) = 0;
ibgcSSide(ibgc3Rectangle,1,1) = 2;
ibgcSSide(ibgc3Rectangle,2,0) = 1;
ibgcSSide(ibgc3Rectangle,2,1) = 3;
ibgcSSide(ibgc3Rectangle,3,0) = 2;
ibgcSSide(ibgc3Rectangle,3,1) = 0;
ibgcSPoint1(ibgc3Rectangle,0,0) = 0;
ibgcSPoint1(ibgc3Rectangle,0,1) = 1;
ibgcSPoint1(ibgc3Rectangle,1,0) = 1;
ibgcSPoint1(ibgc3Rectangle,1,1) = 2;
ibgcSPoint1(ibgc3Rectangle,2,0) = 2;
ibgcSPoint1(ibgc3Rectangle,2,1) = 3;
ibgcSPoint1(ibgc3Rectangle,3,0) = 3;
ibgcSPoint1(ibgc3Rectangle,3,1) = 0;
/* <<< ibgc3Tetrahedron >>> */
ibgcName(ibgc3Tetrahedron) = "Tetrahedron 3D";
ibgcPoints(ibgc3Tetrahedron) = 4;
ibgcEdges(ibgc3Tetrahedron) = 6;
ibgcSides(ibgc3Tetrahedron) = 4;
ibgcCODIM(ibgc3Tetrahedron) = ibgSRegion;
ibgcGDIM(ibgc3Tetrahedron) = 3;
ibgcCDIM(ibgc3Tetrahedron) = 3;
ibgcEPoint1(ibgc3Tetrahedron,0) = 2; /* Edge 0 */
ibgcEPoint2(ibgc3Tetrahedron,0) = 3;
ibgcESideL(ibgc3Tetrahedron,0) = 0;
ibgcESideR(ibgc3Tetrahedron,0) = 1;
ibgcEPoint1(ibgc3Tetrahedron,1) = 3; /* Edge 1 */
ibgcEPoint2(ibgc3Tetrahedron,1) = 1;
ibgcESideL(ibgc3Tetrahedron,1) = 0;
ibgcESideR(ibgc3Tetrahedron,1) = 2;
ibgcEPoint1(ibgc3Tetrahedron,2) = 1; /* Edge 2 */
ibgcEPoint2(ibgc3Tetrahedron,2) = 2;
ibgcESideL(ibgc3Tetrahedron,2) = 0;
ibgcESideR(ibgc3Tetrahedron,2) = 3;
ibgcEPoint1(ibgc3Tetrahedron,3) = 0; /* Edge 3 */
ibgcEPoint2(ibgc3Tetrahedron,3) = 1;
ibgcESideL(ibgc3Tetrahedron,3) = 2;
ibgcESideR(ibgc3Tetrahedron,3) = 3;
ibgcEPoint1(ibgc3Tetrahedron,4) = 0; /* Edge 4 */
ibgcEPoint2(ibgc3Tetrahedron,4) = 2;
ibgcESideL(ibgc3Tetrahedron,4) = 3;
ibgcESideR(ibgc3Tetrahedron,4) = 1;
ibgcEPoint1(ibgc3Tetrahedron,5) = 0; /* Edge 5 */
ibgcEPoint2(ibgc3Tetrahedron,5) = 3;
ibgcESideL(ibgc3Tetrahedron,5) = 1;
ibgcESideR(ibgc3Tetrahedron,5) = 2;
ibgcSSize(ibgc3Tetrahedron,0) = 3; /* Side 0 */
ibgcSSide(ibgc3Tetrahedron,0,0) = 3;
ibgcSSide(ibgc3Tetrahedron,0,1) = 1;
ibgcSSide(ibgc3Tetrahedron,0,2) = 2;
ibgcSEdge(ibgc3Tetrahedron,0,0) = 2;
ibgcSEdge(ibgc3Tetrahedron,0,1) = 0;
ibgcSEdge(ibgc3Tetrahedron,0,2) = 1;
ibgcSPoint1(ibgc3Tetrahedron,0,0) = 1;
ibgcSPoint1(ibgc3Tetrahedron,0,1) = 2;
ibgcSPoint1(ibgc3Tetrahedron,0,2) = 3;
ibgcSPoint1(ibgc3Tetrahedron,0,3) = 1;
ibgcSSize(ibgc3Tetrahedron,1) = 3; /* Side 1 */
ibgcSSide(ibgc3Tetrahedron,1,0) = 0;
ibgcSSide(ibgc3Tetrahedron,1,1) = 3;
ibgcSSide(ibgc3Tetrahedron,1,2) = 2;
ibgcSEdge(ibgc3Tetrahedron,1,0) = 0;
ibgcSEdge(ibgc3Tetrahedron,1,1) = 4;
ibgcSEdge(ibgc3Tetrahedron,1,2) = 5;
ibgcSPoint1(ibgc3Tetrahedron,1,0) = 3;
ibgcSPoint1(ibgc3Tetrahedron,1,1) = 2;
ibgcSPoint1(ibgc3Tetrahedron,1,2) = 0;
ibgcSPoint1(ibgc3Tetrahedron,1,3) = 3;
ibgcSSize(ibgc3Tetrahedron,2) = 3; /* Side 2 */
ibgcSSide(ibgc3Tetrahedron,2,0) = 3;
ibgcSSide(ibgc3Tetrahedron,2,1) = 0;
ibgcSSide(ibgc3Tetrahedron,2,2) = 1;
ibgcSEdge(ibgc3Tetrahedron,2,0) = 3;
ibgcSEdge(ibgc3Tetrahedron,2,1) = 1;
ibgcSEdge(ibgc3Tetrahedron,2,2) = 5;
ibgcSPoint1(ibgc3Tetrahedron,2,0) = 0;
ibgcSPoint1(ibgc3Tetrahedron,2,1) = 1;
ibgcSPoint1(ibgc3Tetrahedron,2,2) = 3;
ibgcSPoint1(ibgc3Tetrahedron,2,3) = 0;
ibgcSSize(ibgc3Tetrahedron,3) = 3; /* Side 3 */
ibgcSSide(ibgc3Tetrahedron,3,0) = 2;
ibgcSSide(ibgc3Tetrahedron,3,1) = 1;
ibgcSSide(ibgc3Tetrahedron,3,2) = 0;
ibgcSEdge(ibgc3Tetrahedron,3,0) = 3;
ibgcSEdge(ibgc3Tetrahedron,3,1) = 4;
ibgcSEdge(ibgc3Tetrahedron,3,2) = 2;
ibgcSPoint1(ibgc3Tetrahedron,3,0) = 1;
ibgcSPoint1(ibgc3Tetrahedron,3,1) = 0;
ibgcSPoint1(ibgc3Tetrahedron,3,2) = 2;
ibgcSPoint1(ibgc3Tetrahedron,3,3) = 1;
for(t=0;t<=(int)ibgc3Node;t++){
switch(ibgcCDIM(t)){
case 3:
for(s=0;s<ibgcSides(t);s++){
for(e=0;e<ibgcSSize(t,s);e++){
ee=ibgcSEdge(t,s,e);
if(ibgcESideL(t,ee)==s){
ibgassert(ibgcEPoint1(t,ee)==ibgcSPoint1(t,s,e));
ibgassert(ibgcEPoint2(t,ee)==ibgcSPoint2(t,s,e));
ibgassert(ibgcESideR(t,ee)==ibgcSSide(t,s,e));
}else if(ibgcESideR(t,ee)==s){
ibgassert(ibgcEPoint2(t,ee)==ibgcSPoint1(t,s,e));
ibgassert(ibgcEPoint1(t,ee)==ibgcSPoint2(t,s,e));
ibgassert(ibgcESideL(t,ee)==ibgcSSide(t,s,e));
}else ibgfatal;
}}
ibgassert(ibgcSides(t)-ibgcEdges(t)+ibgcPoints(t)==2);
break;
case 2:
ibgassert(ibgcSides(t)==ibgcEdges(t));
ibgassert(ibgcSides(t)==ibgcPoints(t));
break;
case 1:
break;
case 0:
break;
}
ibgassert(ibgcGDIM(t)-ibgcCDIM(t)==(int)ibgcCODIM(t));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -