xref: /phasta/phSolver/common/symtet.c (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen #include <FCMangle.h>
2*59599516SKenneth E. Jansen #define symtet FortranCInterface_GLOBAL_(symtet, SYMTET)
3*59599516SKenneth E. Jansen 
4*59599516SKenneth E. Jansen typedef double DARR4[4];
5*59599516SKenneth E. Jansen 
6*59599516SKenneth E. Jansen int tetIntPnt(int,DARR4**,double **);
7*59599516SKenneth E. Jansen 
8*59599516SKenneth E. Jansen 
9*59599516SKenneth E. Jansen symtet(int *n1, double pt[][4], double wt[], int *err)
10*59599516SKenneth E. Jansen {
11*59599516SKenneth E. Jansen   double *lwt;
12*59599516SKenneth E. Jansen   DARR4 *lpt;
13*59599516SKenneth E. Jansen   int i,j;
14*59599516SKenneth E. Jansen   *err = tetIntPnt(*n1, &lpt, &lwt);
15*59599516SKenneth E. Jansen   for(i=0; i < *n1; i++) {
16*59599516SKenneth E. Jansen     wt[i] = lwt[i];
17*59599516SKenneth E. Jansen     for(j=0; j <4; j++)
18*59599516SKenneth E. Jansen       pt[i][j]=lpt[i][j];
19*59599516SKenneth E. Jansen   }
20*59599516SKenneth E. Jansen }
21*59599516SKenneth E. Jansen 
22*59599516SKenneth E. Jansen /*$Id$*/
23*59599516SKenneth E. Jansen #include <stdio.h>
24*59599516SKenneth E. Jansen 
25*59599516SKenneth E. Jansen /* constants for 4-point rule */
26*59599516SKenneth E. Jansen #define  a4  0.5854101966249685
27*59599516SKenneth E. Jansen #define  b4  0.1381966011250150
28*59599516SKenneth E. Jansen 
29*59599516SKenneth E. Jansen /* constants for 5-point rule */
30*59599516SKenneth E. Jansen #define  a5  0.5000000000000000
31*59599516SKenneth E. Jansen #define  b5  0.1666666666666667
32*59599516SKenneth E. Jansen 
33*59599516SKenneth E. Jansen /* constants for 16-point rule */
34*59599516SKenneth E. Jansen #define  a16  0.0503737941001228
35*59599516SKenneth E. Jansen #define  b16  0.0665420686332923
36*59599516SKenneth E. Jansen #define  c16  0.7716429020672371
37*59599516SKenneth E. Jansen #define  d16  0.0761190326442543
38*59599516SKenneth E. Jansen #define  e16  0.1197005277978019
39*59599516SKenneth E. Jansen #define  f16  0.0718316452676693
40*59599516SKenneth E. Jansen #define  g16  0.4042339134672644
41*59599516SKenneth E. Jansen 
42*59599516SKenneth E. Jansen /* constants for 17-point rule */
43*59599516SKenneth E. Jansen #define  a17  0.1884185567365411
44*59599516SKenneth E. Jansen #define  b17  0.0670385837260428
45*59599516SKenneth E. Jansen #define  c17  0.0452855923632739
46*59599516SKenneth E. Jansen #define  p17  0.7316369079576180
47*59599516SKenneth E. Jansen #define  q17  0.0894543640141273
48*59599516SKenneth E. Jansen #define  e17  0.1325810999384657
49*59599516SKenneth E. Jansen #define  f17  0.0245400397290300
50*59599516SKenneth E. Jansen #define  g17  0.4214394310662522
51*59599516SKenneth E. Jansen 
52*59599516SKenneth E. Jansen 
53*59599516SKenneth E. Jansen /* constants for 29-point rule */
54*59599516SKenneth E. Jansen #define  a29  0.0904012904601475
55*59599516SKenneth E. Jansen #define  b29  0.0191198342789912
56*59599516SKenneth E. Jansen #define  c29  0.0436149384066657
57*59599516SKenneth E. Jansen #define  d29  0.0258116759619916
58*59599516SKenneth E. Jansen #define  p29  0.8277192480479295
59*59599516SKenneth E. Jansen #define  q29  0.0574269173173568
60*59599516SKenneth E. Jansen #define  e29  0.0513518841255634
61*59599516SKenneth E. Jansen #define  f29  0.4860510285706072
62*59599516SKenneth E. Jansen #define  g29  0.2312985436519147
63*59599516SKenneth E. Jansen #define  h29  0.2967538129690260
64*59599516SKenneth E. Jansen #define  i29  0.6081079894015281
65*59599516SKenneth E. Jansen #define  j29  0.0475690988147229
66*59599516SKenneth E. Jansen 
67*59599516SKenneth E. Jansen #define a25   0.2500000000000000
68*59599516SKenneth E. Jansen #define a26  -0.8000000000000000
69*59599516SKenneth E. Jansen #define a27   0.4500000000000000
70*59599516SKenneth E. Jansen 
71*59599516SKenneth E. Jansen /* typedef double DARR4[4] ; */
72*59599516SKenneth E. Jansen 
73*59599516SKenneth E. Jansen   static double rstw1[][4] = {{a25,a25,a25,a25}};
74*59599516SKenneth E. Jansen   static double twt1[] = {1.000000000000000000000};
75*59599516SKenneth E. Jansen 
76*59599516SKenneth E. Jansen   static double rstw4[][4] = {{a4,b4,b4,b4},{b4,a4,b4,b4},{b4,b4,a4,b4},
77*59599516SKenneth E. Jansen                               {b4,b4,b4,a4}};
78*59599516SKenneth E. Jansen   static double twt4[] = {a25,a25,a25,a25};
79*59599516SKenneth E. Jansen 
80*59599516SKenneth E. Jansen   static double rstw5[][4] = {{a25,a25,a25,a25},
81*59599516SKenneth E. Jansen                              {a5,b5,b5,b5},
82*59599516SKenneth E. Jansen                              {b5,a5,b5,b5},
83*59599516SKenneth E. Jansen                              {b5,b5,a5,b5},
84*59599516SKenneth E. Jansen                              {b5,b5,b5,a5}};
85*59599516SKenneth E. Jansen   static double twt5[] = {a26,a27,a27,a27,a27};
86*59599516SKenneth E. Jansen 
87*59599516SKenneth E. Jansen   static double rstw16[][4] = {{c16,d16,d16,d16},
88*59599516SKenneth E. Jansen                               {d16,c16,d16,d16},
89*59599516SKenneth E. Jansen                               {d16,d16,c16,d16},
90*59599516SKenneth E. Jansen                               {d16,d16,d16,c16},
91*59599516SKenneth E. Jansen 
92*59599516SKenneth E. Jansen                               {e16,f16,g16,g16},
93*59599516SKenneth E. Jansen                               {f16,e16,g16,g16},
94*59599516SKenneth E. Jansen                               {e16,g16,g16,f16},
95*59599516SKenneth E. Jansen                               {f16,g16,g16,e16},
96*59599516SKenneth E. Jansen                               {g16,g16,e16,f16},
97*59599516SKenneth E. Jansen                               {g16,g16,f16,e16},
98*59599516SKenneth E. Jansen                               {g16,e16,f16,g16},
99*59599516SKenneth E. Jansen                               {g16,f16,e16,g16},
100*59599516SKenneth E. Jansen                               {e16,g16,f16,g16},
101*59599516SKenneth E. Jansen                               {f16,g16,e16,g16},
102*59599516SKenneth E. Jansen                               {g16,e16,g16,f16},
103*59599516SKenneth E. Jansen                               {g16,f16,g16,e16} };
104*59599516SKenneth E. Jansen   static double twt16[] = {a16,a16,a16,a16,
105*59599516SKenneth E. Jansen                           b16,b16,b16,b16,
106*59599516SKenneth E. Jansen                           b16,b16,b16,b16,
107*59599516SKenneth E. Jansen                           b16,b16,b16,b16 };
108*59599516SKenneth E. Jansen 
109*59599516SKenneth E. Jansen   static double rstw17[][4] = {{a25,a25,a25,a25},
110*59599516SKenneth E. Jansen                               {p17,q17,q17,q17},
111*59599516SKenneth E. Jansen                               {q17,p17,q17,q17},
112*59599516SKenneth E. Jansen                               {q17,q17,p17,q17},
113*59599516SKenneth E. Jansen                               {q17,q17,q17,p17},
114*59599516SKenneth E. Jansen 
115*59599516SKenneth E. Jansen                               {e17,f17,g17,g17},
116*59599516SKenneth E. Jansen                               {f17,e17,g17,g17},
117*59599516SKenneth E. Jansen                               {e17,g17,g17,f17},
118*59599516SKenneth E. Jansen                               {f17,g17,g17,e17},
119*59599516SKenneth E. Jansen                               {g17,g17,e17,f17},
120*59599516SKenneth E. Jansen                               {g17,g17,f17,e17},
121*59599516SKenneth E. Jansen                               {g17,e17,f17,g17},
122*59599516SKenneth E. Jansen                               {g17,f17,e17,g17},
123*59599516SKenneth E. Jansen                               {e17,g17,f17,g17},
124*59599516SKenneth E. Jansen                               {f17,g17,e17,g17},
125*59599516SKenneth E. Jansen                               {g17,e17,g17,f17},
126*59599516SKenneth E. Jansen                               {g17,f17,g17,e17} };
127*59599516SKenneth E. Jansen 
128*59599516SKenneth E. Jansen   static double twt17[] = {a17,b17,b17,b17,b17,
129*59599516SKenneth E. Jansen                           c17,c17,c17,c17,c17,c17,
130*59599516SKenneth E. Jansen                           c17,c17,c17,c17,c17,c17};
131*59599516SKenneth E. Jansen 
132*59599516SKenneth E. Jansen   static double twt29[] = {a29,b29,b29,b29,b29,
133*59599516SKenneth E. Jansen                           c29,c29,c29,c29,c29,c29,
134*59599516SKenneth E. Jansen                           c29,c29,c29,c29,c29,c29,
135*59599516SKenneth E. Jansen                           d29,d29,d29,d29,d29,d29,
136*59599516SKenneth E. Jansen                           d29,d29,d29,d29,d29,d29};
137*59599516SKenneth E. Jansen 
138*59599516SKenneth E. Jansen   static double rstw29[][4] = {{a25,a25,a25,a25},
139*59599516SKenneth E. Jansen 
140*59599516SKenneth E. Jansen                               {p29,q29,q29,q29},
141*59599516SKenneth E. Jansen                               {q29,p29,q29,q29},
142*59599516SKenneth E. Jansen                               {q29,q29,p29,q29},
143*59599516SKenneth E. Jansen                               {q29,q29,q29,p29},
144*59599516SKenneth E. Jansen 
145*59599516SKenneth E. Jansen                               {e29,f29,g29,g29},
146*59599516SKenneth E. Jansen                               {f29,e29,g29,g29},
147*59599516SKenneth E. Jansen                               {e29,g29,g29,f29},
148*59599516SKenneth E. Jansen                               {f29,g29,g29,e29},
149*59599516SKenneth E. Jansen                               {g29,g29,e29,f29},
150*59599516SKenneth E. Jansen                               {g29,g29,f29,e29},
151*59599516SKenneth E. Jansen                               {g29,e29,f29,g29},
152*59599516SKenneth E. Jansen                               {g29,f29,e29,g29},
153*59599516SKenneth E. Jansen                               {e29,g29,f29,g29},
154*59599516SKenneth E. Jansen                               {f29,g29,e29,g29},
155*59599516SKenneth E. Jansen                               {g29,e29,g29,f29},
156*59599516SKenneth E. Jansen                               {g29,f29,g29,e29},
157*59599516SKenneth E. Jansen 
158*59599516SKenneth E. Jansen                               {h29,i29,j29,j29},
159*59599516SKenneth E. Jansen                               {i29,h29,j29,j29},
160*59599516SKenneth E. Jansen                               {h29,j29,j29,i29},
161*59599516SKenneth E. Jansen                               {i29,j29,j29,h29},
162*59599516SKenneth E. Jansen                               {j29,j29,h29,i29},
163*59599516SKenneth E. Jansen                               {j29,j29,i29,h29},
164*59599516SKenneth E. Jansen                               {j29,h29,i29,j29},
165*59599516SKenneth E. Jansen                               {j29,i29,h29,j29},
166*59599516SKenneth E. Jansen                               {h29,j29,i29,j29},
167*59599516SKenneth E. Jansen                               {i29,j29,h29,j29},
168*59599516SKenneth E. Jansen                               {j29,h29,j29,i29},
169*59599516SKenneth E. Jansen                               {j29,i29,j29,h29} };
170*59599516SKenneth E. Jansen 
171*59599516SKenneth E. Jansen #ifdef __cplusplus
172*59599516SKenneth E. Jansen extern "C" {
173*59599516SKenneth E. Jansen #endif
174*59599516SKenneth E. Jansen 
175*59599516SKenneth E. Jansen int tetIntPnt(int nint, DARR4 **bcord, double **wt)
176*59599516SKenneth E. Jansen {
177*59599516SKenneth E. Jansen   int retval = 1;
178*59599516SKenneth E. Jansen 
179*59599516SKenneth E. Jansen   if( nint == 1 ) {*bcord = rstw1 ; *wt = twt1; }
180*59599516SKenneth E. Jansen   else if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; }
181*59599516SKenneth E. Jansen   else if( nint == 5 ){*bcord = rstw5 ; *wt = twt5; }
182*59599516SKenneth E. Jansen   else if( nint == 16 ){*bcord = rstw16 ; *wt = twt16; }
183*59599516SKenneth E. Jansen   else if( nint == 17 ){*bcord = rstw17 ; *wt = twt17; }
184*59599516SKenneth E. Jansen   else if( nint == 29 ){*bcord = rstw29 ; *wt = twt29; }
185*59599516SKenneth E. Jansen   else
186*59599516SKenneth E. Jansen   {
187*59599516SKenneth E. Jansen     fprintf(stderr,"\n%d integration points unsupported in symtet.c; give {1,4,5,16,17,29}\n",nint);
188*59599516SKenneth E. Jansen     retval = 0;
189*59599516SKenneth E. Jansen   }
190*59599516SKenneth E. Jansen   return retval ;
191*59599516SKenneth E. Jansen }
192*59599516SKenneth E. Jansen 
193*59599516SKenneth E. Jansen #ifdef __cplusplus
194*59599516SKenneth E. Jansen }
195*59599516SKenneth E. Jansen #endif
196