159599516SKenneth E. Jansen #include <FCMangle.h>
259599516SKenneth E. Jansen #define symtet FortranCInterface_GLOBAL_(symtet, SYMTET)
359599516SKenneth E. Jansen
459599516SKenneth E. Jansen typedef double DARR4[4];
559599516SKenneth E. Jansen
659599516SKenneth E. Jansen int tetIntPnt(int,DARR4**,double **);
759599516SKenneth E. Jansen
859599516SKenneth E. Jansen
symtet(int * n1,double pt[][4],double wt[],int * err)9*f34e7d5cSCameron Smith void symtet(int *n1, double pt[][4], double wt[], int *err)
1059599516SKenneth E. Jansen {
1159599516SKenneth E. Jansen double *lwt;
1259599516SKenneth E. Jansen DARR4 *lpt;
1359599516SKenneth E. Jansen int i,j;
1459599516SKenneth E. Jansen *err = tetIntPnt(*n1, &lpt, &lwt);
1559599516SKenneth E. Jansen for(i=0; i < *n1; i++) {
1659599516SKenneth E. Jansen wt[i] = lwt[i];
1759599516SKenneth E. Jansen for(j=0; j <4; j++)
1859599516SKenneth E. Jansen pt[i][j]=lpt[i][j];
1959599516SKenneth E. Jansen }
2059599516SKenneth E. Jansen }
2159599516SKenneth E. Jansen
2259599516SKenneth E. Jansen /*$Id$*/
2359599516SKenneth E. Jansen #include <stdio.h>
2459599516SKenneth E. Jansen
2559599516SKenneth E. Jansen /* constants for 4-point rule */
2659599516SKenneth E. Jansen #define a4 0.5854101966249685
2759599516SKenneth E. Jansen #define b4 0.1381966011250150
2859599516SKenneth E. Jansen
2959599516SKenneth E. Jansen /* constants for 5-point rule */
3059599516SKenneth E. Jansen #define a5 0.5000000000000000
3159599516SKenneth E. Jansen #define b5 0.1666666666666667
3259599516SKenneth E. Jansen
3359599516SKenneth E. Jansen /* constants for 16-point rule */
3459599516SKenneth E. Jansen #define a16 0.0503737941001228
3559599516SKenneth E. Jansen #define b16 0.0665420686332923
3659599516SKenneth E. Jansen #define c16 0.7716429020672371
3759599516SKenneth E. Jansen #define d16 0.0761190326442543
3859599516SKenneth E. Jansen #define e16 0.1197005277978019
3959599516SKenneth E. Jansen #define f16 0.0718316452676693
4059599516SKenneth E. Jansen #define g16 0.4042339134672644
4159599516SKenneth E. Jansen
4259599516SKenneth E. Jansen /* constants for 17-point rule */
4359599516SKenneth E. Jansen #define a17 0.1884185567365411
4459599516SKenneth E. Jansen #define b17 0.0670385837260428
4559599516SKenneth E. Jansen #define c17 0.0452855923632739
4659599516SKenneth E. Jansen #define p17 0.7316369079576180
4759599516SKenneth E. Jansen #define q17 0.0894543640141273
4859599516SKenneth E. Jansen #define e17 0.1325810999384657
4959599516SKenneth E. Jansen #define f17 0.0245400397290300
5059599516SKenneth E. Jansen #define g17 0.4214394310662522
5159599516SKenneth E. Jansen
5259599516SKenneth E. Jansen
5359599516SKenneth E. Jansen /* constants for 29-point rule */
5459599516SKenneth E. Jansen #define a29 0.0904012904601475
5559599516SKenneth E. Jansen #define b29 0.0191198342789912
5659599516SKenneth E. Jansen #define c29 0.0436149384066657
5759599516SKenneth E. Jansen #define d29 0.0258116759619916
5859599516SKenneth E. Jansen #define p29 0.8277192480479295
5959599516SKenneth E. Jansen #define q29 0.0574269173173568
6059599516SKenneth E. Jansen #define e29 0.0513518841255634
6159599516SKenneth E. Jansen #define f29 0.4860510285706072
6259599516SKenneth E. Jansen #define g29 0.2312985436519147
6359599516SKenneth E. Jansen #define h29 0.2967538129690260
6459599516SKenneth E. Jansen #define i29 0.6081079894015281
6559599516SKenneth E. Jansen #define j29 0.0475690988147229
6659599516SKenneth E. Jansen
6759599516SKenneth E. Jansen #define a25 0.2500000000000000
6859599516SKenneth E. Jansen #define a26 -0.8000000000000000
6959599516SKenneth E. Jansen #define a27 0.4500000000000000
7059599516SKenneth E. Jansen
7159599516SKenneth E. Jansen /* typedef double DARR4[4] ; */
7259599516SKenneth E. Jansen
7359599516SKenneth E. Jansen static double rstw1[][4] = {{a25,a25,a25,a25}};
7459599516SKenneth E. Jansen static double twt1[] = {1.000000000000000000000};
7559599516SKenneth E. Jansen
7659599516SKenneth E. Jansen static double rstw4[][4] = {{a4,b4,b4,b4},{b4,a4,b4,b4},{b4,b4,a4,b4},
7759599516SKenneth E. Jansen {b4,b4,b4,a4}};
7859599516SKenneth E. Jansen static double twt4[] = {a25,a25,a25,a25};
7959599516SKenneth E. Jansen
8059599516SKenneth E. Jansen static double rstw5[][4] = {{a25,a25,a25,a25},
8159599516SKenneth E. Jansen {a5,b5,b5,b5},
8259599516SKenneth E. Jansen {b5,a5,b5,b5},
8359599516SKenneth E. Jansen {b5,b5,a5,b5},
8459599516SKenneth E. Jansen {b5,b5,b5,a5}};
8559599516SKenneth E. Jansen static double twt5[] = {a26,a27,a27,a27,a27};
8659599516SKenneth E. Jansen
8759599516SKenneth E. Jansen static double rstw16[][4] = {{c16,d16,d16,d16},
8859599516SKenneth E. Jansen {d16,c16,d16,d16},
8959599516SKenneth E. Jansen {d16,d16,c16,d16},
9059599516SKenneth E. Jansen {d16,d16,d16,c16},
9159599516SKenneth E. Jansen
9259599516SKenneth E. Jansen {e16,f16,g16,g16},
9359599516SKenneth E. Jansen {f16,e16,g16,g16},
9459599516SKenneth E. Jansen {e16,g16,g16,f16},
9559599516SKenneth E. Jansen {f16,g16,g16,e16},
9659599516SKenneth E. Jansen {g16,g16,e16,f16},
9759599516SKenneth E. Jansen {g16,g16,f16,e16},
9859599516SKenneth E. Jansen {g16,e16,f16,g16},
9959599516SKenneth E. Jansen {g16,f16,e16,g16},
10059599516SKenneth E. Jansen {e16,g16,f16,g16},
10159599516SKenneth E. Jansen {f16,g16,e16,g16},
10259599516SKenneth E. Jansen {g16,e16,g16,f16},
10359599516SKenneth E. Jansen {g16,f16,g16,e16} };
10459599516SKenneth E. Jansen static double twt16[] = {a16,a16,a16,a16,
10559599516SKenneth E. Jansen b16,b16,b16,b16,
10659599516SKenneth E. Jansen b16,b16,b16,b16,
10759599516SKenneth E. Jansen b16,b16,b16,b16 };
10859599516SKenneth E. Jansen
10959599516SKenneth E. Jansen static double rstw17[][4] = {{a25,a25,a25,a25},
11059599516SKenneth E. Jansen {p17,q17,q17,q17},
11159599516SKenneth E. Jansen {q17,p17,q17,q17},
11259599516SKenneth E. Jansen {q17,q17,p17,q17},
11359599516SKenneth E. Jansen {q17,q17,q17,p17},
11459599516SKenneth E. Jansen
11559599516SKenneth E. Jansen {e17,f17,g17,g17},
11659599516SKenneth E. Jansen {f17,e17,g17,g17},
11759599516SKenneth E. Jansen {e17,g17,g17,f17},
11859599516SKenneth E. Jansen {f17,g17,g17,e17},
11959599516SKenneth E. Jansen {g17,g17,e17,f17},
12059599516SKenneth E. Jansen {g17,g17,f17,e17},
12159599516SKenneth E. Jansen {g17,e17,f17,g17},
12259599516SKenneth E. Jansen {g17,f17,e17,g17},
12359599516SKenneth E. Jansen {e17,g17,f17,g17},
12459599516SKenneth E. Jansen {f17,g17,e17,g17},
12559599516SKenneth E. Jansen {g17,e17,g17,f17},
12659599516SKenneth E. Jansen {g17,f17,g17,e17} };
12759599516SKenneth E. Jansen
12859599516SKenneth E. Jansen static double twt17[] = {a17,b17,b17,b17,b17,
12959599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17,
13059599516SKenneth E. Jansen c17,c17,c17,c17,c17,c17};
13159599516SKenneth E. Jansen
13259599516SKenneth E. Jansen static double twt29[] = {a29,b29,b29,b29,b29,
13359599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29,
13459599516SKenneth E. Jansen c29,c29,c29,c29,c29,c29,
13559599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29,
13659599516SKenneth E. Jansen d29,d29,d29,d29,d29,d29};
13759599516SKenneth E. Jansen
13859599516SKenneth E. Jansen static double rstw29[][4] = {{a25,a25,a25,a25},
13959599516SKenneth E. Jansen
14059599516SKenneth E. Jansen {p29,q29,q29,q29},
14159599516SKenneth E. Jansen {q29,p29,q29,q29},
14259599516SKenneth E. Jansen {q29,q29,p29,q29},
14359599516SKenneth E. Jansen {q29,q29,q29,p29},
14459599516SKenneth E. Jansen
14559599516SKenneth E. Jansen {e29,f29,g29,g29},
14659599516SKenneth E. Jansen {f29,e29,g29,g29},
14759599516SKenneth E. Jansen {e29,g29,g29,f29},
14859599516SKenneth E. Jansen {f29,g29,g29,e29},
14959599516SKenneth E. Jansen {g29,g29,e29,f29},
15059599516SKenneth E. Jansen {g29,g29,f29,e29},
15159599516SKenneth E. Jansen {g29,e29,f29,g29},
15259599516SKenneth E. Jansen {g29,f29,e29,g29},
15359599516SKenneth E. Jansen {e29,g29,f29,g29},
15459599516SKenneth E. Jansen {f29,g29,e29,g29},
15559599516SKenneth E. Jansen {g29,e29,g29,f29},
15659599516SKenneth E. Jansen {g29,f29,g29,e29},
15759599516SKenneth E. Jansen
15859599516SKenneth E. Jansen {h29,i29,j29,j29},
15959599516SKenneth E. Jansen {i29,h29,j29,j29},
16059599516SKenneth E. Jansen {h29,j29,j29,i29},
16159599516SKenneth E. Jansen {i29,j29,j29,h29},
16259599516SKenneth E. Jansen {j29,j29,h29,i29},
16359599516SKenneth E. Jansen {j29,j29,i29,h29},
16459599516SKenneth E. Jansen {j29,h29,i29,j29},
16559599516SKenneth E. Jansen {j29,i29,h29,j29},
16659599516SKenneth E. Jansen {h29,j29,i29,j29},
16759599516SKenneth E. Jansen {i29,j29,h29,j29},
16859599516SKenneth E. Jansen {j29,h29,j29,i29},
16959599516SKenneth E. Jansen {j29,i29,j29,h29} };
17059599516SKenneth E. Jansen
17159599516SKenneth E. Jansen #ifdef __cplusplus
17259599516SKenneth E. Jansen extern "C" {
17359599516SKenneth E. Jansen #endif
17459599516SKenneth E. Jansen
tetIntPnt(int nint,DARR4 ** bcord,double ** wt)17559599516SKenneth E. Jansen int tetIntPnt(int nint, DARR4 **bcord, double **wt)
17659599516SKenneth E. Jansen {
17759599516SKenneth E. Jansen int retval = 1;
17859599516SKenneth E. Jansen
17959599516SKenneth E. Jansen if( nint == 1 ) {*bcord = rstw1 ; *wt = twt1; }
18059599516SKenneth E. Jansen else if( nint == 4 ){*bcord = rstw4 ; *wt = twt4; }
18159599516SKenneth E. Jansen else if( nint == 5 ){*bcord = rstw5 ; *wt = twt5; }
18259599516SKenneth E. Jansen else if( nint == 16 ){*bcord = rstw16 ; *wt = twt16; }
18359599516SKenneth E. Jansen else if( nint == 17 ){*bcord = rstw17 ; *wt = twt17; }
18459599516SKenneth E. Jansen else if( nint == 29 ){*bcord = rstw29 ; *wt = twt29; }
18559599516SKenneth E. Jansen else
18659599516SKenneth E. Jansen {
18759599516SKenneth E. Jansen fprintf(stderr,"\n%d integration points unsupported in symtet.c; give {1,4,5,16,17,29}\n",nint);
18859599516SKenneth E. Jansen retval = 0;
18959599516SKenneth E. Jansen }
19059599516SKenneth E. Jansen return retval ;
19159599516SKenneth E. Jansen }
19259599516SKenneth E. Jansen
19359599516SKenneth E. Jansen #ifdef __cplusplus
19459599516SKenneth E. Jansen }
19559599516SKenneth E. Jansen #endif
196