LCOV - code coverage report
Current view: top level - src/geom - cell_hex27.C (source / functions) Hit Total Coverage
Test: libMesh/libmesh: #4554 (5a536d) with base 54e0d5 Lines: 276 429 64.3 %
Date: 2026-09-16 12:37:14 Functions: 22 26 84.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // The libMesh Finite Element Library.
       2             : // Copyright (C) 2002-2026 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             : // Local includes
      20             : #include "libmesh/cell_hex27.h"
      21             : #include "libmesh/fe_reference_element_traits.h"
      22             : #include "libmesh/edge_edge3.h"
      23             : #include "libmesh/face_quad9.h"
      24             : #include "libmesh/enum_io_package.h"
      25             : #include "libmesh/enum_order.h"
      26             : 
      27             : namespace libMesh
      28             : {
      29             : 
      30             : 
      31             : 
      32             : // ------------------------------------------------------------
      33             : // Hex27 class static member initializations
      34             : const int Hex27::num_nodes;
      35             : const int Hex27::nodes_per_side;
      36             : const int Hex27::nodes_per_edge;
      37             : 
      38             : const ReferenceElementTable<Hex27::num_sides, Hex27::nodes_per_side>
      39             : Hex27::side_nodes_map = build_side_nodes<Hex27::num_sides, Hex27::nodes_per_side>(HEX27);
      40             : 
      41             : const ReferenceElementTable<Hex27::num_edges, Hex27::nodes_per_edge>
      42             : Hex27::edge_nodes_map = hex_edge_nodes();
      43             : 
      44             : // ------------------------------------------------------------
      45             : // Hex27 class member functions
      46             : 
      47    11576959 : bool Hex27::is_vertex(const unsigned int i) const
      48             : {
      49    11576959 :   if (i < 8)
      50     3486379 :     return true;
      51     2035262 :   return false;
      52             : }
      53             : 
      54        3688 : bool Hex27::is_edge(const unsigned int i) const
      55             : {
      56        3688 :   if (i < 8)
      57           0 :     return false;
      58        3688 :   if (i > 19)
      59        1384 :     return false;
      60         576 :   return true;
      61             : }
      62             : 
      63     1444027 : bool Hex27::is_face(const unsigned int i) const
      64             : {
      65     1444027 :   if (i == 26)
      66        1187 :     return false;
      67     1439511 :   if (i > 19)
      68      217731 :     return true;
      69      305500 :   return false;
      70             : }
      71             : 
      72      720114 : bool Hex27::is_node_on_side(const unsigned int n,
      73             :                             const unsigned int s) const
      74             : {
      75      181305 :   libmesh_assert_less (s, n_sides());
      76      181305 :   return std::find(std::begin(side_nodes_map[s]),
      77      181305 :                    std::end(side_nodes_map[s]),
      78      720114 :                    n) != std::end(side_nodes_map[s]);
      79             : }
      80             : 
      81             : std::vector<unsigned>
      82   155302102 : Hex27::nodes_on_side(const unsigned int s) const
      83             : {
      84    37876614 :   libmesh_assert_less(s, n_sides());
      85   155302102 :   return {std::begin(side_nodes_map[s]), std::end(side_nodes_map[s])};
      86             : }
      87             : 
      88             : std::vector<unsigned>
      89        2772 : Hex27::nodes_on_edge(const unsigned int e) const
      90             : {
      91         696 :   libmesh_assert_less(e, n_edges());
      92        2772 :   return {std::begin(edge_nodes_map[e]), std::end(edge_nodes_map[e])};
      93             : }
      94             : 
      95      668292 : bool Hex27::is_node_on_edge(const unsigned int n,
      96             :                             const unsigned int e) const
      97             : {
      98      170718 :   libmesh_assert_less (e, n_edges());
      99      170718 :   return std::find(std::begin(edge_nodes_map[e]),
     100      170718 :                    std::end(edge_nodes_map[e]),
     101      668292 :                    n) != std::end(edge_nodes_map[e]);
     102             : }
     103             : 
     104             : 
     105             : 
     106      900967 : bool Hex27::has_affine_map() const
     107             : {
     108             :   // Make sure x-edge endpoints are affine
     109      444776 :   Point v = this->point(1) - this->point(0);
     110      893562 :   if (!v.relative_fuzzy_equals(this->point(2) - this->point(3), affine_tol) ||
     111     1792220 :       !v.relative_fuzzy_equals(this->point(5) - this->point(4), affine_tol) ||
     112     1333708 :       !v.relative_fuzzy_equals(this->point(6) - this->point(7), affine_tol))
     113        9730 :     return false;
     114             :   // Make sure x-edges are straight
     115             :   // and x-face and center points are centered
     116      220075 :   v /= 2;
     117     1110832 :   if (!v.relative_fuzzy_equals(this->point(8) - this->point(0), affine_tol) ||
     118     1110452 :       !v.relative_fuzzy_equals(this->point(10) - this->point(3), affine_tol) ||
     119     1110364 :       !v.relative_fuzzy_equals(this->point(16) - this->point(4), affine_tol) ||
     120     1110284 :       !v.relative_fuzzy_equals(this->point(18) - this->point(7), affine_tol) ||
     121     1110252 :       !v.relative_fuzzy_equals(this->point(20) - this->point(11), affine_tol) ||
     122     1110252 :       !v.relative_fuzzy_equals(this->point(21) - this->point(12), affine_tol) ||
     123     1110252 :       !v.relative_fuzzy_equals(this->point(23) - this->point(15), affine_tol) ||
     124     2221404 :       !v.relative_fuzzy_equals(this->point(25) - this->point(19), affine_tol) ||
     125     1110464 :       !v.relative_fuzzy_equals(this->point(26) - this->point(24), affine_tol))
     126         848 :     return false;
     127             :   // Make sure xz-faces are identical parallelograms
     128     1110252 :   v = this->point(4) - this->point(0);
     129      890389 :   if (!v.relative_fuzzy_equals(this->point(7) - this->point(3), affine_tol))
     130           0 :     return false;
     131      219863 :   v /= 2;
     132     1110252 :   if (!v.relative_fuzzy_equals(this->point(12) - this->point(0), affine_tol) ||
     133     1110252 :       !v.relative_fuzzy_equals(this->point(13) - this->point(1), affine_tol) ||
     134     1110252 :       !v.relative_fuzzy_equals(this->point(14) - this->point(2), affine_tol) ||
     135     1110252 :       !v.relative_fuzzy_equals(this->point(15) - this->point(3), affine_tol) ||
     136     2220504 :       !v.relative_fuzzy_equals(this->point(22) - this->point(9), affine_tol) ||
     137     1110252 :       !v.relative_fuzzy_equals(this->point(24) - this->point(11), affine_tol))
     138           0 :     return false;
     139             :   // Make sure y-edges are straight
     140     1110252 :   v = (this->point(3) - this->point(0))/2;
     141      890389 :   if (!v.relative_fuzzy_equals(this->point(11) - this->point(0), affine_tol) ||
     142     1110252 :       !v.relative_fuzzy_equals(this->point(9) - this->point(1), affine_tol) ||
     143     2220504 :       !v.relative_fuzzy_equals(this->point(17) - this->point(5), affine_tol) ||
     144     1330115 :       !v.relative_fuzzy_equals(this->point(19) - this->point(4), affine_tol))
     145           0 :     return false;
     146             :   // If all the above checks out, the map is affine
     147      219863 :   return true;
     148             : }
     149             : 
     150             : 
     151             : 
     152    33282618 : Order Hex27::default_order() const
     153             : {
     154    33282618 :   return SECOND;
     155             : }
     156             : 
     157             : 
     158             : 
     159           0 : dof_id_type Hex27::key (const unsigned int s) const
     160             : {
     161           0 :   libmesh_assert_less (s, this->n_sides());
     162             : 
     163             :   // Think of a unit cube: (-1,1) x (-1,1) x (1,1)
     164           0 :   switch (s)
     165             :     {
     166           0 :     case 0:  // the face at z=0
     167             : 
     168             :       return
     169           0 :         this->compute_key (this->node_id(20));
     170             : 
     171           0 :     case 1:  // the face at y = 0
     172             : 
     173             :       return
     174           0 :         this->compute_key (this->node_id(21));
     175             : 
     176           0 :     case 2:  // the face at x=1
     177             : 
     178             :       return
     179           0 :         this->compute_key (this->node_id(22));
     180             : 
     181           0 :     case 3: // the face at y=1
     182             : 
     183             :       return
     184           0 :         this->compute_key (this->node_id(23));
     185             : 
     186           0 :     case 4: // the face at x=0
     187             : 
     188             :       return
     189           0 :         this->compute_key (this->node_id(24));
     190             : 
     191           0 :     case 5: // the face at z=1
     192             : 
     193             :       return
     194           0 :         this->compute_key (this->node_id(25));
     195             : 
     196           0 :     default:
     197           0 :       libmesh_error_msg("Invalid side " << s);
     198             :     }
     199             : }
     200             : 
     201             : 
     202             : 
     203     1084677 : unsigned int Hex27::local_side_node(unsigned int side,
     204             :                                     unsigned int side_node) const
     205             : {
     206      184944 :   libmesh_assert_less (side, this->n_sides());
     207      184944 :   libmesh_assert_less (side_node, Hex27::nodes_per_side);
     208             : 
     209     1084677 :   return Hex27::side_nodes_map[side][side_node];
     210             : }
     211             : 
     212             : 
     213             : 
     214   202699186 : unsigned int Hex27::local_edge_node(unsigned int edge,
     215             :                                     unsigned int edge_node) const
     216             : {
     217    50433036 :   libmesh_assert_less (edge, this->n_edges());
     218    50433036 :   libmesh_assert_less (edge_node, Hex27::nodes_per_edge);
     219             : 
     220   202699186 :   return Hex27::edge_nodes_map[edge][edge_node];
     221             : }
     222             : 
     223             : 
     224             : 
     225    28484226 : std::unique_ptr<Elem> Hex27::build_side_ptr (const unsigned int i)
     226             : {
     227    28484226 :   return this->simple_build_side_ptr<Quad9, Hex27>(i);
     228             : }
     229             : 
     230             : 
     231             : 
     232      831198 : void Hex27::build_side_ptr (std::unique_ptr<Elem> & side,
     233             :                             const unsigned int i)
     234             : {
     235      831198 :   this->simple_build_side_ptr<Hex27>(side, i, QUAD9);
     236      831198 : }
     237             : 
     238             : 
     239             : 
     240      211587 : std::unique_ptr<Elem> Hex27::build_edge_ptr (const unsigned int i)
     241             : {
     242      211587 :   return this->simple_build_edge_ptr<Edge3,Hex27>(i);
     243             : }
     244             : 
     245             : 
     246             : 
     247        4368 : void Hex27::build_edge_ptr (std::unique_ptr<Elem> & edge, const unsigned int i)
     248             : {
     249        4368 :   this->simple_build_edge_ptr<Hex27>(edge, i, EDGE3);
     250        4368 : }
     251             : 
     252             : 
     253             : 
     254           0 : void Hex27::connectivity(const unsigned int sc,
     255             :                          const IOPackage iop,
     256             :                          std::vector<dof_id_type> & conn) const
     257             : {
     258           0 :   libmesh_assert(_nodes);
     259           0 :   libmesh_assert_less (sc, this->n_sub_elem());
     260           0 :   libmesh_assert_not_equal_to (iop, INVALID_IO_PACKAGE);
     261             : 
     262           0 :   conn.resize(8);
     263             : 
     264           0 :   switch (iop)
     265             :     {
     266           0 :     case TECPLOT:
     267             :       {
     268           0 :         switch (sc)
     269             :           {
     270           0 :           case 0:
     271             : 
     272           0 :             conn[0] = this->node_id(0)+1;
     273           0 :             conn[1] = this->node_id(8)+1;
     274           0 :             conn[2] = this->node_id(20)+1;
     275           0 :             conn[3] = this->node_id(11)+1;
     276           0 :             conn[4] = this->node_id(12)+1;
     277           0 :             conn[5] = this->node_id(21)+1;
     278           0 :             conn[6] = this->node_id(26)+1;
     279           0 :             conn[7] = this->node_id(24)+1;
     280             : 
     281           0 :             return;
     282             : 
     283           0 :           case 1:
     284             : 
     285           0 :             conn[0] = this->node_id(8)+1;
     286           0 :             conn[1] = this->node_id(1)+1;
     287           0 :             conn[2] = this->node_id(9)+1;
     288           0 :             conn[3] = this->node_id(20)+1;
     289           0 :             conn[4] = this->node_id(21)+1;
     290           0 :             conn[5] = this->node_id(13)+1;
     291           0 :             conn[6] = this->node_id(22)+1;
     292           0 :             conn[7] = this->node_id(26)+1;
     293             : 
     294           0 :             return;
     295             : 
     296           0 :           case 2:
     297             : 
     298           0 :             conn[0] = this->node_id(11)+1;
     299           0 :             conn[1] = this->node_id(20)+1;
     300           0 :             conn[2] = this->node_id(10)+1;
     301           0 :             conn[3] = this->node_id(3)+1;
     302           0 :             conn[4] = this->node_id(24)+1;
     303           0 :             conn[5] = this->node_id(26)+1;
     304           0 :             conn[6] = this->node_id(23)+1;
     305           0 :             conn[7] = this->node_id(15)+1;
     306             : 
     307           0 :             return;
     308             : 
     309           0 :           case 3:
     310             : 
     311           0 :             conn[0] = this->node_id(20)+1;
     312           0 :             conn[1] = this->node_id(9)+1;
     313           0 :             conn[2] = this->node_id(2)+1;
     314           0 :             conn[3] = this->node_id(10)+1;
     315           0 :             conn[4] = this->node_id(26)+1;
     316           0 :             conn[5] = this->node_id(22)+1;
     317           0 :             conn[6] = this->node_id(14)+1;
     318           0 :             conn[7] = this->node_id(23)+1;
     319             : 
     320           0 :             return;
     321             : 
     322           0 :           case 4:
     323             : 
     324           0 :             conn[0] = this->node_id(12)+1;
     325           0 :             conn[1] = this->node_id(21)+1;
     326           0 :             conn[2] = this->node_id(26)+1;
     327           0 :             conn[3] = this->node_id(24)+1;
     328           0 :             conn[4] = this->node_id(4)+1;
     329           0 :             conn[5] = this->node_id(16)+1;
     330           0 :             conn[6] = this->node_id(25)+1;
     331           0 :             conn[7] = this->node_id(19)+1;
     332             : 
     333           0 :             return;
     334             : 
     335           0 :           case 5:
     336             : 
     337           0 :             conn[0] = this->node_id(21)+1;
     338           0 :             conn[1] = this->node_id(13)+1;
     339           0 :             conn[2] = this->node_id(22)+1;
     340           0 :             conn[3] = this->node_id(26)+1;
     341           0 :             conn[4] = this->node_id(16)+1;
     342           0 :             conn[5] = this->node_id(5)+1;
     343           0 :             conn[6] = this->node_id(17)+1;
     344           0 :             conn[7] = this->node_id(25)+1;
     345             : 
     346           0 :             return;
     347             : 
     348           0 :           case 6:
     349             : 
     350           0 :             conn[0] = this->node_id(24)+1;
     351           0 :             conn[1] = this->node_id(26)+1;
     352           0 :             conn[2] = this->node_id(23)+1;
     353           0 :             conn[3] = this->node_id(15)+1;
     354           0 :             conn[4] = this->node_id(19)+1;
     355           0 :             conn[5] = this->node_id(25)+1;
     356           0 :             conn[6] = this->node_id(18)+1;
     357           0 :             conn[7] = this->node_id(7)+1;
     358             : 
     359           0 :             return;
     360             : 
     361           0 :           case 7:
     362             : 
     363           0 :             conn[0] = this->node_id(26)+1;
     364           0 :             conn[1] = this->node_id(22)+1;
     365           0 :             conn[2] = this->node_id(14)+1;
     366           0 :             conn[3] = this->node_id(23)+1;
     367           0 :             conn[4] = this->node_id(25)+1;
     368           0 :             conn[5] = this->node_id(17)+1;
     369           0 :             conn[6] = this->node_id(6)+1;
     370           0 :             conn[7] = this->node_id(18)+1;
     371             : 
     372           0 :             return;
     373             : 
     374           0 :           default:
     375           0 :             libmesh_error_msg("Invalid sc = " << sc);
     376             :           }
     377             :       }
     378             : 
     379           0 :     case VTK:
     380             :       {
     381             :         // VTK now supports VTK_TRIQUADRATIC_HEXAHEDRON directly
     382           0 :         conn.resize(27);
     383             : 
     384           0 :         conn[0] = this->node_id(0);
     385           0 :         conn[1] = this->node_id(1);
     386           0 :         conn[2] = this->node_id(2);
     387           0 :         conn[3] = this->node_id(3);
     388           0 :         conn[4] = this->node_id(4);
     389           0 :         conn[5] = this->node_id(5);
     390           0 :         conn[6] = this->node_id(6);
     391           0 :         conn[7] = this->node_id(7);
     392           0 :         conn[8] = this->node_id(8);
     393           0 :         conn[9] = this->node_id(9);
     394           0 :         conn[10] = this->node_id(10);
     395           0 :         conn[11] = this->node_id(11);
     396           0 :         conn[12] = this->node_id(16);
     397           0 :         conn[13] = this->node_id(17);
     398           0 :         conn[14] = this->node_id(18);
     399           0 :         conn[15] = this->node_id(19);
     400           0 :         conn[16] = this->node_id(12);
     401           0 :         conn[17] = this->node_id(13);
     402           0 :         conn[18] = this->node_id(14);
     403           0 :         conn[19] = this->node_id(15);
     404           0 :         conn[20] = this->node_id(24);
     405           0 :         conn[21] = this->node_id(22);
     406           0 :         conn[22] = this->node_id(21);
     407           0 :         conn[23] = this->node_id(23);
     408           0 :         conn[24] = this->node_id(20);
     409           0 :         conn[25] = this->node_id(25);
     410           0 :         conn[26] = this->node_id(26);
     411             : 
     412           0 :         return;
     413             :       }
     414             : 
     415           0 :     default:
     416           0 :       libmesh_error_msg("Unsupported IO package " << iop);
     417             :     }
     418             : }
     419             : 
     420             : 
     421             : 
     422             : 
     423             : 
     424      562539 : unsigned int Hex27::n_second_order_adjacent_vertices (const unsigned int n) const
     425             : {
     426      168656 :   switch (n)
     427             :     {
     428      105664 :     case 8:
     429             :     case 9:
     430             :     case 10:
     431             :     case 11:
     432             :     case 12:
     433             :     case 13:
     434             :     case 14:
     435             :     case 15:
     436             :     case 16:
     437             :     case 17:
     438             :     case 18:
     439             :     case 19:
     440      105664 :       return 2;
     441             : 
     442       53848 :     case 20:
     443             :     case 21:
     444             :     case 22:
     445             :     case 23:
     446             :     case 24:
     447             :     case 25:
     448       53848 :       return 4;
     449             : 
     450        9144 :     case 26:
     451        9144 :       return 8;
     452             : 
     453           0 :     default:
     454           0 :       libmesh_error_msg("Invalid node number n = " << n);
     455             :     }
     456             : }
     457             : 
     458             : 
     459             : 
     460     1667304 : unsigned short int Hex27::second_order_adjacent_vertex (const unsigned int n,
     461             :                                                         const unsigned int v) const
     462             : {
     463      499872 :   libmesh_assert_greater_equal (n, this->n_vertices());
     464      499872 :   libmesh_assert_less (n, this->n_nodes());
     465             : 
     466     1667304 :   switch (n)
     467             :     {
     468             :       /*
     469             :        * these are all nodes that are unique to Hex27,
     470             :        * use our _remaining.... matrix
     471             :        */
     472      718440 :     case 20:
     473             :     case 21:
     474             :     case 22:
     475             :     case 23:
     476             :     case 24:
     477             :     case 25:
     478             :       {
     479      215392 :         libmesh_assert_less (v, 4);
     480      718440 :         return _remaining_second_order_adjacent_vertices[n-20][v];
     481             :       }
     482             : 
     483             :       /*
     484             :        * for the bubble node the return value is simply v.
     485             :        * Why? -- the user asks for the v-th adjacent vertex,
     486             :        * from \p n_second_order_adjacent_vertices() there
     487             :        * are 8 adjacent vertices, and these happen to be
     488             :        * 0..7
     489             :        */
     490      244008 :     case 26:
     491             :       {
     492       73152 :         libmesh_assert_less (v, 8);
     493      244008 :         return static_cast<unsigned short int>(v);
     494             :       }
     495             : 
     496             :       /*
     497             :        * nodes 8..19:
     498             :        * these are all nodes that are identical for
     499             :        * Hex20 and Hex27.  Therefore use the
     500             :        * matrix stored in cell_hex.C
     501             :        */
     502      704856 :     default:
     503             :       {
     504      211328 :         libmesh_assert_less (v, 2);
     505      704856 :         return _second_order_adjacent_vertices[n-this->n_vertices()][v];
     506             :       }
     507             :     }
     508             : }
     509             : 
     510             : 
     511             : 
     512             : const unsigned short int Hex27::_remaining_second_order_adjacent_vertices[6][4] =
     513             :   {
     514             :     { 0,  1,  2,  3}, // vertices adjacent to node 20   face nodes
     515             :     { 0,  1,  4,  5}, // vertices adjacent to node 21
     516             :     { 1,  2,  5,  6}, // vertices adjacent to node 22
     517             :     { 2,  3,  6,  7}, // vertices adjacent to node 23
     518             :     { 0,  3,  4,  7}, // vertices adjacent to node 24
     519             :     { 4,  5,  6,  7}, // vertices adjacent to node 25
     520             :   };
     521             : 
     522             : 
     523             : 
     524             : std::pair<unsigned short int, unsigned short int>
     525           0 : Hex27::second_order_child_vertex (const unsigned int n) const
     526             : {
     527           0 :   libmesh_assert_greater_equal (n, this->n_vertices());
     528           0 :   libmesh_assert_less (n, this->n_nodes());
     529             :   /*
     530             :    * the _second_order_vertex_child_* vectors are
     531             :    * stored in cell_hex.C, since they are identical
     532             :    * for Hex20 and Hex27 (for the first 12 higher-order nodes)
     533             :    */
     534           0 :   return std::pair<unsigned short int, unsigned short int>
     535           0 :     (_second_order_vertex_child_number[n],
     536           0 :      _second_order_vertex_child_index[n]);
     537             : }
     538             : 
     539             : 
     540             : 
     541        3129 : Real Hex27::volume () const
     542             : {
     543             :   // This specialization is good for Lagrange mappings only in general
     544        3129 :   if (this->mapping_type() != LAGRANGE_MAP)
     545         310 :     return this->Elem::volume();
     546             : 
     547             :   // Make copies of our points.  It makes the subsequent calculations a bit
     548             :   // shorter and avoids dereferencing the same pointer multiple times.
     549             :   Point
     550        9245 :     x0 = point(0),   x1 = point(1),   x2 = point(2),   x3 = point(3),   x4 = point(4),   x5 = point(5),   x6 = point(6),   x7 = point(7),   x8 = point(8),
     551        8531 :     x9 = point(9),   x10 = point(10), x11 = point(11), x12 = point(12), x13 = point(13), x14 = point(14), x15 = point(15), x16 = point(16), x17 = point(17),
     552        8531 :     x18 = point(18), x19 = point(19), x20 = point(20), x21 = point(21), x22 = point(22), x23 = point(23), x24 = point(24), x25 = point(25), x26 = point(26);
     553             : 
     554             :   // The constant components of the dx/dxi vector,
     555             :   // dx/dxi = \vec{a000} + \vec{a001}*zeta + \vec{a002}*zeta^2 + ...
     556             :   // All of the xi^2 terms are zero.
     557             :   // These were copied directly from the output of a Python script.
     558             :   Point dx_dxi[3][3][3] =
     559             :     {
     560             :       {
     561             :         {
     562         720 :           x22/2 - x24/2, // 0, 0, 0
     563         720 :           x11/4 + x17/4 - x19/4 - x9/4, // 0, 0, 1
     564         720 :           -x11/4 + x17/4 - x19/4 - x22/2 + x24/2 + x9/4 // 0, 0, 2
     565             :         },
     566             : 
     567             :         {
     568         720 :           x12/4 - x13/4 + x14/4 - x15/4, // 0, 1, 0
     569         720 :           -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8, // 0, 1, 1
     570         720 :           x0/8 - x1/8 - x12/4 + x13/4 - x14/4 + x15/4 + x2/8 - x3/8 + x4/8 - x5/8 + x6/8 - x7/8 // 0, 1, 2
     571             :         },
     572             : 
     573             :         {
     574         720 :           -x12/4 + x13/4 + x14/4 - x15/4 - x22/2 + x24/2, // 0, 2, 0
     575         720 :           x0/8 - x1/8 - x11/4 - x17/4 + x19/4 - x2/8 + x3/8 - x4/8 + x5/8 + x6/8 - x7/8 + x9/4, // 0, 2, 1
     576         720 :           -x0/8 + x1/8 + x11/4 + x12/4 - x13/4 - x14/4 + x15/4 - x17/4 + x19/4 + x2/8 + x22/2 - x24/2 - x3/8 - x4/8 + x5/8 + x6/8 - x7/8 - x9/4 // 0, 2, 2
     577             :         }
     578             :       },
     579             :       {
     580             :         {
     581         720 :           x22 + x24 - 2*x26, // 1, 0, 0
     582         720 :           -x11/2 + x17/2 + x19/2 + x20 - x25 - x9/2, // 1, 0, 1
     583         720 :           x11/2 + x17/2 + x19/2 - x20 - x22 - x24 - x25 + 2*x26 + x9/2 // 1, 0, 2
     584             :         },
     585             : 
     586             :         {
     587         720 :           -x12/2 - x13/2 + x14/2 + x15/2 + x21 - x23, // 1, 1, 0
     588         720 :           x0/4 + x1/4 + x10/2 + x16/2 - x18/2 - x2/4 - x3/4 - x4/4 - x5/4 + x6/4 + x7/4 - x8/2, // 1, 1, 1
     589         720 :           -x0/4 - x1/4 - x10/2 + x12/2 + x13/2 - x14/2 - x15/2 + x16/2 - x18/2 + x2/4 - x21 + x23 + x3/4 - x4/4 - x5/4 + x6/4 + x7/4 + x8/2 // 1, 1, 2
     590             :         },
     591             : 
     592             :         {
     593         720 :           x12/2 + x13/2 + x14/2 + x15/2 - x21 - x22 - x23 - x24 + 2*x26, // 1, 2, 0
     594         720 :           -x0/4 - x1/4 + x10/2 + x11/2 - x16/2 - x17/2 - x18/2 - x19/2 - x2/4 - x20 + x25 - x3/4 + x4/4 + x5/4 + x6/4 + x7/4 + x8/2 + x9/2, // 1, 2, 1
     595         720 :           x0/4 + x1/4 - x10/2 - x11/2 - x12/2 - x13/2 - x14/2 - x15/2 - x16/2 - x17/2 - x18/2 - x19/2 + x2/4 + x20 + x21 + x22 + x23 + x24 + x25 - 2*x26 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4 - x8/2 - x9/2 // 1, 2, 2
     596             :         }
     597             :       },
     598             :       {
     599             :         {Point(0,0,0), Point(0,0,0), Point(0,0,0)},
     600             :         {Point(0,0,0), Point(0,0,0), Point(0,0,0)},
     601             :         {Point(0,0,0), Point(0,0,0), Point(0,0,0)}
     602             :       }
     603       13680 :     };
     604             : 
     605             : 
     606             : 
     607             :   // The constant components of the dx/deta vector, all of the eta^2
     608             :   // terms are zero. These were copied directly from the output of a
     609             :   // Python script.
     610             :   Point dx_deta[3][3][3] =
     611             :     {
     612             :       {
     613             :         {
     614         720 :           -x21/2 + x23/2, // 0, 0, 0
     615         720 :           -x10/4 - x16/4 + x18/4 + x8/4, // 0, 0, 1
     616         720 :           x10/4 - x16/4 + x18/4 + x21/2 - x23/2 - x8/4 // 0, 0, 2
     617             :         },
     618             :         {
     619         720 :           x21 + x23 - 2*x26, // 0, 1, 0
     620         720 :           -x10/2 + x16/2 + x18/2 + x20 - x25 - x8/2, // 0, 1, 1
     621         720 :           x10/2 + x16/2 + x18/2 - x20 - x21 - x23 - x25 + 2*x26 + x8/2 // 0, 1, 2
     622             :         },
     623             :         {
     624             :           Point(0,0,0), // 0, 2, 0
     625             :           Point(0,0,0), // 0, 2, 1
     626             :           Point(0,0,0)  // 0, 2, 2
     627             :         }
     628             :       },
     629             : 
     630             :       {
     631             :         {
     632         720 :           x12/4 - x13/4 + x14/4 - x15/4, // 1, 0, 0
     633         720 :           -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8, // 1, 0, 1
     634         720 :           x0/8 - x1/8 - x12/4 + x13/4 - x14/4 + x15/4 + x2/8 - x3/8 + x4/8 - x5/8 + x6/8 - x7/8 // 1, 0, 2
     635             :         },
     636             :         {
     637         720 :           -x12/2 + x13/2 + x14/2 - x15/2 - x22 + x24, // 1, 1, 0
     638         720 :           x0/4 - x1/4 - x11/2 - x17/2 + x19/2 - x2/4 + x3/4 - x4/4 + x5/4 + x6/4 - x7/4 + x9/2, // 1, 1, 1
     639         720 :           -x0/4 + x1/4 + x11/2 + x12/2 - x13/2 - x14/2 + x15/2 - x17/2 + x19/2 + x2/4 + x22 - x24 - x3/4 - x4/4 + x5/4 + x6/4 - x7/4 - x9/2 // 1, 1, 2
     640             :         },
     641             :         {
     642             :           Point(0,0,0), // 1, 2, 0
     643             :           Point(0,0,0), // 1, 2, 1
     644             :           Point(0,0,0)  // 1, 2, 2
     645             :         }
     646             :       },
     647             : 
     648             :       {
     649             :         {
     650         720 :           -x12/4 - x13/4 + x14/4 + x15/4 + x21/2 - x23/2, // 2, 0, 0
     651         720 :           x0/8 + x1/8 + x10/4 + x16/4 - x18/4 - x2/8 - x3/8 - x4/8 - x5/8 + x6/8 + x7/8 - x8/4, // 2, 0, 1
     652         720 :           -x0/8 - x1/8 - x10/4 + x12/4 + x13/4 - x14/4 - x15/4 + x16/4 - x18/4 + x2/8 - x21/2 + x23/2 + x3/8 - x4/8 - x5/8 + x6/8 + x7/8 + x8/4, // 2, 0, 2
     653             :         },
     654             :         {
     655         720 :           x12/2 + x13/2 + x14/2 + x15/2 - x21 - x22 - x23 - x24 + 2*x26, // 2, 1, 0
     656         720 :           -x0/4 - x1/4 + x10/2 + x11/2 - x16/2 - x17/2 - x18/2 - x19/2 - x2/4 - x20 + x25 - x3/4 + x4/4 + x5/4 + x6/4 + x7/4 + x8/2 + x9/2, // 2, 1, 1
     657         720 :           x0/4 + x1/4 - x10/2 - x11/2 - x12/2 - x13/2 - x14/2 - x15/2 - x16/2 - x17/2 - x18/2 - x19/2 + x2/4 + x20 + x21 + x22 + x23 + x24 + x25 - 2*x26 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4 - x8/2 - x9/2 // 2, 1, 2
     658             :         },
     659             :         {
     660             :           Point(0,0,0), // 2, 2, 0
     661             :           Point(0,0,0), // 2, 2, 1
     662             :           Point(0,0,0)  // 2, 2, 2
     663             :         }
     664             :       }
     665       13680 :     };
     666             : 
     667             : 
     668             : 
     669             :   // The constant components of the dx/dzeta vector, all of the zeta^2
     670             :   // terms are zero. These were copied directly from the output of a
     671             :   // Python script.
     672             :   Point dx_dzeta[3][3][3] =
     673             :     {
     674             :       {
     675             :         {
     676         720 :           -x20/2 + x25/2, // 0, 0, 0
     677         720 :           x20 + x25 - 2*x26, // 0, 0, 1
     678             :           Point(0,0,0) // 0, 0, 2
     679             :         },
     680             :         {
     681         720 :           -x10/4 - x16/4 + x18/4 + x8/4, // 0, 1, 0
     682         720 :           x10/2 - x16/2 + x18/2 + x21 - x23 - x8/2, // 0, 1, 1
     683             :           Point(0,0,0) // 0, 1, 2
     684             :         },
     685             :         {
     686         720 :           -x10/4 + x16/4 + x18/4 + x20/2 - x25/2 - x8/4, // 0, 2, 0
     687         720 :           x10/2 + x16/2 + x18/2 - x20 - x21 - x23 - x25 + 2*x26 + x8/2, // 0, 2, 1
     688             :           Point(0,0,0) // 0, 2, 2
     689             :         }
     690             :       },
     691             :       {
     692             :         {
     693         720 :           x11/4 + x17/4 - x19/4 - x9/4, // 1, 0, 0
     694         720 :           -x11/2 + x17/2 - x19/2 - x22 + x24 + x9/2, // 1, 0, 1
     695             :           Point(0,0,0) // 1, 0, 2
     696             :         },
     697             :         {
     698         720 :           -x0/8 + x1/8 - x2/8 + x3/8 + x4/8 - x5/8 + x6/8 - x7/8, // 1, 1, 0
     699         720 :           x0/4 - x1/4 - x12/2 + x13/2 - x14/2 + x15/2 + x2/4 - x3/4 + x4/4 - x5/4 + x6/4 - x7/4, // 1, 1, 1
     700             :           Point(0,0,0) // 1, 1, 2
     701             :         },
     702             :         {
     703         720 :           x0/8 - x1/8 - x11/4 - x17/4 + x19/4 - x2/8 + x3/8 - x4/8 + x5/8 + x6/8 - x7/8 + x9/4, // 1, 2, 0
     704         720 :           -x0/4 + x1/4 + x11/2 + x12/2 - x13/2 - x14/2 + x15/2 - x17/2 + x19/2 + x2/4 + x22 - x24 - x3/4 - x4/4 + x5/4 + x6/4 - x7/4 - x9/2, // 1, 2, 1
     705             :           Point(0,0,0) // 1, 2, 2
     706             :         }
     707             :       },
     708             :       {
     709             :         {
     710         720 :           -x11/4 + x17/4 + x19/4 + x20/2 - x25/2 - x9/4, // 2, 0, 0
     711         720 :           x11/2 + x17/2 + x19/2 - x20 - x22 - x24 - x25 + 2*x26 + x9/2, // 2, 0, 1
     712             :           Point(0,0,0) // 2, 0, 2
     713             :         },
     714             :         {
     715         720 :           x0/8 + x1/8 + x10/4 + x16/4 - x18/4 - x2/8 - x3/8 - x4/8 - x5/8 + x6/8 + x7/8 - x8/4, // 2, 1, 0
     716         720 :           -x0/4 - x1/4 - x10/2 + x12/2 + x13/2 - x14/2 - x15/2 + x16/2 - x18/2 + x2/4 - x21 + x23 + x3/4 - x4/4 - x5/4 + x6/4 + x7/4 + x8/2, // 2, 1, 1
     717             :           Point(0,0,0)  // 2, 1, 2
     718             :         },
     719             :         {
     720         720 :           -x0/8 - x1/8 + x10/4 + x11/4 - x16/4 - x17/4 - x18/4 - x19/4 - x2/8 - x20/2 + x25/2 - x3/8 + x4/8 + x5/8 + x6/8 + x7/8 + x8/4 + x9/4, // 2, 2, 0
     721         720 :           x0/4 + x1/4 - x10/2 - x11/2 - x12/2 - x13/2 - x14/2 - x15/2 - x16/2 - x17/2 - x18/2 - x19/2 + x2/4 + x20 + x21 + x22 + x23 + x24 + x25 - 2*x26 + x3/4 + x4/4 + x5/4 + x6/4 + x7/4 - x8/2 - x9/2, // 2, 2, 1
     722             :           Point(0,0,0) // 2, 2, 2
     723             :         }
     724             :       }
     725       13680 :     };
     726             : 
     727             :   // 3x3 quadrature, exact for bi-quintics
     728         720 :   const int N = 3;
     729        2819 :   const Real w[N] = {5./9, 8./9, 5./9};
     730             : 
     731             :   // Quadrature point locations raised to powers.  q[0][2] is
     732             :   // quadrature point 0, squared, q[1][1] is quadrature point 1 to the
     733             :   // first power, etc.
     734        2819 :   const Real q[N][N] =
     735             :     {
     736             :       //^0   ^1                 ^2
     737             :       {  1., -std::sqrt(15)/5., 15./25},
     738             :       {  1., 0.,                0.},
     739             :       {  1., std::sqrt(15)/5.,  15./25}
     740             :     };
     741             : 
     742         720 :   Real vol = 0.;
     743       11276 :   for (int i=0; i<N; ++i)
     744       33828 :     for (int j=0; j<N; ++j)
     745      101484 :       for (int k=0; k<N; ++k)
     746             :         {
     747             :           // Compute dx_dxi, dx_deta, dx_dzeta at the current quadrature point.
     748       19440 :           Point dx_dxi_q, dx_deta_q, dx_dzeta_q;
     749      304452 :           for (int ii=0; ii<N; ++ii)
     750      913356 :             for (int jj=0; jj<N; ++jj)
     751     2740068 :               for (int kk=0; kk<N; ++kk)
     752             :                 {
     753     2055051 :                   Real coeff = q[i][ii] * q[j][jj] * q[k][kk];
     754             : 
     755      524880 :                   dx_dxi_q   += coeff * dx_dxi[ii][jj][kk];
     756      524880 :                   dx_deta_q  += coeff * dx_deta[ii][jj][kk];
     757      524880 :                   dx_dzeta_q += coeff * dx_dzeta[ii][jj][kk];
     758             :                 }
     759             : 
     760             :           // Compute scalar triple product, multiply by weight, and accumulate volume.
     761       95391 :           vol += w[i] * w[j] * w[k] * triple_product(dx_dxi_q, dx_deta_q, dx_dzeta_q);
     762             :         }
     763             : 
     764         720 :   return vol;
     765             : }
     766             : 
     767             : 
     768             : 
     769             : 
     770             : 
     771             : 
     772             : 
     773             : #ifdef LIBMESH_ENABLE_AMR
     774             : 
     775             : const Real Hex27::_embedding_matrix[Hex27::num_children][Hex27::num_nodes][Hex27::num_nodes] =
     776             :   {
     777             :     // embedding matrix for child 0
     778             :     {
     779             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     780             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     781             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     782             :       {    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.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
     783             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 3
     784             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 4
     785             :       {    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.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
     786             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 6
     787             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000 }, // 7
     788             :       {   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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 8
     789             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    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,    0.00000,    0.00000,    0.00000 }, // 9
     790             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    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 }, // 10
     791             :       {   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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 11
     792             :       {   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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 12
     793             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
     794             :       {    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.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,   0.750000 }, // 14
     795             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 15
     796             :       {    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.375000,  -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 }, // 16
     797             :       {    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.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    0.00000,   0.750000 }, // 17
     798             :       {    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.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,   0.750000 }, // 18
     799             :       {    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.375000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 19
     800             :       {   0.140625, -0.0468750,  0.0156250, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500, -0.0937500,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 20
     801             :       {   0.140625, -0.0468750,    0.00000,    0.00000, -0.0468750,  0.0156250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 21
     802             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,   0.281250,   0.281250,    0.00000, -0.0937500,    0.00000, -0.0937500,   0.562500 }, // 22
     803             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,   0.281250,    0.00000, -0.0937500,    0.00000,   0.281250, -0.0937500,   0.562500 }, // 23
     804             :       {   0.140625,    0.00000,    0.00000, -0.0468750, -0.0468750,    0.00000,    0.00000,  0.0156250,    0.00000,    0.00000,    0.00000,   0.281250,   0.281250,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000 }, // 24
     805             :       {    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.140625, -0.0468750,  0.0156250, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500, -0.0937500,   0.281250,    0.00000,   0.562500 }, // 25
     806             :       { 0.052734375, -0.017578125, 0.005859375, -0.017578125, -0.017578125, 0.005859375, -0.001953125, 0.005859375, 0.10546875, -0.03515625, -0.03515625, 0.10546875, 0.10546875, -0.03515625, 0.01171875, -0.03515625, -0.03515625, 0.01171875, 0.01171875, -0.03515625, 0.2109375, 0.2109375, -0.0703125, -0.0703125, 0.2109375, -0.0703125, 0.421875 } // 26
     807             :     },
     808             : 
     809             :     // embedding matrix for child 1
     810             :     {
     811             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     812             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     813             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     814             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
     815             :       {    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.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 3
     816             :       {    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.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 4
     817             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
     818             :       {    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.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 6
     819             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 7
     820             :       {  -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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 8
     821             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 9
     822             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    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 }, // 10
     823             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    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,    0.00000,    0.00000,    0.00000 }, // 11
     824             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 12
     825             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
     826             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 14
     827             :       {    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.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,   0.750000 }, // 15
     828             :       {    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.125000,   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 }, // 16
     829             :       {    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.375000,  -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 }, // 17
     830             :       {    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.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,   0.750000 }, // 18
     831             :       {    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.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    0.00000,   0.750000 }, // 19
     832             :       { -0.0468750,   0.140625, -0.0468750,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250,   0.281250, -0.0937500, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 20
     833             :       { -0.0468750,   0.140625,    0.00000,    0.00000,  0.0156250, -0.0468750,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 21
     834             :       {    0.00000,   0.140625, -0.0468750,    0.00000,    0.00000, -0.0468750,  0.0156250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000 }, // 22
     835             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,   0.281250,    0.00000,   0.281250,    0.00000, -0.0937500, -0.0937500,   0.562500 }, // 23
     836             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,   0.281250,   0.281250,    0.00000, -0.0937500,    0.00000, -0.0937500,   0.562500 }, // 24
     837             :       {    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.0468750,   0.140625, -0.0468750,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250,   0.281250, -0.0937500, -0.0937500,    0.00000,   0.562500 }, // 25
     838             :       { -0.017578125, 0.052734375, -0.017578125, 0.005859375, 0.005859375, -0.017578125, 0.005859375, -0.001953125, 0.10546875, 0.10546875, -0.03515625, -0.03515625, -0.03515625, 0.10546875, -0.03515625, 0.01171875, -0.03515625, -0.03515625, 0.01171875, 0.01171875, 0.2109375, 0.2109375, 0.2109375, -0.0703125, -0.0703125, -0.0703125, 0.421875 } // 26
     839             : 
     840             :     },
     841             : 
     842             :     // embedding matrix for child 2
     843             :     {
     844             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     845             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     846             :       {    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.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     847             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
     848             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 3
     849             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000 }, // 4
     850             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 5
     851             :       {    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.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000 }, // 6
     852             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 7
     853             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    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 }, // 8
     854             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    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,    0.00000,    0.00000,    0.00000 }, // 9
     855             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 10
     856             :       {  -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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 11
     857             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 12
     858             :       {    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.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,   0.750000 }, // 13
     859             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 14
     860             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 15
     861             :       {    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.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,   0.750000 }, // 16
     862             :       {    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.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    0.00000,   0.750000 }, // 17
     863             :       {    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.125000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 18
     864             :       {    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.125000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 19
     865             :       { -0.0468750,  0.0156250, -0.0468750,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500, -0.0937500,   0.281250,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 20
     866             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,   0.281250,    0.00000, -0.0937500,    0.00000,   0.281250, -0.0937500,   0.562500 }, // 21
     867             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,   0.281250, -0.0937500,    0.00000,   0.281250,    0.00000, -0.0937500,   0.562500 }, // 22
     868             :       {    0.00000,    0.00000, -0.0468750,   0.140625,    0.00000,    0.00000,  0.0156250, -0.0468750,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000 }, // 23
     869             :       { -0.0468750,    0.00000,    0.00000,   0.140625,  0.0156250,    0.00000,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000 }, // 24
     870             :       {    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.0468750,  0.0156250, -0.0468750,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500, -0.0937500,   0.281250,   0.281250,    0.00000,   0.562500 }, // 25
     871             :       { -0.017578125, 0.005859375, -0.017578125, 0.052734375, 0.005859375, -0.001953125, 0.005859375, -0.017578125, -0.03515625, -0.03515625, 0.10546875, 0.10546875, -0.03515625, 0.01171875, -0.03515625, 0.10546875, 0.01171875, 0.01171875, -0.03515625, -0.03515625, 0.2109375, -0.0703125, -0.0703125, 0.2109375, 0.2109375, -0.0703125, 0.421875 } // 26
     872             :     },
     873             : 
     874             :     // embedding matrix for child 3
     875             :     {
     876             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     877             :       {    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.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     878             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     879             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
     880             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 3
     881             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 4
     882             :       {    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.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
     883             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 6
     884             :       {    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.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000 }, // 7
     885             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    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 }, // 8
     886             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 9
     887             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 10
     888             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    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,    0.00000,    0.00000,    0.00000 }, // 11
     889             :       {    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.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,   0.750000 }, // 12
     890             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
     891             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 14
     892             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 15
     893             :       {    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.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,   0.750000 }, // 16
     894             :       {    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.125000,   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 }, // 17
     895             :       {    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.375000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 18
     896             :       {    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.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    0.00000,   0.750000 }, // 19
     897             :       {  0.0156250, -0.0468750,   0.140625, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,   0.281250, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 20
     898             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,   0.281250,    0.00000,   0.281250,    0.00000, -0.0937500, -0.0937500,   0.562500 }, // 21
     899             :       {    0.00000, -0.0468750,   0.140625,    0.00000,    0.00000,  0.0156250, -0.0468750,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000 }, // 22
     900             :       {    0.00000,    0.00000,   0.140625, -0.0468750,    0.00000,    0.00000, -0.0468750,  0.0156250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000 }, // 23
     901             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,   0.281250, -0.0937500,    0.00000,   0.281250,    0.00000, -0.0937500,   0.562500 }, // 24
     902             :       {    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.0156250, -0.0468750,   0.140625, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,   0.281250, -0.0937500,    0.00000,   0.562500 }, // 25
     903             :       { 0.005859375, -0.017578125, 0.052734375, -0.017578125, -0.001953125, 0.005859375, -0.017578125, 0.005859375, -0.03515625, 0.10546875, 0.10546875, -0.03515625, 0.01171875, -0.03515625, 0.10546875, -0.03515625, 0.01171875, -0.03515625, -0.03515625, 0.01171875, 0.2109375, -0.0703125, 0.2109375, 0.2109375, -0.0703125, -0.0703125, 0.421875 } // 26
     904             :     },
     905             : 
     906             :     // embedding matrix for child 4
     907             :     {
     908             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     909             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     910             :       {    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.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     911             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 2
     912             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000 }, // 3
     913             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 4
     914             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
     915             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000 }, // 6
     916             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 7
     917             :       {    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.375000,  -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 }, // 8
     918             :       {    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.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    0.00000,   0.750000 }, // 9
     919             :       {    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.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,   0.750000 }, // 10
     920             :       {    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.375000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 11
     921             :       {  -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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 12
     922             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
     923             :       {    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.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,   0.750000 }, // 14
     924             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 15
     925             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 16
     926             :       {    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.375000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 17
     927             :       {    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.125000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 18
     928             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 19
     929             :       {    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.140625, -0.0468750,  0.0156250, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500, -0.0937500,   0.281250,    0.00000,   0.562500 }, // 20
     930             :       { -0.0468750,  0.0156250,    0.00000,    0.00000,   0.140625, -0.0468750,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 21
     931             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000, -0.0937500,   0.281250,    0.00000, -0.0937500,    0.00000,   0.281250,   0.562500 }, // 22
     932             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625, -0.0937500,    0.00000, -0.0937500,    0.00000,   0.281250,   0.281250,   0.562500 }, // 23
     933             :       { -0.0468750,    0.00000,    0.00000,  0.0156250,   0.140625,    0.00000,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000 }, // 24
     934             :       {    0.00000,    0.00000,    0.00000,    0.00000,   0.140625, -0.0468750,  0.0156250, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500, -0.0937500,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000 }, // 25
     935             :       { -0.017578125, 0.005859375, -0.001953125, 0.005859375, 0.052734375, -0.017578125, 0.005859375, -0.017578125, -0.03515625, 0.01171875, 0.01171875, -0.03515625, 0.10546875, -0.03515625, 0.01171875, -0.03515625, 0.10546875, -0.03515625, -0.03515625, 0.10546875, -0.0703125, 0.2109375, -0.0703125, -0.0703125, 0.2109375, 0.2109375, 0.421875 } // 26
     936             :     },
     937             : 
     938             :     // embedding matrix for child 5
     939             :     {
     940             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     941             :       {    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.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 0
     942             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
     943             :       {    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.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
     944             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 3
     945             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 4
     946             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
     947             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 6
     948             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000 }, // 7
     949             :       {    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.125000,   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 }, // 8
     950             :       {    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.375000,  -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 }, // 9
     951             :       {    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.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,   0.750000 }, // 10
     952             :       {    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.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,    0.00000,   0.750000 }, // 11
     953             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 12
     954             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
     955             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 14
     956             :       {    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.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,   0.750000 }, // 15
     957             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 16
     958             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 17
     959             :       {    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.375000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 18
     960             :       {    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.375000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 19
     961             :       {    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.0468750,   0.140625, -0.0468750,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250,   0.281250, -0.0937500, -0.0937500,    0.00000,   0.562500 }, // 20
     962             :       {  0.0156250, -0.0468750,    0.00000,    0.00000, -0.0468750,   0.140625,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 21
     963             :       {    0.00000, -0.0468750,  0.0156250,    0.00000,    0.00000,   0.140625, -0.0468750,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000 }, // 22
     964             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750, -0.0937500,    0.00000,   0.281250,    0.00000, -0.0937500,   0.281250,   0.562500 }, // 23
     965             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750,    0.00000, -0.0937500,   0.281250,    0.00000, -0.0937500,    0.00000,   0.281250,   0.562500 }, // 24
     966             :       {    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,   0.140625, -0.0468750,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.281250,   0.281250, -0.0937500, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000 }, // 25
     967             :       { 0.005859375, -0.017578125, 0.005859375, -0.001953125, -0.017578125, 0.052734375, -0.017578125, 0.005859375, -0.03515625, -0.03515625, 0.01171875, 0.01171875, -0.03515625, 0.10546875, -0.03515625, 0.01171875, 0.10546875, 0.10546875, -0.03515625, -0.03515625, -0.0703125, 0.2109375, 0.2109375, -0.0703125, -0.0703125, 0.2109375, 0.421875 } // 26
     968             :     },
     969             : 
     970             :     // embedding matrix for child 6
     971             :     {
     972             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
     973             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000 }, // 0
     974             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 1
     975             :       {    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.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000 }, // 2
     976             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 3
     977             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 4
     978             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000 }, // 5
     979             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 6
     980             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 7
     981             :       {    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.00000,    0.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,   0.750000 }, // 8
     982             :       {    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.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    0.00000,   0.750000 }, // 9
     983             :       {    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.125000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 10
     984             :       {    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.125000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 11
     985             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000 }, // 12
     986             :       {    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.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,   0.750000 }, // 13
     987             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 14
     988             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 15
     989             :       {    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.125000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 16
     990             :       {    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.125000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 17
     991             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 18
     992             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 19
     993             :       {    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.0468750,  0.0156250, -0.0468750,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500, -0.0937500,   0.281250,   0.281250,    0.00000,   0.562500 }, // 20
     994             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625, -0.0937500,    0.00000, -0.0937500,    0.00000,   0.281250,   0.281250,   0.562500 }, // 21
     995             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000, -0.0937500, -0.0937500,    0.00000,   0.281250,    0.00000,   0.281250,   0.562500 }, // 22
     996             :       {    0.00000,    0.00000,  0.0156250, -0.0468750,    0.00000,    0.00000, -0.0468750,   0.140625,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000 }, // 23
     997             :       {  0.0156250,    0.00000,    0.00000, -0.0468750, -0.0468750,    0.00000,    0.00000,   0.140625,    0.00000,    0.00000,    0.00000, -0.0937500, -0.0937500,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000 }, // 24
     998             :       {    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,  0.0156250, -0.0468750,   0.140625,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500, -0.0937500,   0.281250,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000 }, // 25
     999             :       { 0.005859375, -0.001953125, 0.005859375, -0.017578125, -0.017578125, 0.005859375, -0.017578125, 0.052734375, 0.01171875, 0.01171875, -0.03515625, -0.03515625, -0.03515625, 0.01171875, -0.03515625, 0.10546875, -0.03515625, -0.03515625, 0.10546875, 0.10546875, -0.0703125, -0.0703125, -0.0703125, 0.2109375, 0.2109375, 0.2109375, 0.421875 } // 26
    1000             :     },
    1001             : 
    1002             :     // embedding matrix for child 7
    1003             :     {
    1004             :       //         0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15          16          17          18          19          20          21          22          23          24          25          26
    1005             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000 }, // 0
    1006             :       {    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.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 1
    1007             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 2
    1008             :       {    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.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000,    0.00000,    0.00000 }, // 3
    1009             :       {    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.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    1.00000,    0.00000 }, // 4
    1010             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 5
    1011             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 6
    1012             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 7
    1013             :       {    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.00000,    0.00000,    0.00000,   0.375000,    0.00000,  -0.125000,    0.00000,   0.750000 }, // 8
    1014             :       {    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.125000,   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 }, // 9
    1015             :       {    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.375000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 10
    1016             :       {    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.00000,    0.00000,  -0.125000,    0.00000,   0.375000,    0.00000,    0.00000,   0.750000 }, // 11
    1017             :       {    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.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,   0.750000 }, // 12
    1018             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 13
    1019             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 14
    1020             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000,    0.00000,    0.00000 }, // 15
    1021             :       {    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.375000,    0.00000,  -0.125000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 16
    1022             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 17
    1023             :       {    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,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000 }, // 18
    1024             :       {    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.125000,    0.00000,   0.375000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.750000,    0.00000 }, // 19
    1025             :       {    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.0156250, -0.0468750,   0.140625, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,   0.281250, -0.0937500,    0.00000,   0.562500 }, // 20
    1026             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,  0.0156250,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.140625,    0.00000, -0.0468750, -0.0937500,    0.00000,   0.281250,    0.00000, -0.0937500,   0.281250,   0.562500 }, // 21
    1027             :       {    0.00000,  0.0156250, -0.0468750,    0.00000,    0.00000, -0.0468750,   0.140625,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000,    0.00000 }, // 22
    1028             :       {    0.00000,    0.00000, -0.0468750,  0.0156250,    0.00000,    0.00000,   0.140625, -0.0468750,    0.00000,    0.00000, -0.0937500,    0.00000,    0.00000,    0.00000,   0.281250, -0.0937500,    0.00000,    0.00000,   0.281250,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000,    0.00000,    0.00000 }, // 23
    1029             :       {    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250,    0.00000, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0468750,    0.00000,   0.140625,    0.00000, -0.0937500, -0.0937500,    0.00000,   0.281250,    0.00000,   0.281250,   0.562500 }, // 24
    1030             :       {    0.00000,    0.00000,    0.00000,    0.00000,  0.0156250, -0.0468750,   0.140625, -0.0468750,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000, -0.0937500,   0.281250,   0.281250, -0.0937500,    0.00000,    0.00000,    0.00000,    0.00000,    0.00000,   0.562500,    0.00000 }, // 25
    1031             :       { -0.001953125, 0.005859375, -0.017578125, 0.005859375, 0.005859375, -0.017578125, 0.052734375, -0.017578125, 0.01171875, -0.03515625, -0.03515625, 0.01171875, 0.01171875, -0.03515625, 0.10546875, -0.03515625, -0.03515625, 0.10546875, 0.10546875, -0.03515625, -0.0703125, -0.0703125, 0.2109375, 0.2109375, -0.0703125, 0.2109375, 0.421875 } // 26
    1032             :     }
    1033             :   };
    1034             : 
    1035             : #endif
    1036             : 
    1037             : 
    1038             : void
    1039       57876 : Hex27::permute(unsigned int perm_num)
    1040             : {
    1041       14580 :   libmesh_assert_less (perm_num, 24);
    1042       57876 :   const unsigned int side = perm_num % 6;
    1043       57876 :   const unsigned int rotate = perm_num / 6;
    1044             : 
    1045      147098 :   for (unsigned int i = 0; i != rotate; ++i)
    1046             :     {
    1047       89222 :       swap4nodes(0,1,2,3);
    1048       89222 :       swap4nodes(4,5,6,7);
    1049       89222 :       swap4nodes(8,9,10,11);
    1050       89222 :       swap4nodes(12,13,14,15);
    1051       89222 :       swap4nodes(16,17,18,19);
    1052       89222 :       swap4nodes(21,22,23,24);
    1053       66714 :       swap4neighbors(1,2,3,4);
    1054             :     }
    1055             : 
    1056       57876 :   switch (side) {
    1057        2282 :   case 0:
    1058        2282 :     break;
    1059        9309 :   case 1:
    1060        9309 :     swap4nodes(3,7,4,0);
    1061        9309 :     swap4nodes(11,15,19,12);
    1062        9309 :     swap4nodes(10,18,16,8);
    1063        9309 :     swap4nodes(2,6,5,1);
    1064        9309 :     swap4nodes(9,14,17,13);
    1065        9309 :     swap4nodes(20,23,25,21);
    1066        6979 :     swap4neighbors(0,3,5,1);
    1067        6979 :     break;
    1068        9004 :   case 2:
    1069        9004 :     swap4nodes(0,4,5,1);
    1070        9004 :     swap4nodes(8,12,16,13);
    1071        9004 :     swap4nodes(3,7,6,2);
    1072        9004 :     swap4nodes(10,15,18,14);
    1073        9004 :     swap4nodes(11,19,17,9);
    1074        9004 :     swap4nodes(20,24,25,22);
    1075        6744 :     swap4neighbors(0,4,5,2);
    1076        6744 :     break;
    1077        9908 :   case 3:
    1078        9908 :     swap4nodes(0,4,7,3);
    1079        9908 :     swap4nodes(12,19,15,11);
    1080        9908 :     swap4nodes(8,16,18,10);
    1081        9908 :     swap4nodes(1,5,6,2);
    1082        9908 :     swap4nodes(13,17,14,9);
    1083        9908 :     swap4nodes(20,21,25,23);
    1084        7416 :     swap4neighbors(0,1,5,3);
    1085        7416 :     break;
    1086       10294 :   case 4:
    1087       10294 :     swap4nodes(1,5,4,0);
    1088       10294 :     swap4nodes(8,13,16,12);
    1089       10294 :     swap4nodes(9,17,19,11);
    1090       10294 :     swap4nodes(2,6,7,3);
    1091       10294 :     swap4nodes(10,14,18,15);
    1092       10294 :     swap4nodes(20,22,25,24);
    1093        7698 :     swap4neighbors(0,2,5,4);
    1094        7698 :     break;
    1095       10266 :   case 5:
    1096       10266 :     swap2nodes(0,7);
    1097       10266 :     swap2nodes(8,18);
    1098       10266 :     swap2nodes(1,6);
    1099       10266 :     swap2nodes(2,5);
    1100       10266 :     swap2nodes(10,16);
    1101       10266 :     swap2nodes(3,4);
    1102       10266 :     swap2nodes(11,19);
    1103       10266 :     swap2nodes(12,15);
    1104       10266 :     swap2nodes(9,17);
    1105       10266 :     swap2nodes(13,14);
    1106       10266 :     swap2nodes(20,25);
    1107       10266 :     swap2nodes(21,23);
    1108        2620 :     swap2neighbors(0,5);
    1109        2620 :     swap2neighbors(1,3);
    1110        2620 :     break;
    1111           0 :   default:
    1112           0 :     libmesh_error();
    1113             :   }
    1114       57876 : }
    1115             : 
    1116             : 
    1117             : void
    1118          96 : Hex27::flip(BoundaryInfo * boundary_info)
    1119             : {
    1120          24 :   libmesh_assert(boundary_info);
    1121             : 
    1122          96 :   swap2nodes(0,1);
    1123          96 :   swap2nodes(2,3);
    1124          96 :   swap2nodes(4,5);
    1125          96 :   swap2nodes(6,7);
    1126          96 :   swap2nodes(9,11);
    1127          96 :   swap2nodes(12,13);
    1128          96 :   swap2nodes(14,15);
    1129          96 :   swap2nodes(17,19);
    1130          96 :   swap2nodes(22,24);
    1131          24 :   swap2neighbors(2,4);
    1132          96 :   swap2boundarysides(2,4,boundary_info);
    1133          96 :   swap2boundaryedges(1,3,boundary_info);
    1134          96 :   swap2boundaryedges(4,5,boundary_info);
    1135          96 :   swap2boundaryedges(6,7,boundary_info);
    1136          96 :   swap2boundaryedges(9,11,boundary_info);
    1137          96 : }
    1138             : 
    1139             : 
    1140         192 : unsigned int Hex27::center_node_on_side(const unsigned short side) const
    1141             : {
    1142          48 :   libmesh_assert_less (side, Hex27::num_sides);
    1143         192 :   return side + 20;
    1144             : }
    1145             : 
    1146             : 
    1147             : ElemType
    1148   155393158 : Hex27::side_type (const unsigned int libmesh_dbg_var(s)) const
    1149             : {
    1150    37874342 :   libmesh_assert_less (s, 6);
    1151   155393158 :   return QUAD9;
    1152             : }
    1153             : 
    1154             : 
    1155             : } // namespace libMesh

Generated by: LCOV version 1.14