19 #ifndef LIBMESH_SPARSITY_PATTERN_H 20 #define LIBMESH_SPARSITY_PATTERN_H 48 namespace SparsityPattern
50 typedef std::vector<dof_id_type, Threads::scalable_allocator<dof_id_type>>
Row;
51 class Graph :
public std::vector<Row> {};
64 template<
typename B
idirectionalIterator>
65 static void sort_row (
const BidirectionalIterator begin,
66 BidirectionalIterator middle,
67 const BidirectionalIterator
end);
90 void handle_vi_vj(
const std::vector<dof_id_type> & element_dofs_i,
91 const std::vector<dof_id_type> & element_dofs_j);
94 std::vector<dof_id_type> & dofs_vi,
106 const DofMap & dof_map_in,
108 std::set<GhostingFunctor *> coupling_functors_in,
109 const bool implicit_neighbor_dofs_in,
110 const bool need_full_sparsity_pattern_in);
121 #if defined(__GNUC__) && (__GNUC__ < 4) && !defined(__INTEL_COMPILER) 136 template<
typename B
idirectionalIterator>
139 BidirectionalIterator middle,
140 const BidirectionalIterator
end)
142 if ((begin == middle) || (middle ==
end))
return;
144 libmesh_assert_greater (std::distance (begin, middle), 0);
145 libmesh_assert_greater (std::distance (middle,
end), 0);
146 libmesh_assert (std::unique (begin, middle) == middle);
147 libmesh_assert (std::unique (middle,
end) ==
end);
149 while (middle !=
end)
151 BidirectionalIterator
160 #if defined(__GNUC__) && (__GNUC__ < 4) && !defined(__INTEL_COMPILER) 166 if (a == begin)
break;
181 BidirectionalIterator
185 for (++first; first !=
end;
prev=first, ++first)
187 libmesh_assert(
false);
192 libmesh_assert (std::unique (begin,
end) ==
end);
197 #endif // LIBMESH_SPARSITY_PATTERN_H
SparsityPattern::Graph sparsity_pattern
const std::set< GhostingFunctor * > & coupling_functors
const bool implicit_neighbor_dofs
The base class for all geometric element types.
const bool need_full_sparsity_pattern
Utility class for defining generic ranges for threading.
Manages the degrees of freedom (DOFs) in a simulation.
std::vector< dof_id_type, Threads::scalable_allocator< dof_id_type > > Row
void join(const Build &other)
const CouplingMatrix * dof_coupling
void sorted_connected_dofs(const Elem *elem, std::vector< dof_id_type > &dofs_vi, unsigned int vi)
void _dummy_function(void)
std::vector< dof_id_type > n_nz
An object whose state is distributed along a set of processors.
SparsityPattern::NonlocalGraph nonlocal_pattern
void swap(Iterator &lhs, Iterator &rhs)
Build(const MeshBase &mesh_in, const DofMap &dof_map_in, const CouplingMatrix *dof_coupling_in, std::set< GhostingFunctor *> coupling_functors_in, const bool implicit_neighbor_dofs_in, const bool need_full_sparsity_pattern_in)
void handle_vi_vj(const std::vector< dof_id_type > &element_dofs_i, const std::vector< dof_id_type > &element_dofs_j)
void operator()(const ConstElemRange &range)
Defines the coupling between variables of a System.
static void sort_row(const BidirectionalIterator begin, BidirectionalIterator middle, const BidirectionalIterator end)
std::vector< dof_id_type > n_oz