v0.16.3
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
MoFEM::RefElementVolume Struct Reference

keeps data about abstract TET finite element More...

#include "src/multi_indices/RefElementMultiIndices.hpp"

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

Public Member Functions

 RefElementVolume (const boost::shared_ptr< RefEntity > &ref_ents_ptr)
 
virtual ~RefElementVolume ()=default
 
const boost::shared_ptr< SideNumber > & getSideNumberPtr (const EntityHandle ent) const
 
SideNumber_multiIndex & getSideNumberTable () const
 
const BitRefEdges & getBitRefEdges () const
 
int getBitRefEdgesUlong () const
 
- Public Member Functions inherited from MoFEM::RefElement
 RefElement (const boost::shared_ptr< RefEntity > &ref_ents_ptr)
 
virtual ~RefElement ()=default
 
SideNumber_multiIndex & getSideNumberTable () const
 
boost::shared_ptr< RefEntity > & getRefEntityPtr () const
 Get pointer to RefEntity.
 
- Public Member Functions inherited from MoFEM::interface_RefEntity< RefEntity >
 interface_RefEntity (const boost::shared_ptr< RefEntity > &sptr)
 
 interface_RefEntity (const interface_RefEntity< RefEntity > &interface)
 
virtual ~interface_RefEntity ()=default
 
int getSideNumber () const
 
boost::shared_ptr< SideNumber > getSideNumberPtr () const
 
const boost::shared_ptr< BasicEntityData > getBasicDataPtr () const
 
EntityHandle getEnt () const
 
EntityType getParentEntType () const
 
EntityHandle getParentEnt () const
 
BitRefLevel * getBitRefLevelPtr () const
 
const BitRefLevel & getBitRefLevel () const
 
unsigned long int getBitRefLevelULong () const
 
EntityType getEntType () const
 
int getEntDimension () const
 
const char * getEntTypeName () const
 
EntityID getEntId () const
 
EntityHandle getOwnerEnt () const
 
EntityHandle & getOwnerEnt ()
 
int getOwnerProc () const
 
int getPartProc () const
 
int * getPartProcPtr () const
 
unsigned char getPStatus () const
 
int * getSharingProcsPtr () const
 
EntityHandle * getSharingHandlersPtr () const
 
boost::shared_ptr< RefEntity > & getRefEntityPtr () const
 

Public Attributes

BitRefEdges * tag_BitRefEdges
 
- Public Attributes inherited from MoFEM::interface_RefEntity< RefEntity >
boost::shared_ptr< RefEntity > sPtr
 

Additional Inherited Members

- Public Types inherited from MoFEM::RefElement
using interface_type_RefEntity = interface_RefEntity< RefEntity >
 
- Protected Attributes inherited from MoFEM::RefElement
SideNumber_multiIndex sideNumberTable
 
- Static Protected Attributes inherited from MoFEM::RefElement
static BitRefEdges DummyBitRefEdges = BitRefEdges(0)
 
static const boost::shared_ptr< SideNumber > nullSideNumber
 

Detailed Description

keeps data about abstract TET finite element

Definition at line 82 of file RefElementMultiIndices.hpp.

Constructor & Destructor Documentation

◆ RefElementVolume()

MoFEM::RefElementVolume::RefElementVolume ( const boost::shared_ptr< RefEntity > &  ref_ents_ptr)

Definition at line 282 of file RefElementMultiIndices.cpp.

283 : RefElement(ref_ents_ptr), tag_BitRefEdges(NULL) {
284 Tag th_RefBitEdge;
285 moab::Interface &moab = getRefEntityPtr()->getBasicDataPtr()->moab;
286 rval = moab.tag_get_handle("_RefBitEdge", th_RefBitEdge);
288 rval = moab.tag_get_by_ptr(th_RefBitEdge, &ref_ents_ptr->ent, 1,
289 (const void **)&tag_BitRefEdges);
291 switch (ref_ents_ptr->getEntType()) {
292 case MBTET:
293 case MBHEX:
294 break;
295 default:
296 THROW_MESSAGE("this work only for TETs or HEXs");
297 }
299 .insert(boost::make_shared<SideNumber>(sPtr->ent, 0, 0, 0));
300}
#define MOAB_THROW(err)
Check error code of MoAB function and throw MoFEM exception.
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
multi_index_container< boost::shared_ptr< SideNumber >, indexed_by< ordered_unique< member< SideNumber, EntityHandle, &SideNumber::ent > >, ordered_non_unique< composite_key< SideNumber, const_mem_fun< SideNumber, EntityType, &SideNumber::getEntType >, member< SideNumber, signed char, &SideNumber::side_number > > > > > SideNumber_multiIndex
SideNumber_multiIndex for SideNumber.
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
SideNumber_multiIndex sideNumberTable
RefElement(const boost::shared_ptr< RefEntity > &ref_ents_ptr)
boost::shared_ptr< RefEntity > & getRefEntityPtr() const
Get pointer to RefEntity.

◆ ~RefElementVolume()

virtual MoFEM::RefElementVolume::~RefElementVolume ( )
virtualdefault

Member Function Documentation

◆ getBitRefEdges()

const BitRefEdges & MoFEM::RefElementVolume::getBitRefEdges ( ) const
inlinevirtual

Reimplemented from MoFEM::RefElement.

Definition at line 92 of file RefElementMultiIndices.hpp.

92{ return *tag_BitRefEdges; }

◆ getBitRefEdgesUlong()

int MoFEM::RefElementVolume::getBitRefEdgesUlong ( ) const
inlinevirtual

Reimplemented from MoFEM::RefElement.

Definition at line 93 of file RefElementMultiIndices.hpp.

93{ return getBitRefEdges().to_ulong(); }
const BitRefEdges & getBitRefEdges() const

◆ getSideNumberPtr()

const boost::shared_ptr< SideNumber > & MoFEM::RefElementVolume::getSideNumberPtr ( const EntityHandle  ent) const
virtual

Reimplemented from MoFEM::RefElement.

Definition at line 303 of file RefElementMultiIndices.cpp.

303 {
304 moab::Interface &moab = getRefEntityPtr()->getBasicDataPtr()->moab;
305 auto miit = sideNumberTable.find(ent);
306 if (miit != sideNumberTable.end())
307 return *miit;
308 if (sPtr->ent == ent) {
309 miit = const_cast<SideNumber_multiIndex &>(sideNumberTable)
310 .insert(boost::make_shared<SideNumber>(ent, 0, 0, 0))
311 .first;
312 return *miit;
313 }
314 if (type_from_handle(ent) == MBENTITYSET) {
315 miit = const_cast<SideNumber_multiIndex &>(sideNumberTable)
316 .insert(boost::make_shared<SideNumber>(ent, 0, 0, 0))
317 .first;
318 return *miit;
319 }
320 int side_number, sense, offset;
321 rval = moab.side_number(sPtr->ent, ent, side_number, sense, offset);
323 auto p_miit = const_cast<SideNumber_multiIndex &>(sideNumberTable)
324 .insert(boost::make_shared<SideNumber>(ent, side_number,
325 sense, offset));
326 miit = p_miit.first;
327 if (miit->get()->ent != ent)
328 THROW_MESSAGE("this not working");
329
330 return *miit;
331}
auto type_from_handle(const EntityHandle h)
get type from entity handle

◆ getSideNumberTable()

SideNumber_multiIndex & MoFEM::RefElementVolume::getSideNumberTable ( ) const
inline

Definition at line 89 of file RefElementMultiIndices.hpp.

89 {
90 return const_cast<SideNumber_multiIndex &>(sideNumberTable);
91 };

Member Data Documentation

◆ tag_BitRefEdges

BitRefEdges* MoFEM::RefElementVolume::tag_BitRefEdges

Definition at line 83 of file RefElementMultiIndices.hpp.


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