$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 00019 00020 // Local includes 00021 #include "libmesh/quadrature_gauss_lobatto.h" 00022 00023 namespace libMesh 00024 { 00025 00026 void QGaussLobatto::init_3D(const ElemType type_in, 00027 unsigned int p) 00028 { 00029 switch (type_in) 00030 { 00031 case HEX8: 00032 case HEX20: 00033 case HEX27: 00034 { 00035 // We compute the 3D quadrature rule as a tensor 00036 // product of the 1D quadrature rule. 00037 QGaussLobatto q1D(1, _order); 00038 q1D.init(EDGE2, p); 00039 tensor_product_hex(q1D); 00040 return; 00041 } 00042 00043 // We *could* fall back to a Gauss type rule for other types 00044 // elements, but the assumption here is that the user has asked 00045 // for a Gauss-Lobatto rule, i.e. a rule with integration points 00046 // on the element boundary, for a reason. 00047 default: 00048 libmesh_error_msg("ERROR: Unsupported type: " << type_in); 00049 } 00050 } 00051 00052 } // namespace libMesh