Geophysical Inversion and Modelling Library  v1.3.0-2-gcf7079e5
GIMLI::Boundary Class Reference

Inherits GIMLI::MeshEntity.

Inherited by GIMLI::Edge, GIMLI::NodeBoundary, GIMLI::PolygonFace, GIMLI::QuadrangleFace, and GIMLI::TriangleFace.

+ Collaboration diagram for GIMLI::Boundary:

Public Member Functions

 Boundary (const std::vector< Node * > &nodes)
 
virtual uint rtti () const
 
virtual uint parentType () const
 
virtual RVector3 rst (uint i) const
 
const CellleftCell () const
 
CellleftCell ()
 
const CellrightCell () const
 
CellrightCell ()
 
void setLeftCell (Cell *cell)
 
void setRightCell (Cell *cell)
 
virtual RVector3 norm () const
 
virtual RVector3 norm (const Cell &cell) const
 
bool normShowsOutside (const Cell &cell) const
 
void swapNorm (bool withNeighbours=true)
 
bool outside () const
 
- Public Member Functions inherited from GIMLI::MeshEntity
 MeshEntity ()
 
virtual ~MeshEntity ()
 
virtual uint dim () const
 
virtual void setNodes (const std::vector< Node * > &nodes)
 
const std::vector< Node * > & nodes () const
 
Nodenode (uint i)
 
Nodenode (uint i) const
 
uint nodeCount () const
 
Shapeshape ()
 
Shapeshape () const
 
ShapepShape ()
 
RVector3 rst (uint i) const
 
RVector3 center () const
 
double size () const
 
virtual double attribute () const
 
IndexArray ids () const
 
virtual std::vector< PolynomialFunction< double > > createShapeFunctions () const
 
virtual RVector N (const RVector3 &rst) const
 
virtual void N (const RVector3 &rst, RVector &n) const
 
virtual RVector dNdL (const RVector3 &rst, uint i) const
 
virtual RMatrix dNdL (const RVector3 &rst) const
 
double pot (const RVector3 &p, const RVector &u) const
 
RVector3 vec (const RVector3 &p, const R3Vector &v) const
 
RVector3 grad (const RVector3 &p, const RVector &u) const
 
void setUxCache (const RMatrix &mat) const
 
const RMatrixuxCache () const
 
ElementMatrix< double > & uCache ()
 
ElementMatrix< double > & gradUCache ()
 
void changed ()
 
void addSecondaryNode (Node *n)
 
void delSecondaryNode (Node *n)
 
const std::vector< Node * > & secondaryNodes () const
 
const std::vector< Node * > allNodes () const
 
Index allNodeCount () const
 
virtual bool enforcePositiveDirection ()
 
- Public Member Functions inherited from GIMLI::BaseEntity
 BaseEntity (const BaseEntity &ent)
 
BaseEntityoperator= (const BaseEntity &ent)
 
virtual bool valid () const
 
virtual void setValid (bool valid)
 
int id () const
 
void setId (int id)
 
void setMarker (int marker)
 
int marker () const
 
void setTagged (bool tagged)
 
void untag ()
 
void tag ()
 
bool tagged () const
 

Protected Member Functions

void registerNodes_ ()
 
void deRegisterNodes_ ()
 
 Boundary (const Boundary &bound)
 
Boundaryoperator= (const Boundary &boundary)
 
- Protected Member Functions inherited from GIMLI::MeshEntity
void fillShape_ ()
 
 MeshEntity (const MeshEntity &ent)
 
MeshEntityoperator= (const MeshEntity &ent)
 

Protected Attributes

CellleftCell_
 
CellrightCell_
 
- Protected Attributes inherited from GIMLI::MeshEntity
Shapeshape_
 
std::vector< Node * > nodeVector_
 
std::vector< Node * > secondaryNodes_
 
ElementMatrix< double > uCache_
 
ElementMatrix< double > gradUCache_
 
RMatrix uxCache_
 
- Protected Attributes inherited from GIMLI::BaseEntity
int id_
 
bool valid_
 
int marker_
 
bool tagged_
 

Friends

std::ostream & operator<< (std::ostream &str, const Boundary &e)
 

Constructor & Destructor Documentation

◆ Boundary()

GIMLI::Boundary::Boundary ( const Boundary bound)
inlineprotected

Don't call this class directly

Member Function Documentation

◆ leftCell()

const Cell& GIMLI::Boundary::leftCell ( ) const
inline

Normal vector of the boundary shows outside for left cell. Every boundary needs a left cell for a valid mesh.

Referenced by GIMLI::Mesh::createNeighborInfos(), GIMLI::dcfemDomainAssembleStiffnessMatrix(), norm(), GIMLI::RegionManager::permuteParameterMarker(), and GIMLI::Region::resize().

◆ norm() [1/2]

RVector3 GIMLI::Boundary::norm ( ) const
virtual

Return normal vector for this boundary.

Reimplemented in GIMLI::NodeBoundary.

References leftCell().

Referenced by rst().

◆ norm() [2/2]

RVector3 GIMLI::Boundary::norm ( const Cell cell) const
virtual

Return outer normal vector for this boundary regarding the given cell. The boundary should part of this cell.

◆ normShowsOutside()

bool GIMLI::Boundary::normShowsOutside ( const Cell cell) const

Return true if the normal vector of this boundary shown from the cell away (outside-direction)

Referenced by GIMLI::Mesh::createNeighborInfos().

◆ operator=()

Boundary& GIMLI::Boundary::operator= ( const Boundary boundary)
inlineprotected

Don't call this class directly

◆ outside()

bool GIMLI::Boundary::outside ( ) const
inline

Is the boundary is on the outside of the mesh.

◆ parentType()

virtual uint GIMLI::Boundary::parentType ( ) const
inlinevirtual

To separate between major MeshEntity families e.g. Cell and Boundary.

Reimplemented from GIMLI::MeshEntity.

◆ rst()

RVector3 GIMLI::Boundary::rst ( uint  i) const
virtual

Return these coordinates manual until boundary coordinate transformation is done.

Reimplemented in GIMLI::Quadrangle8Face, GIMLI::Triangle6Face, and GIMLI::Edge3.

References GIMLI::MeshEntity::center(), and norm().

◆ rtti()

virtual uint GIMLI::Boundary::rtti ( ) const
inlinevirtual

◆ swapNorm()

void GIMLI::Boundary::swapNorm ( bool  withNeighbours = true)

Reverse node order to swap normal direction.

Referenced by GIMLI::Mesh::createNeighborInfos().