xref: /phasta/phSolver/common/symquadw.c (revision 8746ab438bbda91291f8cdd62b94f8385f2d26f1)
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