![]() |
v0.8.20
|
Make interface on given faces and create flat prism in that space. More...
#include <src/interfaces/PrismInterface.hpp>
Public Member Functions | |
MoFEMErrorCode | query_interface (const MOFEMuuid &uuid, UnknownInterface **iface) const |
PrismInterface (const MoFEM::Core &core) | |
~PrismInterface () | |
destructor More... | |
MoFEMErrorCode | getSides (const int msId, const CubitBCType cubit_bc_type, const BitRefLevel mesh_bit_level, const bool recursive, int verb=QUIET) |
create two children meshsets in the meshset containing tetrahedral on two sides of faces More... | |
MoFEMErrorCode | getSides (const EntityHandle sideset, const BitRefLevel mesh_bit_level, const bool recursive, int verb=QUIET) |
create two children meshsets in the meshset containing tetrahedral on two sides of faces More... | |
MoFEMErrorCode | findIfTringleHasThreeNodesOnInternalSurfaceSkin (const EntityHandle sideset, const BitRefLevel mesh_bit_level, const bool recursive, Range &faces_with_three_nodes_on_front, int verb=QUIET) |
Find if triangle has three nodes on internal surface skin. More... | |
MoFEMErrorCode | splitSides (const EntityHandle meshset, const BitRefLevel &bit, const int msId, const CubitBCType cubit_bc_type, const bool add_interface_entities, const bool recursive=false, int verb=QUIET) |
split nodes and other entities of tetrahedral in children sets and add prism elements More... | |
MoFEMErrorCode | splitSides (const EntityHandle meshset, const BitRefLevel &bit, const EntityHandle, const bool add_interface_entities, const bool recursive=false, int verb=QUIET) |
split nodes and other entities of tetrahedral in children sets and add prism elements More... | |
MoFEMErrorCode | splitSides (const EntityHandle meshset, const BitRefLevel &bit, const BitRefLevel &inhered_from_bit_level, const BitRefLevel &inhered_from_bit_level_mask, const EntityHandle sideset, const bool add_interface_entities, const bool recursive=false, int verb=QUIET) |
split nodes and other entities of tetrahedrons in children sets and add prism elements More... | |
![]() | |
template<class IFACE > | |
MoFEMErrorCode | registerInterface (const MOFEMuuid &uuid, bool error_if_registration_failed=true) |
Register interface. More... | |
template<class IFACE , bool VERIFY = false> | |
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 = 0> | |
IFACE | getInterface () const |
Get interface pointer to pointer of interface. More... | |
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0> | |
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 |
Public Attributes | |
MoFEM::Core & | cOre |
Additional Inherited Members | |
![]() | |
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... | |
Make interface on given faces and create flat prism in that space.
Definition at line 37 of file PrismInterface.hpp.
MoFEM::PrismInterface::PrismInterface | ( | const MoFEM::Core & | core | ) |
Definition at line 36 of file PrismInterface.cpp.
MoFEM::PrismInterface::~PrismInterface | ( | ) |
MoFEMErrorCode MoFEM::PrismInterface::findIfTringleHasThreeNodesOnInternalSurfaceSkin | ( | const EntityHandle | sideset, |
const BitRefLevel | mesh_bit_level, | ||
const bool | recursive, | ||
Range & | faces_with_three_nodes_on_front, | ||
int | verb = QUIET |
||
) |
Find if triangle has three nodes on internal surface skin.
Internal surface skin is a set of edges in the body on the boundary of the surface. This set of edges is called a surface front. If the surface the face has three nodes on the surface front, none of the face nodes is split and should be removed from the surface. Otherwise, such a triangle cannot be split.
sideset | meshset with surface |
mesh_bit_level | bit ref level of the volume mesh |
recursive | search in sub-meshsets |
faces_with_three_nodes_on_front | returned faces |
verb | verbosity level |
Definition at line 398 of file PrismInterface.cpp.
MoFEMErrorCode MoFEM::PrismInterface::getSides | ( | const int | msId, |
const CubitBCType | cubit_bc_type, | ||
const BitRefLevel | mesh_bit_level, | ||
const bool | recursive, | ||
int | verb = QUIET |
||
) |
create two children meshsets in the meshset containing tetrahedral on two sides of faces
msId | Id of meshset |
cubit_bc_type | type of meshset (NODESET, SIDESET or BLOCKSET and more) |
mesh_bit_level | add interface on bit level is bit_level = BitRefLevel.set() then add interface on all bit levels |
recursive | if true parent meshset is searched recursively |
Definition at line 39 of file PrismInterface.cpp.
MoFEMErrorCode MoFEM::PrismInterface::getSides | ( | const EntityHandle | sideset, |
const BitRefLevel | mesh_bit_level, | ||
const bool | recursive, | ||
int | verb = QUIET |
||
) |
create two children meshsets in the meshset containing tetrahedral on two sides of faces
Get tets adj to faces. Take skin form tets and get edges from that skin. Take skin form triangles (the face). Subtrac skin faces edges form skin edges in order to get edges on the boundary of the face which is in the volume of the body, but is not on the boundary. Each child set has a child containing nodes which can be split and skin edges. After that simply iterate under all tets on one side which are adjacent to the face are found. Side tets are stored in to children meshsets of the SIDESET meshset.
Definition at line 63 of file PrismInterface.cpp.
|
virtual |
Implements MoFEM::UnknownInterface.
Definition at line 24 of file PrismInterface.cpp.
MoFEMErrorCode MoFEM::PrismInterface::splitSides | ( | const EntityHandle | meshset, |
const BitRefLevel & | bit, | ||
const int | msId, | ||
const CubitBCType | cubit_bc_type, | ||
const bool | add_interface_entities, | ||
const bool | recursive = false , |
||
int | verb = QUIET |
||
) |
split nodes and other entities of tetrahedral in children sets and add prism elements
The all new entities (prisms, tets) are added to refinement level given by bit
meshset | meshset to get entities from |
BitRefLevel | new level where refinement would be stored |
msId | meshset ID imported from cubit |
cubit_bc_type | type of meshset (NODESET, SIDESET or BLOCKSET and more) |
add_interface_entities | meshset which contain the interface |
recursive | if true parent meshset is searched recursively |
Each inteface face has two tags, const int def_side[] = {0}; rval = moab.tag_get_handle("INTERFACE_SIDE",1,MB_TYPE_INTEGER, th_interface_side,MB_TAG_CREAT|MB_TAG_SPARSE,def_side); CHKERRQ_MOAB(rval);
const EntityHandle def_node[] = {0}; rval = moab.tag_get_handle("SIDE_INTFACE_ELEMENT",1,MB_TYPE_HANDLE, th_side_elem,MB_TAG_CREAT|MB_TAG_SPARSE,def_node); CHKERRQ_MOAB(rval);
First tag inform about inteface side, second tag inform about side adjacent inteface element.
Definition at line 543 of file PrismInterface.cpp.
MoFEMErrorCode MoFEM::PrismInterface::splitSides | ( | const EntityHandle | meshset, |
const BitRefLevel & | bit, | ||
const EntityHandle | sideset, | ||
const bool | add_interface_entities, | ||
const bool | recursive = false , |
||
int | verb = QUIET |
||
) |
split nodes and other entities of tetrahedral in children sets and add prism elements
The all new entities (prisms, tets) are added to refinement level given by bit
Definition at line 570 of file PrismInterface.cpp.
MoFEMErrorCode MoFEM::PrismInterface::splitSides | ( | const EntityHandle | meshset, |
const BitRefLevel & | bit, | ||
const BitRefLevel & | inhered_from_bit_level, | ||
const BitRefLevel & | inhered_from_bit_level_mask, | ||
const EntityHandle | sideset, | ||
const bool | add_interface_entities, | ||
const bool | recursive = false , |
||
int | verb = QUIET |
||
) |
split nodes and other entities of tetrahedrons in children sets and add prism elements
The all new entities (prisms, tets) are added to refinement level given by bit
meshset | |
Refinement | bit level of new mesh |
inhered_from_bit_level | inhered nodes and other entities form this bit level. |
add_interface_entities | add prism elements at interface |
recursive | do meshesets in the meshset |
note inhered_from_bit_level is need to be specified to some meshsets with interfaces. Some nodes on some refinement levels dividing edges but not splitting faces. Inheriting those nodes will not split faces.
Definition at line 581 of file PrismInterface.cpp.
MoFEM::Core& MoFEM::PrismInterface::cOre |
Definition at line 42 of file PrismInterface.hpp.