v0.14.0
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_multiIndexgetSideNumberTable () const
 
const BitRefEdgesgetBitRefEdges () const
 
int getBitRefEdgesUlong () const
 
- Public Member Functions inherited from MoFEM::RefElement
 RefElement (const boost::shared_ptr< RefEntity > &ref_ents_ptr)
 
virtual ~RefElement ()=default
 
virtual const BitRefEdgesgetBitRefEdges () const
 
virtual int getBitRefEdgesUlong () const
 
SideNumber_multiIndexgetSideNumberTable () const
 
virtual const boost::shared_ptr< SideNumber > & getSideNumberPtr (const EntityHandle ent) const
 
boost::shared_ptr< RefEntity > & getRefEntityPtr () const
 Get pointer to RefEntity. More...
 
- 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< SideNumbergetSideNumberPtr () const
 
const boost::shared_ptr< BasicEntityDatagetBasicDataPtr () const
 
EntityHandle getEnt () const
 
EntityType getParentEntType () const
 
EntityHandle getParentEnt () const
 
BitRefLevelgetBitRefLevelPtr () const
 
const BitRefLevelgetBitRefLevel () const
 
unsigned long int getBitRefLevelULong () const
 
EntityType getEntType () const
 
int getEntDimension () const
 
const char * getEntTypeName () const
 
EntityID getEntId () const
 
EntityHandle getOwnerEnt () const
 
EntityHandlegetOwnerEnt ()
 
int getOwnerProc () const
 
int getPartProc () const
 
int * getPartProcPtr () const
 
unsigned char getPStatus () const
 
int * getSharingProcsPtr () const
 
EntityHandlegetSharingHandlersPtr () const
 
boost::shared_ptr< RefEntity > & getRefEntityPtr () const
 

Public Attributes

BitRefEdgestag_BitRefEdges
 
- Public Attributes inherited from MoFEM::RefElement
SideNumber_multiIndex side_number_table
 
- Public Attributes inherited from MoFEM::interface_RefEntity< RefEntity >
boost::shared_ptr< RefEntitysPtr
 

Additional Inherited Members

- Public Types inherited from MoFEM::RefElement
typedef interface_RefEntity< RefEntityinterface_type_RefEntity
 
- Static Public Attributes inherited from MoFEM::RefElement
static BitRefEdges DummyBitRefEdges = BitRefEdges(0)
 
static const boost::shared_ptr< SideNumbernullSideNumber
 

Detailed Description

keeps data about abstract TET finite element

Definition at line 81 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.
Definition: definitions.h:541
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:561
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
Definition: Exceptions.hpp:74
RefElement(const boost::shared_ptr< RefEntity > &ref_ents_ptr)
boost::shared_ptr< RefEntity > & getRefEntityPtr() const
Get pointer to RefEntity.
SideNumber_multiIndex side_number_table

◆ ~RefElementVolume()

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

Member Function Documentation

◆ getBitRefEdges()

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

Reimplemented from MoFEM::RefElement.

Definition at line 91 of file RefElementMultiIndices.hpp.

91{ return *tag_BitRefEdges; }

◆ getBitRefEdgesUlong()

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

Reimplemented from MoFEM::RefElement.

Definition at line 92 of file RefElementMultiIndices.hpp.

92{ 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 = side_number_table.find(ent);
306 if (miit != side_number_table.end())
307 return *miit;
308 if (sPtr->ent == ent) {
309 miit = const_cast<SideNumber_multiIndex &>(side_number_table)
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 &>(side_number_table)
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 &>(side_number_table)
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
Definition: Templates.hpp:1918

◆ getSideNumberTable()

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

Definition at line 88 of file RefElementMultiIndices.hpp.

88 {
89 return const_cast<SideNumber_multiIndex &>(side_number_table);
90 };

Member Data Documentation

◆ tag_BitRefEdges

BitRefEdges* MoFEM::RefElementVolume::tag_BitRefEdges

Definition at line 82 of file RefElementMultiIndices.hpp.


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