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 quadrilateral.
34 :
35 :
36 : #include "../quadrature.h"
37 : #include "gauss_quad_quadrilateral.h"
38 :
39 : namespace ug{
40 :
41 : template <>
42 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 1>, 2, 1, 1>::m_vWeight[1] =
43 : {
44 : 1.00000000000000000000000000000000
45 : };
46 :
47 : template <>
48 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 1>, 2, 1, 1>::m_vPoint[1] =
49 : {
50 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000)
51 : };
52 :
53 : template <>
54 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 2>, 2, 2, 4>::m_vWeight[4] =
55 : {
56 : 0.25000000000000000000000000000000,
57 : 0.25000000000000000000000000000000,
58 : 0.25000000000000000000000000000000,
59 : 0.25000000000000000000000000000000
60 : };
61 :
62 : template <>
63 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 2>, 2, 2, 4>::m_vPoint[4] =
64 : {
65 : MathVector<2>(0.21132486540518700000000000000000, 0.21132486540518700000000000000000),
66 : MathVector<2>(0.78867513459481300000000000000000, 0.21132486540518700000000000000000),
67 : MathVector<2>(0.21132486540518700000000000000000, 0.78867513459481300000000000000000),
68 : MathVector<2>(0.78867513459481300000000000000000, 0.78867513459481300000000000000000)
69 : };
70 :
71 : template <>
72 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 3>, 2, 3, 4>::m_vWeight[4] =
73 : {
74 : 0.25000000000000000000000000000000,
75 : 0.25000000000000000000000000000000,
76 : 0.25000000000000000000000000000000,
77 : 0.25000000000000000000000000000000
78 : };
79 :
80 : template <>
81 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 3>, 2, 3, 4>::m_vPoint[4] =
82 : {
83 : MathVector<2>(0.09175170953613698363378598754902, 0.50000000000000000000000000000000),
84 : MathVector<2>(0.50000000000000000000000000000000, 0.09175170953613698363378598754902),
85 : MathVector<2>(0.50000000000000000000000000000000, 0.90824829046386301636621401245098),
86 : MathVector<2>(0.90824829046386301636621401245098, 0.50000000000000000000000000000000)
87 : };
88 :
89 : template <>
90 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 4>, 2, 4, 6>::m_vWeight[6] =
91 : {
92 : 0.28571428571428571428571428571428,
93 : 0.10989010989010989010989010989011,
94 : 0.14151805175188302631601261486295,
95 : 0.14151805175188302631601261486295,
96 : 0.16067975044591917148618518733485,
97 : 0.16067975044591917148618518733485
98 : };
99 :
100 : template <>
101 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 4>, 2, 4, 6>::m_vPoint[6] =
102 : {
103 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000),
104 : MathVector<2>(0.98304589153964795245728880523899, 0.50000000000000000000000000000000),
105 : MathVector<2>(0.72780186391809642112479237299488, 0.07404267334769975434908217981667),
106 : MathVector<2>(0.72780186391809642112479237299488, 0.92595732665230024565091782018333),
107 : MathVector<2>(0.13418502421343273531598225407969, 0.18454360551162298687829339850317),
108 : MathVector<2>(0.13418502421343273531598225407969, 0.81545639448837701312170660149683)
109 : };
110 :
111 : template <>
112 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 5>, 2, 5, 7>::m_vWeight[7] =
113 : {
114 : 0.28571428571428571428571428571428,
115 : 0.07936507936507936507936507936508,
116 : 0.07936507936507936507936507936508,
117 : 0.13888888888888888888888888888889,
118 : 0.13888888888888888888888888888889,
119 : 0.13888888888888888888888888888889,
120 : 0.13888888888888888888888888888889
121 : };
122 :
123 : template <>
124 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 5>, 2, 5, 7>::m_vPoint[7] =
125 : {
126 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000),
127 : MathVector<2>(0.01695410846035204754271119476101, 0.50000000000000000000000000000000),
128 : MathVector<2>(0.98304589153964795245728880523899, 0.50000000000000000000000000000000),
129 : MathVector<2>(0.21132486540518711774542560974902, 0.11270166537925831148207346002176),
130 : MathVector<2>(0.21132486540518711774542560974902, 0.88729833462074168851792653997824),
131 : MathVector<2>(0.78867513459481288225457439025098, 0.11270166537925831148207346002176),
132 : MathVector<2>(0.78867513459481288225457439025098, 0.88729833462074168851792653997824)
133 : };
134 :
135 : template <>
136 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 6>, 2, 6, 10>::m_vWeight[10] =
137 : {
138 : 0.11383581142854335963838543032803,
139 : 0.20684899330074137308917423457476,
140 : 0.03600022114991134623215077164016,
141 : 0.03600022114991134623215077164016,
142 : 0.16706477606566628748245813610296,
143 : 0.16706477606566628748245813610296,
144 : 0.05636850122266983935276391196381,
145 : 0.05636850122266983935276391196381,
146 : 0.08022409919711016056884734784167,
147 : 0.08022409919711016056884734784167
148 : };
149 :
150 : template <>
151 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 6>, 2, 6, 10>::m_vPoint[10] =
152 : {
153 : MathVector<2>(0.91820281684881280226895072035422, 0.50000000000000000000000000000000),
154 : MathVector<2>(0.32126991730434640755691280777702, 0.50000000000000000000000000000000),
155 : MathVector<2>(0.93605076559656529501643767018721, 0.05561799267261773307341476419531),
156 : MathVector<2>(0.93605076559656529501643767018721, 0.94438200732738226692658523580469),
157 : MathVector<2>(0.65299258107771333074469136784128, 0.19757118026765748615073385233221),
158 : MathVector<2>(0.65299258107771333074469136784128, 0.80242881973234251384926614766779),
159 : MathVector<2>(0.29486455026667108063715992772201, 0.02227624667946812612123581961261),
160 : MathVector<2>(0.29486455026667108063715992772201, 0.97772375332053187387876418038739),
161 : MathVector<2>(0.06356534442156033037437039575184, 0.21727000328062297705281230543027),
162 : MathVector<2>(0.06356534442156033037437039575184, 0.78272999671937702294718769456973)
163 : };
164 :
165 : template <>
166 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 7>, 2, 7, 12>::m_vWeight[12] =
167 : {
168 : 0.06049382716049382716049382716049,
169 : 0.06049382716049382716049382716049,
170 : 0.06049382716049382716049382716049,
171 : 0.06049382716049382716049382716049,
172 : 0.13014822916684861428497985801168,
173 : 0.13014822916684861428497985801168,
174 : 0.13014822916684861428497985801168,
175 : 0.13014822916684861428497985801168,
176 : 0.05935794367265755855452631482782,
177 : 0.05935794367265755855452631482782,
178 : 0.05935794367265755855452631482782,
179 : 0.05935794367265755855452631482782
180 : };
181 :
182 : template <>
183 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 7>, 2, 7, 12>::m_vPoint[12] =
184 : {
185 : MathVector<2>(0.03708995011372426921671661170800, 0.50000000000000000000000000000000),
186 : MathVector<2>(0.50000000000000000000000000000000, 0.03708995011372426921671661170800),
187 : MathVector<2>(0.50000000000000000000000000000000, 0.96291004988627573078328338829200),
188 : MathVector<2>(0.96291004988627573078328338829200, 0.50000000000000000000000000000000),
189 : MathVector<2>(0.30972278339584217181044682045680, 0.30972278339584217181044682045680),
190 : MathVector<2>(0.30972278339584217181044682045680, 0.69027721660415782818955317954320),
191 : MathVector<2>(0.69027721660415782818955317954320, 0.30972278339584217181044682045680),
192 : MathVector<2>(0.69027721660415782818955317954320, 0.69027721660415782818955317954320),
193 : MathVector<2>(0.09701010854070062814607190932463, 0.09701010854070062814607190932463),
194 : MathVector<2>(0.09701010854070062814607190932463, 0.90298989145929937185392809067537),
195 : MathVector<2>(0.90298989145929937185392809067537, 0.09701010854070062814607190932463),
196 : MathVector<2>(0.90298989145929937185392809067537, 0.90298989145929937185392809067537)
197 : };
198 :
199 : template <>
200 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 8>, 2, 8, 16>::m_vWeight[16] =
201 : {
202 : 0.01384117640535994306158400271374,
203 : 0.10109734218151885333357243373724,
204 : 0.13338665123815861383831921172309,
205 : 0.02926354719668480160617959307044,
206 : 0.03140360440343670103296426305953,
207 : 0.03140360440343670103296426305953,
208 : 0.03413614618339711683328699903541,
209 : 0.03413614618339711683328699903541,
210 : 0.12085211980281423777756638059528,
211 : 0.12085211980281423777756638059528,
212 : 0.06313212660738592334508524616913,
213 : 0.06313212660738592334508524616913,
214 : 0.09031558097054314228151690054444,
215 : 0.09031558097054314228151690054444,
216 : 0.02136606352156177280975258997395,
217 : 0.02136606352156177280975258997395
218 : };
219 :
220 : template <>
221 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 8>, 2, 8, 16>::m_vPoint[16] =
222 : {
223 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000),
224 : MathVector<2>(0.87881458883025272376243091093078, 0.50000000000000000000000000000000),
225 : MathVector<2>(0.38156407887214905330677888913682, 0.50000000000000000000000000000000),
226 : MathVector<2>(0.00514103547773665934255258242844, 0.50000000000000000000000000000000),
227 : MathVector<2>(0.97526047782283344179383397817322, 0.18045434754981517329838236798414),
228 : MathVector<2>(0.97526047782283344179383397817322, 0.81954565245018482670161763201586),
229 : MathVector<2>(0.83194136844281658918106215312182, 0.03146546153750477812388445955262),
230 : MathVector<2>(0.83194136844281658918106215312182, 0.96853453846249522187611554044738),
231 : MathVector<2>(0.65210534086205225452112163378099, 0.23145823472925316105117594700364),
232 : MathVector<2>(0.65210534086205225452112163378099, 0.76854176527074683894882405299636),
233 : MathVector<2>(0.38175164073194025967137326853460, 0.05640574677518768049015587550525),
234 : MathVector<2>(0.38175164073194025967137326853460, 0.94359425322481231950984412449475),
235 : MathVector<2>(0.15052326195671822003768421503399, 0.25265058966490183398785216925757),
236 : MathVector<2>(0.15052326195671822003768421503399, 0.74734941033509816601214783074243),
237 : MathVector<2>(0.04980461289421013321826332793971, 0.05125209086011623123297208006836),
238 : MathVector<2>(0.04980461289421013321826332793971, 0.94874790913988376876702791993164)
239 : };
240 :
241 : template <>
242 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 9>, 2, 9, 17>::m_vWeight[17] =
243 : {
244 : 0.13168724279835390946502057613169,
245 : 0.02221984454254967674175272155552,
246 : 0.02221984454254967674175272155552,
247 : 0.02221984454254967674175272155552,
248 : 0.02221984454254967674175272155552,
249 : 0.02802490053239912131897473175636,
250 : 0.02802490053239912131897473175636,
251 : 0.02802490053239912131897473175636,
252 : 0.02802490053239912131897473175636,
253 : 0.09957060981551752381908392923745,
254 : 0.09957060981551752381908392923745,
255 : 0.09957060981551752381908392923745,
256 : 0.09957060981551752381908392923745,
257 : 0.06726283440994520075393347341775,
258 : 0.06726283440994520075393347341775,
259 : 0.06726283440994520075393347341775,
260 : 0.06726283440994520075393347341775
261 : };
262 :
263 : template <>
264 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 9>, 2, 9, 17>::m_vPoint[17] =
265 : {
266 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000),
267 : MathVector<2>(0.01557501681901113964165482851083, 0.18465994013416557291337985962548),
268 : MathVector<2>(0.18465994013416557291337985962548, 0.98442498318098886035834517148917),
269 : MathVector<2>(0.81534005986583442708662014037452, 0.01557501681901113964165482851083),
270 : MathVector<2>(0.98442498318098886035834517148917, 0.81534005986583442708662014037452),
271 : MathVector<2>(0.03601917702021516629962331530815, 0.87513854998945026676799199119468),
272 : MathVector<2>(0.12486145001054973323200800880532, 0.03601917702021516629962331530815),
273 : MathVector<2>(0.87513854998945026676799199119468, 0.96398082297978483370037668469185),
274 : MathVector<2>(0.96398082297978483370037668469185, 0.12486145001054973323200800880532),
275 : MathVector<2>(0.23813208989278533198085643668043, 0.27333008943217640461860617920896),
276 : MathVector<2>(0.27333008943217640461860617920896, 0.76186791010721466801914356331957),
277 : MathVector<2>(0.72666991056782359538139382079104, 0.23813208989278533198085643668043),
278 : MathVector<2>(0.76186791010721466801914356331957, 0.72666991056782359538139382079104),
279 : MathVector<2>(0.07369213533316884612739266174083, 0.53810416409630858659081343369466),
280 : MathVector<2>(0.46189583590369141340918656630534, 0.07369213533316884612739266174083),
281 : MathVector<2>(0.53810416409630858659081343369466, 0.92630786466683115387260733825917),
282 : MathVector<2>(0.92630786466683115387260733825917, 0.46189583590369141340918656630534)
283 : };
284 :
285 : template <>
286 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 11>, 2, 11, 24>::m_vWeight[24] =
287 : {
288 : 0.01200519083768095364069079399439,
289 : 0.01200519083768095364069079399439,
290 : 0.01200519083768095364069079399439,
291 : 0.01200519083768095364069079399439,
292 : 0.01651783229113764891840877021239,
293 : 0.01651783229113764891840877021239,
294 : 0.01651783229113764891840877021239,
295 : 0.01651783229113764891840877021239,
296 : 0.02434669433966704104903010994989,
297 : 0.02434669433966704104903010994989,
298 : 0.02434669433966704104903010994989,
299 : 0.02434669433966704104903010994989,
300 : 0.05293408749973715012598291533906,
301 : 0.05293408749973715012598291533906,
302 : 0.05293408749973715012598291533906,
303 : 0.05293408749973715012598291533906,
304 : 0.05640651543221584685078950405212,
305 : 0.05640651543221584685078950405212,
306 : 0.05640651543221584685078950405212,
307 : 0.05640651543221584685078950405212,
308 : 0.08778967959956135941509790645214,
309 : 0.08778967959956135941509790645214,
310 : 0.08778967959956135941509790645214,
311 : 0.08778967959956135941509790645214
312 : };
313 :
314 : template <>
315 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 11>, 2, 11, 24>::m_vPoint[24] =
316 : {
317 : MathVector<2>(0.00868038822957226352375425149800, 0.15096194772521621761176509691252),
318 : MathVector<2>(0.15096194772521621761176509691252, 0.99131961177042773647624574850200),
319 : MathVector<2>(0.84903805227478378238823490308748, 0.00868038822957226352375425149800),
320 : MathVector<2>(0.99131961177042773647624574850200, 0.84903805227478378238823490308748),
321 : MathVector<2>(0.03025680859163154639678381891505, 0.91288791795148196865113729264497),
322 : MathVector<2>(0.08711208204851803134886270735503, 0.03025680859163154639678381891505),
323 : MathVector<2>(0.91288791795148196865113729264497, 0.96974319140836845360321618108495),
324 : MathVector<2>(0.96974319140836845360321618108495, 0.08711208204851803134886270735503),
325 : MathVector<2>(0.02323023589923399207749786658801, 0.59429306935932097730016228409137),
326 : MathVector<2>(0.40570693064067902269983771590863, 0.02323023589923399207749786658801),
327 : MathVector<2>(0.59429306935932097730016228409137, 0.97676976410076600792250213341199),
328 : MathVector<2>(0.97676976410076600792250213341199, 0.40570693064067902269983771590863),
329 : MathVector<2>(0.09373972584759344975530870904385, 0.34218828354237290200719514179895),
330 : MathVector<2>(0.34218828354237290200719514179895, 0.90626027415240655024469129095615),
331 : MathVector<2>(0.65781171645762709799280485820105, 0.09373972584759344975530870904385),
332 : MathVector<2>(0.90626027415240655024469129095615, 0.65781171645762709799280485820105),
333 : MathVector<2>(0.14399904346233184672546705243812, 0.76266012518227388117081594357001),
334 : MathVector<2>(0.23733987481772611882918405642999, 0.14399904346233184672546705243812),
335 : MathVector<2>(0.76266012518227388117081594357001, 0.85600095653766815327453294756188),
336 : MathVector<2>(0.85600095653766815327453294756188, 0.23733987481772611882918405642999),
337 : MathVector<2>(0.28757637557566537469228494424402, 0.52082903595601118413677340226885),
338 : MathVector<2>(0.47917096404398881586322659773115, 0.28757637557566537469228494424402),
339 : MathVector<2>(0.52082903595601118413677340226885, 0.71242362442433462530771505575598),
340 : MathVector<2>(0.71242362442433462530771505575598, 0.47917096404398881586322659773115)
341 : };
342 :
343 : template <>
344 : number GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 13>, 2, 13, 33>::m_vWeight[33] =
345 : {
346 : 0.07509552885780634034649828603289,
347 : 0.00749795971612478291640341391448,
348 : 0.00749795971612478291640341391448,
349 : 0.00749795971612478291640341391448,
350 : 0.00749795971612478291640341391448,
351 : 0.00954360532927091741009259373739,
352 : 0.00954360532927091741009259373739,
353 : 0.00954360532927091741009259373739,
354 : 0.00954360532927091741009259373739,
355 : 0.01510623095443749517021639829856,
356 : 0.01510623095443749517021639829856,
357 : 0.01510623095443749517021639829856,
358 : 0.01510623095443749517021639829856,
359 : 0.01937318463327633483945688833978,
360 : 0.01937318463327633483945688833978,
361 : 0.01937318463327633483945688833978,
362 : 0.01937318463327633483945688833978,
363 : 0.02971116682514890027044978654411,
364 : 0.02971116682514890027044978654411,
365 : 0.02971116682514890027044978654411,
366 : 0.02971116682514890027044978654411,
367 : 0.03244088759250067782138598265494,
368 : 0.03244088759250067782138598265494,
369 : 0.03244088759250067782138598265494,
370 : 0.03244088759250067782138598265494,
371 : 0.05333539536429734735825107104518,
372 : 0.05333539536429734735825107104518,
373 : 0.05333539536429734735825107104518,
374 : 0.05333539536429734735825107104518,
375 : 0.06421768737049195912711929395734,
376 : 0.06421768737049195912711929395734,
377 : 0.06421768737049195912711929395734,
378 : 0.06421768737049195912711929395734
379 : };
380 :
381 : template <>
382 : MathVector<2> GaussQuadBase<GaussQuadrature<ReferenceQuadrilateral, 13>, 2, 13, 33>::m_vPoint[33] =
383 : {
384 : MathVector<2>(0.50000000000000000000000000000000, 0.50000000000000000000000000000000),
385 : MathVector<2>(0.00825665878006386810726796759466, 0.88940485577720971125947535810003),
386 : MathVector<2>(0.11059514422279028874052464189997, 0.00825665878006386810726796759466),
387 : MathVector<2>(0.88940485577720971125947535810003, 0.99174334121993613189273203240534),
388 : MathVector<2>(0.99174334121993613189273203240534, 0.11059514422279028874052464189997),
389 : MathVector<2>(0.02135115010684631717185618761372, 0.07022199717918053570742071616782),
390 : MathVector<2>(0.07022199717918053570742071616782, 0.97864884989315368282814381238628),
391 : MathVector<2>(0.92977800282081946429257928383218, 0.02135115010684631717185618761372),
392 : MathVector<2>(0.97864884989315368282814381238628, 0.92977800282081946429257928383218),
393 : MathVector<2>(0.02053741485623257123011933490039, 0.56909172993123267687360059018315),
394 : MathVector<2>(0.43090827006876732312639940981685, 0.02053741485623257123011933490039),
395 : MathVector<2>(0.56909172993123267687360059018315, 0.97946258514376742876988066509961),
396 : MathVector<2>(0.97946258514376742876988066509961, 0.43090827006876732312639940981685),
397 : MathVector<2>(0.02933638706353738152539868321423, 0.30463189193526949966156599515720),
398 : MathVector<2>(0.30463189193526949966156599515720, 0.97066361293646261847460131678577),
399 : MathVector<2>(0.69536810806473050033843400484280, 0.02933638706353738152539868321423),
400 : MathVector<2>(0.97066361293646261847460131678577, 0.69536810806473050033843400484280),
401 : MathVector<2>(0.07496166315012571201561720649945, 0.73790431260913795253379642170171),
402 : MathVector<2>(0.26209568739086204746620357829829, 0.07496166315012571201561720649945),
403 : MathVector<2>(0.73790431260913795253379642170171, 0.92503833684987428798438279350055),
404 : MathVector<2>(0.92503833684987428798438279350055, 0.26209568739086204746620357829829),
405 : MathVector<2>(0.12209732171395928186435768276542, 0.17608918140649463397820348570608),
406 : MathVector<2>(0.17608918140649463397820348570608, 0.87790267828604071813564231723458),
407 : MathVector<2>(0.82391081859350536602179651429392, 0.12209732171395928186435768276542),
408 : MathVector<2>(0.87790267828604071813564231723458, 0.82391081859350536602179651429392),
409 : MathVector<2>(0.15187496075412529302050214748279, 0.46462924550177753189147032406290),
410 : MathVector<2>(0.46462924550177753189147032406290, 0.84812503924587470697949785251721),
411 : MathVector<2>(0.53537075449822246810852967593710, 0.15187496075412529302050214748279),
412 : MathVector<2>(0.84812503924587470697949785251721, 0.53537075449822246810852967593710),
413 : MathVector<2>(0.29534771915298057834772392987155, 0.67135827802020339470656353671843),
414 : MathVector<2>(0.32864172197979660529343646328157, 0.29534771915298057834772392987155),
415 : MathVector<2>(0.67135827802020339470656353671843, 0.70465228084701942165227607012845),
416 : MathVector<2>(0.70465228084701942165227607012845, 0.32864172197979660529343646328157)
417 : };
418 :
419 :
420 :
421 :
422 : template <>
423 0 : FlexGaussQuadrature<ReferenceQuadrilateral>::FlexGaussQuadrature(int order)
424 : {
425 0 : switch(order)
426 : {
427 : case 0:
428 : case 1:
429 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 1>::order();
430 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 1>::size();
431 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 1>::points();
432 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 1>::weights();
433 0 : break;
434 :
435 : case 2:
436 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 2>::order();
437 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 2>::size();
438 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 2>::points();
439 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 2>::weights();
440 0 : break;
441 :
442 : case 3:
443 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 3>::order();
444 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 3>::size();
445 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 3>::points();
446 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 3>::weights();
447 0 : break;
448 :
449 : case 4:
450 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 4>::order();
451 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 4>::size();
452 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 4>::points();
453 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 4>::weights();
454 0 : break;
455 :
456 : case 5:
457 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 5>::order();
458 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 5>::size();
459 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 5>::points();
460 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 5>::weights();
461 0 : break;
462 :
463 : case 6:
464 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 6>::order();
465 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 6>::size();
466 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 6>::points();
467 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 6>::weights();
468 0 : break;
469 :
470 : case 7:
471 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 7>::order();
472 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 7>::size();
473 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 7>::points();
474 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 7>::weights();
475 0 : break;
476 :
477 : case 8:
478 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 8>::order();
479 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 8>::size();
480 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 8>::points();
481 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 8>::weights();
482 0 : break;
483 :
484 : case 9:
485 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 9>::order();
486 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 9>::size();
487 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 9>::points();
488 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 9>::weights();
489 0 : break;
490 :
491 : case 10:
492 : case 11:
493 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 11>::order();
494 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 11>::size();
495 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 11>::points();
496 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 11>::weights();
497 0 : break;
498 :
499 : case 12:
500 : case 13:
501 0 : m_order = GaussQuadrature<ReferenceQuadrilateral, 13>::order();
502 0 : m_numPoints = GaussQuadrature<ReferenceQuadrilateral, 13>::size();
503 0 : m_pvPoint = GaussQuadrature<ReferenceQuadrilateral, 13>::points();
504 0 : m_pvWeight = GaussQuadrature<ReferenceQuadrilateral, 13>::weights();
505 0 : break;
506 :
507 0 : default: UG_THROW("Order "<<order<<" not available for GaussQuadrature of quadrilateral.");
508 : }
509 0 : }
510 : }; // namespace ug
511 :
|