Xfem
The Xfem Plugin
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
XfemEnrichedElementData Class Reference

A class used to store per element data needed only in enriched elements. More...

#include <xfemEnrichedElementData.h>

Collaboration diagram for XfemEnrichedElementData:
Collaboration graph
[legend]

Public Member Functions

 XfemEnrichedElementData (XfemIntegrationRule *ir)
 Constructor. More...
 
virtual ~XfemEnrichedElementData ()
 Destructor.
 
XfemIntegrationRuleregularIntegrationRule () const
 Return the integration rule tied to this enriched element for integration over regular (non fracture) sub-elements.
 
int numRegularSubElements () const
 Return the number of regular (non fracture) sub-elements of this element.
 
int numFractureSubElements () const
 Return the number of fracture sub-elements of this element.
 
int numElemInterInfo () const
 Return the number of this element Intersection data.
 
int numDofSet () const
 Return the number of this element Intersection data.
 
int numInteractingCraks () const
 Return the number of this element Intersection nodes with other cracks.
 
int numSubCraks () const
 Return the number of this element Intersection nodes with other cracks.
 
int numNodalLevelSet () const
 Return the number of this element enrichment functions for nodes.
 
int numGaussLevelSet () const
 Return the number of this element enrichment functions for gauss points.
 
int numNodedofSet () const
 Return the number of nodes with specific DOF sets compared to other nodes of the same element.
 
int numGaussDofSet () const
 Return the number of nodes with specific DOF sets compared to other integration points of the same element.
 
int numTopDofSet () const
 Return the number of nodes with specific DOF sets compared to other integration points of the same element.
 
int numBotDofSet () const
 Return the number of nodes with specific DOF sets compared to other integration points of the same element.
 
int numSubCrackState () const
 
int numSubCrackReactivation () const
 
int numCrackFrontNodes () const
 
int numNearestElem () const
 
XfemSubElementsubElement (int index) const
 Return a pointer to the given sub-element. Valid indices are from 0 to numRegularSubElements() + numFractureSubElements() - 1, remembering that fracture sub-elements are positioned as the last sub-elements.
 
XfemSubElementfractureSubElement (int index) const
 Return a fracture sub-element with an indexing starting from zero for the first fracture sub-element. Equivalent to calling subElement(index + numRegularSubElements())
 
GmElementDofdofMap ()
 Return the map with element nodes + ghost nodes dofs.
 
void setDofMap (GmElementDof *dofMap)
 Set the dof map for this enriched element. Should be called once. Takes ownership of the map.
 
void clearDofMap ()
 clear dof map of enriched elements changed later due to intersection with another crack
 
void appendElemInterInfo (GmVector Cr, bool type=true)
 
virtual void getElemInterInfo (GmVector &A, int n) const
 
void appendSubCrackInfo (GmVector Cr, bool type=true)
 
void insertSubCrackInfo (int path, GmVector A, GmVector B)
 
virtual void getSubCrackInfo (GmVector &A, int n) const
 
void appendDofSet (GmVector Cr, bool type=true)
 
void appendNodeDofSet (QList< GmVector > list, double n, bool type=true)
 
void appendSubCrackState (bool fracType, bool fracState, bool type=true)
 
void appendSubCrackReactivation (bool fracType, bool type=true)
 
virtual void getDofSet (GmVector &A, int n) const
 
void getNodeDofSet (QList< QPair< double, QList< GmVector >>> &list, int n) const
 
void getSubCrackState (QList< QPair< bool, bool >> &list, int n) const
 
void getSubCrackReactivation (bool &list, int n) const
 
virtual void replaceDofSet (GmVector A, int n)
 
void replaceSubCrackState (bool fracType, bool fracState, int index)
 
void replaceSubCrackReactivation (bool fracType, int index)
 
void deleteDofSet ()
 delete element DOF information
 
void deleteNodeDof ()
 delete specific node DOF information
 
void deleteSubCrackState ()
 
void appendInteractingCraks (GmVector Cr, bool type=true)
 
virtual void getInteractingCraks (GmVector &A, int n) const
 
void appendnumAddDOF (int Cr, bool type=true)
 
void replaceNumAddDOF (int Cr, int index)
 
virtual void getnumAddDOF (int &A, int n) const
 
void deleteNumAddDOF ()
 
void appendCrackFrontNodes (int Cr, int Cr2, bool type=true)
 
void replaceCrackFrontNodes (int Cr, int Cr2, int index)
 
virtual void getCrackFrontNodes (QPair< int, int > &crack, int n) const
 
void deleteCrackFrontNodes (int id)
 
void addNodalLevelSet (QList< QList< int >> nodalLevelSet)
 
virtual void getNodalLevelSet (int n, QList< int > &nodalLevelSet) const
 
void replaceNodalLevelSet (int n, QList< int > nodalLevelSet)
 
void deleteNodalLevelSet ()
 
void addNearestElement (QList< int > nodalLevelSet)
 
virtual void getNearestElement (int n, QList< int > &nodalLevelSet) const
 
void addGaussLevelSet (QList< int > gaussLevelSet)
 
virtual void getGaussLevelSet (int n, QList< int > &gaussLevelSet) const
 
void deleteGaussLevelSet ()
 
void addTopLevelSet (QList< int > TopLevelSet)
 
virtual void getTopLevelSet (int n, QList< int > &TopLevelSet) const
 
void deleteTopLevelSet ()
 
void addBottomLevelSet (QList< int > BottomLevelSet)
 
virtual void getBottomLevelSet (int n, QList< int > &BottomLevelSet) const
 
void deleteBottomLevelSet ()
 
void addGaussLevelSetInter (int n, QList< QList< int >> gaussLevelSetInter)
 
virtual void getGaussLevelSetInter (int n, QPair< int, QList< QList< int >>> &gaussLevelSetInter) const
 
void deleteGaussLevelSetInter ()
 
void replaceGaussLevelSetInter (int n, QPair< int, QList< QList< int >>> gaussLevelSetInter)
 
void addTopLevelSetInter (int n, QList< QList< int >> TopLevelSetInter)
 
virtual void getTopLevelSetInter (int n, QPair< int, QList< QList< int >>> &TopLevelSetInter) const
 
void deleteTopLevelSetInter ()
 
void replaceTopLevelSetInter (int n, QPair< int, QList< QList< int >>> TopLevelSetInter)
 
void addBottomLevelSetInter (int n, QList< QList< int >> BottomLevelSetInter)
 
virtual void getBottomLevelSetInter (int n, QPair< int, QList< QList< int >>> &BottomLevelSetInter) const
 
void deleteBottomLevelSetInter ()
 
void replaceBottomLevelSetInter (int n, QPair< int, QList< QList< int >>> BottomLevelSetInter)
 

Private Member Functions

void clearSubElements ()
 Removes all sub elements along with all their integration points.
 
int addSubElement (GmCellType type, XfemSubElement *se, const GmIntegrationRule *seIr)
 Adds the given sub-element to this element, adjusting the set of element integration points (for regular sub-elements). More...
 
void removeSubElement (int index)
 Removes the given sub-element from this element, adjusting the set of element integration points. More...
 
void updateSubElement (GmCellType type, XfemSubElement *se, const GmIntegrationRule *seIr, const GmMatrix &seNaturalCoords)
 Updates the given sub-element node coordinates, adjusting the position of the relevant element integration points (for regular sub-elements) More...
 

Private Attributes

XfemIntegrationRule_ir
 
QList< XfemSubElement * > _subElements
 
int _nRegular
 
GmElementDof_dofMap
 
QList< GmVector_elemInterInfo
 
QList< GmVector_subCrackInfo
 
QList< GmVector_interactingCraks
 
QList< int > _numAddDOF
 
QList< GmVector_dofSet
 
QList< QPair< double, QList< GmVector > > > _NodedofSet
 
QList< QList< int > > _nodalLevelSet
 
QList< QList< int > > _gaussLevelSet
 
QList< QList< int > > _TopLevelSet
 
QList< QList< int > > _BottomLevelSet
 
QList< QPair< int, QList< QList< int > > > > _gaussLevelSetInter
 
QList< QPair< int, QList< QList< int > > > > _TopLevelSetInter
 
QList< QPair< int, QList< QList< int > > > > _BottomLevelSetInter
 
QList< QPair< bool, bool > > _subCrackState
 
bool _changeCrackState
 
QList< bool > _crackReactivation
 
QList< QPair< int, int > > _crackFront
 
QList< QList< int > > _nearestElem
 

Friends

class XfemMesh
 

Detailed Description

A class used to store per element data needed only in enriched elements.

Constructor & Destructor Documentation

◆ XfemEnrichedElementData()

XfemEnrichedElementData::XfemEnrichedElementData ( XfemIntegrationRule ir)

Constructor.

Gets as parameter the elements new integration rule. Takes ownership of the rule. After construction, subelements should be added by calls to addSubElement().

Member Function Documentation

◆ addSubElement()

int XfemEnrichedElementData::addSubElement ( GmCellType  type,
XfemSubElement se,
const GmIntegrationRule seIr 
)
private

Adds the given sub-element to this element, adjusting the set of element integration points (for regular sub-elements).

If the given sub-element is regular and the set contains fracture sub-elements, the new sub-element will be inserted at the end of the list of regular sub-elements but before any fracture sub-elements, keeping the list with all fracture sub-elements at the end.

This function does not perform any test to guarantee that the given sub-element does not have any intersection with previously added elements

IMPORTANT: This function is private since it should be called by XfemMesh code only. Users should use XfemMesh::addSubElement() instead.

Parameters
typeThe current element type
seThe subelement to be added
seIrThe standard integration rule that should be applied to determine the subelement integration points.
Returns
Returns the index of the added sub-element. Please rememeber that this index can change if other sub-elements are added or removed from this element.

◆ removeSubElement()

void XfemEnrichedElementData::removeSubElement ( int  index)
private

Removes the given sub-element from this element, adjusting the set of element integration points.

IMPORTANT: This function is private since it should be called by XfemMesh code only. Users should use XfemMesh::removeSubElement() instead.

Parameters
indexThe subelement index inside the sub-element list

◆ updateSubElement()

void XfemEnrichedElementData::updateSubElement ( GmCellType  type,
XfemSubElement se,
const GmIntegrationRule seIr,
const GmMatrix seNaturalCoords 
)
private

Updates the given sub-element node coordinates, adjusting the position of the relevant element integration points (for regular sub-elements)

This function does not perform any test to guarantee that the given sub-element does not have any intersection with previously added elements

IMPORTANT: This function is private since it should be called by XfemMesh code only. Users should use XfemMesh::updateSubElementCoordinates() instead.

Parameters
typeThe current element type
seThe subelement to be changed
seIrThe standard integration rule that should be applied to determine the subelement integration points. IMPORTANT: The given rule MUST be the same used when the subelement was added in a call to addSubElement()
seNaturalCoordsThe subelement new node coordinates, given in the father element natural coordinate system. The matrix is organized as a 'd x n' matrix where d is the number of natural coordinates for the father element and n the number of nodes for the sub element type. See XfemSubElement() documentation for an example.

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