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