Exemplo n.º 1
0
void Entities::resize(const Uint nb_elem)
{
  rank().resize(nb_elem);
  glb_idx().resize(nb_elem);
  boost_foreach(Space& space, find_components_recursively<Space>(*m_spaces_group))
  {
    space.connectivity().resize(nb_elem);
  }
Exemplo n.º 2
0
bool Dictionary::check_sanity(std::vector<std::string>& messages) const
{
  Uint nb_messages_init = messages.size();
  if (rank().size() != size())
    messages.push_back(uri().string()+": size() ["+to_str(size())+"] != rank().size() ["+to_str(rank().size())+"]");

  if (glb_idx().size() != size())
    messages.push_back(uri().string()+": size() ["+to_str(size())+"] != glb_idx().size() ["+to_str(glb_idx().size())+"]");

  std::set<Uint> unique_gids;
  if (Comm::instance().size()>1)
  {
    for (Uint i=0; i<size(); ++i)
    {
      if (rank()[i] >= PE::Comm::instance().size())
      {
        messages.push_back(rank().uri().string()+"["+to_str(i)+"] has invalid entry. (entry = "+to_str(rank()[i])+" , no further checks)");
        break;
      }
    }
    for (Uint i=0; i<size(); ++i)
    {
      std::pair<std::set<Uint>::iterator, bool > inserted = unique_gids.insert(glb_idx()[i]);
      if (inserted.second == false)
      {
        messages.push_back(glb_idx().uri().string()+"["+to_str(i)+"] has non-unique entries.  (entry "+to_str(glb_idx()[i])+" exists more than once, no further checks)");
        break;
      }
    }
  }


  boost_foreach(const Field& field, find_components_recursively<Field>(*this))
  {
    if (field.size() != size())
      messages.push_back(uri().string()+": size() ["+to_str(size())+"] != "+field.uri().string()+".size() ["+to_str(field.size())+"]");
  }
  // Sane if number of messages did not grow in size
  return messages.size() == nb_messages_init;
}