35#ifndef xfemelementinterface_h
36#define xfemelementinterface_h
44#define _IFT_XfemElementInterface_CohesiveZoneMaterial "czmaterial"
45#define _IFT_XfemElementInterface_NumIntPointsCZ "nipcz"
46#define _IFT_XfemElementInterface_PlaneStrain "useplanestrain"
88 const char *
giveClassName()
const override {
return "XfemElementInterface"; }
134 void putPointsInCorrectPartition(std :: vector< std :: vector< FloatArray > > &oPointPartitions,
const std :: vector< FloatArray > &iIntersecPoints,
const std :: vector< const FloatArray * > &iNodeCoord)
const;
141 void partitionEdgeSegment(
int iBndIndex, std :: vector< Line > &oSegments, std :: vector< FloatArray > &oIntersectionPoints,
const double &iTangDistPadding = 0.0);
std ::vector< std ::unique_ptr< IntegrationRule > > mIntRule_tmp
XfemElementInterface(const XfemElementInterface &src)=delete
void computeDisplacementJump(GaussPoint &iGP, FloatArray &oJump, const FloatArray &iSolVec, const FloatMatrix &iNMatrix)
static ParamKey IPK_XfemElementInterface_CohesiveZoneMaterial
std::string errorInfo(const char *func) const
void XfemElementInterface_createEnrBmatrixAt(FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
Creates enriched B-matrix.
std ::vector< std ::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules
void XfemElementInterface_createEnrBHmatrixAt(FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
Creates enriched BH-matrix.
virtual void XfemElementInterface_partitionElement(std ::vector< Triangle > &oTriangles, const std ::vector< FloatArray > &iPoints)
Partitions the element into patches by a triangulation.
std ::vector< std ::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules_tmp
void ComputeBOrBHMatrix(FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl, bool iComputeBH, const FloatArray &iNaturalGpCoord)
MaterialMode giveMaterialMode()
void putPointsInCorrectPartition(std ::vector< std ::vector< FloatArray > > &oPointPartitions, const std ::vector< FloatArray > &iIntersecPoints, const std ::vector< const FloatArray * > &iNodeCoord) const
std ::vector< std ::vector< int > > mCZTouchingEnrItemIndices
XfemElementInterface(Element *e)
Constructor.
virtual void XfemElementInterface_prepareNodesForDelaunay(std ::vector< std ::vector< FloatArray > > &oPointPartitions, double &oCrackStartXi, double &oCrackEndXi, int iEnrItemIndex, bool &oIntersection)
Returns an array of array of points. Each array of points defines the points of a subregion of the el...
virtual bool XfemElementInterface_updateIntegrationRule()
Updates integration rule based on the triangulation.
static ParamKey IPK_XfemElementInterface_NumIntPointsCZ
const char * giveClassName() const override
std ::vector< std ::unique_ptr< IntegrationRule > > mpCZIntegrationRules
void computeNCohesive(FloatMatrix &oN, GaussPoint &iGP, int iEnrItemIndex, const std ::vector< int > &iTouchingEnrItemIndices)
void XfemElementInterface_createEnrNmatrixAt(FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, bool iSetDiscontContribToZero)
Creates enriched N-matrix.
void partitionEdgeSegment(int iBndIndex, std ::vector< Line > &oSegments, std ::vector< FloatArray > &oIntersectionPoints, const double &iTangDistPadding=0.0)
void updateYourselfCZ(TimeStep *tStep)
std ::vector< int > mCZEnrItemIndices
Index of enrichment items associated with cohesive zones.
bool mUsePlaneStrain
Flag that tells if plane stress or plane strain is assumed.
int XfemElementInterface_giveNumDofManEnrichments(const DofManager &iDMan, XfemManager &iXMan) const
std ::vector< std ::unique_ptr< IntegrationRule > > mpCZIntegrationRules_tmp
static ParamKey IPK_XfemElementInterface_PlaneStrain