LCOV - code coverage report
Current view: top level - src/utils - MeshAlignmentBase.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 30 30 100.0 %
Date: 2025-07-30 13:02:48 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #include "MeshAlignmentBase.h"
      11             : 
      12             : #include "libmesh/elem.h"
      13             : 
      14         632 : MeshAlignmentBase::MeshAlignmentBase(const MooseMesh & mesh)
      15         632 :   : _mesh(mesh), _meshes_are_aligned(false)
      16             : {
      17         632 : }
      18             : 
      19             : void
      20         343 : MeshAlignmentBase::extractFrom1DElements(const std::vector<dof_id_type> & elem_ids,
      21             :                                          std::vector<Point> & elem_points,
      22             :                                          std::vector<dof_id_type> & node_ids,
      23             :                                          std::vector<Point> & node_points) const
      24             : {
      25             :   elem_points.clear();
      26             :   node_ids.clear();
      27             :   node_points.clear();
      28             : 
      29        5535 :   for (const auto & elem_id : elem_ids)
      30             :   {
      31        5192 :     const Elem * elem = _mesh.elemPtr(elem_id);
      32       10384 :     elem_points.push_back(elem->vertex_average());
      33             : 
      34       15576 :     for (const auto j : elem->node_index_range())
      35             :     {
      36             :       const Node & node = elem->node_ref(j);
      37       10384 :       const auto node_id = node.id();
      38       10384 :       if (std::find(node_ids.begin(), node_ids.end(), node_id) == node_ids.end())
      39             :       {
      40        5565 :         node_ids.push_back(node_id);
      41        5565 :         node_points.push_back(node);
      42             :       }
      43             :     }
      44             :   }
      45         343 : }
      46             : 
      47             : void
      48         909 : MeshAlignmentBase::extractFromBoundaryInfo(
      49             :     const std::vector<std::tuple<dof_id_type, unsigned short int>> & boundary_info,
      50             :     std::vector<dof_id_type> & elem_ids,
      51             :     std::vector<unsigned short int> & side_ids,
      52             :     std::vector<Point> & side_points,
      53             :     std::vector<dof_id_type> & node_ids,
      54             :     std::vector<Point> & node_points) const
      55             : {
      56             :   elem_ids.clear();
      57             :   side_ids.clear();
      58             :   side_points.clear();
      59             :   node_ids.clear();
      60             :   node_points.clear();
      61             : 
      62       18581 :   for (const auto & elem_id_and_side : boundary_info)
      63             :   {
      64       17672 :     auto elem_id = std::get<0>(elem_id_and_side);
      65       17672 :     elem_ids.push_back(elem_id);
      66             : 
      67       17672 :     auto side = std::get<1>(elem_id_and_side);
      68       17672 :     side_ids.push_back(side);
      69             : 
      70       17672 :     const Elem * elem = _mesh.elemPtr(elem_id);
      71       17672 :     const Elem * side_elem = elem->build_side_ptr(side).release();
      72       17672 :     const Point side_center = side_elem->vertex_average();
      73       17672 :     side_points.push_back(side_center);
      74             : 
      75       69960 :     for (const auto j : side_elem->node_index_range())
      76             :     {
      77             :       const Node & node = side_elem->node_ref(j);
      78       52288 :       const auto node_id = node.id();
      79       52288 :       if (std::find(node_ids.begin(), node_ids.end(), node_id) == node_ids.end())
      80             :       {
      81       19786 :         node_ids.push_back(node_id);
      82       19786 :         node_points.push_back(node);
      83             :       }
      84             :     }
      85       17672 :     delete side_elem;
      86             :   }
      87         909 : }

Generated by: LCOV version 1.14