Quinoa all test code coverage report
Current view: top level - Inciter - FaceData.cpp (source / functions) Hit Total Coverage
Commit: -128-NOTFOUND Lines: 36 36 100.0 %
Date: 2025-12-08 20:34:58 Functions: 2 2 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 16 52 30.8 %

           Branch data     Line data    Source code
       1                 :            : // *****************************************************************************
       2                 :            : /*!
       3                 :            :   \file      src/Inciter/FaceData.cpp
       4                 :            :   \copyright 2012-2015 J. Bakosi,
       5                 :            :              2016-2018 Los Alamos National Security, LLC.,
       6                 :            :              2019-2021 Triad National Security, LLC.
       7                 :            :              All rights reserved. See the LICENSE file for details.
       8                 :            :   \details   Face-data used only in discontinuous Galerkin discretization scheme
       9                 :            :   \see       FaceData.h for more info.
      10                 :            : */
      11                 :            : // *****************************************************************************
      12                 :            : 
      13                 :            : #include "Reorder.hpp"
      14                 :            : #include "DerivedData.hpp"
      15                 :            : #include "FaceData.hpp"
      16                 :            : 
      17                 :            : using inciter::FaceData;
      18                 :            : 
      19                 :        964 : FaceData::FaceData(
      20                 :            :   const std::vector< std::size_t >& inpoel,
      21                 :            :   const std::map< int, std::vector< std::size_t > >& bface,
      22                 :        964 :   const std::vector< std::size_t >& triinpoel )
      23         [ +  - ]:        964 :   : m_bface( bface ), m_triinpoel( triinpoel )
      24                 :            : // *****************************************************************************
      25                 :            : //  Constructor: compute (element-face) data for internal and domain-boundary
      26                 :            : //  faces
      27                 :            : //! \param[in] inpoel Mesh connectivity with local IDs
      28                 :            : //! \param[in] bface Boundary-faces mapped to side set ids
      29                 :            : //! \param[in] triinpoel Boundary-face connectivity with local IDs
      30                 :            : // *****************************************************************************
      31                 :            : {
      32         [ +  - ]:       1928 :   auto esup = tk::genEsup( inpoel, 4 );
      33         [ +  - ]:        964 :   m_esuel = tk::genEsuelTet( inpoel, esup );
      34                 :        964 :   auto nbfac = tk::sumvalsize( m_bface );
      35         [ +  - ]:        964 :   m_nipfac = tk::genNipfac( 4, nbfac, m_esuel );
      36         [ +  - ]:        964 :   m_inpofa = tk::genInpofaTet( m_nipfac, nbfac, inpoel, m_triinpoel, m_esuel );
      37         [ +  - ]:        964 :   m_belem =  tk::genBelemTet( nbfac, m_inpofa, esup );
      38         [ +  - ]:        964 :   m_esuf = tk::genEsuf( 4, m_nipfac, nbfac, m_belem, m_esuel );
      39 [ -  + ][ -  - ]:        964 :   Assert( m_belem.size() == nbfac,
         [ -  - ][ -  - ]
      40                 :            :          "Number of boundary-elements and number of boundary-faces unequal" );
      41                 :        964 : }
      42                 :            : 
      43                 :            : void
      44                 :        964 : FaceData::genLocalFaceId( const std::vector< std::size_t >& inpoel )
      45                 :            : // *****************************************************************************
      46                 :            : //  Generate local face IDs for all faces (2 per face since face has 2 esuf)
      47                 :            : // *****************************************************************************
      48                 :            : {
      49                 :        964 :   m_faceLocalId.resize(m_esuf.size());
      50                 :            : 
      51         [ +  + ]:     428241 :   for (std::size_t f=0; f<m_esuf.size()/2; ++f) {
      52                 :            :     std::array< std::size_t, 3 > inpofa_f{{
      53                 :     427277 :       m_inpofa[3*f],
      54                 :     427277 :       m_inpofa[3*f+1],
      55                 :     427277 :       m_inpofa[3*f+2] }};
      56                 :            : 
      57                 :            :     // left element is always interior
      58 [ -  + ][ -  - ]:     427277 :     Assert( m_esuf[2*f] > -1, "Interior element detected as -1" );
         [ -  - ][ -  - ]
      59                 :     427277 :     std::size_t el = static_cast< std::size_t >(m_esuf[2*f]);
      60                 :            :     std::array< std::size_t, 4 > inpoel_l{{
      61                 :     427277 :       inpoel[4*el],
      62                 :     427277 :       inpoel[4*el+1],
      63                 :     427277 :       inpoel[4*el+2],
      64                 :     427277 :       inpoel[4*el+3] }};
      65                 :     427277 :     m_faceLocalId[2*f] = tk::opposite_vertex_of_tet(inpoel_l, inpofa_f);
      66                 :            : 
      67 [ +  - ][ +  + ]:     427277 :     if (f >= Nbfac()) {
      68                 :            :       // internal face
      69 [ -  + ][ -  - ]:     336809 :       Assert( m_esuf[2*f+1] > -1, "Interior element detected as -1" );
         [ -  - ][ -  - ]
      70                 :     336809 :       std::size_t er = static_cast< std::size_t >(m_esuf[2*f+1]);
      71                 :            :       std::array< std::size_t, 4 > inpoel_r{{
      72                 :     336809 :         inpoel[4*er],
      73                 :     336809 :         inpoel[4*er+1],
      74                 :     336809 :         inpoel[4*er+2],
      75                 :     336809 :         inpoel[4*er+3] }};
      76                 :     336809 :       m_faceLocalId[2*f+1] = tk::opposite_vertex_of_tet(inpoel_r, inpofa_f);
      77                 :            :     }
      78                 :            :     else {
      79                 :            :       // boundary face
      80 [ -  + ][ -  - ]:      90468 :       Assert( m_esuf[2*f+1] == -1, "Outside boundary element not -1" );
         [ -  - ][ -  - ]
      81                 :      90468 :       m_faceLocalId[2*f+1] = -1;  // no element to the right-side of boundary
      82                 :            :     }
      83                 :            :   }
      84                 :        964 : }

Generated by: LCOV version 1.14