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));