pos_element.c

来自「cfd求解器使用与gmsh网格的求解」· C语言 代码 · 共 1,288 行 · 第 1/4 页

C
1,288
字号
	  PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ; 	#else	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;	  PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 0. ; 	      	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;   	     	  PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ; 	#endif     	  POS_CUT_FILL;	  PE = Create_PostElement(Index, TETRAHEDRON, 4, 1); /* nodes 2 3 4 5 */	  PE->NumNodes[0] = GE->NumNodes[1] ;	  PE->NumNodes[1] = GE->NumNodes[2] ;	  PE->NumNodes[2] = GE->NumNodes[3] ;	  PE->NumNodes[3] = GE->NumNodes[4] ;#if defined(NEW_PYRAMIDS)	  PE->u[0] = 1. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 0. ; 	      	  PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ; 	     	  PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ; 	     #else	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 0. ; 	      	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 0. ; 	     	  PE->u[3] = 0. ; PE->v[3] = 0. ; PE->w[3] = 1. ; 	     #endif	  POS_CUT_FILL;	}	else{	  PE = Create_PostElement(Index, PYRAMID, 5, 1) ; /* nodes 1 2 3 4 5 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[1] ;	  PE->NumNodes[2] = GE->NumNodes[2] ;	  PE->NumNodes[3] = GE->NumNodes[3] ;	  PE->NumNodes[4] = GE->NumNodes[4] ;#if defined(NEW_PYRAMIDS)	  PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	  PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ; 	      	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;	  PE->u[3] = 0. ; PE->v[3] = 1. ; PE->w[3] = 0. ; 	     	  PE->u[4] = 0. ; PE->v[4] = 0. ; PE->w[4] = 1. ;#else	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;	  PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 0. ; 	      	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 0. ;	  PE->u[3] =-1. ; PE->v[3] = 1. ; PE->w[3] = 0. ; 	     	  PE->u[4] = 0. ; PE->v[4] = 0. ; PE->w[4] = 1. ;#endif	  POS_CUT_FILL;	}	break ;      }    }    else { /* Skin: facets oriented with normals pointing outwards */            switch(GE->Type){	      case TRIANGLE :    	PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 1 2 */	PE->NumNodes[0] = GE->NumNodes[0] ;	PE->NumNodes[1] = GE->NumNodes[1] ;	PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 		PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 2 3 */	PE->NumNodes[0] = GE->NumNodes[1] ;	PE->NumNodes[1] = GE->NumNodes[2] ;	PE->u[0] = 1. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 0. ; PE->v[1] = 1. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 		PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 3 1 */	PE->NumNodes[0] = GE->NumNodes[2] ;	PE->NumNodes[1] = GE->NumNodes[0] ;	PE->u[0] = 0. ; PE->v[0] = 1. ; PE->w[0] = 0. ;	PE->u[1] = 0. ; PE->v[1] = 0. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 	break ;	      case QUADRANGLE :    	PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 1 2 */	PE->NumNodes[0] = GE->NumNodes[0] ;	PE->NumNodes[1] = GE->NumNodes[1] ;	PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;	PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 		PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 2 3 */	PE->NumNodes[0] = GE->NumNodes[1] ;	PE->NumNodes[1] = GE->NumNodes[2] ;	PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 0. ;	PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 		PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 3 4 */	PE->NumNodes[0] = GE->NumNodes[2] ;	PE->NumNodes[1] = GE->NumNodes[3] ;	PE->u[0] = 1. ; PE->v[0] = 1. ; PE->w[0] = 0. ;	PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 		PE = Create_PostElement(Index, LINE, 2, 1) ; /* nodes 4 1 */	PE->NumNodes[0] = GE->NumNodes[3] ;	PE->NumNodes[1] = GE->NumNodes[0] ;	PE->u[0] =-1. ; PE->v[0] = 1. ; PE->w[0] = 0. ;	PE->u[1] =-1. ; PE->v[1] =-1. ; PE->w[1] = 0. ;	POS_CUT_SKIN ; 	break ;	      case TETRAHEDRON :	PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 2 4 */	PE->NumNodes[0] = GE->NumNodes[0] ;	PE->NumNodes[1] = GE->NumNodes[1] ;	PE->NumNodes[2] = GE->NumNodes[3] ;	PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 1. ; PE->v[1] = 0. ; PE->w[1] = 0. ; 	      	PE->u[2] = 0. ; PE->v[2] = 0. ; PE->w[2] = 1. ; 	     	POS_CUT_SKIN;		PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 3 2 */	PE->NumNodes[0] = GE->NumNodes[0] ;	PE->NumNodes[1] = GE->NumNodes[2] ;	PE->NumNodes[2] = GE->NumNodes[1] ;	PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 0. ; PE->v[1] = 1. ; PE->w[1] = 0. ; 	      	PE->u[2] = 1. ; PE->v[2] = 0. ; PE->w[2] = 0. ;	POS_CUT_SKIN;		PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 4 3 */	PE->NumNodes[0] = GE->NumNodes[0] ;	PE->NumNodes[1] = GE->NumNodes[3] ;	PE->NumNodes[2] = GE->NumNodes[2] ;	PE->u[0] = 0. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 0. ; PE->v[1] = 0. ; PE->w[1] = 1. ; 	      	PE->u[2] = 0. ; PE->v[2] = 1. ; PE->w[2] = 0. ;	POS_CUT_SKIN;		PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 2 3 4 */	PE->NumNodes[0] = GE->NumNodes[1] ;	PE->NumNodes[1] = GE->NumNodes[2] ;	PE->NumNodes[2] = GE->NumNodes[3] ;	PE->u[0] = 1. ; PE->v[0] = 0. ; PE->w[0] = 0. ;	PE->u[1] = 0. ; PE->v[1] = 1. ; PE->w[1] = 0. ; 	      	PE->u[2] = 0. ; PE->v[2] = 0. ; PE->w[2] = 1. ;	POS_CUT_SKIN;	break ;	      case HEXAHEDRON :	if(DecomposeInSimplex){	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 4 2 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[3] ;	  PE->NumNodes[2] = GE->NumNodes[1] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] =-1. ; PE->w[2] =-1. ; 	      	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 2 4 3 */	  PE->NumNodes[0] = GE->NumNodes[1] ;	  PE->NumNodes[1] = GE->NumNodes[3] ;	  PE->NumNodes[2] = GE->NumNodes[2] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] =-1. ; 	      	  PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] =-1. ; 	     	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] =-1. ; 	      	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 5 6 8 */	  PE->NumNodes[0] = GE->NumNodes[4] ;	  PE->NumNodes[1] = GE->NumNodes[5] ;	  PE->NumNodes[2] = GE->NumNodes[7] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 1. ; 	      	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;	  POS_CUT_SKIN;	  	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 6 7 8 */	  PE->NumNodes[0] = GE->NumNodes[5] ;	  PE->NumNodes[1] = GE->NumNodes[6] ;	  PE->NumNodes[2] = GE->NumNodes[7] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 1. ; 	      	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 1. ; 	      	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 1. ; 	     	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 1 5 4 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[4] ;	  PE->NumNodes[2] = GE->NumNodes[3] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] =-1. ; PE->v[1] =-1. ; PE->w[1] = 1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] =-1. ;	  POS_CUT_SKIN;	  	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 5 8 4 */	  PE->NumNodes[0] = GE->NumNodes[4] ;	  PE->NumNodes[1] = GE->NumNodes[7] ;	  PE->NumNodes[2] = GE->NumNodes[3] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] = 1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] =-1. ;	  POS_CUT_SKIN;	  	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 2 3 6 */	  PE->NumNodes[0] = GE->NumNodes[1] ;	  PE->NumNodes[1] = GE->NumNodes[2] ;	  PE->NumNodes[2] = GE->NumNodes[5] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] =-1. ; PE->w[2] = 1. ;	  POS_CUT_SKIN;	  	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 6 3 7 */	  PE->NumNodes[0] = GE->NumNodes[5] ;	  PE->NumNodes[1] = GE->NumNodes[2] ;	  PE->NumNodes[2] = GE->NumNodes[6] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 5 1 6 */	  PE->NumNodes[0] = GE->NumNodes[4] ;	  PE->NumNodes[1] = GE->NumNodes[0] ;	  PE->NumNodes[2] = GE->NumNodes[5] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] =-1. ; PE->v[1] =-1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] =-1. ; PE->w[2] = 1. ;	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 6 1 2 */	  PE->NumNodes[0] = GE->NumNodes[5] ;	  PE->NumNodes[1] = GE->NumNodes[0] ;	  PE->NumNodes[2] = GE->NumNodes[1] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] =-1. ; PE->v[1] =-1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] =-1. ; PE->w[2] =-1. ;	  POS_CUT_SKIN;	  	  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 8 7 4 */	  PE->NumNodes[0] = GE->NumNodes[7] ;	  PE->NumNodes[1] = GE->NumNodes[6] ;	  PE->NumNodes[2] = GE->NumNodes[3] ;	  PE->u[0] =-1. ; PE->v[0] = 1. ; PE->w[0] = 1. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] = 1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] =-1. ;	  POS_CUT_SKIN;		  PE = Create_PostElement(Index, TRIANGLE, 3, 1) ; /* nodes 7 3 4 */	  PE->NumNodes[0] = GE->NumNodes[6] ;	  PE->NumNodes[1] = GE->NumNodes[2] ;	  PE->NumNodes[2] = GE->NumNodes[3] ;	  PE->u[0] = 1. ; PE->v[0] = 1. ; PE->w[0] = 1. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] =-1. ;	  POS_CUT_SKIN;	}	else{	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 1 2 6 5 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[1] ;	  PE->NumNodes[2] = GE->NumNodes[5] ;	  PE->NumNodes[3] = GE->NumNodes[4] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] =-1. ; PE->w[2] = 1. ;	  PE->u[3] =-1. ; PE->v[3] =-1. ; PE->w[3] = 1. ;	  POS_CUT_SKIN;	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes  1 4 3 2 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[3] ;	  PE->NumNodes[2] = GE->NumNodes[2] ;	  PE->NumNodes[3] = GE->NumNodes[1] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] =-1. ;	  PE->u[3] = 1. ; PE->v[3] =-1. ; PE->w[3] =-1. ;	  POS_CUT_SKIN;	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 1 5 8 4 */	  PE->NumNodes[0] = GE->NumNodes[0] ;	  PE->NumNodes[1] = GE->NumNodes[4] ;	  PE->NumNodes[2] = GE->NumNodes[7] ;	  PE->NumNodes[3] = GE->NumNodes[3] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] =-1. ; PE->v[1] =-1. ; PE->w[1] = 1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;	  PE->u[3] =-1. ; PE->v[3] = 1. ; PE->w[3] =-1. ;	  POS_CUT_SKIN;	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 2 3 7 6 */	  PE->NumNodes[0] = GE->NumNodes[1] ;	  PE->NumNodes[1] = GE->NumNodes[2] ;	  PE->NumNodes[2] = GE->NumNodes[6] ;	  PE->NumNodes[3] = GE->NumNodes[5] ;	  PE->u[0] = 1. ; PE->v[0] =-1. ; PE->w[0] =-1. ;	  PE->u[1] = 1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;	  PE->u[3] = 1. ; PE->v[3] =-1. ; PE->w[3] = 1. ;	  POS_CUT_SKIN;	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 3 4 8 7 */	  PE->NumNodes[0] = GE->NumNodes[2] ;	  PE->NumNodes[1] = GE->NumNodes[3] ;	  PE->NumNodes[2] = GE->NumNodes[7] ;	  PE->NumNodes[3] = GE->NumNodes[6] ;	  PE->u[0] = 1. ; PE->v[0] = 1. ; PE->w[0] =-1. ;	  PE->u[1] =-1. ; PE->v[1] = 1. ; PE->w[1] =-1. ;	  PE->u[2] =-1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;	  PE->u[3] = 1. ; PE->v[3] = 1. ; PE->w[3] = 1. ;	  POS_CUT_SKIN;	  PE = Create_PostElement(Index, QUADRANGLE, 4, 1) ; /* nodes 5 6 7 8 */	  PE->NumNodes[0] = GE->NumNodes[4] ;	  PE->NumNodes[1] = GE->NumNodes[5] ;	  PE->NumNodes[2] = GE->NumNodes[6] ;	  PE->NumNodes[3] = GE->NumNodes[7] ;	  PE->u[0] =-1. ; PE->v[0] =-1. ; PE->w[0] = 1. ;	  PE->u[1] = 1. ; PE->v[1] =-1. ; PE->w[1] = 1. ;	  PE->u[2] = 1. ; PE->v[2] = 1. ; PE->w[2] = 1. ;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?