159599516SKenneth E. Jansen #include <FCMangle.h> 259599516SKenneth E. Jansen #define symtet FortranCInterface_GLOBAL_(symtet, SYMTET) 359599516SKenneth E. Jansen 459599516SKenneth E. Jansen typedef double DARR4[4]; 559599516SKenneth E. Jansen 659599516SKenneth E. Jansen int tetIntPnt(int,DARR4**,double **); 759599516SKenneth E. Jansen 859599516SKenneth E. Jansen 9*f34e7d5cSCameron Smith void symtet(int *n1, double pt[][4], double wt[], int *err) 1059599516SKenneth E. Jansen { 1159599516SKenneth E. Jansen double *lwt; 1259599516SKenneth E. Jansen DARR4 *lpt; 1359599516SKenneth E. Jansen int i,j; 1459599516SKenneth E. Jansen *err = tetIntPnt(*n1, &lpt, &lwt); 1559599516SKenneth E. Jansen for(i=0; i < *n1; i++) { 1659599516SKenneth E. Jansen wt[i] = lwt[i]; 1759599516SKenneth E. Jansen for(j=0; j <4; j++) 1859599516SKenneth E. Jansen pt[i][j]=lpt[i][j]; 1959599516SKenneth E. Jansen } 2059599516SKenneth E. Jansen } 2159599516SKenneth E. Jansen 2259599516SKenneth E. Jansen /*$Id$*/ 2359599516SKenneth E. Jansen #include <stdio.h> 2459599516SKenneth E. Jansen 2559599516SKenneth E. Jansen /* constants for 4-point rule */ 2659599516SKenneth E. Jansen #define a4 0.5854101966249685 2759599516SKenneth E. Jansen #define b4 0.1381966011250150 2859599516SKenneth E. Jansen 2959599516SKenneth E. Jansen /* constants for 5-point rule */ 3059599516SKenneth E. Jansen #define a5 0.5000000000000000 3159599516SKenneth E. Jansen #define b5 0.1666666666666667 3259599516SKenneth E. Jansen 3359599516SKenneth E. Jansen /* constants for 16-point rule */ 3459599516SKenneth E. Jansen #define a16 0.0503737941001228 3559599516SKenneth E. Jansen #define b16 0.0665420686332923 3659599516SKenneth E. Jansen #define c16 0.7716429020672371 3759599516SKenneth E. Jansen #define d16 0.0761190326442543 3859599516SKenneth E. Jansen #define e16 0.1197005277978019 3959599516SKenneth E. Jansen #define f16 0.0718316452676693 4059599516SKenneth E. Jansen #define g16 0.4042339134672644 4159599516SKenneth E. Jansen 4259599516SKenneth E. Jansen /* constants for 17-point rule */ 4359599516SKenneth E. Jansen #define a17 0.1884185567365411 4459599516SKenneth E. Jansen #define b17 0.0670385837260428 4559599516SKenneth E. Jansen #define c17 0.0452855923632739 4659599516SKenneth E. Jansen #define p17 0.7316369079576180 4759599516SKenneth E. Jansen #define q17 0.0894543640141273 4859599516SKenneth E. Jansen #define e17 0.1325810999384657 4959599516SKenneth E. Jansen #define f17 0.0245400397290300 5059599516SKenneth E. Jansen #define g17 0.4214394310662522 5159599516SKenneth E. Jansen 5259599516SKenneth E. Jansen 5359599516SKenneth E. Jansen /* constants for 29-point rule */ 5459599516SKenneth E. Jansen #define a29 0.0904012904601475 5559599516SKenneth E. Jansen #define b29 0.0191198342789912 5659599516SKenneth E. Jansen #define c29 0.0436149384066657 5759599516SKenneth E. Jansen #define d29 0.0258116759619916 5859599516SKenneth E. Jansen #define p29 0.8277192480479295 5959599516SKenneth E. Jansen #define q29 0.0574269173173568 6059599516SKenneth E. Jansen #define e29 0.0513518841255634 6159599516SKenneth E. Jansen #define f29 0.4860510285706072 6259599516SKenneth E. Jansen #define g29 0.2312985436519147 6359599516SKenneth E. Jansen #define h29 0.2967538129690260 6459599516SKenneth E. Jansen #define i29 0.6081079894015281 6559599516SKenneth E. Jansen #define j29 0.0475690988147229 6659599516SKenneth E. Jansen 6759599516SKenneth E. Jansen #define a25 0.2500000000000000 6859599516SKenneth E. Jansen #define a26 -0.8000000000000000 6959599516SKenneth E. Jansen #define a27 0.4500000000000000 7059599516SKenneth E. Jansen 7159599516SKenneth E. Jansen /* typedef double DARR4[4] ; */ 7259599516SKenneth E. Jansen 7359599516SKenneth E. Jansen static double rstw1[][4] = {{a25,a25,a25,a25}}; 7459599516SKenneth E. Jansen static double twt1[] = {1.000000000000000000000}; 7559599516SKenneth E. Jansen 7659599516SKenneth E. Jansen static double rstw4[][4] = {{a4,b4,b4,b4},{b4,a4,b4,b4},{b4,b4,a4,b4}, 7759599516SKenneth E. Jansen {b4,b4,b4,a4}}; 7859599516SKenneth E. Jansen static double twt4[] = {a25,a25,a25,a25}; 7959599516SKenneth E. Jansen 8059599516SKenneth E. Jansen static double rstw5[][4] = {{a25,a25,a25,a25}, 8159599516SKenneth E. Jansen {a5,b5,b5,b5}, 8259599516SKenneth E. Jansen {b5,a5,b5,b5}, 8359599516SKenneth E. Jansen {b5,b5,a5,b5}, 8459599516SKenneth E. Jansen {b5,b5,b5,a5}}; 8559599516SKenneth E. Jansen static double twt5[] = {a26,a27,a27,a27,a27}; 8659599516SKenneth E. Jansen 8759599516SKenneth E. Jansen static double rstw16[][4] = {{c16,d16,d16,d16}, 8859599516SKenneth E. Jansen {d16,c16,d16,d16}, 8959599516SKenneth E. Jansen {d16,d16,c16,d16}, 9059599516SKenneth E. Jansen {d16,d16,d16,c16}, 9159599516SKenneth E. Jansen 9259599516SKenneth E. Jansen {e16,f16,g16,g16}, 9359599516SKenneth E. Jansen {f16,e16,g16,g16}, 9459599516SKenneth E. Jansen {e16,g16,g16,f16}, 9559599516SKenneth E. Jansen {f16,g16,g16,e16}, 9659599516SKenneth E. Jansen {g16,g16,e16,f16}, 9759599516SKenneth E. Jansen {g16,g16,f16,e16}, 9859599516SKenneth E. Jansen {g16,e16,f16,g16}, 9959599516SKenneth E. Jansen {g16,f16,e16,g16}, 10059599516SKenneth E. Jansen {e16,g16,f16,g16}, 10159599516SKenneth E. Jansen {f16,g16,e16,g16}, 10259599516SKenneth E. Jansen {g16,e16,g16,f16}, 10359599516SKenneth E. Jansen {g16,f16,g16,e16} }; 10459599516SKenneth E. Jansen static double twt16[] = {a16,a16,a16,a16, 10559599516SKenneth E. Jansen b16,b16,b16,b16, 10659599516SKenneth E. Jansen b16,b16,b16,b16, 10759599516SKenneth E. Jansen b16,b16,b16,b16 }; 10859599516SKenneth E. Jansen 10959599516SKenneth E. Jansen static double rstw17[][4] = {{a25,a25,a25,a25}, 11059599516SKenneth E. Jansen {p17,q17,q17,q17}, 11159599516SKenneth E. Jansen {q17,p17,q17,q17}, 11259599516SKenneth E. Jansen {q17,q17,p17,q17}, 11359599516SKenneth E. Jansen {q17,q17,q17,p17}, 11459599516SKenneth E. Jansen 11559599516SKenneth E. Jansen {e17,f17,g17,g17}, 11659599516SKenneth E. Jansen {f17,e17,g17,g17}, 11759599516SKenneth E. Jansen {e17,g17,g17,f17}, 11859599516SKenneth E. Jansen {f17,g17,g17,e17}, 11959599516SKenneth E. Jansen {g17,g17,e17,f17}, 12059599516SKenneth E. Jansen {g17,g17,f17,e17}, 12159599516SKenneth E. Jansen {g17,e17,f17,g17}, 12259599516SKenneth E. Jansen {g17,f17,e17,g17}, 12359599516SKenneth E. Jansen {e17,g17,f17,g17}, 12459599516SKenneth E. Jansen {f17,g17,e17,g17}, 12559599516SKenneth E. Jansen {g17,e17,g17,f17}, 12659599516SKenneth E. Jansen {g17,f17,g17,e17} }; 12759599516SKenneth E. Jansen 12859599516SKenneth E. Jansen static double twt17[] = {a17,b17,b17,b17,b17, 12959599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17, 13059599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17}; 13159599516SKenneth E. Jansen 13259599516SKenneth E. Jansen static double twt29[] = {a29,b29,b29,b29,b29, 13359599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29, 13459599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29, 13559599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29, 13659599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29}; 13759599516SKenneth E. Jansen 13859599516SKenneth E. Jansen static double rstw29[][4] = {{a25,a25,a25,a25}, 13959599516SKenneth E. Jansen 14059599516SKenneth E. Jansen {p29,q29,q29,q29}, 14159599516SKenneth E. Jansen {q29,p29,q29,q29}, 14259599516SKenneth E. Jansen {q29,q29,p29,q29}, 14359599516SKenneth E. Jansen {q29,q29,q29,p29}, 14459599516SKenneth E. Jansen 14559599516SKenneth E. Jansen {e29,f29,g29,g29}, 14659599516SKenneth E. Jansen {f29,e29,g29,g29}, 14759599516SKenneth E. Jansen {e29,g29,g29,f29}, 14859599516SKenneth E. Jansen {f29,g29,g29,e29}, 14959599516SKenneth E. Jansen {g29,g29,e29,f29}, 15059599516SKenneth E. Jansen {g29,g29,f29,e29}, 15159599516SKenneth E. Jansen {g29,e29,f29,g29}, 15259599516SKenneth E. Jansen {g29,f29,e29,g29}, 15359599516SKenneth E. Jansen {e29,g29,f29,g29}, 15459599516SKenneth E. Jansen {f29,g29,e29,g29}, 15559599516SKenneth E. Jansen {g29,e29,g29,f29}, 15659599516SKenneth E. Jansen {g29,f29,g29,e29}, 15759599516SKenneth E. Jansen 15859599516SKenneth E. Jansen {h29,i29,j29,j29}, 15959599516SKenneth E. Jansen {i29,h29,j29,j29}, 16059599516SKenneth E. Jansen {h29,j29,j29,i29}, 16159599516SKenneth E. Jansen {i29,j29,j29,h29}, 16259599516SKenneth E. Jansen {j29,j29,h29,i29}, 16359599516SKenneth E. Jansen {j29,j29,i29,h29}, 16459599516SKenneth E. Jansen {j29,h29,i29,j29}, 16559599516SKenneth E. Jansen {j29,i29,h29,j29}, 16659599516SKenneth E. Jansen {h29,j29,i29,j29}, 16759599516SKenneth E. Jansen {i29,j29,h29,j29}, 16859599516SKenneth E. Jansen {j29,h29,j29,i29}, 16959599516SKenneth E. Jansen {j29,i29,j29,h29} }; 17059599516SKenneth E. Jansen 17159599516SKenneth E. Jansen #ifdef __cplusplus 17259599516SKenneth E. Jansen extern "C" { 17359599516SKenneth E. Jansen #endif 17459599516SKenneth E. Jansen 17559599516SKenneth E. Jansen int tetIntPnt(int nint, DARR4 **bcord, double **wt) 17659599516SKenneth E. Jansen { 17759599516SKenneth E. Jansen int retval = 1; 17859599516SKenneth E. Jansen 17959599516SKenneth E. Jansen if( nint == 1 ) {*bcord = rstw1 ; *wt = twt1; } 18059599516SKenneth E. Jansen else if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; } 18159599516SKenneth E. Jansen else if( nint == 5 ){*bcord = rstw5 ; *wt = twt5; } 18259599516SKenneth E. Jansen else if( nint == 16 ){*bcord = rstw16 ; *wt = twt16; } 18359599516SKenneth E. Jansen else if( nint == 17 ){*bcord = rstw17 ; *wt = twt17; } 18459599516SKenneth E. Jansen else if( nint == 29 ){*bcord = rstw29 ; *wt = twt29; } 18559599516SKenneth E. Jansen else 18659599516SKenneth E. Jansen { 18759599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symtet.c; give {1,4,5,16,17,29}\n",nint); 18859599516SKenneth E. Jansen retval = 0; 18959599516SKenneth E. Jansen } 19059599516SKenneth E. Jansen return retval ; 19159599516SKenneth E. Jansen } 19259599516SKenneth E. Jansen 19359599516SKenneth E. Jansen #ifdef __cplusplus 19459599516SKenneth E. Jansen } 19559599516SKenneth E. Jansen #endif 196