xref: /phasta/phSolver/common/GaussLegendre1D.c (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1 /*$Id$*/
2 #include <stdlib.h>
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 /* 1 point rule points */
9 static double _GL_pt1[1]={
10  0.000000000000000e+00};
11 
12 /* 1 point rule weights */
13 static double _GL_wt1[1]={
14  2.000000000000000e+00};
15 
16 /* 2 point rule points */
17 static double _GL_pt2[2]={
18 -5.773502691896257e-01, 5.773502691896257e-01};
19 
20 /* 2 point rule weights */
21 static double _GL_wt2[2]={
22  1.000000000000000e+00, 1.000000000000000e+00};
23 
24 /* 3 point rule points */
25 static double _GL_pt3[3]={
26 -7.745966692414834e-01, 0.000000000000000e+00, 7.745966692414834e-01};
27 
28 /* 3 point rule weights */
29 static double _GL_wt3[3]={
30  5.555555555555552e-01, 8.888888888888888e-01, 5.555555555555552e-01};
31 
32 /* 4 point rule points */
33 static double _GL_pt4[4]={
34 -8.611363115940526e-01,-3.399810435848563e-01, 3.399810435848563e-01, 8.611363115940526e-01};
35 
36 /* 4 point rule weights */
37 static double _GL_wt4[4]={
38  3.478548451374537e-01, 6.521451548625464e-01, 6.521451548625464e-01, 3.478548451374537e-01};
39 
40 /* 5 point rule points */
41 static double _GL_pt5[5]={
42 -9.061798459386640e-01,-5.384693101056831e-01, 0.000000000000000e+00, 5.384693101056831e-01, 9.061798459386640e-01};
43 
44 /* 5 point rule weights */
45 static double _GL_wt5[5]={
46  2.369268850561890e-01, 4.786286704993665e-01, 5.688888888888889e-01, 4.786286704993665e-01, 2.369268850561890e-01};
47 
48 /* 6 point rule points */
49 static double _GL_pt6[6]={
50 -9.324695142031521e-01,-6.612093864662646e-01,-2.386191860831969e-01, 2.386191860831969e-01, 6.612093864662646e-01, 9.324695142031521e-01};
51 
52 /* 6 point rule weights */
53 static double _GL_wt6[6]={
54  1.713244923791705e-01, 3.607615730481386e-01, 4.679139345726913e-01, 4.679139345726913e-01, 3.607615730481386e-01, 1.713244923791705e-01};
55 
56 /* 7 point rule points */
57 static double _GL_pt7[7]={
58 -9.491079123427585e-01,-7.415311855993945e-01,-4.058451513773972e-01, 0.000000000000000e+00, 4.058451513773972e-01, 7.415311855993945e-01, 9.491079123427585e-01};
59 
60 /* 7 point rule weights */
61 static double _GL_wt7[7]={
62  1.294849661688697e-01, 2.797053914892767e-01, 3.818300505051190e-01, 4.179591836734694e-01, 3.818300505051190e-01, 2.797053914892767e-01, 1.294849661688697e-01};
63 
64 /* 8 point rule points */
65 static double _GL_pt8[8]={
66 -9.602898564975363e-01,-7.966664774136268e-01,-5.255324099163290e-01,-1.834346424956498e-01, 1.834346424956498e-01, 5.255324099163290e-01, 7.966664774136268e-01, 9.602898564975363e-01};
67 
68 /* 8 point rule weights */
69 static double _GL_wt8[8]={
70  1.012285362903768e-01, 2.223810344533745e-01, 3.137066458778874e-01, 3.626837833783620e-01, 3.626837833783620e-01, 3.137066458778874e-01, 2.223810344533745e-01, 1.012285362903768e-01};
71 
72 /* 9 point rule points */
73 static double _GL_pt9[9]={
74 -9.681602395076261e-01,-8.360311073266359e-01,-6.133714327005905e-01,-3.242534234038089e-01, 0.000000000000000e+00, 3.242534234038089e-01, 6.133714327005905e-01, 8.360311073266359e-01, 9.681602395076261e-01};
75 
76 /* 9 point rule weights */
77 static double _GL_wt9[9]={
78  8.127438836157463e-02, 1.806481606948576e-01, 2.606106964029355e-01, 3.123470770400029e-01, 3.302393550012598e-01, 3.123470770400029e-01, 2.606106964029355e-01, 1.806481606948576e-01, 8.127438836157463e-02};
79 
80 /* 10 point rule points */
81 static double _GL_pt10[10]={
82 -9.739065285171716e-01,-8.650633666889845e-01,-6.794095682990244e-01,-4.333953941292472e-01,-1.488743389816312e-01, 1.488743389816312e-01, 4.333953941292472e-01, 6.794095682990244e-01, 8.650633666889845e-01, 9.739065285171716e-01};
83 
84 /* 10 point rule weights */
85 static double _GL_wt10[10]={
86  6.667134430868774e-02, 1.494513491505805e-01, 2.190863625159822e-01, 2.692667193099962e-01, 2.955242247147529e-01, 2.955242247147529e-01, 2.692667193099962e-01, 2.190863625159822e-01, 1.494513491505805e-01, 6.667134430868774e-02};
87 
88 /* 11 point rule points */
89 static double _GL_pt11[11]={
90 -9.782286581460570e-01,-8.870625997680953e-01,-7.301520055740494e-01,-5.190961292068118e-01,-2.695431559523450e-01, 0.000000000000000e+00, 2.695431559523450e-01, 5.190961292068118e-01, 7.301520055740494e-01, 8.870625997680953e-01, 9.782286581460570e-01};
91 
92 /* 11 point rule weights */
93 static double _GL_wt11[11]={
94  5.566856711617354e-02, 1.255803694649047e-01, 1.862902109277343e-01, 2.331937645919903e-01, 2.628045445102466e-01, 2.729250867779006e-01, 2.628045445102466e-01, 2.331937645919903e-01, 1.862902109277343e-01, 1.255803694649047e-01, 5.566856711617354e-02};
95 
96 /* 12 point rule points */
97 static double _GL_pt12[12]={
98 -9.815606342467192e-01,-9.041172563704748e-01,-7.699026741943047e-01,-5.873179542866175e-01,-3.678314989981802e-01,-1.252334085114689e-01, 1.252334085114689e-01, 3.678314989981802e-01, 5.873179542866175e-01, 7.699026741943047e-01, 9.041172563704748e-01, 9.815606342467192e-01};
99 
100 /* 12 point rule weights */
101 static double _GL_wt12[12]={
102  4.717533638651183e-02, 1.069393259953182e-01, 1.600783285433463e-01, 2.031674267230658e-01, 2.334925365383548e-01, 2.491470458134029e-01, 2.491470458134029e-01, 2.334925365383548e-01, 2.031674267230658e-01, 1.600783285433463e-01, 1.069393259953182e-01, 4.717533638651183e-02};
103 
104 /* 13 point rule points */
105 static double _GL_pt13[13]={
106 -9.841830547185881e-01,-9.175983992229780e-01,-8.015780907333099e-01,-6.423493394403402e-01,-4.484927510364468e-01,-2.304583159551348e-01, 1.232595164407831e-32, 2.304583159551348e-01, 4.484927510364468e-01, 6.423493394403402e-01, 8.015780907333099e-01, 9.175983992229780e-01, 9.841830547185881e-01};
107 
108 /* 13 point rule weights */
109 static double _GL_wt13[13]={
110  4.048400476531581e-02, 9.212149983772838e-02, 1.388735102197872e-01, 1.781459807619457e-01, 2.078160475368884e-01, 2.262831802628971e-01, 2.325515532308739e-01, 2.262831802628971e-01, 2.078160475368884e-01, 1.781459807619457e-01, 1.388735102197872e-01, 9.212149983772838e-02, 4.048400476531581e-02};
111 
112 /* 14 point rule points */
113 static double _GL_pt14[14]={
114 -9.862838086968123e-01,-9.284348836635736e-01,-8.272013150697650e-01,-6.872929048116855e-01,-5.152486363581541e-01,-3.191123689278897e-01,-1.080549487073437e-01, 1.080549487073437e-01, 3.191123689278897e-01, 5.152486363581541e-01, 6.872929048116855e-01, 8.272013150697650e-01, 9.284348836635736e-01, 9.862838086968123e-01};
115 
116 /* 14 point rule weights */
117 static double _GL_wt14[14]={
118  3.511946033175199e-02, 8.015808715976037e-02, 1.215185706879031e-01, 1.572031671581936e-01, 1.855383974779378e-01, 2.051984637212955e-01, 2.152638534631578e-01, 2.152638534631578e-01, 2.051984637212955e-01, 1.855383974779378e-01, 1.572031671581936e-01, 1.215185706879031e-01, 8.015808715976037e-02, 3.511946033175199e-02};
119 
120 /* 15 point rule points */
121 static double _GL_pt15[15]={
122 -9.879925180204854e-01,-9.372733924007060e-01,-8.482065834104272e-01,-7.244177313601701e-01,-5.709721726085388e-01,-3.941513470775634e-01,-2.011940939974345e-01, 1.232595164407831e-32, 2.011940939974345e-01, 3.941513470775634e-01, 5.709721726085388e-01, 7.244177313601701e-01, 8.482065834104272e-01, 9.372733924007060e-01, 9.879925180204854e-01};
123 
124 /* 15 point rule weights */
125 static double _GL_wt15[15]={
126  3.075324199611663e-02, 7.036604748810814e-02, 1.071592204671720e-01, 1.395706779261543e-01, 1.662692058169940e-01, 1.861610000155622e-01, 1.984314853271116e-01, 2.025782419255613e-01, 1.984314853271116e-01, 1.861610000155622e-01, 1.662692058169940e-01, 1.395706779261543e-01, 1.071592204671720e-01, 7.036604748810814e-02, 3.075324199611663e-02};
127 
128 /* 16 point rule points */
129 static double _GL_pt16[16]={
130 -9.894009349916499e-01,-9.445750230732326e-01,-8.656312023878318e-01,-7.554044083550030e-01,-6.178762444026438e-01,-4.580167776572274e-01,-2.816035507792589e-01,-9.501250983763744e-02, 9.501250983763744e-02, 2.816035507792589e-01, 4.580167776572274e-01, 6.178762444026438e-01, 7.554044083550030e-01, 8.656312023878318e-01, 9.445750230732326e-01, 9.894009349916499e-01};
131 
132 /* 16 point rule weights */
133 static double _GL_wt16[16]={
134  2.715245941175406e-02, 6.225352393864778e-02, 9.515851168249290e-02, 1.246289712555339e-01, 1.495959888165768e-01, 1.691565193950026e-01, 1.826034150449236e-01, 1.894506104550685e-01, 1.894506104550685e-01, 1.826034150449236e-01, 1.691565193950026e-01, 1.495959888165768e-01, 1.246289712555339e-01, 9.515851168249290e-02, 6.225352393864778e-02, 2.715245941175406e-02};
135 
136 /* 17 point rule points */
137 static double _GL_pt17[17]={
138 -9.905754753144174e-01,-9.506755217687678e-01,-8.802391537269859e-01,-7.815140038968014e-01,-6.576711592166907e-01,-5.126905370864769e-01,-3.512317634538763e-01,-1.784841814958479e-01, 1.232595164407831e-32, 1.784841814958479e-01, 3.512317634538763e-01, 5.126905370864769e-01, 6.576711592166907e-01, 7.815140038968014e-01, 8.802391537269859e-01, 9.506755217687678e-01, 9.905754753144174e-01};
139 
140 /* 17 point rule weights */
141 static double _GL_wt17[17]={
142  2.414830286854792e-02, 5.545952937398713e-02, 8.503614831717915e-02, 1.118838471934039e-01, 1.351363684685256e-01, 1.540457610768104e-01, 1.680041021564499e-01, 1.765627053669926e-01, 1.794464703562065e-01, 1.765627053669926e-01, 1.680041021564499e-01, 1.540457610768104e-01, 1.351363684685256e-01, 1.118838471934039e-01, 8.503614831717915e-02, 5.545952937398713e-02, 2.414830286854792e-02};
143 
144 /* 18 point rule points */
145 static double _GL_pt18[18]={
146 -9.915651684209310e-01,-9.558239495713977e-01,-8.926024664975557e-01,-8.037049589725231e-01,-6.916870430603532e-01,-5.597708310739475e-01,-4.117511614628426e-01,-2.518862256915055e-01,-8.477501304173531e-02, 8.477501304173531e-02, 2.518862256915055e-01, 4.117511614628426e-01, 5.597708310739475e-01, 6.916870430603532e-01, 8.037049589725231e-01, 8.926024664975557e-01, 9.558239495713977e-01, 9.915651684209310e-01};
147 
148 /* 18 point rule weights */
149 static double _GL_wt18[18]={
150  2.161601352648315e-02, 4.971454889496984e-02, 7.642573025488918e-02, 1.009420441062872e-01, 1.225552067114784e-01, 1.406429146706506e-01, 1.546846751262652e-01, 1.642764837458327e-01, 1.691423829631435e-01, 1.691423829631435e-01, 1.642764837458327e-01, 1.546846751262652e-01, 1.406429146706506e-01, 1.225552067114784e-01, 1.009420441062872e-01, 7.642573025488918e-02, 4.971454889496984e-02, 2.161601352648315e-02};
151 
152 /* 19 point rule points */
153 static double _GL_pt19[19]={
154 -9.924068438435844e-01,-9.602081521348300e-01,-9.031559036148179e-01,-8.227146565371428e-01,-7.209661773352294e-01,-6.005453046616810e-01,-4.645707413759609e-01,-3.165640999636298e-01,-1.603586456402254e-01, 1.232595164407831e-32, 1.603586456402254e-01, 3.165640999636298e-01, 4.645707413759609e-01, 6.005453046616810e-01, 7.209661773352294e-01, 8.227146565371428e-01, 9.031559036148179e-01, 9.602081521348300e-01, 9.924068438435844e-01};
155 
156 /* 19 point rule weights */
157 static double _GL_wt19[19]={
158  1.946178822972643e-02, 4.481422676569959e-02, 6.904454273764125e-02, 9.149002162245014e-02, 1.115666455473341e-01, 1.287539625393363e-01, 1.426067021736066e-01, 1.527660420658597e-01, 1.589688433939544e-01, 1.610544498487837e-01, 1.589688433939544e-01, 1.527660420658597e-01, 1.426067021736066e-01, 1.287539625393363e-01, 1.115666455473341e-01, 9.149002162245014e-02, 6.904454273764125e-02, 4.481422676569959e-02, 1.946178822972643e-02};
159 
160 /* 20 point rule points */
161 static double _GL_pt20[20]={
162 -9.931285991850949e-01,-9.639719272779138e-01,-9.122344282513259e-01,-8.391169718222189e-01,-7.463319064601508e-01,-6.360536807265150e-01,-5.108670019508271e-01,-3.737060887154195e-01,-2.277858511416451e-01,-7.652652113349734e-02, 7.652652113349734e-02, 2.277858511416451e-01, 3.737060887154195e-01, 5.108670019508271e-01, 6.360536807265150e-01, 7.463319064601508e-01, 8.391169718222189e-01, 9.122344282513259e-01, 9.639719272779138e-01, 9.931285991850949e-01};
163 
164 /* 20 point rule weights */
165 static double _GL_wt20[20]={
166  1.761400713915226e-02, 4.060142980038705e-02, 6.267204833410904e-02, 8.327674157670474e-02, 1.019301198172405e-01, 1.181945319615183e-01, 1.316886384491766e-01, 1.420961093183819e-01, 1.491729864726038e-01, 1.527533871307260e-01, 1.527533871307260e-01, 1.491729864726038e-01, 1.420961093183819e-01, 1.316886384491766e-01, 1.181945319615183e-01, 1.019301198172405e-01, 8.327674157670474e-02, 6.267204833410904e-02, 4.060142980038705e-02, 1.761400713915226e-02};
167 
GaussLegendre1D(int npt,double ** pt,double ** wt)168 int GaussLegendre1D(int npt, double **pt, double **wt) {
169   switch(npt) {
170   case  1: {
171     *pt = _GL_pt1;
172     *wt = _GL_wt1;
173     break;
174   }
175   case  2: {
176     *pt = _GL_pt2;
177     *wt = _GL_wt2;
178     break;
179   }
180   case  3: {
181     *pt = _GL_pt3;
182     *wt = _GL_wt3;
183     break;
184   }
185   case  4: {
186     *pt = _GL_pt4;
187     *wt = _GL_wt4;
188     break;
189   }
190   case  5: {
191     *pt = _GL_pt5;
192     *wt = _GL_wt5;
193     break;
194   }
195   case  6: {
196     *pt = _GL_pt6;
197     *wt = _GL_wt6;
198     break;
199   }
200   case  7: {
201     *pt = _GL_pt7;
202     *wt = _GL_wt7;
203     break;
204   }
205   case  8: {
206     *pt = _GL_pt8;
207     *wt = _GL_wt8;
208     break;
209   }
210   case  9: {
211     *pt = _GL_pt9;
212     *wt = _GL_wt9;
213     break;
214   }
215   case 10: {
216     *pt = _GL_pt10;
217     *wt = _GL_wt10;
218     break;
219   }
220   case 11: {
221     *pt = _GL_pt11;
222     *wt = _GL_wt11;
223     break;
224   }
225   case 12: {
226     *pt = _GL_pt12;
227     *wt = _GL_wt12;
228     break;
229   }
230   case 13: {
231     *pt = _GL_pt13;
232     *wt = _GL_wt13;
233     break;
234   }
235   case 14: {
236     *pt = _GL_pt14;
237     *wt = _GL_wt14;
238     break;
239   }
240   case 15: {
241     *pt = _GL_pt15;
242     *wt = _GL_wt15;
243     break;
244   }
245   case 16: {
246     *pt = _GL_pt16;
247     *wt = _GL_wt16;
248     break;
249   }
250   case 17: {
251     *pt = _GL_pt17;
252     *wt = _GL_wt17;
253     break;
254   }
255   case 18: {
256     *pt = _GL_pt18;
257     *wt = _GL_wt18;
258     break;
259   }
260   case 19: {
261     *pt = _GL_pt19;
262     *wt = _GL_wt19;
263     break;
264   }
265   case 20: {
266     *pt = _GL_pt20;
267     *wt = _GL_wt20;
268     break;
269   }
270   default:
271     return 0;
272   };
273   return 1;
274 }
275 
276 #ifdef __cplusplus
277 }
278 #endif
279