LCOV - code coverage report
Current view: top level - src/quadrature - quadrature_clough_2D.C (source / functions) Hit Total Coverage
Test: libMesh/libmesh: #4229 (6a9aeb) with base 727f46 Lines: 27 29 93.1 %
Date: 2025-08-19 19:27:09 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // The libMesh Finite Element Library.
       2             : // Copyright (C) 2002-2025 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
       3             : 
       4             : // This library is free software; you can redistribute it and/or
       5             : // modify it under the terms of the GNU Lesser General Public
       6             : // License as published by the Free Software Foundation; either
       7             : // version 2.1 of the License, or (at your option) any later version.
       8             : 
       9             : // This library is distributed in the hope that it will be useful,
      10             : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12             : // Lesser General Public License for more details.
      13             : 
      14             : // You should have received a copy of the GNU Lesser General Public
      15             : // License along with this library; if not, write to the Free Software
      16             : // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
      17             : 
      18             : 
      19             : 
      20             : // Local includes
      21             : #include "libmesh/quadrature_clough.h"
      22             : #include "libmesh/quadrature_gauss.h"
      23             : #include "libmesh/enum_to_string.h"
      24             : 
      25             : namespace libMesh
      26             : {
      27             : 
      28             : 
      29        6836 : void QClough::init_2D()
      30             : {
      31             : #if LIBMESH_DIM > 1
      32        7038 :   QGauss gauss_rule(2, _order);
      33        6836 :   gauss_rule.init(TRI6, _p_level, /*simple_type_only=*/true);
      34             : 
      35             :   //-----------------------------------------------------------------------
      36             :   // 2D quadrature rules
      37        6836 :   switch (_type)
      38             :     {
      39             : 
      40             :       //---------------------------------------------
      41             :       // Triangle quadrature rules
      42         202 :     case TRI3:
      43             :     case TRI6:
      44             :     case TRI7:
      45             :       {
      46         202 :         std::vector<Point> & gausspoints = gauss_rule.get_points();
      47         202 :         std::vector<Real> & gaussweights = gauss_rule.get_weights();
      48         404 :         std::size_t numgausspts = gausspoints.size();
      49        6836 :         _points.resize(numgausspts*3);
      50        6836 :         _weights.resize(numgausspts*3);
      51       94851 :         for (std::size_t i = 0; i != numgausspts; ++i)
      52             :           {
      53       90617 :             _points[3*i](0) = gausspoints[i](0) +
      54       88015 :               gausspoints[i](1) / 3.;
      55       88015 :             _points[3*i](1) = gausspoints[i](1) / 3.;
      56       88015 :             _points[3*i+1](0) = gausspoints[i](1) / 3.;
      57       93219 :             _points[3*i+1](1) = gausspoints[i](0) +
      58       88015 :               gausspoints[i](1) / 3.;
      59       93219 :             _points[3*i+2](0) = 1./3. +
      60       90617 :               gausspoints[i](0) * 2./3. -
      61       88015 :               gausspoints[i](1) / 3.;
      62       90617 :             _points[3*i+2](1) = 1./3. -
      63       90617 :               gausspoints[i](0) / 3. +
      64       88015 :               gausspoints[i](1) * 2./3.;
      65       93219 :             _weights[3*i] = gaussweights[i] / 3.;
      66       88015 :             _weights[3*i+1] = _weights[3*i];
      67       90617 :             _weights[3*i+2] = _weights[3*i];
      68             :           }
      69        7038 :         return;
      70             :       }
      71             : 
      72             : 
      73             :       //---------------------------------------------
      74             :       // Unsupported type
      75           0 :     default:
      76           0 :       libmesh_error_msg("Element type not supported: " << Utility::enum_to_string(_type));
      77             :     }
      78             : #endif
      79             : }
      80             : 
      81             : } // namespace libMesh

Generated by: LCOV version 1.14