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