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<>>>;
68 typedef std::array<std::array<int, MAX_DOFS_ON_ENTITY>, MBMAXTYPE>
206 "Too many fields allowed, can be more but ...");
253 inline const std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
289template <
typename FIELD,
typename REFENT>
295 const boost::shared_ptr<REFENT> &ref_ents_ptr)
300template <
typename FIELD,
typename REFENT>
304 const boost::shared_ptr<REFENT> &ref_ents_ptr)
359 inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
438 inline std::array<ApproximationOrder, MAX_DOFS_ON_ENTITY> &
454typedef multi_index_container<
455 boost::shared_ptr<Field>,
457 hashed_unique<tag<BitFieldId_mi_tag>,
458 const_mem_fun<Field, const BitFieldId &, &Field::getId>,
459 HashBit<BitFieldId>, EqBit<BitFieldId>>,
460 ordered_unique<tag<Meshset_mi_tag>,
461 member<Field, EntityHandle, &Field::meshSet>>,
463 tag<FieldName_mi_tag>,
464 const_mem_fun<Field, boost::string_ref, &Field::getNameRef>>,
465 ordered_non_unique<tag<BitFieldId_space_mi_tag>,
466 const_mem_fun<Field, FieldSpace, &Field::getSpace>>>>
469typedef multi_index_container<
470 boost::shared_ptr<Field>,
472 ordered_unique<tag<BitFieldId_mi_tag>,
473 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
FieldSpace
approximation spaces
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)
EntityHandle getMeshset() const
Get field meshset.
EntityHandle meshSet
keeps entities for this meshset
std::array< std::array< int, MAX_DOFS_ON_ENTITY >, MBMAXTYPE > DofsOrderMap
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...
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()
FieldCoefficientsNumber * tagNbCoeffData
BitFieldId * tagId
Tag field rank.
FieldSpace getSpace() const
Get field approximation space.
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.
const Field * getFieldRawPtr() const
TagType tagFieldDataVertsType
multi_index_container< boost::weak_ptr< std::vector< DofEntity > >, indexed_by< sequenced<> > > SequenceDofContainer
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.
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
FieldCoefficientsNumber getNbOfCoeffs() 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
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
boost::shared_ptr< REFENT > & getRefEntityPtr() const