5 #include "libmesh/elem.h"
13 _crack_boundary_lower(crack_boundary_lower),
14 _crack_boundary_upper(crack_boundary_upper),
34 std::map<std::pair<const Elem *, unsigned char>,
Point> lower_centroids;
35 std::map<std::pair<const Elem *, unsigned char>,
Point> upper_centroids;
38 for (
auto side : elem->side_index_range())
39 if (elem->neighbor_ptr(side) ==
nullptr)
43 std::unique_ptr<const Elem> side_elem = elem->build_side_ptr(side);
45 lower_centroids[std::make_pair(elem, side)] = side_elem->centroid();
50 std::unique_ptr<const Elem> side_elem = elem->build_side_ptr(side);
52 upper_centroids[std::make_pair(elem, side)] = side_elem->centroid();
73 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator it = lower_centroids.begin();
74 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator it_end = lower_centroids.end();
75 for ( ; it != it_end; ++it)
77 Point lower_centroid = it->second;
80 Real min_distance = std::numeric_limits<Real>::max();
82 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator inner_it = upper_centroids.begin();
83 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator inner_it_end = upper_centroids.end();
85 for ( ; inner_it != inner_it_end; ++inner_it)
87 Point upper_centroid = inner_it->second;
99 const Elem * elem = it->first.first;
117 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator inner_it = upper_centroids.begin();
118 std::map<std::pair<const Elem *, unsigned char>,
Point>::iterator inner_it_end = upper_centroids.end();
120 for ( ; inner_it != inner_it_end; ++inner_it)
122 const Elem * neighbor = inner_it->first.first;
125 ElementMap::const_iterator utl_it =
133 void AugmentSparsityOnInterface::operator()
143 for (
const auto & elem :
as_range(range_begin, range_end))
145 if (elem->processor_id() != p)
146 coupled_elements.insert (std::make_pair(elem, null_mat));
148 for (
auto side : elem->side_index_range())
149 if (elem->neighbor_ptr(side) ==
nullptr)
151 ElementSideMap::const_iterator ltu_it =
152 _lower_to_upper.find(std::make_pair(elem, side));
153 if (ltu_it != _lower_to_upper.end())
155 const Elem * neighbor = ltu_it->second;
157 coupled_elements.insert (std::make_pair(neighbor, null_mat));
161 ElementMap::const_iterator utl_it =
162 _upper_to_lower.find(elem);
163 if (utl_it != _upper_to_lower.end())
165 const Elem * neighbor = utl_it->second;
167 coupled_elements.insert (std::make_pair(neighbor, null_mat));