14#include "libmesh/point.h"
25 MooseUtils::absoluteFuzzyEqual(mesh_max_coords(i), 0) ? 1 : mesh_max_coords(i);
38 "Point coordinates for indexing must be normalized below 1. "
42 std::vector<Real> rounded_p{round(p(0) /
normalization(0) * pow(10, 12)),
45 return Point(rounded_p[0], rounded_p[1], rounded_p[2]);
63 std::unordered_map<Point, Number, hash_point>
base_map;
72 return const_cast<Number &
>(it->second);
89 std::unordered_map<Point, Number, hash_point>::const_iterator
find(
const Point & pt)
const
104 std::unordered_map<Point, Number, hash_point>::const_iterator out;
107 for (
int i : make_range(2))
108 for (
int j : make_range(2))
109 for (
int k : make_range(2))
110 if (
attempt_find(pt, 2 * i - 1, 2 * j - 1, 2 * k - 1, out))
121 std::unordered_map<Point, Number, hash_point>::const_iterator & out)
const
125 const auto eps = 1e-13;
135 std::unordered_map<Point, Number, hash_point>::const_iterator
end()
const
void hash_combine(std::size_t &)
Used for hash function specialization for Attribute objects.
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
std::size_t operator()(const Point &p) const
An unordered map indexed by Point, eg 3 floating point numbers Because floating point rounding errors...
std::unordered_map< Point, Number, hash_point > base_map
The container indexed by points.
unsigned int hasKey(Point p)
Point getRoundedPoint(const Point &p) const
Normalize, expand then round a point to create local bins.
Point normalization
Normalization factors used to scale points before insertions/comparisons.
std::unordered_map< Point, Number, hash_point >::const_iterator end() const
std::unordered_map< Point, Number, hash_point >::const_iterator find(const Point &pt) const
Number & operator[](Point p)
bool attempt_find(const Point &p, Real dx, Real dy, Real dz, std::unordered_map< Point, Number, hash_point >::const_iterator &out) const
PointIndexedMap(const Point &mesh_max_coords)