$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_gm.h" 00022 00023 namespace libMesh 00024 { 00025 00026 00027 00028 void QGrundmann_Moller::init_2D(const ElemType type_in, 00029 unsigned int p) 00030 { 00031 // Nearly all GM rules contain negative weights, so if you are not 00032 // allowing rules with negative weights, we cannot continue! 00033 if (!allow_rules_with_negative_weights) 00034 libmesh_error_msg("You requested a Grundmann-Moller rule but\n" \ 00035 << "are not allowing rules with negative weights!\n" \ 00036 << "Either select a different quadrature class or\n" \ 00037 << "set allow_rules_with_negative_weights==true."); 00038 00039 switch (type_in) 00040 { 00041 case TRI3: 00042 case TRI6: 00043 { 00044 switch(_order + 2*p) 00045 { 00046 00047 default: 00048 { 00049 // Untested above _order=23 but should work... 00050 gm_rule((_order + 2*p)/2, /*dim=*/2); 00051 return; 00052 } 00053 } // end switch (order) 00054 } // end case TRI3, TRI6 00055 00056 default: 00057 libmesh_error_msg("ERROR: Unsupported element type: " << type_in); 00058 } // end switch (type_in) 00059 } 00060 00061 } // namespace libMesh