$extrastylesheet
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