v0.14.0
FieldMultiIndices.hpp
Go to the documentation of this file.
1 /** \file FieldMultiIndices.hpp
2  * \brief Field data structure storing information about space, approximation
3  * base, coordinate systems, etc.
4  *
5  * Also, it stores data needed for book keeping, like tags to data on the
6  * mesh.
7  *
8  * Each filed has unique ID and name. This data structure is shared between
9  * entities on which is spanning and DOFs on those entities.
10  */
11 
12 
13 
14 #ifndef __FIELDMULTIINDICES_HPP__
15 #define __FIELDMULTIINDICES_HPP__
16 
17 namespace MoFEM {
18 
19 template <typename T> struct interface_RefEntity;
20 struct DofEntity;
21 
22 /** \brief user adjacency function
23  * \ingroup fe_multi_indices
24  */
25 typedef boost::function<int(const int order)> FieldOrderFunct;
26 
27 /** \brief user adjacency function table
28  * \ingroup dof_multi_indices
29  */
30 typedef FieldOrderFunct FieldOrderTable[MBMAXTYPE];
31 
32 /**
33  * \brief Provide data structure for (tensor) field approximation.
34  * \ingroup dof_multi_indices
35  *
36  * The Field is intended to provide support for fields, with a strong bias
37  * towards supporting first and best the capabilities required for scientific
38  * computing applications. Since we work with discrete spaces, data structure
39  * has to carry information about type of approximation space, its regularity.
40  *
41  *
42  * Field data structure storing information about space, approximation base,
43  * coordinate systems, etc. It stores additional data needed for book keeping,
44  * like tags to data on the mesh.
45  *
46  * Each filed has unique ID and name. This
47  * data structure is shared between entities on which is spanning and DOFs on
48  * those entities.
49  *
50  */
51 struct Field {
52 
53  /**
54  * \brief constructor for moab field
55  *
56  * \param meshset which keeps entities for this field
57  */
58  Field(moab::Interface &moab, const EntityHandle meshset);
59 
60  virtual ~Field() = default;
61 
62  using SequenceDofContainer = multi_index_container<
63 
64  boost::weak_ptr<std::vector<DofEntity>>,
65 
66  indexed_by<sequenced<>>>;
67 
68  typedef std::array<std::array<int, MAX_DOFS_ON_ENTITY>, MBMAXTYPE>
70 
72 
73  EntityHandle meshSet; ///< keeps entities for this meshset
74 
75  TagType tagFieldDataVertsType; // Tag type for storing data on vertices
76  Tag th_FieldDataVerts; ///< Tag storing field values on vertices in the field
77  Tag th_FieldData; ///< Tag storing field values on entity in the field
78  Tag th_AppOrder; ///< Tag storing approximation order on entity
79  Tag th_FieldRank; /// Tag field rank
80 
81  BitFieldId *tagId; ///< tag keeps field id
82  FieldSpace *tagSpaceData; ///< tag keeps field space
83  FieldContinuity *tagFieldContinuityData; ///< tag keeps field continuity
84  FieldApproximationBase *tagBaseData; ///< tag keeps field base
85 
86  /// tag keeps field rank (dimension, f.e. Temperature field has rank 1,
87  /// displacements field in 3d has rank 3)
89  const void *tagName; ///< tag keeps name of the field
90  int tagNameSize; ///< number of bits necessary to keep field name
91  const void *tagNamePrefixData; ///< tag keeps name prefix of the field
92  int tagNamePrefixSize; ///< number of bits necessary to keep field name
93  ///< prefix
94  FieldOrderTable forderTable; ///< nb. DOFs table for entities
95 
96  /**
97  * @brief Get the Field Order Table
98  *
99  * @return FieldOrderTable&
100  */
102 
103  /**
104  * Field Id is bit set. Each field has only one bit on, bitNumber stores
105  * number of set bit
106  */
107  unsigned int bitNumber;
108 
109  /**
110  * \brief Get field meshset
111  *
112 
113  * To meshsets entity are attached Tags which keeps basic information about
114  * field. Those information is field name, approximation base, approximation
115  * space, id, etc.
116 
117  * In meshset contains entities on which given filed is sparing. Type of
118  entities
119  * depended on approximations space.
120 
121  * @return EntityHandle
122  */
123  inline EntityHandle getMeshset() const { return meshSet; }
124 
125  /**
126  * \brief Get unique field id.
127  * @return Filed ID
128  */
129  inline const BitFieldId &getId() const { return *((BitFieldId *)tagId); }
130 
131  /**
132  * \brief Get string reference to field name
133  * @return Field name
134  */
135  inline boost::string_ref getNameRef() const {
136  return boost::string_ref((char *)tagName, tagNameSize);
137  }
138 
139  /**
140  * \brief Get field name
141  * @return Field name
142  */
143  inline std::string getName() const {
144  return std::string((char *)tagName, tagNameSize);
145  }
146 
147  /**
148  * \brief Get field approximation space
149  * @return approximation space
150  */
151  inline FieldSpace getSpace() const { return *tagSpaceData; }
152 
153  /**
154  * \brief Get field approximation space
155  * @return approximation space name
156  */
157  inline auto getSpaceName() const {
158  return std::string(FieldSpaceNames[getSpace()]);
159  }
160 
161  /** \brief Get field space continuity */
163  return *tagFieldContinuityData;
164  }
165 
166  /**
167  * @brief Get field space continuity name
168  *
169  */
170  inline auto getContinuityName() const {
171  return std::string(FieldContinuityNames[getContinuity()]);
172  }
173 
174  /**
175  * \brief Get approximation base
176  * @return Approximation base
177  */
179 
180  /**
181  * \brief Get approximation base
182  * @return Approximation base name
183  */
184  inline auto getApproxBaseName() const {
185  return std::string(ApproximationBaseNames[getApproxBase()]);
186  }
187 
188  /** \brief Get number of field coefficients
189  *
190 
191  * Scalar field has only one coefficient, vector field in 3D has three. In
192  * general number determine space needed to keep data on entities. What
193  coefficient
194  * means depend on interpretation and associated coordinate system. For
195  example
196  * 3 coefficient means could be covariant or contravariant, or mean three
197  temperatures
198  * for mixture of solid, air and water, etc.
199 
200 
201  */
203  return *tagNbCoeffData;
204  };
205 
206  /**
207  * \brief Get number of set bit in Field ID.
208  * Each field has uid, get getBitNumber get number of bit set for given field.
209  * Field ID has only one bit set for each field.
210  */
211  inline FieldBitNumber getBitNumber() const { return bitNumber; }
212 
213  /**
214  * \brief Calculate number of set bit in Field ID.
215  * Each field has uid, get getBitNumber get number of bit set for given field.
216  * Field ID has only one bit set for each field.
217  */
219  static_assert(BITFIELDID_SIZE >= 32,
220  "Too many fields allowed, can be more but ...");
221  FieldBitNumber b = ffsl(id.to_ulong());
222  if (b != 0)
223  return b;
224  return 0;
225  }
226 
227  /**
228  * \brief Calculate number of set bit in Field ID.
229  * Each field has uid, get getBitNumber get number of bit set for given field.
230  * Field ID has only one bit set for each field.
231  */
233  return getBitNumberCalculate(static_cast<BitFieldId &>(*tagId));
234  }
235 
236  /**
237  * \brief Get reference to sequence data container
238  *
239  * In sequence data container data are physically stored. The purpose of this
240  * is to allocate DofEntity data in bulk, having only one allocation instead
241  * each time entity is inserted. That makes code efficient.
242  *
243  * The vector in sequence is destroyed if last entity inside that vector is
244  * destroyed. All MoFEM::MoFEMEntities have aliased shared_ptr which points to
245  the vector.
246 
247  * Not all DOFs are stored in this way, currently such cases are considered;
248  * - DOFs on vertices. That is exploited that for H1 space, there is some
249  * fixed number of DOFs on each vertex
250 
251  * For other cases, DOFs are stored locally in each MoFEM::MoFEMEntities.
252 
253  * @return MoFEM::Field::SequenceDofContainer
254  */
256  return sequenceDofContainer;
257  }
258 
259  /**
260  * \brief get hash-map relating dof index on entity with its order
261  *
262  * Dofs of given field are indexed on entity
263  * of the same type, same space, approximation base and number of
264  * coefficients, are sorted in the way.
265  *
266  */
267  inline const std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
268  getDofOrderMap(const EntityType type) const {
269  return dofOrderMap[type];
270  }
271 
272  /**
273  * \brief get hash-map relating dof index on entity with its order
274  *
275  * Dofs of given field are indexed on entity
276  * of the same type, same space, approximation base and number of
277  * coefficients, are sorted in the way.
278  *
279  */
280  inline const DofsOrderMap &getDofOrderMap() const { return dofOrderMap; }
281 
283 
284  friend std::ostream &operator<<(std::ostream &os, const Field &e);
285 
286  inline const Field *getFieldRawPtr() const { return this; };
287 
288 private:
291 };
292 
293 /**
294  * \brief Pointer interface for MoFEM::Field
295  *
296  * MoFEM::Field class is keeps data and methods. This class is interface to
297  * that class, and all other classes, like MoFEMEntities, DofEntity and
298  * derived form them inherits pointer interface, not MoFEM::Field class
299  * directly.
300  *
301  * \ingroup dof_multi_indices
302  */
303 template <typename FIELD, typename REFENT>
304 struct interface_FieldImpl : public interface_RefEntity<REFENT> {
305 
307 
308  interface_FieldImpl(const boost::shared_ptr<FIELD> &field_ptr,
309  const boost::shared_ptr<REFENT> &ref_ents_ptr)
310  : interface_RefEntity<REFENT>(ref_ents_ptr) {}
311  virtual ~interface_FieldImpl() = default;
312 };
313 
314 template <typename FIELD, typename REFENT>
315 struct interface_Field : public interface_FieldImpl<FIELD, REFENT> {
316 
317  interface_Field(const boost::shared_ptr<FIELD> &field_ptr,
318  const boost::shared_ptr<REFENT> &ref_ents_ptr)
319  : interface_FieldImpl<FIELD, REFENT>(field_ptr, ref_ents_ptr),
320  sFieldPtr(field_ptr) {}
321 
322  inline EntityHandle getMeshset() const {
323  return getFieldRawPtr()->getMeshset();
324  }
325 
326  inline int getCoordSysDim(const int d = 0) const {
327  return getFieldRawPtr()->getCoordSysDim(d);
328  }
329 
330  /// @return get field Id
331  inline const BitFieldId &getId() const {
332  return getFieldRawPtr()->getId();
333  }
334 
335  /// @return get field name
336  inline boost::string_ref getNameRef() const {
337  return getFieldRawPtr()->getNameRef();
338  }
339 
340  /// @return get field name
341  inline std::string getName() const {
342  return getFieldRawPtr()->getName();
343  }
344 
345  /// @return get approximation space
346  inline FieldSpace getSpace() const {
347  return getFieldRawPtr()->getSpace();
348  }
349 
350  /// @return get approximation base
352  return getFieldRawPtr()->getApproxBase();
353  }
354 
355  /// @return get space continuity
357  return getFieldRawPtr()->getContinuity();
358  }
359 
360  /// @return get space continuity name
361  inline auto getContinuityName() const {
362  return getFieldRawPtr()->getContinuityName();
363  }
364 
365  /// @return get number of coefficients for DOF
367  return getFieldRawPtr()->getNbOfCoeffs();
368  }
369 
370  /// @return get bit number if filed Id
371  inline FieldBitNumber getBitNumber() const {
372  return getFieldRawPtr()->getBitNumber();
373  }
374 
375  /**
376  * \brief get hash-map relating dof index on entity with its order
377  *
378  * Dofs of given field are indexed on entity
379  * of the same type, same space, approximation base and number of
380  * coefficients, are sorted in the way.
381  *
382  */
383  inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
384  getDofOrderMap(const EntityType type) const {
386  }
387 
388  inline const Field *getFieldRawPtr() const {
389  return sFieldPtr->getFieldRawPtr();
390  };
391 
393  return sFieldPtr->getFieldOrderTable();
394  };
395 
396 private:
397  mutable boost::shared_ptr<FIELD> sFieldPtr;
398 };
399 
400 template <typename T>
401 struct interface_Field<T, T> : public interface_FieldImpl<T, T> {
402  interface_Field(const boost::shared_ptr<T> &ptr)
403  : interface_FieldImpl<T, T>(ptr, ptr) {}
404 
406 
407  inline EntityHandle getMeshset() const {
408  return getFieldRawPtr()->getMeshset();
409  }
410 
411  /// @return get field Id
412  inline const BitFieldId &getId() const {
413  return getFieldRawPtr()->getId();
414  }
415 
416  /// @return get field name
417  inline boost::string_ref getNameRef() const {
418  return getFieldRawPtr()->getNameRef();
419  }
420 
421  /// @return get field name
422  inline std::string getName() const {
423  return getFieldRawPtr()->getName();
424  }
425 
426  /// @return get approximation space
427  inline FieldSpace getSpace() const {
428  return getFieldRawPtr()->getSpace();
429  }
430 
431  /// @return get approximation base
432  inline auto getSpaceName() const { return getFieldRawPtr()->getSpaceName(); }
433 
434  /// @return get approximation base
436  return getFieldRawPtr()->getApproxBase();
437  }
438 
439  /// @return get approximation base
440  inline auto getApproxBaseName() const {
441  return getFieldRawPtr()->getApproxBaseName();
442  }
443 
444  /// @return get number of coefficients for DOF
446  return getFieldRawPtr()->getNbOfCoeffs();
447  }
448 
449  /// @return get bit number if filed Id
450  inline FieldBitNumber getBitNumber() const {
451  return getFieldRawPtr()->getBitNumber();
452  }
453 
454  /**
455  * \brief get hash-map relating dof index on entity with its order
456  *
457  * Dofs of given field are indexed on entity
458  * of the same type, same space, approximation base and number of
459  * coefficients, are sorted in the way.
460  *
461  */
462  inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
463  getDofOrderMap(const EntityType type) const {
465  }
466 
467  inline const Field *getFieldRawPtr() const {
468  return boost::static_pointer_cast<T>(this->getRefEntityPtr())
469  ->getFieldRawPtr();
470  };
471 };
472 
473 /**
474  * @relates multi_index_container
475  * \brief Field_multiIndex for Field
476  *
477  */
478 typedef multi_index_container<
479  boost::shared_ptr<Field>,
480  indexed_by<
481  hashed_unique<tag<BitFieldId_mi_tag>,
482  const_mem_fun<Field, const BitFieldId &, &Field::getId>,
483  HashBit<BitFieldId>, EqBit<BitFieldId>>,
484  ordered_unique<tag<Meshset_mi_tag>,
485  member<Field, EntityHandle, &Field::meshSet>>,
486  ordered_unique<
487  tag<FieldName_mi_tag>,
488  const_mem_fun<Field, boost::string_ref, &Field::getNameRef>>,
489  ordered_non_unique<tag<BitFieldId_space_mi_tag>,
490  const_mem_fun<Field, FieldSpace, &Field::getSpace>>>>
492 
493 typedef multi_index_container<
494  boost::shared_ptr<Field>,
495  indexed_by<
496  ordered_unique<tag<BitFieldId_mi_tag>,
497  const_mem_fun<Field, const BitFieldId &, &Field::getId>,
498  LtBit<BitFieldId>>>>
500 
501 } // namespace MoFEM
502 
503 #endif // __FIELDMULTIINDICES_HPP__
MoFEM::Field::getSpaceName
auto getSpaceName() const
Get field approximation space.
Definition: FieldMultiIndices.hpp:157
MoFEM::Field::tagFieldDataVertsType
TagType tagFieldDataVertsType
Definition: FieldMultiIndices.hpp:75
MoFEM::Field::DofsOrderMap
std::array< std::array< int, MAX_DOFS_ON_ENTITY >, MBMAXTYPE > DofsOrderMap
Definition: FieldMultiIndices.hpp:69
MoFEM::interface_Field::getBitNumber
FieldBitNumber getBitNumber() const
Definition: FieldMultiIndices.hpp:371
MoFEM::Field::getNbOfCoeffs
FieldCoefficientsNumber getNbOfCoeffs() const
Get number of field coefficients.
Definition: FieldMultiIndices.hpp:202
MoFEM::interface_FieldImpl::~interface_FieldImpl
virtual ~interface_FieldImpl()=default
EntityHandle
MoFEM::Field::getDofOrderMap
const std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
Definition: FieldMultiIndices.hpp:268
MoFEM::Field::moab
moab::Interface & moab
Definition: FieldMultiIndices.hpp:71
MoFEM::Field::getContinuity
FieldContinuity getContinuity() const
Get field space continuity.
Definition: FieldMultiIndices.hpp:162
MoFEM::DofEntity
keeps information about DOF on the entity
Definition: DofsMultiIndices.hpp:16
MoFEM::Field::getMeshset
EntityHandle getMeshset() const
Get field meshset.
Definition: FieldMultiIndices.hpp:123
ApproximationBaseNames
const static char *const ApproximationBaseNames[]
Definition: definitions.h:72
MoFEM::Field::tagSpaceData
FieldSpace * tagSpaceData
tag keeps field space
Definition: FieldMultiIndices.hpp:82
MoFEM::Field::rebuildDofsOrderMap
MoFEMErrorCode rebuildDofsOrderMap()
Definition: FieldMultiIndices.cpp:489
MoFEM::Field::tagFieldContinuityData
FieldContinuity * tagFieldContinuityData
tag keeps field continuity
Definition: FieldMultiIndices.hpp:83
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MoFEM::Field::getSpace
FieldSpace getSpace() const
Get field approximation space.
Definition: FieldMultiIndices.hpp:151
MoFEM::interface_RefEntity< REFENT >::getRefEntityPtr
boost::shared_ptr< REFENT > & getRefEntityPtr() const
Definition: RefEntsMultiIndices.hpp:709
MoFEM::interface_Field< T, T >::getDofOrderMap
std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
Definition: FieldMultiIndices.hpp:463
MoFEM::Types::BitFieldId
std::bitset< BITFIELDID_SIZE > BitFieldId
Field Id.
Definition: Types.hpp:42
MoFEM::Field::getFieldOrderTable
FieldOrderTable & getFieldOrderTable()
Get the Field Order Table.
Definition: FieldMultiIndices.hpp:101
MoFEM::Field::th_FieldData
Tag th_FieldData
Tag storing field values on entity in the field.
Definition: FieldMultiIndices.hpp:77
MoFEM::FieldOrderTable
FieldOrderFunct FieldOrderTable[MBMAXTYPE]
user adjacency function table
Definition: FieldMultiIndices.hpp:30
MoFEM::Field::getName
std::string getName() const
Get field name.
Definition: FieldMultiIndices.hpp:143
MoFEM::Field::sequenceDofContainer
SequenceDofContainer sequenceDofContainer
Definition: FieldMultiIndices.hpp:286
MoFEM::interface_RefEntity
interface to RefEntity
Definition: FieldMultiIndices.hpp:19
MoFEM::interface_Field::getFieldOrderTable
FieldOrderTable & getFieldOrderTable()
Definition: FieldMultiIndices.hpp:392
MoFEM::interface_Field< T, T >::interface_Field
interface_Field(const boost::shared_ptr< T > &ptr)
Definition: FieldMultiIndices.hpp:402
MoFEM::interface_Field< T, T >::getNameRef
boost::string_ref getNameRef() const
Definition: FieldMultiIndices.hpp:417
MoFEM::Field::th_FieldRank
Tag th_FieldRank
Definition: FieldMultiIndices.hpp:79
MoFEM::Field::getApproxBaseName
auto getApproxBaseName() const
Get approximation base.
Definition: FieldMultiIndices.hpp:184
MoFEM::Field
Provide data structure for (tensor) field approximation.
Definition: FieldMultiIndices.hpp:51
order
constexpr int order
Definition: dg_projection.cpp:18
MoFEM::interface_Field< T, T >::getApproxBase
FieldApproximationBase getApproxBase() const
Definition: FieldMultiIndices.hpp:435
MoFEM::Field_multiIndex_view
multi_index_container< boost::shared_ptr< Field >, indexed_by< ordered_unique< tag< BitFieldId_mi_tag >, const_mem_fun< Field, const BitFieldId &, &Field::getId >, LtBit< BitFieldId > > > > Field_multiIndex_view
Definition: FieldMultiIndices.hpp:499
MoFEM::Interface
DeprecatedCoreInterface Interface
Definition: Interface.hpp:2002
MoFEM::Field::tagNamePrefixSize
int tagNamePrefixSize
Definition: FieldMultiIndices.hpp:92
FieldSpace
FieldSpace
approximation spaces
Definition: definitions.h:82
MoFEM::Field::tagNameSize
int tagNameSize
number of bits necessary to keep field name
Definition: FieldMultiIndices.hpp:90
MoFEM::Field::getId
const BitFieldId & getId() const
Get unique field id.
Definition: FieldMultiIndices.hpp:129
MoFEM::interface_Field< T, T >::getName
std::string getName() const
Definition: FieldMultiIndices.hpp:422
FieldContinuityNames
const static char *const FieldContinuityNames[]
Definition: definitions.h:105
MoFEM::Field::getDofOrderMap
const DofsOrderMap & getDofOrderMap() const
get hash-map relating dof index on entity with its order
Definition: FieldMultiIndices.hpp:280
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
MoFEM::interface_Field::getContinuity
FieldContinuity getContinuity() const
Definition: FieldMultiIndices.hpp:356
MoFEM::interface_Field< T, T >::getApproxBaseName
auto getApproxBaseName() const
Definition: FieldMultiIndices.hpp:440
BITFIELDID_SIZE
#define BITFIELDID_SIZE
max number of fields
Definition: definitions.h:233
MoFEM::Field::getNameRef
boost::string_ref getNameRef() const
Get string reference to field name.
Definition: FieldMultiIndices.hpp:135
MoFEM::interface_Field::getDofOrderMap
std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
Definition: FieldMultiIndices.hpp:384
MoFEM::interface_Field< T, T >::getFieldRawPtr
const Field * getFieldRawPtr() const
Definition: FieldMultiIndices.hpp:467
FieldContinuity
FieldContinuity
Field continuity.
Definition: definitions.h:99
MoFEM::Field::th_FieldDataVerts
Tag th_FieldDataVerts
Tag storing field values on vertices in the field.
Definition: FieldMultiIndices.hpp:76
MoFEM::Types::FieldCoefficientsNumber
int FieldCoefficientsNumber
Number of field coefficients.
Definition: Types.hpp:27
MoFEM::interface_FieldImpl
Pointer interface for MoFEM::Field.
Definition: FieldMultiIndices.hpp:304
convert.type
type
Definition: convert.py:64
MoFEM::Field::getFieldRawPtr
const Field * getFieldRawPtr() const
Definition: FieldMultiIndices.hpp:286
MoFEM::interface_Field::getNameRef
boost::string_ref getNameRef() const
Definition: FieldMultiIndices.hpp:336
MoFEM::Field::operator<<
friend std::ostream & operator<<(std::ostream &os, const Field &e)
Definition: FieldMultiIndices.cpp:526
MoFEM::Field::tagBaseData
FieldApproximationBase * tagBaseData
tag keeps field base
Definition: FieldMultiIndices.hpp:84
MoFEM::Field::getApproxBase
FieldApproximationBase getApproxBase() const
Get approximation base.
Definition: FieldMultiIndices.hpp:178
MoFEM::interface_Field< T, T >::getId
const BitFieldId & getId() const
Definition: FieldMultiIndices.hpp:412
MoFEM::Field::getContinuityName
auto getContinuityName() const
Get field space continuity name.
Definition: FieldMultiIndices.hpp:170
MoFEM::interface_Field::sFieldPtr
boost::shared_ptr< FIELD > sFieldPtr
Definition: FieldMultiIndices.hpp:394
MoFEM::Field::tagName
const void * tagName
tag keeps name of the field
Definition: FieldMultiIndices.hpp:89
MoFEM::interface_Field< T, T >::getNbOfCoeffs
FieldCoefficientsNumber getNbOfCoeffs() const
Definition: FieldMultiIndices.hpp:445
MoFEM::Field::SequenceDofContainer
multi_index_container< boost::weak_ptr< std::vector< DofEntity > >, indexed_by< sequenced<> >> SequenceDofContainer
Definition: FieldMultiIndices.hpp:66
MoFEM::Field::tagNbCoeffData
FieldCoefficientsNumber * tagNbCoeffData
Definition: FieldMultiIndices.hpp:88
MoFEM::interface_Field::getNbOfCoeffs
FieldCoefficientsNumber getNbOfCoeffs() const
Definition: FieldMultiIndices.hpp:366
MoFEM::interface_Field< T, T >::getSpace
FieldSpace getSpace() const
Definition: FieldMultiIndices.hpp:427
MoFEM::Field::dofOrderMap
DofsOrderMap dofOrderMap
Definition: FieldMultiIndices.hpp:290
MoFEM::Field::getBitNumberCalculate
static FieldBitNumber getBitNumberCalculate(const BitFieldId &id)
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set f...
Definition: FieldMultiIndices.hpp:218
MoFEM::FieldOrderFunct
boost::function< int(const int order)> FieldOrderFunct
user adjacency function
Definition: FieldMultiIndices.hpp:20
MoFEM::interface_Field< T, T >::getSpaceName
auto getSpaceName() const
Definition: FieldMultiIndices.hpp:432
FieldSpaceNames
const static char *const FieldSpaceNames[]
Definition: definitions.h:92
MoFEM::Field::th_AppOrder
Tag th_AppOrder
Tag storing approximation order on entity.
Definition: FieldMultiIndices.hpp:78
MoFEM::Field::Field
Field(moab::Interface &moab, const EntityHandle meshset)
constructor for moab field
Definition: FieldMultiIndices.cpp:15
MoFEM::Field::getBitNumber
FieldBitNumber getBitNumber() const
Get number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for giv...
Definition: FieldMultiIndices.hpp:211
MoFEM::interface_Field::getMeshset
EntityHandle getMeshset() const
Definition: FieldMultiIndices.hpp:322
MoFEM::Field::bitNumber
unsigned int bitNumber
Definition: FieldMultiIndices.hpp:107
Field_multiIndex
multi_index_container< boost::shared_ptr< Field >, indexed_by< hashed_unique< tag< BitFieldId_mi_tag >, const_mem_fun< Field, const BitFieldId &, &Field::getId >, HashBit< BitFieldId >, EqBit< BitFieldId > >, ordered_unique< tag< Meshset_mi_tag >, member< Field, EntityHandle, &Field::meshSet > >, ordered_unique< tag< FieldName_mi_tag >, const_mem_fun< Field, boost::string_ref, &Field::getNameRef > >, ordered_non_unique< tag< BitFieldId_space_mi_tag >, const_mem_fun< Field, FieldSpace, &Field::getSpace > > > > Field_multiIndex
Field_multiIndex for Field.
Definition: FieldMultiIndices.hpp:491
MoFEM::interface_FieldImpl::interface_FieldImpl
interface_FieldImpl(const boost::shared_ptr< FIELD > &field_ptr, const boost::shared_ptr< REFENT > &ref_ents_ptr)
Definition: FieldMultiIndices.hpp:308
MoFEM::Types::FieldBitNumber
char FieldBitNumber
Field bit number.
Definition: Types.hpp:28
MoFEM::interface_Field< T, T >::getMeshset
EntityHandle getMeshset() const
Definition: FieldMultiIndices.hpp:407
MoFEM::interface_Field::getApproxBase
FieldApproximationBase getApproxBase() const
Definition: FieldMultiIndices.hpp:351
sdf_hertz_2d_axisymm_plane.d
float d
Definition: sdf_hertz_2d_axisymm_plane.py:4
FieldApproximationBase
FieldApproximationBase
approximation base
Definition: definitions.h:58
MoFEM::Field::tagNamePrefixData
const void * tagNamePrefixData
tag keeps name prefix of the field
Definition: FieldMultiIndices.hpp:91
MoFEM::interface_Field::getSpace
FieldSpace getSpace() const
Definition: FieldMultiIndices.hpp:346
MoFEM::Field::getDofSequenceContainer
SequenceDofContainer & getDofSequenceContainer() const
Get reference to sequence data container.
Definition: FieldMultiIndices.hpp:255
MoFEM::interface_Field::getFieldRawPtr
const Field * getFieldRawPtr() const
Definition: FieldMultiIndices.hpp:388
MoFEM::interface_Field::getContinuityName
auto getContinuityName() const
Definition: FieldMultiIndices.hpp:361
MoFEM::Field::getBitNumberCalculate
FieldBitNumber getBitNumberCalculate() const
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set f...
Definition: FieldMultiIndices.hpp:232
MoFEM::interface_Field::getName
std::string getName() const
Definition: FieldMultiIndices.hpp:341
convert.int
int
Definition: convert.py:64
MoFEM::interface_Field< T, T >::getBitNumber
FieldBitNumber getBitNumber() const
Definition: FieldMultiIndices.hpp:450
MoFEM::Field::forderTable
FieldOrderTable forderTable
nb. DOFs table for entities
Definition: FieldMultiIndices.hpp:94
MoFEM::Field::meshSet
EntityHandle meshSet
keeps entities for this meshset
Definition: FieldMultiIndices.hpp:73
MoFEM::interface_Field::interface_Field
interface_Field(const boost::shared_ptr< FIELD > &field_ptr, const boost::shared_ptr< REFENT > &ref_ents_ptr)
Definition: FieldMultiIndices.hpp:317
MoFEM::interface_Field
Definition: FieldMultiIndices.hpp:315
MoFEM::interface_Field::getCoordSysDim
int getCoordSysDim(const int d=0) const
Definition: FieldMultiIndices.hpp:326
MoFEM::Field::~Field
virtual ~Field()=default
MoFEM::interface_Field::getId
const BitFieldId & getId() const
Definition: FieldMultiIndices.hpp:331
MoFEM::Field::tagId
BitFieldId * tagId
Tag field rank.
Definition: FieldMultiIndices.hpp:81