14#ifndef __FIELDMULTIINDICES_HPP__
15#define __FIELDMULTIINDICES_HPP__
19template <
typename T>
struct interface_RefEntity;
64 boost::weak_ptr<std::vector<DofEntity>>,
66 indexed_by<sequenced<>>>;
69 std::array<std::array<int, MAX_DOFS_ON_ENTITY>, MBMAXTYPE>;
220 "Too many fields allowed, can be more but ...");
267 inline const std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
318template <
typename FIELD,
typename REFENT>
324 const boost::shared_ptr<REFENT> &ref_ents_ptr)
329template <
typename FIELD,
typename REFENT>
333 const boost::shared_ptr<REFENT> &ref_ents_ptr)
398 inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
479 inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
495typedef multi_index_container<
496 boost::shared_ptr<Field>,
498 hashed_unique<tag<BitFieldId_mi_tag>,
499 const_mem_fun<Field, const BitFieldId &, &Field::getId>,
500 HashBit<BitFieldId>, EqBit<BitFieldId>>,
501 ordered_unique<tag<Meshset_mi_tag>,
502 member<Field, EntityHandle, &Field::meshSet>>,
504 tag<FieldName_mi_tag>,
505 const_mem_fun<Field, boost::string_ref, &Field::getNameRef>>,
506 ordered_non_unique<tag<BitFieldId_space_mi_tag>,
507 const_mem_fun<Field, FieldSpace, &Field::getSpace>>>>
510typedef multi_index_container<
511 boost::shared_ptr<Field>,
513 ordered_unique<tag<BitFieldId_mi_tag>,
514 const_mem_fun<Field, const BitFieldId &, &Field::getId>,
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.
FieldApproximationBase
approximation base
static const char *const FieldContinuityNames[]
FieldSpace
approximation spaces
FieldContinuity
Field continuity.
static const char *const FieldSpaceNames[]
#define BITFIELDID_SIZE
max number of fields
static const char *const ApproximationBaseNames[]
FieldOrderFunct FieldOrderTable[MBMAXTYPE]
user adjacency function table
boost::function< int(const int order)> FieldOrderFunct
user adjacency function
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
std::bitset< BITFIELDID_SIZE > BitFieldId
Field Id.
int FieldCoefficientsNumber
Number of field coefficients.
char FieldBitNumber
Field bit number.
implementation of Data Operators for Forces and Sources
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
Provide data structure for (tensor) field approximation.
FieldCoefficientsNumber getNbOfCoeffs() const
Get number of field coefficients.
const void * tagNamePrefixData
tag keeps name prefix of the field
FieldOrderTable forderTable
nb. DOFs table for entities
const void * tagName
tag keeps name of the field
int tagNameSize
number of bits necessary to keep field name
std::string getName() const
Get field name.
auto getSpaceName() const
Get field approximation space.
FieldApproximationBase getApproxBase() const
Get approximation base.
friend std::ostream & operator<<(std::ostream &os, const Field &e)
FieldContinuity getContinuity() const
Get field space continuity.
multi_index_container< boost::weak_ptr< std::vector< DofEntity > >, indexed_by< sequenced<> > > SequenceDofContainer
EntityHandle getMeshset() const
Get field meshset.
std::map< int, BaseFunction::DofsSideMap > & getDofSideMap() const
Get the dofs side map.
EntityHandle meshSet
keeps entities for this meshset
FieldSpace * tagSpaceData
tag keeps field space
FieldBitNumber getBitNumberCalculate() const
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set f...
auto getApproxBaseName() const
Get approximation base.
const std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
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...
std::array< std::array< int, MAX_DOFS_ON_ENTITY >, MBMAXTYPE > DofsOrderMap
Tag th_FieldData
Tag storing field values on entity in the field.
const DofsOrderMap & getDofOrderMap() const
get hash-map relating dof index on entity with its order
FieldOrderTable & getFieldOrderTable()
Get the Field Order Table.
MoFEMErrorCode rebuildDofsOrderMap()
FieldContinuity * tagFieldContinuityData
tag keeps field continuity
FieldCoefficientsNumber * tagNbCoeffData
BitFieldId * tagId
Tag field rank.
FieldSpace getSpace() const
Get field approximation space.
static constexpr int maxBrokenDofsOrder
max number of broken dofs
Field(moab::Interface &moab, const EntityHandle meshset)
constructor for moab field
Tag th_FieldDataVerts
Tag storing field values on vertices in the field.
SequenceDofContainer sequenceDofContainer
FieldApproximationBase * tagBaseData
tag keeps field base
SequenceDofContainer & getDofSequenceContainer() const
Get reference to sequence data container.
std::map< int, BaseFunction::DofsSideMap > dofSideMap
auto getContinuityName() const
Get field space continuity name.
const Field * getFieldRawPtr() const
TagType tagFieldDataVertsType
Tag th_AppOrder
Tag storing approximation order on entity.
boost::string_ref getNameRef() const
Get string reference to field name.
FieldBitNumber getBitNumber() const
Get number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for giv...
const BitFieldId & getId() const
Get unique field id.
Pointer interface for MoFEM::Field.
interface_FieldImpl(const boost::shared_ptr< FIELD > &field_ptr, const boost::shared_ptr< REFENT > &ref_ents_ptr)
virtual ~interface_FieldImpl()=default
const BitFieldId & getId() const
FieldBitNumber getBitNumber() const
interface_Field(const boost::shared_ptr< T > &ptr)
auto getApproxBaseName() const
FieldApproximationBase getApproxBase() const
FieldSpace getSpace() const
EntityHandle getMeshset() const
FieldCoefficientsNumber getNbOfCoeffs() const
const Field * getFieldRawPtr() const
std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
auto getSpaceName() const
std::string getName() const
boost::string_ref getNameRef() const
FieldBitNumber getBitNumber() const
FieldContinuity getContinuity() const
FieldCoefficientsNumber getNbOfCoeffs() const
auto getContinuityName() const
boost::string_ref getNameRef() const
FieldApproximationBase getApproxBase() const
std::string getName() const
std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & getDofOrderMap(const EntityType type) const
get hash-map relating dof index on entity with its order
EntityHandle getMeshset() const
const Field * getFieldRawPtr() const
FieldSpace getSpace() const
const BitFieldId & getId() const
interface_Field(const boost::shared_ptr< FIELD > &field_ptr, const boost::shared_ptr< REFENT > &ref_ents_ptr)
FieldOrderTable & getFieldOrderTable()
boost::shared_ptr< FIELD > sFieldPtr
int getCoordSysDim(const int d=0) const
boost::shared_ptr< REFENT > & getRefEntityPtr() const