![Logo](MoFEMLogo.png) |
| v0.14.0
|
Go to the documentation of this file.
38 static constexpr
const int value =
N;
50 MPI_Comm comm = PETSC_COMM_WORLD,
90 virtual boost::shared_ptr<RefEntityTmp<0>>
97 MPI_Comm comm = PETSC_COMM_WORLD,
171 boost::shared_ptr<BasicEntityData> &ptr);
173 static boost::shared_ptr<RefEntityTmp<0>>
188 MoFEMErrorCode query_interface(boost::typeindex::type_index type_index,
212 BUILD_FIELD = 1 << 0,
215 BUILD_PROBLEM = 1 << 3,
216 PARTITION_PROBLEM = 1 << 4,
217 PARTITION_FE = 1 << 5,
218 PARTITION_GHOST_DOFS = 1 << 6,
219 PARTITION_MESH = 1 << 7
291 return basicEntityDataPtr;
321 std::reference_wrapper<moab::Interface>
moab;
338 check_number_of_ents_in_ents_field(
const std::string &name)
const;
341 check_number_of_ents_in_ents_finite_element(
const std::string &name)
const;
342 MoFEMErrorCode check_number_of_ents_in_ents_finite_element()
const;
362 return *get_meshsets_manager_ptr();
365 return *get_meshsets_manager_ptr();
391 const bool remove_parent =
false,
426 add_broken_field(
const std::string &name,
const FieldSpace space,
429 const TagType tag_type = MB_TAG_SPARSE,
461 add_field(
const std::string &name,
const FieldSpace space,
464 const TagType tag_type = MB_TAG_SPARSE,
495 const TagType tag_type,
const enum MoFEMTypes bh,
499 const std::string &name,
502 const std::string &name,
505 const EntityType
type,
506 const std::string &name,
510 const std::string &name,
511 const bool recursive =
true,
514 const EntityType
type,
515 const std::string &name,
516 const bool recursive =
true,
519 MoFEMErrorCode create_vertices_and_add_to_field(
const std::string name,
520 const double coords[],
529 MoFEMErrorCode setFieldOrderImpl(boost::shared_ptr<Field> field_ptr,
545 const EntityType
type,
const std::string &name,
560 buildFieldForNoFieldImpl(boost::shared_ptr<Field> field_ptr,
561 std::map<EntityType, int> &dof_counter,
int verb);
564 std::map<EntityType, int> &dof_counter,
568 buildFieldForL2H1HcurlHdiv(
const BitFieldId id,
569 std::map<EntityType, int> &dof_counter,
570 std::map<EntityType, int> &inactive_dof_counter,
608 const EntityType
type,
618 MoFEMErrorCode list_dofs_by_field_name(
const std::string &name)
const;
620 BitFieldId get_field_id(
const std::string &name)
const;
621 FieldBitNumber get_field_bit_number(
const std::string name)
const;
622 std::string get_field_name(
const BitFieldId id)
const;
624 EntityHandle get_field_meshset(
const std::string name)
const;
625 MoFEMErrorCode get_field_entities_by_dimension(
const std::string name,
626 int dim,
Range &ents)
const;
629 MoFEMErrorCode get_field_entities_by_handle(
const std::string name,
631 bool check_field(
const std::string &name)
const;
633 const Field *get_field_structure(
const std::string &name,
643 get_finite_element_structure(
const std::string &name,
646 bool check_finite_element(
const std::string &name)
const;
652 modify_finite_element_adjacency_table(
const std::string &fe_name,
653 const EntityType
type,
656 modify_finite_element_add_field_data(
const std::string &fe_name,
657 const std::string name_filed);
659 modify_finite_element_add_field_row(
const std::string &fe_name,
660 const std::string name_row);
662 modify_finite_element_add_field_col(
const std::string &fe_name,
663 const std::string name_col);
665 modify_finite_element_off_field_data(
const std::string &fe_name,
666 const std::string name_filed);
668 modify_finite_element_off_field_row(
const std::string &fe_name,
669 const std::string name_row);
671 modify_finite_element_off_field_col(
const std::string &fe_name,
672 const std::string name_col);
675 const std::string &name,
const bool recursive =
true);
678 const std::string &name,
679 const bool recursive =
true);
681 const EntityType
type,
682 const std::string &name);
685 const std::string &name);
690 add_ents_to_finite_element_by_MESHSET(
const EntityHandle meshset,
691 const std::string &name,
692 const bool recursive =
false);
704 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
706 const EntityType
type,
708 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
723 BitFEId getBitFEId(
const std::string &fe_name)
const;
730 std::string getBitFEIdName(
const BitFEId id)
const;
733 EntityHandle get_finite_element_meshset(
const std::string name)
const;
735 get_finite_element_entities_by_dimension(
const std::string name,
int dim,
737 MoFEMErrorCode get_finite_element_entities_by_type(
const std::string name,
740 MoFEMErrorCode get_finite_element_entities_by_handle(
const std::string name,
753 bool check_problem(
const std::string name);
756 modify_problem_add_finite_element(
const std::string name_problem,
757 const std::string &fe_name);
759 modify_problem_unset_finite_element(
const std::string name_problem,
760 const std::string &fe_name);
762 modify_problem_ref_level_add_bit(
const std::string &name_problem,
765 modify_problem_ref_level_set_bit(
const std::string &name_problem,
768 modify_problem_mask_ref_level_add_bit(
const std::string &name_problem,
771 modify_problem_mask_ref_level_set_bit(
const std::string &name_problem,
773 BitProblemId getBitProblemId(
const std::string &name)
const;
782 const Range *
const ents_ptr =
nullptr,
784 MoFEMErrorCode buildFiniteElements(
const boost::shared_ptr<FiniteElement> &fe,
785 const Range *ents_ptr = NULL,
797 get_problem_finite_elements_entities(
const std::string name,
798 const std::string &fe_name,
833 clear_adjacencies_finite_elements(
const Range ents,
836 clear_adjacencies_finite_elements(
const std::string name,
const Range ents,
849 problem_basic_method_preProcess(
const std::string &problem_name,
856 problem_basic_method_postProcess(
const std::string &problem_name,
867 const Problem *problem_ptr,
const std::string &fe_name,
FEMethod &method,
868 int lower_rank,
int upper_rank,
869 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
875 const std::string problem_name,
const std::string &fe_name,
876 FEMethod &method,
int lower_rank,
int upper_rank,
877 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
883 const std::string problem_name,
const std::string &fe_name,
885 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
892 DofMethod &method,
int lower_rank,
int upper_rank,
896 DofMethod &method,
int lower_rank,
int upper_rank,
917 Range const *
const ents =
nullptr,
939 const Problem **problem_ptr)
const;
943 *dofs_elements_adjacency)
const;
952 const Problem *get_problem(
const std::string problem_name)
const;
955 get_ents_elements_adjacency()
const;
957 FieldEntityByUId::iterator
958 get_ent_field_by_name_begin(
const std::string &
field_name)
const;
959 FieldEntityByUId::iterator
960 get_ent_field_by_name_end(
const std::string &
field_name)
const;
961 DofEntityByUId::iterator
962 get_dofs_by_name_begin(
const std::string &
field_name)
const;
963 DofEntityByUId::iterator
964 get_dofs_by_name_end(
const std::string &
field_name)
const;
965 DofEntityByUId::iterator
966 get_dofs_by_name_and_ent_begin(
const std::string &
field_name,
968 DofEntityByUId::iterator
969 get_dofs_by_name_and_ent_end(
const std::string &
field_name,
971 DofEntityByUId::iterator
972 get_dofs_by_name_and_type_begin(
const std::string &
field_name,
973 const EntityType
type)
const;
974 DofEntityByUId::iterator
975 get_dofs_by_name_and_type_end(
const std::string &
field_name,
976 const EntityType ent)
const;
978 EntFiniteElement_multiIndex::index<Unique_mi_tag>::type::iterator
979 get_fe_by_name_begin(
const std::string &fe_name)
const;
980 EntFiniteElement_multiIndex::index<Unique_mi_tag>::type::iterator
981 get_fe_by_name_end(
const std::string &fe_name)
const;
1013 inline MPI_Comm &
get_comm()
const {
return mofemComm; }
1028 boost::shared_ptr<WrapMPIComm>
1036 mutable boost::ptr_map<boost::typeindex::type_index, UnknownInterface>
iFaces;
1124 virtual boost::shared_ptr<RefEntityTmp<0>>
1131 MPI_Comm comm = PETSC_COMM_WORLD,
1146 #endif // __CORE_HPP__
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.
PetscLogEvent MOFEM_EVENT_operator
Event for evaluating operator of finite element.
const int getValue() const
Data structure to exchange data between mofem and User Loop Methods on entities.
structure for User Loop Methods on finite elements
int rAnk
MOFEM communicator rank.
Tag get_th_RefBitEdge() const
boost::shared_ptr< WrapMPIComm > wrapMPIMOABComm
manage creation and destruction of MOAB communicator
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
std::bitset< BITPROBLEMID_SIZE > BitProblemId
Problem Id.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
EntFiniteElement_multiIndex entsFiniteElements
finite element entities
int * buildMoFEM
keeps flags/semaphores for different stages
Struct keeps handle to refined handle.
std::bitset< BITFIELDID_SIZE > BitFieldId
Field Id.
RefEntity_multiIndex refinedEntities
refined entities
Tag th_ProblemLocalNbDofRow
virtual boost::shared_ptr< RefEntityTmp< 0 > > make_shared_ref_entity(const EntityHandle ent)
FieldEntityEntFiniteElementAdjacencyMap_multiIndex entFEAdjacencies
adjacencies of elements to dofs
Data structure to exchange data between mofem and User Loop Methods on entities.
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
std::bitset< BITFEID_SIZE > BitFEId
Finite element Id.
Provide data structure for (tensor) field approximation.
Deprecated interface functions.
moab::Interface & get_moab()
RefEntityTmp< 0 > getRefEntity(const EntityHandle ent)
DeprecatedCoreInterface Interface
Problem_multiIndex pRoblems
problems multi-index
PetscLogEvent MOFEM_EVENT_preProcess
Event for preProcess finite element.
FieldSpace
approximation spaces
int get_comm_size() const
PetscLogEvent MOFEM_EVENT_createMat
implementation of Data Operators for Forces and Sources
boost::ptr_map< boost::typeindex::type_index, UnknownInterface > iFaces
Hash map of pointers to interfaces.
CoreTmp(moab::Interface &moab, MPI_Comm comm=PETSC_COMM_WORLD, const int verbose=VERBOSE)
FieldContinuity
Field continuity.
Core interface class for user interface.
static int mpiInitialised
mpi was initialised by other agent
RefElement_multiIndex refinedFiniteElements
refined elements
int FieldCoefficientsNumber
Number of field coefficients.
int get_comm_rank() const
Tag get_th_RefParentHandle() const
Tag get_th_RefBitLevel() const
static bool isGloballyInitialised
Core base globally initialized.
int sIze
MoFEM communicator size.
MeshsetsManager & get_meshsets_manager()
get MeshsetsManager pointer
PetscBool initaliseAndBuildField
static constexpr const int value
const int getValue() const
Get the core.
static PetscBool isInitialized
petsc was initialised by other agent
Tag th_ElemType
Needed for VTK files.
PetscBool initaliseAndBuildFiniteElements
Data structure to exchange data between mofem and User Loop Methods.
WrapMPIComm(MPI_Comm comm, bool petsc)
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
FiniteElement_multiIndex finiteElements
finite elements
Wrap MPI communicator such that is destroyed when is out of scope.
Finite element definition.
Tag th_Part
Tag for partition number.
std::reference_wrapper< moab::Interface > moab
moab database
MPI_Comm & get_comm() const
boost::shared_ptr< BasicEntityData > & get_basic_entity_data_ptr()
Get pointer to basic entity data.
MPI_Comm mofemComm
MoFEM communicator.
constexpr auto field_name
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.
ParallelComm * pComm
MOAB communicator structure.
base class for all interface classes
int verbose
Verbosity level.
boost::function< MoFEMErrorCode(Interface &moab, const Field &field, const EntFiniteElement &fe, std::vector< EntityHandle > &adjacency)> ElementAdjacencyFunct
user adjacency function
int & getBuildMoFEM() const
Get flags/semaphores for different stages.
int ApproximationOrder
Approximation on the entity.
std::string optionsPrefix
Prefix for options on command line.
Field_multiIndex fIelds
fields
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.
const MeshsetsManager & get_meshsets_manager() const
get MeshsetsManager pointer
char FieldBitNumber
Field bit number.
Tag th_ProblemLocalNbDofCol
Interface for managing meshsets containing materials and boundary conditions.
boost::weak_ptr< CacheTuple > CacheTupleWeakPtr
FieldApproximationBase
approximation base
MoFEMTypes
Those types control how functions respond on arguments, f.e. error handling.
MoFEMErrorCode set_moab_interface(moab::Interface &new_moab, int verb)
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.
DofEntity_multiIndex dofsField
dofs on fields
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
keeps basic data about problem
FieldEntity_multiIndex entsFields
entities on fields
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.
const moab::Interface & get_moab() const
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 > > > > EntFiniteElement_multiIndex
MultiIndex container for EntFiniteElement.
PetscLogEvent MOFEM_EVENT_postProcess
Event for postProcess finite element.
boost::shared_ptr< BasicEntityData > basicEntityDataPtr
const int getValue() const
Get the core.