159599516SKenneth E. Jansen #include <FCMangle.h> 259599516SKenneth E. Jansen #define symquadw FortranCInterface_GLOBAL_(symquadw,SYMQUADW) 359599516SKenneth E. Jansen 459599516SKenneth E. Jansen typedef double DARR3[3]; 559599516SKenneth E. Jansen 659599516SKenneth E. Jansen int quadwIntPnt(int,DARR3**,double **); 759599516SKenneth E. Jansen 8f34e7d5cSCameron Smith void symquadw(int *n1, double pt[][4], double wt[], int *err) 959599516SKenneth E. Jansen { 10*a6e5c1a2SCameron Smith double *lwt = 0; 11*a6e5c1a2SCameron Smith DARR3 *lpt = 0; 1259599516SKenneth E. Jansen int i,j; 1359599516SKenneth E. Jansen *err = quadwIntPnt(*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 /*$Id$*/ 2259599516SKenneth E. Jansen #include <stdio.h> 2359599516SKenneth E. Jansen 2459599516SKenneth E. Jansen /* Rule 2 constants */ 2559599516SKenneth E. Jansen 2659599516SKenneth E. Jansen #define Qp21 -0.577350269189626 2759599516SKenneth E. Jansen #define Qp22 0.577350269189626 2859599516SKenneth E. Jansen #define Pp21 0.211324865405187 2959599516SKenneth E. Jansen #define Pp22 0.788675134594813 3059599516SKenneth E. Jansen #define Qw2 1.000000000000000 3159599516SKenneth E. Jansen 3259599516SKenneth E. Jansen /* Rule 3 constants */ 3359599516SKenneth E. Jansen 3459599516SKenneth E. Jansen #define Qp31 -0.774596669241483 3559599516SKenneth E. Jansen #define Qp32 0.000000000000000 3659599516SKenneth E. Jansen #define Qp33 0.774596669241483 3759599516SKenneth E. Jansen #define Qw311 0.308641975308642 /* Qw31 * Qw31 note: Qw31=Qw33*/ 3859599516SKenneth E. Jansen #define Qw321 0.493827160493831 /* Qw32 * Qw31 */ 3959599516SKenneth E. Jansen #define Qw322 0.790123456790124 /* Qw32 * Qw32 */ 4059599516SKenneth E. Jansen #define Pp31 0.112701665379259 4159599516SKenneth E. Jansen #define Pp32 0.500000000000000 4259599516SKenneth E. Jansen #define Pp33 0.887298334620741 4359599516SKenneth E. Jansen 4459599516SKenneth E. Jansen /* Rule 4 constants */ 4559599516SKenneth E. Jansen 4659599516SKenneth E. Jansen #define Qp41 -0.861136311594053 4759599516SKenneth E. Jansen #define Qp42 -0.339981043584856 4859599516SKenneth E. Jansen #define Qp43 0.339981043584856 4959599516SKenneth E. Jansen #define Qp44 0.861136311594053 5059599516SKenneth E. Jansen #define Qw41 0.347854845137454 5159599516SKenneth E. Jansen #define Qw42 0.652145154862544 5259599516SKenneth E. Jansen #define Qw43 0.652145154862544 5359599516SKenneth E. Jansen #define Qw44 0.347854845137544 5459599516SKenneth E. Jansen #define Pp41 0.873821971016996 5559599516SKenneth E. Jansen #define Pp42 0.063089014491502 5659599516SKenneth E. Jansen #define Pp43 0.501426509658179 5759599516SKenneth E. Jansen #define Pp44 0.249286745170910 5859599516SKenneth E. Jansen #define Qw4141 0.121002993285602 /* Qw41 * Qw41 */ 5959599516SKenneth E. Jansen #define Qw4142 0.226851851851851 /* Qw41 * Qw42 */ 6059599516SKenneth E. Jansen #define Qw4143 0.226851851851851 /* Qw41 * Qw43 */ 6159599516SKenneth E. Jansen #define Qw4144 0.121002993285602 /* Qw41 * Qw44 */ 6259599516SKenneth E. Jansen #define Qw4241 0.226851851851851 /* etc.. */ 6359599516SKenneth E. Jansen #define Qw4242 0.425293303010692 6459599516SKenneth E. Jansen #define Qw4243 0.425293303010692 6559599516SKenneth E. Jansen #define Qw4244 0.226851851851851 6659599516SKenneth E. Jansen #define Qw4341 0.226851851851851 6759599516SKenneth E. Jansen #define Qw4342 0.425293303010692 6859599516SKenneth E. Jansen #define Qw4343 0.425293303010692 6959599516SKenneth E. Jansen #define Qw4344 0.226851851851851 7059599516SKenneth E. Jansen #define Qw4441 0.121002993285602 7159599516SKenneth E. Jansen #define Qw4442 0.226851851851851 7259599516SKenneth E. Jansen #define Qw4443 0.226851851851851 7359599516SKenneth E. Jansen #define Qw4444 0.121002993285602 7459599516SKenneth E. Jansen 7559599516SKenneth E. Jansen 7659599516SKenneth E. Jansen /* typedef double DARR3[3] ; */ 7759599516SKenneth E. Jansen 7859599516SKenneth E. Jansen /* Rule 2 */ 7959599516SKenneth E. Jansen 8059599516SKenneth E. Jansen static double rstw4[][3] = { 8159599516SKenneth E. Jansen {Pp21, 0.0 , Qp21}, 8259599516SKenneth E. Jansen {Pp22, 0.0 , Qp21}, 8359599516SKenneth E. Jansen {Pp21, 0.0 , Qp22}, 8459599516SKenneth E. Jansen {Pp22, 0.0 , Qp22} 8559599516SKenneth E. Jansen }; 8659599516SKenneth E. Jansen 8759599516SKenneth E. Jansen static double twt4[] = {Qw2,Qw2,Qw2,Qw2}; 8859599516SKenneth E. Jansen 8959599516SKenneth E. Jansen /* Rule 3 */ 9059599516SKenneth E. Jansen 9159599516SKenneth E. Jansen static double rstw9[][3] = { 9259599516SKenneth E. Jansen {Pp31,0.0,Qp31}, 9359599516SKenneth E. Jansen {Pp32,0.0,Qp31}, 9459599516SKenneth E. Jansen {Pp33,0.0,Qp31}, 9559599516SKenneth E. Jansen {Pp31,0.0,Qp32}, 9659599516SKenneth E. Jansen {Pp32,0.0,Qp32}, 9759599516SKenneth E. Jansen {Pp33,0.0,Qp32}, 9859599516SKenneth E. Jansen {Pp31,0.0,Qp33}, 9959599516SKenneth E. Jansen {Pp32,0.0,Qp33}, 10059599516SKenneth E. Jansen {Pp33,0.0,Qp33} 10159599516SKenneth E. Jansen }; 10259599516SKenneth E. Jansen 10359599516SKenneth E. Jansen static double twt9[] = 10459599516SKenneth E. Jansen {Qw311, Qw321, Qw311, Qw321, Qw322, Qw321, Qw311, Qw321, Qw311}; 10559599516SKenneth E. Jansen 10659599516SKenneth E. Jansen /* Rule 4 */ 10759599516SKenneth E. Jansen 10859599516SKenneth E. Jansen static double rstw16[][3] = { 10959599516SKenneth E. Jansen {Pp41,0.0,Qp41}, 11059599516SKenneth E. Jansen {Pp42,0.0,Qp41}, 11159599516SKenneth E. Jansen {Pp43,0.0,Qp41}, 11259599516SKenneth E. Jansen {Pp44,0.0,Qp41}, 11359599516SKenneth E. Jansen {Pp41,0.0,Qp42}, 11459599516SKenneth E. Jansen {Pp42,0.0,Qp42}, 11559599516SKenneth E. Jansen {Pp43,0.0,Qp42}, 11659599516SKenneth E. Jansen {Pp44,0.0,Qp42}, 11759599516SKenneth E. Jansen {Pp41,0.0,Qp43}, 11859599516SKenneth E. Jansen {Pp42,0.0,Qp43}, 11959599516SKenneth E. Jansen {Pp43,0.0,Qp43}, 12059599516SKenneth E. Jansen {Pp44,0.0,Qp43}, 12159599516SKenneth E. Jansen {Pp41,0.0,Qp44}, 12259599516SKenneth E. Jansen {Pp42,0.0,Qp44}, 12359599516SKenneth E. Jansen {Pp43,0.0,Qp44}, 12459599516SKenneth E. Jansen {Pp44,0.0,Qp44} 12559599516SKenneth E. Jansen }; 12659599516SKenneth E. Jansen 12759599516SKenneth E. Jansen static double twt16[] = 12859599516SKenneth E. Jansen {Qw4141, Qw4241, Qw4341, Qw4441, Qw4142, Qw4242, Qw4342, Qw4442, 12959599516SKenneth E. Jansen Qw4143, Qw4243, Qw4343, Qw4443, Qw4144, Qw4244, Qw4344, Qw4444}; 13059599516SKenneth E. Jansen 13159599516SKenneth E. Jansen 13259599516SKenneth E. Jansen #ifdef __cplusplus 13359599516SKenneth E. Jansen extern "C" { 13459599516SKenneth E. Jansen #endif 13559599516SKenneth E. Jansen 13659599516SKenneth E. Jansen int quadwIntPnt(int nint, DARR3 **bcord, double **wt) 13759599516SKenneth E. Jansen { 13859599516SKenneth E. Jansen int retval = 1; 13959599516SKenneth E. Jansen 14059599516SKenneth E. Jansen if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; } 14159599516SKenneth E. Jansen else if( nint == 9 ){*bcord = rstw9 ; *wt = twt9; } 14259599516SKenneth E. Jansen else if( nint == 16){*bcord = rstw16 ; *wt = twt16;} 14359599516SKenneth E. Jansen else 14459599516SKenneth E. Jansen { 14559599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symquadw.c; give {4,9,16}\n",nint); 14659599516SKenneth E. Jansen retval = 0; 14759599516SKenneth E. Jansen } 14859599516SKenneth E. Jansen return retval ; 14959599516SKenneth E. Jansen } 15059599516SKenneth E. Jansen 15159599516SKenneth E. Jansen #ifdef __cplusplus 15259599516SKenneth E. Jansen } 15359599516SKenneth E. Jansen #endif 154