48 static constexpr const int value =
N;
52 const EntityHandle ent);
60 MPI_Comm comm = PETSC_COMM_WORLD,
100 virtual boost::shared_ptr<RefEntityTmp<0>>
107 MPI_Comm comm = PETSC_COMM_WORLD,
181 boost::shared_ptr<BasicEntityData> &ptr);
183 static boost::shared_ptr<RefEntityTmp<0>>
198 MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
223 BUILD_FIELD = 1 << 0,
226 BUILD_PROBLEM = 1 << 3,
227 PARTITION_PROBLEM = 1 << 4,
228 PARTITION_FE = 1 << 5,
229 PARTITION_GHOST_DOFS = 1 << 6,
230 PARTITION_MESH = 1 << 7
272 Tag
th_FieldId, th_FieldName, th_FieldName_DataNamePrefix, th_FieldSpace,
303 return basicEntityDataPtr;
333 std::reference_wrapper<moab::Interface>
moab;
350 check_number_of_ents_in_ents_field(
const std::string &name)
const;
353 check_number_of_ents_in_ents_finite_element(
const std::string &name)
const;
354 MoFEMErrorCode check_number_of_ents_in_ents_finite_element()
const;
374 return *get_meshsets_manager_ptr();
377 return *get_meshsets_manager_ptr();
403 const bool remove_parent =
false,
437 add_field(
const std::string &name,
const FieldSpace space,
440 const TagType tag_type = MB_TAG_SPARSE,
469 const TagType tag_type,
const enum MoFEMTypes bh,
473 const std::string &name,
476 const std::string &name,
480 const std::string &name,
482 MoFEMErrorCode add_ents_to_field_by_dim(
const EntityHandle meshset,
484 const std::string &name,
485 const bool recursive =
true,
487 MoFEMErrorCode add_ents_to_field_by_type(
const EntityHandle meshset,
489 const std::string &name,
490 const bool recursive =
true,
493 MoFEMErrorCode create_vertices_and_add_to_field(
const std::string name,
494 const double coords[],
503 MoFEMErrorCode setFieldOrderImpl(boost::shared_ptr<Field> field_ptr,
515 MoFEMErrorCode set_field_order(
const Range &ents,
const std::string &name,
534 buildFieldForNoFieldImpl(boost::shared_ptr<Field> field_ptr,
535 std::map<EntityType, int> &dof_counter,
int verb);
538 std::map<EntityType, int> &dof_counter,
542 buildFieldForL2H1HcurlHdiv(
const BitFieldId id,
543 std::map<EntityType, int> &dof_counter,
544 std::map<EntityType, int> &inactive_dof_counter,
562 MoFEMErrorCode clear_dofs_fields(
const std::string name,
const Range ents,
571 MoFEMErrorCode clear_ents_fields(
const std::string name,
const Range ents,
581 const EntityHandle meshset,
592 MoFEMErrorCode list_dofs_by_field_name(
const std::string &name)
const;
594 BitFieldId get_field_id(
const std::string &name)
const;
595 FieldBitNumber get_field_bit_number(
const std::string name)
const;
596 std::string get_field_name(
const BitFieldId id)
const;
597 EntityHandle get_field_meshset(
const BitFieldId id)
const;
598 EntityHandle get_field_meshset(
const std::string name)
const;
599 MoFEMErrorCode get_field_entities_by_dimension(
const std::string name,
600 int dim, Range &ents)
const;
603 MoFEMErrorCode get_field_entities_by_handle(
const std::string name,
605 bool check_field(
const std::string &name)
const;
606 Field *get_field_structure(
const std::string &name);
614 bool check_finite_element(
const std::string &name)
const;
619 modify_finite_element_adjacency_table(
const std::string &fe_name,
623 modify_finite_element_add_field_data(
const std::string &fe_name,
624 const std::string &name_filed);
626 modify_finite_element_add_field_row(
const std::string &fe_name,
627 const std::string &name_row);
629 modify_finite_element_add_field_col(
const std::string &fe_name,
630 const std::string &name_col);
632 modify_finite_element_off_field_data(
const std::string &fe_name,
633 const std::string &name_filed);
635 modify_finite_element_off_field_row(
const std::string &fe_name,
636 const std::string &name_row);
638 modify_finite_element_off_field_col(
const std::string &fe_name,
639 const std::string &name_col);
642 const std::string &name,
const bool recursive =
true);
643 MoFEMErrorCode add_ents_to_finite_element_by_dim(
const EntityHandle meshset,
645 const std::string &name,
646 const bool recursive =
true);
647 MoFEMErrorCode add_ents_to_finite_element_by_type(
const Range &ents,
649 const std::string &name);
650 MoFEMErrorCode add_ents_to_finite_element_by_dim(
const Range &ents,
652 const std::string &name);
657 add_ents_to_finite_element_by_MESHSET(
const EntityHandle meshset,
658 const std::string &name,
659 const bool recursive =
false);
671 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
672 const EntityHandle meshset,
675 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
690 BitFEId getBitFEId(
const std::string &name)
const;
697 std::string getBitFEIdName(
const BitFEId id)
const;
698 EntityHandle get_finite_element_meshset(
const BitFEId id)
const;
699 EntityHandle get_finite_element_meshset(
const std::string &name)
const;
701 get_finite_element_entities_by_dimension(
const std::string name,
int dim,
703 MoFEMErrorCode get_finite_element_entities_by_type(
const std::string name,
706 MoFEMErrorCode get_finite_element_entities_by_handle(
const std::string name,
719 bool check_problem(
const std::string name);
722 modify_problem_add_finite_element(
const std::string &name_problem,
723 const std::string &MoFEMFiniteElement_name);
725 const std::string &name_problem,
726 const std::string &MoFEMFiniteElement_name);
728 modify_problem_ref_level_add_bit(
const std::string &name_problem,
731 modify_problem_ref_level_set_bit(
const std::string &name_problem,
734 modify_problem_mask_ref_level_add_bit(
const std::string &name_problem,
737 modify_problem_mask_ref_level_set_bit(
const std::string &name_problem,
739 BitProblemId getBitProblemId(
const std::string &name)
const;
748 const Range *
const ents_ptr =
nullptr,
750 MoFEMErrorCode buildFiniteElements(
const boost::shared_ptr<FiniteElement> &fe,
751 const Range *ents_ptr = NULL,
758 MoFEMErrorCode clear_finite_elements(
const std::string name,
const Range ents,
762 get_problem_finite_elements_entities(
const std::string &name,
763 const std::string &fe_name,
764 const EntityHandle meshset);
798 clear_adjacencies_finite_elements(
const Range ents,
801 clear_adjacencies_finite_elements(
const std::string name,
const Range ents,
814 problem_basic_method_preProcess(
const std::string &problem_name,
821 problem_basic_method_postProcess(
const std::string &problem_name,
832 const Problem *problem_ptr,
const std::string &fe_name,
FEMethod &method,
833 int lower_rank,
int upper_rank,
834 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
840 const std::string &problem_name,
const std::string &fe_name,
841 FEMethod &method,
int lower_rank,
int upper_rank,
842 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
848 const std::string &problem_name,
const std::string &fe_name,
850 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
857 DofMethod &method,
int lower_rank,
int upper_rank,
861 DofMethod &method,
int lower_rank,
int upper_rank,
882 Range
const *
const ents =
nullptr,
904 const Problem **problem_ptr)
const;
908 *dofs_elements_adjacency)
const;
917 const Problem *get_problem(
const std::string problem_name)
const;
920 get_ents_elements_adjacency()
const;
922 FieldEntityByUId::iterator
923 get_ent_field_by_name_begin(
const std::string &
field_name)
const;
924 FieldEntityByUId::iterator
925 get_ent_field_by_name_end(
const std::string &
field_name)
const;
926 DofEntityByUId::iterator
927 get_dofs_by_name_begin(
const std::string &
field_name)
const;
928 DofEntityByUId::iterator
929 get_dofs_by_name_end(
const std::string &
field_name)
const;
930 DofEntityByUId::iterator
931 get_dofs_by_name_and_ent_begin(
const std::string &
field_name,
932 const EntityHandle ent)
const;
933 DofEntityByUId::iterator
934 get_dofs_by_name_and_ent_end(
const std::string &
field_name,
935 const EntityHandle ent)
const;
936 DofEntityByUId::iterator
937 get_dofs_by_name_and_type_begin(
const std::string &
field_name,
939 DofEntityByUId::iterator
940 get_dofs_by_name_and_type_end(
const std::string &
field_name,
942 EntFiniteElementByName::iterator
943 get_fe_by_name_begin(
const std::string &fe_name)
const;
944 EntFiniteElementByName::iterator
945 get_fe_by_name_end(
const std::string &fe_name)
const;
977 inline MPI_Comm &
get_comm()
const {
return mofemComm; }
992 boost::shared_ptr<WrapMPIComm>
1000 mutable boost::ptr_map<boost::typeindex::type_index, UnknownInterface>
iFaces;
1080 virtual boost::shared_ptr<RefEntityTmp<0>>
1087 MPI_Comm comm = PETSC_COMM_WORLD,
multi_index_container< FieldEntityEntFiniteElementAdjacencyMap, indexed_by< ordered_unique< tag< Composite_Unique_mi_tag >, composite_key< FieldEntityEntFiniteElementAdjacencyMap, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, UId, &FieldEntityEntFiniteElementAdjacencyMap::getEntUniqueId >, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, UId, &FieldEntityEntFiniteElementAdjacencyMap::getFeUniqueId > > >, ordered_non_unique< tag< Unique_mi_tag >, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, UId, &FieldEntityEntFiniteElementAdjacencyMap::getEntUniqueId > >, ordered_non_unique< tag< FE_Unique_mi_tag >, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, UId, &FieldEntityEntFiniteElementAdjacencyMap::getFeUniqueId > >, ordered_non_unique< tag< FEEnt_mi_tag >, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, EntityHandle, &FieldEntityEntFiniteElementAdjacencyMap::getFeHandle > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< FieldEntityEntFiniteElementAdjacencyMap, EntityHandle, &FieldEntityEntFiniteElementAdjacencyMap::getEntHandle > > > > FieldEntityEntFiniteElementAdjacencyMap_multiIndex
MultiIndex container keeps Adjacencies Element and dof entities adjacencies and vice versa.
Core interface class for user interface.
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.
MoFEMTypes
Those types control how functions respond on arguments, f.e. error handling.
FieldApproximationBase
approximation base
FieldSpace
approximation spaces
multi_index_container< boost::shared_ptr< DofEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< DofEntity, UId, &DofEntity::getLocalUniqueId > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< DofEntity, EntityHandle, &DofEntity::getEnt > > > > DofEntity_multiIndex
MultiIndex container keeps DofEntity.
multi_index_container< boost::shared_ptr< RefEntity >, indexed_by< ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getEnt > >, ordered_non_unique< tag< Ent_Ent_mi_tag >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > >, ordered_non_unique< tag< Composite_EntType_and_ParentEntType_mi_tag >, composite_key< RefEntity, const_mem_fun< RefEntity, EntityType, &RefEntity::getEntType >, const_mem_fun< RefEntity, EntityType, &RefEntity::getParentEntType > > >, ordered_non_unique< tag< Composite_ParentEnt_And_EntType_mi_tag >, composite_key< RefEntity, const_mem_fun< RefEntity, EntityType, &RefEntity::getEntType >, const_mem_fun< RefEntity, EntityHandle, &RefEntity::getParentEnt > > > > > RefEntity_multiIndex
multi_index_container< boost::shared_ptr< RefElement >, indexed_by< ordered_unique< tag< Ent_mi_tag >, const_mem_fun< RefElement::interface_type_RefEntity, EntityHandle, &RefElement::getEnt > > > > RefElement_multiIndex
multi_index_container< boost::shared_ptr< EntFiniteElement >, indexed_by< ordered_unique< tag< Unique_mi_tag >, const_mem_fun< EntFiniteElement, UId, &EntFiniteElement::getLocalUniqueId > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< EntFiniteElement::interface_type_RefEntity, EntityHandle, &EntFiniteElement::getEnt > >, ordered_non_unique< tag< FiniteElement_name_mi_tag >, const_mem_fun< EntFiniteElement::interface_type_FiniteElement, boost::string_ref, &EntFiniteElement::getNameRef > >, ordered_non_unique< tag< Composite_Name_And_Ent_mi_tag >, composite_key< EntFiniteElement, const_mem_fun< EntFiniteElement::interface_type_FiniteElement, boost::string_ref, &EntFiniteElement::getNameRef >, const_mem_fun< EntFiniteElement::interface_type_RefEntity, EntityHandle, &EntFiniteElement::getEnt > > > > > EntFiniteElement_multiIndex
MultiIndex container for EntFiniteElement.
multi_index_container< Problem, indexed_by< ordered_unique< tag< Meshset_mi_tag >, member< Problem, EntityHandle, &Problem::meshset > >, hashed_unique< tag< BitProblemId_mi_tag >, const_mem_fun< Problem, BitProblemId, &Problem::getId >, HashBit< BitProblemId >, EqBit< BitProblemId > >, hashed_unique< tag< Problem_mi_tag >, const_mem_fun< Problem, std::string, &Problem::getName > > > > Problem_multiIndex
MultiIndex for entities for Problem.
boost::function< MoFEMErrorCode(Interface &moab, const Field &field, const EntFiniteElement &fe, std::vector< EntityHandle > &adjacency)> ElementAdjacencyFunct
user adjacency function
multi_index_container< boost::shared_ptr< FiniteElement >, indexed_by< hashed_unique< tag< FiniteElement_Meshset_mi_tag >, member< FiniteElement, EntityHandle, &FiniteElement::meshset > >, hashed_unique< tag< BitFEId_mi_tag >, const_mem_fun< FiniteElement, BitFEId, &FiniteElement::getId >, HashBit< BitFEId >, EqBit< BitFEId > >, ordered_unique< tag< FiniteElement_name_mi_tag >, const_mem_fun< FiniteElement, boost::string_ref, &FiniteElement::getNameRef > > > > FiniteElement_multiIndex
MultiIndex for entities for FiniteElement.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
std::bitset< BITFEID_SIZE > BitFEId
Finite element Id.
std::bitset< BITPROBLEMID_SIZE > BitProblemId
Problem Id.
int ApproximationOrder
Approximation on the entity.
std::bitset< BITFIELDID_SIZE > BitFieldId
Field Id.
int FieldCoefficientsNumber
Number of field coefficients.
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
char FieldBitNumber
Field bit number.
implementation of Data Operators for Forces and Sources
DeprecatedCoreInterface Interface
boost::shared_ptr< CacheTuple > CacheTupleSharedPtr
multi_index_container< boost::shared_ptr< FieldEntity >, indexed_by< ordered_unique< tag< Unique_mi_tag >, member< FieldEntity, UId, &FieldEntity::localUId > >, ordered_non_unique< tag< Ent_mi_tag >, const_mem_fun< FieldEntity::interface_type_RefEntity, EntityHandle, &FieldEntity::getEnt > > > > FieldEntity_multiIndex
boost::weak_ptr< CacheTuple > CacheTupleWeakPtr
constexpr auto field_name
Data structure to exchange data between mofem and User Loop Methods.
const int getValue() const
Get the core.
boost::shared_ptr< BasicEntityData > & get_basic_entity_data_ptr()
Get pointer to basic entity data.
const MeshsetsManager & get_meshsets_manager() const
get MeshsetsManager pointer
MPI_Comm & get_comm() const
PetscLogEvent MOFEM_EVENT_createMat
static bool isGloballyInitialised
Core base globally initialized.
PetscBool initaliseAndBuildFiniteElements
int get_comm_rank() const
FiniteElement_multiIndex finiteElements
finite elements
MoFEMErrorCode build_finite_elements(const string fe_name, const Range *const ents_ptr=nullptr, int verb=DEFAULT_VERBOSITY)
Build finite elements.
const moab::Interface & get_moab() const
FieldEntity_multiIndex entsFields
entities on fields
Field_multiIndex fIelds
fields
EntFiniteElement_multiIndex entsFiniteElements
finite element entities
int & getBuildMoFEM() const
Get flags/semaphores for different stages.
PetscLogEvent MOFEM_EVENT_preProcess
Event for preProcess finite element.
int get_comm_size() const
DofEntity_multiIndex dofsField
dofs on fields
Tag th_Part
Tag for partition number.
static PetscBool isInitialized
petsc was initialised by other agent
int verbose
Verbosity level.
PetscBool initaliseAndBuildField
int sIze
MoFEM communicator size.
RefElement_multiIndex refinedFiniteElements
refined elements
int rAnk
MOFEM communicator rank.
Tag th_ElemType
Needed for VTK files.
RefEntity_multiIndex refinedEntities
refined entities
MeshsetsManager & get_meshsets_manager()
get MeshsetsManager pointer
ParallelComm * pComm
MOAB communicator structure.
PetscLogEvent MOFEM_EVENT_operator
Event for evaluating operator of finite element.
Tag get_th_RefBitLevel() const
BitProblemId getProblemShift()
Return unique problem Id.
moab::Interface & get_moab()
MPI_Comm mofemComm
MoFEM communicator.
std::string optionsPrefix
Prefix for options on command line.
int * buildMoFEM
keeps flags/semaphores for different stages
Tag get_th_RefParentHandle() const
const int getValue() const
Get the core.
static int mpiInitialised
mpi was initialised by other agent
Tag th_ProblemGhostNbDofRow
PetscLogEvent MOFEM_EVENT_postProcess
Event for postProcess finite element.
boost::shared_ptr< BasicEntityData > basicEntityDataPtr
std::reference_wrapper< moab::Interface > moab
moab database
Tag get_th_RefType() const
FieldEntityEntFiniteElementAdjacencyMap_multiIndex entFEAdjacencies
adjacencies of elements to dofs
Problem_multiIndex pRoblems
problems multi-index
Tag th_ProblemGhostNbDofCol
Tag get_th_RefBitEdge() const
MoFEMErrorCode setFieldOrder(const Range &ents, const BitFieldId id, const ApproximationOrder order, int ver)
boost::ptr_map< boost::typeindex::type_index, UnknownInterface > iFaces
Hash map of pointers to interfaces.
boost::shared_ptr< WrapMPIComm > wrapMPIMOABComm
manage creation and destruction of MOAB communicator
RefEntityTmp< 0 > getRefEntity(const EntityHandle ent)
MoFEMErrorCode set_moab_interface(moab::Interface &new_moab, int verb)
static constexpr const int value
CoreTmp(moab::Interface &moab, MPI_Comm comm=PETSC_COMM_WORLD, const int verbose=VERBOSE)
const int getValue() const
virtual boost::shared_ptr< RefEntityTmp< 0 > > make_shared_ref_entity(const EntityHandle ent)
Deprecated interface functions.
Data structure to exchange data between mofem and User Loop Methods on entities.
Data structure to exchange data between mofem and User Loop Methods on entities.
structure for User Loop Methods on finite elements
Provide data structure for (tensor) field approximation.
Interface for managing meshsets containing materials and boundary conditions.
keeps basic data about problem
Struct keeps handle to refined handle.
base class for all interface classes
Wrap MPI comminitactor such that is destroyed when is out of scope.
WrapMPIComm(MPI_Comm comm, bool petsc)