LCOV - code coverage report
Current view: top level - include/utils - location_maps.h (source / functions) Hit Total Coverage
Test: libMesh/libmesh: #4229 (6a9aeb) with base 727f46 Lines: 0 2 0.0 %
Date: 2025-08-19 19:27:09 Functions: 0 4 0.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             : #ifndef LIBMESH_LOCATION_MAPS_H
      21             : #define LIBMESH_LOCATION_MAPS_H
      22             : 
      23             : #include "libmesh/libmesh_config.h"
      24             : 
      25             : // Local Includes
      26             : #include "libmesh/libmesh_common.h"
      27             : #include "libmesh/point.h"
      28             : 
      29             : // C++ Includes
      30             : #include <unordered_map>
      31             : #include <vector>
      32             : 
      33             : namespace libMesh
      34             : {
      35             : 
      36             : // Forward Declarations
      37             : class Elem;
      38             : class MeshBase;
      39             : class Node;
      40             : 
      41             : 
      42             : /**
      43             :  * Data structures that enable location-based lookups
      44             :  * The key is a hash of the Point location.
      45             :  * For efficiency we will use a hashed multimap if it is
      46             :  * available, otherwise a regular multimap.
      47             :  *
      48             :  * \author Roy Stogner
      49             :  * \date 2008
      50             :  * \brief std::map-like data structure using hashed Points for keys.
      51             :  */
      52             : template <typename T>
      53             : class LocationMap
      54             : {
      55             :   typedef std::unordered_multimap<unsigned int, T *> map_type;
      56             : public:
      57             :   void init(MeshBase &);
      58             : 
      59           0 :   void clear() { _map.clear(); }
      60             : 
      61             :   void insert(T &);
      62             : 
      63           0 :   bool empty() const { return _map.empty(); }
      64             : 
      65             :   T * find(const Point &,
      66             :            const Real tol = TOLERANCE);
      67             : 
      68             :   Point point_of(const T &) const;
      69             : 
      70             : protected:
      71             :   unsigned int key(const Point &);
      72             : 
      73             :   void fill(MeshBase &);
      74             : 
      75             : private:
      76             :   map_type          _map;
      77             :   std::vector<Real> _lower_bound;
      78             :   std::vector<Real> _upper_bound;
      79             : };
      80             : 
      81             : } // namespace libMesh
      82             : 
      83             : 
      84             : #endif // LIBMESH_LOCATION_MAPS_H

Generated by: LCOV version 1.14