libMesh
cell_hex20.C
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 // C++ includes
20 
21 // Local includes
22 #include "libmesh/side.h"
23 #include "libmesh/cell_hex20.h"
24 #include "libmesh/edge_edge3.h"
25 #include "libmesh/face_quad8.h"
26 
27 namespace libMesh
28 {
29 
30 
31 
32 // ------------------------------------------------------------
33 // Hex20 class static member initializations
34 
35 const unsigned int Hex20::side_nodes_map[6][8] =
36  {
37  {0, 3, 2, 1, 11, 10, 9, 8}, // Side 0
38  {0, 1, 5, 4, 8, 13, 16, 12}, // Side 1
39  {1, 2, 6, 5, 9, 14, 17, 13}, // Side 2
40  {2, 3, 7, 6, 10, 15, 18, 14}, // Side 3
41  {3, 0, 4, 7, 11, 12, 19, 15}, // Side 4
42  {4, 5, 6, 7, 16, 17, 18, 19} // Side 5
43  };
44 
45 const unsigned int Hex20::edge_nodes_map[12][3] =
46  {
47  {0, 1, 8}, // Edge 0
48  {1, 2, 9}, // Edge 1
49  {2, 3, 10}, // Edge 2
50  {0, 3, 11}, // Edge 3
51  {0, 4, 12}, // Edge 4
52  {1, 5, 13}, // Edge 5
53  {2, 6, 14}, // Edge 6
54  {3, 7, 15}, // Edge 7
55  {4, 5, 16}, // Edge 8
56  {5, 6, 17}, // Edge 9
57  {6, 7, 18}, // Edge 10
58  {4, 7, 19} // Edge 11
59  };
60 
61 
62 
63 // ------------------------------------------------------------
64 // Hex20 class member functions
65 
66 bool Hex20::is_vertex(const unsigned int i) const
67 {
68  if (i < 8)
69  return true;
70  return false;
71 }
72 
73 bool Hex20::is_edge(const unsigned int i) const
74 {
75  if (i > 7)
76  return true;
77  return false;
78 }
79 
80 bool Hex20::is_face(const unsigned int) const
81 {
82  return false;
83 }
84 
85 bool Hex20::is_node_on_side(const unsigned int n,
86  const unsigned int s) const
87 {
88  libmesh_assert_less (s, n_sides());
89  for (unsigned int i = 0; i != 8; ++i)
90  if (side_nodes_map[s][i] == n)
91  return true;
92  return false;
93 }
94 
95 bool Hex20::is_node_on_edge(const unsigned int n,
96  const unsigned int e) const
97 {
98  libmesh_assert_less (e, n_edges());
99  for (unsigned int i = 0; i != 3; ++i)
100  if (edge_nodes_map[e][i] == n)
101  return true;
102  return false;
103 }
104 
105 
106 
107 bool Hex20::has_affine_map() const
108 {
109  // Make sure x-edge endpoints are affine
110  Point v = this->point(1) - this->point(0);
111  if (!v.relative_fuzzy_equals(this->point(2) - this->point(3)) ||
112  !v.relative_fuzzy_equals(this->point(5) - this->point(4)) ||
113  !v.relative_fuzzy_equals(this->point(6) - this->point(7)))
114  return false;
115  // Make sure x-edges are straight
116  v /= 2;
117  if (!v.relative_fuzzy_equals(this->point(8) - this->point(0)) ||
118  !v.relative_fuzzy_equals(this->point(10) - this->point(3)) ||
119  !v.relative_fuzzy_equals(this->point(16) - this->point(4)) ||
120  !v.relative_fuzzy_equals(this->point(18) - this->point(7)))
121  return false;
122  // Make sure xz-faces are identical parallelograms
123  v = this->point(4) - this->point(0);
124  if (!v.relative_fuzzy_equals(this->point(7) - this->point(3)))
125  return false;
126  v /= 2;
127  if (!v.relative_fuzzy_equals(this->point(12) - this->point(0)) ||
128  !v.relative_fuzzy_equals(this->point(13) - this->point(1)) ||
129  !v.relative_fuzzy_equals(this->point(14) - this->point(2)) ||
130  !v.relative_fuzzy_equals(this->point(15) - this->point(3)))
131  return false;
132  // Make sure y-edges are straight
133  v = (this->point(3) - this->point(0))/2;
134  if (!v.relative_fuzzy_equals(this->point(11) - this->point(0)) ||
135  !v.relative_fuzzy_equals(this->point(9) - this->point(1)) ||
136  !v.relative_fuzzy_equals(this->point(17) - this->point(5)) ||
137  !v.relative_fuzzy_equals(this->point(19) - this->point(4)))
138  return false;
139  // If all the above checks out, the map is affine
140  return true;
141 }
142 
143 
144 
145 UniquePtr<Elem> Hex20::build_side_ptr (const unsigned int i,
146  bool proxy )
147 {
148  libmesh_assert_less (i, this->n_sides());
149 
150  if (proxy)
151  return UniquePtr<Elem>(new Side<Quad8,Hex20>(this,i));
152 
153  else
154  {
155  Elem * face = new Quad8;
156  face->subdomain_id() = this->subdomain_id();
157 
158  for (unsigned n=0; n<face->n_nodes(); ++n)
159  face->set_node(n) = this->node_ptr(Hex20::side_nodes_map[i][n]);
160 
161  return UniquePtr<Elem>(face);
162  }
163 
164  libmesh_error_msg("We'll never get here!");
165  return UniquePtr<Elem>();
166 }
167 
168 
169 
170 unsigned int Hex20::which_node_am_i(unsigned int side,
171  unsigned int side_node) const
172 {
173  libmesh_assert_less (side, this->n_sides());
174  libmesh_assert_less (side_node, 8);
175 
176  return Hex20::side_nodes_map[side][side_node];
177 }
178 
179 
180 
181 UniquePtr<Elem> Hex20::build_edge_ptr (const unsigned int i)
182 {
183  libmesh_assert_less (i, this->n_edges());
184 
185  return UniquePtr<Elem>(new SideEdge<Edge3,Hex20>(this,i));
186 }
187 
188 
189 
190 void Hex20::connectivity(const unsigned int sc,
191  const IOPackage iop,
192  std::vector<dof_id_type> & conn) const
193 {
194  libmesh_assert(_nodes);
195  libmesh_assert_less (sc, this->n_sub_elem());
196  libmesh_assert_not_equal_to (iop, INVALID_IO_PACKAGE);
197 
198 
199  switch (iop)
200  {
201  case TECPLOT:
202  {
203  switch (sc)
204  {
205  case 0:
206  conn.resize(8);
207  conn[0] = this->node_id(0)+1;
208  conn[1] = this->node_id(1)+1;
209  conn[2] = this->node_id(2)+1;
210  conn[3] = this->node_id(3)+1;
211  conn[4] = this->node_id(4)+1;
212  conn[5] = this->node_id(5)+1;
213  conn[6] = this->node_id(6)+1;
214  conn[7] = this->node_id(7)+1;
215 
216  return;
217 
218  default:
219  libmesh_error_msg("Unknown sc = " << sc);
220  }
221  }
222 
223  case VTK:
224  {
225  switch (sc)
226  {
227  case 0:
228  conn.resize(20);
229  conn[0] = this->node_id(0);
230  conn[1] = this->node_id(1);
231  conn[2] = this->node_id(2);
232  conn[3] = this->node_id(3);
233  conn[4] = this->node_id(4);
234  conn[5] = this->node_id(5);
235  conn[6] = this->node_id(6);
236  conn[7] = this->node_id(7);
237  conn[8] = this->node_id(8);
238  conn[9] = this->node_id(9);
239  conn[10] = this->node_id(10);
240  conn[11] = this->node_id(11);
241  conn[12] = this->node_id(16);
242  conn[13] = this->node_id(17);
243  conn[14] = this->node_id(18);
244  conn[15] = this->node_id(19);
245  conn[16] = this->node_id(12);
246  conn[17] = this->node_id(13);
247  conn[18] = this->node_id(14);
248  conn[19] = this->node_id(15);
249  return;
250 
251  default:
252  libmesh_error_msg("Unknown sc = " << sc);
253  }
254  }
255 
256  default:
257  libmesh_error_msg("Unsupported IO package " << iop);
258  }
259 }
260 
261 
262 
263 
264 unsigned short int Hex20::second_order_adjacent_vertex (const unsigned int n,
265  const unsigned int v) const
266 {
267  libmesh_assert_greater_equal (n, this->n_vertices());
268  libmesh_assert_less (n, this->n_nodes());
269  libmesh_assert_less (v, 2);
270  /*
271  * the _second_order_adjacent_vertices matrix is
272  * stored in cell_hex.C, since this matrix is identical
273  * for Hex20 and Hex27 (for the first 12 higher-order nodes)
274  */
275  return _second_order_adjacent_vertices[n-this->n_vertices()][v];
276 }
277 
278 
279 
280 std::pair<unsigned short int, unsigned short int>
281 Hex20::second_order_child_vertex (const unsigned int n) const
282 {
283  libmesh_assert_greater_equal (n, this->n_vertices());
284  libmesh_assert_less (n, this->n_nodes());
285  /*
286  * the _second_order_vertex_child_* vectors are
287  * stored in cell_hex.C, since they are identical
288  * for Hex20 and Hex27 (for the first 12 higher-order nodes)
289  */
290  return std::pair<unsigned short int, unsigned short int>
291  (_second_order_vertex_child_number[n],
292  _second_order_vertex_child_index[n]);
293 }
294 
295 
296 
297 Real Hex20::volume () const
298 {
299  // Make copies of our points. It makes the subsequent calculations a bit
300  // shorter and avoids dereferencing the same pointer multiple times.
301  Point
302  x0 = point(0), x1 = point(1), x2 = point(2), x3 = point(3), x4 = point(4),
303  x5 = point(5), x6 = point(6), x7 = point(7), x8 = point(8), x9 = point(9),
304  x10 = point(10), x11 = point(11), x12 = point(12), x13 = point(13), x14 = point(14),
305  x15 = point(15), x16 = point(16), x17 = point(17), x18 = point(18), x19 = point(19);
306 
307  // The constant components of the dx/dxi vector,
308  // dx/dxi = \vec{a000} + \vec{a001}*zeta + \vec{a002}*zeta^2 + ...
309  // These were copied directly from the output of a Python script.
310  // There are at most 17 terms with total degree <=3, but only 12
311  // of them are non-zero for each direction.
312  Point dx_dxi[17] =
313  {
314  x0/8 - x1/8 - x11/4 - x12/4 + x13/4 + x14/4 - x15/4 + x17/4 - x19/4 - x2/8 + x3/8 + x4/8 - x5/8 - x6/8 + x7/8 + x9/4,
315  x11/4 + x17/4 - x19/4 - x9/4,
316  -x0/8 + x1/8 + x12/4 - x13/4 - x14/4 + x15/4 + x2/8 - x3/8 - x4/8 + x5/8 + x6/8 - x7/8,
317  x12/4 - x13/4 + x14/4 - x15/4,
318  -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8,
319  x0/8 - x1/8 - x12/4 + x13/4 - x14/4 + x15/4 + x2/8 - x3/8 + x4/8 - x5/8 + x6/8 - x7/8,
320  -x0/8 + x1/8 + x11/4 - x17/4 + x19/4 + x2/8 - x3/8 - x4/8 + x5/8 + x6/8 - x7/8 - x9/4,
321  x0/8 - x1/8 - x11/4 - x17/4 + x19/4 - x2/8 + x3/8 - x4/8 + x5/8 + x6/8 - x7/8 + x9/4,
322  x0/4 + x1/4 - x10/2 - x16/2 - x18/2 + x2/4 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4 - x8/2,
323  -x0/4 - x1/4 + x10/2 - x16/2 - x18/2 - x2/4 - x3/4 + x4/4 + x5/4 + x6/4 + x7/4 + x8/2,
324  Point(0,0,0),
325  -x0/4 - x1/4 - x10/2 + x16/2 - x18/2 + x2/4 + x3/4 - x4/4 - x5/4 + x6/4 + x7/4 + x8/2,
326  x0/4 + x1/4 + x10/2 + x16/2 - x18/2 - x2/4 - x3/4 - x4/4 - x5/4 + x6/4 + x7/4 - x8/2,
327  Point(0,0,0),
328  Point(0,0,0),
329  Point(0,0,0),
330  Point(0,0,0)
331  };
332 
333  // The constant components of the dx/deta vector. These were copied
334  // directly from the output of a Python script. There are at most
335  // 17 terms with total degree <=3, but only 12 of them are non-zero
336  // for each direction.
337  Point dx_deta[17] =
338  {
339  x0/8 + x1/8 + x10/4 - x12/4 - x13/4 + x14/4 + x15/4 - x16/4 + x18/4 - x2/8 - x3/8 + x4/8 + x5/8 - x6/8 - x7/8 - x8/4,
340  -x10/4 - x16/4 + x18/4 + x8/4,
341  -x0/8 - x1/8 + x12/4 + x13/4 - x14/4 - x15/4 + x2/8 + x3/8 - x4/8 - x5/8 + x6/8 + x7/8,
342  x0/4 + x1/4 - x11/2 - x17/2 - x19/2 + x2/4 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4 - x9/2,
343  -x0/4 - x1/4 + x11/2 - x17/2 - x19/2 - x2/4 - x3/4 + x4/4 + x5/4 + x6/4 + x7/4 + x9/2,
344  Point(0,0,0),
345  Point(0,0,0),
346  Point(0,0,0),
347  x12/4 - x13/4 + x14/4 - x15/4,
348  -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8,
349  x0/8 - x1/8 - x12/4 + x13/4 - x14/4 + x15/4 + x2/8 - x3/8 + x4/8 - x5/8 + x6/8 - x7/8,
350  -x0/4 + x1/4 + x11/2 - x17/2 + x19/2 + x2/4 - x3/4 - x4/4 + x5/4 + x6/4 - x7/4 - x9/2,
351  x0/4 - x1/4 - x11/2 - x17/2 + x19/2 - x2/4 + x3/4 - x4/4 + x5/4 + x6/4 - x7/4 + x9/2,
352  Point(0,0,0),
353  -x0/8 - x1/8 - x10/4 + x16/4 - x18/4 + x2/8 + x3/8 - x4/8 - x5/8 + x6/8 + x7/8 + x8/4,
354  x0/8 + x1/8 + x10/4 + x16/4 - x18/4 - x2/8 - x3/8 - x4/8 - x5/8 + x6/8 + x7/8 - x8/4,
355  Point(0,0,0)
356  };
357 
358  // The constant components of the dx/dzeta vector. These were copied
359  // directly from the output of a Python script. There are at most
360  // 17 terms with total degree <=3, but only 12 of them are non-zero
361  // for each direction.
362  Point dx_dzeta[17] =
363  {
364  x0/8 + x1/8 - x10/4 - x11/4 + x16/4 + x17/4 + x18/4 + x19/4 + x2/8 + x3/8 - x4/8 - x5/8 - x6/8 - x7/8 - x8/4 - x9/4,
365  x0/4 + x1/4 - x12/2 - x13/2 - x14/2 - x15/2 + x2/4 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4,
366  Point(0,0,0),
367  -x10/4 - x16/4 + x18/4 + x8/4,
368  -x0/4 - x1/4 + x12/2 + x13/2 - x14/2 - x15/2 + x2/4 + x3/4 - x4/4 - x5/4 + x6/4 + x7/4,
369  Point(0,0,0),
370  -x0/8 - x1/8 + x11/4 - x17/4 - x19/4 - x2/8 - x3/8 + x4/8 + x5/8 + x6/8 + x7/8 + x9/4,
371  Point(0,0,0),
372  x11/4 + x17/4 - x19/4 - x9/4,
373  -x0/4 + x1/4 + x12/2 - x13/2 - x14/2 + x15/2 + x2/4 - x3/4 - x4/4 + x5/4 + x6/4 - x7/4,
374  Point(0,0,0),
375  -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8,
376  x0/4 - x1/4 - x12/2 + x13/2 - x14/2 + x15/2 + x2/4 - x3/4 + x4/4 - x5/4 + x6/4 - x7/4,
377  x0/8 - x1/8 - x11/4 - x17/4 + x19/4 - x2/8 + x3/8 - x4/8 + x5/8 + x6/8 - x7/8 + x9/4,
378  -x0/8 - x1/8 + x10/4 - x16/4 - x18/4 - x2/8 - x3/8 + x4/8 + x5/8 + x6/8 + x7/8 + x8/4,
379  Point(0,0,0),
380  x0/8 + x1/8 + x10/4 + x16/4 - x18/4 - x2/8 - x3/8 - x4/8 - x5/8 + x6/8 + x7/8 - x8/4,
381  };
382 
383  // The integer exponents for each term.
384  static const int exponents[17][3] =
385  {
386  {0, 0, 0},
387  {0, 0, 1},
388  {0, 0, 2},
389  {0, 1, 0},
390  {0, 1, 1},
391  {0, 1, 2},
392  {0, 2, 0},
393  {0, 2, 1},
394  {1, 0, 0},
395  {1, 0, 1},
396  {1, 0, 2},
397  {1, 1, 0},
398  {1, 1, 1},
399  {1, 2, 0},
400  {2, 0, 0},
401  {2, 0, 1},
402  {2, 1, 0}
403  };
404 
405 
406  // 3x3 quadrature, exact for bi-quintics
407  const int N = 3;
408  const Real w[N] = {5./9, 8./9, 5./9};
409 
410  // Quadrature point locations raised to powers. q[0][2] is
411  // quadrature point 0, squared, q[1][1] is quadrature point 1 to the
412  // first power, etc.
413  const Real q[N][N] =
414  {
415  //^0 ^1 ^2
416  { 1., -std::sqrt(15)/5., 15./25},
417  { 1., 0., 0.},
418  { 1., std::sqrt(15)/5., 15./25}
419  };
420 
421 
422  Real vol = 0.;
423  for (int i=0; i<N; ++i)
424  for (int j=0; j<N; ++j)
425  for (int k=0; k<N; ++k)
426  {
427  // Compute dx_dxi, dx_deta, dx_dzeta at the current quadrature point.
428  Point dx_dxi_q, dx_deta_q, dx_dzeta_q;
429  for (int c=0; c<17; ++c)
430  {
431  Real coeff =
432  q[i][exponents[c][0]] *
433  q[j][exponents[c][1]] *
434  q[k][exponents[c][2]];
435 
436  dx_dxi_q += coeff * dx_dxi[c];
437  dx_deta_q += coeff * dx_deta[c];
438  dx_dzeta_q += coeff * dx_dzeta[c];
439  }
440 
441  // Compute scalar triple product, multiply by weight, and accumulate volume.
442  vol += w[i] * w[j] * w[k] * triple_product(dx_dxi_q, dx_deta_q, dx_dzeta_q);
443  }
444 
445  return vol;
446 }
447 
448 
449 
450 
451 #ifdef LIBMESH_ENABLE_AMR
452 
453 const float Hex20::_embedding_matrix[8][20][20] =
454  {
455  // embedding matrix for child 0
456  {
457  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
458  { 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 0
459  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 1
460  { -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 2
461  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 3
462  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 4
463  { -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000 }, // 5
464  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 6
465  { -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000 }, // 7
466  { 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 8
467  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.250000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 9
468  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.375000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 10
469  { 0.375000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 11
470  { 0.375000, 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 12
471  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000 }, // 13
472  { -0.281250, -0.281250, -0.281250, -0.281250, -0.156250, -0.156250, -0.156250, -0.156250, 0.375000, 0.375000, 0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.187500, 0.125000, 0.125000, 0.125000, 0.125000 }, // 14
473  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000 }, // 15
474  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000 }, // 16
475  { -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500 }, // 17
476  { -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000 }, // 18
477  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000 } // 19
478  },
479 
480  // embedding matrix for child 1
481  {
482  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
483  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 0
484  { 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 1
485  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 2
486  { -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 3
487  { -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000 }, // 4
488  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 5
489  { 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000 }, // 6
490  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 7
491  { -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 8
492  { 0.00000, 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 9
493  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.375000, 0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 10
494  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.250000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 11
495  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000 }, // 12
496  { 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 13
497  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000 }, // 14
498  { -0.281250, -0.281250, -0.281250, -0.281250, -0.156250, -0.156250, -0.156250, -0.156250, 0.375000, 0.375000, 0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.187500, 0.125000, 0.125000, 0.125000, 0.125000 }, // 15
499  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000 }, // 16
500  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000 }, // 17
501  { -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000 }, // 18
502  { -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500 } // 19
503  },
504 
505  // embedding matrix for child 2
506  {
507  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
508  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 0
509  { -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 1
510  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 2
511  { 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 3
512  { -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000 }, // 4
513  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 5
514  { 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000 }, // 6
515  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 7
516  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.375000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 8
517  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.750000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 9
518  { 0.00000, 0.00000, -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 10
519  { -0.125000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 11
520  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000 }, // 12
521  { -0.281250, -0.281250, -0.281250, -0.281250, -0.156250, -0.156250, -0.156250, -0.156250, 0.375000, 0.375000, 0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.187500, 0.125000, 0.125000, 0.125000, 0.125000 }, // 13
522  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000 }, // 14
523  { 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 15
524  { -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000 }, // 16
525  { -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500 }, // 17
526  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000 }, // 18
527  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000 } // 19
528  },
529 
530  // embedding matrix for child 3
531  {
532  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
533  { -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 0
534  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 1
535  { 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 2
536  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 3
537  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 4
538  { 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000 }, // 5
539  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 6
540  { 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000 }, // 7
541  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.375000, 0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 8
542  { 0.00000, -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 9
543  { 0.00000, 0.00000, 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 10
544  { -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.750000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 11
545  { -0.281250, -0.281250, -0.281250, -0.281250, -0.156250, -0.156250, -0.156250, -0.156250, 0.375000, 0.375000, 0.375000, 0.375000, 0.187500, 0.187500, 0.187500, 0.187500, 0.125000, 0.125000, 0.125000, 0.125000 }, // 12
546  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000 }, // 13
547  { 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 14
548  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.250000, 0.00000 }, // 15
549  { -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000 }, // 16
550  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000 }, // 17
551  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000 }, // 18
552  { -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500 } // 19
553  },
554 
555  // embedding matrix for child 4
556  {
557  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
558  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 0
559  { -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000 }, // 1
560  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 2
561  { -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000 }, // 3
562  { 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 4
563  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000 }, // 5
564  { 0.00000, 0.00000, 0.00000, 0.00000, -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000 }, // 6
565  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000 }, // 7
566  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000 }, // 8
567  { -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500 }, // 9
568  { -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000 }, // 10
569  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000 }, // 11
570  { -0.125000, 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 12
571  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000 }, // 13
572  { -0.156250, -0.156250, -0.156250, -0.156250, -0.281250, -0.281250, -0.281250, -0.281250, 0.125000, 0.125000, 0.125000, 0.125000, 0.187500, 0.187500, 0.187500, 0.187500, 0.375000, 0.375000, 0.375000, 0.375000 }, // 14
573  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000 }, // 15
574  { 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000 }, // 16
575  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.250000, 0.375000 }, // 17
576  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.375000, 0.750000 }, // 18
577  { 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000 } // 19
578  },
579 
580  // embedding matrix for child 5
581  {
582  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
583  { -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000 }, // 0
584  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 1
585  { 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000 }, // 2
586  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 3
587  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000 }, // 4
588  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 5
589  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000 }, // 6
590  { 0.00000, 0.00000, 0.00000, 0.00000, -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000 }, // 7
591  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000 }, // 8
592  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000 }, // 9
593  { -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000 }, // 10
594  { -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500 }, // 11
595  { -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000 }, // 12
596  { 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 13
597  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000 }, // 14
598  { -0.156250, -0.156250, -0.156250, -0.156250, -0.281250, -0.281250, -0.281250, -0.281250, 0.125000, 0.125000, 0.125000, 0.125000, 0.187500, 0.187500, 0.187500, 0.187500, 0.375000, 0.375000, 0.375000, 0.375000 }, // 15
599  { 0.00000, 0.00000, 0.00000, 0.00000, -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000 }, // 16
600  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000 }, // 17
601  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.375000, 0.250000 }, // 18
602  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.375000, 0.250000, 0.375000 } // 19
603  },
604 
605  // embedding matrix for child 6
606  {
607  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
608  { -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000 }, // 0
609  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 1
610  { 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000 }, // 2
611  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 3
612  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000 }, // 4
613  { 0.00000, 0.00000, 0.00000, 0.00000, -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000 }, // 5
614  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000 }, // 6
615  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 7
616  { -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, 0.187500, 0.125000, 0.187500, 0.375000, 0.375000, 0.125000, 0.125000, 0.375000, 0.187500, 0.125000, 0.187500, 0.375000 }, // 8
617  { -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500 }, // 9
618  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000 }, // 10
619  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.375000 }, // 11
620  { -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000 }, // 12
621  { -0.156250, -0.156250, -0.156250, -0.156250, -0.281250, -0.281250, -0.281250, -0.281250, 0.125000, 0.125000, 0.125000, 0.125000, 0.187500, 0.187500, 0.187500, 0.187500, 0.375000, 0.375000, 0.375000, 0.375000 }, // 13
622  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000 }, // 14
623  { 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 15
624  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.250000, 0.375000, 0.750000 }, // 16
625  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.750000, 0.375000 }, // 17
626  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000 }, // 18
627  { 0.00000, 0.00000, 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000 } // 19
628  },
629 
630  // embedding matrix for child 7
631  {
632  // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
633  { -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, -0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000, 0.250000 }, // 0
634  { 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000 }, // 1
635  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 2
636  { 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, -0.250000, -0.250000, 0.00000, 0.00000, 0.500000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.00000, 0.00000, 0.500000, 0.00000 }, // 3
637  { 0.00000, 0.00000, 0.00000, 0.00000, -0.250000, -0.250000, -0.250000, -0.250000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.500000, 0.500000, 0.500000, 0.500000 }, // 4
638  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000 }, // 5
639  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 6
640  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000 }, // 7
641  { -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000 }, // 8
642  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.250000, 0.750000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000 }, // 9
643  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.750000, 0.250000, 0.00000, 0.00000, 0.375000, 0.00000 }, // 10
644  { -0.156250, -0.156250, -0.281250, -0.281250, -0.156250, -0.156250, -0.281250, -0.281250, 0.125000, 0.187500, 0.375000, 0.187500, 0.125000, 0.125000, 0.375000, 0.375000, 0.125000, 0.187500, 0.375000, 0.187500 }, // 11
645  { -0.156250, -0.156250, -0.156250, -0.156250, -0.281250, -0.281250, -0.281250, -0.281250, 0.125000, 0.125000, 0.125000, 0.125000, 0.187500, 0.187500, 0.187500, 0.187500, 0.375000, 0.375000, 0.375000, 0.375000 }, // 12
646  { 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000 }, // 13
647  { 0.00000, 0.00000, -0.125000, 0.00000, 0.00000, 0.00000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000 }, // 14
648  { 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, -0.187500, -0.187500, 0.00000, 0.00000, 0.250000, 0.00000, 0.00000, 0.00000, 0.375000, 0.375000, 0.00000, 0.00000, 0.750000, 0.00000 }, // 15
649  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, 0.750000, 0.375000, 0.250000 }, // 16
650  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, -0.125000, 0.375000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000, 0.00000 }, // 17
651  { 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.375000, -0.125000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.750000, 0.00000 }, // 18
652  { 0.00000, 0.00000, 0.00000, 0.00000, -0.187500, -0.187500, -0.187500, -0.187500, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.250000, 0.375000, 0.750000, 0.375000 } // 19
653  }
654  };
655 
656 #endif
657 
658 } // namespace libMesh
unsigned short int side
Definition: xdr_io.C:49
The libMesh namespace provides an interface to certain functionality in the library.
libmesh_assert(j)
T triple_product(const TypeVector< T > &a, const TypeVector< T > &b, const TypeVector< T > &c)
Definition: type_vector.h:1051
const dof_id_type n_nodes
Definition: tecplot_io.C:67
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IOPackage
libMesh interfaces with several different software packages for the purposes of creating, reading, and writing mesh files.