v0.8.16
DofsMultiIndices.hpp
Go to the documentation of this file.
1 /** \file DofsMultiIndices.hpp
2  * \ingroup dof_multi_indices
3  * \brief Multi-Index contains, data structures for mofem dofs and other
4  * low-level functions
5  */
6 
7 /* MoFEM is free software: you can redistribute it and/or modify it under
8  * the terms of the GNU Lesser General Public License as published by the
9  * Free Software Foundation, either version 3 of the License, or (at your
10  * option) any later version.
11 
12  * MoFEM is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15  * License for more details.
16 
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with MoFEM. If not, see <http://www.gnu.org/licenses/>
19 */
20 
21 #ifndef __DOFSMULTIINDICES_HPP__
22 #define __DOFSMULTIINDICES_HPP__
23 
24 namespace MoFEM {
25 
26 /**
27  * \brief keeps information about DOF on the entity
28  * \ingroup dof_multi_indices
29  */
30 struct DofEntity : public interface_FieldEntity<FieldEntity> {
31 
35 
36  static inline UId getGlobalUniqueIdCalculate(const DofIdx dof,
37  const UId &ent_uid) {
38  // if(dof>=512) THROW_MESSAGE("_dof>=512");
39  return static_cast<UId>(dof) | ent_uid;
40  }
41 
42  /**
43  * \brief Calculate UId for DOF
44  *
45  * UId is constructed such that all DOFs are ordered by processor, entity,
46  * field and dof index on entity, On entity dofs index is constructed such
47  * that coefficient number and dofs increase with dofs index on entity.
48  *
49  * @param dof dof index on entity
50  * @param ent_ptr pointer to field entity
51  * @return UId
52  */
53  static inline UId
55  const boost::shared_ptr<FieldEntity> &ent_ptr) {
56  return getGlobalUniqueIdCalculate(dof, ent_ptr->getGlobalUniqueId());
57  }
58 
59  static inline UId getGlobalUniqueIdCalculate_Low_Proc(const int owner_proc) {
60  return static_cast<UId>(owner_proc) << 9 + 5 + 8 * sizeof(EntityHandle);
61  }
62 
63  static inline UId getGlobalUniqueIdCalculate_Hi_Proc(const int owner_proc) {
64  return static_cast<UId>(MBMAXTYPE) << 9 |
65  static_cast<UId>(BITFIELDID_SIZE - 1)
66  << 9 + 8 * sizeof(EntityHandle) |
67  static_cast<UId>(owner_proc) << 9 + 5 + 8 * sizeof(EntityHandle);
68  }
69 
70  static inline ShortId
72  const boost::shared_ptr<FieldEntity> &ent_ptr) {
73  // if(sizeof(ShortId) < sizeof(char)+2) THROW_MESSAGE("sizeof(ShortId)<
74  // sizeof(char)+2")
75  return static_cast<ShortId>(dof) |
76  (static_cast<ShortId>(ent_ptr->getBitNumber()) << 9);
77  }
78 
79  bool active; ///< true if dof is active
80  UId globalUId; ///< global unique id for this dof
81 
82  DofEntity(const boost::shared_ptr<FieldEntity> &entity_ptr,
83  const ApproximationOrder dof_order,
84  const FieldCoefficientsNumber dof_rank, const DofIdx dof,
85  const bool is_active = false);
86 
87  /// @return get dof index on entity
88  inline DofIdx getEntDofIdx() const {
89  DofIdx dof;
90  memcpy(&dof, &globalUId, 2);
91  return DOF_UID_MASK_ON_ENTITY & dof;
92  }
93 
94  /// @return get field data on dof
95  inline FieldData &getFieldData() const {
96  return const_cast<FieldData &>(
97  this->sPtr->getEntFieldData().data()[getEntDofIdx()]);
98  }
99 
100  /// @return get unique dof id
101  inline UId getGlobalUniqueId() const { return globalUId; }
102 
103  /// @return get entity unique dof id
104  inline UId getEntGlobalUniqueId() const {
105  return this->sPtr->getGlobalUniqueId();
106  }
107 
108  /** \brief get short uid it is unique in combination with entity handle
109  *
110  * EntityHandle are controlled by MOAB, which is unique in
111  * MOAB instance. However two MOAB instances, can have attached different
112  * EntityHandles to the same entity.
113  *
114  * Relation between MoAB EntityHandle can be handled by saving entity handle
115  * data into tag, see MB_TYPE_HANDLE. MOAB at time of file reading or
116  * creating new MOAB instance, substitute tag value by approbate entity
117  * handle.
118  *
119  * ShortId is created to handle problems related to saving data series, and
120  * reading those data using different MoAB instances.
121  *
122  */
125  }
126 
127  /// @return get dof entity handle
128  inline EntityHandle getEnt() const { return this->sPtr->getEnt(); }
129 
130  /// @return get dof approximation order
132  return getDofOrderMap()[getEntDofIdx()];
133  }
134 
135  /// @return get dof coefficient index
137  return getEntDofIdx() % getNbOfCoeffs();
138  }
139 
140  /// @return return true if dof us active
141  inline char getActive() const { return active ? 1 : 0; }
142 
143  friend std::ostream &operator<<(std::ostream &os, const DofEntity &e);
144 };
145 
146 /**
147  * \brief Interface to DofEntity
148  *
149  * In MoFEM DOFs classes (and Ent and Finite Element classes) are derived by
150  * interface, i.e. not class is derived but interface to it.
151  *
152  * \ingroup dof_multi_indices
153  */
154 template <typename T>
156 
157  interface_DofEntity(const boost::shared_ptr<T> &sptr)
158  : interface_FieldEntity<T>(sptr) {}
159 
160  /// @return return dof unique id
161  inline const UId getGlobalUniqueId() const {
162  return this->sPtr->getGlobalUniqueId();
163  }
164 
165  /// @return return entity unique id
166  inline const UId getEntGlobalUniqueId() const {
167  return this->sPtr->getEntGlobalUniqueId();
168  }
169 
170  /// @return return short id (used by data recorder)
172  return this->sPtr->getNonNonuniqueShortId();
173  }
174 
175  /// @return return index of dof on the entity
176  inline DofIdx getEntDofIdx() const { return this->sPtr->getEntDofIdx(); }
177 
178  /// @return return data on dof
179  inline FieldData &getFieldData() const { return this->sPtr->getFieldData(); }
180 
181  /// @return return entity handle
182  inline EntityHandle getEnt() const { return this->sPtr->getEnt(); }
183 
184  /// @return get dof approximation order
186  return this->sPtr->getDofOrder();
187  }
188 
189  /// @return get dof coefficient index
191  return this->sPtr->getDofCoeffIdx();
192  }
193 
194  /// @return return true if dof is active
195  inline char getActive() const { return this->sPtr->getActive(); }
196 
197  /// @return get pointer to dof data structure
198  inline boost::shared_ptr<DofEntity> &getDofEntityPtr() const {
199  return this->sPtr;
200  }
201 
202  /// @return get pioneer do dof's entity data structure
203  inline boost::shared_ptr<FieldEntity> &getFieldEntityPtr() const {
204  return this->sPtr->getFieldEntityPtr();
205  }
206 
207  // /// \deprecated use getFieldEntityPtr instead
208  // DEPRECATED inline boost::shared_ptr<FieldEntity>& getMoFEMEntityPtr() const
209  // {
210  // return getFieldEntityPtr();
211  // }
212 };
213 
214 /**
215  * \brief keeps information about indexed dofs for the problem
216  * \ingroup dof_multi_indices
217  *
218  * FIXME: Is too many iterator, this has to be manage more efficiently, some
219  * iterators could be moved to multi_indices views.
220  *
221  */
222 struct NumeredDofEntity : public interface_DofEntity<DofEntity> {
223 
230  unsigned int pArt;
231 
232  /// @return MoFEM DoF index
233  inline DofIdx getDofIdx() const { return dofIdx; }
234 
235  /// @return PETSc global DoF index
236  inline DofIdx getPetscGlobalDofIdx() const { return petscGloablDofIdx; }
237 
238  /// @return PETSc local DoF index
239  inline DofIdx getPetscLocalDofIdx() const { return petscLocalDofIdx; }
240 
241  /// @return Owning partition (i.e. process/processor)
242  inline unsigned int getPart() const { return pArt; }
243 
244  /// @return True if local index is set
245  inline bool getHasLocalIndex() const {
246  return !std::signbit(petscLocalDofIdx);
247  }
248 
249  NumeredDofEntity(const boost::shared_ptr<DofEntity> &dof_entity_ptr,
250  const int dof_idx = -1, const int petsc_gloabl_dof_idx = -1,
251  const int petsc_local_dof_idx = -1, const int part = -1);
252  friend std::ostream &operator<<(std::ostream &os, const NumeredDofEntity &e);
253 };
254 
255 /**
256  * \brief interface to NumeredDofEntity
257  * \ingroup dof_multi_indices
258  */
259 template <typename T>
261 
262  interface_NumeredDofEntity(const boost::shared_ptr<T> &sptr)
263  : interface_DofEntity<T>(sptr){};
264 
265  /// @return get dof index on entity
266  inline DofIdx getDofIdx() const { return this->sPtr->getDofIdx(); }
267 
268  /// @return get petsc global index on entity
269  inline DofIdx getPetscGlobalDofIdx() const {
270  return this->sPtr->getPetscGlobalDofIdx();
271  }
272 
273  /// @return get pe
274  inline DofIdx getPetscLocalDofIdx() const {
275  return this->sPtr->getPetscLocalDofIdx();
276  }
277 
278  inline unsigned int getPart() const { return this->sPtr->getPart(); }
279 
280  inline bool getHasLocalIndex() const {
281  return this->sPtr->getHasLocalIndex();
282  }
283 
284  inline boost::shared_ptr<NumeredDofEntity> &getNumeredDofEntityPtr() const {
285  return this->sPtr;
286  };
287 };
288 
289 /**
290  * \brief keeps basic information about indexed dofs for the finite element
291  */
293  BaseFEDofEntity(const boost::shared_ptr<SideNumber> &side_number_ptr)
294  : sideNumberPtr(side_number_ptr){};
295  boost::shared_ptr<SideNumber> sideNumberPtr;
296  inline int getSideNumber() { return sideNumberPtr->side_number; }
297 };
298 
299 /**
300  * \brief keeps information about indexed dofs for the finite element
301  * \ingroup dof_multi_indices
302  */
303 struct FEDofEntity : public BaseFEDofEntity, interface_DofEntity<DofEntity> {
307  FEDofEntity(const boost::shared_ptr<SideNumber> &side_number_ptr,
308  const boost::shared_ptr<DofEntity> &dof_ptr);
309  FEDofEntity(const boost::tuple<const boost::shared_ptr<SideNumber> &,
310  const boost::shared_ptr<DofEntity> &> &t);
311  friend std::ostream &operator<<(std::ostream &os, const FEDofEntity &e);
312 };
313 
314 /**
315  * \brief keeps information about indexed dofs for the finite element
316  * \ingroup dof_multi_indices
317  */
319  interface_NumeredDofEntity<NumeredDofEntity> {
325  FENumeredDofEntity(const boost::shared_ptr<SideNumber> &side_number_ptr,
326  const boost::shared_ptr<NumeredDofEntity> &dof_ptr);
328  const boost::tuple<const boost::shared_ptr<SideNumber> &,
329  const boost::shared_ptr<NumeredDofEntity> &> &t);
330  friend std::ostream &operator<<(std::ostream &os,
331  const FENumeredDofEntity &e);
332 };
333 
334 /**
335  * @relates multi_index_container
336  * \brief MultiIndex container keeps DofEntity
337  * \ingroup dof_multi_indices
338  */
339 typedef multi_index_container<
340  boost::shared_ptr<DofEntity>,
341  indexed_by<
342  // unique
343  ordered_unique<
344  tag<Unique_mi_tag>,
345  const_mem_fun<DofEntity, UId, &DofEntity::getGlobalUniqueId> >,
346  // non_unique
347  ordered_non_unique<
348  tag<Composite_Ent_and_ShortId_mi_tag>,
349  composite_key<
350  DofEntity,
351  const_mem_fun<DofEntity, EntityHandle, &DofEntity::getEnt>,
352  const_mem_fun<DofEntity, ShortId,
354  ordered_non_unique<
355  tag<Composite_Name_And_Ent_And_EntDofIdx_mi_tag>,
356  composite_key<
357  DofEntity,
358  const_mem_fun<DofEntity::interface_type_Field,
359  boost::string_ref, &DofEntity::getNameRef>,
360  const_mem_fun<DofEntity, EntityHandle, &DofEntity::getEnt>,
361  const_mem_fun<DofEntity, DofIdx, &DofEntity::getEntDofIdx> > >,
362  ordered_non_unique<
363  tag<Unique_Ent_mi_tag>,
364  const_mem_fun<DofEntity, UId, &DofEntity::getEntGlobalUniqueId> >,
365  ordered_non_unique<
366  tag<FieldName_mi_tag>,
367  const_mem_fun<DofEntity::interface_type_Field, boost::string_ref,
369  ordered_non_unique<
370  tag<Ent_mi_tag>,
371  const_mem_fun<DofEntity, EntityHandle, &DofEntity::getEnt> >,
372  ordered_non_unique<
373  tag<Composite_Name_And_Ent_mi_tag>,
374  composite_key<
375  DofEntity,
376  const_mem_fun<DofEntity::interface_type_Field,
377  boost::string_ref, &DofEntity::getNameRef>,
378  const_mem_fun<DofEntity, EntityHandle, &DofEntity::getEnt> > >,
379  ordered_non_unique<
380  tag<Composite_Name_And_Type_mi_tag>,
381  composite_key<
382  DofEntity,
383  const_mem_fun<DofEntity::interface_type_Field,
384  boost::string_ref, &DofEntity::getNameRef>,
385  const_mem_fun<DofEntity::interface_type_RefEntity, EntityType,
386  &DofEntity::getEntType> > >,
387  ordered_non_unique<
388  tag<Composite_Name_Ent_Order_And_CoeffIdx_mi_tag>,
389  composite_key<
390  DofEntity,
391  const_mem_fun<DofEntity::interface_type_Field,
392  boost::string_ref, &DofEntity::getNameRef>,
393  const_mem_fun<DofEntity, EntityHandle, &DofEntity::getEnt>,
394  const_mem_fun<DofEntity, ApproximationOrder,
396  const_mem_fun<DofEntity, FieldCoefficientsNumber,
397  &DofEntity::getDofCoeffIdx> > > > >
399 
400 /** \brief Dof multi-index by field name
401  *
402  * \ingroup dof_multi_indices
403  */
404 typedef DofEntity_multiIndex::index<FieldName_mi_tag>::type
406 
407 /** \brief Dof multi-index by entity
408  *
409  * \ingroup dof_multi_indices
410  */
411 typedef DofEntity_multiIndex::index<Ent_mi_tag>::type DofEntityByEnt;
412 
413 /** \brief Dof multi-index by field name and entity
414  *
415  * \ingroup dof_multi_indices
416  */
417 typedef DofEntity_multiIndex::index<Composite_Name_And_Ent_mi_tag>::type
419 
420 /** \brief Dof multi-index by field name and entity type
421  *
422  * \ingroup dof_multi_indices
423  */
424 typedef DofEntity_multiIndex::index<Composite_Name_And_Type_mi_tag>::type
426 
427 /** \brief multi-index view on DofEntity by uid
428  \ingroup dof_multi_indices
429 */
430 typedef multi_index_container<
431  boost::shared_ptr<DofEntity>,
432  indexed_by<ordered_unique<
433  const_mem_fun<DofEntity, UId, &DofEntity::getGlobalUniqueId> > > >
435 
436 /** \brief multi-index view on DofEntity activity
437  \ingroup dof_multi_indices
438 */
439 typedef multi_index_container<
440  boost::shared_ptr<DofEntity>,
441  indexed_by<ordered_unique<const_mem_fun<DofEntity, UId,
443  ordered_non_unique<
444  const_mem_fun<DofEntity, char, &DofEntity::getActive> > > >
446 
447 /**
448  * @relates multi_index_container
449  * \brief MultiIndex container keeps FEDofEntity
450  * \ingroup dof_multi_indices
451 
452  */
453 typedef multi_index_container<
454  boost::shared_ptr<FEDofEntity>,
455  indexed_by<
456  ordered_unique<
457  tag<Unique_mi_tag>,
458  const_mem_fun<FEDofEntity::interface_type_DofEntity, const UId,
460  ordered_non_unique<tag<Ent_mi_tag>,
463  ordered_non_unique<
464  tag<FieldName_mi_tag>,
465  const_mem_fun<FEDofEntity::interface_type_Field, boost::string_ref,
467  ordered_non_unique<
468  tag<EntType_mi_tag>,
469  const_mem_fun<FEDofEntity::interface_type_RefEntity, EntityType,
471  ordered_non_unique<
472  tag<Composite_Name_And_Type_mi_tag>,
473  composite_key<
474  FEDofEntity,
475  const_mem_fun<FEDofEntity::interface_type_Field,
476  boost::string_ref, &FEDofEntity::getNameRef>,
477  const_mem_fun<FEDofEntity::interface_type_RefEntity, EntityType,
479  ordered_non_unique<
480  tag<Composite_Name_And_Ent_mi_tag>,
481  composite_key<
482  FEDofEntity,
483  const_mem_fun<FEDofEntity::interface_type_Field,
484  boost::string_ref, &FEDofEntity::getNameRef>,
487  // This is only useed by obsolete modules, should be removed with
488  // brother of cephs, i.e. Pawel.
489  ordered_non_unique<
490  tag<Composite_Name_Type_And_Side_Number_mi_tag>,
491  composite_key<
492  FEDofEntity,
493  const_mem_fun<FEDofEntity::interface_type_Field,
494  boost::string_ref, &FEDofEntity::getNameRef>,
495  const_mem_fun<FEDofEntity::interface_type_RefEntity, EntityType,
499  boost::shared_ptr<SideNumber>,
501  ordered_non_unique<
502  tag<Composite_EntType_and_Space_mi_tag>,
503  composite_key<
504  FEDofEntity,
505  const_mem_fun<FEDofEntity::interface_type_RefEntity, EntityType,
508  &FEDofEntity::getSpace> > > > >
510 
511 /** \brief Finite element DoF multi-index by field name
512  *
513  * \ingroup dof_multi_indices
514  */
515 typedef FEDofEntity_multiIndex::index<FieldName_mi_tag>::type
517 
518 /** \brief Dof entity multi-index by field name and entity
519  *
520  * \ingroup dof_multi_indices
521  */
522 typedef FEDofEntity_multiIndex::index<Composite_Name_And_Ent_mi_tag>::type
524 
525 /** \brief Dof entity multi-index by field name and entity type
526  *
527  * \ingroup dof_multi_indices
528  */
529 typedef FEDofEntity_multiIndex::index<Composite_Name_And_Type_mi_tag>::type
531 
532 /**
533  * @relates multi_index_container
534  * \brief MultiIndex container keeps FENumeredDofEntity
535 
536  * \ingroup dof_multi_indices
537  */
538 typedef multi_index_container<
539  boost::shared_ptr<FENumeredDofEntity>,
540  indexed_by<
541  ordered_unique<
542  tag<Unique_mi_tag>,
545  ordered_non_unique<
546  tag<Ent_mi_tag>,
549  ordered_non_unique<
550  tag<FieldName_mi_tag>,
552  boost::string_ref, &FENumeredDofEntity::getNameRef> >,
553  ordered_non_unique<
554  tag<PetscGlobalIdx_mi_tag>,
557  ordered_non_unique<
558  tag<Composite_Name_Type_And_Side_Number_mi_tag>,
559  composite_key<
562  boost::string_ref,
565  EntityType, &FENumeredDofEntity::getEntType>,
568  boost::shared_ptr<SideNumber>,
570  ordered_non_unique<
571  tag<Composite_Name_And_Type_mi_tag>,
572  composite_key<
575  boost::string_ref,
578  EntityType, &FENumeredDofEntity::getEntType> > >,
579  ordered_non_unique<
580  tag<Composite_Name_And_Ent_mi_tag>,
581  composite_key<
584  boost::string_ref,
589 
590 /** \brief Finite element numbered DoF multi-index by field name
591  *
592  * \ingroup dof_multi_indices
593  */
594 typedef FENumeredDofEntity_multiIndex::index<FieldName_mi_tag>::type
596 
597 /** \brief Dof entity multi-index by field name and entity
598  *
599  * \ingroup dof_multi_indices
600  */
601 typedef FENumeredDofEntity_multiIndex::index<
603 
604 /** \brief Dof entity multi-index by field name and entity type
605  *
606  * \ingroup dof_multi_indices
607  */
608 typedef FENumeredDofEntity_multiIndex::index<
610 
611 /** \brief Dof entity multi-index by UId
612  *
613  * \ingroup dof_multi_indices
614  */
615 typedef FENumeredDofEntity_multiIndex::index<Unique_mi_tag>::type
617 
618 /** \brief Numbered DoF multi-index by entity
619  *
620  * \ingroup dof_multi_indices
621  */
622 typedef FENumeredDofEntity_multiIndex::index<Ent_mi_tag>::type
624 
625 /**
626  * @relates multi_index_container
627  * \brief MultiIndex container keeps NumeredDofEntity
628  * \ingroup dof_multi_indices
629  */
630 typedef multi_index_container<
631  boost::shared_ptr<NumeredDofEntity>,
632  // unique
633  indexed_by<
634  ordered_unique<
635  tag<Unique_mi_tag>,
636  const_mem_fun<NumeredDofEntity::interface_type_DofEntity, const UId,
638  // non unique
639  ordered_non_unique<
640  tag<Composite_Name_And_Ent_And_EntDofIdx_mi_tag>,
641  composite_key<
644  boost::string_ref, &NumeredDofEntity::getNameRef>,
649  // ordered_non_unique<
650  // tag<EntDofIdx_mi_tag>,
651  // const_mem_fun<NumeredDofEntity::interface_type_DofEntity,DofIdx,&NumeredDofEntity::getEntDofIdx>
652  // >,
653  ordered_non_unique<tag<Idx_mi_tag>, member<NumeredDofEntity, DofIdx,
655  ordered_non_unique<
656  tag<FieldName_mi_tag>,
658  boost::string_ref, &NumeredDofEntity::getNameRef> >,
659  ordered_non_unique<tag<PetscGlobalIdx_mi_tag>,
660  member<NumeredDofEntity, DofIdx,
662  ordered_non_unique<tag<PetscLocalIdx_mi_tag>,
663  member<NumeredDofEntity, DofIdx,
665  ordered_non_unique<
666  tag<Ent_mi_tag>,
669  ordered_non_unique<
670  tag<Order_mi_tag>,
673  ordered_non_unique<
674  tag<Composite_Part_And_Order_mi_tag>,
675  composite_key<
677  member<NumeredDofEntity, unsigned int, &NumeredDofEntity::pArt>,
681  ordered_non_unique<
682  tag<Composite_Name_And_Part_mi_tag>,
683  composite_key<
686  boost::string_ref, &NumeredDofEntity::getNameRef>,
687  member<NumeredDofEntity, unsigned int,
689  ordered_non_unique<
690  tag<Composite_Name_Ent_And_Part_mi_tag>,
691  composite_key<
694  boost::string_ref, &NumeredDofEntity::getNameRef>,
697  member<NumeredDofEntity, unsigned int,
698  &NumeredDofEntity::pArt> > > > >
700 
701 /** \brief Numbered DoF multi-index by field name
702  *
703  * \ingroup dof_multi_indices
704  */
705 typedef NumeredDofEntity_multiIndex::index<FieldName_mi_tag>::type
707 
708 /** \brief Numbered DoF multi-index by UId
709  *
710  * \ingroup dof_multi_indices
711  */
712 typedef NumeredDofEntity_multiIndex::index<Unique_mi_tag>::type
714 
715 /** \brief Numbered DoF multi-index by local index
716  *
717  * \ingroup dof_multi_indices
718  */
719 typedef NumeredDofEntity_multiIndex::index<PetscLocalIdx_mi_tag>::type
721 
722 /** \brief Numbered DoF multi-index by entity
723  *
724  * \ingroup dof_multi_indices
725  */
726 typedef NumeredDofEntity_multiIndex::index<Ent_mi_tag>::type
728 
729 /** \brief Numbered DoF multi-index by name entity and partition
730  *
731  * \ingroup dof_multi_indices
732  */
733 typedef NumeredDofEntity_multiIndex::index<
735 
736 typedef multi_index_container<
737  boost::shared_ptr<NumeredDofEntity>,
738  indexed_by<ordered_unique<
739  const_mem_fun<NumeredDofEntity::interface_type_DofEntity, const UId,
742 
743 typedef multi_index_container<
744  boost::shared_ptr<NumeredDofEntity>,
745  indexed_by<hashed_unique<const_mem_fun<NumeredDofEntity, DofIdx,
748 
749 typedef multi_index_container<
750  boost::shared_ptr<NumeredDofEntity>,
751  indexed_by<ordered_non_unique<const_mem_fun<
754 
755 typedef multi_index_container<
756  boost::shared_ptr<NumeredDofEntity>,
757  indexed_by<ordered_non_unique<const_mem_fun<
760 
761 typedef multi_index_container<
762  boost::shared_ptr<NumeredDofEntity>,
763  indexed_by<ordered_non_unique<const_mem_fun<
767 
768 /**
769  * Activate or deactivate dofs (multi-index modifier)
770  * \ingroup dof_multi_indices
771  */
773  bool aCtive;
774  DofEntity_active_change(bool active);
775  void operator()(boost::shared_ptr<DofEntity> &dof);
776 };
777 
778 /**
779  * Change part and global pestc index (multi-index modifier)
780  * \ingroup dof_multi_indices
781  */
783  unsigned int pArt;
785  NumeredDofEntity_part_change(const unsigned int part,
786  const DofIdx petsc_gloabl_dof_idx)
787  : pArt(part), petscGloablDofIdx(petsc_gloabl_dof_idx){};
788  inline void operator()(boost::shared_ptr<NumeredDofEntity> &dof) {
789  dof->pArt = pArt;
790  dof->petscGloablDofIdx = petscGloablDofIdx;
791  }
792 };
793 
794 /**
795  * Change part and local pestc index (multi-index modifier)
796  * \ingroup dof_multi_indices
797  */
800  NumeredDofEntity_local_idx_change(const DofIdx petsc_local_dof_idx)
801  : petscLocalDofIdx(petsc_local_dof_idx){};
802  inline void operator()(boost::shared_ptr<NumeredDofEntity> &dof) {
803  dof->petscLocalDofIdx = petscLocalDofIdx;
804  }
805 };
806 
807 /**
808  * Change part and mofem index (multi-index modifier)
809  * \ingroup dof_multi_indices
810  */
814  : mofemIdx(mofem_idx){};
815  inline void operator()(boost::shared_ptr<NumeredDofEntity> &dof) {
816  dof->dofIdx = mofemIdx;
817  }
818 };
819 
820 /**
821  * Change part and mofem/pestc global and local index (multi-index modifier)
822  * \ingroup dof_multi_indices
823  */
825  unsigned int pArt;
830  const unsigned int part, const DofIdx mofem_idx,
831  const DofIdx petsc_gloabl_dof_idx, const DofIdx petsc_local_dof_idx)
832  : pArt(part), mofemIdx(mofem_idx),
833  petscGloablDofIdx(petsc_gloabl_dof_idx),
834  petscLocalDofIdx(petsc_local_dof_idx){};
835  inline void operator()(boost::shared_ptr<NumeredDofEntity> &dof) {
836  dof->pArt = pArt;
837  dof->dofIdx = mofemIdx;
838  dof->petscGloablDofIdx = petscGloablDofIdx;
839  dof->petscLocalDofIdx = petscLocalDofIdx;
840  }
841 };
842 
843 /**
844  * Replace dofs shared_ptr
845  *
846  * DOFs on entities are stored by sequences. If DOFs to entities are added,
847  * whole entity sequence is change to preserve continuity in memory
848  *
849  * \ingroup dof_multi_indices
850  */
851 template <class T> struct Dof_shared_ptr_change {
852  boost::shared_ptr<T> &dofPtr;
853  Dof_shared_ptr_change(boost::shared_ptr<T> &dof_ptr) : dofPtr(dof_ptr){};
854  inline void operator()(boost::shared_ptr<T> &dof) { dof = dofPtr; }
855 };
856 
857 } // namespace MoFEM
858 #endif // __DOFSMULTIINDICES_HPP__
859 
860 /***************************************************************************/ /**
861  * \defgroup dof_multi_indices Dofs structures and multi-indices
862  * \ingroup mofem
863 ******************************************************************************/
int ShortId
Unique Id in the field.
Definition: Common.hpp:137
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_unique< const_mem_fun< NumeredDofEntity::interface_type_DofEntity, const UId, &NumeredDofEntity::getGlobalUniqueId > > > > NumeredDofEntity_multiIndex_uid_view_ordered
NumeredDofEntity_multiIndex::index< FieldName_mi_tag >::type NumeredDofEntityByFieldName
Numbered DoF multi-index by field name.
interface_RefEntity< NumeredDofEntity > interface_type_RefEntity
int FieldCoefficientsNumber
Number of field coefficients.
Definition: Common.hpp:132
interface_Field< NumeredDofEntity > interface_type_Field
UId getEntGlobalUniqueId() const
DofIdx getPetscLocalDofIdx() const
boost::shared_ptr< FieldEntity > sPtr
keeps information about indexed dofs for the finite element
std::vector< ApproximationOrder > & getDofOrderMap() const
get hash-map relating dof index on entity with its order
friend std::ostream & operator<<(std::ostream &os, const NumeredDofEntity &e)
keeps basic information about indexed dofs for the finite element
DofIdx getEntDofIdx() const
DofIdx getPetscGlobalDofIdx() const
interface_Field< DofEntity > interface_type_Field
FENumeredDofEntity(const boost::shared_ptr< SideNumber > &side_number_ptr, const boost::shared_ptr< NumeredDofEntity > &dof_ptr)
multi_index_container< boost::shared_ptr< FEDofEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< FEDofEntity::interface_type_DofEntity, const UId, &FEDofEntity::getGlobalUniqueId > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< FEDofEntity::interface_type_DofEntity, EntityHandle, &FEDofEntity::getEnt > >, ordered_non_unique< tag< FieldName_mi_tag >, const_mem_fun< FEDofEntity::interface_type_Field, boost::string_ref, &FEDofEntity::getNameRef > >, ordered_non_unique< tag< EntType_mi_tag >, const_mem_fun< FEDofEntity::interface_type_RefEntity, EntityType, &FEDofEntity::getEntType > >, ordered_non_unique< tag< Composite_Name_And_Type_mi_tag >, composite_key< FEDofEntity, const_mem_fun< FEDofEntity::interface_type_Field, boost::string_ref, &FEDofEntity::getNameRef >, const_mem_fun< FEDofEntity::interface_type_RefEntity, EntityType, &FEDofEntity::getEntType > > >, ordered_non_unique< tag< Composite_Name_And_Ent_mi_tag >, composite_key< FEDofEntity, const_mem_fun< FEDofEntity::interface_type_Field, boost::string_ref, &FEDofEntity::getNameRef >, const_mem_fun< FEDofEntity::interface_type_DofEntity, EntityHandle, &FEDofEntity::getEnt > > >, ordered_non_unique< tag< Composite_Name_Type_And_Side_Number_mi_tag >, composite_key< FEDofEntity, const_mem_fun< FEDofEntity::interface_type_Field, boost::string_ref, &FEDofEntity::getNameRef >, const_mem_fun< FEDofEntity::interface_type_RefEntity, EntityType, &FEDofEntity::getEntType >, KeyFromKey< member< SideNumber, char, &SideNumber::side_number >, member< FEDofEntity::BaseFEDofEntity, boost::shared_ptr< SideNumber >, &FEDofEntity::sideNumberPtr > > > >, ordered_non_unique< tag< Composite_EntType_and_Space_mi_tag >, composite_key< FEDofEntity, const_mem_fun< FEDofEntity::interface_type_RefEntity, EntityType, &FEDofEntity::getEntType >, const_mem_fun< FEDofEntity::interface_type_Field, FieldSpace, &FEDofEntity::getSpace > > > > > FEDofEntity_multiIndex
MultiIndex container keeps FEDofEntity.
interface_NumeredDofEntity(const boost::shared_ptr< T > &sptr)
DofEntity_multiIndex::index< Ent_mi_tag >::type DofEntityByEnt
Dof multi-index by entity.
NumeredDofEntity_multiIndex::index< Ent_mi_tag >::type NumeredDofEntityByEnt
Numbered DoF multi-index by entity.
#define DOF_UID_MASK_ON_ENTITY
Mask for DOF number on entity form UId.
Definition: definitions.h:296
boost::shared_ptr< DofEntity > & getDofEntityPtr() const
FENumeredDofEntity_multiIndex::index< FieldName_mi_tag >::type FENumeredDofEntityByFieldName
Finite element numbered DoF multi-index by field name.
DofEntity(const boost::shared_ptr< FieldEntity > &entity_ptr, const ApproximationOrder dof_order, const FieldCoefficientsNumber dof_rank, const DofIdx dof, const bool is_active=false)
ShortId getNonNonuniqueShortId() const
get short uid it is unique in combination with entity handle
boost::shared_ptr< NumeredDofEntity > & getNumeredDofEntityPtr() const
FieldCoefficientsNumber getDofCoeffIdx() const
FieldData & getFieldData() const
keeps information about DOF on the entity
static ShortId getNonNonuniqueShortId(const DofIdx dof, const boost::shared_ptr< FieldEntity > &ent_ptr)
DofEntity_multiIndex::index< Composite_Name_And_Type_mi_tag >::type DofEntityByNameAndType
Dof multi-index by field name and entity type.
NumeredDofEntity_multiIndex::index< Composite_Name_Ent_And_Part_mi_tag >::type NumeredDofEntityByNameEntAndPart
Numbered DoF multi-index by name entity and partition.
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< hashed_unique< const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getDofIdx > > > > NumeredDofEntity_multiIndex_idx_view_hashed
Interface to FieldEntityinterface to FieldEntity.
FENumeredDofEntity_multiIndex::index< Composite_Name_And_Ent_mi_tag >::type FENumeredDofEntityByNameAndEnt
Dof entity multi-index by field name and entity.
interface_DofEntity(const boost::shared_ptr< T > &sptr)
NumeredDofEntity_local_idx_change(const DofIdx petsc_local_dof_idx)
FieldCoefficientsNumber getNbOfCoeffs() const
static UId getGlobalUniqueIdCalculate_Hi_Proc(const int owner_proc)
EntityHandle getEnt() const
NumeredDofEntity_multiIndex::index< PetscLocalIdx_mi_tag >::type NumeredDofEntityByLocalIdx
Numbered DoF multi-index by local index.
void operator()(boost::shared_ptr< T > &dof)
FENumeredDofEntity_multiIndex::index< Unique_mi_tag >::type FENumeredDofEntityByUId
Dof entity multi-index by UId.
interface to NumeredDofEntity
interface_NumeredDofEntity< NumeredDofEntity > interface_type_NumeredDofEntity
friend std::ostream & operator<<(std::ostream &os, const FEDofEntity &e)
FieldData & getFieldData() const
uint128_t UId
Unique Id.
Definition: Common.hpp:136
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:21
void operator()(boost::shared_ptr< NumeredDofEntity > &dof)
BaseFEDofEntity(const boost::shared_ptr< SideNumber > &side_number_ptr)
keeps information about indexed dofs for the finite element
FEDofEntity_multiIndex::index< FieldName_mi_tag >::type FEDofEntityByFieldName
Finite element DoF multi-index by field name.
multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< const_mem_fun< DofEntity, UId, &DofEntity::getGlobalUniqueId > > > > DofEntity_multiIndex_uid_view
multi-index view on DofEntity by uid
interface_Field< FieldEntity > interface_type_Field
multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< DofEntity, UId, &DofEntity::getGlobalUniqueId > >, ordered_non_unique< tag< Composite_Ent_and_ShortId_mi_tag >, composite_key< DofEntity, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt >, const_mem_fun< DofEntity, ShortId, &DofEntity::getNonNonuniqueShortId > > >, ordered_non_unique< tag< Composite_Name_And_Ent_And_EntDofIdx_mi_tag >, composite_key< DofEntity, const_mem_fun< DofEntity::interface_type_Field, boost::string_ref, &DofEntity::getNameRef >, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt >, const_mem_fun< DofEntity, DofIdx, &DofEntity::getEntDofIdx > > >, ordered_non_unique< tag< Unique_Ent_mi_tag >, const_mem_fun< DofEntity, UId, &DofEntity::getEntGlobalUniqueId > >, ordered_non_unique< tag< FieldName_mi_tag >, const_mem_fun< DofEntity::interface_type_Field, boost::string_ref, &DofEntity::getNameRef > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt > >, ordered_non_unique< tag< Composite_Name_And_Ent_mi_tag >, composite_key< DofEntity, const_mem_fun< DofEntity::interface_type_Field, boost::string_ref, &DofEntity::getNameRef >, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt > > >, ordered_non_unique< tag< Composite_Name_And_Type_mi_tag >, composite_key< DofEntity, const_mem_fun< DofEntity::interface_type_Field, boost::string_ref, &DofEntity::getNameRef >, const_mem_fun< DofEntity::interface_type_RefEntity, EntityType, &DofEntity::getEntType > > >, ordered_non_unique< tag< Composite_Name_Ent_Order_And_CoeffIdx_mi_tag >, composite_key< DofEntity, const_mem_fun< DofEntity::interface_type_Field, boost::string_ref, &DofEntity::getNameRef >, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt >, const_mem_fun< DofEntity, ApproximationOrder, &DofEntity::getDofOrder >, const_mem_fun< DofEntity, FieldCoefficientsNumber, &DofEntity::getDofCoeffIdx > > > > > DofEntity_multiIndex
MultiIndex container keeps DofEntity.
interface_FieldEntity< FieldEntity > interface_type_FieldEntity
char getActive() const
NumeredDofEntity_part_change(const unsigned int part, const DofIdx petsc_gloabl_dof_idx)
friend std::ostream & operator<<(std::ostream &os, const FENumeredDofEntity &e)
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, const UId, &NumeredDofEntity::getGlobalUniqueId > >, ordered_non_unique< tag< Composite_Name_And_Ent_And_EntDofIdx_mi_tag >, composite_key< NumeredDofEntity, const_mem_fun< NumeredDofEntity::interface_type_Field, boost::string_ref, &NumeredDofEntity::getNameRef >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, EntityHandle, &NumeredDofEntity::getEnt >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, DofIdx, &NumeredDofEntity::getEntDofIdx > > >, ordered_non_unique< tag< Idx_mi_tag >, member< NumeredDofEntity, DofIdx, &NumeredDofEntity::dofIdx > >, ordered_non_unique< tag< FieldName_mi_tag >, const_mem_fun< NumeredDofEntity::interface_type_Field, boost::string_ref, &NumeredDofEntity::getNameRef > >, ordered_non_unique< tag< PetscGlobalIdx_mi_tag >, member< NumeredDofEntity, DofIdx, &NumeredDofEntity::petscGloablDofIdx > >, ordered_non_unique< tag< PetscLocalIdx_mi_tag >, member< NumeredDofEntity, DofIdx, &NumeredDofEntity::petscLocalDofIdx > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, EntityHandle, &NumeredDofEntity::getEnt > >, ordered_non_unique< tag< Order_mi_tag >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, ApproximationOrder, &NumeredDofEntity::getDofOrder > >, ordered_non_unique< tag< Composite_Part_And_Order_mi_tag >, composite_key< NumeredDofEntity, member< NumeredDofEntity, unsigned int, &NumeredDofEntity::pArt >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, ApproximationOrder, &NumeredDofEntity::getDofOrder > > >, ordered_non_unique< tag< Composite_Name_And_Part_mi_tag >, composite_key< NumeredDofEntity, const_mem_fun< NumeredDofEntity::interface_type_Field, boost::string_ref, &NumeredDofEntity::getNameRef >, member< NumeredDofEntity, unsigned int, &NumeredDofEntity::pArt > > >, ordered_non_unique< tag< Composite_Name_Ent_And_Part_mi_tag >, composite_key< NumeredDofEntity, const_mem_fun< NumeredDofEntity::interface_type_Field, boost::string_ref, &NumeredDofEntity::getNameRef >, const_mem_fun< NumeredDofEntity::interface_type_DofEntity, EntityHandle, &NumeredDofEntity::getEnt >, member< NumeredDofEntity, unsigned int, &NumeredDofEntity::pArt > > > > > NumeredDofEntity_multiIndex
MultiIndex container keeps NumeredDofEntity.
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_non_unique< const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getPetscLocalDofIdx > > > > NumeredDofEntity_multiIndex_petsc_local_dof_view_ordered_non_unique
EntityHandle getEnt() const
void operator()(boost::shared_ptr< NumeredDofEntity > &dof)
ShortId getNonNonuniqueShortId() const
unsigned int getPart() const
interface_FieldEntity< DofEntity > interface_type_FieldEntity
boost::shared_ptr< SideNumber > sideNumberPtr
#define BITFIELDID_SIZE
max number of fields
Definition: definitions.h:277
DofEntity_multiIndex::index< FieldName_mi_tag >::type DofEntityByFieldName
Dof multi-index by field name.
boost::shared_ptr< FieldEntity > & getFieldEntityPtr() const
NumeredDofEntity_mofem_part_and_all_index_change(const unsigned int part, const DofIdx mofem_idx, const DofIdx petsc_gloabl_dof_idx, const DofIdx petsc_local_dof_idx)
Dof_shared_ptr_change(boost::shared_ptr< T > &dof_ptr)
NumeredDofEntity_mofem_index_change(const DofIdx mofem_idx)
FENumeredDofEntity_multiIndex::index< Composite_Name_And_Type_mi_tag >::type FENumeredDofEntityByNameAndType
Dof entity multi-index by field name and entity type.
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_non_unique< const_mem_fun< NumeredDofEntity, DofIdx, &NumeredDofEntity::getPetscGlobalDofIdx > > > > NumeredDofEntity_multiIndex_petsc_global_dof_view_ordered_non_unique
static UId getGlobalUniqueIdCalculate(const DofIdx dof, const UId &ent_uid)
boost::shared_ptr< T > & dofPtr
FieldSpace
approximation spaces
Definition: definitions.h:165
FEDofEntity_multiIndex::index< Composite_Name_And_Ent_mi_tag >::type FEDofEntityByNameAndEnt
Dof entity multi-index by field name and entity.
boost::shared_ptr< FieldEntity > & getFieldEntityPtr() const
interface_DofEntity< NumeredDofEntity > interface_type_DofEntity
friend std::ostream & operator<<(std::ostream &os, const DofEntity &e)
void operator()(boost::shared_ptr< NumeredDofEntity > &dof)
bool active
true if dof is active
int ApproximationOrder
Approximation on the entity.
Definition: Common.hpp:131
multi_index_container< boost::shared_ptr< NumeredDofEntity >, indexed_by< ordered_non_unique< const_mem_fun< NumeredDofEntity::interface_type_DofEntity, FieldCoefficientsNumber, &NumeredDofEntity::getDofCoeffIdx > > > > NumeredDofEntity_multiIndex_coeff_idx_ordered_non_unique
FENumeredDofEntity_multiIndex::index< Ent_mi_tag >::type FENumeredDofEntityByEnt
Numbered DoF multi-index by entity.
ApproximationOrder getDofOrder() const
ApproximationOrder getDofOrder() const
void operator()(boost::shared_ptr< DofEntity > &dof)
void operator()(boost::shared_ptr< NumeredDofEntity > &dof)
interface_DofEntity< DofEntity > interface_type_DofEntity
keeps information about indexed dofs for the problemFIXME: Is too many iterator, this has to be manag...
interface_RefEntity< FieldEntity > interface_type_RefEntity
static UId getGlobalUniqueIdCalculate(const DofIdx dof, const boost::shared_ptr< FieldEntity > &ent_ptr)
Calculate UId for DOF.
interface_DofEntity< DofEntity > interface_type_DofEntity
Interface to DofEntity.
FieldCoefficientsNumber getDofCoeffIdx() const
FEDofEntity(const boost::shared_ptr< SideNumber > &side_number_ptr, const boost::shared_ptr< DofEntity > &dof_ptr)
UId getGlobalUniqueId() const
FEDofEntity_multiIndex::index< Composite_Name_And_Type_mi_tag >::type FEDofEntityByNameAndType
Dof entity multi-index by field name and entity type.
int DofIdx
Index of DOF.
Definition: Common.hpp:126
NumeredDofEntity_multiIndex::index< Unique_mi_tag >::type NumeredDofEntityByUId
Numbered DoF multi-index by UId.
multi_index_container< boost::shared_ptr< FENumeredDofEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< FENumeredDofEntity::interface_type_DofEntity, const UId, &FENumeredDofEntity::getGlobalUniqueId > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< FENumeredDofEntity::interface_type_DofEntity, EntityHandle, &FENumeredDofEntity::getEnt > >, ordered_non_unique< tag< FieldName_mi_tag >, const_mem_fun< FENumeredDofEntity::interface_type_Field, boost::string_ref, &FENumeredDofEntity::getNameRef > >, ordered_non_unique< tag< PetscGlobalIdx_mi_tag >, const_mem_fun< FENumeredDofEntity::interface_type_NumeredDofEntity, DofIdx, &FENumeredDofEntity::getPetscGlobalDofIdx > >, ordered_non_unique< tag< Composite_Name_Type_And_Side_Number_mi_tag >, composite_key< FENumeredDofEntity, const_mem_fun< FENumeredDofEntity::interface_type_Field, boost::string_ref, &FENumeredDofEntity::getNameRef >, const_mem_fun< FENumeredDofEntity::interface_type_RefEntity, EntityType, &FENumeredDofEntity::getEntType >, KeyFromKey< member< SideNumber, char, &SideNumber::side_number >, member< FENumeredDofEntity::BaseFEDofEntity, boost::shared_ptr< SideNumber >, &FENumeredDofEntity::sideNumberPtr > > > >, ordered_non_unique< tag< Composite_Name_And_Type_mi_tag >, composite_key< FENumeredDofEntity, const_mem_fun< FENumeredDofEntity::interface_type_Field, boost::string_ref, &FENumeredDofEntity::getNameRef >, const_mem_fun< FENumeredDofEntity::interface_type_RefEntity, EntityType, &FENumeredDofEntity::getEntType > > >, ordered_non_unique< tag< Composite_Name_And_Ent_mi_tag >, composite_key< FENumeredDofEntity, const_mem_fun< FENumeredDofEntity::interface_type_Field, boost::string_ref, &FENumeredDofEntity::getNameRef >, const_mem_fun< FENumeredDofEntity::interface_type_DofEntity, EntityHandle, &FENumeredDofEntity::getEnt > > > > > FENumeredDofEntity_multiIndex
MultiIndex container keeps FENumeredDofEntity.
NumeredDofEntity(const boost::shared_ptr< DofEntity > &dof_entity_ptr, const int dof_idx=-1, const int petsc_gloabl_dof_idx=-1, const int petsc_local_dof_idx=-1, const int part=-1)
const UId getEntGlobalUniqueId() const
UId globalUId
global unique id for this dof
DofEntity_multiIndex::index< Composite_Name_And_Ent_mi_tag >::type DofEntityByNameAndEnt
Dof multi-index by field name and entity.
interface_RefEntity< DofEntity > interface_type_RefEntity
static UId getGlobalUniqueIdCalculate_Low_Proc(const int owner_proc)
multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< const_mem_fun< DofEntity, UId, &DofEntity::getGlobalUniqueId > >, ordered_non_unique< const_mem_fun< DofEntity, char, &DofEntity::getActive > > > > DofEntity_multiIndex_active_view
multi-index view on DofEntity activity
interface_Field< DofEntity > interface_type_Field
const UId getGlobalUniqueId() const