Peano
Loading...
Searching...
No Matches
IandRInMatricesTest.cpp
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
4
5#include <cmath>
6
7#include "../Interpolation.h"
8#include "../Restriction.h"
9
11 TestCase("toolbox::blockstructured::tests::IandRInMatricesTest") {}
12
14 testMethod(compareInterpolateLinearCaseToTensorProductPatch);
15 testMethod(compareRestrictLinearCaseToTensorProductPatch);
16}
17
20 const double data3d[] = {
21 0.59259, 1.18519, -0.14815, -0.29630, -0.14815, -0.29630, 0.03704,
22 0.07407, 1.77778, -0.44444, -0.44444, 0.11111, 1.18519, 0.59259,
23 -0.29630, -0.14815, -0.29630, -0.14815, 0.07407, 0.03704, 0.44444,
24 0.88889, -0.11111, -0.22222, 1.33333, -0.33333, 0.88889, 0.44444,
25 -0.22222, -0.11111, 0.29630, 0.59259, 0.14815, 0.29630, -0.07407,
26 -0.14815, -0.03704, -0.07407, 0.88889, 0.44444, -0.22222, -0.11111,
27 0.59259, 0.29630, 0.29630, 0.14815, -0.14815, -0.07407, -0.07407,
28 -0.03704, 0.14815, 0.29630, 0.29630, 0.59259, -0.03704, -0.07407,
29 -0.07407, -0.14815, 0.44444, 0.88889, -0.11111, -0.22222, 0.29630,
30 0.14815, 0.59259, 0.29630, -0.07407, -0.03704, -0.14815, -0.07407,
31 0.44444, 0.88889, -0.11111, -0.22222, 1.33333, -0.33333, 0.88889,
32 0.44444, -0.22222, -0.11111, 0.44444, 0.88889, -0.11111, -0.22222,
33 1.33333, -0.33333, 0.88889, 0.44444, -0.22222, -0.11111, 0.33333,
34 0.66667, 1.00000, 0.66667, 0.33333, 0.22222, 0.44444, 0.11111,
35 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
36 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
37 0.11111, 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667,
38 0.33333, 0.29630, 0.59259, -0.07407, -0.14815, 0.14815, 0.29630,
39 -0.03704, -0.07407, 0.88889, -0.22222, 0.44444, -0.11111, 0.59259,
40 0.29630, -0.14815, -0.07407, 0.29630, 0.14815, -0.07407, -0.03704,
41 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444,
42 0.22222, 0.22222, 0.11111, 0.14815, 0.29630, 0.07407, 0.14815,
43 0.07407, 0.14815, 0.03704, 0.07407, 0.44444, 0.22222, 0.22222,
44 0.11111, 0.29630, 0.14815, 0.14815, 0.07407, 0.14815, 0.07407,
45 0.07407, 0.03704, 0.07407, 0.14815, 0.14815, 0.29630, 0.03704,
46 0.07407, 0.07407, 0.14815, 0.22222, 0.44444, 0.11111, 0.22222,
47 0.14815, 0.07407, 0.29630, 0.14815, 0.07407, 0.03704, 0.14815,
48 0.07407, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
49 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630, -0.03704,
50 -0.07407, 0.29630, 0.59259, -0.07407, -0.14815, 0.44444, -0.11111,
51 0.88889, -0.22222, 0.29630, 0.14815, -0.07407, -0.03704, 0.59259,
52 0.29630, -0.14815, -0.07407, 0.11111, 0.22222, 0.22222, 0.44444,
53 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.07407,
54 0.14815, 0.03704, 0.07407, 0.14815, 0.29630, 0.07407, 0.14815,
55 0.22222, 0.11111, 0.44444, 0.22222, 0.14815, 0.07407, 0.07407,
56 0.03704, 0.29630, 0.14815, 0.14815, 0.07407, 0.03704, 0.07407,
57 0.07407, 0.14815, 0.07407, 0.14815, 0.14815, 0.29630, 0.11111,
58 0.22222, 0.22222, 0.44444, 0.07407, 0.03704, 0.14815, 0.07407,
59 0.14815, 0.07407, 0.29630, 0.14815, 0.11111, 0.22222, 0.22222,
60 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
61 0.44444, 0.88889, -0.11111, -0.22222, 1.33333, -0.33333, 0.88889,
62 0.44444, -0.22222, -0.11111, 0.33333, 0.66667, 1.00000, 0.66667,
63 0.33333, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
64 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222,
65 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
66 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.00000, 0.00000,
67 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
68 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
69 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
70 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
71 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
72 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
73 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
74 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
75 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
76 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
77 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
78 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.29630,
79 0.59259, -0.07407, -0.14815, 0.14815, 0.29630, -0.03704, -0.07407,
80 0.88889, -0.22222, 0.44444, -0.11111, 0.59259, 0.29630, -0.14815,
81 -0.07407, 0.29630, 0.14815, -0.07407, -0.03704, 0.22222, 0.44444,
82 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222,
83 0.11111, 0.14815, 0.29630, 0.07407, 0.14815, 0.07407, 0.14815,
84 0.03704, 0.07407, 0.44444, 0.22222, 0.22222, 0.11111, 0.29630,
85 0.14815, 0.14815, 0.07407, 0.14815, 0.07407, 0.07407, 0.03704,
86 0.07407, 0.14815, 0.14815, 0.29630, 0.03704, 0.07407, 0.07407,
87 0.14815, 0.22222, 0.44444, 0.11111, 0.22222, 0.14815, 0.07407,
88 0.29630, 0.14815, 0.07407, 0.03704, 0.14815, 0.07407, 0.22222,
89 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222,
90 0.22222, 0.11111, 0.14815, 0.29630, -0.03704, -0.07407, 0.29630,
91 0.59259, -0.07407, -0.14815, 0.44444, -0.11111, 0.88889, -0.22222,
92 0.29630, 0.14815, -0.07407, -0.03704, 0.59259, 0.29630, -0.14815,
93 -0.07407, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667,
94 0.22222, 0.11111, 0.44444, 0.22222, 0.07407, 0.14815, 0.03704,
95 0.07407, 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111,
96 0.44444, 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630,
97 0.14815, 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815,
98 0.07407, 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222,
99 0.44444, 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407,
100 0.29630, 0.14815, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
101 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.44444, 0.88889,
102 -0.11111, -0.22222, 1.33333, -0.33333, 0.88889, 0.44444, -0.22222,
103 -0.11111, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.22222,
104 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222,
105 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
106 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.33333, 0.66667,
107 1.00000, 0.66667, 0.33333, 0.29630, 0.59259, -0.07407, -0.14815,
108 0.14815, 0.29630, -0.03704, -0.07407, 0.88889, -0.22222, 0.44444,
109 -0.11111, 0.59259, 0.29630, -0.14815, -0.07407, 0.29630, 0.14815,
110 -0.07407, -0.03704, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
111 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630,
112 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444,
113 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407,
114 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815,
115 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444,
116 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407,
117 0.03704, 0.14815, 0.07407, 0.22222, 0.44444, 0.11111, 0.22222,
118 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815,
119 0.29630, -0.03704, -0.07407, 0.29630, 0.59259, -0.07407, -0.14815,
120 0.44444, -0.11111, 0.88889, -0.22222, 0.29630, 0.14815, -0.07407,
121 -0.03704, 0.59259, 0.29630, -0.14815, -0.07407, 0.11111, 0.22222,
122 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444,
123 0.22222, 0.07407, 0.14815, 0.03704, 0.07407, 0.14815, 0.29630,
124 0.07407, 0.14815, 0.22222, 0.11111, 0.44444, 0.22222, 0.14815,
125 0.07407, 0.07407, 0.03704, 0.29630, 0.14815, 0.14815, 0.07407,
126 0.03704, 0.07407, 0.07407, 0.14815, 0.07407, 0.14815, 0.14815,
127 0.29630, 0.11111, 0.22222, 0.22222, 0.44444, 0.07407, 0.03704,
128 0.14815, 0.07407, 0.14815, 0.07407, 0.29630, 0.14815, 0.11111,
129 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
130 0.44444, 0.22222, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
131 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
132 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
133 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
134 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
135 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
136 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.44444, 0.88889,
137 -0.11111, -0.22222, 1.33333, -0.33333, 0.88889, 0.44444, -0.22222,
138 -0.11111, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.22222,
139 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222,
140 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
141 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.33333, 0.66667,
142 1.00000, 0.66667, 0.33333, 0.29630, 0.59259, -0.07407, -0.14815,
143 0.14815, 0.29630, -0.03704, -0.07407, 0.88889, -0.22222, 0.44444,
144 -0.11111, 0.59259, 0.29630, -0.14815, -0.07407, 0.29630, 0.14815,
145 -0.07407, -0.03704, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
146 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630,
147 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444,
148 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407,
149 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815,
150 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444,
151 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407,
152 0.03704, 0.14815, 0.07407, 0.22222, 0.44444, 0.11111, 0.22222,
153 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815,
154 0.29630, -0.03704, -0.07407, 0.29630, 0.59259, -0.07407, -0.14815,
155 0.44444, -0.11111, 0.88889, -0.22222, 0.29630, 0.14815, -0.07407,
156 -0.03704, 0.59259, 0.29630, -0.14815, -0.07407, 0.11111, 0.22222,
157 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444,
158 0.22222, 0.07407, 0.14815, 0.03704, 0.07407, 0.14815, 0.29630,
159 0.07407, 0.14815, 0.22222, 0.11111, 0.44444, 0.22222, 0.14815,
160 0.07407, 0.07407, 0.03704, 0.29630, 0.14815, 0.14815, 0.07407,
161 0.03704, 0.07407, 0.07407, 0.14815, 0.07407, 0.14815, 0.14815,
162 0.29630, 0.11111, 0.22222, 0.22222, 0.44444, 0.07407, 0.03704,
163 0.14815, 0.07407, 0.14815, 0.07407, 0.29630, 0.14815, 0.11111,
164 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
165 0.44444, 0.22222, 0.44444, 0.88889, -0.11111, -0.22222, 1.33333,
166 -0.33333, 0.88889, 0.44444, -0.22222, -0.11111, 0.33333, 0.66667,
167 1.00000, 0.66667, 0.33333, 0.22222, 0.44444, 0.11111, 0.22222,
168 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111,
169 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
170 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333,
171 -0.14815, -0.29630, 0.03704, 0.07407, 0.59259, 1.18519, -0.14815,
172 -0.29630, -0.44444, 0.11111, 1.77778, -0.44444, -0.29630, -0.14815,
173 0.07407, 0.03704, 1.18519, 0.59259, -0.29630, -0.14815, -0.11111,
174 -0.22222, 0.44444, 0.88889, -0.33333, 1.33333, -0.22222, -0.11111,
175 0.88889, 0.44444, -0.07407, -0.14815, -0.03704, -0.07407, 0.29630,
176 0.59259, 0.14815, 0.29630, -0.22222, -0.11111, 0.88889, 0.44444,
177 -0.14815, -0.07407, -0.07407, -0.03704, 0.59259, 0.29630, 0.29630,
178 0.14815, -0.03704, -0.07407, -0.07407, -0.14815, 0.14815, 0.29630,
179 0.29630, 0.59259, -0.11111, -0.22222, 0.44444, 0.88889, -0.07407,
180 -0.03704, -0.14815, -0.07407, 0.29630, 0.14815, 0.59259, 0.29630,
181 -0.11111, -0.22222, 0.44444, 0.88889, -0.33333, 1.33333, -0.22222,
182 -0.11111, 0.88889, 0.44444, 0.00000, 0.00000, 0.00000, 0.00000,
183 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
184 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
185 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
186 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
187 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
188 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
189 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
190 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
191 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
192 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
193 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
194 0.00000, 0.00000, 0.00000, 0.00000, 0.29630, 0.59259, 0.14815,
195 0.29630, -0.07407, -0.14815, -0.03704, -0.07407, 0.88889, 0.44444,
196 -0.22222, -0.11111, 0.59259, 0.29630, 0.29630, 0.14815, -0.14815,
197 -0.07407, -0.07407, -0.03704, 0.14815, 0.29630, 0.29630, 0.59259,
198 -0.03704, -0.07407, -0.07407, -0.14815, 0.44444, 0.88889, -0.11111,
199 -0.22222, 0.29630, 0.14815, 0.59259, 0.29630, -0.07407, -0.03704,
200 -0.14815, -0.07407, 0.44444, 0.88889, -0.11111, -0.22222, 1.33333,
201 -0.33333, 0.88889, 0.44444, -0.22222, -0.11111, 0.29630, 0.59259,
202 0.14815, 0.29630, -0.07407, -0.14815, -0.03704, -0.07407, 0.88889,
203 0.44444, -0.22222, -0.11111, 0.59259, 0.29630, 0.29630, 0.14815,
204 -0.14815, -0.07407, -0.07407, -0.03704, 0.14815, 0.29630, 0.29630,
205 0.59259, -0.03704, -0.07407, -0.07407, -0.14815, 0.44444, 0.88889,
206 -0.11111, -0.22222, 0.29630, 0.14815, 0.59259, 0.29630, -0.07407,
207 -0.03704, -0.14815, -0.07407, 0.22222, 0.44444, 0.11111, 0.22222,
208 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111,
209 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
210 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333,
211 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444,
212 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444,
213 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.14815,
214 0.29630, 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407,
215 0.44444, 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815,
216 0.07407, 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815,
217 0.14815, 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222,
218 0.44444, 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815,
219 0.07407, 0.03704, 0.14815, 0.07407, 0.22222, 0.44444, 0.11111,
220 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
221 0.14815, 0.29630, 0.07407, 0.14815, 0.07407, 0.14815, 0.03704,
222 0.07407, 0.44444, 0.22222, 0.22222, 0.11111, 0.29630, 0.14815,
223 0.14815, 0.07407, 0.14815, 0.07407, 0.07407, 0.03704, 0.07407,
224 0.14815, 0.14815, 0.29630, 0.03704, 0.07407, 0.07407, 0.14815,
225 0.22222, 0.44444, 0.11111, 0.22222, 0.14815, 0.07407, 0.29630,
226 0.14815, 0.07407, 0.03704, 0.14815, 0.07407, 0.07407, 0.14815,
227 0.03704, 0.07407, 0.14815, 0.29630, 0.07407, 0.14815, 0.22222,
228 0.11111, 0.44444, 0.22222, 0.14815, 0.07407, 0.07407, 0.03704,
229 0.29630, 0.14815, 0.14815, 0.07407, 0.03704, 0.07407, 0.07407,
230 0.14815, 0.07407, 0.14815, 0.14815, 0.29630, 0.11111, 0.22222,
231 0.22222, 0.44444, 0.07407, 0.03704, 0.14815, 0.07407, 0.14815,
232 0.07407, 0.29630, 0.14815, 0.11111, 0.22222, 0.22222, 0.44444,
233 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.07407,
234 0.14815, 0.03704, 0.07407, 0.14815, 0.29630, 0.07407, 0.14815,
235 0.22222, 0.11111, 0.44444, 0.22222, 0.14815, 0.07407, 0.07407,
236 0.03704, 0.29630, 0.14815, 0.14815, 0.07407, 0.03704, 0.07407,
237 0.07407, 0.14815, 0.07407, 0.14815, 0.14815, 0.29630, 0.11111,
238 0.22222, 0.22222, 0.44444, 0.07407, 0.03704, 0.14815, 0.07407,
239 0.14815, 0.07407, 0.29630, 0.14815, 0.22222, 0.44444, 0.11111,
240 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
241 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
242 0.11111, 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667,
243 0.33333, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
244 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222,
245 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
246 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
247 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
248 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
249 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
250 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
251 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
252 0.00000, 0.00000, 0.00000, 0.14815, 0.29630, 0.07407, 0.14815,
253 0.07407, 0.14815, 0.03704, 0.07407, 0.44444, 0.22222, 0.22222,
254 0.11111, 0.29630, 0.14815, 0.14815, 0.07407, 0.14815, 0.07407,
255 0.07407, 0.03704, 0.07407, 0.14815, 0.14815, 0.29630, 0.03704,
256 0.07407, 0.07407, 0.14815, 0.22222, 0.44444, 0.11111, 0.22222,
257 0.14815, 0.07407, 0.29630, 0.14815, 0.07407, 0.03704, 0.14815,
258 0.07407, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
259 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630, 0.07407,
260 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444, 0.22222,
261 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407, 0.14815,
262 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815, 0.29630,
263 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444, 0.11111,
264 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407, 0.03704,
265 0.14815, 0.07407, 0.07407, 0.14815, 0.03704, 0.07407, 0.14815,
266 0.29630, 0.07407, 0.14815, 0.22222, 0.11111, 0.44444, 0.22222,
267 0.14815, 0.07407, 0.07407, 0.03704, 0.29630, 0.14815, 0.14815,
268 0.07407, 0.03704, 0.07407, 0.07407, 0.14815, 0.07407, 0.14815,
269 0.14815, 0.29630, 0.11111, 0.22222, 0.22222, 0.44444, 0.07407,
270 0.03704, 0.14815, 0.07407, 0.14815, 0.07407, 0.29630, 0.14815,
271 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
272 0.11111, 0.44444, 0.22222, 0.07407, 0.14815, 0.03704, 0.07407,
273 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111, 0.44444,
274 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630, 0.14815,
275 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815, 0.07407,
276 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222, 0.44444,
277 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407, 0.29630,
278 0.14815, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
279 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222,
280 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
281 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.22222, 0.44444,
282 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222,
283 0.11111, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667,
284 0.22222, 0.11111, 0.44444, 0.22222, 0.14815, 0.29630, 0.07407,
285 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444, 0.22222,
286 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407, 0.14815,
287 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815, 0.29630,
288 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444, 0.11111,
289 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407, 0.03704,
290 0.14815, 0.07407, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
291 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630,
292 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444,
293 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407,
294 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815,
295 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444,
296 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407,
297 0.03704, 0.14815, 0.07407, 0.07407, 0.14815, 0.03704, 0.07407,
298 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111, 0.44444,
299 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630, 0.14815,
300 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815, 0.07407,
301 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222, 0.44444,
302 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407, 0.29630,
303 0.14815, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667,
304 0.22222, 0.11111, 0.44444, 0.22222, 0.07407, 0.14815, 0.03704,
305 0.07407, 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111,
306 0.44444, 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630,
307 0.14815, 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815,
308 0.07407, 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222,
309 0.44444, 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407,
310 0.29630, 0.14815, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
311 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222,
312 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444,
313 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.22222,
314 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222,
315 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
316 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.14815, 0.29630,
317 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444,
318 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407,
319 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815,
320 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444,
321 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407,
322 0.03704, 0.14815, 0.07407, 0.22222, 0.44444, 0.11111, 0.22222,
323 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815,
324 0.29630, 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407,
325 0.44444, 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815,
326 0.07407, 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815,
327 0.14815, 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222,
328 0.44444, 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815,
329 0.07407, 0.03704, 0.14815, 0.07407, 0.07407, 0.14815, 0.03704,
330 0.07407, 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111,
331 0.44444, 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630,
332 0.14815, 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815,
333 0.07407, 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222,
334 0.44444, 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407,
335 0.29630, 0.14815, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
336 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.07407, 0.14815,
337 0.03704, 0.07407, 0.14815, 0.29630, 0.07407, 0.14815, 0.22222,
338 0.11111, 0.44444, 0.22222, 0.14815, 0.07407, 0.07407, 0.03704,
339 0.29630, 0.14815, 0.14815, 0.07407, 0.03704, 0.07407, 0.07407,
340 0.14815, 0.07407, 0.14815, 0.14815, 0.29630, 0.11111, 0.22222,
341 0.22222, 0.44444, 0.07407, 0.03704, 0.14815, 0.07407, 0.14815,
342 0.07407, 0.29630, 0.14815, 0.22222, 0.44444, 0.11111, 0.22222,
343 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111,
344 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
345 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333,
346 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444,
347 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444,
348 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, -0.07407,
349 -0.14815, -0.03704, -0.07407, 0.29630, 0.59259, 0.14815, 0.29630,
350 -0.22222, -0.11111, 0.88889, 0.44444, -0.14815, -0.07407, -0.07407,
351 -0.03704, 0.59259, 0.29630, 0.29630, 0.14815, -0.03704, -0.07407,
352 -0.07407, -0.14815, 0.14815, 0.29630, 0.29630, 0.59259, -0.11111,
353 -0.22222, 0.44444, 0.88889, -0.07407, -0.03704, -0.14815, -0.07407,
354 0.29630, 0.14815, 0.59259, 0.29630, -0.11111, -0.22222, 0.44444,
355 0.88889, -0.33333, 1.33333, -0.22222, -0.11111, 0.88889, 0.44444,
356 -0.07407, -0.14815, -0.03704, -0.07407, 0.29630, 0.59259, 0.14815,
357 0.29630, -0.22222, -0.11111, 0.88889, 0.44444, -0.14815, -0.07407,
358 -0.07407, -0.03704, 0.59259, 0.29630, 0.29630, 0.14815, -0.03704,
359 -0.07407, -0.07407, -0.14815, 0.14815, 0.29630, 0.29630, 0.59259,
360 -0.11111, -0.22222, 0.44444, 0.88889, -0.07407, -0.03704, -0.14815,
361 -0.07407, 0.29630, 0.14815, 0.59259, 0.29630, 0.00000, 0.00000,
362 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
363 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
364 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
365 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
366 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
367 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
368 0.00000, 0.44444, 0.88889, -0.11111, -0.22222, 1.33333, -0.33333,
369 0.88889, 0.44444, -0.22222, -0.11111, 0.29630, 0.59259, 0.14815,
370 0.29630, -0.07407, -0.14815, -0.03704, -0.07407, 0.88889, 0.44444,
371 -0.22222, -0.11111, 0.59259, 0.29630, 0.29630, 0.14815, -0.14815,
372 -0.07407, -0.07407, -0.03704, 0.14815, 0.29630, 0.29630, 0.59259,
373 -0.03704, -0.07407, -0.07407, -0.14815, 0.44444, 0.88889, -0.11111,
374 -0.22222, 0.29630, 0.14815, 0.59259, 0.29630, -0.07407, -0.03704,
375 -0.14815, -0.07407, 0.44444, 0.88889, -0.11111, -0.22222, 1.33333,
376 -0.33333, 0.88889, 0.44444, -0.22222, -0.11111, -0.14815, -0.29630,
377 0.59259, 1.18519, 0.03704, 0.07407, -0.14815, -0.29630, -0.44444,
378 1.77778, 0.11111, -0.44444, -0.29630, -0.14815, 1.18519, 0.59259,
379 0.07407, 0.03704, -0.29630, -0.14815, 0.33333, 0.66667, 1.00000,
380 0.66667, 0.33333, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
381 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222,
382 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444,
383 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, -0.11111,
384 -0.22222, 0.44444, 0.88889, -0.33333, 1.33333, -0.22222, -0.11111,
385 0.88889, 0.44444, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667,
386 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.14815, 0.29630,
387 0.07407, 0.14815, 0.07407, 0.14815, 0.03704, 0.07407, 0.44444,
388 0.22222, 0.22222, 0.11111, 0.29630, 0.14815, 0.14815, 0.07407,
389 0.14815, 0.07407, 0.07407, 0.03704, 0.07407, 0.14815, 0.14815,
390 0.29630, 0.03704, 0.07407, 0.07407, 0.14815, 0.22222, 0.44444,
391 0.11111, 0.22222, 0.14815, 0.07407, 0.29630, 0.14815, 0.07407,
392 0.03704, 0.14815, 0.07407, 0.22222, 0.44444, 0.11111, 0.22222,
393 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, -0.07407,
394 -0.14815, 0.29630, 0.59259, -0.03704, -0.07407, 0.14815, 0.29630,
395 -0.22222, 0.88889, -0.11111, 0.44444, -0.14815, -0.07407, 0.59259,
396 0.29630, -0.07407, -0.03704, 0.29630, 0.14815, 0.11111, 0.22222,
397 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444,
398 0.22222, 0.07407, 0.14815, 0.03704, 0.07407, 0.14815, 0.29630,
399 0.07407, 0.14815, 0.22222, 0.11111, 0.44444, 0.22222, 0.14815,
400 0.07407, 0.07407, 0.03704, 0.29630, 0.14815, 0.14815, 0.07407,
401 0.03704, 0.07407, 0.07407, 0.14815, 0.07407, 0.14815, 0.14815,
402 0.29630, 0.11111, 0.22222, 0.22222, 0.44444, 0.07407, 0.03704,
403 0.14815, 0.07407, 0.14815, 0.07407, 0.29630, 0.14815, 0.11111,
404 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
405 0.44444, 0.22222, -0.03704, -0.07407, 0.14815, 0.29630, -0.07407,
406 -0.14815, 0.29630, 0.59259, -0.11111, 0.44444, -0.22222, 0.88889,
407 -0.07407, -0.03704, 0.29630, 0.14815, -0.14815, -0.07407, 0.59259,
408 0.29630, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.22222,
409 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222,
410 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333,
411 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.33333, 0.66667,
412 1.00000, 0.66667, 0.33333, -0.11111, -0.22222, 0.44444, 0.88889,
413 -0.33333, 1.33333, -0.22222, -0.11111, 0.88889, 0.44444, 0.00000,
414 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
415 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
416 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
417 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
418 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
419 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
420 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
421 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
422 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
423 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
424 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
425 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
426 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444,
427 0.22222, 0.22222, 0.11111, 0.14815, 0.29630, 0.07407, 0.14815,
428 0.07407, 0.14815, 0.03704, 0.07407, 0.44444, 0.22222, 0.22222,
429 0.11111, 0.29630, 0.14815, 0.14815, 0.07407, 0.14815, 0.07407,
430 0.07407, 0.03704, 0.07407, 0.14815, 0.14815, 0.29630, 0.03704,
431 0.07407, 0.07407, 0.14815, 0.22222, 0.44444, 0.11111, 0.22222,
432 0.14815, 0.07407, 0.29630, 0.14815, 0.07407, 0.03704, 0.14815,
433 0.07407, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
434 0.44444, 0.22222, 0.22222, 0.11111, -0.07407, -0.14815, 0.29630,
435 0.59259, -0.03704, -0.07407, 0.14815, 0.29630, -0.22222, 0.88889,
436 -0.11111, 0.44444, -0.14815, -0.07407, 0.59259, 0.29630, -0.07407,
437 -0.03704, 0.29630, 0.14815, 0.11111, 0.22222, 0.22222, 0.44444,
438 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.07407,
439 0.14815, 0.03704, 0.07407, 0.14815, 0.29630, 0.07407, 0.14815,
440 0.22222, 0.11111, 0.44444, 0.22222, 0.14815, 0.07407, 0.07407,
441 0.03704, 0.29630, 0.14815, 0.14815, 0.07407, 0.03704, 0.07407,
442 0.07407, 0.14815, 0.07407, 0.14815, 0.14815, 0.29630, 0.11111,
443 0.22222, 0.22222, 0.44444, 0.07407, 0.03704, 0.14815, 0.07407,
444 0.14815, 0.07407, 0.29630, 0.14815, 0.11111, 0.22222, 0.22222,
445 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
446 -0.03704, -0.07407, 0.14815, 0.29630, -0.07407, -0.14815, 0.29630,
447 0.59259, -0.11111, 0.44444, -0.22222, 0.88889, -0.07407, -0.03704,
448 0.29630, 0.14815, -0.14815, -0.07407, 0.59259, 0.29630, 0.33333,
449 0.66667, 1.00000, 0.66667, 0.33333, 0.22222, 0.44444, 0.11111,
450 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
451 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
452 0.11111, 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667,
453 0.33333, -0.11111, -0.22222, 0.44444, 0.88889, -0.33333, 1.33333,
454 -0.22222, -0.11111, 0.88889, 0.44444, 0.22222, 0.44444, 0.11111,
455 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
456 0.14815, 0.29630, 0.07407, 0.14815, 0.07407, 0.14815, 0.03704,
457 0.07407, 0.44444, 0.22222, 0.22222, 0.11111, 0.29630, 0.14815,
458 0.14815, 0.07407, 0.14815, 0.07407, 0.07407, 0.03704, 0.07407,
459 0.14815, 0.14815, 0.29630, 0.03704, 0.07407, 0.07407, 0.14815,
460 0.22222, 0.44444, 0.11111, 0.22222, 0.14815, 0.07407, 0.29630,
461 0.14815, 0.07407, 0.03704, 0.14815, 0.07407, 0.22222, 0.44444,
462 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222,
463 0.11111, -0.07407, -0.14815, 0.29630, 0.59259, -0.03704, -0.07407,
464 0.14815, 0.29630, -0.22222, 0.88889, -0.11111, 0.44444, -0.14815,
465 -0.07407, 0.59259, 0.29630, -0.07407, -0.03704, 0.29630, 0.14815,
466 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
467 0.11111, 0.44444, 0.22222, 0.07407, 0.14815, 0.03704, 0.07407,
468 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111, 0.44444,
469 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630, 0.14815,
470 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815, 0.07407,
471 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222, 0.44444,
472 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407, 0.29630,
473 0.14815, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667,
474 0.22222, 0.11111, 0.44444, 0.22222, -0.03704, -0.07407, 0.14815,
475 0.29630, -0.07407, -0.14815, 0.29630, 0.59259, -0.11111, 0.44444,
476 -0.22222, 0.88889, -0.07407, -0.03704, 0.29630, 0.14815, -0.14815,
477 -0.07407, 0.59259, 0.29630, 0.00000, 0.00000, 0.00000, 0.00000,
478 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
479 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
480 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
481 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
482 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
483 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.33333,
484 0.66667, 1.00000, 0.66667, 0.33333, 0.22222, 0.44444, 0.11111,
485 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
486 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
487 0.11111, 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667,
488 0.33333, -0.11111, -0.22222, 0.44444, 0.88889, -0.33333, 1.33333,
489 -0.22222, -0.11111, 0.88889, 0.44444, 0.22222, 0.44444, 0.11111,
490 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
491 0.14815, 0.29630, 0.07407, 0.14815, 0.07407, 0.14815, 0.03704,
492 0.07407, 0.44444, 0.22222, 0.22222, 0.11111, 0.29630, 0.14815,
493 0.14815, 0.07407, 0.14815, 0.07407, 0.07407, 0.03704, 0.07407,
494 0.14815, 0.14815, 0.29630, 0.03704, 0.07407, 0.07407, 0.14815,
495 0.22222, 0.44444, 0.11111, 0.22222, 0.14815, 0.07407, 0.29630,
496 0.14815, 0.07407, 0.03704, 0.14815, 0.07407, 0.22222, 0.44444,
497 0.11111, 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222,
498 0.11111, -0.07407, -0.14815, 0.29630, 0.59259, -0.03704, -0.07407,
499 0.14815, 0.29630, -0.22222, 0.88889, -0.11111, 0.44444, -0.14815,
500 -0.07407, 0.59259, 0.29630, -0.07407, -0.03704, 0.29630, 0.14815,
501 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
502 0.11111, 0.44444, 0.22222, 0.07407, 0.14815, 0.03704, 0.07407,
503 0.14815, 0.29630, 0.07407, 0.14815, 0.22222, 0.11111, 0.44444,
504 0.22222, 0.14815, 0.07407, 0.07407, 0.03704, 0.29630, 0.14815,
505 0.14815, 0.07407, 0.03704, 0.07407, 0.07407, 0.14815, 0.07407,
506 0.14815, 0.14815, 0.29630, 0.11111, 0.22222, 0.22222, 0.44444,
507 0.07407, 0.03704, 0.14815, 0.07407, 0.14815, 0.07407, 0.29630,
508 0.14815, 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667,
509 0.22222, 0.11111, 0.44444, 0.22222, -0.03704, -0.07407, 0.14815,
510 0.29630, -0.07407, -0.14815, 0.29630, 0.59259, -0.11111, 0.44444,
511 -0.22222, 0.88889, -0.07407, -0.03704, 0.29630, 0.14815, -0.14815,
512 -0.07407, 0.59259, 0.29630, 0.33333, 0.66667, 1.00000, 0.66667,
513 0.33333, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
514 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222,
515 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
516 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, -0.11111, -0.22222,
517 0.44444, 0.88889, -0.33333, 1.33333, -0.22222, -0.11111, 0.88889,
518 0.44444, -0.11111, -0.22222, 0.44444, 0.88889, -0.33333, 1.33333,
519 -0.22222, -0.11111, 0.88889, 0.44444, -0.07407, -0.14815, -0.03704,
520 -0.07407, 0.29630, 0.59259, 0.14815, 0.29630, -0.22222, -0.11111,
521 0.88889, 0.44444, -0.14815, -0.07407, -0.07407, -0.03704, 0.59259,
522 0.29630, 0.29630, 0.14815, -0.03704, -0.07407, -0.07407, -0.14815,
523 0.14815, 0.29630, 0.29630, 0.59259, -0.11111, -0.22222, 0.44444,
524 0.88889, -0.07407, -0.03704, -0.14815, -0.07407, 0.29630, 0.14815,
525 0.59259, 0.29630, -0.11111, -0.22222, 0.44444, 0.88889, -0.33333,
526 1.33333, -0.22222, -0.11111, 0.88889, 0.44444, 0.03704, 0.07407,
527 -0.14815, -0.29630, -0.14815, -0.29630, 0.59259, 1.18519, 0.11111,
528 -0.44444, -0.44444, 1.77778, 0.07407, 0.03704, -0.29630, -0.14815,
529 -0.29630, -0.14815, 1.18519, 0.59259, 0.00000, 0.00000, 0.00000,
530 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
531 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
532 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
533 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
534 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
535 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
536 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
537 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
538 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
539 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
540 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
541 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
542 };
543
544 const int indices3d[] = {
545 2, 3, 8, 9, 32, 33, 38, 39, 3, 9, 33, 39, 3, 4, 9,
546 10, 33, 34, 39, 40, 2, 3, 32, 33, 3, 33, 3, 4, 33, 34,
547 2, 3, 8, 9, 32, 33, 38, 39, 3, 9, 33, 39, 3, 4, 9,
548 10, 33, 34, 39, 40, 2, 3, 8, 9, 32, 33, 38, 39, 3, 9,
549 33, 39, 3, 4, 9, 10, 33, 34, 39, 40, 8, 9, 38, 39, 9,
550 39, 9, 10, 39, 40, 2, 3, 8, 9, 3, 9, 3, 4, 9, 10,
551 2, 3, 3, 3, 4, 2, 3, 8, 9, 3, 9, 3, 4, 9, 10,
552 2, 3, 8, 9, 3, 9, 3, 4, 9, 10, 8, 9, 9, 9, 10,
553 2, 3, 8, 9, 32, 33, 38, 39, 3, 9, 33, 39, 3, 4, 9,
554 10, 33, 34, 39, 40, 2, 3, 32, 33, 3, 33, 3, 4, 33, 34,
555 2, 3, 8, 9, 32, 33, 38, 39, 3, 9, 33, 39, 3, 4, 9,
556 10, 33, 34, 39, 40, 2, 3, 8, 9, 32, 33, 38, 39, 3, 9,
557 33, 39, 3, 4, 9, 10, 33, 34, 39, 40, 8, 9, 38, 39, 9,
558 39, 9, 10, 39, 40, 2, 3, 8, 9, 32, 33, 38, 39, 3, 9,
559 33, 39, 3, 4, 9, 10, 33, 34, 39, 40, 2, 3, 32, 33, 3,
560 33, 3, 4, 33, 34, 2, 3, 8, 9, 32, 33, 38, 39, 3, 9,
561 33, 39, 3, 4, 9, 10, 33, 34, 39, 40, 2, 3, 8, 9, 32,
562 33, 38, 39, 3, 9, 33, 39, 3, 4, 9, 10, 33, 34, 39, 40,
563 8, 9, 38, 39, 9, 39, 9, 10, 39, 40, 32, 33, 38, 39, 33,
564 39, 33, 34, 39, 40, 32, 33, 33, 33, 34, 32, 33, 38, 39, 33,
565 39, 33, 34, 39, 40, 32, 33, 38, 39, 33, 39, 33, 34, 39, 40,
566 38, 39, 39, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 32, 33, 38, 39, 62, 63, 68, 69, 33, 39, 63, 69, 33, 34, 39,
573 40, 63, 64, 69, 70, 32, 33, 62, 63, 33, 63, 33, 34, 63, 64,
574 32, 33, 38, 39, 62, 63, 68, 69, 33, 39, 63, 69, 33, 34, 39,
575 40, 63, 64, 69, 70, 32, 33, 38, 39, 62, 63, 68, 69, 33, 39,
576 63, 69, 33, 34, 39, 40, 63, 64, 69, 70, 38, 39, 68, 69, 39,
577 69, 39, 40, 69, 70, 32, 33, 38, 39, 62, 63, 68, 69, 33, 39,
578 63, 69, 33, 34, 39, 40, 63, 64, 69, 70, 32, 33, 62, 63, 33,
579 63, 33, 34, 63, 64, 32, 33, 38, 39, 62, 63, 68, 69, 33, 39,
580 63, 69, 33, 34, 39, 40, 63, 64, 69, 70, 32, 33, 38, 39, 62,
581 63, 68, 69, 33, 39, 63, 69, 33, 34, 39, 40, 63, 64, 69, 70,
582 38, 39, 68, 69, 39, 69, 39, 40, 69, 70, 62, 63, 68, 69, 63,
583 69, 63, 64, 69, 70, 62, 63, 63, 63, 64, 62, 63, 68, 69, 63,
584 69, 63, 64, 69, 70, 62, 63, 68, 69, 63, 69, 63, 64, 69, 70,
585 68, 69, 69, 69, 70, 62, 63, 68, 69, 92, 93, 98, 99, 63, 69,
586 93, 99, 63, 64, 69, 70, 93, 94, 99, 100, 62, 63, 92, 93, 63,
587 93, 63, 64, 93, 94, 62, 63, 68, 69, 92, 93, 98, 99, 63, 69,
588 93, 99, 63, 64, 69, 70, 93, 94, 99, 100, 62, 63, 68, 69, 92,
589 93, 98, 99, 63, 69, 93, 99, 63, 64, 69, 70, 93, 94, 99, 100,
590 68, 69, 98, 99, 69, 99, 69, 70, 99, 100, 62, 63, 68, 69, 92,
591 93, 98, 99, 63, 69, 93, 99, 63, 64, 69, 70, 93, 94, 99, 100,
592 62, 63, 92, 93, 63, 93, 63, 64, 93, 94, 62, 63, 68, 69, 92,
593 93, 98, 99, 63, 69, 93, 99, 63, 64, 69, 70, 93, 94, 99, 100,
594 62, 63, 68, 69, 92, 93, 98, 99, 63, 69, 93, 99, 63, 64, 69,
595 70, 93, 94, 99, 100, 68, 69, 98, 99, 69, 99, 69, 70, 99, 100,
596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599 92, 93, 98, 99, 93, 99, 93, 94, 99, 100, 92, 93, 93, 93, 94,
600 92, 93, 98, 99, 93, 99, 93, 94, 99, 100, 92, 93, 98, 99, 93,
601 99, 93, 94, 99, 100, 98, 99, 99, 99, 100, 92, 93, 98, 99, 122,
602 123, 128, 129, 93, 99, 123, 129, 93, 94, 99, 100, 123, 124, 129, 130,
603 92, 93, 122, 123, 93, 123, 93, 94, 123, 124, 92, 93, 98, 99, 122,
604 123, 128, 129, 93, 99, 123, 129, 93, 94, 99, 100, 123, 124, 129, 130,
605 92, 93, 98, 99, 122, 123, 128, 129, 93, 99, 123, 129, 93, 94, 99,
606 100, 123, 124, 129, 130, 98, 99, 128, 129, 99, 129, 99, 100, 129, 130,
607 92, 93, 98, 99, 122, 123, 128, 129, 93, 99, 123, 129, 93, 94, 99,
608 100, 123, 124, 129, 130, 92, 93, 122, 123, 93, 123, 93, 94, 123, 124,
609 92, 93, 98, 99, 122, 123, 128, 129, 93, 99, 123, 129, 93, 94, 99,
610 100, 123, 124, 129, 130, 92, 93, 98, 99, 122, 123, 128, 129, 93, 99,
611 123, 129, 93, 94, 99, 100, 123, 124, 129, 130, 98, 99, 128, 129, 99,
612 129, 99, 100, 129, 130, 122, 123, 128, 129, 123, 129, 123, 124, 129, 130,
613 122, 123, 123, 123, 124, 122, 123, 128, 129, 123, 129, 123, 124, 129, 130,
614 122, 123, 128, 129, 123, 129, 123, 124, 129, 130, 128, 129, 129, 129, 130,
615 92, 93, 98, 99, 122, 123, 128, 129, 93, 99, 123, 129, 93, 94, 99,
616 100, 123, 124, 129, 130, 92, 93, 122, 123, 93, 123, 93, 94, 123, 124,
617 92, 93, 98, 99, 122, 123, 128, 129, 93, 99, 123, 129, 93, 94, 99,
618 100, 123, 124, 129, 130, 92, 93, 98, 99, 122, 123, 128, 129, 93, 99,
619 123, 129, 93, 94, 99, 100, 123, 124, 129, 130, 98, 99, 128, 129, 99,
620 129, 99, 100, 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
626 8, 9, 14, 15, 38, 39, 44, 45, 9, 15, 39, 45, 9, 10, 15,
627 16, 39, 40, 45, 46, 8, 9, 14, 15, 38, 39, 44, 45, 9, 15,
628 39, 45, 9, 10, 15, 16, 39, 40, 45, 46, 14, 15, 44, 45, 15,
629 45, 15, 16, 45, 46, 14, 15, 20, 21, 44, 45, 50, 51, 15, 21,
630 45, 51, 15, 16, 21, 22, 45, 46, 51, 52, 14, 15, 20, 21, 44,
631 45, 50, 51, 15, 21, 45, 51, 15, 16, 21, 22, 45, 46, 51, 52,
632 8, 9, 14, 15, 9, 15, 9, 10, 15, 16, 8, 9, 14, 15, 9,
633 15, 9, 10, 15, 16, 14, 15, 15, 15, 16, 14, 15, 20, 21, 15,
634 21, 15, 16, 21, 22, 14, 15, 20, 21, 15, 21, 15, 16, 21, 22,
635 8, 9, 14, 15, 38, 39, 44, 45, 9, 15, 39, 45, 9, 10, 15,
636 16, 39, 40, 45, 46, 8, 9, 14, 15, 38, 39, 44, 45, 9, 15,
637 39, 45, 9, 10, 15, 16, 39, 40, 45, 46, 14, 15, 44, 45, 15,
638 45, 15, 16, 45, 46, 14, 15, 20, 21, 44, 45, 50, 51, 15, 21,
639 45, 51, 15, 16, 21, 22, 45, 46, 51, 52, 14, 15, 20, 21, 44,
640 45, 50, 51, 15, 21, 45, 51, 15, 16, 21, 22, 45, 46, 51, 52,
641 8, 9, 14, 15, 38, 39, 44, 45, 9, 15, 39, 45, 9, 10, 15,
642 16, 39, 40, 45, 46, 8, 9, 14, 15, 38, 39, 44, 45, 9, 15,
643 39, 45, 9, 10, 15, 16, 39, 40, 45, 46, 14, 15, 44, 45, 15,
644 45, 15, 16, 45, 46, 14, 15, 20, 21, 44, 45, 50, 51, 15, 21,
645 45, 51, 15, 16, 21, 22, 45, 46, 51, 52, 14, 15, 20, 21, 44,
646 45, 50, 51, 15, 21, 45, 51, 15, 16, 21, 22, 45, 46, 51, 52,
647 38, 39, 44, 45, 39, 45, 39, 40, 45, 46, 38, 39, 44, 45, 39,
648 45, 39, 40, 45, 46, 44, 45, 45, 45, 46, 44, 45, 50, 51, 45,
649 51, 45, 46, 51, 52, 44, 45, 50, 51, 45, 51, 45, 46, 51, 52,
650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653 38, 39, 44, 45, 68, 69, 74, 75, 39, 45, 69, 75, 39, 40, 45,
654 46, 69, 70, 75, 76, 38, 39, 44, 45, 68, 69, 74, 75, 39, 45,
655 69, 75, 39, 40, 45, 46, 69, 70, 75, 76, 44, 45, 74, 75, 45,
656 75, 45, 46, 75, 76, 44, 45, 50, 51, 74, 75, 80, 81, 45, 51,
657 75, 81, 45, 46, 51, 52, 75, 76, 81, 82, 44, 45, 50, 51, 74,
658 75, 80, 81, 45, 51, 75, 81, 45, 46, 51, 52, 75, 76, 81, 82,
659 38, 39, 44, 45, 68, 69, 74, 75, 39, 45, 69, 75, 39, 40, 45,
660 46, 69, 70, 75, 76, 38, 39, 44, 45, 68, 69, 74, 75, 39, 45,
661 69, 75, 39, 40, 45, 46, 69, 70, 75, 76, 44, 45, 74, 75, 45,
662 75, 45, 46, 75, 76, 44, 45, 50, 51, 74, 75, 80, 81, 45, 51,
663 75, 81, 45, 46, 51, 52, 75, 76, 81, 82, 44, 45, 50, 51, 74,
664 75, 80, 81, 45, 51, 75, 81, 45, 46, 51, 52, 75, 76, 81, 82,
665 68, 69, 74, 75, 69, 75, 69, 70, 75, 76, 68, 69, 74, 75, 69,
666 75, 69, 70, 75, 76, 74, 75, 75, 75, 76, 74, 75, 80, 81, 75,
667 81, 75, 76, 81, 82, 74, 75, 80, 81, 75, 81, 75, 76, 81, 82,
668 68, 69, 74, 75, 98, 99, 104, 105, 69, 75, 99, 105, 69, 70, 75,
669 76, 99, 100, 105, 106, 68, 69, 74, 75, 98, 99, 104, 105, 69, 75,
670 99, 105, 69, 70, 75, 76, 99, 100, 105, 106, 74, 75, 104, 105, 75,
671 105, 75, 76, 105, 106, 74, 75, 80, 81, 104, 105, 110, 111, 75, 81,
672 105, 111, 75, 76, 81, 82, 105, 106, 111, 112, 74, 75, 80, 81, 104,
673 105, 110, 111, 75, 81, 105, 111, 75, 76, 81, 82, 105, 106, 111, 112,
674 68, 69, 74, 75, 98, 99, 104, 105, 69, 75, 99, 105, 69, 70, 75,
675 76, 99, 100, 105, 106, 68, 69, 74, 75, 98, 99, 104, 105, 69, 75,
676 99, 105, 69, 70, 75, 76, 99, 100, 105, 106, 74, 75, 104, 105, 75,
677 105, 75, 76, 105, 106, 74, 75, 80, 81, 104, 105, 110, 111, 75, 81,
678 105, 111, 75, 76, 81, 82, 105, 106, 111, 112, 74, 75, 80, 81, 104,
679 105, 110, 111, 75, 81, 105, 111, 75, 76, 81, 82, 105, 106, 111, 112,
680 98, 99, 104, 105, 99, 105, 99, 100, 105, 106, 98, 99, 104, 105, 99,
681 105, 99, 100, 105, 106, 104, 105, 105, 105, 106, 104, 105, 110, 111, 105,
682 111, 105, 106, 111, 112, 104, 105, 110, 111, 105, 111, 105, 106, 111, 112,
683 98, 99, 104, 105, 128, 129, 134, 135, 99, 105, 129, 135, 99, 100, 105,
684 106, 129, 130, 135, 136, 98, 99, 104, 105, 128, 129, 134, 135, 99, 105,
685 129, 135, 99, 100, 105, 106, 129, 130, 135, 136, 104, 105, 134, 135, 105,
686 135, 105, 106, 135, 136, 104, 105, 110, 111, 134, 135, 140, 141, 105, 111,
687 135, 141, 105, 106, 111, 112, 135, 136, 141, 142, 104, 105, 110, 111, 134,
688 135, 140, 141, 105, 111, 135, 141, 105, 106, 111, 112, 135, 136, 141, 142,
689 98, 99, 104, 105, 128, 129, 134, 135, 99, 105, 129, 135, 99, 100, 105,
690 106, 129, 130, 135, 136, 98, 99, 104, 105, 128, 129, 134, 135, 99, 105,
691 129, 135, 99, 100, 105, 106, 129, 130, 135, 136, 104, 105, 134, 135, 105,
692 135, 105, 106, 135, 136, 104, 105, 110, 111, 134, 135, 140, 141, 105, 111,
693 135, 141, 105, 106, 111, 112, 135, 136, 141, 142, 104, 105, 110, 111, 134,
694 135, 140, 141, 105, 111, 135, 141, 105, 106, 111, 112, 135, 136, 141, 142,
695 128, 129, 134, 135, 129, 135, 129, 130, 135, 136, 128, 129, 134, 135, 129,
696 135, 129, 130, 135, 136, 134, 135, 135, 135, 136, 134, 135, 140, 141, 135,
697 141, 135, 136, 141, 142, 134, 135, 140, 141, 135, 141, 135, 136, 141, 142,
698 98, 99, 104, 105, 128, 129, 134, 135, 99, 105, 129, 135, 99, 100, 105,
699 106, 129, 130, 135, 136, 98, 99, 104, 105, 128, 129, 134, 135, 99, 105,
700 129, 135, 99, 100, 105, 106, 129, 130, 135, 136, 104, 105, 134, 135, 105,
701 135, 105, 106, 135, 136, 104, 105, 110, 111, 134, 135, 140, 141, 105, 111,
702 135, 141, 105, 106, 111, 112, 135, 136, 141, 142, 104, 105, 110, 111, 134,
703 135, 140, 141, 105, 111, 135, 141, 105, 106, 111, 112, 135, 136, 141, 142,
704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 20, 21, 50, 51, 21, 51, 21, 22, 51, 52, 20, 21, 26, 27, 50,
708 51, 56, 57, 21, 27, 51, 57, 21, 22, 27, 28, 51, 52, 57, 58,
709 20, 21, 26, 27, 50, 51, 56, 57, 21, 27, 51, 57, 21, 22, 27,
710 28, 51, 52, 57, 58, 26, 27, 56, 57, 27, 57, 27, 28, 57, 58,
711 20, 21, 26, 27, 50, 51, 56, 57, 21, 27, 51, 57, 21, 22, 27,
712 28, 51, 52, 57, 58, 20, 21, 21, 21, 22, 20, 21, 26, 27, 21,
713 27, 21, 22, 27, 28, 20, 21, 26, 27, 21, 27, 21, 22, 27, 28,
714 26, 27, 27, 27, 28, 20, 21, 26, 27, 21, 27, 21, 22, 27, 28,
715 20, 21, 50, 51, 21, 51, 21, 22, 51, 52, 20, 21, 26, 27, 50,
716 51, 56, 57, 21, 27, 51, 57, 21, 22, 27, 28, 51, 52, 57, 58,
717 20, 21, 26, 27, 50, 51, 56, 57, 21, 27, 51, 57, 21, 22, 27,
718 28, 51, 52, 57, 58, 26, 27, 56, 57, 27, 57, 27, 28, 57, 58,
719 20, 21, 26, 27, 50, 51, 56, 57, 21, 27, 51, 57, 21, 22, 27,
720 28, 51, 52, 57, 58, 20, 21, 50, 51, 21, 51, 21, 22, 51, 52,
721 20, 21, 26, 27, 50, 51, 56, 57, 21, 27, 51, 57, 21, 22, 27,
722 28, 51, 52, 57, 58, 20, 21, 26, 27, 50, 51, 56, 57, 21, 27,
723 51, 57, 21, 22, 27, 28, 51, 52, 57, 58, 26, 27, 56, 57, 27,
724 57, 27, 28, 57, 58, 20, 21, 26, 27, 50, 51, 56, 57, 21, 27,
725 51, 57, 21, 22, 27, 28, 51, 52, 57, 58, 50, 51, 51, 51, 52,
726 50, 51, 56, 57, 51, 57, 51, 52, 57, 58, 50, 51, 56, 57, 51,
727 57, 51, 52, 57, 58, 56, 57, 57, 57, 58, 50, 51, 56, 57, 51,
728 57, 51, 52, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 50, 51, 80, 81, 51, 81, 51, 52, 81, 82, 50, 51, 56, 57, 80,
735 81, 86, 87, 51, 57, 81, 87, 51, 52, 57, 58, 81, 82, 87, 88,
736 50, 51, 56, 57, 80, 81, 86, 87, 51, 57, 81, 87, 51, 52, 57,
737 58, 81, 82, 87, 88, 56, 57, 86, 87, 57, 87, 57, 58, 87, 88,
738 50, 51, 56, 57, 80, 81, 86, 87, 51, 57, 81, 87, 51, 52, 57,
739 58, 81, 82, 87, 88, 50, 51, 80, 81, 51, 81, 51, 52, 81, 82,
740 50, 51, 56, 57, 80, 81, 86, 87, 51, 57, 81, 87, 51, 52, 57,
741 58, 81, 82, 87, 88, 50, 51, 56, 57, 80, 81, 86, 87, 51, 57,
742 81, 87, 51, 52, 57, 58, 81, 82, 87, 88, 56, 57, 86, 87, 57,
743 87, 57, 58, 87, 88, 50, 51, 56, 57, 80, 81, 86, 87, 51, 57,
744 81, 87, 51, 52, 57, 58, 81, 82, 87, 88, 80, 81, 81, 81, 82,
745 80, 81, 86, 87, 81, 87, 81, 82, 87, 88, 80, 81, 86, 87, 81,
746 87, 81, 82, 87, 88, 86, 87, 87, 87, 88, 80, 81, 86, 87, 81,
747 87, 81, 82, 87, 88, 80, 81, 110, 111, 81, 111, 81, 82, 111, 112,
748 80, 81, 86, 87, 110, 111, 116, 117, 81, 87, 111, 117, 81, 82, 87,
749 88, 111, 112, 117, 118, 80, 81, 86, 87, 110, 111, 116, 117, 81, 87,
750 111, 117, 81, 82, 87, 88, 111, 112, 117, 118, 86, 87, 116, 117, 87,
751 117, 87, 88, 117, 118, 80, 81, 86, 87, 110, 111, 116, 117, 81, 87,
752 111, 117, 81, 82, 87, 88, 111, 112, 117, 118, 80, 81, 110, 111, 81,
753 111, 81, 82, 111, 112, 80, 81, 86, 87, 110, 111, 116, 117, 81, 87,
754 111, 117, 81, 82, 87, 88, 111, 112, 117, 118, 80, 81, 86, 87, 110,
755 111, 116, 117, 81, 87, 111, 117, 81, 82, 87, 88, 111, 112, 117, 118,
756 86, 87, 116, 117, 87, 117, 87, 88, 117, 118, 80, 81, 86, 87, 110,
757 111, 116, 117, 81, 87, 111, 117, 81, 82, 87, 88, 111, 112, 117, 118,
758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 110, 111, 111, 111, 112, 110, 111, 116, 117, 111, 117, 111, 112, 117, 118,
762 110, 111, 116, 117, 111, 117, 111, 112, 117, 118, 116, 117, 117, 117, 118,
763 110, 111, 116, 117, 111, 117, 111, 112, 117, 118, 110, 111, 140, 141, 111,
764 141, 111, 112, 141, 142, 110, 111, 116, 117, 140, 141, 146, 147, 111, 117,
765 141, 147, 111, 112, 117, 118, 141, 142, 147, 148, 110, 111, 116, 117, 140,
766 141, 146, 147, 111, 117, 141, 147, 111, 112, 117, 118, 141, 142, 147, 148,
767 116, 117, 146, 147, 117, 147, 117, 118, 147, 148, 110, 111, 116, 117, 140,
768 141, 146, 147, 111, 117, 141, 147, 111, 112, 117, 118, 141, 142, 147, 148,
769 110, 111, 140, 141, 111, 141, 111, 112, 141, 142, 110, 111, 116, 117, 140,
770 141, 146, 147, 111, 117, 141, 147, 111, 112, 117, 118, 141, 142, 147, 148,
771 110, 111, 116, 117, 140, 141, 146, 147, 111, 117, 141, 147, 111, 112, 117,
772 118, 141, 142, 147, 148, 116, 117, 146, 147, 117, 147, 117, 118, 147, 148,
773 110, 111, 116, 117, 140, 141, 146, 147, 111, 117, 141, 147, 111, 112, 117,
774 118, 141, 142, 147, 148, 140, 141, 141, 141, 142, 140, 141, 146, 147, 141,
775 147, 141, 142, 147, 148, 140, 141, 146, 147, 141, 147, 141, 142, 147, 148,
776 146, 147, 147, 147, 148, 140, 141, 146, 147, 141, 147, 141, 142, 147, 148,
777 110, 111, 140, 141, 111, 141, 111, 112, 141, 142, 110, 111, 116, 117, 140,
778 141, 146, 147, 111, 117, 141, 147, 111, 112, 117, 118, 141, 142, 147, 148,
779 110, 111, 116, 117, 140, 141, 146, 147, 111, 117, 141, 147, 111, 112, 117,
780 118, 141, 142, 147, 148, 116, 117, 146, 147, 117, 147, 117, 118, 147, 148,
781 110, 111, 116, 117, 140, 141, 146, 147, 111, 117, 141, 147, 111, 112, 117,
782 118, 141, 142, 147, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 };
789
790 const int indptr3d[] = {
791 0, 8, 12, 20, 24, 26, 30, 38, 42, 50, 58, 62, 70, 74, 76,
792 80, 84, 86, 90, 92, 93, 95, 99, 101, 105, 109, 111, 115, 117, 118,
793 120, 128, 132, 140, 144, 146, 150, 158, 162, 170, 178, 182, 190, 194, 196,
794 200, 208, 212, 220, 224, 226, 230, 238, 242, 250, 258, 262, 270, 274, 276,
795 280, 284, 286, 290, 292, 293, 295, 299, 301, 305, 309, 311, 315, 317, 318,
796 320, 0, 8, 12, 20, 24, 26, 30, 38, 42, 50, 58, 62, 70, 74,
797 76, 80, 88, 92, 100, 104, 106, 110, 118, 122, 130, 138, 142, 150, 154,
798 156, 160, 164, 166, 170, 172, 173, 175, 179, 181, 185, 189, 191, 195, 197,
799 198, 200, 208, 212, 220, 224, 226, 230, 238, 242, 250, 258, 262, 270, 274,
800 276, 280, 288, 292, 300, 304, 306, 310, 318, 322, 330, 338, 342, 350, 354,
801 356, 360, 0, 4, 6, 10, 12, 13, 15, 19, 21, 25, 29, 31, 35,
802 37, 38, 40, 48, 52, 60, 64, 66, 70, 78, 82, 90, 98, 102, 110,
803 114, 116, 120, 128, 132, 140, 144, 146, 150, 158, 162, 170, 178, 182, 190,
804 194, 196, 200, 204, 206, 210, 212, 213, 215, 219, 221, 225, 229, 231, 235,
805 237, 238, 240, 248, 252, 260, 264, 266, 270, 278, 282, 290, 298, 302, 310,
806 314, 316, 320, 0, 8, 12, 20, 28, 32, 40, 44, 46, 50, 58, 62,
807 70, 78, 82, 90, 94, 96, 100, 104, 106, 110, 112, 113, 115, 119, 121,
808 125, 129, 131, 135, 143, 147, 155, 163, 167, 175, 179, 181, 185, 193, 197,
809 205, 213, 217, 225, 233, 237, 245, 253, 257, 265, 269, 271, 275, 283, 287,
810 295, 303, 307, 315, 319, 321, 325, 329, 331, 335, 337, 338, 340, 344, 346,
811 350, 354, 356, 360, 0, 8, 12, 20, 28, 32, 40, 44, 46, 50, 58,
812 62, 70, 78, 82, 90, 98, 102, 110, 118, 122, 130, 134, 136, 140, 148,
813 152, 160, 168, 172, 180, 184, 186, 190, 194, 196, 200, 202, 203, 205, 209,
814 211, 215, 219, 221, 225, 233, 237, 245, 253, 257, 265, 269, 271, 275, 283,
815 287, 295, 303, 307, 315, 323, 327, 335, 343, 347, 355, 359, 361, 365, 373,
816 377, 385, 393, 397, 405, 0, 4, 6, 10, 14, 16, 20, 22, 23, 25,
817 29, 31, 35, 39, 41, 45, 53, 57, 65, 73, 77, 85, 89, 91, 95,
818 103, 107, 115, 123, 127, 135, 143, 147, 155, 163, 167, 175, 179, 181, 185,
819 193, 197, 205, 213, 217, 225, 229, 231, 235, 239, 241, 245, 247, 248, 250,
820 254, 256, 260, 264, 266, 270, 278, 282, 290, 298, 302, 310, 314, 316, 320,
821 328, 332, 340, 348, 352, 360, 0, 4, 6, 10, 18, 22, 30, 38, 42,
822 50, 54, 56, 60, 68, 72, 80, 82, 83, 85, 89, 91, 95, 99, 101,
823 105, 107, 108, 110, 114, 116, 120, 124, 126, 130, 138, 142, 150, 158, 162,
824 170, 174, 176, 180, 188, 192, 200, 204, 206, 210, 218, 222, 230, 238, 242,
825 250, 254, 256, 260, 268, 272, 280, 282, 283, 285, 289, 291, 295, 299, 301,
826 305, 307, 308, 310, 314, 316, 320, 0, 4, 6, 10, 18, 22, 30, 38,
827 42, 50, 54, 56, 60, 68, 72, 80, 84, 86, 90, 98, 102, 110, 118,
828 122, 130, 134, 136, 140, 148, 152, 160, 162, 163, 165, 169, 171, 175, 179,
829 181, 185, 187, 188, 190, 194, 196, 200, 204, 206, 210, 218, 222, 230, 238,
830 242, 250, 254, 256, 260, 268, 272, 280, 284, 286, 290, 298, 302, 310, 318,
831 322, 330, 334, 336, 340, 348, 352, 360, 0, 2, 3, 5, 9, 11, 15,
832 19, 21, 25, 27, 28, 30, 34, 36, 40, 44, 46, 50, 58, 62, 70,
833 78, 82, 90, 94, 96, 100, 108, 112, 120, 124, 126, 130, 138, 142, 150,
834 158, 162, 170, 174, 176, 180, 188, 192, 200, 202, 203, 205, 209, 211, 215,
835 219, 221, 225, 227, 228, 230, 234, 236, 240, 244, 246, 250, 258, 262, 270,
836 278, 282, 290, 294, 296, 300, 308, 312, 320,
837 };
838
839 const double data2d[] = {
840 0.44444, 0.88889, -0.11111, -0.22222, 1.33333, -0.33333, 0.88889,
841 0.44444, -0.22222, -0.11111, 0.33333, 0.66667, 1.00000, 0.66667,
842 0.33333, 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333,
843 0.44444, 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222,
844 0.44444, 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222,
845 0.33333, 0.66667, 1.00000, 0.66667, 0.33333, 0.00000, 0.00000,
846 0.00000, 0.00000, 0.00000, 0.22222, 0.44444, 0.11111, 0.22222,
847 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111, 0.11111,
848 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222, 0.11111,
849 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667, 0.33333,
850 0.22222, 0.44444, 0.11111, 0.22222, 0.66667, 0.33333, 0.44444,
851 0.22222, 0.22222, 0.11111, 0.11111, 0.22222, 0.22222, 0.44444,
852 0.33333, 0.66667, 0.22222, 0.11111, 0.44444, 0.22222, 0.33333,
853 0.66667, 1.00000, 0.66667, 0.33333, 0.22222, 0.44444, 0.11111,
854 0.22222, 0.66667, 0.33333, 0.44444, 0.22222, 0.22222, 0.11111,
855 0.11111, 0.22222, 0.22222, 0.44444, 0.33333, 0.66667, 0.22222,
856 0.11111, 0.44444, 0.22222, 0.33333, 0.66667, 1.00000, 0.66667,
857 0.33333, -0.11111, -0.22222, 0.44444, 0.88889, -0.33333, 1.33333,
858 -0.22222, -0.11111, 0.88889, 0.44444, 0.00000, 0.00000, 0.00000,
859 0.00000, 0.00000,
860 };
861
862 const int indices2d[] = {
863 2, 3, 8, 9, 3, 9, 3, 4, 9, 10, 2, 3, 3, 3, 4, 2, 3,
864 8, 9, 3, 9, 3, 4, 9, 10, 2, 3, 8, 9, 3, 9, 3, 4, 9,
865 10, 8, 9, 9, 9, 10, 0, 0, 0, 0, 0, 8, 9, 14, 15, 9, 15,
866 9, 10, 15, 16, 8, 9, 14, 15, 9, 15, 9, 10, 15, 16, 14, 15, 15,
867 15, 16, 14, 15, 20, 21, 15, 21, 15, 16, 21, 22, 14, 15, 20, 21, 15,
868 21, 15, 16, 21, 22, 20, 21, 21, 21, 22, 20, 21, 26, 27, 21, 27, 21,
869 22, 27, 28, 20, 21, 26, 27, 21, 27, 21, 22, 27, 28, 26, 27, 27, 27,
870 28, 20, 21, 26, 27, 21, 27, 21, 22, 27, 28, 0, 0, 0, 0, 0,
871 };
872
873 const int indptr2d[] = {
874 0, 4, 6, 10, 12, 13, 15, 19, 21, 25, 29, 31, 35, 37, 38, 40,
875 0, 4, 6, 10, 14, 16, 20, 22, 23, 25, 29, 31, 35, 39, 41, 45,
876 0, 2, 3, 5, 9, 11, 15, 19, 21, 25, 27, 28, 30, 34, 36, 40,
877 };
878
879 const double normalInterpolationMatrix1d[] = {
880 0.0000,
881 0.33333,
882 0.66667,
883 0.0000,
884 0.00000,
885 0.0000,
886 0.0000,
887 0.0000,
888 1.0000,
889 0.0000,
890 0.0000,
891 0.0000,
892 0.0000,
893 0.0000,
894 0.66667,
895 0.33333,
896 0.0000,
897 0.0000};
898
899 const double tangentInterpolationMatrix1d[] = {
900 1.33333, -0.33333, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
901 0.0000, 0.0000, 0.66667, 0.33333, 0.0000, 0.0000, 0.0000, 0.33333,
902 0.66667, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
903 0.0000, 0.0000, 0.66667, 0.33333, 0.0000, 0.0000, 0.0000, 0.33333,
904 0.66667, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
905 0.0000, 0.0000, 0.66667, 0.33333, 0.0000, 0.0000, 0.0000, 0.33333,
906 0.66667, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
907 0.0000, 0.0000, 0.66667, 0.33333, 0.0000, 0.0000, 0.0000, 0.33333,
908 0.66667, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000,
909 0.0000, -0.33333, 1.33333};
910
911 constexpr int patchSize = 5;
912 constexpr int overlap = 3;
913 constexpr int unknowns = 1;
914 const int faceSize = unknowns * std::pow(patchSize, Dimensions - 1) * overlap
915 * 2;
916
917 double* coarseData = tarch::allocateMemory<double>(
918 faceSize,
920 );
921 double* fineDataTensorProduct = tarch::allocateMemory<double>(
922 faceSize,
924 );
925 double* fineDataMatrix = tarch::allocateMemory<double>(
926 faceSize,
928 );
929 for (int n = 0; n < faceSize; n++)
930 fineDataTensorProduct[n] = 0;
931 for (int n = 0; n < faceSize; n++)
932 fineDataMatrix[n] = 0;
933
934 for (int n = 0; n < faceSize; n++)
935 coarseData[n] = static_cast<double>(n + 1) / 16.0;
936
937 for (int i = 0; i < 3; i++) {
938 for (int j = 0; j < 3; j++) {
939 for (int k = 0; k < 3; k++) {
943 );
944
945 for (int axis = 0; axis < 3; axis++) {
946 peano4::datamanagement::FaceMarker marker1(dummyEvent, axis);
947 int patchIndexLinear = -1;
948 if constexpr (Dimensions == 2)
949 patchIndexLinear = marker1.getRelativePositionWithinFatherCell()(
950 (axis + 1) % Dimensions
951 );
952 if constexpr (Dimensions == 3)
953 patchIndexLinear = marker1.getRelativePositionWithinFatherCell()(
954 (axis + 1) % Dimensions
955 ) * 3
957 (axis + 2) % Dimensions
958 );
959
960 for (int n = 0; n < faceSize; n++)
961 fineDataTensorProduct[n] = 0;
962 for (int n = 0; n < faceSize; n++)
963 fineDataMatrix[n] = 0;
964
966 marker1,
967 patchSize,
968 overlap,
969 unknowns,
970 normalInterpolationMatrix1d,
971 tangentInterpolationMatrix1d,
972 coarseData,
973 fineDataTensorProduct
974 );
975 if constexpr (Dimensions == 2)
977 marker1,
978 patchSize,
979 overlap,
980 unknowns,
981 data2d,
982 indices2d,
983 indptr2d,
984 patchIndexLinear * 45,
985 patchIndexLinear * 16,
986 coarseData,
987 fineDataMatrix
988 );
989 if constexpr (Dimensions == 3)
991 marker1,
992 patchSize,
993 overlap,
994 unknowns,
995 data3d,
996 indices3d,
997 indptr3d,
998 patchIndexLinear * 405,
999 patchIndexLinear * 76,
1000 coarseData,
1001 fineDataMatrix
1002 );
1003
1004 for (int n = 0; n < faceSize; n++)
1006 fineDataTensorProduct[n],
1007 fineDataMatrix[n],
1008 0.01,
1009 axis,
1010 n
1011 );
1012
1013 for (int n = 0; n < faceSize; n++)
1014 fineDataTensorProduct[n] = 0;
1015 for (int n = 0; n < faceSize; n++)
1016 fineDataMatrix[n] = 0;
1017
1019 marker2(dummyEvent, axis + Dimensions);
1021 marker2,
1022 patchSize,
1023 overlap,
1024 unknowns,
1025 normalInterpolationMatrix1d,
1026 tangentInterpolationMatrix1d,
1027 coarseData,
1028 fineDataTensorProduct
1029 );
1030 if constexpr (Dimensions == 2)
1032 marker2,
1033 patchSize,
1034 overlap,
1035 unknowns,
1036 data2d,
1037 indices2d,
1038 indptr2d,
1039 patchIndexLinear * 45,
1040 patchIndexLinear * 16,
1041 coarseData,
1042 fineDataMatrix
1043 );
1044 if constexpr (Dimensions == 3)
1046 marker2,
1047 patchSize,
1048 overlap,
1049 unknowns,
1050 data3d,
1051 indices3d,
1052 indptr3d,
1053 patchIndexLinear * 405,
1054 patchIndexLinear * 76,
1055 coarseData,
1056 fineDataMatrix
1057 );
1058
1059 for (int n = 0; n < faceSize; n++)
1061 fineDataTensorProduct[n],
1062 fineDataMatrix[n],
1063 0.01,
1064 axis + Dimensions,
1065 n
1066 );
1067 }
1068 }
1069 }
1070 }
1071
1073 tarch::freeMemory(fineDataTensorProduct, tarch::MemoryLocation::Heap);
1075}
1076
1077
1080 const double data3d[] = {
1081 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1082 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1083 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1084 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1085 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1086 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1087 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1088 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1089 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1090 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1091 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1092 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1093 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1094 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1095 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1096 0.333333, 0.333333, 0.333333, -2.000000, 3.000000, -5.000000, 6.000000,
1097 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1098 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1099 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1100 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1101 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1102 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1103 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1104 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1105 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1106 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1107 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1108 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1109 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1110 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1111 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1112 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1113 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1114 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1115 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1116 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1117 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1118 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1119 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1120 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1121 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1122 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1123 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1124 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1125 0.333333, 0.333333, 0.333333, -2.000000, 3.000000, -5.000000, 6.000000,
1126 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1127 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1128 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1129 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1130 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1131 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1132 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1133 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1134 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1135 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1136 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1137 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1138 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1139 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1140 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1141 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1142 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1143 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1144 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1145 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1146 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1147 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1148 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1149 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1150 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1151 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1152 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1153 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1154 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1155 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1156 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1157 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1158 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1159 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1160 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1161 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1162 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1163 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1164 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1165 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1166 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1167 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1168 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1169 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1170 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1171 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1172 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1173 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1174 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1175 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1176 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1177 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1178 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1179 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1180 0.333333, 0.333333, 0.333333, -2.000000, 3.000000, -5.000000, 6.000000,
1181 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1182 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1183 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1184 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1185 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1186 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1187 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1188 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1189 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1190 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1191 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1192 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1193 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1194 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1195 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1196 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1197 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1198 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1199 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1200 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1201 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1202 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1203 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1204 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1205 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1206 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1207 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1208 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
1209 0.333333, 0.333333, 0.333333, -2.000000, 3.000000, -5.000000, 6.000000,
1210 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1211 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1212 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1213 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111, 0.111111,
1214 0.111111, 0.111111, -0.666667, 1.000000, -0.666667, 1.000000, -0.666667,
1215 1.000000, -1.666667, 2.000000, -1.666667, 2.000000, -1.666667, 2.000000,
1216 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1217 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1218 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037,
1219 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, 0.037037, -0.222222,
1220 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333,
1221 -0.222222, 0.333333, -0.222222, 0.333333, -0.222222, 0.333333, -0.222222,
1222 0.333333, -0.222222, 0.333333, -0.555556, 0.666667, -0.555556, 0.666667,
1223 -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556,
1224 0.666667, -0.555556, 0.666667, -0.555556, 0.666667, -0.555556, 0.666667,
1225 };
1226
1227 const int indices3d[] = {
1228 3, 4, 5, 9, 10, 11, 15, 16, 17, 33, 34, 35, 39, 40, 41,
1229 45, 46, 47, 63, 64, 65, 69, 70, 71, 75, 76, 77, 4, 5, 10,
1230 11, 16, 17, 34, 35, 40, 41, 46, 47, 64, 65, 70, 71, 76, 77,
1231 4, 5, 10, 11, 16, 17, 34, 35, 40, 41, 46, 47, 64, 65, 70,
1232 71, 76, 77, 27, 28, 29, 57, 58, 59, 87, 88, 89, 28, 29, 58,
1233 59, 88, 89, 28, 29, 58, 59, 88, 89, 123, 124, 125, 129, 130, 131,
1234 135, 136, 137, 124, 125, 130, 131, 136, 137, 124, 125, 130, 131, 136, 137,
1235 147, 148, 149, 148, 149, 148, 149, 9, 10, 11, 15, 16, 17, 21, 22,
1236 23, 39, 40, 41, 45, 46, 47, 51, 52, 53, 69, 70, 71, 75, 76,
1237 77, 81, 82, 83, 10, 11, 16, 17, 22, 23, 40, 41, 46, 47, 52,
1238 53, 70, 71, 76, 77, 82, 83, 10, 11, 16, 17, 22, 23, 40, 41,
1239 46, 47, 52, 53, 70, 71, 76, 77, 82, 83, 129, 130, 131, 135, 136,
1240 137, 141, 142, 143, 130, 131, 136, 137, 142, 143, 130, 131, 136, 137, 142,
1241 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1243 4, 5, 33, 34, 35, 63, 64, 65, 4, 5, 34, 35, 64, 65, 4,
1244 5, 34, 35, 64, 65, 15, 16, 17, 21, 22, 23, 27, 28, 29, 45,
1245 46, 47, 51, 52, 53, 57, 58, 59, 75, 76, 77, 81, 82, 83, 87,
1246 88, 89, 16, 17, 22, 23, 28, 29, 46, 47, 52, 53, 58, 59, 76,
1247 77, 82, 83, 88, 89, 16, 17, 22, 23, 28, 29, 46, 47, 52, 53,
1248 58, 59, 76, 77, 82, 83, 88, 89, 123, 124, 125, 124, 125, 124, 125,
1249 135, 136, 137, 141, 142, 143, 147, 148, 149, 136, 137, 142, 143, 148, 149,
1250 136, 137, 142, 143, 148, 149, 33, 34, 35, 39, 40, 41, 45, 46, 47,
1251 63, 64, 65, 69, 70, 71, 75, 76, 77, 93, 94, 95, 99, 100, 101,
1252 105, 106, 107, 34, 35, 40, 41, 46, 47, 64, 65, 70, 71, 76, 77,
1253 94, 95, 100, 101, 106, 107, 34, 35, 40, 41, 46, 47, 64, 65, 70,
1254 71, 76, 77, 94, 95, 100, 101, 106, 107, 57, 58, 59, 87, 88, 89,
1255 117, 118, 119, 58, 59, 88, 89, 118, 119, 58, 59, 88, 89, 118, 119,
1256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40,
1258 41, 45, 46, 47, 51, 52, 53, 69, 70, 71, 75, 76, 77, 81, 82,
1259 83, 99, 100, 101, 105, 106, 107, 111, 112, 113, 40, 41, 46, 47, 52,
1260 53, 70, 71, 76, 77, 82, 83, 100, 101, 106, 107, 112, 113, 40, 41,
1261 46, 47, 52, 53, 70, 71, 76, 77, 82, 83, 100, 101, 106, 107, 112,
1262 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1265 0, 0, 0, 0, 0, 33, 34, 35, 63, 64, 65, 93, 94, 95, 34,
1266 35, 64, 65, 94, 95, 34, 35, 64, 65, 94, 95, 45, 46, 47, 51,
1267 52, 53, 57, 58, 59, 75, 76, 77, 81, 82, 83, 87, 88, 89, 105,
1268 106, 107, 111, 112, 113, 117, 118, 119, 46, 47, 52, 53, 58, 59, 76,
1269 77, 82, 83, 88, 89, 106, 107, 112, 113, 118, 119, 46, 47, 52, 53,
1270 58, 59, 76, 77, 82, 83, 88, 89, 106, 107, 112, 113, 118, 119, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5,
1273 9, 10, 11, 15, 16, 17, 4, 5, 10, 11, 16, 17, 4, 5, 10,
1274 11, 16, 17, 27, 28, 29, 28, 29, 28, 29, 63, 64, 65, 69, 70,
1275 71, 75, 76, 77, 93, 94, 95, 99, 100, 101, 105, 106, 107, 123, 124,
1276 125, 129, 130, 131, 135, 136, 137, 64, 65, 70, 71, 76, 77, 94, 95,
1277 100, 101, 106, 107, 124, 125, 130, 131, 136, 137, 64, 65, 70, 71, 76,
1278 77, 94, 95, 100, 101, 106, 107, 124, 125, 130, 131, 136, 137, 87, 88,
1279 89, 117, 118, 119, 147, 148, 149, 88, 89, 118, 119, 148, 149, 88, 89,
1280 118, 119, 148, 149, 9, 10, 11, 15, 16, 17, 21, 22, 23, 10, 11,
1281 16, 17, 22, 23, 10, 11, 16, 17, 22, 23, 69, 70, 71, 75, 76,
1282 77, 81, 82, 83, 99, 100, 101, 105, 106, 107, 111, 112, 113, 129, 130,
1283 131, 135, 136, 137, 141, 142, 143, 70, 71, 76, 77, 82, 83, 100, 101,
1284 106, 107, 112, 113, 130, 131, 136, 137, 142, 143, 70, 71, 76, 77, 82,
1285 83, 100, 101, 106, 107, 112, 113, 130, 131, 136, 137, 142, 143, 0, 0,
1286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 4,
1288 5, 4, 5, 15, 16, 17, 21, 22, 23, 27, 28, 29, 16, 17, 22,
1289 23, 28, 29, 16, 17, 22, 23, 28, 29, 63, 64, 65, 93, 94, 95,
1290 123, 124, 125, 64, 65, 94, 95, 124, 125, 64, 65, 94, 95, 124, 125,
1291 75, 76, 77, 81, 82, 83, 87, 88, 89, 105, 106, 107, 111, 112, 113,
1292 117, 118, 119, 135, 136, 137, 141, 142, 143, 147, 148, 149, 76, 77, 82,
1293 83, 88, 89, 106, 107, 112, 113, 118, 119, 136, 137, 142, 143, 148, 149,
1294 76, 77, 82, 83, 88, 89, 106, 107, 112, 113, 118, 119, 136, 137, 142,
1295 143, 148, 149,
1296 };
1297
1298 const int indptr3d[] = {
1299 0, 27, 45, 63, 72, 78, 84, 93, 99, 105, 108, 110, 112, 0, 27, 45, 63,
1300 72, 78, 84, 0, 0, 0, 0, 0, 0, 0, 9, 15, 21, 48, 66, 84, 87,
1301 89, 91, 100, 106, 112, 0, 27, 45, 63, 72, 78, 84, 0, 0, 0, 0, 0,
1302 0, 0, 27, 45, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 15,
1303 21, 48, 66, 84, 0, 0, 0, 0, 0, 0, 0, 9, 15, 21, 24, 26, 28,
1304 55, 73, 91, 100, 106, 112, 0, 9, 15, 21, 48, 66, 84, 0, 0, 0, 0,
1305 0, 0, 0, 3, 5, 7, 16, 22, 28, 37, 43, 49, 76, 94, 112,
1306 };
1307
1308
1309 const double data2d[] = {
1310 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111,
1311 0.11111, 0.11111, -0.66667, 1.00000, -0.66667, 1.00000, -0.66667,
1312 1.00000, -1.66667, 2.00000, -1.66667, 2.00000, -1.66667, 2.00000,
1313 0.33333, 0.33333, 0.33333, -2.00000, 3.00000, -5.00000, 6.00000,
1314 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111,
1315 0.11111, 0.11111, -0.66667, 1.00000, -0.66667, 1.00000, -0.66667,
1316 1.00000, -1.66667, 2.00000, -1.66667, 2.00000, -1.66667, 2.00000,
1317 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
1318 0.33333, 0.33333, 0.33333, -2.00000, 3.00000, -5.00000, 6.00000,
1319 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111, 0.11111,
1320 0.11111, 0.11111, -0.66667, 1.00000, -0.66667, 1.00000, -0.66667,
1321 1.00000, -1.66667, 2.00000, -1.66667, 2.00000, -1.66667, 2.00000,
1322 };
1323
1324 const int indices2d[] = {
1325 3, 4, 5, 9, 10, 11, 15, 16, 17, 4, 5, 10, 11, 16, 17, 4, 5,
1326 10, 11, 16, 17, 27, 28, 29, 28, 29, 28, 29, 9, 10, 11, 15, 16, 17,
1327 21, 22, 23, 10, 11, 16, 17, 22, 23, 10, 11, 16, 17, 22, 23, 0, 0,
1328 0, 0, 0, 0, 0, 3, 4, 5, 4, 5, 4, 5, 15, 16, 17, 21, 22,
1329 23, 27, 28, 29, 16, 17, 22, 23, 28, 29, 16, 17, 22, 23, 28, 29,
1330 };
1331
1332 const int indptr2d[] = {
1333 0, 9, 15, 21, 24, 26, 28, 0, 9, 15, 21, 0, 0, 0, 0, 3, 5, 7, 16, 22, 28,
1334 };
1335
1336 const double normalRestrictionMatrix1d[] = {
1337 0.0000,
1338 0.0000,
1339 0.0000,
1340 0.33333,
1341 0.33333,
1342 0.33333,
1343 0.0000,
1344 0.0000,
1345 0.0000,
1346 0.0000,
1347 -2.0000,
1348 3.0000,
1349 0.0000,
1350 0.0000,
1351 0.0000,
1352 0.0000,
1353 -5.0000,
1354 6.0000};
1355
1356 const double tangentRestrictionMatrix1d[] = {
1357 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1358 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1359 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1360 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1361 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1362 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1363 0.0000, 1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1364 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
1365 0.0000, 1.0000, 0.0000};
1366
1367 constexpr int patchSize = 5;
1368 constexpr int overlap = 3;
1369 constexpr int unknowns = 5;
1370 const int faceSize = unknowns * std::pow(patchSize, Dimensions - 1) * overlap
1371 * 2;
1372
1373 double* fineData = tarch::allocateMemory<double>(
1374 faceSize,
1376 );
1377 double* coarseDataTensorProduct = tarch::allocateMemory<double>(
1378 faceSize,
1380 );
1381 double* coarseDataMatrix = tarch::allocateMemory<double>(
1382 faceSize,
1384 );
1385
1386 for (int n = 0; n < faceSize; n++)
1387 fineData[n] = static_cast<double>(n + 1) / 16.0;
1388
1389 for (int i = 0; i < 3; i++) {
1390 for (int j = 0; j < 3; j++) {
1391 for (int k = 0; k < 3; k++) {
1393 if constexpr (Dimensions == 2){
1394 dummyEvent.setRelativePositionToFather(
1396 );
1397 }
1398 if constexpr (Dimensions == 3){
1399 dummyEvent.setRelativePositionToFather(
1401 );
1402 }
1403
1404 for (int axis = 0; axis < Dimensions; axis++) {
1405 peano4::datamanagement::FaceMarker marker1(dummyEvent, axis);
1407 marker2(dummyEvent, axis + Dimensions);
1408
1409 int patchIndexLinear = -1;
1410 if constexpr (Dimensions == 2)
1411 patchIndexLinear = marker1.getRelativePositionWithinFatherCell()(
1412 (axis + 1) % Dimensions
1413 );
1414 if constexpr (Dimensions == 3)
1415 patchIndexLinear
1417 (axis + 1) % Dimensions
1418 )
1419 + 3
1421 (axis + 2) % Dimensions
1422 );
1423
1424 for (int n = 0; n < faceSize; n++)
1425 coarseDataTensorProduct[n] = 0;
1426 for (int n = 0; n < faceSize; n++)
1427 coarseDataMatrix[n] = 0;
1428
1430 marker1,
1431 patchSize,
1432 overlap,
1433 unknowns,
1434 normalRestrictionMatrix1d,
1435 tangentRestrictionMatrix1d,
1436 fineData,
1437 coarseDataTensorProduct
1438 );
1439 if constexpr (Dimensions == 2)
1441 marker1,
1442 patchSize,
1443 overlap,
1444 unknowns,
1445 data2d,
1446 indices2d,
1447 indptr2d,
1448 patchIndexLinear * 28,
1449 patchIndexLinear * 7,
1450 fineData,
1451 coarseDataMatrix
1452 );
1453 if constexpr (Dimensions == 3)
1455 marker1,
1456 patchSize,
1457 overlap,
1458 unknowns,
1459 data3d,
1460 indices3d,
1461 indptr3d,
1462 patchIndexLinear * 112,
1463 patchIndexLinear * 13,
1464 fineData,
1465 coarseDataMatrix
1466 );
1467
1468 for (int n = 0; n < faceSize; n++)
1470 coarseDataTensorProduct[n],
1471 coarseDataMatrix[n],
1472 0.01,
1473 axis,
1474 n,
1476 );
1477
1478 for (int n = 0; n < faceSize; n++)
1479 coarseDataTensorProduct[n] = 0;
1480 for (int n = 0; n < faceSize; n++)
1481 coarseDataMatrix[n] = 0;
1482
1484 marker2,
1485 patchSize,
1486 overlap,
1487 unknowns,
1488 normalRestrictionMatrix1d,
1489 tangentRestrictionMatrix1d,
1490 fineData,
1491 coarseDataTensorProduct
1492 );
1493 if constexpr (Dimensions == 2)
1495 marker2,
1496 patchSize,
1497 overlap,
1498 unknowns,
1499 data2d,
1500 indices2d,
1501 indptr2d,
1502 patchIndexLinear * 28,
1503 patchIndexLinear * 7,
1504 fineData,
1505 coarseDataMatrix
1506 );
1507 if constexpr (Dimensions == 3)
1509 marker2,
1510 patchSize,
1511 overlap,
1512 unknowns,
1513 data3d,
1514 indices3d,
1515 indptr3d,
1516 patchIndexLinear * 112,
1517 patchIndexLinear * 13,
1518 fineData,
1519 coarseDataMatrix
1520 );
1521
1522 for (int n = 0; n < faceSize; n++)
1524 coarseDataTensorProduct[n],
1525 coarseDataMatrix[n],
1526 0.01,
1527 axis + Dimensions,
1528 n,
1530 );
1531 }
1532 }
1533 }
1534 }
1535
1537 tarch::freeMemory(coarseDataTensorProduct, tarch::MemoryLocation::Heap);
1539}
#define validateNumericalEqualsWithEpsWithParams2(actualValue, validValue, eps, param0, param1)
Definition TestMacros.h:461
#define testMethod(name)
Run a test method and check for errors.
Definition TestMacros.h:24
#define validateNumericalEqualsWithEpsWithParams3(actualValue, validValue, eps, param0, param1, param2)
Definition TestMacros.h:473
virtual void run() override
This routine is triggered by the TestCaseCollection.
void compareInterpolateLinearCaseToTensorProductPatch()
The matrix interpolation and restriction scheme is tested by comparing the results to the tensor prod...
void freeMemory(void *data, MemoryLocation location, int device=accelerator::Device::HostDevice)
Free memory.
@ Heap
Create data on the heap of the local device.
void interpolateHaloLayer_AoS_tensor_product(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, const double *__restrict__ coarseGridFaceValues, double *__restrict__ fineGridFaceValues)
This is a wrapper around the toolbox routines.
void interpolateHaloLayer_AoS_matrix(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, const double *__restrict__ coarseGridCellValues, const double *__restrict__ coarseGridFaceValues, double *__restrict__ fineGridFaceValues)
void restrictHaloLayer_AoS_matrix(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
void restrictHaloLayer_AoS_tensor_product(const peano4::datamanagement::FaceMarker &marker, int numberOfDoFsPerAxisInPatch, int overlap, int unknowns, double *fineGridValues, double *coarseGridValues)
Provide information about selected face.
Definition FaceMarker.h:35
tarch::la::Vector< Dimensions, int > getRelativePositionWithinFatherCell() const
Return relative position within father cell.
void setRelativePositionToFather(const tarch::la::Vector< Dimensions, int > &value)
Simple vector class.
Definition Vector.h:150