libMesh
Loading...
Searching...
No Matches
location_maps.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 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
33namespace libMesh
34{
35
36// Forward Declarations
37class Elem;
38class MeshBase;
39class Node;
40
41
52template <typename T>
54{
55 typedef std::unordered_multimap<unsigned int, T *> map_type;
56public:
57 void init(MeshBase &);
58
59 void clear() { _map.clear(); }
60
61 void insert(T &);
62
63 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
70protected:
71 unsigned int key(const Point &);
72
73 void fill(MeshBase &);
74
75private:
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
Data structures that enable location-based lookups The key is a hash of the Point location.
std::vector< Real > _upper_bound
Point point_of(const T &) const
T * find(const Point &, const Real tol=TOLERANCE)
void init(MeshBase &)
std::vector< Real > _lower_bound
unsigned int key(const Point &)
void fill(MeshBase &)
std::unordered_multimap< unsigned int, T * > map_type
This is the MeshBase class.
Definition mesh_base.h:81
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition point.h:40
The libMesh namespace provides an interface to certain functionality in the library.
static constexpr Real TOLERANCE
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real