1*59599516SKenneth E. Jansen #include <FCMangle.h> 2*59599516SKenneth E. Jansen #define symtet FortranCInterface_GLOBAL_(symtet, SYMTET) 3*59599516SKenneth E. Jansen 4*59599516SKenneth E. Jansen typedef double DARR4[4]; 5*59599516SKenneth E. Jansen 6*59599516SKenneth E. Jansen int tetIntPnt(int,DARR4**,double **); 7*59599516SKenneth E. Jansen 8*59599516SKenneth E. Jansen 9*59599516SKenneth E. Jansen symtet(int *n1, double pt[][4], double wt[], int *err) 10*59599516SKenneth E. Jansen { 11*59599516SKenneth E. Jansen double *lwt; 12*59599516SKenneth E. Jansen DARR4 *lpt; 13*59599516SKenneth E. Jansen int i,j; 14*59599516SKenneth E. Jansen *err = tetIntPnt(*n1, &lpt, &lwt); 15*59599516SKenneth E. Jansen for(i=0; i < *n1; i++) { 16*59599516SKenneth E. Jansen wt[i] = lwt[i]; 17*59599516SKenneth E. Jansen for(j=0; j <4; j++) 18*59599516SKenneth E. Jansen pt[i][j]=lpt[i][j]; 19*59599516SKenneth E. Jansen } 20*59599516SKenneth E. Jansen } 21*59599516SKenneth E. Jansen 22*59599516SKenneth E. Jansen /*$Id$*/ 23*59599516SKenneth E. Jansen #include <stdio.h> 24*59599516SKenneth E. Jansen 25*59599516SKenneth E. Jansen /* constants for 4-point rule */ 26*59599516SKenneth E. Jansen #define a4 0.5854101966249685 27*59599516SKenneth E. Jansen #define b4 0.1381966011250150 28*59599516SKenneth E. Jansen 29*59599516SKenneth E. Jansen /* constants for 5-point rule */ 30*59599516SKenneth E. Jansen #define a5 0.5000000000000000 31*59599516SKenneth E. Jansen #define b5 0.1666666666666667 32*59599516SKenneth E. Jansen 33*59599516SKenneth E. Jansen /* constants for 16-point rule */ 34*59599516SKenneth E. Jansen #define a16 0.0503737941001228 35*59599516SKenneth E. Jansen #define b16 0.0665420686332923 36*59599516SKenneth E. Jansen #define c16 0.7716429020672371 37*59599516SKenneth E. Jansen #define d16 0.0761190326442543 38*59599516SKenneth E. Jansen #define e16 0.1197005277978019 39*59599516SKenneth E. Jansen #define f16 0.0718316452676693 40*59599516SKenneth E. Jansen #define g16 0.4042339134672644 41*59599516SKenneth E. Jansen 42*59599516SKenneth E. Jansen /* constants for 17-point rule */ 43*59599516SKenneth E. Jansen #define a17 0.1884185567365411 44*59599516SKenneth E. Jansen #define b17 0.0670385837260428 45*59599516SKenneth E. Jansen #define c17 0.0452855923632739 46*59599516SKenneth E. Jansen #define p17 0.7316369079576180 47*59599516SKenneth E. Jansen #define q17 0.0894543640141273 48*59599516SKenneth E. Jansen #define e17 0.1325810999384657 49*59599516SKenneth E. Jansen #define f17 0.0245400397290300 50*59599516SKenneth E. Jansen #define g17 0.4214394310662522 51*59599516SKenneth E. Jansen 52*59599516SKenneth E. Jansen 53*59599516SKenneth E. Jansen /* constants for 29-point rule */ 54*59599516SKenneth E. Jansen #define a29 0.0904012904601475 55*59599516SKenneth E. Jansen #define b29 0.0191198342789912 56*59599516SKenneth E. Jansen #define c29 0.0436149384066657 57*59599516SKenneth E. Jansen #define d29 0.0258116759619916 58*59599516SKenneth E. Jansen #define p29 0.8277192480479295 59*59599516SKenneth E. Jansen #define q29 0.0574269173173568 60*59599516SKenneth E. Jansen #define e29 0.0513518841255634 61*59599516SKenneth E. Jansen #define f29 0.4860510285706072 62*59599516SKenneth E. Jansen #define g29 0.2312985436519147 63*59599516SKenneth E. Jansen #define h29 0.2967538129690260 64*59599516SKenneth E. Jansen #define i29 0.6081079894015281 65*59599516SKenneth E. Jansen #define j29 0.0475690988147229 66*59599516SKenneth E. Jansen 67*59599516SKenneth E. Jansen #define a25 0.2500000000000000 68*59599516SKenneth E. Jansen #define a26 -0.8000000000000000 69*59599516SKenneth E. Jansen #define a27 0.4500000000000000 70*59599516SKenneth E. Jansen 71*59599516SKenneth E. Jansen /* typedef double DARR4[4] ; */ 72*59599516SKenneth E. Jansen 73*59599516SKenneth E. Jansen static double rstw1[][4] = {{a25,a25,a25,a25}}; 74*59599516SKenneth E. Jansen static double twt1[] = {1.000000000000000000000}; 75*59599516SKenneth E. Jansen 76*59599516SKenneth E. Jansen static double rstw4[][4] = {{a4,b4,b4,b4},{b4,a4,b4,b4},{b4,b4,a4,b4}, 77*59599516SKenneth E. Jansen {b4,b4,b4,a4}}; 78*59599516SKenneth E. Jansen static double twt4[] = {a25,a25,a25,a25}; 79*59599516SKenneth E. Jansen 80*59599516SKenneth E. Jansen static double rstw5[][4] = {{a25,a25,a25,a25}, 81*59599516SKenneth E. Jansen {a5,b5,b5,b5}, 82*59599516SKenneth E. Jansen {b5,a5,b5,b5}, 83*59599516SKenneth E. Jansen {b5,b5,a5,b5}, 84*59599516SKenneth E. Jansen {b5,b5,b5,a5}}; 85*59599516SKenneth E. Jansen static double twt5[] = {a26,a27,a27,a27,a27}; 86*59599516SKenneth E. Jansen 87*59599516SKenneth E. Jansen static double rstw16[][4] = {{c16,d16,d16,d16}, 88*59599516SKenneth E. Jansen {d16,c16,d16,d16}, 89*59599516SKenneth E. Jansen {d16,d16,c16,d16}, 90*59599516SKenneth E. Jansen {d16,d16,d16,c16}, 91*59599516SKenneth E. Jansen 92*59599516SKenneth E. Jansen {e16,f16,g16,g16}, 93*59599516SKenneth E. Jansen {f16,e16,g16,g16}, 94*59599516SKenneth E. Jansen {e16,g16,g16,f16}, 95*59599516SKenneth E. Jansen {f16,g16,g16,e16}, 96*59599516SKenneth E. Jansen {g16,g16,e16,f16}, 97*59599516SKenneth E. Jansen {g16,g16,f16,e16}, 98*59599516SKenneth E. Jansen {g16,e16,f16,g16}, 99*59599516SKenneth E. Jansen {g16,f16,e16,g16}, 100*59599516SKenneth E. Jansen {e16,g16,f16,g16}, 101*59599516SKenneth E. Jansen {f16,g16,e16,g16}, 102*59599516SKenneth E. Jansen {g16,e16,g16,f16}, 103*59599516SKenneth E. Jansen {g16,f16,g16,e16} }; 104*59599516SKenneth E. Jansen static double twt16[] = {a16,a16,a16,a16, 105*59599516SKenneth E. Jansen b16,b16,b16,b16, 106*59599516SKenneth E. Jansen b16,b16,b16,b16, 107*59599516SKenneth E. Jansen b16,b16,b16,b16 }; 108*59599516SKenneth E. Jansen 109*59599516SKenneth E. Jansen static double rstw17[][4] = {{a25,a25,a25,a25}, 110*59599516SKenneth E. Jansen {p17,q17,q17,q17}, 111*59599516SKenneth E. Jansen {q17,p17,q17,q17}, 112*59599516SKenneth E. Jansen {q17,q17,p17,q17}, 113*59599516SKenneth E. Jansen {q17,q17,q17,p17}, 114*59599516SKenneth E. Jansen 115*59599516SKenneth E. Jansen {e17,f17,g17,g17}, 116*59599516SKenneth E. Jansen {f17,e17,g17,g17}, 117*59599516SKenneth E. Jansen {e17,g17,g17,f17}, 118*59599516SKenneth E. Jansen {f17,g17,g17,e17}, 119*59599516SKenneth E. Jansen {g17,g17,e17,f17}, 120*59599516SKenneth E. Jansen {g17,g17,f17,e17}, 121*59599516SKenneth E. Jansen {g17,e17,f17,g17}, 122*59599516SKenneth E. Jansen {g17,f17,e17,g17}, 123*59599516SKenneth E. Jansen {e17,g17,f17,g17}, 124*59599516SKenneth E. Jansen {f17,g17,e17,g17}, 125*59599516SKenneth E. Jansen {g17,e17,g17,f17}, 126*59599516SKenneth E. Jansen {g17,f17,g17,e17} }; 127*59599516SKenneth E. Jansen 128*59599516SKenneth E. Jansen static double twt17[] = {a17,b17,b17,b17,b17, 129*59599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17, 130*59599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17}; 131*59599516SKenneth E. Jansen 132*59599516SKenneth E. Jansen static double twt29[] = {a29,b29,b29,b29,b29, 133*59599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29, 134*59599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29, 135*59599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29, 136*59599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29}; 137*59599516SKenneth E. Jansen 138*59599516SKenneth E. Jansen static double rstw29[][4] = {{a25,a25,a25,a25}, 139*59599516SKenneth E. Jansen 140*59599516SKenneth E. Jansen {p29,q29,q29,q29}, 141*59599516SKenneth E. Jansen {q29,p29,q29,q29}, 142*59599516SKenneth E. Jansen {q29,q29,p29,q29}, 143*59599516SKenneth E. Jansen {q29,q29,q29,p29}, 144*59599516SKenneth E. Jansen 145*59599516SKenneth E. Jansen {e29,f29,g29,g29}, 146*59599516SKenneth E. Jansen {f29,e29,g29,g29}, 147*59599516SKenneth E. Jansen {e29,g29,g29,f29}, 148*59599516SKenneth E. Jansen {f29,g29,g29,e29}, 149*59599516SKenneth E. Jansen {g29,g29,e29,f29}, 150*59599516SKenneth E. Jansen {g29,g29,f29,e29}, 151*59599516SKenneth E. Jansen {g29,e29,f29,g29}, 152*59599516SKenneth E. Jansen {g29,f29,e29,g29}, 153*59599516SKenneth E. Jansen {e29,g29,f29,g29}, 154*59599516SKenneth E. Jansen {f29,g29,e29,g29}, 155*59599516SKenneth E. Jansen {g29,e29,g29,f29}, 156*59599516SKenneth E. Jansen {g29,f29,g29,e29}, 157*59599516SKenneth E. Jansen 158*59599516SKenneth E. Jansen {h29,i29,j29,j29}, 159*59599516SKenneth E. Jansen {i29,h29,j29,j29}, 160*59599516SKenneth E. Jansen {h29,j29,j29,i29}, 161*59599516SKenneth E. Jansen {i29,j29,j29,h29}, 162*59599516SKenneth E. Jansen {j29,j29,h29,i29}, 163*59599516SKenneth E. Jansen {j29,j29,i29,h29}, 164*59599516SKenneth E. Jansen {j29,h29,i29,j29}, 165*59599516SKenneth E. Jansen {j29,i29,h29,j29}, 166*59599516SKenneth E. Jansen {h29,j29,i29,j29}, 167*59599516SKenneth E. Jansen {i29,j29,h29,j29}, 168*59599516SKenneth E. Jansen {j29,h29,j29,i29}, 169*59599516SKenneth E. Jansen {j29,i29,j29,h29} }; 170*59599516SKenneth E. Jansen 171*59599516SKenneth E. Jansen #ifdef __cplusplus 172*59599516SKenneth E. Jansen extern "C" { 173*59599516SKenneth E. Jansen #endif 174*59599516SKenneth E. Jansen 175*59599516SKenneth E. Jansen int tetIntPnt(int nint, DARR4 **bcord, double **wt) 176*59599516SKenneth E. Jansen { 177*59599516SKenneth E. Jansen int retval = 1; 178*59599516SKenneth E. Jansen 179*59599516SKenneth E. Jansen if( nint == 1 ) {*bcord = rstw1 ; *wt = twt1; } 180*59599516SKenneth E. Jansen else if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; } 181*59599516SKenneth E. Jansen else if( nint == 5 ){*bcord = rstw5 ; *wt = twt5; } 182*59599516SKenneth E. Jansen else if( nint == 16 ){*bcord = rstw16 ; *wt = twt16; } 183*59599516SKenneth E. Jansen else if( nint == 17 ){*bcord = rstw17 ; *wt = twt17; } 184*59599516SKenneth E. Jansen else if( nint == 29 ){*bcord = rstw29 ; *wt = twt29; } 185*59599516SKenneth E. Jansen else 186*59599516SKenneth E. Jansen { 187*59599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symtet.c; give {1,4,5,16,17,29}\n",nint); 188*59599516SKenneth E. Jansen retval = 0; 189*59599516SKenneth E. Jansen } 190*59599516SKenneth E. Jansen return retval ; 191*59599516SKenneth E. Jansen } 192*59599516SKenneth E. Jansen 193*59599516SKenneth E. Jansen #ifdef __cplusplus 194*59599516SKenneth E. Jansen } 195*59599516SKenneth E. Jansen #endif 196