 |
| v0.10.0
|
Go to the documentation of this file.
26 struct MeshsetsManager;
32 static constexpr
const int value =
N;
44 MPI_Comm comm = PETSC_COMM_WORLD,
85 virtual boost::shared_ptr<RefEntityTmp<0>>
92 MPI_Comm comm = PETSC_COMM_WORLD,
166 boost::shared_ptr<BasicEntityData> &ptr);
168 static boost::shared_ptr<RefEntityTmp<0>>
208 BUILD_FIELD = 1 << 0,
211 BUILD_PROBLEM = 1 << 3,
212 PARTITION_PROBLEM = 1 << 4,
213 PARTITION_FE = 1 << 5,
214 PARTITION_GHOST_DOFS = 1 << 6,
215 PARTITION_MESH = 1 << 7
288 return basicEntityDataPtr;
318 std::reference_wrapper<moab::Interface>
moab;
335 check_number_of_ents_in_ents_field(
const std::string &name)
const;
338 check_number_of_ents_in_ents_finite_element(
const std::string &name)
const;
339 MoFEMErrorCode check_number_of_ents_in_ents_finite_element()
const;
359 return *get_meshsets_manager_ptr();
362 return *get_meshsets_manager_ptr();
388 const bool remove_parent =
false,
421 add_field(
const std::string &name,
const FieldSpace space,
424 const TagType tag_type = MB_TAG_SPARSE,
443 const TagType tag_type,
const enum MoFEMTypes bh,
447 const std::string &name,
450 const std::string &name,
453 const EntityType
type,
454 const std::string &name,
458 const std::string &name,
459 const bool recursive =
true,
462 const EntityType
type,
463 const std::string &name,
464 const bool recursive =
true,
467 MoFEMErrorCode create_vertices_and_add_to_field(
const std::string name,
468 const double coords[],
477 MoFEMErrorCode setFieldOrderImpl(boost::shared_ptr<Field> field_ptr,
489 MoFEMErrorCode set_field_order(
const Range &ents,
const std::string &name,
493 const EntityType
type,
const std::string &name,
508 buildFieldForNoFieldImpl(boost::shared_ptr<Field> field_ptr,
509 std::map<EntityType, int> &dof_counter,
int verb);
512 std::map<EntityType, int> &dof_counter,
516 buildFieldForL2H1HcurlHdiv(
const BitFieldId id,
517 std::map<EntityType, int> &dof_counter,
518 std::map<EntityType, int> &inactive_dof_counter,
536 MoFEMErrorCode clear_dofs_fields(
const std::string name,
const Range ents,
545 MoFEMErrorCode clear_ents_fields(
const std::string name,
const Range ents,
551 remove_ents_from_field_by_bit_ref(
const BitRefLevel bit,
556 const EntityType
type,
566 MoFEMErrorCode list_dofs_by_field_name(
const std::string &name)
const;
568 BitFieldId getBitFieldId(
const std::string &name)
const;
569 FieldBitNumber get_field_bit_number(
const std::string name)
const;
571 EntityHandle get_field_meshset(
const std::string name)
const;
572 MoFEMErrorCode get_field_entities_by_dimension(
const std::string name,
573 int dim, Range &ents)
const;
575 EntityType
type, Range &ents)
const;
576 MoFEMErrorCode get_field_entities_by_handle(
const std::string name,
578 bool check_field(
const std::string &name)
const;
579 const Field *get_field_structure(
const std::string &name);
587 bool check_finite_element(
const std::string &name)
const;
592 modify_finite_element_adjacency_table(
const std::string &fe_name,
593 const EntityType
type,
596 modify_finite_element_add_field_data(
const std::string &fe_name,
597 const std::string &name_filed);
599 modify_finite_element_add_field_row(
const std::string &fe_name,
600 const std::string &name_row);
602 modify_finite_element_add_field_col(
const std::string &fe_name,
603 const std::string &name_col);
605 modify_finite_element_off_field_data(
const std::string &fe_name,
606 const std::string &name_filed);
608 modify_finite_element_off_field_row(
const std::string &fe_name,
609 const std::string &name_row);
611 modify_finite_element_off_field_col(
const std::string &fe_name,
612 const std::string &name_col);
615 const std::string &name,
const bool recursive =
true);
618 const std::string &name,
619 const bool recursive =
true);
620 MoFEMErrorCode add_ents_to_finite_element_by_type(
const Range &ents,
621 const EntityType
type,
622 const std::string &name);
623 MoFEMErrorCode add_ents_to_finite_element_by_dim(
const Range &ents,
625 const std::string &name);
630 add_ents_to_finite_element_by_MESHSET(
const EntityHandle meshset,
631 const std::string &name,
632 const bool recursive =
false);
634 const Range &vert,
const std::string &name);
636 const Range &vert,
const std::string &name);
639 const bool recursive =
false);
641 const Range &tris,
const std::string &name);
644 const bool recursive =
false);
646 const Range &tets,
const std::string &name);
649 const bool recursive =
false);
653 const Range &prims,
const std::string &name);
656 const bool recursive =
false);
665 remove_ents_from_finite_element_by_bit_ref(
const BitRefLevel bit,
668 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
670 const EntityType
type,
672 MoFEMErrorCode remove_ents_from_finite_element(
const std::string name,
687 BitFEId getBitFEId(
const std::string &name)
const;
694 std::string getBitFEIdName(
const BitFEId id)
const;
696 EntityHandle get_finite_element_meshset(
const std::string &name)
const;
698 get_finite_element_entities_by_dimension(
const std::string name,
int dim,
700 MoFEMErrorCode get_finite_element_entities_by_type(
const std::string name,
703 MoFEMErrorCode get_finite_element_entities_by_handle(
const std::string name,
716 bool check_problem(
const std::string name);
719 modify_problem_add_finite_element(
const std::string &name_problem,
720 const std::string &MoFEMFiniteElement_name);
722 const std::string &name_problem,
723 const std::string &MoFEMFiniteElement_name);
725 modify_problem_ref_level_add_bit(
const std::string &name_problem,
728 modify_problem_ref_level_set_bit(
const std::string &name_problem,
731 modify_problem_mask_ref_level_add_bit(
const std::string &name_problem,
734 modify_problem_mask_ref_level_set_bit(
const std::string &name_problem,
736 BitProblemId getBitProblemId(
const std::string &name)
const;
745 const Range *
const ents_ptr =
nullptr,
747 MoFEMErrorCode buildFiniteElements(
const boost::shared_ptr<FiniteElement> &fe,
748 const Range *ents_ptr = NULL,
755 MoFEMErrorCode clear_finite_elements(
const std::string name,
const Range ents,
759 get_problem_finite_elements_entities(
const std::string &name,
760 const std::string &fe_name,
791 clear_adjacencies_finite_elements(
const BitRefLevel bit,
795 clear_adjacencies_finite_elements(
const Range ents,
798 clear_adjacencies_finite_elements(
const std::string name,
const Range ents,
811 problem_basic_method_preProcess(
const std::string &problem_name,
818 problem_basic_method_postProcess(
const std::string &problem_name,
829 const Problem *problem_ptr,
const std::string &fe_name,
FEMethod &method,
830 int lower_rank,
int upper_rank,
831 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
837 const std::string &problem_name,
const std::string &fe_name,
838 FEMethod &method,
int lower_rank,
int upper_rank,
839 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
845 const std::string &problem_name,
const std::string &fe_name,
847 boost::shared_ptr<NumeredEntFiniteElement_multiIndex> fe_ptr =
nullptr,
854 DofMethod &method,
int lower_rank,
int upper_rank,
858 DofMethod &method,
int lower_rank,
int upper_rank,
879 Range
const *
const ents =
nullptr,
901 const Problem **problem_ptr)
const;
905 *dofs_elements_adjacency)
const;
914 const Problem *get_problem(
const std::string problem_name)
const;
917 get_ents_elements_adjacency()
const;
919 FieldEntityByUId::iterator
920 get_ent_field_by_name_begin(
const std::string &field_name)
const;
921 FieldEntityByUId::iterator
922 get_ent_field_by_name_end(
const std::string &field_name)
const;
923 DofEntityByUId::iterator
924 get_dofs_by_name_begin(
const std::string &field_name)
const;
925 DofEntityByUId::iterator
926 get_dofs_by_name_end(
const std::string &field_name)
const;
927 DofEntityByUId::iterator
928 get_dofs_by_name_and_ent_begin(
const std::string &field_name,
930 DofEntityByUId::iterator
931 get_dofs_by_name_and_ent_end(
const std::string &field_name,
933 DofEntityByUId::iterator
934 get_dofs_by_name_and_type_begin(
const std::string &field_name,
935 const EntityType
type)
const;
936 DofEntityByUId::iterator
937 get_dofs_by_name_and_type_end(
const std::string &field_name,
938 const EntityType ent)
const;
939 EntFiniteElementByName::iterator
940 get_fe_by_name_begin(
const std::string &fe_name)
const;
941 EntFiniteElementByName::iterator
942 get_fe_by_name_end(
const std::string &fe_name)
const;
991 : comm(comm), duplicatedComm(duplicated_comm) {
992 ierr = PetscCommDuplicate(comm, &duplicated_comm, NULL);
993 CHKERRABORT(comm,
ierr);
996 ierr = PetscCommDestroy(&duplicatedComm);
997 CHKERRABORT(comm,
ierr);
1015 mutable boost::ptr_map<unsigned long, UnknownInterface>
iFaces;
1112 virtual boost::shared_ptr<RefEntityTmp<0>>
1119 MPI_Comm comm = PETSC_COMM_WORLD,
1135 #endif // __CORE_HPP__
Tag get_th_RefBitEdge() const
MPI_Comm & get_comm() const
Tag get_th_RefType() const
MoFEMErrorCode build_finite_elements(const string fe_name, const Range *const ents_ptr=nullptr, int verb=DEFAULT_VERBOSITY)
Build finite elements.
Deprecated interface functions.
boost::shared_ptr< BasicEntityData > basicEntityDataPtr
Data structure to exchange data between mofem and User Loop Methods.
PetscLogEvent MOFEM_EVENT_operator
Event for evaluating operator of finite element.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Interface for managing meshsets containing materials and boundary conditions.
int sIze
MoFEM communicator size.
int * fShift
Ptr to tag handle storing last set bit in field ID.
Data structure to exchange data between mofem and User Loop Methods on entities.
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
boost::shared_ptr< WrapMPIComm > wrapMPIComm
structure for User Loop Methods on finite elements
FieldEntityEntFiniteElementAdjacencyMap_multiIndex entFEAdjacencies
adjacencies of elements to dofs
const int getValue() const
Get the core.
DofEntity_multiIndex dofsField
dofs on fields
FiniteElement_multiIndex finiteElements
finite elements
int ApproximationOrder
Approximation on the entity.
Tag th_ProblemLocalNbDofRow
std::bitset< BITPROBLEMID_SIZE > BitProblemId
Problem Id.
int & getBuildMoFEM() const
Get flags/semaphores for different stages.
char FieldBitNumber
Field bit number.
int verbose
Verbosity level.
std::string optionsPrefix
Prefix for options on command line.
MoFEMErrorCode set_moab_interface(moab::Interface &new_moab, int verb)
DeprecatedCoreInterface Interface
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
static PetscBool isInitialized
petsc was initialised by other agent
Core interface class for user interface.
PetscLogEvent MOFEM_EVENT_createMat
FieldSpace
approximation spaces
Tag get_th_RefParentHandle() const
Problem_multiIndex pRoblems
problems multi-index
int * feShift
Ptr to tag handle storing last set bit in finite element ID.
DEPRECATED MoFEMErrorCode add_ents_to_finite_element_by_PRISMs(const Range &prims, const BitFEId id)
Tag get_th_RefBitLevel() const
int rAnk
MOFEM communicator rank.
int get_comm_rank() const
RefEntityTmp< 0 > getRefEntity(const EntityHandle ent)
RefEntity_multiIndex refinedEntities
refined entities
moab::Interface & get_moab()
std::bitset< BITFEID_SIZE > BitFEId
Finite element Id.
PetscBool initaliseAndBuildFiniteElements
ParallelComm * pComm
MOAB communicator structure.
boost::ptr_map< unsigned long, UnknownInterface > iFaces
Hash map of pointers to interfaces.
MPI_Comm & duplicatedComm
MoFEM interface unique ID.
Data structure to exchange data between mofem and User Loop Methods on entities.
FieldEntity_multiIndex entsFields
entities on fields
std::reference_wrapper< moab::Interface > moab
moab database
boost::weak_ptr< CacheTuple > CacheTupleWeakPtr
implementation of Data Operators for Forces and Sources
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
static constexpr const int value
const moab::Interface & get_moab() const
int * buildMoFEM
keeps flags/semaphores for different stages
virtual boost::shared_ptr< RefEntityTmp< 0 > > make_shared_ref_entity(const EntityHandle ent)
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.
PetscBool initaliseAndBuildField
MPI_Comm cOmm
MoFEM communicator.
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.
Provide data structure for (tensor) field approximation.
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
MultiIndex container keeps FieldEntity.
const MeshsetsManager & get_meshsets_manager() const
get MeshsetsManager pointer
static bool isGloballyInitialised
Core base globally initialized.
EntFiniteElement_multiIndex entsFiniteElements
finite element entities
int * pShift
Ptr to tag handle storing last set bit in problem ID.
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.
Field_multiIndex fIelds
fields
static int mpiInitialised
mpi was initialised by other agent
RefElement_multiIndex refinedFiniteElements
refined elements
MeshsetsManager & get_meshsets_manager()
get MeshsetsManager pointer
Tag th_ElemType
Needed for VTK files.
const int getValue() const
Get the core.
boost::shared_ptr< CacheTuple > CacheTupleSharedPtr
Struct keeps handle to refined handle.
PetscLogEvent MOFEM_EVENT_postProcess
Event for postProcess finite element.
std::bitset< BITFIELDID_SIZE > BitFieldId
Field Id.
Tag th_ProblemLocalNbDofCol
FieldApproximationBase
approximation base
MoFEMTypes
Those types control how functions respond on arguments, f.e. error handling.
int FieldCoefficientsNumber
Number of field coefficients.
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.
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.
int get_comm_size() const
keeps basic data about problem
const int getValue() const
CoreTmp(moab::Interface &moab, MPI_Comm comm=PETSC_COMM_WORLD, const int verbose=VERBOSE)
Tag th_Part
Tag for partition number.
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.
MoFEMErrorCode setFieldOrder(const Range &ents, const BitFieldId id, const ApproximationOrder order, int ver)
PetscLogEvent MOFEM_EVENT_preProcess
Event for preProcess finite element.
boost::function< MoFEMErrorCode(Interface &moab, const Field &field, const EntFiniteElement &fe, Range &adjacency)> ElementAdjacencyFunct
user adjacency function
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
WrapMPIComm(MPI_Comm &comm, MPI_Comm &duplicated_comm)
boost::shared_ptr< BasicEntityData > & get_basic_entity_data_ptr()
Get pointer to basic entity data.
base class for all interface classes