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 pyramid.
34 :
35 :
36 : #include "../quadrature.h"
37 : #include "gauss_quad_pyramid.h"
38 :
39 : namespace ug{
40 :
41 : template <>
42 : number GaussQuadBase<GaussQuadrature<ReferencePyramid, 2>, 3, 2, 8>::m_vWeight[8] =
43 : {
44 : 1./3. * 0.12500000000000000000000000000000,
45 : 1./3. * 0.12500000000000000000000000000000,
46 : 1./3. * 0.12500000000000000000000000000000,
47 : 1./3. * 0.12500000000000000000000000000000,
48 : 1./3. * 0.12500000000000000000000000000000,
49 : 1./3. * 0.12500000000000000000000000000000,
50 : 1./3. * 0.12500000000000000000000000000000,
51 : 1./3. * 0.12500000000000000000000000000000
52 : };
53 :
54 : template <>
55 : MathVector<3> GaussQuadBase<GaussQuadrature<ReferencePyramid, 2>, 3, 2, 8>::m_vPoint[8] =
56 : {
57 : MathVector<3>(0.58541020000000000000000000000000, 0.72360680000000000000000000000000, 0.13819660000000000000000000000000),
58 : MathVector<3>(0.13819660000000000000000000000000, 0.72360680000000000000000000000000, 0.13819660000000000000000000000000),
59 : MathVector<3>(0.13819660000000000000000000000000, 0.27639320000000000000000000000000, 0.58541020000000000000000000000000),
60 : MathVector<3>(0.13819660000000000000000000000000, 0.27639320000000000000000000000000, 0.13819660000000000000000000000000),
61 : MathVector<3>(0.72360680000000000000000000000000, 0.13819660000000000000000000000000, 0.13819660000000000000000000000000),
62 : MathVector<3>(0.72360680000000000000000000000000, 0.58541020000000000000000000000000, 0.13819660000000000000000000000000),
63 : MathVector<3>(0.27639320000000000000000000000000, 0.13819660000000000000000000000000, 0.58541020000000000000000000000000),
64 : MathVector<3>(0.27639320000000000000000000000000, 0.13819660000000000000000000000000, 0.13819660000000000000000000000000)
65 :
66 : // MORE ACCURATE
67 : //MathVector<3>(0.5854101966249685, 0.72360679774998, 0.1381966011250105),
68 : //MathVector<3>(0.1381966011250105, 0.72360679774998, 0.1381966011250105),
69 : //MathVector<3>(0.1381966011250105, 0.27639320225002, 0.5854101966249685),
70 : //MathVector<3>(0.1381966011250105, 0.27639320225002, 0.1381966011250105),
71 : //MathVector<3>(0.72360679774998, 0.1381966011250105, 0.1381966011250105),
72 : //MathVector<3>(0.72360679774998, 0.5854101966249685, 0.1381966011250105),
73 : //MathVector<3>(0.27639320225002, 0.1381966011250105, 0.5854101966249685),
74 : //MathVector<3>(0.27639320225002, 0.1381966011250105, 0.1381966011250105)
75 : };
76 :
77 : template <>
78 0 : FlexGaussQuadrature<ReferencePyramid>::FlexGaussQuadrature(int order)
79 : {
80 0 : switch(order)
81 : {
82 : case 0:
83 : case 1:
84 : case 2:
85 0 : m_order = GaussQuadrature<ReferencePyramid, 2>::order();
86 0 : m_numPoints = GaussQuadrature<ReferencePyramid, 2>::size();
87 0 : m_pvPoint = GaussQuadrature<ReferencePyramid, 2>::points();
88 0 : m_pvWeight = GaussQuadrature<ReferencePyramid, 2>::weights();
89 : break;
90 :
91 0 : default: UG_THROW("Order "<<order<<" not available for GaussQuadrature of pyramid.");
92 : }
93 0 : }
94 : }; // namespace ug
95 :
|