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

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

#include <xfemPre.h>

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

Public Member Functions

 XfemPre (XfemMesh *_xmesh, XfemOptions &xfemOptions, GmSimulationData *simulation, QList< GmpFemPhysics * > &physics, const GmLogCategory &logger)
 Constructor for a Xfem pre-processor used in Xfem process. More...
 
virtual ~XfemPre ()
 Destructor.
 
int pointDimension () const
 Returns the number of points in the fracture definition. More...
 
virtual bool linesToFracPath (XfemMesh *xmesh) const
 Compute the intersection between the initial fractures and xfemMesh to find the additional nodes (so called Ghost nodes)
 
virtual bool InitEnrichedMesh (XfemMesh *xmesh, QList< GmpFemPhysics * > &physics) const
 Initialize the enriched mesh TODO: Generalize to 3D problems. The discontinuity set it is currently being used in the particular case of 2D problems.
 
virtual bool InitializeEnrichedElement (XfemMesh *xmesh, GmCell *e, GmDiscontinuitySet *dset) const
 Set initial enrichment of a 2d cell.
 
virtual bool Add2DGhostNodes (XfemMesh *xmesh, GmDiscontinuitySet *dset) const
 Set initial enrichment of a 2d cell TODO: special treatment of the intersections.
 
virtual bool checkAndRemoveRepeatedValuesGhostNodesLists (QList< GmVector > &ghostNodesCoord, QList< int > &ghostNodesIndex) const
 check and remove repeated values in the ghost nodes lists. When discontinuities intersect with each other, the nodes of the intersections will appear repeated in the list.
 
virtual bool fill2DGhostNodesCoordList (const GmDiscontinuitySet *dset, QList< GmVector > &ghostNodesCoord, QList< int > &ghostNodesIndex) const
 
virtual bool link2DGhostNodesWithElements (XfemMesh *xmesh, const GmDiscontinuitySet *dset, QList< int > &ghostNodesIndex) const
 link the ghost nodes to the enriched elements
 
virtual bool GeomEnrich (XfemMesh *xmesh, QList< GmpFemPhysics * > &physics) const
 Set initial enrichment. More...
 
virtual bool CutCracksAndDefineElemMat (XfemMesh *xmesh) const
 Define elements cut by each fracture and define element DOF sets.
 
virtual bool CutCracks (XfemMesh *xmesh) const
 Define strong and weak fractures coordinates.
 
virtual bool defElementIntersections (XfemMesh *xmesh, QList< GmpFemPhysics * > &physics) const
 Define elements intersections information fill Vector with information about id of intersected fractures and crack nodes contained in a element {Crack's id, first crack node, second crack node}. More...
 
virtual bool createGaussAttributes (XfemMesh *xmesh) const
 create gauss Attributes to store wetting fluid saturation for multiphasic analysis
 
virtual bool fillEnrichmentFunctions (XfemMesh *xmesh) const
 fill Enrichment Functions
 
virtual bool correctEnrichmentFunctions (XfemMesh *xmesh) const
 Add enrichment functions to adjacent elements to an intersection.
 
virtual bool verifyDOF (XfemMesh *xmesh) const
 Define elements cut by each fracture and define element DOF sets.
 
virtual bool topologicalMap (XfemMesh *xmesh) const
 create topological map for every node and element
 
- 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.

Constructor & Destructor Documentation

◆ XfemPre()

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

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

Provides functions used in pre-processor stage.

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

Member Function Documentation

◆ defElementIntersections()

bool XfemPre::defElementIntersections ( XfemMesh xmesh,
QList< GmpFemPhysics * > &  physics 
) const
virtual

Define elements intersections information fill Vector with information about id of intersected fractures and crack nodes contained in a element {Crack's id, first crack node, second crack node}.

fill intesection node index

◆ GeomEnrich()

bool XfemPre::GeomEnrich ( XfemMesh xmesh,
QList< GmpFemPhysics * > &  physics 
) const
virtual

Set initial enrichment.

Set the cubic Law Boolean to define whether cubic law or constant fracture permeability is used

Set the multiPhasic Boolean to define whether multiPhasic analysis is carried out

Set the nonIsoThermal Boolean to define whether nonIsoThermal analysis is carried out

Set Saturation and Relative Permeability Model

◆ pointDimension()

int XfemPre::pointDimension ( ) const
inline

Returns the number of points in the fracture definition.

Returns the dimension of each fracture point. Equal to the mesh dimension


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