46 : m_dof_idx(), m_idx_dof(), m_maps_are_valid(false), m_field_sizes() {}
51 void addDOF(LocalOrdinal rank, GlobalOrdinal
id, LocalOrdinal field)
53 if (m_field_sizes.find(field) == m_field_sizes.end()) m_field_sizes.insert(std::make_pair(field,1));
63 void setFieldSize(LocalOrdinal field, LocalOrdinal field_size);
65 LocalOrdinal getFieldSize(LocalOrdinal field)
const;
67 GlobalOrdinal getGlobalIndex(LocalOrdinal rank, GlobalOrdinal
id, LocalOrdinal field)
const;
69 std::pair<const Dof<LocalOrdinal,GlobalOrdinal>*,LocalOrdinal> getDof(GlobalOrdinal global_index)
const;
71 bool maps_are_valid()
const {
return m_maps_are_valid; }
72 void set_maps_are_valid(
bool flag) { m_maps_are_valid = flag; }
74 typedef typename std::map<Dof<LocalOrdinal,GlobalOrdinal>,GlobalOrdinal,DofOrder> DofMap;
76 typename DofMap::const_iterator begin_dof()
const
77 {
return m_dof_idx.begin(); }
79 typename DofMap::const_iterator end_dof()
const
80 {
return m_dof_idx.end(); }
82 typename DofMap::iterator begin_dof()
83 {
return m_dof_idx.begin(); }
85 typename DofMap::iterator end_dof()
86 {
return m_dof_idx.end(); }
88 typedef typename std::map<GlobalOrdinal,const Dof<LocalOrdinal,GlobalOrdinal>*> IdxMap;
90 typename IdxMap::const_iterator begin_idx()
const
91 {
return m_idx_dof.begin(); }
93 typename IdxMap::const_iterator end_idx()
const
94 {
return m_idx_dof.end(); }
96 typename IdxMap::iterator begin_idx()
97 {
return m_idx_dof.begin(); }
99 typename IdxMap::iterator end_idx()
100 {
return m_idx_dof.end(); }
102 const DofMap& get_dof_idx_map()
const {
return m_dof_idx;}
103 DofMap& get_dof_idx_map() {
return m_dof_idx;}
105 const IdxMap& get_idx_dof_map()
const {
return m_idx_dof;}
106 IdxMap& get_idx_dof_map() {
return m_idx_dof;}
108 typedef typename std::map<LocalOrdinal,LocalOrdinal> FieldSizeMap;
109 const FieldSizeMap& getFieldSizeMap()
const {
return m_field_sizes;}
112 std::map<Dof<LocalOrdinal, GlobalOrdinal>, GlobalOrdinal, DofOrder > m_dof_idx;
114 std::map<GlobalOrdinal, const Dof<LocalOrdinal, GlobalOrdinal>*> m_idx_dof;
115 bool m_maps_are_valid;
117 std::map<LocalOrdinal,LocalOrdinal> m_field_sizes;
119 DofMapper(
const DofMapper<LocalOrdinal,GlobalOrdinal>& src);
120 DofMapper& operator=(
const DofMapper<LocalOrdinal,GlobalOrdinal>& src);
151GlobalOrdinal DofMapper<LocalOrdinal,GlobalOrdinal,DofOrder>::getGlobalIndex(LocalOrdinal rank, GlobalOrdinal
id, LocalOrdinal field)
const