Line data Source code
1 : /*
2 : * Copyright (c) 2011-2013: G-CSC, Goethe University Frankfurt
3 : *
4 : * This file is part of UG4.
5 : *
6 : * UG4 is free software: you can redistribute it and/or modify it under the
7 : * terms of the GNU Lesser General Public License version 3 (as published by the
8 : * Free Software Foundation) with the following additional attribution
9 : * requirements (according to LGPL/GPL v3 §7):
10 : *
11 : * (1) The following notice must be displayed in the Appropriate Legal Notices
12 : * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
13 : *
14 : * (2) The following notice must be displayed at a prominent place in the
15 : * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
16 : *
17 : * (3) The following bibliography is recommended for citation and must be
18 : * preserved in all covered files:
19 : * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
20 : * parallel geometric multigrid solver on hierarchically distributed grids.
21 : * Computing and visualization in science 16, 4 (2013), 151-164"
22 : * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
23 : * flexible software system for simulating pde based models on high performance
24 : * computers. Computing and visualization in science 16, 4 (2013), 165-179"
25 : *
26 : * This program is distributed in the hope that it will be useful,
27 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
28 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 : * GNU Lesser General Public License for more details.
30 : */
31 :
32 : // This file is parsed from UG 3.9.
33 : // It provides the Gauss Quadratures for a reference triangle.
34 :
35 :
36 : #include "../quadrature.h"
37 : #include "gauss_quad_triangle.h"
38 :
39 : namespace ug{
40 :
41 : template <>
42 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 1>, 2, 1, 1>::m_vWeight[1] =
43 : {
44 : 0.5 * 1.00000000000000000000000000000000
45 : };
46 :
47 : template <>
48 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 1>, 2, 1, 1>::m_vPoint[1] =
49 : {
50 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333)
51 : };
52 :
53 : template <>
54 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 2>, 2, 2, 3>::m_vWeight[3] =
55 : {
56 : 0.5 * 0.33333333333333333333333333333333,
57 : 0.5 * 0.33333333333333333333333333333333,
58 : 0.5 * 0.33333333333333333333333333333333
59 : };
60 :
61 : template <>
62 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 2>, 2, 2, 3>::m_vPoint[3] =
63 : {
64 : MathVector<2>(0.16666666666666666666666666666667, 0.16666666666666666666666666666667),
65 : MathVector<2>(0.16666666666666666666666666666667, 0.66666666666666666666666666666667),
66 : MathVector<2>(0.66666666666666666666666666666667, 0.16666666666666666666666666666667)
67 : };
68 :
69 : template <>
70 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 3>, 2, 3, 4>::m_vWeight[4] =
71 : {
72 : 0.5 * -0.56250000000000000000000000000000,
73 : 0.5 * 0.52083333333333333333333333333333,
74 : 0.5 * 0.52083333333333333333333333333333,
75 : 0.5 * 0.52083333333333333333333333333333
76 : };
77 :
78 : template <>
79 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 3>, 2, 3, 4>::m_vPoint[4] =
80 : {
81 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
82 : MathVector<2>(0.20000000000000000000000000000000, 0.20000000000000000000000000000000),
83 : MathVector<2>(0.20000000000000000000000000000000, 0.60000000000000000000000000000000),
84 : MathVector<2>(0.60000000000000000000000000000000, 0.20000000000000000000000000000000)
85 : };
86 :
87 : template <>
88 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 4>, 2, 4, 6>::m_vWeight[6] =
89 : {
90 : 0.5 * 0.10995174365532186763832632490021,
91 : 0.5 * 0.10995174365532186763832632490021,
92 : 0.5 * 0.10995174365532186763832632490021,
93 : 0.5 * 0.22338158967801146569500700843312,
94 : 0.5 * 0.22338158967801146569500700843312,
95 : 0.5 * 0.22338158967801146569500700843312
96 : };
97 :
98 : template <>
99 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 4>, 2, 4, 6>::m_vPoint[6] =
100 : {
101 : MathVector<2>(0.09157621350977074345957146340220, 0.09157621350977074345957146340220),
102 : MathVector<2>(0.09157621350977074345957146340220, 0.81684757298045851308085707319560),
103 : MathVector<2>(0.81684757298045851308085707319560, 0.09157621350977074345957146340220),
104 : MathVector<2>(0.44594849091596488631832925388305, 0.44594849091596488631832925388305),
105 : MathVector<2>(0.44594849091596488631832925388305, 0.10810301816807022736334149223390),
106 : MathVector<2>(0.10810301816807022736334149223390, 0.44594849091596488631832925388305)
107 : };
108 :
109 : template <>
110 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 5>, 2, 5, 7>::m_vWeight[7] =
111 : {
112 : 0.5 * 0.22500000000000000000000000000000,
113 : 0.5 * 0.12593918054482715259568394550018,
114 : 0.5 * 0.12593918054482715259568394550018,
115 : 0.5 * 0.12593918054482715259568394550018,
116 : 0.5 * 0.13239415278850618073764938783315,
117 : 0.5 * 0.13239415278850618073764938783315,
118 : 0.5 * 0.13239415278850618073764938783315
119 : };
120 :
121 : template <>
122 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 5>, 2, 5, 7>::m_vPoint[7] =
123 : {
124 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
125 : MathVector<2>(0.10128650732345633880098736191512, 0.10128650732345633880098736191512),
126 : MathVector<2>(0.10128650732345633880098736191512, 0.79742698535308732239802527616975),
127 : MathVector<2>(0.79742698535308732239802527616975, 0.10128650732345633880098736191512),
128 : MathVector<2>(0.47014206410511508977044120951345, 0.47014206410511508977044120951345),
129 : MathVector<2>(0.47014206410511508977044120951345, 0.05971587178976982045911758097311),
130 : MathVector<2>(0.05971587178976982045911758097311, 0.47014206410511508977044120951345)
131 : };
132 :
133 : template <>
134 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 6>, 2, 6, 12>::m_vWeight[12] =
135 : {
136 : 0.5 * 0.05084490637020681692093680910687,
137 : 0.5 * 0.05084490637020681692093680910687,
138 : 0.5 * 0.05084490637020681692093680910687,
139 : 0.5 * 0.11678627572637936602528961138558,
140 : 0.5 * 0.11678627572637936602528961138558,
141 : 0.5 * 0.11678627572637936602528961138558,
142 : 0.5 * 0.08285107561837357519355345642044,
143 : 0.5 * 0.08285107561837357519355345642044,
144 : 0.5 * 0.08285107561837357519355345642044,
145 : 0.5 * 0.08285107561837357519355345642044,
146 : 0.5 * 0.08285107561837357519355345642044,
147 : 0.5 * 0.08285107561837357519355345642044
148 : };
149 :
150 : template <>
151 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 6>, 2, 6, 12>::m_vPoint[12] =
152 : {
153 : MathVector<2>(0.06308901449150222834033160287082, 0.06308901449150222834033160287082),
154 : MathVector<2>(0.06308901449150222834033160287082, 0.87382197101699554331933679425836),
155 : MathVector<2>(0.87382197101699554331933679425836, 0.06308901449150222834033160287082),
156 : MathVector<2>(0.24928674517091042129163855310702, 0.24928674517091042129163855310702),
157 : MathVector<2>(0.24928674517091042129163855310702, 0.50142650965817915741672289378596),
158 : MathVector<2>(0.50142650965817915741672289378596, 0.24928674517091042129163855310702),
159 : MathVector<2>(0.05314504984481694735324967163140, 0.31035245103378440541660773395655),
160 : MathVector<2>(0.05314504984481694735324967163140, 0.63650249912139864723014259441205),
161 : MathVector<2>(0.31035245103378440541660773395655, 0.05314504984481694735324967163140),
162 : MathVector<2>(0.31035245103378440541660773395655, 0.63650249912139864723014259441205),
163 : MathVector<2>(0.63650249912139864723014259441205, 0.05314504984481694735324967163140),
164 : MathVector<2>(0.63650249912139864723014259441205, 0.31035245103378440541660773395655)
165 : };
166 :
167 : template <>
168 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 7>, 2, 7, 12>::m_vWeight[12] =
169 : {
170 : 0.5 * 0.05303405631487250285750836092148,
171 : 0.5 * 0.05303405631487250285750836092148,
172 : 0.5 * 0.05303405631487250285750836092148,
173 : 0.5 * 0.08776281742889211007353980627857,
174 : 0.5 * 0.08776281742889211007353980627857,
175 : 0.5 * 0.08776281742889211007353980627857,
176 : 0.5 * 0.05755008556996317147689099380044,
177 : 0.5 * 0.05755008556996317147689099380044,
178 : 0.5 * 0.05755008556996317147689099380044,
179 : 0.5 * 0.13498637401960554892539417233284,
180 : 0.5 * 0.13498637401960554892539417233284,
181 : 0.5 * 0.13498637401960554892539417233284
182 : };
183 :
184 : template <>
185 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 7>, 2, 7, 12>::m_vPoint[12] =
186 : {
187 : MathVector<2>(0.06238226509440211817368300099635, 0.06751786707391608544255713105087),
188 : MathVector<2>(0.06751786707391608544255713105087, 0.87009986783168179638375986795278),
189 : MathVector<2>(0.87009986783168179638375986795278, 0.06238226509440211817368300099635),
190 : MathVector<2>(0.05522545665692661173747919027564, 0.32150249385198182266630784919920),
191 : MathVector<2>(0.32150249385198182266630784919920, 0.62327204949109156559621296052515),
192 : MathVector<2>(0.62327204949109156559621296052515, 0.05522545665692661173747919027564),
193 : MathVector<2>(0.03432430294509714646963064248394, 0.66094919618673565761198031019780),
194 : MathVector<2>(0.66094919618673565761198031019780, 0.30472650086816719591838904731826),
195 : MathVector<2>(0.30472650086816719591838904731826, 0.03432430294509714646963064248394),
196 : MathVector<2>(0.51584233435359177925746338682643, 0.27771616697639178256958187139372),
197 : MathVector<2>(0.27771616697639178256958187139372, 0.20644149867001643817295474177985),
198 : MathVector<2>(0.20644149867001643817295474177985, 0.51584233435359177925746338682643)
199 : };
200 :
201 : template <>
202 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 8>, 2, 8, 16>::m_vWeight[16] =
203 : {
204 : 0.5 * 0.14431560767778716825109111048906,
205 : 0.5 * 0.10321737053471825028179155029213,
206 : 0.5 * 0.10321737053471825028179155029213,
207 : 0.5 * 0.10321737053471825028179155029213,
208 : 0.5 * 0.03245849762319808031092592834178,
209 : 0.5 * 0.03245849762319808031092592834178,
210 : 0.5 * 0.03245849762319808031092592834178,
211 : 0.5 * 0.09509163426728462479389610438858,
212 : 0.5 * 0.09509163426728462479389610438858,
213 : 0.5 * 0.09509163426728462479389610438858,
214 : 0.5 * 0.02723031417443499426484469007391,
215 : 0.5 * 0.02723031417443499426484469007391,
216 : 0.5 * 0.02723031417443499426484469007391,
217 : 0.5 * 0.02723031417443499426484469007391,
218 : 0.5 * 0.02723031417443499426484469007391,
219 : 0.5 * 0.02723031417443499426484469007391
220 : };
221 :
222 : template <>
223 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 8>, 2, 8, 16>::m_vPoint[16] =
224 : {
225 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
226 : MathVector<2>(0.17056930775176020662229350149146, 0.17056930775176020662229350149146),
227 : MathVector<2>(0.17056930775176020662229350149146, 0.65886138449647958675541299701707),
228 : MathVector<2>(0.65886138449647958675541299701707, 0.17056930775176020662229350149146),
229 : MathVector<2>(0.05054722831703097545842355059660, 0.05054722831703097545842355059660),
230 : MathVector<2>(0.05054722831703097545842355059660, 0.89890554336593804908315289880680),
231 : MathVector<2>(0.89890554336593804908315289880680, 0.05054722831703097545842355059660),
232 : MathVector<2>(0.45929258829272315602881551449417, 0.45929258829272315602881551449417),
233 : MathVector<2>(0.45929258829272315602881551449417, 0.08141482341455368794236897101166),
234 : MathVector<2>(0.08141482341455368794236897101166, 0.45929258829272315602881551449417),
235 : MathVector<2>(0.72849239295540428124100037917606, 0.26311282963463811342178578628464),
236 : MathVector<2>(0.72849239295540428124100037917606, 0.00839477740995760533721383453930),
237 : MathVector<2>(0.26311282963463811342178578628464, 0.72849239295540428124100037917606),
238 : MathVector<2>(0.26311282963463811342178578628464, 0.00839477740995760533721383453930),
239 : MathVector<2>(0.00839477740995760533721383453930, 0.72849239295540428124100037917606),
240 : MathVector<2>(0.00839477740995760533721383453930, 0.26311282963463811342178578628464)
241 : };
242 :
243 : template <>
244 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 9>, 2, 9, 19>::m_vWeight[19] =
245 : {
246 : 0.5 * 0.09713579628279883381924198250729,
247 : 0.5 * 0.03133470022713907053685483128721,
248 : 0.5 * 0.03133470022713907053685483128721,
249 : 0.5 * 0.03133470022713907053685483128721,
250 : 0.5 * 0.07782754100477427931673935629940,
251 : 0.5 * 0.07782754100477427931673935629940,
252 : 0.5 * 0.07782754100477427931673935629940,
253 : 0.5 * 0.07964773892721025303289177426404,
254 : 0.5 * 0.07964773892721025303289177426404,
255 : 0.5 * 0.07964773892721025303289177426404,
256 : 0.5 * 0.02557767565869803126167879855900,
257 : 0.5 * 0.02557767565869803126167879855900,
258 : 0.5 * 0.02557767565869803126167879855900,
259 : 0.5 * 0.04328353937728937728937728937729,
260 : 0.5 * 0.04328353937728937728937728937729,
261 : 0.5 * 0.04328353937728937728937728937729,
262 : 0.5 * 0.04328353937728937728937728937729,
263 : 0.5 * 0.04328353937728937728937728937729,
264 : 0.5 * 0.04328353937728937728937728937729
265 : };
266 :
267 : template <>
268 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 9>, 2, 9, 19>::m_vPoint[19] =
269 : {
270 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
271 : MathVector<2>(0.48968251919873762778370692483619, 0.48968251919873762778370692483619),
272 : MathVector<2>(0.48968251919873762778370692483619, 0.02063496160252474443258615032762),
273 : MathVector<2>(0.02063496160252474443258615032762, 0.48968251919873762778370692483619),
274 : MathVector<2>(0.43708959149293663726993036443535, 0.43708959149293663726993036443535),
275 : MathVector<2>(0.43708959149293663726993036443535, 0.12582081701412672546013927112929),
276 : MathVector<2>(0.12582081701412672546013927112929, 0.43708959149293663726993036443535),
277 : MathVector<2>(0.18820353561903273024096128046733, 0.18820353561903273024096128046733),
278 : MathVector<2>(0.18820353561903273024096128046733, 0.62359292876193453951807743906533),
279 : MathVector<2>(0.62359292876193453951807743906533, 0.18820353561903273024096128046733),
280 : MathVector<2>(0.04472951339445270986510658996628, 0.04472951339445270986510658996628),
281 : MathVector<2>(0.04472951339445270986510658996628, 0.91054097321109458026978682006745),
282 : MathVector<2>(0.91054097321109458026978682006745, 0.04472951339445270986510658996628),
283 : MathVector<2>(0.74119859878449802069007987352342, 0.03683841205473628363481759878339),
284 : MathVector<2>(0.74119859878449802069007987352342, 0.22196298916076569567510252769319),
285 : MathVector<2>(0.03683841205473628363481759878339, 0.74119859878449802069007987352342),
286 : MathVector<2>(0.03683841205473628363481759878339, 0.22196298916076569567510252769319),
287 : MathVector<2>(0.22196298916076569567510252769319, 0.74119859878449802069007987352342),
288 : MathVector<2>(0.22196298916076569567510252769319, 0.03683841205473628363481759878339)
289 : };
290 :
291 : template <>
292 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 10>, 2, 10, 25>::m_vWeight[25] =
293 : {
294 : 0.5 * 0.07989450474123970783124704521339,
295 : 0.5 * 0.07112380223237733463929128739866,
296 : 0.5 * 0.07112380223237733463929128739866,
297 : 0.5 * 0.07112380223237733463929128739866,
298 : 0.5 * 0.00822381869046419551864662036247,
299 : 0.5 * 0.00822381869046419551864662036247,
300 : 0.5 * 0.00822381869046419551864662036247,
301 : 0.5 * 0.04543059229617001800707362924393,
302 : 0.5 * 0.04543059229617001800707362924393,
303 : 0.5 * 0.04543059229617001800707362924393,
304 : 0.5 * 0.04543059229617001800707362924393,
305 : 0.5 * 0.04543059229617001800707362924393,
306 : 0.5 * 0.04543059229617001800707362924393,
307 : 0.5 * 0.03735985623430527682623649900198,
308 : 0.5 * 0.03735985623430527682623649900198,
309 : 0.5 * 0.03735985623430527682623649900198,
310 : 0.5 * 0.03735985623430527682623649900198,
311 : 0.5 * 0.03735985623430527682623649900198,
312 : 0.5 * 0.03735985623430527682623649900198,
313 : 0.5 * 0.03088665688456398878251307700463,
314 : 0.5 * 0.03088665688456398878251307700463,
315 : 0.5 * 0.03088665688456398878251307700463,
316 : 0.5 * 0.03088665688456398878251307700463,
317 : 0.5 * 0.03088665688456398878251307700463,
318 : 0.5 * 0.03088665688456398878251307700463
319 : };
320 :
321 : template <>
322 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 10>, 2, 10, 25>::m_vPoint[25] =
323 : {
324 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
325 : MathVector<2>(0.42508621060209057296952951163804, 0.42508621060209057296952951163804),
326 : MathVector<2>(0.42508621060209057296952951163804, 0.14982757879581885406094097672391),
327 : MathVector<2>(0.14982757879581885406094097672391, 0.42508621060209057296952951163804),
328 : MathVector<2>(0.02330886751000019071446638689598, 0.02330886751000019071446638689598),
329 : MathVector<2>(0.02330886751000019071446638689598, 0.95338226497999961857106722620804),
330 : MathVector<2>(0.95338226497999961857106722620804, 0.02330886751000019071446638689598),
331 : MathVector<2>(0.62830740021349255642083766607883, 0.22376697357697300622568649026820),
332 : MathVector<2>(0.62830740021349255642083766607883, 0.14792562620953443735347584365296),
333 : MathVector<2>(0.22376697357697300622568649026820, 0.62830740021349255642083766607883),
334 : MathVector<2>(0.22376697357697300622568649026820, 0.14792562620953443735347584365296),
335 : MathVector<2>(0.14792562620953443735347584365296, 0.62830740021349255642083766607883),
336 : MathVector<2>(0.14792562620953443735347584365296, 0.22376697357697300622568649026820),
337 : MathVector<2>(0.61131382618139764891875500225390, 0.35874014186443146457815530072385),
338 : MathVector<2>(0.61131382618139764891875500225390, 0.02994603195417088650308969702225),
339 : MathVector<2>(0.35874014186443146457815530072385, 0.61131382618139764891875500225390),
340 : MathVector<2>(0.35874014186443146457815530072385, 0.02994603195417088650308969702225),
341 : MathVector<2>(0.02994603195417088650308969702225, 0.61131382618139764891875500225390),
342 : MathVector<2>(0.02994603195417088650308969702225, 0.35874014186443146457815530072385),
343 : MathVector<2>(0.82107206998562937337354441347218, 0.14329537042686714530585663061732),
344 : MathVector<2>(0.82107206998562937337354441347218, 0.03563255958750348132059895591050),
345 : MathVector<2>(0.14329537042686714530585663061732, 0.82107206998562937337354441347218),
346 : MathVector<2>(0.14329537042686714530585663061732, 0.03563255958750348132059895591050),
347 : MathVector<2>(0.03563255958750348132059895591050, 0.82107206998562937337354441347218),
348 : MathVector<2>(0.03563255958750348132059895591050, 0.14329537042686714530585663061732)
349 : };
350 :
351 : template <>
352 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 11>, 2, 11, 28>::m_vWeight[28] =
353 : {
354 : 0.5 * 0.00736238378330055426425889504738,
355 : 0.5 * 0.00736238378330055426425889504738,
356 : 0.5 * 0.00736238378330055426425889504738,
357 : 0.5 * 0.00736238378330055426425889504738,
358 : 0.5 * 0.00736238378330055426425889504738,
359 : 0.5 * 0.00736238378330055426425889504738,
360 : 0.5 * 0.08797730116223223879809316932146,
361 : 0.5 * 0.00874431155373602304951642879983,
362 : 0.5 * 0.00874431155373602304951642879983,
363 : 0.5 * 0.00874431155373602304951642879983,
364 : 0.5 * 0.03808157199393493751502433943561,
365 : 0.5 * 0.03808157199393493751502433943561,
366 : 0.5 * 0.03808157199393493751502433943561,
367 : 0.5 * 0.01885544805613129205847678259112,
368 : 0.5 * 0.01885544805613129205847678259112,
369 : 0.5 * 0.01885544805613129205847678259112,
370 : 0.5 * 0.07215969754473952612402998858646,
371 : 0.5 * 0.07215969754473952612402998858646,
372 : 0.5 * 0.07215969754473952612402998858646,
373 : 0.5 * 0.06932913870553589984176565090381,
374 : 0.5 * 0.06932913870553589984176565090381,
375 : 0.5 * 0.06932913870553589984176565090381,
376 : 0.5 * 0.04105631542928856664165231490729,
377 : 0.5 * 0.04105631542928856664165231490729,
378 : 0.5 * 0.04105631542928856664165231490729,
379 : 0.5 * 0.04105631542928856664165231490729,
380 : 0.5 * 0.04105631542928856664165231490729,
381 : 0.5 * 0.04105631542928856664165231490729
382 : };
383 :
384 : template <>
385 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 11>, 2, 11, 28>::m_vPoint[28] =
386 : {
387 : MathVector<2>(0.85887028128263670403917393805835, 0.14112971871736329596082606194165),
388 : MathVector<2>(0.85887028128263670403917393805835, 0.00000000000000000000000000000000),
389 : MathVector<2>(0.14112971871736329596082606194165, 0.85887028128263670403917393805835),
390 : MathVector<2>(0.14112971871736329596082606194165, 0.00000000000000000000000000000000),
391 : MathVector<2>(0.00000000000000000000000000000000, 0.85887028128263670403917393805835),
392 : MathVector<2>(0.00000000000000000000000000000000, 0.14112971871736329596082606194165),
393 : MathVector<2>(0.33333333333333333333333333333333, 0.33333333333333333333333333333333),
394 : MathVector<2>(0.02598914092828739526003248549884, 0.02598914092828739526003248549884),
395 : MathVector<2>(0.02598914092828739526003248549884, 0.94802171814342520947993502900232),
396 : MathVector<2>(0.94802171814342520947993502900232, 0.02598914092828739526003248549884),
397 : MathVector<2>(0.09428750264792249563056977627541, 0.09428750264792249563056977627541),
398 : MathVector<2>(0.09428750264792249563056977627541, 0.81142499470415500873886044744919),
399 : MathVector<2>(0.81142499470415500873886044744919, 0.09428750264792249563056977627541),
400 : MathVector<2>(0.49463677501721381374163260230644, 0.49463677501721381374163260230644),
401 : MathVector<2>(0.49463677501721381374163260230644, 0.01072644996557237251673479538713),
402 : MathVector<2>(0.01072644996557237251673479538713, 0.49463677501721381374163260230644),
403 : MathVector<2>(0.20734338261451133345293402411297, 0.20734338261451133345293402411297),
404 : MathVector<2>(0.20734338261451133345293402411297, 0.58531323477097733309413195177407),
405 : MathVector<2>(0.58531323477097733309413195177407, 0.20734338261451133345293402411297),
406 : MathVector<2>(0.43890780570049209506106538163613, 0.43890780570049209506106538163613),
407 : MathVector<2>(0.43890780570049209506106538163613, 0.12218438859901580987786923672775),
408 : MathVector<2>(0.12218438859901580987786923672775, 0.43890780570049209506106538163613),
409 : MathVector<2>(0.67793765488259040154212614118875, 0.04484167758913044330905239146880),
410 : MathVector<2>(0.67793765488259040154212614118875, 0.27722066752827915514882146734245),
411 : MathVector<2>(0.04484167758913044330905239146880, 0.67793765488259040154212614118875),
412 : MathVector<2>(0.04484167758913044330905239146880, 0.27722066752827915514882146734245),
413 : MathVector<2>(0.27722066752827915514882146734245, 0.67793765488259040154212614118875),
414 : MathVector<2>(0.27722066752827915514882146734245, 0.04484167758913044330905239146880)
415 : };
416 :
417 : template <>
418 : number GaussQuadBase<GaussQuadrature<ReferenceTriangle, 12>, 2, 12, 33>::m_vWeight[33] =
419 : {
420 : 0.5 * 0.02573106644045500000000000000000,
421 : 0.5 * 0.02573106644045500000000000000000,
422 : 0.5 * 0.02573106644045500000000000000000,
423 : 0.5 * 0.04369254453803800000000000000000,
424 : 0.5 * 0.04369254453803800000000000000000,
425 : 0.5 * 0.04369254453803800000000000000000,
426 : 0.5 * 0.06285822421788500000000000000000,
427 : 0.5 * 0.06285822421788500000000000000000,
428 : 0.5 * 0.06285822421788500000000000000000,
429 : 0.5 * 0.03479611293070900000000000000000,
430 : 0.5 * 0.03479611293070900000000000000000,
431 : 0.5 * 0.03479611293070900000000000000000,
432 : 0.5 * 0.00616626105155900000000000000000,
433 : 0.5 * 0.00616626105155900000000000000000,
434 : 0.5 * 0.00616626105155900000000000000000,
435 : 0.5 * 0.04037155776638100000000000000000,
436 : 0.5 * 0.04037155776638100000000000000000,
437 : 0.5 * 0.04037155776638100000000000000000,
438 : 0.5 * 0.04037155776638100000000000000000,
439 : 0.5 * 0.04037155776638100000000000000000,
440 : 0.5 * 0.04037155776638100000000000000000,
441 : 0.5 * 0.02235677320230300000000000000000,
442 : 0.5 * 0.02235677320230300000000000000000,
443 : 0.5 * 0.02235677320230300000000000000000,
444 : 0.5 * 0.02235677320230300000000000000000,
445 : 0.5 * 0.02235677320230300000000000000000,
446 : 0.5 * 0.02235677320230300000000000000000,
447 : 0.5 * 0.01731623110865900000000000000000,
448 : 0.5 * 0.01731623110865900000000000000000,
449 : 0.5 * 0.01731623110865900000000000000000,
450 : 0.5 * 0.01731623110865900000000000000000,
451 : 0.5 * 0.01731623110865900000000000000000,
452 : 0.5 * 0.01731623110865900000000000000000
453 : };
454 :
455 : template <>
456 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceTriangle, 12>, 2, 12, 33>::m_vPoint[33] =
457 : {
458 : MathVector<2>(0.02356522045239000000000000000000, 0.48821738977380500000000000000000),
459 : MathVector<2>(0.48821738977380500000000000000000, 0.02356522045239000000000000000000),
460 : MathVector<2>(0.48821738977380500000000000000000, 0.48821738977380500000000000000000),
461 : MathVector<2>(0.43972439229446000000000000000000, 0.43972439229446000000000000000000),
462 : MathVector<2>(0.43972439229446000000000000000000, 0.12055121541107900000000000000000),
463 : MathVector<2>(0.12055121541107900000000000000000, 0.43972439229446000000000000000000),
464 : MathVector<2>(0.27121038501211600000000000000000, 0.27121038501211600000000000000000),
465 : MathVector<2>(0.27121038501211600000000000000000, 0.45757922997576800000000000000000),
466 : MathVector<2>(0.45757922997576800000000000000000, 0.27121038501211600000000000000000),
467 : MathVector<2>(0.12757614554158600000000000000000, 0.12757614554158600000000000000000),
468 : MathVector<2>(0.12757614554158600000000000000000, 0.74484770891682790000000000000000),
469 : MathVector<2>(0.74484770891682790000000000000000, 0.12757614554158600000000000000000),
470 : MathVector<2>(0.02131735045321000000000000000000, 0.02131735045321000000000000000000),
471 : MathVector<2>(0.02131735045321000000000000000000, 0.95736529909357990000000000000000),
472 : MathVector<2>(0.95736529909357990000000000000000, 0.02131735045321000000000000000000),
473 : MathVector<2>(0.11534349453469800000000000000000, 0.27571326968551400000000000000000),
474 : MathVector<2>(0.11534349453469800000000000000000, 0.60894323577978790000000000000000),
475 : MathVector<2>(0.27571326968551400000000000000000, 0.11534349453469800000000000000000),
476 : MathVector<2>(0.27571326968551400000000000000000, 0.60894323577978790000000000000000),
477 : MathVector<2>(0.60894323577978790000000000000000, 0.11534349453469800000000000000000),
478 : MathVector<2>(0.60894323577978790000000000000000, 0.27571326968551400000000000000000),
479 : MathVector<2>(0.02283833222225700000000000000000, 0.28132558098994000000000000000000),
480 : MathVector<2>(0.02283833222225700000000000000000, 0.69583608678780310000000000000000),
481 : MathVector<2>(0.28132558098994000000000000000000, 0.02283833222225700000000000000000),
482 : MathVector<2>(0.28132558098994000000000000000000, 0.69583608678780310000000000000000),
483 : MathVector<2>(0.69583608678780310000000000000000, 0.02283833222225700000000000000000),
484 : MathVector<2>(0.69583608678780310000000000000000, 0.28132558098994000000000000000000),
485 : MathVector<2>(0.02573405054833000000000000000000, 0.11625191590759700000000000000000),
486 : MathVector<2>(0.02573405054833000000000000000000, 0.85801403354407300000000000000000),
487 : MathVector<2>(0.11625191590759700000000000000000, 0.02573405054833000000000000000000),
488 : MathVector<2>(0.11625191590759700000000000000000, 0.85801403354407300000000000000000),
489 : MathVector<2>(0.85801403354407300000000000000000, 0.02573405054833000000000000000000),
490 : MathVector<2>(0.85801403354407300000000000000000, 0.11625191590759700000000000000000)
491 : };
492 :
493 :
494 :
495 :
496 : template <>
497 0 : FlexGaussQuadrature<ReferenceTriangle>::FlexGaussQuadrature(int order)
498 : {
499 0 : switch(order)
500 : {
501 : case 0:
502 : case 1:
503 0 : m_order = GaussQuadrature<ReferenceTriangle, 1>::order();
504 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 1>::size();
505 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 1>::points();
506 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 1>::weights();
507 0 : break;
508 :
509 : case 2:
510 0 : m_order = GaussQuadrature<ReferenceTriangle, 2>::order();
511 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 2>::size();
512 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 2>::points();
513 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 2>::weights();
514 0 : break;
515 :
516 : case 3:
517 0 : m_order = GaussQuadrature<ReferenceTriangle, 3>::order();
518 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 3>::size();
519 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 3>::points();
520 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 3>::weights();
521 0 : break;
522 :
523 : case 4:
524 0 : m_order = GaussQuadrature<ReferenceTriangle, 4>::order();
525 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 4>::size();
526 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 4>::points();
527 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 4>::weights();
528 0 : break;
529 :
530 : case 5:
531 0 : m_order = GaussQuadrature<ReferenceTriangle, 5>::order();
532 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 5>::size();
533 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 5>::points();
534 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 5>::weights();
535 0 : break;
536 :
537 : case 6:
538 0 : m_order = GaussQuadrature<ReferenceTriangle, 6>::order();
539 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 6>::size();
540 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 6>::points();
541 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 6>::weights();
542 0 : break;
543 :
544 : case 7:
545 0 : m_order = GaussQuadrature<ReferenceTriangle, 7>::order();
546 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 7>::size();
547 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 7>::points();
548 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 7>::weights();
549 0 : break;
550 :
551 : case 8:
552 0 : m_order = GaussQuadrature<ReferenceTriangle, 8>::order();
553 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 8>::size();
554 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 8>::points();
555 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 8>::weights();
556 0 : break;
557 :
558 : case 9:
559 0 : m_order = GaussQuadrature<ReferenceTriangle, 9>::order();
560 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 9>::size();
561 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 9>::points();
562 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 9>::weights();
563 0 : break;
564 :
565 : case 10:
566 0 : m_order = GaussQuadrature<ReferenceTriangle, 10>::order();
567 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 10>::size();
568 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 10>::points();
569 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 10>::weights();
570 0 : break;
571 :
572 : case 11:
573 0 : m_order = GaussQuadrature<ReferenceTriangle, 11>::order();
574 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 11>::size();
575 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 11>::points();
576 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 11>::weights();
577 0 : break;
578 :
579 : case 12:
580 0 : m_order = GaussQuadrature<ReferenceTriangle, 12>::order();
581 0 : m_numPoints = GaussQuadrature<ReferenceTriangle, 12>::size();
582 0 : m_pvPoint = GaussQuadrature<ReferenceTriangle, 12>::points();
583 0 : m_pvWeight = GaussQuadrature<ReferenceTriangle, 12>::weights();
584 0 : break;
585 :
586 0 : default: UG_THROW("Order "<<order<<" not available for GaussQuadrature of triangle.");
587 : }
588 0 : }
589 : }; // namespace ug
590 :
|