12#ifndef BELFEM_CL_FACET_HPP
13#define BELFEM_CL_FACET_HPP
35 Facet * mPeriodic = nullptr ;
109 node(
uint aIndex )
const override ;
136 edge(
const uint aIndex )
override ;
139 edge(
const uint aIndex )
const override ;
142 face(
const uint aIndex=0 )
override ;
145 face(
const uint aIndex=0 )
const override ;
161 flag_nodes(
const uint8_t aIndex=0 )
override ;
195 owner()
const override ;
257 flag(
const uint8_t aIndex = 0 )
override ;
262 unflag(
const uint8_t aIndex = 0 )
override ;
267 is_flagged(
const uint8_t aIndex = 0 )
const override;
277 index()
const override ;
378 return mElement->
node( aIndex );
384 return mElement->
node( aIndex );
392 return mElement->number_of_nodes();
400 return mElement->number_of_corner_nodes();
408 return mElement->number_of_edges() ;
416 return mElement->
edge( aIndex );
424 return mElement->
edge( aIndex );
432 return mElement->
face( aIndex );
440 return mElement->
face( aIndex );
456 mElement->flag_nodes( aIndex );
466 mMaster->flag_nodes() ;
470 mSlave->flag_nodes() ;
481 mMaster->flag_corner_nodes() ;
485 mSlave->flag_corner_nodes() ;
494 mElement->flag_corner_nodes();
503 "Facet %lu has no master element",
504 (
long unsigned int ) this->
id() );
505 return mMaster->index() + 1;
515 "Facet %lu has no slave element",
516 (
long unsigned int ) this->
id() );
525 return mMasterFaceID;
541 return mMaster !=
nullptr;
549 return mSlave !=
nullptr;
587 if ( mMaster !=
nullptr ) ++ aNumElems ;
588 if ( mSlave !=
nullptr ) ++ aNumElems ;
599 if ( mMaster !=
nullptr )
return mMaster ;
600 if ( mSlave !=
nullptr )
return mSlave ;
601 BELFEM_ASSERT(
false,
"Element index %u out of bounds.", aIndex );
606 BELFEM_ASSERT( mMaster !=
nullptr,
"Element index %u out of bounds.", aIndex );
607 BELFEM_ASSERT( mSlave !=
nullptr,
"Element index %u out of bounds.", aIndex );
619 if ( mMaster !=
nullptr )
return mMaster ;
620 if ( mSlave !=
nullptr )
return mSlave ;
621 BELFEM_ASSERT(
false,
"Element index %u out of bounds.", aIndex );
626 BELFEM_ASSERT( mMaster !=
nullptr,
"Element index %u out of bounds.", aIndex );
627 BELFEM_ASSERT( mSlave !=
nullptr,
"Element index %u out of bounds.", aIndex );
645 return mElement->owner() ;
653 mElement->flag( aIndex ) ;
661 mElement->unflag( aIndex ) ;
669 return mElement->is_flagged( aIndex ) ;
677 mElement->set_index( aIndex );
685 return mElement->index() ;
692 return mOrientationOnSlave ;
700 return mElement->is_curved() ;
708 return mElement->block_id() ;
716 mElement->set_physical_tag( aTag );
722 return mElement->physical_tag();
730 mElement->set_block_id( aSidesetID );
771 return mPeriodic != nullptr ;
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
virtual void set_owner(const proc_t aOwner)
Definition cl_Graph_Vertex.hpp:242
Special Edge class for NEDELEC-Type elements.
Definition cl_Edge.hpp:30
Lagrange Element baseclass.
Definition cl_Element.hpp:35
Definition cl_Face.hpp:29
Definition cl_Facet.hpp:24
bool has_slave() const
Definition cl_Facet.hpp:547
void disconnect_slave()
Definition cl_Facet.cpp:79
proc_t owner() const override
Definition cl_Facet.hpp:643
Element * element()
expose the element pointer
Definition cl_Facet.hpp:361
Edge * edge(const uint aIndex) override
Definition cl_Facet.hpp:414
void set_periodic(Facet *aFacet)
Definition cl_Facet.hpp:745
void flip()
Definition cl_Facet.cpp:90
uint physical_tag() const
Definition cl_Facet.hpp:720
uint number_of_nodes() const override
get the number of nodes
Definition cl_Facet.hpp:390
Node * node(uint aIndex) override
get a node pointer
Definition cl_Facet.hpp:376
Facet(Element *aElement)
Definition cl_Facet.cpp:20
size_t memory() const
Definition cl_Facet.cpp:135
id_t master_id() const
Definition cl_Facet.hpp:500
uint number_of_corner_nodes() const
get the number of corner nodes
Definition cl_Facet.hpp:398
uint number_of_edges() const override
get the number of edges
Definition cl_Facet.hpp:406
Element * slave()
Definition cl_Facet.hpp:569
Face * face(const uint aIndex=0) override
Definition cl_Facet.hpp:430
bool has_master() const
Definition cl_Facet.hpp:539
void flag_master_and_slave_nodes()
flag all nodes of the master and the slave element
Definition cl_Facet.hpp:462
void flag_nodes(const uint8_t aIndex=0) override
flag all nodes that belong to this facet
Definition cl_Facet.hpp:454
void flag_corner_nodes()
flag corner nodes nodes that belong to this facet
Definition cl_Facet.hpp:492
auto index_on_slave() const -> decltype(mSlaveFaceID)
Definition cl_Facet.hpp:531
index_t index() const override
Definition cl_Facet.hpp:683
void flag(const uint8_t aIndex=0) override
Definition cl_Facet.hpp:651
void set_facet_counter(const uint aCount)
Definition cl_Facet.hpp:736
bool is_curved() const
Definition cl_Facet.hpp:698
void unflag_nodes(const uint8_t aIndex=0) override
unflag all nodes that belong to this facet
Definition cl_Facet.hpp:446
void set_slave(Element *aElement, const uint aIndex)
Definition cl_Facet.cpp:60
bool is_flagged(const uint8_t aIndex=0) const override
Definition cl_Facet.hpp:667
uint number_of_elements() const override
Definition cl_Facet.hpp:584
bool is_periodic() const
Definition cl_Facet.hpp:769
Facet * periodic()
Definition cl_Facet.hpp:753
void set_sideset_id(const id_t aSidesetID)
Definition cl_Facet.hpp:728
uint orientation_on_slave() const
Definition cl_Facet.hpp:690
void flag_master_and_slave_corner_nodes()
flag the corner nodes of the master and the slave element
Definition cl_Facet.hpp:477
EntityType entity_type() const override
returns the type of this vertex
Definition cl_Facet.hpp:352
void unflag(const uint8_t aIndex=0) override
Definition cl_Facet.hpp:659
Element * master()
Definition cl_Facet.hpp:555
auto index_on_master() const -> decltype(mMasterFaceID)
Definition cl_Facet.hpp:523
void compute_orientation()
Definition cl_Facet.cpp:104
void set_owner(const proc_t aOwner) override
Definition cl_Facet.hpp:635
id_t sideset_id() const
Definition cl_Facet.hpp:706
void set_index(const index_t aIndex) override
Definition cl_Facet.hpp:675
void set_physical_tag(const uint aTag)
Definition cl_Facet.hpp:714
void set_master(Element *aElement, const uint aIndex, const bool aLinkNodes=true)
Definition cl_Facet.cpp:36
id_t slave_id() const
Definition cl_Facet.hpp:512
Definition cl_Node.hpp:30
virtual void unflag_nodes(const uint8_t aIndex=0)
Definition cl_Vertex.cpp:315
uint16_t mFacetCounter
Definition cl_Vertex.hpp:62
Face * face(const uint aIndex) override
Definition cl_Vertex.hpp:411
Node * node(const uint aIndex) override
Definition cl_Vertex.hpp:349
Edge * edge(const uint aIndex) override
Definition cl_Vertex.hpp:377
Vertex()
Definition cl_Vertex.cpp:24
Definition cl_EF_EdgeFunction.hpp:17
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
unsigned int id_t
Definition typedefs.hpp:41
int proc_t
Definition commtypes.hpp:29
EntityType
Definition Mesh_Enums.hpp:116
@ FACET
Definition Mesh_Enums.hpp:121
short unsigned int suint
Definition typedefs.hpp:32
uint32_t index_t
Definition typedefs.hpp:52
#define BELFEM_SUINT_MAX
Definition typedefs.hpp:79