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

keeps data about abstract EDGE finite element More...

#include "src/multi_indices/RefElementMultiIndices.hpp"

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

Public Member Functions

 RefElement_EDGE (const boost::shared_ptr< RefEntity > &ref_ents_ptr)
 
virtual ~RefElement_EDGE ()=default
 
const boost::shared_ptr< SideNumber > & getSideNumberPtr (const EntityHandle ent) const
 
- Public Member Functions inherited from MoFEM::RefElement
 RefElement (const boost::shared_ptr< RefEntity > &ref_ents_ptr)
 
virtual ~RefElement ()=default
 
virtual const BitRefEdges & getBitRefEdges () const
 
virtual int getBitRefEdgesUlong () const
 
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
 

Friends

std::ostream & operator<< (std::ostream &os, const RefElement_EDGE &e)
 

Additional Inherited Members

- Public Types inherited from MoFEM::RefElement
using interface_type_RefEntity = interface_RefEntity< RefEntity >
 
- Public Attributes inherited from MoFEM::interface_RefEntity< RefEntity >
boost::shared_ptr< RefEntity > sPtr
 
- 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 EDGE finite element

Definition at line 112 of file RefElementMultiIndices.hpp.

Constructor & Destructor Documentation

◆ RefElement_EDGE()

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

Definition at line 412 of file RefElementMultiIndices.cpp.

414 : RefElement(ref_ents_ptr) {
415 switch (ref_ents_ptr->getEntType()) {
416 case MBEDGE:
417 break;
418 default:
419 THROW_MESSAGE("this work only for TRIs");
420 }
421}
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
RefElement(const boost::shared_ptr< RefEntity > &ref_ents_ptr)

◆ ~RefElement_EDGE()

virtual MoFEM::RefElement_EDGE::~RefElement_EDGE ( )
virtualdefault

Member Function Documentation

◆ getSideNumberPtr()

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

Reimplemented from MoFEM::RefElement.

Definition at line 423 of file RefElementMultiIndices.cpp.

423 {
424 moab::Interface &moab = getRefEntityPtr()->getBasicDataPtr()->moab;
425 SideNumber_multiIndex::iterator miit = sideNumberTable.find(ent);
426 if (miit != sideNumberTable.end())
427 return *miit;
428 if (sPtr->ent == ent) {
429 miit =
431 .insert(boost::shared_ptr<SideNumber>(new SideNumber(ent, 0, 0, 0)))
432 .first;
433 return *miit;
434 }
435 if (type_from_handle(ent) == MBENTITYSET) {
436 miit =
438 .insert(boost::shared_ptr<SideNumber>(new SideNumber(ent, 0, 0, 0)))
439 .first;
440 return *miit;
441 }
442 int side_number, sense, offset;
443 rval = moab.side_number(sPtr->ent, ent, side_number, sense, offset);
445 miit = const_cast<SideNumber_multiIndex &>(sideNumberTable)
446 .insert(boost::shared_ptr<SideNumber>(
447 new SideNumber(ent, side_number, sense, offset)))
448 .first;
449 // std::cerr << side_number << " " << sense << " " << offset << std::endl;
450 return *miit;
451}
#define MOAB_THROW(err)
Check error code of MoAB function and 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
auto type_from_handle(const EntityHandle h)
get type from entity handle
SideNumber_multiIndex sideNumberTable
boost::shared_ptr< RefEntity > & getRefEntityPtr() const
Get pointer to RefEntity.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const RefElement_EDGE &  e 
)
friend

Definition at line 452 of file RefElementMultiIndices.cpp.

452 {
453 os << *e.sPtr;
454 return os;
455}

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