159599516SKenneth E. Jansen #include <FCMangle.h> 259599516SKenneth E. Jansen #define symtripyr FortranCInterface_GLOBAL_(symtripyr, SYMTRIPYR) 359599516SKenneth E. Jansen 459599516SKenneth E. Jansen typedef double DARR3[3]; 559599516SKenneth E. Jansen 659599516SKenneth E. Jansen int triIntPntPyr(int, DARR3**,double**); 759599516SKenneth E. Jansen 8*f34e7d5cSCameron Smith void symtripyr(int *n1, double pt[][4], double wt[], int *err) 959599516SKenneth E. Jansen { 1059599516SKenneth E. Jansen double *lwt; 1159599516SKenneth E. Jansen DARR3 *lpt; 1259599516SKenneth E. Jansen int i,j; 1359599516SKenneth E. Jansen *err = triIntPntPyr(*n1, &lpt, &lwt); 1459599516SKenneth E. Jansen for(i=0; i < *n1; i++){ 1559599516SKenneth E. Jansen wt[i] = lwt[i]; 1659599516SKenneth E. Jansen for(j=0; j < 3; j++) 1759599516SKenneth E. Jansen pt[i][j] = lpt[i][j]; 1859599516SKenneth E. Jansen } 1959599516SKenneth E. Jansen } 2059599516SKenneth E. Jansen 2159599516SKenneth E. Jansen #include <stdio.h> 2259599516SKenneth E. Jansen /* 1pt constants */ 2359599516SKenneth E. Jansen #define zero 0.0000000000000000 2459599516SKenneth E. Jansen #define ppt500 0.5000000000000000 2559599516SKenneth E. Jansen #define p2pt00 2.0000000000000000 2659599516SKenneth E. Jansen 2759599516SKenneth E. Jansen /* 4pt constants */ 2859599516SKenneth E. Jansen #define ppt455 0.4553418012614798 2959599516SKenneth E. Jansen #define ppt788 0.7886751345948130 3059599516SKenneth E. Jansen #define ppt577 0.5773502691896260 3159599516SKenneth E. Jansen #define ppt122 0.1220084679281462 3259599516SKenneth E. Jansen #define ppt211 0.2113248654051870 3359599516SKenneth E. Jansen 3459599516SKenneth E. Jansen /* Rule 3 */ 3559599516SKenneth E. Jansen #define mpt68 -0.6872983346207413 3659599516SKenneth E. Jansen #define pt68 0.6872983346207413 3759599516SKenneth E. Jansen #define mpt77 -0.7745966692414831 3859599516SKenneth E. Jansen #define pt77 0.7745966692414831 3959599516SKenneth E. Jansen #define mpt38 -0.3872983346207416 4059599516SKenneth E. Jansen #define pt38 0.3872983346207416 4159599516SKenneth E. Jansen #define mpt08 -0.08729833462074179 4259599516SKenneth E. Jansen #define pt08 0.08729833462074179 4359599516SKenneth E. Jansen #define mpt5 -0.5000000000000000 4459599516SKenneth E. Jansen 4559599516SKenneth E. Jansen #define mpt11 -0.1127016653792584 4659599516SKenneth E. Jansen #define mpt88 -0.8872983346207415 4759599516SKenneth E. Jansen 4859599516SKenneth E. Jansen #define Qw311 0.308641975308642 4959599516SKenneth E. Jansen #define Qw321 0.493827160493831 5059599516SKenneth E. Jansen #define Qw322 0.790123456790124 5159599516SKenneth E. Jansen #define Qw312 0.493827160493831 5259599516SKenneth E. Jansen #define Qw313 0.308641975308642 5359599516SKenneth E. Jansen #define Qw323 0.493827160493831 5459599516SKenneth E. Jansen #define Qw331 0.308641975308642 5559599516SKenneth E. Jansen #define Qw332 0.493827160493831 5659599516SKenneth E. Jansen #define Qw333 0.308641975308642 5759599516SKenneth E. Jansen 5859599516SKenneth E. Jansen /* #define J 0.108103018168070 */ 5959599516SKenneth E. Jansen /* #define K 0.445948490915965 */ 6059599516SKenneth E. Jansen 6159599516SKenneth E. Jansen /* #define L 0.225000000000000 */ 6259599516SKenneth E. Jansen /* #define M 0.125939180544827 */ 6359599516SKenneth E. Jansen /* #define N 0.132394152788506 */ 6459599516SKenneth E. Jansen 6559599516SKenneth E. Jansen /* #define O 0.797426985353087 */ 6659599516SKenneth E. Jansen /* #define P 0.101286507323456 */ 6759599516SKenneth E. Jansen /* #define Q 0.470142064105115 */ 6859599516SKenneth E. Jansen /* #define R 0.059715871789770 */ 6959599516SKenneth E. Jansen 7059599516SKenneth E. Jansen /* #define S 0.050844906370207 */ 7159599516SKenneth E. Jansen /* #define T 0.116786275726379 */ 7259599516SKenneth E. Jansen /* #define U 0.082851075618374 */ 7359599516SKenneth E. Jansen 7459599516SKenneth E. Jansen /* #define V 0.873821971016996 */ 7559599516SKenneth E. Jansen /* #define W 0.063089014491502 */ 7659599516SKenneth E. Jansen /* #define X 0.501426509658179 */ 7759599516SKenneth E. Jansen /* #define Y 0.249286745170910 */ 7859599516SKenneth E. Jansen /* #define Z 0.636502499121399 */ 7959599516SKenneth E. Jansen /* #define AA 0.310352451033785 */ 8059599516SKenneth E. Jansen /* #define BB 0.053145049844816 */ 8159599516SKenneth E. Jansen 8259599516SKenneth E. Jansen /* typedef double DARR3[3] ; */ 8359599516SKenneth E. Jansen 8459599516SKenneth E. Jansen static double rst1[][3] = {{zero,-1,zero}}; 8559599516SKenneth E. Jansen static double wt1[] = {2.2360679774997897}; 8659599516SKenneth E. Jansen /* only rule 2 is implemented correctly at this time */ 8759599516SKenneth E. Jansen static double rst4[][3] ={ 8859599516SKenneth E. Jansen {-.455341801261479547, -.788675134594812883 ,-.577350269189625763}, 8959599516SKenneth E. Jansen { .455341801261479547, -.788675134594812883 ,-.577350269189625763}, 9059599516SKenneth E. Jansen {-.122008467928146216, -.211324865405187118 , .577350269189625764}, 9159599516SKenneth E. Jansen { .122008467928146216, -.211324865405187118 , .577350269189625764}}; 9259599516SKenneth E. Jansen 9359599516SKenneth E. Jansen static double wt4[] = {0.394337567297406440, 0.394337567297406440, 9459599516SKenneth E. Jansen 0.105662432702593559, 0.105662432702593559}; 9559599516SKenneth E. Jansen 9659599516SKenneth E. Jansen static double rst9[][3] = { 9759599516SKenneth E. Jansen {mpt68, mpt88, mpt77}, 9859599516SKenneth E. Jansen { zero, mpt88, mpt77}, 9959599516SKenneth E. Jansen { pt68, mpt88, mpt77}, 10059599516SKenneth E. Jansen {mpt38, mpt5, zero}, 10159599516SKenneth E. Jansen { zero, mpt5, zero}, 10259599516SKenneth E. Jansen { pt38, mpt5, zero}, 10359599516SKenneth E. Jansen {mpt08, mpt11, pt77}, 10459599516SKenneth E. Jansen { zero, mpt11, pt77}, 10559599516SKenneth E. Jansen { pt08, mpt11, pt77} 10659599516SKenneth E. Jansen }; 10759599516SKenneth E. Jansen static double wt9[] = {Qw311, Qw321, Qw331, Qw312, Qw322, Qw332, Qw313, 10859599516SKenneth E. Jansen Qw323, Qw333}; 10959599516SKenneth E. Jansen 11059599516SKenneth E. Jansen /* static double rst7[][3] = {{A,A,A}, */ 11159599516SKenneth E. Jansen /* {O,P,P},{P,O,P},{P,P,O}, */ 11259599516SKenneth E. Jansen /* {Q,Q,R},{Q,R,Q},{R,Q,Q}}; */ 11359599516SKenneth E. Jansen /* static double wt7[] = {L,M,M,M,N,N,N}; */ 11459599516SKenneth E. Jansen 11559599516SKenneth E. Jansen /* static double rst12[][3] = {{V,W,1.0-V-W},{W,V,1.0-V-W},{W,W,1.0-W-W}, */ 11659599516SKenneth E. Jansen /* {X,Y,1.0-X-Y},{Y,X,1.0-X-Y},{Y,Y,1.0-Y-Y}, */ 11759599516SKenneth E. Jansen /* {Z,AA,1.0-Z-AA},{AA,Z,1.0-Z-AA},{Z,BB,1.0-Z-BB}, */ 11859599516SKenneth E. Jansen /* {AA,BB,1.0-AA-BB},{BB,AA,1.0-BB-AA},{BB,Z,1.0-BB-Z} */ 11959599516SKenneth E. Jansen 12059599516SKenneth E. Jansen /* }; */ 12159599516SKenneth E. Jansen 12259599516SKenneth E. Jansen /* static double wt12[] = {S,S,S,T,T,T,U,U,U,U,U,U}; */ 12359599516SKenneth E. Jansen 12459599516SKenneth E. Jansen int triIntPntPyr(int nint, DARR3 **bcord, double **wt) 12559599516SKenneth E. Jansen { 12659599516SKenneth E. Jansen int retval = 1 ; 12759599516SKenneth E. Jansen if( nint == 1 ){*bcord = rst1 ; *wt = wt1; } 12859599516SKenneth E. Jansen else if( nint == 4 ){*bcord = rst4 ; *wt = wt4; } 12959599516SKenneth E. Jansen else if( nint == 9 ){*bcord = rst9 ; *wt = wt9; } 13059599516SKenneth E. Jansen else 13159599516SKenneth E. Jansen { 13259599516SKenneth E. Jansen /* fprintf(stderr,"\n%d integration points unsupported in symtri.c; give {1,3,4,6,7,12}\n",nint); */ 13359599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symtri.c; give {1,4}\n",nint); 13459599516SKenneth E. Jansen retval = 0; 13559599516SKenneth E. Jansen } 13659599516SKenneth E. Jansen return retval ; 13759599516SKenneth E. Jansen } 13859599516SKenneth E. Jansen 13959599516SKenneth E. Jansen 14059599516SKenneth E. Jansen 141