1*59599516SKenneth E. Jansen #include <FCMangle.h> 2*59599516SKenneth E. Jansen #define symquadw FortranCInterface_GLOBAL_(symquadw,SYMQUADW) 3*59599516SKenneth E. Jansen 4*59599516SKenneth E. Jansen typedef double DARR3[3]; 5*59599516SKenneth E. Jansen 6*59599516SKenneth E. Jansen int quadwIntPnt(int,DARR3**,double **); 7*59599516SKenneth E. Jansen 8*59599516SKenneth E. Jansen symquadw(int *n1, double pt[][4], double wt[], int *err) 9*59599516SKenneth E. Jansen { 10*59599516SKenneth E. Jansen double *lwt; 11*59599516SKenneth E. Jansen DARR3 *lpt; 12*59599516SKenneth E. Jansen int i,j; 13*59599516SKenneth E. Jansen *err = quadwIntPnt(*n1, &lpt, &lwt); 14*59599516SKenneth E. Jansen for(i=0; i < *n1; i++) { 15*59599516SKenneth E. Jansen wt[i] = lwt[i]; 16*59599516SKenneth E. Jansen for(j=0; j < 3; j++) 17*59599516SKenneth E. Jansen pt[i][j]=lpt[i][j]; 18*59599516SKenneth E. Jansen } 19*59599516SKenneth E. Jansen } 20*59599516SKenneth E. Jansen 21*59599516SKenneth E. Jansen /*$Id$*/ 22*59599516SKenneth E. Jansen #include <stdio.h> 23*59599516SKenneth E. Jansen 24*59599516SKenneth E. Jansen /* Rule 2 constants */ 25*59599516SKenneth E. Jansen 26*59599516SKenneth E. Jansen #define Qp21 -0.577350269189626 27*59599516SKenneth E. Jansen #define Qp22 0.577350269189626 28*59599516SKenneth E. Jansen #define Pp21 0.211324865405187 29*59599516SKenneth E. Jansen #define Pp22 0.788675134594813 30*59599516SKenneth E. Jansen #define Qw2 1.000000000000000 31*59599516SKenneth E. Jansen 32*59599516SKenneth E. Jansen /* Rule 3 constants */ 33*59599516SKenneth E. Jansen 34*59599516SKenneth E. Jansen #define Qp31 -0.774596669241483 35*59599516SKenneth E. Jansen #define Qp32 0.000000000000000 36*59599516SKenneth E. Jansen #define Qp33 0.774596669241483 37*59599516SKenneth E. Jansen #define Qw311 0.308641975308642 /* Qw31 * Qw31 note: Qw31=Qw33*/ 38*59599516SKenneth E. Jansen #define Qw321 0.493827160493831 /* Qw32 * Qw31 */ 39*59599516SKenneth E. Jansen #define Qw322 0.790123456790124 /* Qw32 * Qw32 */ 40*59599516SKenneth E. Jansen #define Pp31 0.112701665379259 41*59599516SKenneth E. Jansen #define Pp32 0.500000000000000 42*59599516SKenneth E. Jansen #define Pp33 0.887298334620741 43*59599516SKenneth E. Jansen 44*59599516SKenneth E. Jansen /* Rule 4 constants */ 45*59599516SKenneth E. Jansen 46*59599516SKenneth E. Jansen #define Qp41 -0.861136311594053 47*59599516SKenneth E. Jansen #define Qp42 -0.339981043584856 48*59599516SKenneth E. Jansen #define Qp43 0.339981043584856 49*59599516SKenneth E. Jansen #define Qp44 0.861136311594053 50*59599516SKenneth E. Jansen #define Qw41 0.347854845137454 51*59599516SKenneth E. Jansen #define Qw42 0.652145154862544 52*59599516SKenneth E. Jansen #define Qw43 0.652145154862544 53*59599516SKenneth E. Jansen #define Qw44 0.347854845137544 54*59599516SKenneth E. Jansen #define Pp41 0.873821971016996 55*59599516SKenneth E. Jansen #define Pp42 0.063089014491502 56*59599516SKenneth E. Jansen #define Pp43 0.501426509658179 57*59599516SKenneth E. Jansen #define Pp44 0.249286745170910 58*59599516SKenneth E. Jansen #define Qw4141 0.121002993285602 /* Qw41 * Qw41 */ 59*59599516SKenneth E. Jansen #define Qw4142 0.226851851851851 /* Qw41 * Qw42 */ 60*59599516SKenneth E. Jansen #define Qw4143 0.226851851851851 /* Qw41 * Qw43 */ 61*59599516SKenneth E. Jansen #define Qw4144 0.121002993285602 /* Qw41 * Qw44 */ 62*59599516SKenneth E. Jansen #define Qw4241 0.226851851851851 /* etc.. */ 63*59599516SKenneth E. Jansen #define Qw4242 0.425293303010692 64*59599516SKenneth E. Jansen #define Qw4243 0.425293303010692 65*59599516SKenneth E. Jansen #define Qw4244 0.226851851851851 66*59599516SKenneth E. Jansen #define Qw4341 0.226851851851851 67*59599516SKenneth E. Jansen #define Qw4342 0.425293303010692 68*59599516SKenneth E. Jansen #define Qw4343 0.425293303010692 69*59599516SKenneth E. Jansen #define Qw4344 0.226851851851851 70*59599516SKenneth E. Jansen #define Qw4441 0.121002993285602 71*59599516SKenneth E. Jansen #define Qw4442 0.226851851851851 72*59599516SKenneth E. Jansen #define Qw4443 0.226851851851851 73*59599516SKenneth E. Jansen #define Qw4444 0.121002993285602 74*59599516SKenneth E. Jansen 75*59599516SKenneth E. Jansen 76*59599516SKenneth E. Jansen /* typedef double DARR3[3] ; */ 77*59599516SKenneth E. Jansen 78*59599516SKenneth E. Jansen /* Rule 2 */ 79*59599516SKenneth E. Jansen 80*59599516SKenneth E. Jansen static double rstw4[][3] = { 81*59599516SKenneth E. Jansen {Pp21, 0.0 , Qp21}, 82*59599516SKenneth E. Jansen {Pp22, 0.0 , Qp21}, 83*59599516SKenneth E. Jansen {Pp21, 0.0 , Qp22}, 84*59599516SKenneth E. Jansen {Pp22, 0.0 , Qp22} 85*59599516SKenneth E. Jansen }; 86*59599516SKenneth E. Jansen 87*59599516SKenneth E. Jansen static double twt4[] = {Qw2,Qw2,Qw2,Qw2}; 88*59599516SKenneth E. Jansen 89*59599516SKenneth E. Jansen /* Rule 3 */ 90*59599516SKenneth E. Jansen 91*59599516SKenneth E. Jansen static double rstw9[][3] = { 92*59599516SKenneth E. Jansen {Pp31,0.0,Qp31}, 93*59599516SKenneth E. Jansen {Pp32,0.0,Qp31}, 94*59599516SKenneth E. Jansen {Pp33,0.0,Qp31}, 95*59599516SKenneth E. Jansen {Pp31,0.0,Qp32}, 96*59599516SKenneth E. Jansen {Pp32,0.0,Qp32}, 97*59599516SKenneth E. Jansen {Pp33,0.0,Qp32}, 98*59599516SKenneth E. Jansen {Pp31,0.0,Qp33}, 99*59599516SKenneth E. Jansen {Pp32,0.0,Qp33}, 100*59599516SKenneth E. Jansen {Pp33,0.0,Qp33} 101*59599516SKenneth E. Jansen }; 102*59599516SKenneth E. Jansen 103*59599516SKenneth E. Jansen static double twt9[] = 104*59599516SKenneth E. Jansen {Qw311, Qw321, Qw311, Qw321, Qw322, Qw321, Qw311, Qw321, Qw311}; 105*59599516SKenneth E. Jansen 106*59599516SKenneth E. Jansen /* Rule 4 */ 107*59599516SKenneth E. Jansen 108*59599516SKenneth E. Jansen static double rstw16[][3] = { 109*59599516SKenneth E. Jansen {Pp41,0.0,Qp41}, 110*59599516SKenneth E. Jansen {Pp42,0.0,Qp41}, 111*59599516SKenneth E. Jansen {Pp43,0.0,Qp41}, 112*59599516SKenneth E. Jansen {Pp44,0.0,Qp41}, 113*59599516SKenneth E. Jansen {Pp41,0.0,Qp42}, 114*59599516SKenneth E. Jansen {Pp42,0.0,Qp42}, 115*59599516SKenneth E. Jansen {Pp43,0.0,Qp42}, 116*59599516SKenneth E. Jansen {Pp44,0.0,Qp42}, 117*59599516SKenneth E. Jansen {Pp41,0.0,Qp43}, 118*59599516SKenneth E. Jansen {Pp42,0.0,Qp43}, 119*59599516SKenneth E. Jansen {Pp43,0.0,Qp43}, 120*59599516SKenneth E. Jansen {Pp44,0.0,Qp43}, 121*59599516SKenneth E. Jansen {Pp41,0.0,Qp44}, 122*59599516SKenneth E. Jansen {Pp42,0.0,Qp44}, 123*59599516SKenneth E. Jansen {Pp43,0.0,Qp44}, 124*59599516SKenneth E. Jansen {Pp44,0.0,Qp44} 125*59599516SKenneth E. Jansen }; 126*59599516SKenneth E. Jansen 127*59599516SKenneth E. Jansen static double twt16[] = 128*59599516SKenneth E. Jansen {Qw4141, Qw4241, Qw4341, Qw4441, Qw4142, Qw4242, Qw4342, Qw4442, 129*59599516SKenneth E. Jansen Qw4143, Qw4243, Qw4343, Qw4443, Qw4144, Qw4244, Qw4344, Qw4444}; 130*59599516SKenneth E. Jansen 131*59599516SKenneth E. Jansen 132*59599516SKenneth E. Jansen #ifdef __cplusplus 133*59599516SKenneth E. Jansen extern "C" { 134*59599516SKenneth E. Jansen #endif 135*59599516SKenneth E. Jansen 136*59599516SKenneth E. Jansen int quadwIntPnt(int nint, DARR3 **bcord, double **wt) 137*59599516SKenneth E. Jansen { 138*59599516SKenneth E. Jansen int retval = 1; 139*59599516SKenneth E. Jansen 140*59599516SKenneth E. Jansen if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; } 141*59599516SKenneth E. Jansen else if( nint == 9 ){*bcord = rstw9 ; *wt = twt9; } 142*59599516SKenneth E. Jansen else if( nint == 16){*bcord = rstw16 ; *wt = twt16;} 143*59599516SKenneth E. Jansen else 144*59599516SKenneth E. Jansen { 145*59599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symquadw.c; give {4,9,16}\n",nint); 146*59599516SKenneth E. Jansen retval = 0; 147*59599516SKenneth E. Jansen } 148*59599516SKenneth E. Jansen return retval ; 149*59599516SKenneth E. Jansen } 150*59599516SKenneth E. Jansen 151*59599516SKenneth E. Jansen #ifdef __cplusplus 152*59599516SKenneth E. Jansen } 153*59599516SKenneth E. Jansen #endif 154