![]() |
Xfem
The Xfem Plugin
|
A simple class to represent a natural fracture. More...
#include <xfemPos.h>


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. | |
A simple class to represent a natural fracture.
update Crack Front Data
| 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.
|
virtual |
brief check propagation of fractures in integration points inside this element
|
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
|
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)
|
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
|
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
|
virtual |
returns TRUE, if at least one fracture is propagated
include comments
|
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
|
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
1.8.15