void get_parts_with_topology(stk::mesh::BulkData& mesh, stk::mesh::PartVector& parts, bool skip_topology_root_parts=false) { parts.clear(); stk::mesh::MetaData & fem_meta = stk::mesh::MetaData::get(mesh); const stk::mesh::PartVector& all_parts = fem_meta.get_parts(); stk::mesh::PartVector::const_iterator iter = all_parts.begin(), iter_end = all_parts.end(); const CellTopologyData* topology = shards::getCellTopologyData<Traits>(); for(; iter!=iter_end; ++iter) { stk::mesh::Part* part = *iter; if (fem_meta.get_cell_topology(*part).getCellTopologyData() == topology) { if (skip_topology_root_parts && stk::mesh::is_cell_topology_root_part(*part)) { continue; } parts.push_back(part); } } }