v0.6.12
List of all members
MoFEM::CoreInterface Struct Referenceabstract

InterfaceThis interface is used by user to:
More...

#include <src/interfaces/Interface.hpp>

Inheritance diagram for MoFEM::CoreInterface:
[legend]
Collaboration diagram for MoFEM::CoreInterface:
[legend]

Interfaces

virtual moab::Interface & get_moab ()=0
 
virtual const moab::Interface & get_moab () const =0
 
virtual MeshsetsManagerget_meshsets_manager_ptr ()=0
 get MeshsetsManager pointer More...
 
virtual const MeshsetsManagerget_meshsets_manager_ptr () const =0
 get MeshsetsManager pointer More...
 
virtual MeshsetsManagerget_meshsets_manager ()=0
 get MeshsetsManager pointer More...
 
virtual const MeshsetsManagerget_meshsets_manager () const =0
 get MeshsetsManager pointer More...
 

Basic entity

virtual boost::shared_ptr< BasicEntityData > & get_basic_entity_data_ptr ()=0
 Get pointer to basic entity data. More...
 

Communicator

virtual MPI_Comm & get_comm () const =0
 
virtual int get_comm_size () const =0
 
virtual int get_comm_rank () const =0
 

Check consistency

virtual MoFEMErrorCode check_number_of_ents_in_ents_field (const std::string &name) const =0
 check data consistency in entitiesPtr More...
 
virtual MoFEMErrorCode check_number_of_ents_in_ents_field () const =0
 check data consistency in entitiesPtr More...
 
virtual MoFEMErrorCode check_number_of_ents_in_ents_finite_element (const std::string &name) const =0
 check data consistency in entsFiniteElements More...
 
virtual MoFEMErrorCode check_number_of_ents_in_ents_finite_element () const =0
 check data consistency in entsFiniteElements More...
 

Database

virtual MoFEMErrorCode clear_database (int verb=-1)=0
 Clear database. More...
 
virtual MoFEMErrorCode rebuild_database (int verb=-1)=0
 Clear database and initialize it once again. More...
 

Synchronize

virtual MoFEMErrorCode synchronise_entities (Range &ent, int verb=-1)=0
 
virtual MoFEMErrorCode synchronise_field_entities (const BitFieldId id, int verb=-1)=0
 
virtual MoFEMErrorCode synchronise_field_entities (const std::string &name, int verb=-1)=0
 

Seed entities

virtual MoFEMErrorCode seed_finite_elements (const EntityHandle meshset, int verb=-1)=0
 
virtual MoFEMErrorCode seed_finite_elements (const Range &entities, int verb=-1)=0
 

Delete and remove

virtual MoFEMErrorCode delete_ents_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, const bool remove_parent=false, int verb=-1)=0
 delete entities form mofem and moab database More...
 
virtual MoFEMErrorCode remove_ents (const Range &ents, int verb=-1)=0
 remove entities form mofem database More...
 
virtual MoFEMErrorCode remove_ents_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 remove entities form mofem database More...
 
virtual MoFEMErrorCode delete_finite_element (const std::string name, int verb=-1)=0
 delete finite element from mofem database More...
 

Fields

virtual MoFEMErrorCode add_field (const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_EXCL, int verb=-1)=0
 Add field. More...
 
virtual MoFEMErrorCode add_ents_to_field_by_dim (const Range &ents, const int dim, const std::string &name, int verb=-1)=0
 Add entities to field meshsetThe lower dimension entities are added depending on the space type. More...
 
virtual MoFEMErrorCode add_ents_to_field_by_type (const Range &ents, const EntityType type, const std::string &name, int verb=-1)=0
 Add entities to field meshsetThe lower dimension entities are added depending on the space type. More...
 
virtual MoFEMErrorCode add_ents_to_field_by_dim (const EntityHandle meshset, const int dim, const std::string &name, const bool recursive=true, int verb=-1)=0
 Add entities to field meshsetThe lower dimension entities are added depending on the space type. More...
 
virtual MoFEMErrorCode add_ents_to_field_by_type (const EntityHandle meshset, const EntityType type, const std::string &name, const bool recursive=true, int verb=-1)=0
 Add entities to field meshsetThe lower dimension entities are added depending on the space type. More...
 
virtual MoFEMErrorCode add_ents_to_field_by_VERTICEs (const Range &nodes, const std::string &name, int verb=-1)=0
 set field entities on verticesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_VERTICEs (const EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities on verticesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_EDGEs (const Range &edges, const std::string &name, int verb=-1)=0
 set field entities form adjacencies of edgesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_EDGEs (const EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities form adjacencies of edgesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_TRIs (const EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities form adjacencies of trianglesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_TRIs (const Range &tris, const std::string &name, int verb=-1)=0
 set field entities form adjacencies of trianglesThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_TETs (const EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of tetrahedronThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_TETs (const Range &tets, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of tetrahedronThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_QUADs (const Range &quads, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of quadsThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_QUADs (EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of quadsThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_PRISMs (const Range &prisms, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of prismsThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode add_ents_to_field_by_PRISMs (EntityHandle meshset, const std::string &name, int verb=-1)=0
 set field entities from adjacencies of prismsThe lower dimension entities are added depending on the space type More...
 
virtual MoFEMErrorCode remove_ents_from_field_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 remove entities from field More...
 
virtual MoFEMErrorCode remove_ents_from_field (const std::string &name, const EntityHandle meshset, const EntityType type, int verb=-1)=0
 remove entities from field More...
 
virtual MoFEMErrorCode remove_ents_from_field (const std::string &name, const Range &ents, int verb=-1)=0
 remove entities from field More...
 
virtual MoFEMErrorCode remove_ents_from_field (const Range &ents, int verb=-1)=0
 remove entities from all fields More...
 
virtual MoFEMErrorCode set_field_order (const EntityHandle meshset, const EntityType type, const std::string &name, const ApproximationOrder order, int verb=-1)=0
 Set order approximation of the entities in the field. More...
 
virtual MoFEMErrorCode set_field_order (const Range &ents, const std::string &name, const ApproximationOrder order, int verb=-1)=0
 Set order approximation of the entities in the field. More...
 
virtual MoFEMErrorCode set_field_order_by_entity_type_and_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, const EntityType type, const std::string &name, const ApproximationOrder order, int verb=-1)=0
 Set order approximation of the entities in the field. More...
 
virtual MoFEMErrorCode list_fields () const =0
 list entities in the field More...
 
virtual EntityHandle get_field_meshset (const std::string &name) const =0
 get field meshset More...
 
virtual MoFEMErrorCode get_field_entities_by_dimension (const std::string name, int dim, Range &ents) const =0
 get entities in the field by dimension More...
 
virtual MoFEMErrorCode get_field_entities_by_type (const std::string name, EntityType type, Range &ents) const =0
 get entities in the field by type More...
 
virtual MoFEMErrorCode get_field_entities_by_handle (const std::string name, Range &ents) const =0
 get entities in the field by handle More...
 
virtual bool check_field (const std::string &name) const =0
 check if field is in database More...
 
virtual const Fieldget_field_structure (const std::string &name)=0
 get field structure More...
 

Finite elements

virtual bool check_finite_element (const std::string &name) const =0
 Check if finite element is in database. More...
 
virtual MoFEMErrorCode add_finite_element (const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL)=0
 add finite element More...
 
virtual MoFEMErrorCode modify_finite_element_adjacency_table (const std::string &fe_name, const EntityType type, ElementAdjacencyFunct function)=0
 modify finite element table, only for advanced userUsing that functions means that you like to do something not usual. More...
 
virtual MoFEMErrorCode modify_finite_element_add_field_data (const std::string &fe_name, const std::string &name_filed)=0
 set finite element field data More...
 
virtual MoFEMErrorCode modify_finite_element_off_field_data (const std::string &fe_name, const std::string &name_filed)=0
 unset finite element field data More...
 
virtual MoFEMErrorCode modify_finite_element_add_field_row (const std::string &fe_name, const std::string &name_row)=0
 set field row which finite element use More...
 
virtual MoFEMErrorCode modify_finite_element_off_field_row (const std::string &fe_name, const std::string &name_row)=0
 unset field row which finite element use More...
 
virtual MoFEMErrorCode modify_finite_element_add_field_col (const std::string &fe_name, const std::string &name_row)=0
 set field col which finite element use More...
 
virtual MoFEMErrorCode modify_finite_element_off_field_col (const std::string &fe_name, const std::string &name_row)=0
 unset field col which finite element use More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_type (const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
 add entities to finite element More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_dim (const EntityHandle entities, const int dim, const std::string &name, const bool recursive=true)=0
 add entities to finite element More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_type (const Range &ents, const EntityType type, const std::string &name)=0
 add entities to finite elements More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_dim (const Range &ents, const int dim, const std::string &name)=0
 add entities to finite elements More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, const std::string &name, EntityType type, int verb=-1)=0
 add TET entities from given refinement level to finite element database given by name More...
 
virtual EntityHandle get_finite_element_meshset (const std::string &name) const =0
 
virtual MoFEMErrorCode get_finite_element_entities_by_dimension (const std::string name, int dim, Range &ents) const =0
 get entities in the finite element by dimension More...
 
virtual MoFEMErrorCode get_finite_element_entities_by_type (const std::string name, EntityType type, Range &ents) const =0
 get entities in the finite element by type More...
 
virtual MoFEMErrorCode get_finite_element_entities_by_handle (const std::string name, Range &ents) const =0
 get entities in the finite element by handle More...
 
virtual MoFEMErrorCode remove_ents_from_finite_element_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 remove elements from given refinement level to finite element database More...
 
virtual MoFEMErrorCode remove_ents_from_finite_element (const std::string &name, const EntityHandle meshset, const EntityType type, int verb=-1)=0
 remove entities from given refinement level to finite element database More...
 
virtual MoFEMErrorCode remove_ents_from_finite_element (const std::string &name, const Range &ents, int verb=-1)=0
 remove entities from finite element database More...
 
virtual MoFEMErrorCode remove_ents_from_finite_element (const Range &ents, int verb=-1)=0
 remove entities from finite elements in database More...
 
virtual MoFEMErrorCode add_ents_to_finite_element_by_MESHSET (const EntityHandle meshset, const std::string &name, const bool recursive=false)=0
 add MESHSET element to finite element database given by name More...
 
virtual MoFEMErrorCode list_finite_elements () const =0
 list finite elements in database More...
 
virtual MoFEMErrorCode list_adjacencies () const =0
 list adjacencies More...
 

Problems

virtual MoFEMErrorCode add_problem (const std::string &name, enum MoFEMTypes bh=MF_EXCL, int verb=-1)=0
 Add problem. More...
 
virtual bool check_problem (const std::string name)=0
 check if problem exist More...
 
virtual MoFEMErrorCode delete_problem (const std::string name)=0
 Delete problem. More...
 
virtual MoFEMErrorCode modify_problem_add_finite_element (const std::string &name_problem, const std::string &fe_name)=0
 add finite element to problem, this add entities assigned to finite element to a particular problem More...
 
virtual MoFEMErrorCode modify_problem_unset_finite_element (const std::string &name_problem, const std::string &fe_name)=0
 unset finite element from problem, this remove entities assigned to finite element to a particular problemNote: If problem is build, it need to be cleaned to make this effective More...
 
virtual MoFEMErrorCode modify_problem_ref_level_add_bit (const std::string &name_problem, const BitRefLevel &bit)=0
 add ref level to problemif same finite element is solved using different level of refinements, than the level of refinement has to be specificied to problem in query More...
 
virtual MoFEMErrorCode modify_problem_ref_level_set_bit (const std::string &name_problem, const BitRefLevel &bit)=0
 set ref level for problemif same finite element is solved using different level of refinements, than the level of refinement has to be specificied to problem in query More...
 
virtual MoFEMErrorCode modify_problem_mask_ref_level_set_bit (const std::string &name_problem, const BitRefLevel &bit)=0
 set dof mask ref level for problem More...
 
virtual MoFEMErrorCode list_problem () const =0
 list problems More...
 
virtual MoFEMErrorCode build_fields (int verb=-1)=0
 
virtual MoFEMErrorCode list_dofs_by_field_name (const std::string &name) const =0
 
virtual MoFEMErrorCode clear_problem (const std::string &name, int verb=-1)=0
 clear problem More...
 
virtual MoFEMErrorCode clear_problems (int verb=-1)=0
 clear problems More...
 
virtual MoFEMErrorCode partition_check_matrix_fill_in (const std::string &problem_name, int row, int col, int verb)=0
 check if matrix fill in correspond to finite element indices More...
 
virtual MoFEMErrorCode resolve_shared_ents (const Problem *problem_ptr, const std::string &fe_name, int verb=-1)=0
 resolve shared entities for finite elements in the problem More...
 
virtual MoFEMErrorCode resolve_shared_ents (const std::string &name, const std::string &fe_name, int verb=-1)=0
 resolve shared entities for finite elements in the problem More...
 
virtual MoFEMErrorCode get_problem_finite_elements_entities (const std::string &name, const std::string &fe_name, const EntityHandle meshset)=0
 add finite elements to the meshset More...
 

Clear dofs and entities

virtual MoFEMErrorCode clear_inactive_dofs (int verb=-1)=0
 
virtual MoFEMErrorCode clear_dofs_fields_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 
virtual MoFEMErrorCode clear_dofs_fields (const Range &ents, int verb=-1)=0
 
virtual MoFEMErrorCode clear_dofs_fields (const std::string &name, const Range &ents, int verb=-1)=0
 
virtual MoFEMErrorCode clear_ents_fields (const Range &ents, int verb=-1)=0
 
virtual MoFEMErrorCode clear_ents_fields (const std::string &name, const Range &ents, int verb=-1)=0
 
virtual MoFEMErrorCode clear_ents_fields_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 

Build fields, finite elements and problems

virtual MoFEMErrorCode build_finite_elements (int verb=-1)=0
 Build finite elementsBuild finite element data structures. Have to be run before problem and adjacencies are constructed. More...
 
virtual MoFEMErrorCode build_finite_elements (const string fe_name, const Range *ents_ptr=NULL, int verb=-1)=0
 Build finite elementsBuild finite element data structures. Have to be run before problem and adjacencies are constructed. More...
 

Clear finite elements

virtual MoFEMErrorCode clear_finite_elements_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 
virtual MoFEMErrorCode clear_finite_elements (const Range &ents, int verb=-1)=0
 
virtual MoFEMErrorCode clear_finite_elements (const std::string &name, const Range &ents, int verb=-1)=0
 

Build adjacencies

virtual MoFEMErrorCode build_adjacencies (const Range &ents, int verb=-1)=0
 build adjacencies More...
 
virtual MoFEMErrorCode build_adjacencies (const BitRefLevel &bit, int verb=-1)=0
 build adjacencies More...
 
virtual MoFEMErrorCode build_adjacencies (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 build adjacencies More...
 

Clear adjacencies

virtual MoFEMErrorCode clear_adjacencies_finite_elements (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 clear adjacency map for finite elements on given bit level More...
 
virtual MoFEMErrorCode clear_adjacencies_entities (const BitRefLevel &bit, const BitRefLevel &mask, int verb=-1)=0
 clear adjacency map for entities on given bit level More...
 

Create matrices

virtual MoFEMErrorCode MatCreateMPIAIJWithArrays (const std::string &name, Mat *Aij, int verb=-1)=0
 create Mat (MPIAIJ) for problem (collective) More...
 
virtual MoFEMErrorCode MatCreateMPIAdj_with_Idx_mi_tag (const std::string &name, Mat *Adj, int verb=-1)=0
 Create Adj matrix. More...
 
virtual MoFEMErrorCode MatCreateSeqAIJWithArrays (const std::string &name, Mat *Aij, PetscInt **i, PetscInt **j, PetscScalar **v, int verb=-1)=0
 create Mat (AIJ) for problem More...
 

Making loops on elements and entities

virtual MoFEMErrorCode problem_basic_method_preProcess (const Problem *problem_ptr, BasicMethod &method, int verb=-1)=0
 Set data for BasicMethod. More...
 
virtual MoFEMErrorCode problem_basic_method_preProcess (const std::string &problem_name, BasicMethod &method, int verb=-1)=0
 Set data for BasicMethod. More...
 
virtual MoFEMErrorCode problem_basic_method_postProcess (const Problem *problem_ptr, BasicMethod &method, int verb=-1)=0
 Set data for BasicMethodThis function set data about problem, adjacencies and other multi-indices in database. This function can be used a special case when user need to do some pre- and post-processing before matrix or vector is initiated, or to assemble matrix for group of FEMethods. Is used by classes SnesCtx and TsCtx. Look for more details there. More...
 
virtual MoFEMErrorCode problem_basic_method_postProcess (const std::string &problem_name, BasicMethod &method, int verb=-1)=0
 Set data for BasicMethodThis function set data about problem, adjacencies and other multi-indices in database. This function can be used a special case when user need to do some pre- and post-processing before matrix or vector is initiated, or to assemble matrix for group of FEMethods. Is used by classes SnesCtx and TsCtx. Look for more details there. More...
 
virtual MoFEMErrorCode loop_finite_elements (const std::string &problem_name, const std::string &fe_name, FEMethod &method, MoFEMTypes bh=MF_EXIST, int verb=-1)=0
 Make a loop over finite elements. More...
 
virtual MoFEMErrorCode loop_finite_elements (const Problem *problem_ptr, const std::string &fe_name, FEMethod &method, int lower_rank, int upper_rank, MoFEMTypes bh=MF_EXIST, int verb=-1)=0
 Make a loop over finite elements on partitions from upper to lower rank. More...
 
virtual MoFEMErrorCode loop_finite_elements (const std::string &problem_name, const std::string &fe_name, FEMethod &method, int lower_rank, int upper_rank, MoFEMTypes bh=MF_EXIST, int verb=-1)=0
 Make a loop over finite elements on partitions from upper to lower rank. More...
 
virtual MoFEMErrorCode loop_dofs (const Problem *problem_ptr, const std::string &field_name, RowColData rc, EntMethod &method, int lower_rank, int upper_rank, int verb=-1)=0
 Make a loop over entities. More...
 
virtual MoFEMErrorCode loop_dofs (const std::string &problem_name, const std::string &field_name, RowColData rc, EntMethod &method, int lower_rank, int upper_rank, int verb=-1)=0
 Make a loop over entities. More...
 
virtual MoFEMErrorCode loop_dofs (const std::string &problem_name, const std::string &field_name, RowColData rc, EntMethod &method, int verb=-1)=0
 Make a loop over entities. More...
 
virtual MoFEMErrorCode loop_dofs (const std::string &field_name, EntMethod &method, int verb=-1)=0
 Make a loop over entities. More...
 

Get pointers to multi-index database

virtual MoFEMErrorCode get_fields (const Field_multiIndex **fields_ptr) const =0
 Get fields multi-index from database. More...
 
virtual MoFEMErrorCode get_ref_ents (const RefEntity_multiIndex **refined_ents_ptr) const =0
 Get ref entities multi-index from database. More...
 
virtual MoFEMErrorCode get_ref_finite_elements (const RefElement_multiIndex **refined_finite_elements_ptr) const =0
 Get ref finite elements multi-index form database. More...
 
virtual MoFEMErrorCode get_finite_elements (const FiniteElement_multiIndex **fe_ptr) const =0
 Get finite elements multi-index. More...
 
virtual MoFEMErrorCode get_ents_finite_elements (const EntFiniteElement_multiIndex **fe_ent_ptr) const =0
 Get entities finite elements multi-index. More...
 
virtual MoFEMErrorCode get_problem (const std::string &problem_name, const Problem **problem_ptr) const =0
 Get problem database (data structure) More...
 
virtual MoFEMErrorCode get_problems (const Problem_multiIndex **problems_ptr) const =0
 Get pointer to problems multi-index. More...
 
virtual MoFEMErrorCode get_field_ents (const FieldEntity_multiIndex **field_ents) const =0
 Get field multi index. More...
 
virtual MoFEMErrorCode get_dofs (const DofEntity_multiIndex **dofs_ptr) const =0
 Get dofs multi index. More...
 
virtual FieldEntityByFieldName::iterator get_ent_field_by_name_begin (const std::string &field_name) const =0
 get begin iterator of filed ents of given name (instead you can use IT_GET_ENT_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,IT) mofem_field More...
 
virtual FieldEntityByFieldName::iterator get_ent_field_by_name_end (const std::string &field_name) const =0
 get begin iterator of filed dofs of given name (instead you can use IT_GET_ENT_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,IT) mofem_field More...
 
virtual DofEntityByFieldName::iterator get_dofs_by_name_begin (const std::string &field_name) const =0
 get begin iterator of filed dofs of given name (instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,IT) mofem_field More...
 
virtual DofEntityByFieldName::iterator get_dofs_by_name_end (const std::string &field_name) const =0
 get begin iterator of filed dofs of given name (instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,IT) mofem_field More...
 
virtual DofEntityByNameAndEnt::iterator get_dofs_by_name_and_ent_begin (const std::string &field_name, const EntityHandle ent) const =0
 get begin iterator of filed dofs of given name and ent(instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,ENT,IT) mofem_field More...
 
virtual DofEntityByNameAndEnt::iterator get_dofs_by_name_and_ent_end (const std::string &field_name, const EntityHandle ent) const =0
 get begin iterator of filed dofs of given name and ent (instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,ENT,IT)for(IT_GET_DOFS_FIELD_BY_NAME_AND_ENT_FOR_LOOP(MFIELD,NAME,ENT,IT)) { ... } More...
 
template<typename DIT >
MoFEMErrorCode get_field_dof_data (const std::string &name, const EntityHandle *ent, const int num_ents, DIT dit, int *count=NULL)
 get field data from entity and fieldthis function is not recommended to be used in finite element implementation More...
 
template<typename DIT >
MoFEMErrorCode get_field_dof_data (const std::string &name, const Range &ents, DIT dit, int *count=NULL)
 get field data from entity and fieldthis function is not recommended to be used in finite element implementation More...
 
virtual DofEntityByNameAndType::iterator get_dofs_by_name_and_type_begin (const std::string &field_name, const EntityType type) const =0
 get begin iterator of filed dofs of given name and ent type (instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,TYPE,IT) mofem_field More...
 
virtual DofEntityByNameAndType::iterator get_dofs_by_name_and_type_end (const std::string &field_name, const EntityType type) const =0
 get begin iterator of filed dofs of given name end ent type(instead you can use IT_GET_DOFS_FIELD_BY_NAME_FOR_LOOP(MFIELD,NAME,TYPE,IT) mofem_field More...
 
virtual EntFiniteElementByName::iterator get_fe_by_name_begin (const std::string &fe_name) const =0
 get begin iterator of finite elements of given name (instead you can use IT_GET_FES_BY_NAME_FOR_LOOP(MFIELD,NAME,IT) mofem_access More...
 
virtual EntFiniteElementByName::iterator get_fe_by_name_end (const std::string &fe_name) const =0
 get end iterator of finite elements of given name (instead you can use IT_GET_FES_BY_NAME_FOR_LOOP(MFIELD,NAME,IT)for(IT_GET_FES_BY_NAME_FOR_LOOP(MFIELD,NAME,IT)) { ... } More...
 

Additional Inherited Members

- Public Member Functions inherited from MoFEM::UnknownInterface
virtual MoFEMErrorCode query_interface (const MOFEMuuid &uuid, UnknownInterface **iface) const =0
 
template<class IFACE >
MoFEMErrorCode registerInterface (const MOFEMuuid &uuid, bool error_if_registration_failed=true)
 Register interface. More...
 
template<class IFACE , bool VERIFY>
MoFEMErrorCode getInterface (const MOFEMuuid &uuid, IFACE *&iface) const
 Get interface by uuid and return reference to pointer of interface. More...
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE *&iface) const
 Get interface refernce to pointer of interface. More...
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE **const iface) const
 Get interface pointer to pointer of interface. More...
 
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type >
IFACE getInterface () const
 Get interface pointer to pointer of interface. More...
 
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type >
IFACE getInterface () const
 Get reference to interface. More...
 
template<class IFACE >
IFACE * getInterface () const
 Function returning pointer to interface. More...
 
virtual ~UnknownInterface ()
 
virtual MoFEMErrorCode getLibVersion (Version &version) const
 Get library version. More...
 
virtual const MoFEMErrorCode getFileVersion (moab::Interface &moab, Version &version) const
 Get database major version. More...
 
virtual MoFEMErrorCode getInterfaceVersion (Version &version) const
 Get database major version. More...
 
template<>
MoFEMErrorCode getInterface (const MOFEMuuid &uuid, UnknownInterface *&iface) const
 
- Protected Member Functions inherited from MoFEM::UnknownInterface
boost::typeindex::type_index getClassIdx (const MOFEMuuid &uid) const
 Get type name for interface Id. More...
 
MOFEMuuid getUId (const boost::typeindex::type_index &class_idx) const
 Get interface Id for class name. More...
 

Detailed Description

Interface

This interface is used by user to:

Todo:
Clean interface, organize groups outsource some functions to independent interface
Examples:
mesh_cut.cpp.

Definition at line 39 of file Interface.hpp.

Member Function Documentation

◆ add_field()

virtual MoFEMErrorCode MoFEM::CoreInterface::add_field ( const std::string &  name,
const FieldSpace  space,
const FieldApproximationBase  base,
const FieldCoefficientsNumber  nb_of_coefficients,
const TagType  tag_type = MB_TAG_SPARSE,
const enum MoFEMTypes  bh = MF_EXCL,
int  verb = -1 
)
pure virtual

Add field.

Parameters
namename of the filed
spacespace (L2,H1,Hdiv,Hcurl)
baseapproximation base, see FieldApproximationBase
nb_of_coefficientsnumber of field coefficients
tag_typetype of the tag MB_TAG_DENSE or MB_TAG_SPARSE (DENSE is faster and uses less memory, SPARSE is more flexible if you define field on subdomains)
bhif MF_EXCL throws error if field exits, MF_ZERO no error if field exist
verbverbosity level
Returns
error code

Implemented in MoFEM::Core.

Examples:
cell_forces.cpp, elasticity.cpp, and MagneticElement.hpp.

◆ build_adjacencies() [1/3]

virtual MoFEMErrorCode MoFEM::CoreInterface::build_adjacencies ( const Range &  ents,
int  verb = -1 
)
pure virtual

build adjacencies

Parameters
listof entities

This function will get information of adjacent finite elements and fields of all entities. If this is not executed, partitioning the problem is not possible. Adjacency map is based on degrees of freedom adjacent to elements. This linked to geometric element connectivity.

If new degrees of freedom or new finite elements are added to the database, adjacency map has to be rebuild.

Implemented in MoFEM::Core.

Examples:
cell_forces.cpp, elasticity.cpp, and MagneticElement.hpp.

◆ build_adjacencies() [2/3]

virtual MoFEMErrorCode MoFEM::CoreInterface::build_adjacencies ( const BitRefLevel bit,
int  verb = -1 
)
pure virtual

build adjacencies

Parameters
bitadjacencies for refine level

This function will get information of adjacent finite elements and fields of all entities. If this is not executed, partitioning the problem is not possible. Adjacency map is based on degrees of freedom adjacent to elements. This linked to geometric element connectivity.

If new degrees of freedom or new finite elements are added to the database, adjacency map has to be rebuild.

Implemented in MoFEM::Core.

◆ build_adjacencies() [3/3]

virtual MoFEMErrorCode MoFEM::CoreInterface::build_adjacencies ( const BitRefLevel bit,
const BitRefLevel mask,
int  verb = -1 
)
pure virtual

build adjacencies

Parameters
bitadjacencies for refine level
maskmask for bit level

This function will get information of adjacent finite elements and fields of all entities. If this is not executed, partitioning the problem is not possible. Adjacency map is based on degrees of freedom adjacent to elements. This linked to geometric element connectivity.

If new degrees of freedom or new finite elements are added to the database, adjacency map has to be rebuild.

Implemented in MoFEM::Core.

◆ check_finite_element()

virtual bool MoFEM::CoreInterface::check_finite_element ( const std::string &  name) const
pure virtual

Check if finite element is in database.

Parameters
nameName of finite element
Returns
true if element is declared

Implemented in MoFEM::Core.

◆ check_number_of_ents_in_ents_field() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::check_number_of_ents_in_ents_field ( const std::string &  name) const
pure virtual

check data consistency in entitiesPtr

Implemented in MoFEM::Core.

◆ check_number_of_ents_in_ents_field() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::check_number_of_ents_in_ents_field ( ) const
pure virtual

check data consistency in entitiesPtr

Implemented in MoFEM::Core.

◆ check_number_of_ents_in_ents_finite_element() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::check_number_of_ents_in_ents_finite_element ( const std::string &  name) const
pure virtual

check data consistency in entsFiniteElements

Implemented in MoFEM::Core.

◆ check_number_of_ents_in_ents_finite_element() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::check_number_of_ents_in_ents_finite_element ( ) const
pure virtual

check data consistency in entsFiniteElements

Implemented in MoFEM::Core.

◆ clear_adjacencies_entities()

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_adjacencies_entities ( const BitRefLevel bit,
const BitRefLevel mask,
int  verb = -1 
)
pure virtual

clear adjacency map for entities on given bit level

Parameters
bit
mask

Implemented in MoFEM::Core.

◆ clear_adjacencies_finite_elements()

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_adjacencies_finite_elements ( const BitRefLevel bit,
const BitRefLevel mask,
int  verb = -1 
)
pure virtual

clear adjacency map for finite elements on given bit level

Parameters
bit
mask

Implemented in MoFEM::Core.

◆ clear_database()

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_database ( int  verb = -1)
pure virtual

Clear database.

Parameters
verbVerbosity level
Returns
Error code

Implemented in MoFEM::Core.

◆ clear_finite_elements() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_finite_elements ( const Range &  ents,
int  verb = -1 
)
pure virtual

clear finite elements

Implemented in MoFEM::Core.

◆ clear_finite_elements() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_finite_elements ( const std::string &  name,
const Range &  ents,
int  verb = -1 
)
pure virtual

clear finite elements

Implemented in MoFEM::Core.

◆ clear_finite_elements_by_bit_ref()

virtual MoFEMErrorCode MoFEM::CoreInterface::clear_finite_elements_by_bit_ref ( const BitRefLevel bit,
const BitRefLevel mask,
int  verb = -1 
)
pure virtual

clear finite elements

Implemented in MoFEM::Core.

◆ delete_ents_by_bit_ref()

virtual MoFEMErrorCode MoFEM::CoreInterface::delete_ents_by_bit_ref ( const BitRefLevel bit,
const BitRefLevel mask,
const bool  remove_parent = false,
int  verb = -1 
)
pure virtual

delete entities form mofem and moab database

Implemented in MoFEM::Core.

Examples:
split_sideset.cpp.

◆ delete_finite_element()

virtual MoFEMErrorCode MoFEM::CoreInterface::delete_finite_element ( const std::string  name,
int  verb = -1 
)
pure virtual

delete finite element from mofem database

Implemented in MoFEM::Core.

◆ get_basic_entity_data_ptr()

virtual boost::shared_ptr<BasicEntityData>& MoFEM::CoreInterface::get_basic_entity_data_ptr ( )
pure virtual

Get pointer to basic entity data.

This structure keeps data like tags handlers and other data used to construct mofem entities, dofs and finite elements.

Implemented in MoFEM::Core.

◆ get_comm()

virtual MPI_Comm& MoFEM::CoreInterface::get_comm ( ) const
pure virtual

get MPI communicator

Implemented in MoFEM::Core.

Examples:
AuxPoissonFunctions.hpp, and unsaturated_transport.cpp.

◆ get_comm_rank()

virtual int MoFEM::CoreInterface::get_comm_rank ( ) const
pure virtual

◆ get_comm_size()

virtual int MoFEM::CoreInterface::get_comm_size ( ) const
pure virtual

get communicator size

Implemented in MoFEM::Core.

◆ get_field_meshset()

virtual EntityHandle MoFEM::CoreInterface::get_field_meshset ( const std::string &  name) const
pure virtual

get field meshset

Parameters
nameof Field Example:
EntityHandle disp_files_meshset = mField.get_field_meshset("DISPLACEMENT");

Implemented in MoFEM::Core.

◆ get_meshsets_manager() [1/2]

virtual MeshsetsManager& MoFEM::CoreInterface::get_meshsets_manager ( )
pure virtual

get MeshsetsManager pointer

Implemented in MoFEM::Core.

◆ get_meshsets_manager() [2/2]

virtual const MeshsetsManager& MoFEM::CoreInterface::get_meshsets_manager ( ) const
pure virtual

get MeshsetsManager pointer

Implemented in MoFEM::Core.

◆ get_meshsets_manager_ptr() [1/2]

virtual MeshsetsManager* MoFEM::CoreInterface::get_meshsets_manager_ptr ( )
pure virtual

get MeshsetsManager pointer

Implemented in MoFEM::Core.

◆ get_meshsets_manager_ptr() [2/2]

virtual const MeshsetsManager* MoFEM::CoreInterface::get_meshsets_manager_ptr ( ) const
pure virtual

get MeshsetsManager pointer

Implemented in MoFEM::Core.

◆ get_moab() [1/2]

virtual moab::Interface& MoFEM::CoreInterface::get_moab ( )
pure virtual

◆ get_moab() [2/2]

virtual const moab::Interface& MoFEM::CoreInterface::get_moab ( ) const
pure virtual

get moab instance interface

Implemented in MoFEM::Core.

◆ list_adjacencies()

virtual MoFEMErrorCode MoFEM::CoreInterface::list_adjacencies ( ) const
pure virtual

list adjacencies

Implemented in MoFEM::Core.

◆ MatCreateMPIAdj_with_Idx_mi_tag()

virtual MoFEMErrorCode MoFEM::CoreInterface::MatCreateMPIAdj_with_Idx_mi_tag ( const std::string &  name,
Mat *  Adj,
int  verb = -1 
)
pure virtual

Create Adj matrix.

FIXME: Should be moved to independent interface MatManger

Parameters
name[description]
Adj[description]
verb[description]
Returns
[description]

Implemented in MoFEM::Core.

◆ MatCreateMPIAIJWithArrays()

virtual MoFEMErrorCode MoFEM::CoreInterface::MatCreateMPIAIJWithArrays ( const std::string &  name,
Mat *  Aij,
int  verb = -1 
)
pure virtual

create Mat (MPIAIJ) for problem (collective)

FIXME: Should be moved to independent interface MatManger

Parameters
nameof the problem

Implemented in MoFEM::Core.

◆ MatCreateSeqAIJWithArrays()

virtual MoFEMErrorCode MoFEM::CoreInterface::MatCreateSeqAIJWithArrays ( const std::string &  name,
Mat *  Aij,
PetscInt **  i,
PetscInt **  j,
PetscScalar **  v,
int  verb = -1 
)
pure virtual

create Mat (AIJ) for problem

FIXME: Should be moved to independent interface MatManger

Parameters
nameof the problem

Implemented in MoFEM::Core.

◆ modify_finite_element_add_field_col()

virtual MoFEMErrorCode MoFEM::CoreInterface::modify_finite_element_add_field_col ( const std::string &  fe_name,
const std::string &  name_row 
)
pure virtual

set field col which finite element use

Parameters
namefinite element name
namefield name

Implemented in MoFEM::Core.

Examples:
cell_forces.cpp, elasticity.cpp, MagneticElement.hpp, and simple_elasticity.cpp.

◆ problem_basic_method_preProcess() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::problem_basic_method_preProcess ( const Problem problem_ptr,
BasicMethod method,
int  verb = -1 
)
pure virtual

Set data for BasicMethod.

This function set data about problem, adjacencies and other multi-indices in database. This function can be used a special case when user need to do some pre- and post-processing before matrix or vector is initiated, or to assemble matrix for group of FEMethods. Is used by classes SnesCtx and TsCtx. Look for more details there.

FIXME: Here we need example

Parameters
pointerto problem data structure
methoduser method derived from BasicMethod

Implemented in MoFEM::Core.

◆ problem_basic_method_preProcess() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::problem_basic_method_preProcess ( const std::string &  problem_name,
BasicMethod method,
int  verb = -1 
)
pure virtual

Set data for BasicMethod.

This function set data about problem, adjacencies and other multi-indices in database. This function can be used a special case when user need to do some pre- and post-processing before matrix or vector is initiated, or to assemble matrix for group of FEMethods. Is used by classes SnesCtx and TsCtx. Look for more details there.

FIXME: Here we need example

Parameters
problem_namename of the problem
methoduser method derived from BasicMethod

Implemented in MoFEM::Core.

◆ rebuild_database()

virtual MoFEMErrorCode MoFEM::CoreInterface::rebuild_database ( int  verb = -1)
pure virtual

Clear database and initialize it once again.

Parameters
verbVerbosity level
Returns
Error code

Implemented in MoFEM::Core.

◆ remove_ents()

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents ( const Range &  ents,
int  verb = -1 
)
pure virtual

remove entities form mofem database

Implemented in MoFEM::Core.

◆ remove_ents_by_bit_ref()

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_by_bit_ref ( const BitRefLevel bit,
const BitRefLevel mask,
int  verb = -1 
)
pure virtual

remove entities form mofem database

Implemented in MoFEM::Core.

◆ remove_ents_from_finite_element()

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element ( const std::string &  name,
const EntityHandle  meshset,
const EntityType  type,
int  verb = -1 
)
pure virtual

remove entities from given refinement level to finite element database

Implemented in MoFEM::Core.

◆ seed_finite_elements() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::seed_finite_elements ( const EntityHandle  meshset,
int  verb = -1 
)
pure virtual

Create finite elements based from entities in meshsets. Throw error if entity is not in database

Todo:
Should be outsourced to separate interface, i.e. BitLevelManager
Parameters
EntityHandlemeshset

Implemented in MoFEM::Core.

◆ seed_finite_elements() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::seed_finite_elements ( const Range &  entities,
int  verb = -1 
)
pure virtual

Create finite elements based from entities in meshsets. Throw error if entity is not in database

Todo:
Should be outsourced to separate interface, i.e. BitLevelManager
Parameters
Rangeentities

Implemented in MoFEM::Core.

◆ synchronise_entities()

virtual MoFEMErrorCode MoFEM::CoreInterface::synchronise_entities ( Range &  ent,
int  verb = -1 
)
pure virtual

synchronize entity range on processors (collective)

collective - need tu be run on all processors in communicator

Implemented in MoFEM::Core.

Examples:
cell_forces.cpp, and elasticity.cpp.

The documentation for this struct was generated from the following file: