v0.14.0 |
Provide data structure for (tensor) field approximation. More...
#include <src/multi_indices/FieldMultiIndices.hpp>
Public Types | |
using | SequenceDofContainer = multi_index_container< boost::weak_ptr< std::vector< DofEntity > >, indexed_by< sequenced<> >> |
using | DofsOrderMap = std::array< std::array< int, MAX_DOFS_ON_ENTITY >, MBMAXTYPE > |
Public Member Functions | |
Field (moab::Interface &moab, const EntityHandle meshset) | |
constructor for moab field More... | |
virtual | ~Field ()=default |
FieldOrderTable & | getFieldOrderTable () |
Get the Field Order Table. More... | |
EntityHandle | getMeshset () const |
Get field meshset. More... | |
const BitFieldId & | getId () const |
Get unique field id. More... | |
boost::string_ref | getNameRef () const |
Get string reference to field name. More... | |
std::string | getName () const |
Get field name. More... | |
FieldSpace | getSpace () const |
Get field approximation space. More... | |
auto | getSpaceName () const |
Get field approximation space. More... | |
FieldContinuity | getContinuity () const |
Get field space continuity. More... | |
auto | getContinuityName () const |
Get field space continuity name. More... | |
FieldApproximationBase | getApproxBase () const |
Get approximation base. More... | |
auto | getApproxBaseName () const |
Get approximation base. More... | |
FieldCoefficientsNumber | getNbOfCoeffs () const |
Get number of field coefficients. More... | |
FieldBitNumber | getBitNumber () const |
Get number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for given field. Field ID has only one bit set for each field. More... | |
FieldBitNumber | getBitNumberCalculate () const |
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for given field. Field ID has only one bit set for each field. More... | |
SequenceDofContainer & | getDofSequenceContainer () const |
Get reference to sequence data container. More... | |
const std::array< ApproximationOrder, MAX_DOFS_ON_ENTITY > & | getDofOrderMap (const EntityType type) const |
get hash-map relating dof index on entity with its order More... | |
const DofsOrderMap & | getDofOrderMap () const |
get hash-map relating dof index on entity with its order More... | |
std::map< int, BaseFunction::DofsSideMap > & | getDofSideMap () const |
Get the dofs side map. More... | |
MoFEMErrorCode | rebuildDofsOrderMap () |
const Field * | getFieldRawPtr () const |
Static Public Member Functions | |
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 for given field. Field ID has only one bit set for each field. More... | |
Public Attributes | |
moab::Interface & | moab |
EntityHandle | meshSet |
keeps entities for this meshset More... | |
TagType | tagFieldDataVertsType |
Tag | th_FieldDataVerts |
Tag storing field values on vertices in the field. More... | |
Tag | th_FieldData |
Tag storing field values on entity in the field. More... | |
Tag | th_AppOrder |
Tag storing approximation order on entity. More... | |
Tag | th_FieldRank |
BitFieldId * | tagId |
Tag field rank. More... | |
FieldSpace * | tagSpaceData |
tag keeps field space More... | |
FieldContinuity * | tagFieldContinuityData |
tag keeps field continuity More... | |
FieldApproximationBase * | tagBaseData |
tag keeps field base More... | |
FieldCoefficientsNumber * | tagNbCoeffData |
const void * | tagName |
tag keeps name of the field More... | |
int | tagNameSize |
number of bits necessary to keep field name More... | |
const void * | tagNamePrefixData |
tag keeps name prefix of the field More... | |
int | tagNamePrefixSize |
FieldOrderTable | forderTable |
nb. DOFs table for entities More... | |
unsigned int | bitNumber |
Static Public Attributes | |
static constexpr int | maxBrokenDofsOrder = 10 |
max number of broken dofs More... | |
Private Attributes | |
SequenceDofContainer | sequenceDofContainer |
DofsOrderMap | dofOrderMap |
std::map< int, BaseFunction::DofsSideMap > | dofSideMap |
Friends | |
std::ostream & | operator<< (std::ostream &os, const Field &e) |
Provide data structure for (tensor) field approximation.
The Field is intended to provide support for fields, with a strong bias towards supporting first and best the capabilities required for scientific computing applications. Since we work with discrete spaces, data structure has to carry information about type of approximation space, its regularity.
Field data structure storing information about space, approximation base, coordinate systems, etc. It stores additional data needed for book keeping, like tags to data on the mesh.
Each filed has unique ID and name. This data structure is shared between entities on which is spanning and DOFs on those entities.
Definition at line 51 of file FieldMultiIndices.hpp.
using MoFEM::Field::DofsOrderMap = std::array<std::array<int, MAX_DOFS_ON_ENTITY>, MBMAXTYPE> |
Definition at line 69 of file FieldMultiIndices.hpp.
using MoFEM::Field::SequenceDofContainer = multi_index_container< boost::weak_ptr<std::vector<DofEntity> >, indexed_by<sequenced<> >> |
Definition at line 66 of file FieldMultiIndices.hpp.
MoFEM::Field::Field | ( | moab::Interface & | moab, |
const EntityHandle | meshset | ||
) |
constructor for moab field
meshset | which keeps entities for this field |
Definition at line 17 of file FieldMultiIndices.cpp.
|
virtualdefault |
|
inline |
Get approximation base.
Definition at line 178 of file FieldMultiIndices.hpp.
|
inline |
Get approximation base.
Definition at line 184 of file FieldMultiIndices.hpp.
|
inline |
Get number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for given field. Field ID has only one bit set for each field.
Definition at line 211 of file FieldMultiIndices.hpp.
|
inline |
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for given field. Field ID has only one bit set for each field.
Definition at line 232 of file FieldMultiIndices.hpp.
|
inlinestatic |
Calculate number of set bit in Field ID. Each field has uid, get getBitNumber get number of bit set for given field. Field ID has only one bit set for each field.
Definition at line 218 of file FieldMultiIndices.hpp.
|
inline |
Get field space continuity.
Definition at line 162 of file FieldMultiIndices.hpp.
|
inline |
Get field space continuity name.
Definition at line 170 of file FieldMultiIndices.hpp.
|
inline |
get hash-map relating dof index on entity with its order
Dofs of given field are indexed on entity of the same type, same space, approximation base and number of coefficients, are sorted in the way.
Definition at line 280 of file FieldMultiIndices.hpp.
|
inline |
get hash-map relating dof index on entity with its order
Dofs of given field are indexed on entity of the same type, same space, approximation base and number of coefficients, are sorted in the way.
Definition at line 268 of file FieldMultiIndices.hpp.
|
inline |
Get reference to sequence data container.
In sequence data container data are physically stored. The purpose of this is to allocate DofEntity data in bulk, having only one allocation instead each time entity is inserted. That makes code efficient.
The vector in sequence is destroyed if last entity inside that vector is destroyed. All MoFEM::MoFEMEntities have aliased shared_ptr which points to the vector.
Not all DOFs are stored in this way, currently such cases are considered;
For other cases, DOFs are stored locally in each MoFEM::MoFEMEntities.
Definition at line 255 of file FieldMultiIndices.hpp.
|
inline |
Get the dofs side map.
This establish connection between dofs in the interior of broken specs and entity on which trace of the dof is nonzero.
Definition at line 292 of file FieldMultiIndices.hpp.
|
inline |
Get the Field Order Table.
Definition at line 101 of file FieldMultiIndices.hpp.
|
inline |
Definition at line 300 of file FieldMultiIndices.hpp.
|
inline |
|
inline |
Get field meshset.
To meshsets entity are attached Tags which keeps basic information about field. Those information is field name, approximation base, approximation space, id, etc.
In meshset contains entities on which given filed is sparing. Type of entities depended on approximations space.
Definition at line 123 of file FieldMultiIndices.hpp.
|
inline |
|
inline |
Get string reference to field name.
Definition at line 135 of file FieldMultiIndices.hpp.
|
inline |
Get number of field coefficients.
Scalar field has only one coefficient, vector field in 3D has three. In general number determine space needed to keep data on entities. What coefficient means depend on interpretation and associated coordinate system. For example 3 coefficient means could be covariant or contravariant, or mean three temperatures for mixture of solid, air and water, etc.
Definition at line 202 of file FieldMultiIndices.hpp.
|
inline |
Get field approximation space.
Definition at line 151 of file FieldMultiIndices.hpp.
|
inline |
Get field approximation space.
Definition at line 157 of file FieldMultiIndices.hpp.
MoFEMErrorCode MoFEM::Field::rebuildDofsOrderMap | ( | ) |
Definition at line 514 of file FieldMultiIndices.cpp.
|
friend |
Definition at line 551 of file FieldMultiIndices.cpp.
unsigned int MoFEM::Field::bitNumber |
Field Id is bit set. Each field has only one bit on, bitNumber stores number of set bit
Definition at line 107 of file FieldMultiIndices.hpp.
|
mutableprivate |
Definition at line 304 of file FieldMultiIndices.hpp.
|
mutableprivate |
Definition at line 305 of file FieldMultiIndices.hpp.
FieldOrderTable MoFEM::Field::forderTable |
nb. DOFs table for entities
Definition at line 94 of file FieldMultiIndices.hpp.
|
staticconstexpr |
max number of broken dofs
Definition at line 282 of file FieldMultiIndices.hpp.
EntityHandle MoFEM::Field::meshSet |
keeps entities for this meshset
Definition at line 73 of file FieldMultiIndices.hpp.
moab::Interface& MoFEM::Field::moab |
Definition at line 71 of file FieldMultiIndices.hpp.
|
mutableprivate |
Definition at line 300 of file FieldMultiIndices.hpp.
FieldApproximationBase* MoFEM::Field::tagBaseData |
tag keeps field base
Definition at line 84 of file FieldMultiIndices.hpp.
FieldContinuity* MoFEM::Field::tagFieldContinuityData |
tag keeps field continuity
Definition at line 83 of file FieldMultiIndices.hpp.
TagType MoFEM::Field::tagFieldDataVertsType |
Definition at line 75 of file FieldMultiIndices.hpp.
BitFieldId* MoFEM::Field::tagId |
const void* MoFEM::Field::tagName |
tag keeps name of the field
Definition at line 89 of file FieldMultiIndices.hpp.
const void* MoFEM::Field::tagNamePrefixData |
tag keeps name prefix of the field
Definition at line 91 of file FieldMultiIndices.hpp.
int MoFEM::Field::tagNamePrefixSize |
number of bits necessary to keep field name prefix
Definition at line 92 of file FieldMultiIndices.hpp.
int MoFEM::Field::tagNameSize |
number of bits necessary to keep field name
Definition at line 90 of file FieldMultiIndices.hpp.
FieldCoefficientsNumber* MoFEM::Field::tagNbCoeffData |
tag keeps field rank (dimension, f.e. Temperature field has rank 1, displacements field in 3d has rank 3)
Definition at line 88 of file FieldMultiIndices.hpp.
FieldSpace* MoFEM::Field::tagSpaceData |
tag keeps field space
Definition at line 82 of file FieldMultiIndices.hpp.
Tag MoFEM::Field::th_AppOrder |
Tag storing approximation order on entity.
Definition at line 78 of file FieldMultiIndices.hpp.
Tag MoFEM::Field::th_FieldData |
Tag storing field values on entity in the field.
Definition at line 77 of file FieldMultiIndices.hpp.
Tag MoFEM::Field::th_FieldDataVerts |
Tag storing field values on vertices in the field.
Definition at line 76 of file FieldMultiIndices.hpp.
Tag MoFEM::Field::th_FieldRank |
Definition at line 79 of file FieldMultiIndices.hpp.