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" 56 class IntegrationRule;
82 virtual const char *
giveClassName()
const {
return "XfemElementInterface"; }
83 std :: string
errorInfo(
const char *func)
const {
return std :: string( giveClassName() ) + func; }
106 void XfemElementInterface_createEnrNmatrixAt(
FloatMatrix &oAnswer,
const FloatArray &iLocCoord,
Element &iEl,
bool iSetDiscontContribToZero);
111 void XfemElementInterface_createEnrNmatrixAt(
FloatMatrix &oAnswer,
const FloatArray &iLocCoord,
Element &iEl,
const std :: vector< int > &iLocNodeInd,
bool iSetDiscontContribToZero);
116 int XfemElementInterface_giveNumDofManEnrichments(
const DofManager &iDMan,
XfemManager &iXMan)
const;
119 virtual void XfemElementInterface_partitionElement(std :: vector< Triangle > &oTriangles,
const std :: vector< FloatArray > &iPoints);
121 virtual bool XfemElementInterface_updateIntegrationRule();
124 virtual void XfemElementInterface_prepareNodesForDelaunay(std :: vector< std :: vector< FloatArray > > &oPointPartitions,
double &oCrackStartXi,
double &oCrackEndXi,
int iEnrItemIndex,
bool &oIntersection);
125 virtual void XfemElementInterface_prepareNodesForDelaunay(std :: vector< std :: vector< FloatArray > > &oPointPartitions,
double &oCrackStartXi,
double &oCrackEndXi,
const Triangle &iTri,
int iEnrItemIndex,
bool &oIntersection);
128 void putPointsInCorrectPartition(std :: vector< std :: vector< FloatArray > > &oPointPartitions,
const std :: vector< FloatArray > &iIntersecPoints,
const std :: vector< const FloatArray * > &iNodeCoord)
const;
135 void partitionEdgeSegment(
int iBndIndex, std :: vector< Line > &oSegments, std :: vector< FloatArray > &oIntersectionPoints,
const double &iTangDistPadding = 0.0);
151 void updateYourselfCZ(
TimeStep *tStep);
158 void computeNCohesive(
FloatMatrix &oN,
GaussPoint &iGP,
int iEnrItemIndex,
const std :: vector< int > &iTouchingEnrItemIndices);
161 #endif // xfemelementinterface_h Provides Xfem interface for an element.
virtual const char * giveClassName() const
std::vector< std::unique_ptr< IntegrationRule > > mIntRule_tmp
Abstract base class for all finite elements.
Base class for dof managers.
MaterialMode
Type representing material mode of integration point.
std::vector< std::unique_ptr< IntegrationRule > > mpCZIntegrationRules_tmp
std::string errorInfo(const char *func) const
std::vector< std::vector< int > > mCZTouchingEnrItemIndices
Indices of enrichment items that give cohesive zone contributions to a given GP, even though the GP i...
std::vector< std::unique_ptr< IntegrationRule > > mpCZIntegrationRules
std::vector< std::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules
Class representing vector of real numbers.
std::vector< int > mCZEnrItemIndices
Index of enrichment items associated with cohesive zones.
Implementation of matrix containing floating point numbers.
This class manages the xfem part.
bool mUsePlaneStrain
Flag that tells if plane stress or plane strain is assumed.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
Class representing solution step.
std::vector< std::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules_tmp