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

Generated by: LCOV version 1.14