Xfem
The Xfem Plugin
Public Member Functions | List of all members
XfemPos Class Reference

A simple class to represent a natural fracture. More...

#include <xfemPos.h>

Inheritance diagram for XfemPos:
Inheritance graph
[legend]
Collaboration diagram for XfemPos:
Collaboration graph
[legend]

Public Member Functions

 XfemPos (XfemMesh *_xmesh, XfemOptions &xfemOptions, GmSimulationData *simulation, QList< GmpFemPhysics * > &physics, const GmLogCategory &logger)
 Constructor for a Xfem pos-processor used in Xfem process. More...
 
virtual ~XfemPos ()
 Destructor.
 
virtual bool checkFractureTips (XfemMesh *xmesh) const
 check crack heads if it can propagate or it's at the boundary of the model More...
 
virtual bool setRegionsToCheck (XfemMesh *xmesh) const
 set regions to check fracture propagation
 
virtual bool setRegionsToCheck3D (XfemMesh *xmesh) const
 set regions to check fracture propagation
 
bool setFrontToCheck3D (XfemMesh *xmesh) const
 check fracture propagation at the crack front
 
virtual bool noInitialCracks (XfemMesh *xmesh) const
 Treatment for No inital cracks in the model. More...
 
virtual bool nonLocalQuad (XfemMesh *xmesh, XfemFracture *fracture, QList< GmVector > &headIp, QList< GmVector > &tailIp, int idCrack) const
 set region to check for nonLocal quadrangular polygon
 
virtual bool nonLocalCircle (XfemMesh *xmesh, XfemFracture *fracture, QList< GmVector > &headIp, QList< GmVector > &tailIp) const
 set region to check for nonLocal semi circle
 
virtual bool createPolygon (XfemMesh *xmesh, GmVector Crk, GmMatrix &pCoords) const
 get polygon coords
 
virtual bool polygonArea (GmMatrix Xnodes, double &S) const
 get polygon Area
 
virtual bool checkPropagation (XfemMesh *xmesh) const
 check propagation of fractures in integration points inside a region around both head and tail tips
 
virtual bool checkPropagation3D (XfemMesh *xmesh) const
 check propagation of fractures in integration points inside a region around its front nodes
 
virtual bool testPropagation3D (XfemMesh *xmesh) const
 check propagation of fractures in integration points inside a region around its front nodes
 
virtual bool checkCrackReactivation (XfemMesh *xmesh, GmVector crackPath, XfemEnrichedElementData *exData) const
 
virtual bool averageStressStrainField (XfemMesh *xmesh, XfemFracture *fracture, GmVector &fieldValue, double &strength, bool isHead) const
 computes the average stress/strain field according to the defined propagation criteria and weight function
 
virtual bool averageStressStrainField3D (XfemMesh *xmesh, XfemFracture *fracture, int index, GmMatrix ROT2, GmVector &fieldValue, GmMatrix &fieldDir, bool &next) const
 computes the average stress/strain field according to the defined propagation criteria
 
virtual bool testAverageStressStrainField3D (XfemMesh *xmesh, XfemFracture *fracture, GmCell *e, int index, GmMatrix ROT2, GmVector &fieldValue, GmMatrix &fieldDir, bool &next) const
 computes the average stress/strain field according to the defined propagation criteria
 
virtual bool averageUnitVectors3D (XfemMesh *xmesh, XfemFracture *fracture, int index, GmMatrix &ROT2) const
 get average stress or strain field according to propagation criteria and weight function
 
virtual bool extendCrackPlane3D (XfemMesh *xmesh, XfemFracture *fracture, XfemElement *xe, GmCell *e, int index, GmMatrix ROT2, GmVector &fieldValue, GmMatrix &fieldDir, GmMatrix &Xg, GmVector &v_n, GmMatrix &planeCoord, QList< int > &crackNodeId) const
 extend Crack Plane 3D More...
 
virtual bool testExtendCrackPlane3D (XfemMesh *xmesh, XfemFracture *fracture, XfemElement *xe, GmCell *e, int index, GmMatrix ROT2, GmVector &fieldValue, GmMatrix &fieldDir, GmMatrix &Xg, GmVector &v_n, GmMatrix &planeCoord, QList< int > &crackNodeId, bool &next) const
 extend Crack Plane 3D More...
 
virtual bool stressStrainField (XfemMesh *xmesh, XfemFracture *fracture, GmVector &fieldValue, double &strength, bool isHead) const
 computes stress/strain field according to the defined propagation criteria and weight function More...
 
virtual bool weightFunction (XfemMesh *xmesh, XfemFracture *fracture, GmVector Xip, double &w, bool isHead) const
 
virtual bool updateGeomEnrich (XfemMesh *xmesh) const
 Allow to update crack geometry after propagation.
 
virtual bool updateGeomEnrich3D (XfemMesh *xmesh) const
 Allow to update crack geometry after propagation.
 
virtual bool updateCrackData3D (XfemMesh *xmesh, GmMatrix &planeCoord, QList< GmVector > aCrack, int index, int iCr, QList< int > &crackNodeId, int &nodeIndex, GmVector &pathData, bool &next, QList< GmVector > &ghostList) const
 Update Crack Data 3D.
 
virtual bool crackPropagation (XfemMesh *xmesh, XfemFracture *Fr, int index, int secondaryCrack, bool isHead, GmVector crackInfo, GmVector stress, GmVector B, QList< GmVector > &aCrack, int &nInterElem, bool &noCrossingNFReactivation) const
 treat propagation of fractures
 
virtual bool updateElmentIntersection (XfemMesh *xmesh, GmCell *e, XfemElement *xe, GmVector Xg, XfemEnrichedElementData *exData, QList< GmVector > &aCrack, int secondaryCrack) const
 check if this crack segment cuts other crack to restrict propagation until this other crack is touched not crossed
 
virtual bool crackPropDirection (XfemMesh *xmesh, XfemElement *xe, GmVector stress, GmVector aPStress, int nPS, bool isHead, GmVector crackInfo, GmMatrix &XGhost, GmVector &uPs, int index, bool &noCrossingNFReactivation) const
 Get Crack propagation direction. More...
 
virtual bool updateCrackGeom (XfemMesh *xmesh, XfemFracture *fracture, int index, int iNodePath, GmVector B, GmVector Xhtcoord, GmVector &mElemCutPos) const
 update Crack Geometry
 
virtual bool updateGhostNodes (XfemMesh *xmesh, XfemFracture *fracture, int nodeIndex, GmVector coord, GmVector pathData, int iCr) const
 Update ghost nodes in Xmesh.
 
virtual bool updateGhostNodes3D (XfemMesh *xmesh, int nodeIndex, QList< GmVector > aCrack, QList< GmVector > &ghostList, GmVector pathData, int iCr) const
 Update ghost nodes in Xmesh.
 
virtual bool updatesubElemDiv (XfemMesh *xmesh, QList< int > enrichList) const
 Update subelements division in Xmesh.
 
virtual bool updatesubElemDiv3D (XfemMesh *xmesh, QList< int > enrichList) const
 Update subelements division in Xmesh.
 
virtual bool crossTypeCrackProp (XfemMesh *xmesh, XfemFracture *fracture, GmVector crackInfo, GmVector B, QList< GmVector > aCrack, bool isHead, int &iCr, int &nCracks) const
 treat propagation of fracture in a cross type intersection
 
virtual bool setUpdateAssembler (XfemMesh *xmesh) const
 returns TRUE, if at least one fracture is propagated More...
 
virtual bool updateEnrichmentFunctions (XfemMesh *xmesh) const
 update Enrichment Functions
 
virtual bool upadateElemCutInfo (XfemMesh *xmesh, QList< int > enrichList) const
 upadate elemCutInfo based on the number of fractures
 
virtual bool upadateDofSets (XfemMesh *xmesh) const
 upadate elemCutInfo based on the number of fractures
 
bool updateCrackFrontData (XfemMesh *xmesh, QList< int > enrichList) const
 
virtual bool setInterEnrichedData (XfemMesh *xmesh, GmCell *e, int numRegularSubElements, int numFractureSubElements) const
 set data for integration points for each subelement
 
- Public Member Functions inherited from XfemTools
 XfemTools (XfemMesh *xmesh, XfemOptions &xfemOptions, GmSimulationData *simulation, QList< GmpFemPhysics * > &physics, const GmLogCategory &logger)
 Constructor for a Xfem tools used in Xfem process. More...
 
virtual ~XfemTools ()
 Destructor.
 
int pointDimension () const
 Returns the dimension of each fracture point. Equal to the mesh dimension.
 
virtual bool unitVectSegment (GmMatrix Xg, GmMatrix &uVec) const
 
virtual bool unitVectPlane (const GmMatrix &Xg, GmMatrix &uVec, GmMatrix &uVec2, GmMatrix &uVec3, GmMatrix &ROT) const
 
virtual bool intersect3D_2Planes (const GmMatrix &Xg, GmMatrix &uVec, const GmMatrix &uVec2, GmMatrix &uVec3, GmMatrix &ROT, int &inter, const double &characteristicLength) const
 
virtual bool intersect3D_SegmentPlane (const GmMatrix &P0, const GmMatrix &P1, const GmMatrix &Pn2, GmMatrix &n2, GmMatrix &Line, int &inter) const
 
virtual bool testIntersect3D_2Planes (const GmMatrix &Pn1, GmMatrix &n1, const GmMatrix &Pn2, GmMatrix &n2, GmMatrix &Line, int &inter, XfemMesh *xmesh, XfemElement *xe, XfemElement *xe2) const
 
virtual bool intersectVolume (GmMatrix &nodes, QList< GmVector > &element, QList< GmVector > &fracData, GmMatrix &iNodes, QList< GmVector > &iData) const
 returns the intersection between volume and fracture More...
 
virtual bool RectangularRegion (double Lch, GmMatrix Xg, GmMatrix uVec, GmMatrix &polygonVert) const
 
virtual bool pointInConvexPolygon (double tol, GmMatrix polygonVert, GmVector Xip, int &nIn) const
 
virtual bool polygonCentroid (const GmMatrix &polygonVert, GmVector &Xc) const
 Computes the polygon centroid.
 
virtual bool defIPinRegion (XfemMesh *xmesh, GmMatrix polygonVert, QList< GmVector > &IPInfo, GmVector crackInfo) const
 
virtual bool CutPolygonWithPolyline (XfemMesh *xmesh, GmVector crackInfo, GmMatrix &polygonVert, int idCrack) const
 
virtual bool defIPinCircle (XfemMesh *xmesh, GmVector crackInfo, QList< GmVector > &IPInfo) const
 
virtual bool cycInc (int iVert, int nVert, int &nCycInc) const
 
virtual bool parametricDist (GmVector S1, GmVector S2, GmVector N1, GmVector N2, double tol, double &tValue, bool &bIntersects) const
 
virtual bool CutPLineWithPLine (XfemMesh *xmesh, double tol, GmVector Seg1node1, GmVector Seg1node2, GmVector Seg2node1, GmVector Seg2node2, GmVector &NewCrackTip, bool &bCut, bool &bCutHeadVertexA, bool &bCutTailVertexA, bool &bCutHeadVertexB, bool &bCutTailVertexB) const
 
virtual bool CoordsFromParam (GmVector Seg2node1, GmVector Seg2node2, double tValue, GmVector &NewCrackTip) const
 
virtual bool principalStresses2D (GmVector stress, GmVector &Ps) const
 
virtual bool principalStressDirection2D (GmVector aStress, GmVector aPStress, int nPS, GmVector &uPs) const
 
virtual bool compPropagExtension (XfemMesh *xmesh, XfemFracture *fracture, int nside, GmMatrix Xnodes, GmVector Xg, GmVector aPropDirection, QList< GmVector > &aCrack, bool isHead, GmMatrix crackInfo) const
 
virtual bool testCompPropagExtension3D (XfemMesh *xmesh, XfemElement *xe, QList< int > elemList, GmVector v_n, GmMatrix planeCoord, GmMatrix Xg, QList< GmVector > &aCrack, int &elemId, bool &next) const
 
virtual bool compPropagExtension3D (XfemMesh *xmesh, XfemElement *xe, QList< int > elemList, GmVector v_n, GmMatrix &planeCoord, GmMatrix Xg, QList< GmVector > &aCrack, int &elemId, bool &next) const
 
virtual bool caracteristiclength (GmMatrix Xnodes, double &Lch) const
 get caracteristic length
 
virtual bool setZeroVeriTol (GmMatrix &Xnodes, double &Lch) const
 set zero verifying tolerance
 
virtual bool parametricSegmentInMesh (XfemMesh *xmesh, XfemFracture *fracture, double tol) const
 \ class XfemTools Purpose : Checks the intersection between segment C {(xc1, yc1), (xc2, yc2)} and a unstructured xfemMesh tVector contains all intersection coordinates ordered from minimum to maximum value
 
virtual bool checkAndInsertTips (QList< double > &tVec) const
 
virtual bool insertionSortWORepeated (QList< double > &a, double tol) const
 
virtual bool insertionSort (QList< double > &tVec) const
 
virtual bool insertionSortWORepeatedint (QList< int > &a, double tol) const
 
virtual bool insertionSortint (QList< int > &tVec) const
 
virtual bool orient2D (double xa, double ya, double xb, double yb, double xc, double yc, double &det) const
 
virtual bool defElemCuts (XfemMesh *xmesh) const
 
virtual bool defElemSets (XfemMesh *xmesh) const
 
virtual bool setIntPoints (XfemMesh *xmesh, GmCell *e, QList< GmMatrix > subElem) const
 
virtual bool createSubElem (XfemMesh *xmesh, GmCell *e, QList< GmMatrix > &subElem) const
 
virtual bool setEnrichedData (XfemMesh *xmesh, GmCell *e) const
 
virtual bool setGhostNodes (XfemMesh *xmesh) const
 
virtual bool setGhostNodes3D (XfemMesh *xmesh) const
 
virtual bool loadSubElement (XfemMesh *xmesh, GmCell *e, GmMatrix subElemNode, int type, int rule, bool isFracture) const
 
void setIntegrationRule (int rule)
 
virtual bool checkSegmentInRegularMesh (XfemMesh *xmesh, GmMatrix segCrackCoord, GmVector &mElemCutPos, double tol) const
 
virtual bool intPointLine (GmVector N1, GmVector N2, GmVector crack, double tol, int &nInter) const
 
virtual bool intSegment (GmVector N1, GmVector N2, GmVector crack, double tol, int &nInter) const
 
virtual bool inSphere (GmMatrix crack, GmVector Ip, double characteristicLength, double tol, int &nInter) const
 
virtual bool dividePolygonWithSegment (GmCell *e, GmMatrix S, QList< GmMatrix > &subElemData, double tol) const
 
virtual bool dividePolygonWithSeveralSegments (XfemMesh *xmesh, GmCell *e, QList< GmMatrix > &subElemData, double tol) const
 
virtual bool addEnrichedDof (XfemMesh *xmesh, int numDof, const QString type) const
 
virtual bool setCrackFrontData (XfemMesh *xmesh) const
 
virtual bool defDofSets (XfemMesh *xmesh) const
 Define elements DOF.
 
virtual bool mechanicDofSets (XfemMesh *xmesh, int old, int &numDof, QList< GmVector > aCrack) const
 
virtual bool hydroMecDofSets (XfemMesh *xmesh, int old, int &numDof, QList< GmVector > aCrack) const
 
virtual bool subElemDiv (XfemMesh *xmesh) const
 
virtual bool subElemDiv3D (XfemMesh *xmesh) const
 
void test () const
 
void test2 () const
 
void fillFractureRotationMatrix (GmCell *e, const GmShape *shp, GmMatrix J, GmMatrix &R) const
 
virtual bool pointOnSide (GmCell *e, GmMatrix xGhost, GmVector &xIp, int side) const
 
virtual bool fillInterCrackNodalLevelSet (GmVector Seg1node1, GmVector Seg1node2, GmVector Seg2node1, GmVector &interactingCraks) const
 
void fillNodalLevelSetMatrix (GmMatrix X, GmMatrix Xg, GmMatrix &H) const
 Compute levelset function (H) The minimum distance between a point(nodes or integration point) and a segment (fracture) is determined. This function returns the signed distance function used to enrich the element for XFEM. More...
 
void fillGaussLevelSetMatrix (GmMatrix X, GmMatrix Xg, GmMatrix &H) const
 Compute Gauss levelset function (H) The minimum distance between a point(integration point) and a segment (fracture) is determined. This function returns the signed distance function used to enrich the element for XFEM. More...
 
void fillInteractingCraksNodalLevelSets (GmCell *e, XfemEnrichedElementData *exData, int nEnrich, int nCracks, QList< double >crackIndex, QList< GmMatrix > &nodalLevelSet) const
 computation of Additional enrichment fuctions for cracks intersection considering element nodes and integration point
 
void fillInteractingCraksGaussLevelSets (GmCell *e, XfemEnrichedElementData *exData, int nEnrich, int nCracks, QList< double >crackIndex, QList< GmMatrix > &gaussLevelSet) const
 computation of Additional enrichment fuctions for cracks intersection considering element nodes and integration point
 
virtual bool correctDOF (XfemMesh *xmesh, GmCell *e, XfemElement *xe, XfemEnrichedElementData *exData, QList< XfemFracture * > fractureData, QList< GmVector > &aCrack, int &old, bool &add) const
 Add DOFs to adjacent elements to an intersection.
 
virtual bool deleteNodeDOF (XfemMesh *xmesh, double value) const
 
virtual bool checkDOF (XfemMesh *xmesh, double value, QList< int > &enrichList) const
 
virtual bool addChangedElem (XfemMesh *xmesh, double value, QList< int > &enrichList) const
 
virtual bool saveEnrichmentFunctions (XfemMesh *xmesh, double value) const
 
virtual bool alterEnrichmentFunctions (XfemMesh *xmesh, double value) const
 
virtual bool createDofList (XfemMesh *xmesh, const QString type) const
 
virtual bool checkData (XfemMesh *xmesh) const
 check DOFs and Enrichment Functions of adjacent elements to an intersection More...
 
virtual bool getCrackPlaneStresses (GmVector Sxy, GmMatrix ROT, GmVector &Stn) const
 
virtual bool getCrackPlaneStrains (GmVector Exy, GmMatrix ROT, GmVector &Etn) const
 
virtual bool vectorialToTensorial (GmVector &Av, GmMatrix &Am, unsigned sc, QString type="strain", bool mode=true) const
 

Additional Inherited Members

- Protected Attributes inherited from XfemTools
GmValueAccessor_nodeAcc
 Node accessor.
 
XfemGaussAccessor_stressAcc
 Sets enriched gauss accessor for stress.
 
XfemGaussAccessor_strainAcc
 Sets enriched gauss accessor for strain.
 
GmCellAccessor_strengthAcc
 Sets enriched gauss accessor for strength.
 
int _ruleSet
 sets integration rule
 
XfemOptions _xfemOptions
 The set of xfem options.
 
GmSimulationData_SimulationData
 Simulation data.
 
QList< GmpFemPhysics * > _physics
 
int _ndim
 The dimension of each coordinate.
 
const GmLogCategory_logger
 The logger object used to emmit messages.
 

Detailed Description

A simple class to represent a natural fracture.

update Crack Front Data

Constructor & Destructor Documentation

◆ XfemPos()

XfemPos::XfemPos ( XfemMesh _xmesh,
XfemOptions xfemOptions,
GmSimulationData simulation,
QList< GmpFemPhysics * > &  physics,
const GmLogCategory logger 
)

Constructor for a Xfem pos-processor used in Xfem process.

Provides functions used in pos-processor stage.

IMPORTANT: The XfemPre takes ownership of the given data vector and will destroy it on its destructor.

Member Function Documentation

◆ checkCrackReactivation()

bool XfemPos::checkCrackReactivation ( XfemMesh xmesh,
GmVector  crackPath,
XfemEnrichedElementData exData 
) const
virtual

brief check propagation of fractures in integration points inside this element

◆ checkFractureTips()

bool XfemPos::checkFractureTips ( XfemMesh xmesh) const
virtual

check crack heads if it can propagate or it's at the boundary of the model

set fracture tips false for those which are in the model border and true for those which could propagate

◆ crackPropDirection()

bool XfemPos::crackPropDirection ( XfemMesh xmesh,
XfemElement xe,
GmVector  stress,
GmVector  aPStress,
int  nPS,
bool  isHead,
GmVector  crackInfo,
GmMatrix XGhost,
GmVector uPs,
int  index,
bool &  noCrossingNFReactivation 
) const
virtual

Get Crack propagation direction.

Get the direction perpendicular to the maximum principal stress (ie, perpendicular to the compressive stress)

The maximum angle between the propagation direction and the reference direction must be smaller than 90 degrees(dot product greater than 0)

◆ extendCrackPlane3D()

bool XfemPos::extendCrackPlane3D ( XfemMesh xmesh,
XfemFracture fracture,
XfemElement xe,
GmCell e,
int  index,
GmMatrix  ROT2,
GmVector fieldValue,
GmMatrix fieldDir,
GmMatrix Xg,
GmVector v_n,
GmMatrix planeCoord,
QList< int > &  crackNodeId 
) const
virtual

extend Crack Plane 3D

Define a segment C that starts in the fracture front node and ends outside 4*Lch !with the propagation angle

◆ noInitialCracks()

bool XfemPos::noInitialCracks ( XfemMesh xmesh) const
virtual

Treatment for No inital cracks in the model.

Get the direction perpendicular to the maximum principal stress (ie, perpendicular to the compressive stress)

Define a segment C that starts in the element centroid and it is extended 2*Lch in both direction

◆ setUpdateAssembler()

bool XfemPos::setUpdateAssembler ( XfemMesh xmesh) const
virtual

returns TRUE, if at least one fracture is propagated

include comments

◆ stressStrainField()

bool XfemPos::stressStrainField ( XfemMesh xmesh,
XfemFracture fracture,
GmVector fieldValue,
double &  strength,
bool  isHead 
) const
virtual

computes stress/strain field according to the defined propagation criteria and weight function

Maximum principal stress reached tensile strength

Maximum principal stress reached tensile strength

Maximum principal stress (compression is negative) does not reached tensile strength -> no propagation

Maximum principal stress (compression is negative) does not reached tensile strength -> no propagation

◆ testExtendCrackPlane3D()

bool XfemPos::testExtendCrackPlane3D ( XfemMesh xmesh,
XfemFracture fracture,
XfemElement xe,
GmCell e,
int  index,
GmMatrix  ROT2,
GmVector fieldValue,
GmMatrix fieldDir,
GmMatrix Xg,
GmVector v_n,
GmMatrix planeCoord,
QList< int > &  crackNodeId,
bool &  next 
) const
virtual

extend Crack Plane 3D

Define a segment C that starts in the fracture front node and ends outside 4*Lch !with the propagation angle


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