bool DiracKernelInfo::hasPoint(const Elem * elem, Point p) { std::vector<Point> & point_list = _points[elem].first; for (const auto & pt : point_list) if (pointsFuzzyEqual(pt, p)) return true; // If we haven't found it, we don't have it. return false; }
bool DiracKernelInfo::hasPoint(const Elem * elem, Point p) { std::vector<Point> & point_list = _points[elem].first; std::vector<Point>::iterator it = point_list.begin(), end = point_list.end(); for (; it != end; ++it) if (pointsFuzzyEqual(*it, p)) return true; // If we haven't found it, we don't have it. return false; }
void DiracKernelInfo::addPoint(const Elem * elem, Point p) { _elements.insert(elem); std::pair<std::vector<Point>, std::vector<unsigned int> > & multi_point_list = _points[elem]; const unsigned int npoint = multi_point_list.first.size(); mooseAssert(npoint == multi_point_list.second.size(), "Different sizes for location and multiplicity data"); for (unsigned int i = 0; i < npoint; ++i) if (pointsFuzzyEqual(multi_point_list.first[i], p)) { // a point at the same (within a tolerance) location as p exists, increase its multiplicity multi_point_list.second[i]++; return; } // no prior point found at this location, add it with a multiplicity of one multi_point_list.first.push_back(p); multi_point_list.second.push_back(1); }