v0.14.0
Finite elements

Adding and managing finite elements. More...

Collaboration diagram for Finite elements:

Finite elements

virtual MoFEMErrorCode MoFEM::CoreInterface::add_finite_element (const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
 add finite element More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::modify_finite_element_adjacency_table (const std::string &fe_name, const EntityType type, ElementAdjacencyFunct function)=0
 modify finite element table, only for advanced user More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::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 MoFEM::CoreInterface::add_ents_to_finite_element_by_bit_ref (const BitRefLevel &bit, const BitRefLevel &mask, const std::string &name, EntityType type, int verb=DEFAULT_VERBOSITY)=0
 add TET entities from given refinement level to finite element database given by name More...
 
virtual EntityHandle MoFEM::CoreInterface::get_finite_element_meshset (const std::string name) const =0
 
virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element_by_bit_ref (const BitRefLevel bit, const BitRefLevel mask, int verb=DEFAULT_VERBOSITY)=0
 remove elements from given refinement level to finite element database More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element (const std::string name, const Range ents, int verb=DEFAULT_VERBOSITY)=0
 remove entities from finite element database More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element (const Range ents, int verb=DEFAULT_VERBOSITY)=0
 remove entities from finite elements in database More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::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 MoFEM::CoreInterface::list_finite_elements () const =0
 list finite elements in database More...
 

Build fields, finite elements and problems

virtual MoFEMErrorCode MoFEM::CoreInterface::build_finite_elements (int verb=DEFAULT_VERBOSITY)=0
 Build finite elements. More...
 
virtual MoFEMErrorCode MoFEM::CoreInterface::build_finite_elements (const string fe_name, const Range *const ents_ptr=nullptr, int verb=DEFAULT_VERBOSITY)=0
 Build finite elements. More...
 

Detailed Description

Adding and managing finite elements.

Function Documentation

◆ add_ents_to_finite_element_by_bit_ref()

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_bit_ref ( const BitRefLevel bit,
const BitRefLevel mask,
const std::string &  name,
EntityType  type,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

add TET entities from given refinement level to finite element database given by name

Note
not collective
Parameters
BitRefLevelbit
BitRefLevelmask
finiteelement name
finiteelement type
verboselevel

Implemented in MoFEM::CoreTmp< 0 >.

◆ add_ents_to_finite_element_by_dim() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_dim ( const EntityHandle  entities,
const int  dim,
const std::string &  name,
const bool  recursive = true 
)
pure virtual

add entities to finite element

Note
not collective
Parameters
entitiesmeshset or range form were entities taken
dimdimension
namename of field
recursivetake entities from meshsets in meshset
Returns
error code

Implemented in MoFEM::CoreTmp< 0 >.

Examples
continuity_check_on_skeleton_3d.cpp, elasticity.cpp, hcurl_divergence_operator_2d.cpp, HookeElement.cpp, NavierStokesElement.hpp, photon_diffusion.cpp, remove_entities_from_problem.cpp, remove_entities_from_problem_not_partitioned.cpp, and simple_elasticity.cpp.

◆ add_ents_to_finite_element_by_dim() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_dim ( const Range ents,
const int  dim,
const std::string &  name 
)
pure virtual

add entities to finite elements

Note
not collective
Parameters
entsrange of entities
dimdimension of entities
namename of finite element
Returns
error code

Implemented in MoFEM::CoreTmp< 0 >.

◆ add_ents_to_finite_element_by_MESHSET()

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_MESHSET ( const EntityHandle  meshset,
const std::string &  name,
const bool  recursive = false 
)
pure virtual

add MESHSET element to finite element database given by name

Note
not collective
Parameters
meshsetcontains all entities that could be used for finite element
nameFinite Element name

Implemented in MoFEM::CoreTmp< 0 >.

◆ add_ents_to_finite_element_by_type() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_type ( const EntityHandle  entities,
const EntityType  type,
const std::string &  name,
const bool  recursive = true 
)
pure virtual

◆ add_ents_to_finite_element_by_type() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::add_ents_to_finite_element_by_type ( const Range ents,
const EntityType  type,
const std::string &  name 
)
pure virtual

add entities to finite elements

Note
not collective
Parameters
entsrange of entities
typetype of entity (MBVERTEX, MBEDGE, MBTRI, ...)
namename of finite element
Returns
error code

Implemented in MoFEM::CoreTmp< 0 >.

◆ add_finite_element()

virtual MoFEMErrorCode MoFEM::CoreInterface::add_finite_element ( const std::string &  fe_name,
enum MoFEMTypes  bh = MF_EXCL,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

◆ build_finite_elements() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::build_finite_elements ( const string  fe_name,
const Range *const  ents_ptr = nullptr,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

Build finite elements.

Build finite element data structures. Have to be run before problem and adjacencies are constructed.

Parameters
fe_nameName of finite element
ents_ptrPointer to range of finite elements
verbVerbosity level
Returns
Error code

Implemented in MoFEM::CoreTmp< 0 >.

◆ build_finite_elements() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::build_finite_elements ( int  verb = DEFAULT_VERBOSITY)
pure virtual

◆ get_finite_element_meshset()

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

get finite element meshset

Implemented in MoFEM::CoreTmp< 0 >.

Examples
level_set.cpp.

◆ list_finite_elements()

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

list finite elements in database

Implemented in MoFEM::CoreTmp< 0 >.

◆ 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

◆ modify_finite_element_add_field_data()

virtual MoFEMErrorCode MoFEM::CoreInterface::modify_finite_element_add_field_data ( const std::string &  fe_name,
const std::string  name_filed 
)
pure virtual

◆ modify_finite_element_add_field_row()

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

◆ modify_finite_element_adjacency_table()

virtual MoFEMErrorCode MoFEM::CoreInterface::modify_finite_element_adjacency_table ( const std::string &  fe_name,
const EntityType  type,
ElementAdjacencyFunct  function 
)
pure virtual

modify finite element table, only for advanced user

Note
add_file is a collective, should be executed on all processors. Otherwise could lead to deadlock.

Using that functions means that you like to do something not usual.

Implemented in MoFEM::CoreTmp< 0 >.

Examples
scalar_check_approximation.cpp.

◆ modify_finite_element_off_field_col()

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

unset field col which finite element use

Note
add_file is a collective, should be executed on all processors. Otherwise could lead to deadlock.
Parameters
namefinite element name
namefield name

Implemented in MoFEM::CoreTmp< 0 >.

◆ modify_finite_element_off_field_data()

virtual MoFEMErrorCode MoFEM::CoreInterface::modify_finite_element_off_field_data ( const std::string &  fe_name,
const std::string  name_filed 
)
pure virtual

unset finite element field data

Note
add_file is a collective, should be executed on all processors. Otherwise could lead to deadlock.
Parameters
namefinite element name
namefield name

This function will set memory in the form of a vector

Implemented in MoFEM::CoreTmp< 0 >.

◆ modify_finite_element_off_field_row()

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

unset field row which finite element use

Note
add_file is a collective, should be executed on all processors. Otherwise could lead to deadlock.
Parameters
namefinite element name
namefield name

Implemented in MoFEM::CoreTmp< 0 >.

◆ remove_ents_from_finite_element() [1/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element ( const Range  ents,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

remove entities from finite elements in database

Implemented in MoFEM::CoreTmp< 0 >.

◆ remove_ents_from_finite_element() [2/2]

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element ( const std::string  name,
const Range  ents,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

remove entities from finite element database

Implemented in MoFEM::CoreTmp< 0 >.

◆ remove_ents_from_finite_element_by_bit_ref()

virtual MoFEMErrorCode MoFEM::CoreInterface::remove_ents_from_finite_element_by_bit_ref ( const BitRefLevel  bit,
const BitRefLevel  mask,
int  verb = DEFAULT_VERBOSITY 
)
pure virtual

remove elements from given refinement level to finite element database

Parameters
BitRefLevelbit
BitRefLevelmask
verboselevel

Implemented in MoFEM::CoreTmp< 0 >.

CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:535