Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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);
}