xref: /phasta/phSolver/common/symtripyr.c (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen #include <FCMangle.h>
2*59599516SKenneth E. Jansen #define symtripyr FortranCInterface_GLOBAL_(symtripyr, SYMTRIPYR)
3*59599516SKenneth E. Jansen 
4*59599516SKenneth E. Jansen typedef double DARR3[3];
5*59599516SKenneth E. Jansen 
6*59599516SKenneth E. Jansen int triIntPntPyr(int, DARR3**,double**);
7*59599516SKenneth E. Jansen 
8*59599516SKenneth E. Jansen symtripyr(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 = triIntPntPyr(*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 #include <stdio.h>
22*59599516SKenneth E. Jansen /* 1pt constants */
23*59599516SKenneth E. Jansen #define zero 0.0000000000000000
24*59599516SKenneth E. Jansen #define ppt500 0.5000000000000000
25*59599516SKenneth E. Jansen #define p2pt00 2.0000000000000000
26*59599516SKenneth E. Jansen 
27*59599516SKenneth E. Jansen /* 4pt constants */
28*59599516SKenneth E. Jansen #define ppt455 0.4553418012614798
29*59599516SKenneth E. Jansen #define ppt788 0.7886751345948130
30*59599516SKenneth E. Jansen #define ppt577 0.5773502691896260
31*59599516SKenneth E. Jansen #define ppt122 0.1220084679281462
32*59599516SKenneth E. Jansen #define ppt211 0.2113248654051870
33*59599516SKenneth E. Jansen 
34*59599516SKenneth E. Jansen /* Rule 3 */
35*59599516SKenneth E. Jansen #define mpt68 -0.6872983346207413
36*59599516SKenneth E. Jansen #define pt68   0.6872983346207413
37*59599516SKenneth E. Jansen #define mpt77 -0.7745966692414831
38*59599516SKenneth E. Jansen #define pt77   0.7745966692414831
39*59599516SKenneth E. Jansen #define mpt38 -0.3872983346207416
40*59599516SKenneth E. Jansen #define pt38   0.3872983346207416
41*59599516SKenneth E. Jansen #define mpt08 -0.08729833462074179
42*59599516SKenneth E. Jansen #define pt08   0.08729833462074179
43*59599516SKenneth E. Jansen #define mpt5  -0.5000000000000000
44*59599516SKenneth E. Jansen 
45*59599516SKenneth E. Jansen #define mpt11 -0.1127016653792584
46*59599516SKenneth E. Jansen #define mpt88 -0.8872983346207415
47*59599516SKenneth E. Jansen 
48*59599516SKenneth E. Jansen #define Qw311  0.308641975308642
49*59599516SKenneth E. Jansen #define Qw321  0.493827160493831
50*59599516SKenneth E. Jansen #define Qw322  0.790123456790124
51*59599516SKenneth E. Jansen #define Qw312  0.493827160493831
52*59599516SKenneth E. Jansen #define Qw313  0.308641975308642
53*59599516SKenneth E. Jansen #define Qw323  0.493827160493831
54*59599516SKenneth E. Jansen #define Qw331  0.308641975308642
55*59599516SKenneth E. Jansen #define Qw332  0.493827160493831
56*59599516SKenneth E. Jansen #define Qw333  0.308641975308642
57*59599516SKenneth E. Jansen 
58*59599516SKenneth E. Jansen /*  #define J 0.108103018168070 */
59*59599516SKenneth E. Jansen /*  #define K 0.445948490915965 */
60*59599516SKenneth E. Jansen 
61*59599516SKenneth E. Jansen /*  #define L 0.225000000000000 */
62*59599516SKenneth E. Jansen /*  #define M 0.125939180544827 */
63*59599516SKenneth E. Jansen /*  #define N 0.132394152788506 */
64*59599516SKenneth E. Jansen 
65*59599516SKenneth E. Jansen /*  #define O 0.797426985353087 */
66*59599516SKenneth E. Jansen /*  #define P 0.101286507323456 */
67*59599516SKenneth E. Jansen /*  #define Q 0.470142064105115 */
68*59599516SKenneth E. Jansen /*  #define R 0.059715871789770 */
69*59599516SKenneth E. Jansen 
70*59599516SKenneth E. Jansen /*  #define S 0.050844906370207 */
71*59599516SKenneth E. Jansen /*  #define T 0.116786275726379 */
72*59599516SKenneth E. Jansen /*  #define U 0.082851075618374 */
73*59599516SKenneth E. Jansen 
74*59599516SKenneth E. Jansen /*  #define V 0.873821971016996 */
75*59599516SKenneth E. Jansen /*  #define W 0.063089014491502 */
76*59599516SKenneth E. Jansen /*  #define X 0.501426509658179 */
77*59599516SKenneth E. Jansen /*  #define Y 0.249286745170910 */
78*59599516SKenneth E. Jansen /*  #define Z 0.636502499121399 */
79*59599516SKenneth E. Jansen /*  #define AA 0.310352451033785 */
80*59599516SKenneth E. Jansen /*  #define BB 0.053145049844816 */
81*59599516SKenneth E. Jansen 
82*59599516SKenneth E. Jansen /*  typedef double DARR3[3] ; */
83*59599516SKenneth E. Jansen 
84*59599516SKenneth E. Jansen static double rst1[][3] = {{zero,-1,zero}};
85*59599516SKenneth E. Jansen static double wt1[] = {2.2360679774997897};
86*59599516SKenneth E. Jansen /* only rule 2 is implemented correctly at this time */
87*59599516SKenneth E. Jansen static double rst4[][3] ={
88*59599516SKenneth E. Jansen {-.455341801261479547, -.788675134594812883 ,-.577350269189625763},
89*59599516SKenneth E. Jansen { .455341801261479547, -.788675134594812883 ,-.577350269189625763},
90*59599516SKenneth E. Jansen {-.122008467928146216, -.211324865405187118 , .577350269189625764},
91*59599516SKenneth E. Jansen { .122008467928146216, -.211324865405187118 , .577350269189625764}};
92*59599516SKenneth E. Jansen 
93*59599516SKenneth E. Jansen static double wt4[] = {0.394337567297406440, 0.394337567297406440,
94*59599516SKenneth E. Jansen                        0.105662432702593559, 0.105662432702593559};
95*59599516SKenneth E. Jansen 
96*59599516SKenneth E. Jansen static double rst9[][3] = {
97*59599516SKenneth E. Jansen                            {mpt68, mpt88, mpt77},
98*59599516SKenneth E. Jansen                            { zero, mpt88, mpt77},
99*59599516SKenneth E. Jansen                            { pt68, mpt88, mpt77},
100*59599516SKenneth E. Jansen                            {mpt38,  mpt5,  zero},
101*59599516SKenneth E. Jansen                            { zero,  mpt5,  zero},
102*59599516SKenneth E. Jansen                            { pt38,  mpt5,  zero},
103*59599516SKenneth E. Jansen                            {mpt08, mpt11,  pt77},
104*59599516SKenneth E. Jansen                            { zero, mpt11,  pt77},
105*59599516SKenneth E. Jansen                            { pt08, mpt11,  pt77}
106*59599516SKenneth E. Jansen };
107*59599516SKenneth E. Jansen static double wt9[] = {Qw311, Qw321, Qw331, Qw312, Qw322, Qw332, Qw313,
108*59599516SKenneth E. Jansen 			 Qw323, Qw333};
109*59599516SKenneth E. Jansen 
110*59599516SKenneth E. Jansen /*  static double rst7[][3] = {{A,A,A}, */
111*59599516SKenneth E. Jansen /*                               {O,P,P},{P,O,P},{P,P,O}, */
112*59599516SKenneth E. Jansen /*                               {Q,Q,R},{Q,R,Q},{R,Q,Q}}; */
113*59599516SKenneth E. Jansen /*  static double wt7[] = {L,M,M,M,N,N,N}; */
114*59599516SKenneth E. Jansen 
115*59599516SKenneth E. Jansen /*  static double rst12[][3] = {{V,W,1.0-V-W},{W,V,1.0-V-W},{W,W,1.0-W-W}, */
116*59599516SKenneth E. Jansen /*  			    {X,Y,1.0-X-Y},{Y,X,1.0-X-Y},{Y,Y,1.0-Y-Y}, */
117*59599516SKenneth E. Jansen /*  			    {Z,AA,1.0-Z-AA},{AA,Z,1.0-Z-AA},{Z,BB,1.0-Z-BB}, */
118*59599516SKenneth E. Jansen /*  			    {AA,BB,1.0-AA-BB},{BB,AA,1.0-BB-AA},{BB,Z,1.0-BB-Z} */
119*59599516SKenneth E. Jansen 
120*59599516SKenneth E. Jansen /*  }; */
121*59599516SKenneth E. Jansen 
122*59599516SKenneth E. Jansen /*  static double wt12[] = {S,S,S,T,T,T,U,U,U,U,U,U}; */
123*59599516SKenneth E. Jansen 
124*59599516SKenneth E. Jansen int triIntPntPyr(int nint, DARR3 **bcord, double **wt)
125*59599516SKenneth E. Jansen {
126*59599516SKenneth E. Jansen   int retval = 1 ;
127*59599516SKenneth E. Jansen   if( nint == 1 ){*bcord = rst1 ; *wt = wt1; }
128*59599516SKenneth E. Jansen   else if( nint == 4 ){*bcord = rst4 ; *wt = wt4; }
129*59599516SKenneth E. Jansen   else if( nint == 9 ){*bcord = rst9 ; *wt = wt9; }
130*59599516SKenneth E. Jansen     else
131*59599516SKenneth E. Jansen   {
132*59599516SKenneth E. Jansen /*      fprintf(stderr,"\n%d integration points unsupported in symtri.c; give {1,3,4,6,7,12}\n",nint); */
133*59599516SKenneth E. Jansen     fprintf(stderr,"\n%d integration points unsupported in symtri.c; give {1,4}\n",nint);
134*59599516SKenneth E. Jansen     retval = 0;
135*59599516SKenneth E. Jansen   }
136*59599516SKenneth E. Jansen   return retval ;
137*59599516SKenneth E. Jansen }
138*59599516SKenneth E. Jansen 
139*59599516SKenneth E. Jansen 
140*59599516SKenneth E. Jansen 
141