Quinoa all test code coverage report
Current view: top level - IO - UGRIDMeshReader.cpp (source / functions) Hit Total Coverage
Commit: -128-NOTFOUND Lines: 40 40 100.0 %
Date: 2024-04-29 14:42:33 Functions: 4 4 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 16 24 66.7 %

           Branch data     Line data    Source code
       1                 :            : // *****************************************************************************
       2                 :            : /*!
       3                 :            :   \file      src/IO/UGRIDMeshReader.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                 :            :   \brief     UGRID mesh reader class declaration
       9                 :            :   \details   UGRID mesh reader class declaration. Mesh reader facilitating
      10                 :            :              reading a mesh from a simple text file used by NASA.
      11                 :            :   \see       http://www.simcenter.msstate.edu/software/downloads/doc/ug_io/3d_grid_file_type_ugrid.html, http://www.simcenter.msstate.edu/software/downloads/doc/aflr3/aflr3_io_summary.html
      12                 :            : */
      13                 :            : // *****************************************************************************
      14                 :            : 
      15                 :            : #include <array>
      16                 :            : #include <istream>
      17                 :            : #include <string>
      18                 :            : #include <vector>
      19                 :            : #include <cstddef>
      20                 :            : 
      21                 :            : #include "Types.hpp"
      22                 :            : #include "Exception.hpp"
      23                 :            : #include "UnsMesh.hpp"
      24                 :            : #include "Reorder.hpp"
      25                 :            : #include "UGRIDMeshReader.hpp"
      26                 :            : 
      27                 :            : using tk::UGRIDMeshReader;
      28                 :            : 
      29                 :            : void
      30         [ +  - ]:          1 : UGRIDMeshReader::readHeader()
      31                 :            : // *****************************************************************************
      32                 :            : //  Read UGRID mesh header
      33                 :            : // *****************************************************************************
      34                 :            : {
      35                 :            :   std::string s;
      36                 :            : 
      37                 :            :   // Number_of_Nodes
      38         [ +  - ]:          1 :   m_inFile >> m_nnode;
      39                 :            : 
      40                 :            :   // Number_of_Surf_Trias
      41         [ +  - ]:          1 :   m_inFile >> m_ntri;
      42                 :            : 
      43                 :            :   // Number_of_Surf_Quads
      44                 :            :   int nquad;
      45         [ +  - ]:          1 :   m_inFile >> nquad;
      46                 :            : 
      47                 :            :   // Number_of_Vol_Tets
      48         [ +  - ]:          1 :   m_inFile >> m_ntet;
      49                 :            : 
      50                 :            :   // Number_of_Vol_Pents_5
      51                 :            :   int pent5;
      52         [ +  - ]:          1 :   m_inFile >> pent5;
      53                 :            : 
      54                 :            :   // Number_of_Vol_Pents_6
      55                 :            :   int pent6;
      56         [ +  - ]:          1 :   m_inFile >> pent6;
      57                 :            : 
      58                 :            :   // Number_of_Vol_Hexs
      59                 :            :   int nhex;
      60         [ +  - ]:          1 :   m_inFile >> nhex;
      61                 :          1 : }
      62                 :            : 
      63                 :            : void
      64                 :          1 : UGRIDMeshReader::readMesh( UnsMesh& mesh )
      65                 :            : // *****************************************************************************
      66                 :            : //  Read UGRID mesh
      67                 :            : //! \param[in] mesh Unstructured mesh object
      68                 :            : // *****************************************************************************
      69                 :            : {
      70                 :            :   // Read header
      71                 :          1 :   readHeader();
      72                 :            :   // Read nodes
      73                 :          1 :   readNodes( mesh );
      74                 :            :   // Read elements
      75                 :          1 :   readElements( mesh );
      76                 :          1 : }
      77                 :            : 
      78                 :            : void
      79                 :          1 : UGRIDMeshReader::readNodes( UnsMesh& mesh )
      80                 :            : // *****************************************************************************
      81                 :            : //  Read nodes
      82                 :            : //! \param[in] mesh Unstructured mesh object
      83                 :            : // *****************************************************************************
      84                 :            : {
      85                 :            :   // Read in node coordinates: x-coord y-coord z-coord
      86         [ +  + ]:       8067 :   for (std::size_t i=0; i<m_nnode; ++i) {
      87                 :            :     tk::real x, y, z;
      88                 :       8066 :     m_inFile >> x >> y >> z;
      89                 :       8066 :     mesh.x().push_back( x );
      90                 :       8066 :     mesh.y().push_back( y );
      91                 :       8066 :     mesh.z().push_back( z );
      92                 :            :   }
      93                 :          1 : }
      94                 :            : 
      95                 :            : void
      96                 :          1 : UGRIDMeshReader::readElements( UnsMesh& mesh )
      97                 :            : // *****************************************************************************
      98                 :            : //  Read element connectivity
      99                 :            : //! \param[in] mesh Unstructured mesh object
     100                 :            : // *****************************************************************************
     101                 :            : {
     102                 :            :   // Read in triangle element connectivity
     103         [ +  + ]:        865 :   for (std::size_t i=0; i<m_ntri; ++i) {
     104                 :            :     std::array< std::size_t, 3 > n;
     105                 :        864 :     m_inFile >> n[0] >> n[1] >> n[2];
     106                 :        864 :     mesh.triinpoel().push_back( n[0] );
     107                 :        864 :     mesh.triinpoel().push_back( n[1] );
     108                 :        864 :     mesh.triinpoel().push_back( n[2] );
     109                 :            :   }
     110                 :            : 
     111                 :            :   // Read side sets of triangle elements
     112         [ +  + ]:        865 :   for (std::size_t i=0; i<m_ntri; ++i) {
     113                 :            :     int setid;
     114                 :        864 :     m_inFile >> setid;
     115                 :        864 :     mesh.bface()[ setid ].push_back( m_ntet + i );
     116                 :        864 :     mesh.faceid()[ setid ].push_back( 0 );
     117                 :            :   }
     118                 :            : 
     119                 :            :   // Read in tetrahedra element connectivity
     120         [ +  + ]:      46657 :   for (std::size_t i=0; i<m_ntet; ++i) {
     121                 :            :     std::array< std::size_t, 4 > n;
     122                 :      46656 :     m_inFile >> n[0] >> n[1] >> n[2] >> n[3];
     123                 :      46656 :     mesh.tetinpoel().push_back( n[0] );
     124                 :      46656 :     mesh.tetinpoel().push_back( n[1] );
     125                 :      46656 :     mesh.tetinpoel().push_back( n[2] );
     126                 :      46656 :     mesh.tetinpoel().push_back( n[3] );
     127                 :            :   }
     128                 :            : 
     129                 :            :   // Shift node IDs to start from zero
     130                 :          1 :   shiftToZero( mesh.triinpoel() );
     131                 :          1 :   shiftToZero( mesh.tetinpoel() );
     132                 :          1 : }

Generated by: LCOV version 1.14