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
symquadw(int * n1,double pt[][4],double wt[],int * err)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
quadwIntPnt(int nint,DARR3 ** bcord,double ** wt)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