$extrastylesheet
cell_prism18.C
Go to the documentation of this file.
00001 // The libMesh Finite Element Library.
00002 // Copyright (C) 2002-2014 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
00003 
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Lesser General Public
00006 // License as published by the Free Software Foundation; either
00007 // version 2.1 of the License, or (at your option) any later version.
00008 
00009 // This library is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // Lesser General Public License for more details.
00013 
00014 // You should have received a copy of the GNU Lesser General Public
00015 // License along with this library; if not, write to the Free Software
00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017 
00018 
00019 // C++ includes
00020 
00021 // Local includes
00022 #include "libmesh/side.h"
00023 #include "libmesh/cell_prism18.h"
00024 #include "libmesh/edge_edge3.h"
00025 #include "libmesh/face_quad9.h"
00026 #include "libmesh/face_tri6.h"
00027 
00028 namespace libMesh
00029 {
00030 
00031 
00032 
00033 // ------------------------------------------------------------
00034 // Prism18 class static member initializations
00035 const unsigned int Prism18::side_nodes_map[5][9] =
00036   {
00037     {0, 2, 1,  8,  7,  6, 99, 99, 99}, // Side 0
00038     {0, 1, 4,  3,  6, 10, 12,  9, 15}, // Side 1
00039     {1, 2, 5,  4,  7, 11, 13, 10, 16}, // Side 2
00040     {2, 0, 3,  5,  8,  9, 14, 11, 17}, // Side 3
00041     {3, 4, 5, 12, 13, 14, 99, 99, 99}  // Side 4
00042   };
00043 
00044 const unsigned int Prism18::edge_nodes_map[9][3] =
00045   {
00046     {0, 1, 6},  // Side 0
00047     {1, 2, 7},  // Side 1
00048     {0, 2, 8},  // Side 2
00049     {0, 3, 9},  // Side 3
00050     {1, 4, 10}, // Side 4
00051     {2, 5, 11}, // Side 5
00052     {3, 4, 12}, // Side 6
00053     {4, 5, 13}, // Side 7
00054     {3, 5, 14}  // Side 8
00055   };
00056 
00057 
00058 // ------------------------------------------------------------
00059 // Prism18 class member functions
00060 
00061 bool Prism18::is_vertex(const unsigned int i) const
00062 {
00063   if (i < 6)
00064     return true;
00065   return false;
00066 }
00067 
00068 bool Prism18::is_edge(const unsigned int i) const
00069 {
00070   if (i < 6)
00071     return false;
00072   if (i > 14)
00073     return false;
00074   return true;
00075 }
00076 
00077 bool Prism18::is_face(const unsigned int i) const
00078 {
00079   if (i > 14)
00080     return true;
00081   return false;
00082 }
00083 
00084 bool Prism18::is_node_on_side(const unsigned int n,
00085                               const unsigned int s) const
00086 {
00087   libmesh_assert_less (s, n_sides());
00088   for (unsigned int i = 0; i != 9; ++i)
00089     if (side_nodes_map[s][i] == n)
00090       return true;
00091   return false;
00092 }
00093 
00094 bool Prism18::is_node_on_edge(const unsigned int n,
00095                               const unsigned int e) const
00096 {
00097   libmesh_assert_less (e, n_edges());
00098   for (unsigned int i = 0; i != 3; ++i)
00099     if (edge_nodes_map[e][i] == n)
00100       return true;
00101   return false;
00102 }
00103 
00104 
00105 
00106 bool Prism18::has_affine_map() const
00107 {
00108   // Make sure z edges are affine
00109   Point v = this->point(3) - this->point(0);
00110   if (!v.relative_fuzzy_equals(this->point(4) - this->point(1)) ||
00111       !v.relative_fuzzy_equals(this->point(5) - this->point(2)))
00112     return false;
00113   // Make sure edges are straight
00114   v /= 2;
00115   if (!v.relative_fuzzy_equals(this->point(9) - this->point(0)) ||
00116       !v.relative_fuzzy_equals(this->point(10) - this->point(1)) ||
00117       !v.relative_fuzzy_equals(this->point(11) - this->point(2)) ||
00118       !v.relative_fuzzy_equals(this->point(15) - this->point(6)) ||
00119       !v.relative_fuzzy_equals(this->point(16) - this->point(7)) ||
00120       !v.relative_fuzzy_equals(this->point(17) - this->point(8)))
00121     return false;
00122   v = (this->point(1) - this->point(0))/2;
00123   if (!v.relative_fuzzy_equals(this->point(6) - this->point(0)) ||
00124       !v.relative_fuzzy_equals(this->point(12) - this->point(3)))
00125     return false;
00126   v = (this->point(2) - this->point(0))/2;
00127   if (!v.relative_fuzzy_equals(this->point(8) - this->point(0)) ||
00128       !v.relative_fuzzy_equals(this->point(14) - this->point(3)))
00129     return false;
00130   v = (this->point(2) - this->point(1))/2;
00131   if (!v.relative_fuzzy_equals(this->point(7) - this->point(1)) ||
00132       !v.relative_fuzzy_equals(this->point(13) - this->point(4)))
00133     return false;
00134   return true;
00135 }
00136 
00137 
00138 
00139 dof_id_type Prism18::key (const unsigned int s) const
00140 {
00141   libmesh_assert_less (s, this->n_sides());
00142 
00143   switch (s)
00144     {
00145     case 0:  // the triangular face at z=0
00146       {
00147         return Prism::key(0);
00148       }
00149     case 1:  // the quad face at y=0
00150       {
00151         return Elem::compute_key (this->node(15));
00152       }
00153     case 2:  // the other quad face
00154       {
00155         return Elem::compute_key (this->node(16));
00156       }
00157     case 3: // the quad face at x=0
00158       {
00159         return Elem::compute_key (this->node(17));
00160       }
00161     case 4: // the triangular face at z=1
00162       {
00163         return Prism::key(4);
00164       }
00165     default:
00166       libmesh_error_msg("Invalid side " << s);
00167     }
00168 
00169   libmesh_error_msg("We'll never get here!");
00170   return 0;
00171 }
00172 
00173 
00174 
00175 
00176 
00177 UniquePtr<Elem> Prism18::build_side (const unsigned int i,
00178                                      bool proxy) const
00179 {
00180   libmesh_assert_less (i, this->n_sides());
00181 
00182   if (proxy)
00183     {
00184       switch(i)
00185         {
00186         case 0:
00187         case 4:
00188           return UniquePtr<Elem>(new Side<Tri6,Prism18>(this,i));
00189 
00190         case 1:
00191         case 2:
00192         case 3:
00193           return UniquePtr<Elem>(new Side<Quad9,Prism18>(this,i));
00194 
00195         default:
00196           libmesh_error_msg("Invalid side i = " << i);
00197         }
00198     }
00199 
00200   else
00201     {
00202       // Create NULL pointer to be initialized, returned later.
00203       Elem* face = NULL;
00204 
00205       switch (i)
00206         {
00207         case 0:  // the triangular face at z=-1
00208           {
00209             face = new Tri6;
00210 
00211             face->set_node(0) = this->get_node(0);
00212             face->set_node(1) = this->get_node(2);
00213             face->set_node(2) = this->get_node(1);
00214             face->set_node(3) = this->get_node(8);
00215             face->set_node(4) = this->get_node(7);
00216             face->set_node(5) = this->get_node(6);
00217 
00218             break;
00219           }
00220         case 1:  // the quad face at y=0
00221           {
00222             face = new Quad9;
00223 
00224             face->set_node(0) = this->get_node(0);
00225             face->set_node(1) = this->get_node(1);
00226             face->set_node(2) = this->get_node(4);
00227             face->set_node(3) = this->get_node(3);
00228             face->set_node(4) = this->get_node(6);
00229             face->set_node(5) = this->get_node(10);
00230             face->set_node(6) = this->get_node(12);
00231             face->set_node(7) = this->get_node(9);
00232             face->set_node(8) = this->get_node(15);
00233 
00234             break;
00235           }
00236         case 2:  // the other quad face
00237           {
00238             face = new Quad9;
00239 
00240             face->set_node(0) = this->get_node(1);
00241             face->set_node(1) = this->get_node(2);
00242             face->set_node(2) = this->get_node(5);
00243             face->set_node(3) = this->get_node(4);
00244             face->set_node(4) = this->get_node(7);
00245             face->set_node(5) = this->get_node(11);
00246             face->set_node(6) = this->get_node(13);
00247             face->set_node(7) = this->get_node(10);
00248             face->set_node(8) = this->get_node(16);
00249 
00250             break;
00251           }
00252         case 3: // the quad face at x=0
00253           {
00254             face = new Quad9;
00255 
00256             face->set_node(0) = this->get_node(2);
00257             face->set_node(1) = this->get_node(0);
00258             face->set_node(2) = this->get_node(3);
00259             face->set_node(3) = this->get_node(5);
00260             face->set_node(4) = this->get_node(8);
00261             face->set_node(5) = this->get_node(9);
00262             face->set_node(6) = this->get_node(14);
00263             face->set_node(7) = this->get_node(11);
00264             face->set_node(8) = this->get_node(17);
00265 
00266             break;
00267           }
00268         case 4: // the triangular face at z=1
00269           {
00270             face = new Tri6;
00271 
00272             face->set_node(0) = this->get_node(3);
00273             face->set_node(1) = this->get_node(4);
00274             face->set_node(2) = this->get_node(5);
00275             face->set_node(3) = this->get_node(12);
00276             face->set_node(4) = this->get_node(13);
00277             face->set_node(5) = this->get_node(14);
00278 
00279             break;
00280           }
00281         default:
00282           libmesh_error_msg("Invalid side i = " << i);
00283         }
00284 
00285       face->subdomain_id() = this->subdomain_id();
00286       return UniquePtr<Elem>(face);
00287     }
00288 
00289   libmesh_error_msg("We'll never get here!");
00290   return UniquePtr<Elem>();
00291 }
00292 
00293 
00294 
00295 UniquePtr<Elem> Prism18::build_edge (const unsigned int i) const
00296 {
00297   libmesh_assert_less (i, this->n_edges());
00298 
00299   return UniquePtr<Elem>(new SideEdge<Edge3,Prism18>(this,i));
00300 }
00301 
00302 
00303 
00304 void Prism18::connectivity(const unsigned int sc,
00305                            const IOPackage iop,
00306                            std::vector<dof_id_type>& conn) const
00307 {
00308   libmesh_assert(_nodes);
00309   libmesh_assert_less (sc, this->n_sub_elem());
00310   libmesh_assert_not_equal_to (iop, INVALID_IO_PACKAGE);
00311 
00312   switch (iop)
00313     {
00314     case TECPLOT:
00315       {
00316         conn.resize(8);
00317         switch (sc)
00318           {
00319 
00320           case 0:
00321             {
00322               conn[0] = this->node(0)+1;
00323               conn[1] = this->node(6)+1;
00324               conn[2] = this->node(8)+1;
00325               conn[3] = this->node(8)+1;
00326               conn[4] = this->node(9)+1;
00327               conn[5] = this->node(15)+1;
00328               conn[6] = this->node(17)+1;
00329               conn[7] = this->node(17)+1;
00330 
00331               return;
00332             }
00333 
00334           case 1:
00335             {
00336               conn[0] = this->node(6)+1;
00337               conn[1] = this->node(1)+1;
00338               conn[2] = this->node(7)+1;
00339               conn[3] = this->node(7)+1;
00340               conn[4] = this->node(15)+1;
00341               conn[5] = this->node(10)+1;
00342               conn[6] = this->node(16)+1;
00343               conn[7] = this->node(16)+1;
00344 
00345               return;
00346             }
00347 
00348           case 2:
00349             {
00350               conn[0] = this->node(8)+1;
00351               conn[1] = this->node(7)+1;
00352               conn[2] = this->node(2)+1;
00353               conn[3] = this->node(2)+1;
00354               conn[4] = this->node(17)+1;
00355               conn[5] = this->node(16)+1;
00356               conn[6] = this->node(11)+1;
00357               conn[7] = this->node(11)+1;
00358 
00359               return;
00360             }
00361 
00362           case 3:
00363             {
00364               conn[0] = this->node(6)+1;
00365               conn[1] = this->node(7)+1;
00366               conn[2] = this->node(8)+1;
00367               conn[3] = this->node(8)+1;
00368               conn[4] = this->node(15)+1;
00369               conn[5] = this->node(16)+1;
00370               conn[6] = this->node(17)+1;
00371               conn[7] = this->node(17)+1;
00372 
00373               return;
00374             }
00375 
00376           case 4:
00377             {
00378               conn[0] = this->node(9)+1;
00379               conn[1] = this->node(15)+1;
00380               conn[2] = this->node(17)+1;
00381               conn[3] = this->node(17)+1;
00382               conn[4] = this->node(3)+1;
00383               conn[5] = this->node(12)+1;
00384               conn[6] = this->node(14)+1;
00385               conn[7] = this->node(14)+1;
00386 
00387               return;
00388             }
00389 
00390           case 5:
00391             {
00392               conn[0] = this->node(15)+1;
00393               conn[1] = this->node(10)+1;
00394               conn[2] = this->node(16)+1;
00395               conn[3] = this->node(16)+1;
00396               conn[4] = this->node(12)+1;
00397               conn[5] = this->node(4)+1;
00398               conn[6] = this->node(13)+1;
00399               conn[7] = this->node(13)+1;
00400 
00401               return;
00402             }
00403 
00404           case 6:
00405             {
00406               conn[0] = this->node(17)+1;
00407               conn[1] = this->node(16)+1;
00408               conn[2] = this->node(11)+1;
00409               conn[3] = this->node(11)+1;
00410               conn[4] = this->node(14)+1;
00411               conn[5] = this->node(13)+1;
00412               conn[6] = this->node(5)+1;
00413               conn[7] = this->node(5)+1;
00414 
00415               return;
00416             }
00417 
00418           case 7:
00419             {
00420               conn[0] = this->node(15)+1;
00421               conn[1] = this->node(16)+1;
00422               conn[2] = this->node(17)+1;
00423               conn[3] = this->node(17)+1;
00424               conn[4] = this->node(12)+1;
00425               conn[5] = this->node(13)+1;
00426               conn[6] = this->node(14)+1;
00427               conn[7] = this->node(14)+1;
00428 
00429               return;
00430             }
00431 
00432           default:
00433             libmesh_error_msg("Invalid sc = " << sc);
00434           }
00435 
00436       }
00437 
00438     case VTK:
00439       {
00440         // VTK now supports VTK_BIQUADRATIC_QUADRATIC_WEDGE directly
00441         conn.resize(18);
00442 
00443         // VTK's VTK_BIQUADRATIC_QUADRATIC_WEDGE first 9 (vertex) and
00444         // last 3 (mid-face) nodes match.  The middle and top layers
00445         // of mid-edge nodes are reversed from LibMesh's.
00446         for (unsigned i=0; i<conn.size(); ++i)
00447           conn[i] = this->node(i);
00448 
00449         // top "ring" of mid-edge nodes
00450         conn[9]  = this->node(12);
00451         conn[10] = this->node(13);
00452         conn[11] = this->node(14);
00453 
00454         // middle "ring" of mid-edge nodes
00455         conn[12] = this->node(9);
00456         conn[13] = this->node(10);
00457         conn[14] = this->node(11);
00458 
00459         return;
00460 
00461         /*
00462           conn.resize(6);
00463           switch (sc)
00464           {
00465 
00466           case 0:
00467           {
00468           conn[0] = this->node(0);
00469           conn[1] = this->node(6);
00470           conn[2] = this->node(8);
00471           conn[3] = this->node(9);
00472           conn[4] = this->node(15);
00473           conn[5] = this->node(17);
00474 
00475           return;
00476           }
00477 
00478           case 1:
00479           {
00480           conn[0] = this->node(6);
00481           conn[1] = this->node(1);
00482           conn[2] = this->node(7);
00483           conn[3] = this->node(15);
00484           conn[4] = this->node(10);
00485           conn[5] = this->node(16);
00486 
00487           return;
00488           }
00489 
00490           case 2:
00491           {
00492           conn[0] = this->node(8);
00493           conn[1] = this->node(7);
00494           conn[2] = this->node(2);
00495           conn[3] = this->node(17);
00496           conn[4] = this->node(16);
00497           conn[5] = this->node(11);
00498 
00499           return;
00500           }
00501 
00502           case 3:
00503           {
00504           conn[0] = this->node(6);
00505           conn[1] = this->node(7);
00506           conn[2] = this->node(8);
00507           conn[3] = this->node(15);
00508           conn[4] = this->node(16);
00509           conn[5] = this->node(17);
00510 
00511           return;
00512           }
00513 
00514           case 4:
00515           {
00516           conn[0] = this->node(9);
00517           conn[1] = this->node(15);
00518           conn[2] = this->node(17);
00519           conn[3] = this->node(3);
00520           conn[4] = this->node(12);
00521           conn[5] = this->node(14);
00522 
00523           return;
00524           }
00525 
00526           case 5:
00527           {
00528           conn[0] = this->node(15);
00529           conn[1] = this->node(10);
00530           conn[2] = this->node(16);
00531           conn[3] = this->node(12);
00532           conn[4] = this->node(4);
00533           conn[5] = this->node(13);
00534 
00535           return;
00536           }
00537 
00538           case 6:
00539           {
00540           conn[0] = this->node(17);
00541           conn[1] = this->node(16);
00542           conn[2] = this->node(11);
00543           conn[3] = this->node(14);
00544           conn[4] = this->node(13);
00545           conn[5] = this->node(5);
00546 
00547           return;
00548           }
00549 
00550           case 7:
00551           {
00552           conn[0] = this->node(15);
00553           conn[1] = this->node(16);
00554           conn[2] = this->node(17);
00555           conn[3] = this->node(12);
00556           conn[4] = this->node(13);
00557           conn[5] = this->node(14);
00558 
00559           return;
00560           }
00561 
00562           default:
00563           libmesh_error_msg("Invalid sc = " << sc);
00564           }
00565         */
00566       }
00567 
00568     default:
00569       libmesh_error_msg("Unsupported IO package " << iop);
00570     }
00571 }
00572 
00573 
00574 
00575 
00576 unsigned int Prism18::n_second_order_adjacent_vertices (const unsigned int n) const
00577 {
00578   switch (n)
00579     {
00580     case 6:
00581     case 7:
00582     case 8:
00583     case 9:
00584     case 10:
00585     case 11:
00586     case 12:
00587     case 13:
00588     case 14:
00589       return 2;
00590 
00591     case 15:
00592     case 16:
00593     case 17:
00594       return 4;
00595 
00596     default:
00597       libmesh_error_msg("Invalid node n = " << n);
00598     }
00599 
00600   libmesh_error_msg("We'll never get here!");
00601   return libMesh::invalid_uint;
00602 }
00603 
00604 
00605 
00606 
00607 
00608 unsigned short int Prism18::second_order_adjacent_vertex (const unsigned int n,
00609                                                           const unsigned int v) const
00610 {
00611   libmesh_assert_greater_equal (n, this->n_vertices());
00612   libmesh_assert_less (n, this->n_nodes());
00613 
00614   switch (n)
00615     {
00616       /*
00617        * These nodes are unique to \p Prism18,
00618        * let our _remaining_... matrix handle
00619        * this.
00620        */
00621     case 15:
00622     case 16:
00623     case 17:
00624       {
00625         libmesh_assert_less (v, 4);
00626         return _remaining_second_order_adjacent_vertices[n-15][v];
00627       }
00628 
00629       /*
00630        * All other second-order nodes (6,...,14) are
00631        * identical with Prism15 and are therefore
00632        * delegated to the _second_order matrix of
00633        * \p Prism
00634        */
00635     default:
00636       {
00637         libmesh_assert_less (v, 2);
00638         return _second_order_adjacent_vertices[n-this->n_vertices()][v];
00639       }
00640 
00641     }
00642 
00643   libmesh_error_msg("We'll never ge here!");
00644   return static_cast<unsigned short int>(-1);
00645 }
00646 
00647 
00648 
00649 const unsigned short int Prism18::_remaining_second_order_adjacent_vertices[3][4] =
00650   {
00651     { 0,  1,  3,  4}, // vertices adjacent to node 15
00652     { 1,  2,  4,  5}, // vertices adjacent to node 16
00653     { 0,  2,  3,  5}  // vertices adjacent to node 17
00654   };
00655 
00656 
00657 
00658 std::pair<unsigned short int, unsigned short int>
00659 Prism18::second_order_child_vertex (const unsigned int n) const
00660 {
00661   libmesh_assert_greater_equal (n, this->n_vertices());
00662   libmesh_assert_less (n, this->n_nodes());
00663 
00664   return std::pair<unsigned short int, unsigned short int>
00665     (_second_order_vertex_child_number[n],
00666      _second_order_vertex_child_index[n]);
00667 }
00668 
00669 
00670 
00671 
00672 
00673 
00674 
00675 #ifdef LIBMESH_ENABLE_AMR
00676 
00677 const float Prism18::_embedding_matrix[8][18][18] =
00678   {
00679     // embedding matrix for child 0
00680     {
00681       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00682       {       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 0
00683       {       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 1
00684       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 2
00685       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 3
00686       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 4
00687       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 5
00688       {    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 6
00689       {       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 7
00690       {    0.375,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 8
00691       {    0.375,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 9
00692       {       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.,       0.}, // 10
00693       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75}, // 11
00694       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.,       0.}, // 12
00695       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5}, // 13
00696       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75}, // 14
00697       { 0.140625,-0.046875,       0.,-0.046875, 0.015625,       0.,  0.28125,       0.,       0.,  0.28125, -0.09375,       0., -0.09375,       0.,       0.,   0.5625,       0.,       0.}, // 15
00698       {       0.,-0.046875,-0.046875,       0., 0.015625, 0.015625,   0.1875,  0.09375,   0.1875,       0., -0.09375, -0.09375,  -0.0625, -0.03125,  -0.0625,    0.375,   0.1875,    0.375}, // 16
00699       { 0.140625,       0.,-0.046875,-0.046875,       0., 0.015625,       0.,       0.,  0.28125,  0.28125,       0., -0.09375,       0.,       0., -0.09375,       0.,       0.,   0.5625}  // 17
00700     },
00701 
00702     // embedding matrix for child 1
00703     {
00704       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00705       {       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 0
00706       {       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 1
00707       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 2
00708       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 3
00709       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 4
00710       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 5
00711       {   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 6
00712       {       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 7
00713       {   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 8
00714       {       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.,       0.}, // 9
00715       {       0.,    0.375,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 10
00716       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.}, // 11
00717       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.,       0.}, // 12
00718       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.}, // 13
00719       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25}, // 14
00720       {-0.046875, 0.140625,       0., 0.015625,-0.046875,       0.,  0.28125,       0.,       0., -0.09375,  0.28125,       0., -0.09375,       0.,       0.,   0.5625,       0.,       0.}, // 15
00721       {       0., 0.140625,-0.046875,       0.,-0.046875, 0.015625,       0.,  0.28125,       0.,       0.,  0.28125, -0.09375,       0., -0.09375,       0.,       0.,   0.5625,       0.}, // 16
00722       {-0.046875,       0.,-0.046875, 0.015625,       0., 0.015625,   0.1875,   0.1875,  0.09375, -0.09375,       0., -0.09375,  -0.0625,  -0.0625, -0.03125,    0.375,    0.375,   0.1875}  // 17
00723     },
00724 
00725     // embedding matrix for child 2
00726     {
00727       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00728       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 0
00729       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 1
00730       {       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 2
00731       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 3
00732       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 4
00733       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.}, // 5
00734       {   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 6
00735       {       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 7
00736       {   -0.125,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 8
00737       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75}, // 9
00738       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.}, // 10
00739       {       0.,       0.,    0.375,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.}, // 11
00740       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5}, // 12
00741       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.}, // 13
00742       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75}, // 14
00743       {-0.046875,-0.046875,       0., 0.015625, 0.015625,       0.,  0.09375,   0.1875,   0.1875, -0.09375, -0.09375,       0., -0.03125,  -0.0625,  -0.0625,   0.1875,    0.375,    0.375}, // 15
00744       {       0.,-0.046875, 0.140625,       0., 0.015625,-0.046875,       0.,  0.28125,       0.,       0., -0.09375,  0.28125,       0., -0.09375,       0.,       0.,   0.5625,       0.}, // 16
00745       {-0.046875,       0., 0.140625, 0.015625,       0.,-0.046875,       0.,       0.,  0.28125, -0.09375,       0.,  0.28125,       0.,       0., -0.09375,       0.,       0.,   0.5625}  // 17
00746     },
00747 
00748     // embedding matrix for child 3
00749     {
00750       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00751       {       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 0
00752       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 1
00753       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 2
00754       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 3
00755       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 4
00756       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 5
00757       {   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 6
00758       {   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 7
00759       {       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 8
00760       {       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.,       0.}, // 9
00761       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75,       0.}, // 10
00762       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,     0.75}, // 11
00763       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25}, // 12
00764       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5}, // 13
00765       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5}, // 14
00766       {-0.046875,       0.,-0.046875, 0.015625,       0., 0.015625,   0.1875,   0.1875,  0.09375, -0.09375,       0., -0.09375,  -0.0625,  -0.0625, -0.03125,    0.375,    0.375,   0.1875}, // 15
00767       {-0.046875,-0.046875,       0., 0.015625, 0.015625,       0.,  0.09375,   0.1875,   0.1875, -0.09375, -0.09375,       0., -0.03125,  -0.0625,  -0.0625,   0.1875,    0.375,    0.375}, // 16
00768       {       0.,-0.046875,-0.046875,       0., 0.015625, 0.015625,   0.1875,  0.09375,   0.1875,       0., -0.09375, -0.09375,  -0.0625, -0.03125,  -0.0625,    0.375,   0.1875,    0.375}  // 17
00769     },
00770 
00771     // embedding matrix for child 4
00772     {
00773       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00774       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 0
00775       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 1
00776       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 2
00777       {       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 3
00778       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.}, // 4
00779       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.}, // 5
00780       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.,       0.}, // 6
00781       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5}, // 7
00782       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,     0.75}, // 8
00783       {   -0.125,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 9
00784       {       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.,       0.}, // 10
00785       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75}, // 11
00786       {       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.}, // 12
00787       {       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,      0.5,     0.25,      0.5,       0.,       0.,       0.}, // 13
00788       {       0.,       0.,       0.,    0.375,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.}, // 14
00789       {-0.046875, 0.015625,       0., 0.140625,-0.046875,       0., -0.09375,       0.,       0.,  0.28125, -0.09375,       0.,  0.28125,       0.,       0.,   0.5625,       0.,       0.}, // 15
00790       {       0., 0.015625, 0.015625,       0.,-0.046875,-0.046875,  -0.0625, -0.03125,  -0.0625,       0., -0.09375, -0.09375,   0.1875,  0.09375,   0.1875,    0.375,   0.1875,    0.375}, // 16
00791       {-0.046875,       0., 0.015625, 0.140625,       0.,-0.046875,       0.,       0., -0.09375,  0.28125,       0., -0.09375,       0.,       0.,  0.28125,       0.,       0.,   0.5625}  // 17
00792     },
00793 
00794     // embedding matrix for child 5
00795     {
00796       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00797       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 0
00798       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 1
00799       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 2
00800       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.}, // 3
00801       {       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 4
00802       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.}, // 5
00803       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.,       0.}, // 6
00804       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,     0.75,       0.}, // 7
00805       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25}, // 8
00806       {       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.,       0.}, // 9
00807       {       0.,   -0.125,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 10
00808       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.}, // 11
00809       {       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.}, // 12
00810       {       0.,       0.,       0.,       0.,    0.375,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.}, // 13
00811       {       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,      0.5,      0.5,     0.25,       0.,       0.,       0.}, // 14
00812       { 0.015625,-0.046875,       0.,-0.046875, 0.140625,       0., -0.09375,       0.,       0., -0.09375,  0.28125,       0.,  0.28125,       0.,       0.,   0.5625,       0.,       0.}, // 15
00813       {       0.,-0.046875, 0.015625,       0., 0.140625,-0.046875,       0., -0.09375,       0.,       0.,  0.28125, -0.09375,       0.,  0.28125,       0.,       0.,   0.5625,       0.}, // 16
00814       { 0.015625,       0., 0.015625,-0.046875,       0.,-0.046875,  -0.0625,  -0.0625, -0.03125, -0.09375,       0., -0.09375,   0.1875,   0.1875,  0.09375,    0.375,    0.375,   0.1875}  // 17
00815     },
00816 
00817     // embedding matrix for child 6
00818     {
00819       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00820       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 0
00821       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 1
00822       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.}, // 2
00823       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.}, // 3
00824       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.}, // 4
00825       {       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.}, // 5
00826       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5}, // 6
00827       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,     0.75,       0.}, // 7
00828       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75}, // 8
00829       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75}, // 9
00830       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.}, // 10
00831       {       0.,       0.,   -0.125,       0.,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.,       0.,       0.}, // 11
00832       {       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5,       0.,       0.,       0.}, // 12
00833       {       0.,       0.,       0.,       0.,   -0.125,    0.375,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.,       0.}, // 13
00834       {       0.,       0.,       0.,   -0.125,       0.,    0.375,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.75,       0.,       0.,       0.}, // 14
00835       { 0.015625, 0.015625,       0.,-0.046875,-0.046875,       0., -0.03125,  -0.0625,  -0.0625, -0.09375, -0.09375,       0.,  0.09375,   0.1875,   0.1875,   0.1875,    0.375,    0.375}, // 15
00836       {       0., 0.015625,-0.046875,       0.,-0.046875, 0.140625,       0., -0.09375,       0.,       0., -0.09375,  0.28125,       0.,  0.28125,       0.,       0.,   0.5625,       0.}, // 16
00837       { 0.015625,       0.,-0.046875,-0.046875,       0., 0.140625,       0.,       0., -0.09375, -0.09375,       0.,  0.28125,       0.,       0.,  0.28125,       0.,       0.,   0.5625}  // 17
00838     },
00839 
00840     // embedding matrix for child 7
00841     {
00842       //       0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15        16        17
00843       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.}, // 0
00844       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.}, // 1
00845       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.}, // 2
00846       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.,       0.}, // 3
00847       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.,       0.}, // 4
00848       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       1.,       0.,       0.,       0.}, // 5
00849       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,      0.5,      0.5,     0.25}, // 6
00850       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5}, // 7
00851       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,      0.5,     0.25,      0.5}, // 8
00852       {       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.,       0.}, // 9
00853       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75,       0.}, // 10
00854       {       0.,       0.,       0.,       0.,       0.,       0.,       0.,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,    0.375,       0.,       0.,     0.75}, // 11
00855       {       0.,       0.,       0.,   -0.125,       0.,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,      0.5,      0.5,     0.25,       0.,       0.,       0.}, // 12
00856       {       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,       0.,     0.25,      0.5,      0.5,       0.,       0.,       0.}, // 13
00857       {       0.,       0.,       0.,       0.,   -0.125,   -0.125,       0.,       0.,       0.,       0.,       0.,       0.,      0.5,     0.25,      0.5,       0.,       0.,       0.}, // 14
00858       { 0.015625,       0., 0.015625,-0.046875,       0.,-0.046875,  -0.0625,  -0.0625, -0.03125, -0.09375,       0., -0.09375,   0.1875,   0.1875,  0.09375,    0.375,    0.375,   0.1875}, // 15
00859       { 0.015625, 0.015625,       0.,-0.046875,-0.046875,       0., -0.03125,  -0.0625,  -0.0625, -0.09375, -0.09375,       0.,  0.09375,   0.1875,   0.1875,   0.1875,    0.375,    0.375}, // 16
00860       {       0., 0.015625, 0.015625,       0.,-0.046875,-0.046875,  -0.0625, -0.03125,  -0.0625,       0., -0.09375, -0.09375,   0.1875,  0.09375,   0.1875,    0.375,   0.1875,    0.375}  // 17
00861     }
00862   };
00863 
00864 #endif
00865 
00866 } // namespace libMesh