86 typedef std::map<LocalOrdinal, typename dof_id_map::iterator> dof_iter_map;
87 dof_iter_map dof_2_iter;
89 typename dof_id_map::iterator
92 for(; iter!=iter_end; ++iter) {
93 LocalOrdinal this_dof_id = iter->second.second;
95 typename dof_iter_map::iterator di_iter = dof_2_iter.find(this_dof_id);
97 if (di_iter != dof_2_iter.end()) {
99 std::ostringstream osstr;
100 osstr <<
"fei::FieldDofMap::compute_dof_ids ERROR, duplicate field types found (";
101 osstr << this_dof_id <<
" used more than once.)";
102 std::string str = osstr.str();
103 throw std::runtime_error(str);
110 std::pair<LocalOrdinal,LocalOrdinal>& fsize_and_dof = di_iter->second->second;
111 LocalOrdinal fieldSize = fsize_and_dof.first;
112 LocalOrdinal last_dof_id = fsize_and_dof.second;
113 di_iter->second = iter;
114 iter->second.second = last_dof_id + fieldSize;
116 else dof_2_iter.insert(std::make_pair(this_dof_id, iter));