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 prism.
34 :
35 :
36 : #include "../quadrature.h"
37 : #include "gauss_quad_prism.h"
38 :
39 : namespace ug{
40 :
41 : template <>
42 : number GaussQuadBase<GaussQuadrature<ReferencePrism, 0>, 3, 0, 6>::m_vWeight[6] =
43 : {
44 : 0.5 * 0.16666666666666666000000000000000,
45 : 0.5 * 0.16666666666666666000000000000000,
46 : 0.5 * 0.16666666666666666000000000000000,
47 : 0.5 * 0.16666666666666666000000000000000,
48 : 0.5 * 0.16666666666666666000000000000000,
49 : 0.5 * 0.16666666666666666000000000000000
50 : };
51 :
52 : template <>
53 : MathVector<3> GaussQuadBase<GaussQuadrature<ReferencePrism, 0>, 3, 0, 6>::m_vPoint[6] =
54 : {
55 : MathVector<3>(0.00000000000000000000000000000000, 0.00000000000000000000000000000000, 0.00000000000000000000000000000000),
56 : MathVector<3>(1.00000000000000000000000000000000, 0.00000000000000000000000000000000, 0.00000000000000000000000000000000),
57 : MathVector<3>(0.00000000000000000000000000000000, 1.00000000000000000000000000000000, 0.00000000000000000000000000000000),
58 : MathVector<3>(0.00000000000000000000000000000000, 0.00000000000000000000000000000000, 1.00000000000000000000000000000000),
59 : MathVector<3>(1.00000000000000000000000000000000, 0.00000000000000000000000000000000, 1.00000000000000000000000000000000),
60 : MathVector<3>(0.00000000000000000000000000000000, 1.00000000000000000000000000000000, 1.00000000000000000000000000000000)
61 : };
62 :
63 : template <>
64 : number GaussQuadBase<GaussQuadrature<ReferencePrism, 2>, 3, 2, 6>::m_vWeight[6] =
65 : {
66 : 0.5 * 0.16666666666666666000000000000000,
67 : 0.5 * 0.16666666666666666000000000000000,
68 : 0.5 * 0.16666666666666666000000000000000,
69 : 0.5 * 0.16666666666666666000000000000000,
70 : 0.5 * 0.16666666666666666000000000000000,
71 : 0.5 * 0.16666666666666666000000000000000
72 : };
73 :
74 : template <>
75 : MathVector<3> GaussQuadBase<GaussQuadrature<ReferencePrism, 2>, 3, 2, 6>::m_vPoint[6] =
76 : {
77 : MathVector<3>(0.66666666666666666000000000000000, 0.16666666666666666000000000000000, 0.21132486540518700000000000000000),
78 : MathVector<3>(0.16666666666666666000000000000000, 0.66666666666666666000000000000000, 0.21132486540518700000000000000000),
79 : MathVector<3>(0.16666666666666666000000000000000, 0.16666666666666666000000000000000, 0.21132486540518700000000000000000),
80 : MathVector<3>(0.66666666666666666000000000000000, 0.16666666666666666000000000000000, 0.78867513459481300000000000000000),
81 : MathVector<3>(0.16666666666666666000000000000000, 0.66666666666666666000000000000000, 0.78867513459481300000000000000000),
82 : MathVector<3>(0.16666666666666666000000000000000, 0.16666666666666666000000000000000, 0.78867513459481300000000000000000)
83 : };
84 :
85 :
86 :
87 :
88 : template <>
89 0 : FlexGaussQuadrature<ReferencePrism>::FlexGaussQuadrature(int order)
90 : {
91 0 : switch(order)
92 : {
93 : case 0:
94 0 : m_order = GaussQuadrature<ReferencePrism, 0>::order();
95 0 : m_numPoints = GaussQuadrature<ReferencePrism, 0>::size();
96 0 : m_pvPoint = GaussQuadrature<ReferencePrism, 0>::points();
97 0 : m_pvWeight = GaussQuadrature<ReferencePrism, 0>::weights();
98 0 : break;
99 :
100 : case 1:
101 : case 2:
102 0 : m_order = GaussQuadrature<ReferencePrism, 2>::order();
103 0 : m_numPoints = GaussQuadrature<ReferencePrism, 2>::size();
104 0 : m_pvPoint = GaussQuadrature<ReferencePrism, 2>::points();
105 0 : m_pvWeight = GaussQuadrature<ReferencePrism, 2>::weights();
106 0 : break;
107 :
108 0 : default: UG_THROW("Order "<<order<<" not available for GaussQuadrature of prism.");
109 : }
110 0 : }
111 : }; // namespace ug
112 :
|