void get_selected_entities( const Selector & selector , const BucketVector & input_buckets , std::vector< Entity> & entities ) { size_t count = count_selected_entities(selector,input_buckets); entities.resize(count); const BucketVector::const_iterator ie = input_buckets.end(); BucketVector::const_iterator ik = input_buckets.begin(); for ( size_t j = 0 ; ik != ie ; ++ik ) { const Bucket & k = ** ik ; if ( selector( k ) ) { const size_t n = k.size(); for ( size_t i = 0; i < n; ++i, ++j ) { entities[j] = k[i] ; } } } if (input_buckets.size() > 0) { std::sort(entities.begin(), entities.end(), EntityLess(input_buckets[0]->mesh())); } }
inline size_t get_number_sides_in_sideset(const stk::mesh::BulkData& bulk, int sideset_id, stk::mesh::Selector selector, stk::topology stk_element_topology, const stk::mesh::BucketVector& buckets) { if (bulk.has_sideset_data()) { selector &= ( bulk.mesh_meta_data().locally_owned_part() | bulk.mesh_meta_data().globally_shared_part()); size_t num_sides = 0; const stk::mesh::SideSet& sset = bulk.get_sideset_data(sideset_id); for(const stk::mesh::SideSetEntry& elem_and_side : sset) { stk::mesh::Entity element = elem_and_side.element; stk::mesh::Entity side = stk::mesh::get_side_entity_for_elem_side_pair(bulk, element, elem_and_side.side); if(bulk.is_valid(side)) { if(selector(bulk.bucket(side))) { if(stk_element_topology == stk::topology::INVALID_TOPOLOGY || stk_element_topology == bulk.bucket(element).topology()) { ++num_sides; } } } } return num_sides; } else { selector &= bulk.mesh_meta_data().locally_owned_part(); return count_selected_entities(selector, buckets); } }