$extrastylesheet
cell_inf_hex16.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 // Local includes
00019 #include "libmesh/libmesh_config.h"
00020 
00021 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
00022 
00023 // C++ includes
00024 
00025 // Local includes cont'd
00026 #include "libmesh/cell_inf_hex16.h"
00027 #include "libmesh/edge_edge3.h"
00028 #include "libmesh/edge_inf_edge2.h"
00029 #include "libmesh/face_quad8.h"
00030 #include "libmesh/face_inf_quad6.h"
00031 #include "libmesh/side.h"
00032 
00033 namespace libMesh
00034 {
00035 
00036 
00037 // ------------------------------------------------------------
00038 // InfHex16 class static member initializations
00039 const unsigned int InfHex16::side_nodes_map[5][8] =
00040   {
00041     { 0, 1, 2, 3, 8, 9, 10, 11},   // Side 0
00042     { 0, 1, 4, 5, 8, 12, 99, 99},  // Side 1
00043     { 1, 2, 5, 6, 9, 13, 99, 99},  // Side 2
00044     { 2, 3, 6, 7, 10, 14, 99, 99}, // Side 3
00045     { 3, 0, 7, 4, 11, 15, 99, 99}  // Side 4
00046   };
00047 
00048 const unsigned int InfHex16::edge_nodes_map[8][3] =
00049   {
00050     { 0, 1, 8},  // Side 0
00051     { 1, 2, 9},  // Side 1
00052     { 2, 3, 10}, // Side 2
00053     { 0, 3, 11}, // Side 3
00054     { 0, 4, 99}, // Side 4
00055     { 1, 5, 99}, // Side 5
00056     { 2, 6, 99}, // Side 6
00057     { 3, 7, 99}  // Side 7
00058   };
00059 
00060 
00061 // ------------------------------------------------------------
00062 // InfHex16 class member functions
00063 
00064 bool InfHex16::is_vertex(const unsigned int i) const
00065 {
00066   if (i < 4)
00067     return true;
00068   return false;
00069 }
00070 
00071 bool InfHex16::is_edge(const unsigned int i) const
00072 {
00073   if (i < 4)
00074     return false;
00075   if (i > 11)
00076     return false;
00077   return true;
00078 }
00079 
00080 bool InfHex16::is_face(const unsigned int i) const
00081 {
00082   if (i > 11)
00083     return true;
00084   return false;
00085 }
00086 
00087 bool InfHex16::is_node_on_side(const unsigned int n,
00088                                const unsigned int s) const
00089 {
00090   libmesh_assert_less (s, n_sides());
00091   for (unsigned int i = 0; i != 8; ++i)
00092     if (side_nodes_map[s][i] == n)
00093       return true;
00094   return false;
00095 }
00096 
00097 bool InfHex16::is_node_on_edge(const unsigned int n,
00098                                const unsigned int e) const
00099 {
00100   libmesh_assert_less (e, n_edges());
00101   for (unsigned int i = 0; i != 3; ++i)
00102     if (edge_nodes_map[e][i] == n)
00103       return true;
00104   return false;
00105 }
00106 
00107 UniquePtr<Elem> InfHex16::build_side (const unsigned int i,
00108                                       bool proxy) const
00109 {
00110   libmesh_assert_less (i, this->n_sides());
00111 
00112   if (proxy)
00113     {
00114       switch (i)
00115         {
00116           // base
00117         case 0:
00118           return UniquePtr<Elem>(new Side<Quad8,InfHex16>(this,i));
00119 
00120           // ifem sides
00121         case 1:
00122         case 2:
00123         case 3:
00124         case 4:
00125           return UniquePtr<Elem>(new Side<InfQuad6,InfHex16>(this,i));
00126 
00127         default:
00128           libmesh_error_msg("Invalid side i = " << i);
00129         }
00130     }
00131 
00132   else
00133     {
00134       // Create NULL pointer to be initialized, returned later.
00135       Elem* face = NULL;
00136 
00137       // Think of a unit cube: (-1,1) x (-1,1) x (1,1)
00138       switch (i)
00139         {
00140         case 0: // the base face
00141           {
00142             face = new Quad8;
00143 
00144             // Only here, the face element's normal points inward
00145             face->set_node(0) = this->get_node(0);
00146             face->set_node(1) = this->get_node(1);
00147             face->set_node(2) = this->get_node(2);
00148             face->set_node(3) = this->get_node(3);
00149             face->set_node(4) = this->get_node(8);
00150             face->set_node(5) = this->get_node(9);
00151             face->set_node(6) = this->get_node(10);
00152             face->set_node(7) = this->get_node(11);
00153 
00154             break;
00155           }
00156 
00157         case 1:  // connecting to another infinite element
00158           {
00159             face = new InfQuad6;
00160 
00161             face->set_node(0) = this->get_node(0);
00162             face->set_node(1) = this->get_node(1);
00163             face->set_node(2) = this->get_node(4);
00164             face->set_node(3) = this->get_node(5);
00165             face->set_node(4) = this->get_node(8);
00166             face->set_node(5) = this->get_node(12);
00167 
00168             break;
00169           }
00170 
00171         case 2:  // connecting to another infinite element
00172           {
00173             face = new InfQuad6;
00174 
00175             face->set_node(0) = this->get_node(1);
00176             face->set_node(1) = this->get_node(2);
00177             face->set_node(2) = this->get_node(5);
00178             face->set_node(3) = this->get_node(6);
00179             face->set_node(4) = this->get_node(9);
00180             face->set_node(5) = this->get_node(13);
00181 
00182             break;
00183           }
00184 
00185         case 3:  // connecting to another infinite element
00186           {
00187             face = new InfQuad6;
00188 
00189             face->set_node(0) = this->get_node(2);
00190             face->set_node(1) = this->get_node(3);
00191             face->set_node(2) = this->get_node(6);
00192             face->set_node(3) = this->get_node(7);
00193             face->set_node(4) = this->get_node(10);
00194             face->set_node(5) = this->get_node(14);
00195 
00196             break;
00197           }
00198 
00199         case 4:  // connecting to another infinite element
00200           {
00201             face = new InfQuad6;
00202 
00203             face->set_node(0) = this->get_node(3);
00204             face->set_node(1) = this->get_node(0);
00205             face->set_node(2) = this->get_node(7);
00206             face->set_node(3) = this->get_node(4);
00207             face->set_node(4) = this->get_node(11);
00208             face->set_node(5) = this->get_node(15);
00209 
00210             break;
00211           }
00212 
00213         default:
00214           libmesh_error_msg("Invalid side i = " << i);
00215         }
00216 
00217       face->subdomain_id() = this->subdomain_id();
00218       return UniquePtr<Elem>(face);
00219     }
00220 
00221   libmesh_error_msg("We'll never get here!");
00222   return UniquePtr<Elem>();
00223 }
00224 
00225 UniquePtr<Elem> InfHex16::build_edge (const unsigned int i) const
00226 {
00227   libmesh_assert_less (i, this->n_edges());
00228 
00229   if (i < 4) // base edges
00230     return UniquePtr<Elem>(new SideEdge<Edge3,InfHex16>(this,i));
00231   // infinite edges
00232   return UniquePtr<Elem>(new SideEdge<InfEdge2,InfHex16>(this,i));
00233 }
00234 
00235 
00236 void InfHex16::connectivity(const unsigned int sc,
00237                             const IOPackage iop,
00238                             std::vector<dof_id_type>& conn) const
00239 {
00240   libmesh_assert(_nodes);
00241   libmesh_assert_less (sc, this->n_sub_elem());
00242   libmesh_assert_not_equal_to (iop, INVALID_IO_PACKAGE);
00243 
00244   switch (iop)
00245     {
00246     case TECPLOT:
00247       {
00248         switch (sc)
00249           {
00250           case 0:
00251 
00252             conn[0] = this->node(0)+1;
00253             conn[1] = this->node(1)+1;
00254             conn[2] = this->node(2)+1;
00255             conn[3] = this->node(3)+1;
00256             conn[4] = this->node(4)+1;
00257             conn[5] = this->node(5)+1;
00258             conn[6] = this->node(6)+1;
00259             conn[7] = this->node(7)+1;
00260             return;
00261 
00262           default:
00263             libmesh_error_msg("Invalid sc = " << sc);
00264           }
00265       }
00266 
00267     default:
00268       libmesh_error_msg("Unsupported IO package " << iop);
00269     }
00270 }
00271 
00272 
00273 
00274 
00275 unsigned short int InfHex16::second_order_adjacent_vertex (const unsigned int n,
00276                                                            const unsigned int v) const
00277 {
00278   libmesh_assert_greater_equal (n, this->n_vertices());
00279   libmesh_assert_less (n, this->n_nodes());
00280   libmesh_assert_less (v, 2);
00281   // note that the _second_order_adjacent_vertices matrix is
00282   // stored in \p InfHex
00283   return _second_order_adjacent_vertices[n-this->n_vertices()][v];
00284 }
00285 
00286 
00287 
00288 std::pair<unsigned short int, unsigned short int>
00289 InfHex16::second_order_child_vertex (const unsigned int n) const
00290 {
00291   libmesh_assert_greater_equal (n, this->n_vertices());
00292   libmesh_assert_less (n, this->n_nodes());
00293   /*
00294    * the _second_order_vertex_child_* vectors are
00295    * stored in cell_inf_hex.C, since they are identical
00296    * for InfHex16 and InfHex18
00297    */
00298   return std::pair<unsigned short int, unsigned short int>
00299     (_second_order_vertex_child_number[n],
00300      _second_order_vertex_child_index[n]);
00301 }
00302 
00303 
00304 
00305 
00306 
00307 #ifdef LIBMESH_ENABLE_AMR
00308 
00309 const float InfHex16::_embedding_matrix[4][16][16] =
00310   {
00311     // embedding matrix for child 0
00312     {
00313       //          0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15 th parent Node
00314       {         1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 0th child N.
00315       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 1
00316       {       -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5,        0.0,        0.0,        0.0,        0.0}, // 2
00317       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0}, // 3
00318       {         0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 4
00319       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0}, // 5
00320       {         0.0,        0.0,        0.0,        0.0,      -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5}, // 6
00321       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0}, // 7
00322       {       0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 8
00323       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.75,      0.375,       0.25,      0.375,        0.0,        0.0,        0.0,        0.0}, // 9
00324       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.25,      0.375,       0.75,        0.0,        0.0,        0.0,        0.0}, // 10
00325       {       0.375,        0.0,        0.0,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0}, // 11
00326       {         0.0,        0.0,        0.0,        0.0,      0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0}, // 12
00327       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.75,      0.375,       0.25,      0.375}, // 13
00328       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.25,      0.375,       0.75}, // 14
00329       {         0.0,        0.0,        0.0,        0.0,      0.375,        0.0,        0.0,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75}  // 15
00330     },
00331 
00332     // embedding matrix for child 1
00333     {
00334       //          0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15 th parent Node
00335       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 0th child N.
00336       {         0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 1
00337       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 2
00338       {       -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5,        0.0,        0.0,        0.0,        0.0}, // 3
00339       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0}, // 4
00340       {         0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 5
00341       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0}, // 6
00342       {         0.0,        0.0,        0.0,        0.0,      -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5}, // 7
00343       {      -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 8
00344       {         0.0,      0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 9
00345       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.75,      0.375,       0.25,        0.0,        0.0,        0.0,        0.0}, // 10
00346       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.75,      0.375,       0.25,      0.375,        0.0,        0.0,        0.0,        0.0}, // 11
00347       {         0.0,        0.0,        0.0,        0.0,     -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0}, // 12
00348       {         0.0,        0.0,        0.0,        0.0,        0.0,      0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0}, // 13
00349       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.75,      0.375,       0.25}, // 14
00350       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.75,      0.375,       0.25,      0.375}  // 15
00351     },
00352 
00353     // embedding matrix for child 2
00354     {
00355       //          0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15 th parent Node
00356       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0}, // 0th child N.
00357       {       -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5,        0.0,        0.0,        0.0,        0.0}, // 1
00358       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 2
00359       {         0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 3
00360       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0}, // 4
00361       {         0.0,        0.0,        0.0,        0.0,      -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5}, // 5
00362       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0}, // 6
00363       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 7
00364       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.25,      0.375,       0.75,        0.0,        0.0,        0.0,        0.0}, // 8
00365       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.25,      0.375,       0.75,      0.375,        0.0,        0.0,        0.0,        0.0}, // 9
00366       {         0.0,        0.0,     -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0}, // 10
00367       {      -0.125,        0.0,        0.0,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0}, // 11
00368       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.25,      0.375,       0.75}, // 12
00369       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.25,      0.375,       0.75,      0.375}, // 13
00370       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,     -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0}, // 14
00371       {         0.0,        0.0,        0.0,        0.0,     -0.125,        0.0,        0.0,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75}  // 15
00372     },
00373 
00374     // embedding matrix for child 3
00375     {
00376       //          0           1           2           3           4           5           6           7           8           9          10          11          12          13          14          15 th parent Node
00377       {       -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5,        0.0,        0.0,        0.0,        0.0}, // 0th child N.
00378       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 1
00379       {         0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 2
00380       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 3
00381       {         0.0,        0.0,        0.0,        0.0,      -0.25,      -0.25,      -0.25,      -0.25,        0.0,        0.0,        0.0,        0.0,        0.5,        0.5,        0.5,        0.5}, // 4
00382       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0}, // 5
00383       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 6
00384       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,        1.0,        0.0}, // 7
00385       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.75,      0.375,       0.25,        0.0,        0.0,        0.0,        0.0}, // 8
00386       {         0.0,     -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0}, // 9
00387       {         0.0,        0.0,      0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0,        0.0,        0.0,        0.0}, // 10
00388       {     -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.25,      0.375,       0.75,      0.375,        0.0,        0.0,        0.0,        0.0}, // 11
00389       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,      0.375,       0.75,      0.375,       0.25}, // 12
00390       {         0.0,        0.0,        0.0,        0.0,        0.0,     -0.125,      0.375,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0,        0.0}, // 13
00391       {         0.0,        0.0,        0.0,        0.0,        0.0,        0.0,      0.375,     -0.125,        0.0,        0.0,        0.0,        0.0,        0.0,        0.0,       0.75,        0.0}, // 14
00392       {         0.0,        0.0,        0.0,        0.0,    -0.1875,    -0.1875,    -0.1875,    -0.1875,        0.0,        0.0,        0.0,        0.0,       0.25,      0.375,       0.75,      0.375}  // 15
00393     }
00394   };
00395 
00396 
00397 
00398 #endif
00399 
00400 } // namespace libMesh
00401 
00402 #endif  // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS