integral.cc
Go to the documentation of this file.
1 //LIC// ====================================================================
2 //LIC// This file forms part of oomph-lib, the object-oriented,
3 //LIC// multi-physics finite-element library, available
4 //LIC// at http://www.oomph-lib.org.
5 //LIC//
6 //LIC// Version 1.0; svn revision $LastChangedRevision: 1097 $
7 //LIC//
8 //LIC// $LastChangedDate: 2015-12-17 11:53:17 +0000 (Thu, 17 Dec 2015) $
9 //LIC//
10 //LIC// Copyright (C) 2006-2016 Matthias Heil and Andrew Hazel
11 //LIC//
12 //LIC// This library is free software; you can redistribute it and/or
13 //LIC// modify it under the terms of the GNU Lesser General Public
14 //LIC// License as published by the Free Software Foundation; either
15 //LIC// version 2.1 of the License, or (at your option) any later version.
16 //LIC//
17 //LIC// This library is distributed in the hope that it will be useful,
18 //LIC// but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //LIC// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 //LIC// Lesser General Public License for more details.
21 //LIC//
22 //LIC// You should have received a copy of the GNU Lesser General Public
23 //LIC// License along with this library; if not, write to the Free Software
24 //LIC// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 //LIC// 02110-1301 USA.
26 //LIC//
27 //LIC// The authors may be contacted at oomph-lib@maths.man.ac.uk.
28 //LIC//
29 //LIC//====================================================================
30 //Static data for the Gaussian integration rules
31 
32 //oomph-lib header
33 #include "integral.h"
34 
35 namespace oomph
36 {
37 
38 //Need to define the static data here
39 
40 //============================================================
41 // Define the positions and weights of the 1D Gauss points
42 //============================================================
43 
44 //------------------------------------------------------------
45 //N=2
46 //------------------------------------------------------------
47 const double Gauss<1,2>::Knot[2][1]=
48 {{-0.577350269189626},{0.577350269189626}};
49 
50 const double Gauss<1,2>::Weight[2]={1.0,1.0};
51 
52 //------------------------------------------------------------
53 //N=3
54 //------------------------------------------------------------
55 const double Gauss<1,3>::Knot[3][1]=
56 {{-0.774596669241483},{0.0},{0.774596669241483}};
57 
58 const double Gauss<1,3>::Weight[3]={(5.0/9.0),(8.0/9.0),(5.0/9.0)};
59 
60 //------------------------------------------------------------
61 //N=4
62 //------------------------------------------------------------
63 const double Gauss<1,4>::Knot[4][1]=
64 {{-0.861136311594053},{-0.339981043584856}, {0.339981043584856},
65  {0.861136311594053}};
66 
67 const double Gauss<1,4>::Weight[4]={0.347854845137448, 0.652145154862546, 0.652145154862546, 0.347854845137448};
68 
69 
70 
71 //============================================================
72 // Define the positions and weights of the 2D Gauss points
73 //============================================================
74 
75 //------------------------------------------------------------
76 //N=2
77 //------------------------------------------------------------
78 const double Gauss<2,2>::Knot[4][2]={
79  {-0.577350269189626,-0.577350269189626},
80  {-0.577350269189626,0.577350269189626},
81  {0.577350269189626,-0.577350269189626},
82  {0.577350269189626,0.577350269189626}};
83 const double Gauss<2,2>::Weight[4] = {1.0,1.0,1.0,1.0};
84 
85 //------------------------------------------------------------
86 //N=3
87 //------------------------------------------------------------
88 const double Gauss<2,3>::Knot[9][2]= {
89  {-0.774596669241483,-0.774596669241483},
90  {-0.774596669241483,0.0},
91  {-0.774596669241483,0.774596662941483},
92  {0.0,-0.774596669241483},
93  {0.0,0.0},
94  {0.0,0.774596662941483},
95  {0.774596662941483,-0.774596669241483},
96  {0.774596662941483,0.0},
97  {0.774596662941483,0.774596662941483}};
98 const double Gauss<2,3>::Weight[9] = {(25.0/81.0),(40.0/81.0),(25.0/81.0),
99  (40.0/81.0),(64.0/81.0),(40.0/81.0),(25.0/81.0),(40.0/81.0),(25.0/81.0)};
100 
101 //------------------------------------------------------------
102 //N=4
103 //------------------------------------------------------------
104 const double Gauss<2,4>::Knot[16][2]= {
105  {-0.861136311594053,-0.861136311594053},
106  {-0.339981043584856,-0.861136311594053},
107  { 0.339981043584856,-0.861136311594053},
108  { 0.861136311594053,-0.861136311594053},
109 
110  {-0.861136311594053,-0.339981043584856},
111  {-0.339981043584856,-0.339981043584856},
112  { 0.339981043584856,-0.339981043584856},
113  { 0.861136311594053,-0.339981043584856},
114 
115  {-0.861136311594053, 0.339981043584856},
116  {-0.339981043584856, 0.339981043584856},
117  { 0.339981043584856, 0.339981043584856},
118  { 0.861136311594053, 0.339981043584856},
119 
120  {-0.861136311594053, 0.861136311594053},
121  {-0.339981043584856, 0.861136311594053},
122  { 0.339981043584856, 0.861136311594053},
123  { 0.861136311594053, 0.861136311594053}};
124 
125 // Quick sanity check: they sum to 4 :)
126 const double Gauss<2,4>::Weight[16] =
127 {0.1210029932855979 , 0.2268518518518480 , 0.2268518518518480, 0.1210029932855979,
128  0.2268518518518480 , 0.4252933030106941 , 0.4252933030106941, 0.2268518518518480,
129  0.2268518518518480 , 0.4252933030106941 , 0.4252933030106941, 0.2268518518518480,
130  0.1210029932855979 , 0.2268518518518480 , 0.2268518518518480, 0.1210029932855979};
131 
132 
133 
134 //============================================================
135 // Define the positions and weights of the 3D Gauss points
136 // (produced with utilities/gauss_weights.cc)
137 //============================================================
138 
139 //------------------------------------------------------------
140 //N=2
141 //------------------------------------------------------------
142 const double Gauss<3,2>::Knot[8][3]=
143 {{-0.57735026918963,-0.57735026918963,-0.57735026918963},{-0.57735026918963,-0.57735026918963,0.57735026918963},{-0.57735026918963,0.57735026918963,-0.57735026918963},{-0.57735026918963,0.57735026918963,0.57735026918963},{0.57735026918963,-0.57735026918963,-0.57735026918963},{0.57735026918963,-0.57735026918963,0.57735026918963},{0.57735026918963,0.57735026918963,-0.57735026918963},{0.57735026918963,0.57735026918963,0.57735026918963}};
144 const double Gauss<3,2>::Weight[8] = {1,1,1,1,1,1,1,1};
145 
146 //------------------------------------------------------------
147 //N=3
148 //------------------------------------------------------------
149 const double Gauss<3,3>::Knot[27][3]=
150 {{-0.77459666924148,-0.77459666924148,-0.77459666924148},{-0.77459666924148,-0.77459666924148,0},{-0.77459666924148,-0.77459666924148,0.77459666924148},{-0.77459666924148,0,-0.77459666924148},{-0.77459666924148,0,0},{-0.77459666924148,0,0.77459666924148},{-0.77459666924148,0.77459666924148,-0.77459666924148},{-0.77459666924148,0.77459666924148,0},{-0.77459666924148,0.77459666924148,0.77459666924148},{0,-0.77459666924148,-0.77459666924148},{0,-0.77459666924148,0},{0,-0.77459666924148,0.77459666924148},{0,0,-0.77459666924148},{0,0,0},{0,0,0.77459666924148},{0,0.77459666924148,-0.77459666924148},{0,0.77459666924148,0},{0,0.77459666924148,0.77459666924148},{0.77459666924148,-0.77459666924148,-0.77459666924148},{0.77459666924148,-0.77459666924148,0},{0.77459666924148,-0.77459666924148,0.77459666924148},{0.77459666924148,0,-0.77459666924148},{0.77459666924148,0,0},{0.77459666924148,0,0.77459666924148},{0.77459666924148,0.77459666924148,-0.77459666924148},{0.77459666924148,0.77459666924148,0},{0.77459666924148,0.77459666924148,0.77459666924148}};
151 
152 
153 const double Gauss<3,3>::Weight[27] = {0.17146776406035,0.27434842249657,0.17146776406035,0.27434842249657,0.43895747599451,0.27434842249657,0.17146776406035,0.27434842249657,0.17146776406035,0.27434842249657,0.43895747599451,0.27434842249657,0.43895747599451,0.70233196159122,0.43895747599451,0.27434842249657,0.43895747599451,0.27434842249657,0.17146776406035,0.27434842249657,0.17146776406035,0.27434842249657,0.43895747599451,0.27434842249657,0.17146776406035,0.27434842249657,0.17146776406035};
154 
155 
156 
157 //------------------------------------------------------------
158 //N=4
159 //------------------------------------------------------------
160 const double Gauss<3,4>::Knot[64][3]=
161 {{-0.86113631159405,-0.86113631159405,-0.86113631159405},{-0.86113631159405,-0.86113631159405,-0.33998104358486},{-0.86113631159405,-0.86113631159405,0.33998104358486},{-0.86113631159405,-0.86113631159405,0.86113631159405},{-0.86113631159405,-0.33998104358486,-0.86113631159405},{-0.86113631159405,-0.33998104358486,-0.33998104358486},{-0.86113631159405,-0.33998104358486,0.33998104358486},{-0.86113631159405,-0.33998104358486,0.86113631159405},{-0.86113631159405,0.33998104358486,-0.86113631159405},{-0.86113631159405,0.33998104358486,-0.33998104358486},{-0.86113631159405,0.33998104358486,0.33998104358486},{-0.86113631159405,0.33998104358486,0.86113631159405},{-0.86113631159405,0.86113631159405,-0.86113631159405},{-0.86113631159405,0.86113631159405,-0.33998104358486},{-0.86113631159405,0.86113631159405,0.33998104358486},{-0.86113631159405,0.86113631159405,0.86113631159405},{-0.33998104358486,-0.86113631159405,-0.86113631159405},{-0.33998104358486,-0.86113631159405,-0.33998104358486},{-0.33998104358486,-0.86113631159405,0.33998104358486},{-0.33998104358486,-0.86113631159405,0.86113631159405},{-0.33998104358486,-0.33998104358486,-0.86113631159405},{-0.33998104358486,-0.33998104358486,-0.33998104358486},{-0.33998104358486,-0.33998104358486,0.33998104358486},{-0.33998104358486,-0.33998104358486,0.86113631159405},{-0.33998104358486,0.33998104358486,-0.86113631159405},{-0.33998104358486,0.33998104358486,-0.33998104358486},{-0.33998104358486,0.33998104358486,0.33998104358486},{-0.33998104358486,0.33998104358486,0.86113631159405},{-0.33998104358486,0.86113631159405,-0.86113631159405},{-0.33998104358486,0.86113631159405,-0.33998104358486},{-0.33998104358486,0.86113631159405,0.33998104358486},{-0.33998104358486,0.86113631159405,0.86113631159405},{0.33998104358486,-0.86113631159405,-0.86113631159405},{0.33998104358486,-0.86113631159405,-0.33998104358486},{0.33998104358486,-0.86113631159405,0.33998104358486},{0.33998104358486,-0.86113631159405,0.86113631159405},{0.33998104358486,-0.33998104358486,-0.86113631159405},{0.33998104358486,-0.33998104358486,-0.33998104358486},{0.33998104358486,-0.33998104358486,0.33998104358486},{0.33998104358486,-0.33998104358486,0.86113631159405},{0.33998104358486,0.33998104358486,-0.86113631159405},{0.33998104358486,0.33998104358486,-0.33998104358486},{0.33998104358486,0.33998104358486,0.33998104358486},{0.33998104358486,0.33998104358486,0.86113631159405},{0.33998104358486,0.86113631159405,-0.86113631159405},{0.33998104358486,0.86113631159405,-0.33998104358486},{0.33998104358486,0.86113631159405,0.33998104358486},{0.33998104358486,0.86113631159405,0.86113631159405},{0.86113631159405,-0.86113631159405,-0.86113631159405},{0.86113631159405,-0.86113631159405,-0.33998104358486},{0.86113631159405,-0.86113631159405,0.33998104358486},{0.86113631159405,-0.86113631159405,0.86113631159405},{0.86113631159405,-0.33998104358486,-0.86113631159405},{0.86113631159405,-0.33998104358486,-0.33998104358486},{0.86113631159405,-0.33998104358486,0.33998104358486},{0.86113631159405,-0.33998104358486,0.86113631159405},{0.86113631159405,0.33998104358486,-0.86113631159405},{0.86113631159405,0.33998104358486,-0.33998104358486},{0.86113631159405,0.33998104358486,0.33998104358486},{0.86113631159405,0.33998104358486,0.86113631159405},{0.86113631159405,0.86113631159405,-0.86113631159405},{0.86113631159405,0.86113631159405,-0.33998104358486},{0.86113631159405,0.86113631159405,0.33998104358486},{0.86113631159405,0.86113631159405,0.86113631159405}};
162 
163 
164 
165 const double Gauss<3,4>::Weight[64] =
166 {0.042091477490529,0.078911515795068,0.078911515795068,0.042091477490529,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.042091477490529,0.078911515795068,0.078911515795068,0.042091477490529,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.14794033605678,0.27735296695391,0.27735296695391,0.14794033605678,0.14794033605678,0.27735296695391,0.27735296695391,0.14794033605678,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.14794033605678,0.27735296695391,0.27735296695391,0.14794033605678,0.14794033605678,0.27735296695391,0.27735296695391,0.14794033605678,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.042091477490529,0.078911515795068,0.078911515795068,0.042091477490529,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.078911515795068,0.14794033605678,0.14794033605678,0.078911515795068,0.042091477490529,0.078911515795068,0.078911515795068,0.042091477490529};
167 
168 //1D Triangles, which are just the same as 1D Gauss elements, but scaled
169 //so their coordinate runs from 0 to 1, rather than -1 to 1
170 
171 //------------------------------------------------------------
172 //N=2
173 //------------------------------------------------------------
174 const double TGauss<1,2>::Knot[2][1]=
175 {{0.5*(-0.577350269189626+1.0)},{0.5*(0.577350269189626+1.0)}};
176 
177 const double TGauss<1,2>::Weight[2]={0.5,0.5};
178 
179 //------------------------------------------------------------
180 //N=3
181 //------------------------------------------------------------
182 const double TGauss<1,3>::Knot[3][1]=
183 {{0.5*(-0.774596669241483+1.0)},{0.5},{0.5*(0.774596669241483+1.0)}};
184 
185 const double TGauss<1,3>::Weight[3]={(5.0/18.0),(8.0/18.0),(5.0/18.0)};
186 
187 //------------------------------------------------------------
188 //N=4
189 //------------------------------------------------------------
190 const double TGauss<1,4>::Knot[4][1]=
191 {{0.5*(-0.861136311594053+1.0)},{0.5*(-0.339981043584856+1.0)},
192  {0.5*(0.339981043584856+1.0)}, {0.5*(0.861136311594053+1.0)}};
193 
194 const double TGauss<1,4>::Weight[4]={0.5*0.347854845137448,
195 0.5*0.652145154862546, 0.5*0.652145154862546, 0.5*0.347854845137448};
196 
197 //------------------------------------------------------------
198 //N=5
199 //------------------------------------------------------------
200 const double TGauss<1,5>::Knot[5][1]= {};
201 
202 const double TGauss<1,5>::Weight[5]= {};
203 
204 //// Define the positions and weights of the 2D Gauss points for triangles
205 //
206 //------------------------------------------------------------
207 // "Full integration" weights for linear triangles
208 // accurate up to second order (Bathe p 467)
209 //------------------------------------------------------------
210 const double TGauss<2,2>::Knot[3][2]={
211  {0.1666666666667,0.1666666666667},
212  {0.6666666666667,0.1666666666667},
213  {0.1666666666667,0.6666666666667}};
214 
215 const double TGauss<2,2>::Weight[3] = {
216 0.1666666666667,
217 0.1666666666667,
218 0.1666666666667};
219 
220 //------------------------------------------------------------
221 // "Full integration" weights for quadratic triangles
222 // accurate up to fifth order (Bathe p 467)
223 //------------------------------------------------------------
224 const double TGauss<2,3>::Knot[7][2]={
225  {0.1012865073235,0.1012865073235},
226  {0.7974269853531,0.1012865073235},
227  {0.1012865073235,0.7974269853531},
228  {0.4701420641051,0.0597158717898},
229  {0.4701420641051,0.4701420641051},
230  {0.0597158717898,0.4701420641051},
231  {0.3333333333333,0.3333333333333}};
232 
233 const double TGauss<2,3>::Weight[7] = {
234 0.5*0.1259391805448,
235 0.5*0.1259391805448,
236 0.5*0.1259391805448,
237 0.5*0.1323941527885,
238 0.5*0.1323941527885,
239 0.5*0.1323941527885,
240 0.5*0.225};
241 
242 
243 
244 //------------------------------------------------------------
245 //"Full integration" weights for cubic triangles
246 // accurate up to seventh order (Bathe p 467)
247 //------------------------------------------------------------
248 const double TGauss<2,4>::Knot[13][2]={
249  {0.0651301029022,0.0651301029022},
250  {0.8697397941956,0.0651301029022},
251  {0.0651301029022,0.8697397941956},
252  {0.3128654960049,0.0486903154253},
253  {0.6384441885698,0.3128654960049},
254  {0.0486903154253,0.6384441885698},
255  {0.6384441885698,0.0486903154253},
256  {0.3128654960049,0.6384441885698},
257  {0.0486903154253,0.3128654960049},
258  {0.2603459660790,0.2603459660790},
259  {0.4793080678419,0.2603459660790},
260  {0.2603459660790,0.4793080678419},
261  {0.3333333333333,0.3333333333333}};
262 
263 
264 const double TGauss<2,4>::Weight[13] = {
265 0.5*0.0533472356088,
266 0.5*0.0533472356088,
267 0.5*0.0533472356088,
268 0.5*0.0771137608903,
269 0.5*0.0771137608903,
270 0.5*0.0771137608903,
271 0.5*0.0771137608903,
272 0.5*0.0771137608903,
273 0.5*0.0771137608903,
274 0.5*0.1756152574332,
275 0.5*0.1756152574332,
276 0.5*0.1756152574332,
277 0.5*-0.1495700444677};
278 
279 //------------------------------------------------------------
280 //"Full integration" weights for 2D triangles
281 // accurate up to order 11
282 // http://people.sc.fsu.edu/~jburkardt/datasets/quadrature_rules_tri/quadrature_rules_tri.html
283 // [TOMS706_37, order 37, degree of precision 13, a rule from ACM TOMS algorithm #706.]
284 //------------------------------------------------------------
285  const double TGauss<2,13>::Knot[37][2]={
286  {0.333333333333333333333333333333, 0.333333333333333333333333333333},
287  {0.950275662924105565450352089520, 0.024862168537947217274823955239},
288  {0.024862168537947217274823955239, 0.950275662924105565450352089520},
289  {0.024862168537947217274823955239, 0.024862168537947217274823955239},
290  {0.171614914923835347556304795551, 0.414192542538082326221847602214},
291  {0.414192542538082326221847602214, 0.171614914923835347556304795551},
292  {0.414192542538082326221847602214, 0.414192542538082326221847602214},
293  {0.539412243677190440263092985511, 0.230293878161404779868453507244},
294  {0.230293878161404779868453507244, 0.539412243677190440263092985511},
295  {0.230293878161404779868453507244, 0.230293878161404779868453507244},
296  {0.772160036676532561750285570113, 0.113919981661733719124857214943},
297  {0.113919981661733719124857214943, 0.772160036676532561750285570113},
298  {0.113919981661733719124857214943, 0.113919981661733719124857214943},
299  {0.009085399949835353883572964740, 0.495457300025082323058213517632},
300  {0.495457300025082323058213517632, 0.009085399949835353883572964740},
301  {0.495457300025082323058213517632, 0.495457300025082323058213517632},
302  {0.062277290305886993497083640527, 0.468861354847056503251458179727},
303  {0.468861354847056503251458179727, 0.062277290305886993497083640527},
304  {0.468861354847056503251458179727, 0.468861354847056503251458179727},
305  {0.022076289653624405142446876931, 0.851306504174348550389457672223},
306  {0.022076289653624405142446876931, 0.126617206172027096933163647918},
307  {0.851306504174348550389457672223, 0.022076289653624405142446876931},
308  {0.851306504174348550389457672223, 0.126617206172027096933163647918},
309  {0.126617206172027096933163647918, 0.022076289653624405142446876931},
310  {0.126617206172027096933163647918, 0.851306504174348550389457672223},
311  {0.018620522802520968955913511549, 0.689441970728591295496647976487},
312  {0.018620522802520968955913511549, 0.291937506468887771754472382212},
313  {0.689441970728591295496647976487, 0.018620522802520968955913511549},
314  {0.689441970728591295496647976487, 0.291937506468887771754472382212},
315  {0.291937506468887771754472382212, 0.018620522802520968955913511549},
316  {0.291937506468887771754472382212, 0.689441970728591295496647976487},
317  {0.096506481292159228736516560903, 0.635867859433872768286976979827},
318  {0.096506481292159228736516560903, 0.267625659273967961282458816185},
319  {0.635867859433872768286976979827, 0.096506481292159228736516560903},
320  {0.635867859433872768286976979827, 0.267625659273967961282458816185},
321  {0.267625659273967961282458816185, 0.096506481292159228736516560903},
322  {0.267625659273967961282458816185, 0.635867859433872768286976979827}
323  };
324 
325  const double TGauss<2,13>::Weight[37] =
326  {
327  0.051739766065744133555179145422,
328  0.008007799555564801597804123460,
329  0.008007799555564801597804123460,
330  0.008007799555564801597804123460,
331  0.046868898981821644823226732071,
332  0.046868898981821644823226732071,
333  0.046868898981821644823226732071,
334  0.046590940183976487960361770070,
335  0.046590940183976487960361770070,
336  0.046590940183976487960361770070,
337  0.031016943313796381407646220131,
338  0.031016943313796381407646220131,
339  0.031016943313796381407646220131,
340  0.010791612736631273623178240136,
341  0.010791612736631273623178240136,
342  0.010791612736631273623178240136,
343  0.032195534242431618819414482205,
344  0.032195534242431618819414482205,
345  0.032195534242431618819414482205,
346  0.015445834210701583817692900053,
347  0.015445834210701583817692900053,
348  0.015445834210701583817692900053,
349  0.015445834210701583817692900053,
350  0.015445834210701583817692900053,
351  0.015445834210701583817692900053,
352  0.017822989923178661888748319485,
353  0.017822989923178661888748319485,
354  0.017822989923178661888748319485,
355  0.017822989923178661888748319485,
356  0.017822989923178661888748319485,
357  0.017822989923178661888748319485,
358  0.037038683681384627918546472190,
359  0.037038683681384627918546472190,
360  0.037038683681384627918546472190,
361  0.037038683681384627918546472190,
362  0.037038683681384627918546472190,
363  0.037038683681384627918546472190
364  };
365 
366 //------------------------------------------------------------
367 //"Full integration" weights for 2D triangles
368 // accurate up to order 15
369 // http://people.sc.fsu.edu/~jburkardt/datasets/quadrature_rules_tri/quadrature_rules_tri.html
370 // [GAUSS8X8, order 64, degree of precision 15, (essentially a product of two 8 point 1D Gauss-Legendre rules).]
371 //------------------------------------------------------------
372  const double TGauss<2,5>::Knot[64][2]={
373  {0.9553660447100000, 0.8862103848242247e-3},
374  {0.9553660447100000, 0.4537789678039195e-2},
375  {0.9553660447100000, 0.1058868260117431e-1},
376  {0.9553660447100000, 0.1822327082910602e-1},
377  {0.9553660447100000, 0.2641068446089399e-1},
378  {0.9553660447100000, 0.3404527268882569e-1},
379  {0.9553660447100000, 0.4009616561196080e-1},
380  {0.9553660447100000, 0.4374774490517578e-1},
381  {0.8556337429600001, 0.2866402391985981e-2},
382  {0.8556337429600001, 0.1467724979327651e-1},
383  {0.8556337429600001, 0.3424855503358430e-1},
384  {0.8556337429600001, 0.5894224214571626e-1},
385  {0.8556337429600001, 0.8542401489428375e-1},
386  {0.8556337429600001, 0.1101177020064157},
387  {0.8556337429600001, 0.1296890072467235},
388  {0.8556337429600001, 0.1414998546480140},
389  {0.7131752428600000, 0.5694926133044352e-2},
390  {0.7131752428600000, 0.2916054411712861e-1},
391  {0.7131752428600000, 0.6804452564827500e-1},
392  {0.7131752428600000, 0.1171055801775613},
393  {0.7131752428600000, 0.1697191769624387},
394  {0.7131752428600000, 0.2187802314917250},
395  {0.7131752428600000, 0.2576642130228714},
396  {0.7131752428600000, 0.2811298310069557},
397  {0.5451866848000000, 0.9030351006711630e-2},
398  {0.5451866848000000, 0.4623939674940125e-1},
399  {0.5451866848000000, 0.1078970888004545},
400  {0.5451866848000000, 0.1856923986620134},
401  {0.5451866848000000, 0.2691209165379867},
402  {0.5451866848000000, 0.3469162263995455},
403  {0.5451866848000000, 0.4085739184505988},
404  {0.5451866848000000, 0.4457829641932884},
405  {0.3719321645800000, 0.1247033193690498e-1},
406  {0.3719321645800000, 0.6385362269957356e-1},
407  {0.3719321645800000, 0.1489989161403976},
408  {0.3719321645800000, 0.2564292182833579},
409  {0.3719321645800000, 0.3716386171366422},
410  {0.3719321645800000, 0.4790689192796024},
411  {0.3719321645800000, 0.5642142127204264},
412  {0.3719321645800000, 0.6155975034830951},
413  {0.2143084794000000, 0.1559996151584746e-1},
414  {0.2143084794000000, 0.7987871227492103e-1},
415  {0.2143084794000000, 0.1863925811641285},
416  {0.2143084794000000, 0.3207842387034378},
417  {0.2143084794000000, 0.4649072818965623},
418  {0.2143084794000000, 0.5992989394358715},
419  {0.2143084794000000, 0.7058128083250790},
420  {0.2143084794000000, 0.7700915590841526},
421  {0.9132360790000005e-1, 0.1804183496379599e-1},
422  {0.9132360790000005e-1, 0.9238218584838476e-1},
423  {0.9132360790000005e-1, 0.2155687489628060},
424  {0.9132360790000005e-1, 0.3709968314854498},
425  {0.9132360790000005e-1, 0.5376795606145502},
426  {0.9132360790000005e-1, 0.6931076431371940},
427  {0.9132360790000005e-1, 0.8162942062516152},
428  {0.9132360790000005e-1, 0.8906345571362040},
429  {0.1777991514999999e-1, 0.1950205026019779e-1},
430  {0.1777991514999999e-1, 0.9985913490381848e-1},
431  {0.1777991514999999e-1, 0.2330157982952792},
432  {0.1777991514999999e-1, 0.4010234473667467},
433  {0.1777991514999999e-1, 0.5811966374832533},
434  {0.1777991514999999e-1, 0.7492042865547208},
435  {0.1777991514999999e-1, 0.8823609499461815},
436  {0.1777991514999999e-1, 0.9627180345898023}
437  };
438  const double TGauss<2,5>::Weight[64] =
439  {
440  0.3335674062677772e-3,
441  0.7327880811491046e-3,
442  0.1033723454167925e-2,
443  0.1195112498415193e-2,
444  0.1195112498415193e-2,
445  0.1033723454167925e-2,
446  0.7327880811491046e-3,
447  0.3335674062677772e-3,
448  0.1806210919443461e-2,
449  0.3967923151181667e-2,
450  0.5597437146194232e-2,
451  0.6471331443180639e-2,
452  0.6471331443180639e-2,
453  0.5597437146194232e-2,
454  0.3967923151181667e-2,
455  0.1806210919443461e-2,
456  0.4599755803015752e-2,
457  0.1010484287526739e-1,
458  0.1425461651131868e-1,
459  0.1648010431039818e-1,
460  0.1648010431039818e-1,
461  0.1425461651131868e-1,
462  0.1010484287526739e-1,
463  0.4599755803015752e-2,
464  0.8017259531156730e-2,
465  0.1761248886287915e-1,
466  0.2484544071087993e-1,
467  0.2872441038508419e-1,
468  0.2872441038508419e-1,
469  0.2484544071087993e-1,
470  0.1761248886287915e-1,
471  0.8017259531156730e-2,
472  0.1073501897357062e-1,
473  0.2358292149331603e-1,
474  0.3326776143412911e-1,
475  0.3846165753898425e-1,
476  0.3846165753898425e-1,
477  0.3326776143412911e-1,
478  0.2358292149331603e-1,
479  0.1073501897357062e-1,
480  0.1138879740452669e-1,
481  0.2501915606814251e-1,
482  0.3529381699354388e-1,
483  0.4080402900378691e-1,
484  0.4080402900378691e-1,
485  0.3529381699354388e-1,
486  0.2501915606814251e-1,
487  0.1138879740452669e-1,
488  0.9223845391285393e-2,
489  0.2026314273544469e-1,
490  0.2858464328177232e-1,
491  0.3304739223149761e-1,
492  0.3304739223149761e-1,
493  0.2858464328177232e-1,
494  0.2026314273544469e-1,
495  0.9223845391285393e-2,
496  0.4509812715921713e-2,
497  0.9907253959306707e-2,
498  0.1397588340693756e-1,
499  0.1615785427783403e-1,
500  0.1615785427783403e-1,
501  0.1397588340693756e-1,
502  0.9907253959306707e-2,
503  0.4509812715921713e-2
504  };
505 
506 //// Define the positions and weights of the 3D Gauss points for tets
507 
508 //------------------------------------------------------------
509 // "Full integration" weights for linear tets
510 // accurate up to second order (e.g. from German Zienkiwicz p 200)
511 //------------------------------------------------------------
512 const double TGauss<3,2>::Knot[4][3]={
513  {0.138196601125011,0.138196601125011,0.585410196624969},
514  {0.138196601125011,0.585410196624969,0.138196601125011},
515  {0.585410196624969,0.138196601125011,0.138196601125011},
516  {0.138196601125011,0.138196601125011,0.138196601125011}};
517 
518 
519 const double TGauss<3,2>::Weight[4] = {
520 0.0416666666667,
521 0.0416666666667,
522 0.0416666666667,
523 0.0416666666667};
524 
525 
526 
527 
528 
529 //------------------------------------------------------------
530 //"Full integration" weights for quadratic tets
531 // accurate up to fifth order
532 // The numbers are from Keast CMAME 55 pp339-348 (1986)
533 //------------------------------------------------------------
534 const double TGauss<3,3>::Knot[11][3]={
535  {0.25,0.25,0.25},
536  {0.785714285714286,0.071428571428571,0.071428571428571},
537  {0.071428571428571,0.071428571428571,0.071428571428571},
538  {0.071428571428571,0.785714285714286,0.071428571428571},
539  {0.071428571428571,0.071428571428571,0.785714285714286},
540  {0.399403576166799,0.399403576166799,0.100596423833201},
541  {0.399403576166799,0.100596423833201,0.399403576166799},
542  {0.100596423833201,0.399403576166799,0.399403576166799},
543  {0.399403576166799,0.100596423833201,0.100596423833201},
544  {0.100596423833201,0.399403576166799,0.100596423833201},
545  {0.100596423833201,0.100596423833201,0.399403576166799}};
546 
547 
548 const double TGauss<3,3>::Weight[11] ={
549 -0.01315555555556,
550  0.00762222222222,
551  0.00762222222222,
552  0.00762222222222,
553  0.00762222222222,
554  0.02488888888889,
555  0.02488888888889,
556  0.02488888888889,
557  0.02488888888889,
558  0.02488888888889,
559  0.02488888888889
560 };
561 
562 //------------------------------------------------------------
563 //"Full integration" weights for quartic tets
564 // accurate up to eighth order
565 // The numbers are from Keast CMAME 55 pp339-348 (1986)
566 //------------------------------------------------------------
567 const double TGauss<3,5>::Knot[45][3]={
568  {2.50000000000000000e-01, 2.50000000000000000e-01, 2.50000000000000000e-01},
569  {1.27470936566639015e-01, 1.27470936566639015e-01, 1.27470936566639015e-01},
570  {1.27470936566639015e-01, 1.27470936566639015e-01, 6.17587190300082967e-01},
571  {1.27470936566639015e-01, 6.17587190300082967e-01, 1.27470936566639015e-01},
572  {6.17587190300082967e-01, 1.27470936566639015e-01, 1.27470936566639015e-01},
573  {3.20788303926322960e-02, 3.20788303926322960e-02, 3.20788303926322960e-02},
574  {3.20788303926322960e-02, 3.20788303926322960e-02, 9.03763508822103123e-01},
575  {3.20788303926322960e-02, 9.03763508822103123e-01, 3.20788303926322960e-02},
576  {9.03763508822103123e-01, 3.20788303926322960e-02, 3.20788303926322960e-02},
577  {4.97770956432810185e-02, 4.97770956432810185e-02, 4.50222904356718978e-01},
578  {4.97770956432810185e-02, 4.50222904356718978e-01, 4.50222904356718978e-01},
579  {4.50222904356718978e-01, 4.50222904356718978e-01, 4.97770956432810185e-02},
580  {4.50222904356718978e-01, 4.97770956432810185e-02, 4.97770956432810185e-02},
581  {4.97770956432810185e-02, 4.50222904356718978e-01, 4.97770956432810185e-02},
582  {4.50222904356718978e-01, 4.97770956432810185e-02, 4.50222904356718978e-01},
583  {1.83730447398549945e-01, 1.83730447398549945e-01, 3.16269552601450060e-01},
584  {1.83730447398549945e-01, 3.16269552601450060e-01, 3.16269552601450060e-01},
585  {3.16269552601450060e-01, 3.16269552601450060e-01, 1.83730447398549945e-01},
586  {3.16269552601450060e-01, 1.83730447398549945e-01, 1.83730447398549945e-01},
587  {1.83730447398549945e-01, 3.16269552601450060e-01, 1.83730447398549945e-01},
588  {3.16269552601450060e-01, 1.83730447398549945e-01, 3.16269552601450060e-01},
589  {2.31901089397150906e-01, 2.31901089397150906e-01, 2.29177878448171174e-02},
590  {2.31901089397150906e-01, 2.29177878448171174e-02, 5.13280033360881072e-01},
591  {2.29177878448171174e-02, 5.13280033360881072e-01, 2.31901089397150906e-01},
592  {5.13280033360881072e-01, 2.31901089397150906e-01, 2.31901089397150906e-01},
593  {2.31901089397150906e-01, 5.13280033360881072e-01, 2.31901089397150906e-01},
594  {5.13280033360881072e-01, 2.31901089397150906e-01, 2.29177878448171174e-02},
595  {2.31901089397150906e-01, 2.29177878448171174e-02, 2.31901089397150906e-01},
596  {2.31901089397150906e-01, 5.13280033360881072e-01, 2.29177878448171174e-02},
597  {2.29177878448171174e-02, 2.31901089397150906e-01, 5.13280033360881072e-01},
598  {5.13280033360881072e-01, 2.29177878448171174e-02, 2.31901089397150906e-01},
599  {2.29177878448171174e-02, 2.31901089397150906e-01, 2.31901089397150906e-01},
600  {2.31901089397150906e-01, 2.31901089397150906e-01, 5.13280033360881072e-01},
601  {3.79700484718286102e-02, 3.79700484718286102e-02, 7.30313427807538396e-01},
602  {3.79700484718286102e-02, 7.30313427807538396e-01, 1.93746475248804382e-01},
603  {7.30313427807538396e-01, 1.93746475248804382e-01, 3.79700484718286102e-02},
604  {1.93746475248804382e-01, 3.79700484718286102e-02, 3.79700484718286102e-02},
605  {3.79700484718286102e-02, 1.93746475248804382e-01, 3.79700484718286102e-02},
606  {1.93746475248804382e-01, 3.79700484718286102e-02, 7.30313427807538396e-01},
607  {3.79700484718286102e-02, 7.30313427807538396e-01, 3.79700484718286102e-02},
608  {3.79700484718286102e-02, 1.93746475248804382e-01, 7.30313427807538396e-01},
609  {7.30313427807538396e-01, 3.79700484718286102e-02, 1.93746475248804382e-01},
610  {1.93746475248804382e-01, 7.30313427807538396e-01, 3.79700484718286102e-02},
611  {7.30313427807538396e-01, 3.79700484718286102e-02, 3.79700484718286102e-02},
612  {3.79700484718286102e-02, 3.79700484718286102e-02, 1.93746475248804382e-01}
613 };
614 
615 const double TGauss<3,5>::Weight[45] ={
616 -3.93270066412926145e-02, 4.08131605934270525e-03,
617  4.08131605934270525e-03, 4.08131605934270525e-03,
618  4.08131605934270525e-03, 6.58086773304341943e-04,
619  6.58086773304341943e-04, 6.58086773304341943e-04,
620  6.58086773304341943e-04, 4.38425882512284693e-03,
621  4.38425882512284693e-03, 4.38425882512284693e-03,
622  4.38425882512284693e-03, 4.38425882512284693e-03,
623  4.38425882512284693e-03, 1.38300638425098166e-02,
624  1.38300638425098166e-02, 1.38300638425098166e-02,
625  1.38300638425098166e-02, 1.38300638425098166e-02,
626  1.38300638425098166e-02, 4.24043742468372453e-03,
627  4.24043742468372453e-03, 4.24043742468372453e-03,
628  4.24043742468372453e-03, 4.24043742468372453e-03,
629  4.24043742468372453e-03, 4.24043742468372453e-03,
630  4.24043742468372453e-03, 4.24043742468372453e-03,
631  4.24043742468372453e-03, 4.24043742468372453e-03,
632  4.24043742468372453e-03, 2.23873973961420164e-03,
633  2.23873973961420164e-03, 2.23873973961420164e-03,
634  2.23873973961420164e-03, 2.23873973961420164e-03,
635  2.23873973961420164e-03, 2.23873973961420164e-03,
636  2.23873973961420164e-03, 2.23873973961420164e-03,
637  2.23873973961420164e-03, 2.23873973961420164e-03,
638  2.23873973961420164e-03};
639 
640 }
641 
642 
643 
644 
static const double Knot[9][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:379
static const double Weight[4]
Definition: integral.h:1107
static const double Knot[8][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:476
static const double Weight[3]
Definition: integral.h:235
static const double Knot[4][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:1107
static const double Weight[3]
Definition: integral.h:875
static const double Knot[4][1]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:786
static const double Weight[64]
Definition: integral.h:572
static const double Knot[3][1]
Array to hold weights and knot points (defined in cc file)
Definition: integral.h:235
static const double Knot[37][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:1016
static const double Knot[4][2]
Array to hold the weight and know points (defined in cc file)
Definition: integral.h:332
static const double Knot[2][1]
Array to hold weights and knot points (defined in cc file)
Definition: integral.h:187
static const double Knot[27][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:524
static const double Weight[4]
Definition: integral.h:786
static const double Knot[2][1]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:690
static const double Weight[4]
Definition: integral.h:332
static const double Knot[3][1]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:738
static const double Weight[13]
Definition: integral.h:971
static const double Weight[37]
Definition: integral.h:1016
static const double Knot[64][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:572
static const double Knot[7][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:923
static const double Weight[45]
Definition: integral.h:1208
static const double Weight[2]
Definition: integral.h:690
static const double Weight[4]
Definition: integral.h:284
static const double Weight[16]
Definition: integral.h:427
static const double Knot[4][1]
Array to hold weight and knot points (defined in cc file)
Definition: integral.h:284
static const double Weight[3]
Definition: integral.h:738
static const double Weight[11]
Definition: integral.h:1158
static const double Knot[13][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:971
static const double Weight[5]
Definition: integral.h:826
static const double Weight[8]
Definition: integral.h:476
static const double Weight[27]
Definition: integral.h:524
static const double Weight[64]
Definition: integral.h:1060
static const double Weight[9]
Definition: integral.h:379
static const double Knot[45][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:1208
static const double Knot[64][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:1060
static const double Weight[2]
Definition: integral.h:187
static const double Knot[11][3]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:1158
static const double Knot[3][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:875
static const double Knot[16][2]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:427
static const double Weight[7]
Definition: integral.h:923
static const double Knot[5][1]
Array to hold the weights and knots (defined in cc file)
Definition: integral.h:826