|
| 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,
427 const std::string name,
const FieldSpace space,
433 std::pair<EntityType,
439 const TagType tag_type = MB_TAG_SPARSE,
469 add_field(
const std::string name,
const FieldSpace space,
472 const TagType tag_type = MB_TAG_SPARSE,
503 const TagType tag_type,
const enum MoFEMTypes bh,
507 const std::string &name,
510 const std::string &name,
513 const EntityType
type,
514 const std::string &name,
518 const std::string &name,
519 const bool recursive =
true,
522 const EntityType
type,
523 const std::string &name,
524 const bool recursive =
true,
527 MoFEMErrorCode create_vertices_and_add_to_field(
const std::string name,
528 const double coords[],
537 MoFEMErrorCode setFieldOrderImpl(boost::shared_ptr<Field> field_ptr,
553 const EntityType
type,
const std::string &name,
568 buildFieldForNoFieldImpl(boost::shared_ptr<Field> field_ptr,
569 std::map<EntityType, int> &dof_counter,
int verb);
572 std::map<EntityType, int> &dof_counter,
576 buildFieldForL2H1HcurlHdiv(
const BitFieldId id,
577 std::map<EntityType, int> &dof_counter,
578 std::map<EntityType, int> &inactive_dof_counter,
616 const EntityType
type,
626 MoFEMErrorCode list_dofs_by_field_name(
const std::string &name)
const;
628 BitFieldId get_field_id(
const std::string &name)
const;
629 FieldBitNumber get_field_bit_number(
const std::string name)
const;
630 std::string get_field_name(
const BitFieldId id)
const;
632 EntityHandle get_field_meshset(
const std::string name)
const;
633 MoFEMErrorCode get_field_entities_by_dimension(
const std::string name,
634 int dim,
Range &ents)
const;
637 MoFEMErrorCode get_field_entities_by_handle(
const std::string name,
639 bool check_field(
const std::string &name)
const;
641 const Field *get_field_structure(
const std::string &name,
651 get_finite_element_structure(
const std::string &name,
654 bool check_finite_element(
const std::string &name)
const;
660 modify_finite_element_adjacency_table(
const std::string &fe_name,
661 const EntityType
type,
664 modify_finite_element_add_field_data(
const std::string &fe_name,
665 const std::string name_filed);
667 modify_finite_element_add_field_row(
const std::string &fe_name,
668 const std::string name_row);
670 modify_finite_element_add_field_col(
const std::string &fe_name,
671 const std::string name_col);
673 modify_finite_element_off_field_data(
const std::string &fe_name,
674 const std::string name_filed);
676 modify_finite_element_off_field_row(
const std::string &fe_name,
677 const std::string name_row);
679 modify_finite_element_off_field_col(
const std::string &fe_name,
680 const std::string name_col);
683 const std::string &name,
const bool recursive =
true);
686 const std::string &name,
687 const bool recursive =
true);
689 const EntityType
type,
690 const std::string &name);
693 const std::string &name);
698 add_ents_to_finite_element_by_MESHSET(
const EntityHandle meshset,
699 const std::string &name,
700 const bool recursive =
false);
712 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
714 const EntityType
type,
716 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
731 BitFEId getBitFEId(
const std::string &fe_name)
const;
738 std::string getBitFEIdName(
const BitFEId id)
const;
741 EntityHandle get_finite_element_meshset(
const std::string name)
const;
743 get_finite_element_entities_by_dimension(
const std::string name,
int dim,
745 MoFEMErrorCode get_finite_element_entities_by_type(
const std::string name,
748 MoFEMErrorCode get_finite_element_entities_by_handle(
const std::string name,
761 bool check_problem(
const std::string name);
764 modify_problem_add_finite_element(
const std::string name_problem,
765 const std::string &fe_name);
767 modify_problem_unset_finite_element(
const std::string name_problem,
768 const std::string &fe_name);
770 modify_problem_ref_level_add_bit(
const std::string &name_problem,
773 modify_problem_ref_level_set_bit(
const std::string &name_problem,
776 modify_problem_mask_ref_level_add_bit(
const std::string &name_problem,
779 modify_problem_mask_ref_level_set_bit(
const std::string &name_problem,
781 BitProblemId getBitProblemId(
const std::string &name)
const;
790 const Range *
const ents_ptr =
nullptr,
792 MoFEMErrorCode buildFiniteElements(
const boost::shared_ptr<FiniteElement> &fe,
793 const Range *ents_ptr = NULL,
805 get_problem_finite_elements_entities(
const std::string name,
806 const std::string &fe_name,
841 clear_adjacencies_finite_elements(
const Range ents,
844 clear_adjacencies_finite_elements(
const std::string name,
const Range ents,
857 problem_basic_method_preProcess(
const std::string &problem_name,
864 problem_basic_method_postProcess(
const std::string &problem_name,
875 const Problem *problem_ptr,
const std::string &fe_name,
FEMethod &method,
876 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,
884 FEMethod &method,
int lower_rank,
int upper_rank,
885 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
891 const std::string problem_name,
const std::string &fe_name,
893 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
900 DofMethod &method,
int lower_rank,
int upper_rank,
904 DofMethod &method,
int lower_rank,
int upper_rank,
925 Range const *
const ents =
nullptr,
947 const Problem **problem_ptr)
const;
951 *dofs_elements_adjacency)
const;
960 const Problem *get_problem(
const std::string problem_name)
const;
963 get_ents_elements_adjacency()
const;
965 FieldEntityByUId::iterator
966 get_ent_field_by_name_begin(
const std::string &
field_name)
const;
967 FieldEntityByUId::iterator
968 get_ent_field_by_name_end(
const std::string &
field_name)
const;
969 DofEntityByUId::iterator
970 get_dofs_by_name_begin(
const std::string &
field_name)
const;
971 DofEntityByUId::iterator
972 get_dofs_by_name_end(
const std::string &
field_name)
const;
973 DofEntityByUId::iterator
974 get_dofs_by_name_and_ent_begin(
const std::string &
field_name,
976 DofEntityByUId::iterator
977 get_dofs_by_name_and_ent_end(
const std::string &
field_name,
979 DofEntityByUId::iterator
980 get_dofs_by_name_and_type_begin(
const std::string &
field_name,
981 const EntityType
type)
const;
982 DofEntityByUId::iterator
983 get_dofs_by_name_and_type_end(
const std::string &
field_name,
984 const EntityType ent)
const;
986 EntFiniteElement_multiIndex::index<Unique_mi_tag>::type::iterator
987 get_fe_by_name_begin(
const std::string &fe_name)
const;
988 EntFiniteElement_multiIndex::index<Unique_mi_tag>::type::iterator
989 get_fe_by_name_end(
const std::string &fe_name)
const;
1021 inline MPI_Comm &
get_comm()
const {
return mofemComm; }
1036 boost::shared_ptr<WrapMPIComm>
1044 mutable boost::ptr_map<boost::typeindex::type_index, UnknownInterface>
iFaces;
1132 virtual boost::shared_ptr<RefEntityTmp<0>>
1139 MPI_Comm comm = PETSC_COMM_WORLD,
1154 #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.
multi_index_container< DofsSideMapData, indexed_by< ordered_non_unique< tag< TypeSide_mi_tag >, composite_key< DofsSideMapData, member< DofsSideMapData, EntityType, &DofsSideMapData::type >, member< DofsSideMapData, int, &DofsSideMapData::side > >>, ordered_unique< tag< EntDofIdx_mi_tag >, member< DofsSideMapData, int, &DofsSideMapData::dof > > > > DofsSideMap
Map entity stype and side to element/entity dof index.
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.