159599516SKenneth E. Jansen #include <FCMangle.h>
259599516SKenneth E. Jansen #define symtri FortranCInterface_GLOBAL_(symtri,SYMTRI)
359599516SKenneth E. Jansen
459599516SKenneth E. Jansen typedef double DARR3[3];
559599516SKenneth E. Jansen
659599516SKenneth E. Jansen int triIntPnt(int, DARR3**,double**);
759599516SKenneth E. Jansen
symtri(int * n1,double pt[][4],double wt[],int * err)8*f34e7d5cSCameron Smith void symtri(int *n1, double pt[][4], double wt[], int *err)
959599516SKenneth E. Jansen {
1059599516SKenneth E. Jansen double *lwt;
1159599516SKenneth E. Jansen DARR3 *lpt;
1259599516SKenneth E. Jansen int i,j;
1359599516SKenneth E. Jansen *err = triIntPnt(*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 #include <stdio.h>
2259599516SKenneth E. Jansen
2359599516SKenneth E. Jansen #define A 0.3333333333333330000000000000000000
2459599516SKenneth E. Jansen #define B 0.666666666666667
2559599516SKenneth E. Jansen #define C 0.166666666666667
2659599516SKenneth E. Jansen #define D 0.562500000000000
2759599516SKenneth E. Jansen #define E 0.520833333333333
2859599516SKenneth E. Jansen
2959599516SKenneth E. Jansen #define F 0.109951743655322
3059599516SKenneth E. Jansen #define G 0.223381589678011
3159599516SKenneth E. Jansen #define H 0.816847572980459
3259599516SKenneth E. Jansen #define I 0.091576213509771
3359599516SKenneth E. Jansen #define J 0.108103018168070
3459599516SKenneth E. Jansen #define K 0.445948490915965
3559599516SKenneth E. Jansen
3659599516SKenneth E. Jansen #define L 0.225000000000000
3759599516SKenneth E. Jansen #define M 0.125939180544827
3859599516SKenneth E. Jansen #define N 0.132394152788506
3959599516SKenneth E. Jansen
4059599516SKenneth E. Jansen #define O 0.797426985353087
4159599516SKenneth E. Jansen #define P 0.101286507323456
4259599516SKenneth E. Jansen #define Q 0.470142064105115
4359599516SKenneth E. Jansen #define R 0.059715871789770
4459599516SKenneth E. Jansen
4559599516SKenneth E. Jansen #define S 0.050844906370207
4659599516SKenneth E. Jansen #define T 0.116786275726379
4759599516SKenneth E. Jansen #define U 0.082851075618374
4859599516SKenneth E. Jansen
4959599516SKenneth E. Jansen #define V 0.873821971016996
5059599516SKenneth E. Jansen #define W 0.063089014491502
5159599516SKenneth E. Jansen #define X 0.501426509658179
5259599516SKenneth E. Jansen #define Y 0.249286745170910
5359599516SKenneth E. Jansen #define Z 0.636502499121399
5459599516SKenneth E. Jansen #define AA 0.310352451033785
5559599516SKenneth E. Jansen #define BB 0.053145049844816
5659599516SKenneth E. Jansen
5759599516SKenneth E. Jansen /* typedef double DARR3[3] ; */
5859599516SKenneth E. Jansen
5959599516SKenneth E. Jansen static double rst1[][3] = {{A,A,A}};
6059599516SKenneth E. Jansen static double wt1[] = {1.00000000000000000};
6159599516SKenneth E. Jansen
6259599516SKenneth E. Jansen static double rst3[][3] = {{B,C,C},{C,B,C},{C,C,B}};
6359599516SKenneth E. Jansen static double wt3[] = {A,A,A};
6459599516SKenneth E. Jansen
6559599516SKenneth E. Jansen static double rst4[][3] = {{A,A,A},
6659599516SKenneth E. Jansen {0.6,0.2,0.2},{0.2,0.6,0.2},{0.2,0.2,0.6}};
6759599516SKenneth E. Jansen static double wt4[] = {-D,E,E,E};
6859599516SKenneth E. Jansen
6959599516SKenneth E. Jansen static double rst6[][3] = {{H,I,I},{I,H,I},{I,I,H},
7059599516SKenneth E. Jansen {J,K,K},{K,J,K},{K,K,J}};
7159599516SKenneth E. Jansen static double wt6[] = {F,F,F,G,G,G};
7259599516SKenneth E. Jansen
7359599516SKenneth E. Jansen static double rst7[][3] = {{A,A,A},
7459599516SKenneth E. Jansen {O,P,P},{P,O,P},{P,P,O},
7559599516SKenneth E. Jansen {Q,Q,R},{Q,R,Q},{R,Q,Q}};
7659599516SKenneth E. Jansen static double wt7[] = {L,M,M,M,N,N,N};
7759599516SKenneth E. Jansen
7859599516SKenneth E. Jansen static double rst12[][3] = {{V,W,1.0-V-W},{W,V,1.0-V-W},{W,W,1.0-W-W},
7959599516SKenneth E. Jansen {X,Y,1.0-X-Y},{Y,X,1.0-X-Y},{Y,Y,1.0-Y-Y},
8059599516SKenneth E. Jansen {Z,AA,1.0-Z-AA},{AA,Z,1.0-Z-AA},{Z,BB,1.0-Z-BB},
8159599516SKenneth E. Jansen {AA,BB,1.0-AA-BB},{BB,AA,1.0-BB-AA},{BB,Z,1.0-BB-Z}};
8259599516SKenneth E. Jansen
8359599516SKenneth E. Jansen static double wt12[] = {S,S,S,T,T,T,U,U,U,U,U,U};
8459599516SKenneth E. Jansen
triIntPnt(int nint,DARR3 ** bcord,double ** wt)8559599516SKenneth E. Jansen int triIntPnt(int nint, DARR3 **bcord, double **wt)
8659599516SKenneth E. Jansen {
8759599516SKenneth E. Jansen int retval = 1 ;
8859599516SKenneth E. Jansen if( nint == 3 ) {*bcord = rst3 ; *wt = wt3; }
8959599516SKenneth E. Jansen else if( nint == 1 ){*bcord = rst1 ; *wt = wt1; }
9059599516SKenneth E. Jansen else if( nint == 4 ){*bcord = rst4 ; *wt = wt4; }
9159599516SKenneth E. Jansen else if( nint == 6 ){*bcord = rst6 ; *wt = wt6; }
9259599516SKenneth E. Jansen else if( nint == 7 ){*bcord = rst7 ; *wt = wt7; }
9359599516SKenneth E. Jansen else if( nint == 12){*bcord = rst12; *wt = wt12;}
9459599516SKenneth E. Jansen else
9559599516SKenneth E. Jansen {
9659599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symtri.c; give {1,3,4,6,7,12}\n",nint);
9759599516SKenneth E. Jansen retval = 0;
9859599516SKenneth E. Jansen }
9959599516SKenneth E. Jansen return retval ;
10059599516SKenneth E. Jansen }
10159599516SKenneth E. Jansen
10259599516SKenneth E. Jansen
10359599516SKenneth E. Jansen
104