bool GridSubsetHandler::perform_self_tests() { typedef typename geometry_traits<TElem>::iterator iterator; bool bSuccess = true; LOG("performing self tests on GridSubsetHandler\n"); LOG(" num subets: " << num_subsets_in_list() << std::endl); // iterate through the subsets and check whether the assigned // elements have the correct subset index LOG(" checking subset indices\n"); for(size_t i = 0; i < num_subsets_in_list(); ++i){ LOG(" checking subset " << i); for(iterator iter = begin<TElem>(i); iter != end<TElem>(i); ++iter) { if(get_subset_index(*iter) != i){ LOG(" bad element subset index: " << get_subset_index(*iter)); bSuccess = false; break; } } LOG("\n"); } return bSuccess; }
void MultiGridSubsetHandler:: assign_subset_impl(TElem* elem, int subsetIndex) { assert((m_pGrid != NULL) && "ERROR in SubsetHandler::assign_subset(): No grid assigned to SubsetHandler."); int level = m_pMG->get_level(elem); // check if we have to remove elem from a subset. int oldIndex = get_subset_index(elem); if(oldIndex != -1) section_container<TElem>(oldIndex, level).erase(get_list_iterator(elem), elem->container_section()); // add the element to the subset. if(subsetIndex != -1) { subset_required(subsetIndex); level_required(level); section_container<TElem>(subsetIndex, level).insert(elem, elem->container_section()); subset_assigned(elem, subsetIndex); } else { //TODO: iterator is useless! subset_assigned(elem, -1); } }