* non-zero components. Elements
* in the mask corresponding to
* later components are ignored.
+ *
+ * @note This function will not work
+ * for DoFHandler objects that are
+ * built on a
+ * parallel::distributed::Triangulation
+ * object. The reasons is that the
+ * output argument @p selected_dofs
+ * has to have a length equal to <i>all</i>
+ * global degrees of freedom.
+ * Consequently, this does not scale
+ * to very large problems. If you
+ * need the functionality of this
+ * function for parallel triangulations,
+ * then you need to use the other
+ * DoFTools::extract_boundary_dofs
+ * function.
*/
template <class DH>
void
std::vector<bool> &selected_dofs,
const std::set<types::boundary_id_t> &boundary_indicators)
{
- AssertDimension (component_select.size(),n_components(dof_handler));
+ AssertDimension (component_select.size(), n_components(dof_handler));
Assert (boundary_indicators.find (types::internal_face_boundary_id) == boundary_indicators.end(),
ExcInvalidBoundaryIndicator());
+ Assert ((dynamic_cast<const parallel::distributed::Triangulation<DH::dimension,DH::space_dimension>*>
+ (&dof_handler.get_tria())
+ ==
+ 0),
+ ExcMessage ("This function can not be used with distributed triangulations."
+ "See the documentation for more information."));
+
const unsigned int dim=DH::dimension;
// let's see whether we have to