OOFEM 3.0
Loading...
Searching...
No Matches
oofem::Crack Class Reference

#include <crack.h>

Inheritance diagram for oofem::Crack:
Collaboration diagram for oofem::Crack:

Public Member Functions

 Crack (int n, XfemManager *xm, Domain *aDomain)
const char * giveClassName () const override
const char * giveInputRecordName () const override
void initializeFrom (InputRecord &ir) override
void AppendCohesiveZoneGaussPoint (GaussPoint *ipGP)
void ClearCohesiveZoneGaussPoints ()
void callGnuplotExportModule (GnuplotExportModule &iExpMod, TimeStep *tStep) override
const std ::vector< GaussPoint * > & giveCohesiveZoneGaussPoints () const
const std ::vector< double > & giveCohesiveZoneArcPositions () const
void computeCrackIntersectionPoints (Crack &iCrack, std ::vector< FloatArray > &oIntersectionPoints, std ::vector< double > &oArcPositions)
void computeArcPoints (const std ::vector< FloatArray > &iIntersectionPoints, std ::vector< double > &oArcPositions)
double computeLength ()
int giveDofPoolSize () const override
Public Member Functions inherited from oofem::HybridEI
 HybridEI (int n, XfemManager *xm, Domain *aDomain)
virtual ~HybridEI ()
const char * giveClassName () const override
const char * giveInputRecordName () const override
void evalLevelSetNormal (double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const override
void evalLevelSetTangential (double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const override
void evalGradLevelSetNormal (FloatArray &oGradLevelSet, const FloatArray &iGlobalCoord, const FloatMatrix &idNdX, const IntArray &iNodeInd) const override
void interpLevelSet (double &oLevelSet, const FloatArray &iN, const IntArray &iNodeInd) const
void interpLevelSetTangential (double &oLevelSet, const FloatArray &iN, const IntArray &iNodeInd) const
void interpGradLevelSet (FloatArray &oGradLevelSet, const FloatMatrix &idNdX, const IntArray &iNodeInd) const
Public Member Functions inherited from oofem::GeometryBasedEI
 GeometryBasedEI (int n, XfemManager *xm, Domain *aDomain)
virtual ~GeometryBasedEI ()
int instanciateYourself (DataReader &dr) override
void postInitialize () override
 Performs post initialization steps. Called after all components are created and initialized.
virtual void updateDofIdPool ()
void appendInputRecords (DynamicDataReader &oDR) override
void updateGeometry () override
void updateNodeEnrMarker (XfemManager &ixFemMan) override
void updateLevelSets (XfemManager &ixFemMan)
void evaluateEnrFuncInNode (std ::vector< double > &oEnrFunc, const Node &iNode) const override
void evaluateEnrFuncAt (std ::vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const override
void evaluateEnrFuncAt (std ::vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const IntArray &iElNodes) const override
void evaluateEnrFuncDerivAt (std ::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const override
void evaluateEnrFuncDerivAt (std ::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const FloatMatrix &idNdX, const IntArray &iElNodes) const override
void evaluateEnrFuncJumps (std ::vector< double > &oEnrFuncJumps, int iNodeInd, GaussPoint &iGP, bool iGPLivesOnCurrentCrack) const
virtual void computeIntersectionPoints (std ::vector< FloatArray > &oIntersectionPoints, std ::vector< int > &oIntersectedEdgeInd, Element *element, std ::vector< double > &oMinDistArcPos) const
virtual void computeIntersectionPoints (std ::vector< FloatArray > &oIntersectionPoints, std ::vector< int > &oIntersectedEdgeInd, Element *element, const Triangle &iTri, std ::vector< double > &oMinDistArcPos) const
void writeVtkDebug () const override
void giveSubPolygon (std ::vector< FloatArray > &oPoints, const double &iXiStart, const double &iXiEnd) const
void propagateFronts (bool &oFrontsHavePropagated) override
bool giveElementTipCoord (FloatArray &oCoord, double &oArcPos, Element &iEl, const FloatArray &iElCenter) const override
void giveBoundingSphere (FloatArray &oCenter, double &oRadius) override
BasicGeometrygiveGeometry ()
void setGeometry (std ::unique_ptr< BasicGeometry > &&ipBasicGeometry)
Public Member Functions inherited from oofem::EnrichmentItem
 EnrichmentItem (int n, XfemManager *xm, Domain *aDomain)
 Constructor / destructor.
virtual ~EnrichmentItem ()
void initializeFrom (InputRecord &ir) override
void giveInputRecord (DynamicInputRecord &input) override
const IntArraygiveEnrichesDofsWithIdArray () const
int giveNumberOfEnrDofs () const
bool isElementEnriched (const Element *element) const
bool isDofManEnriched (const DofManager &iDMan) const
int giveNumDofManEnrichments (const DofManager &iDMan) const
virtual bool canModifyMaterial () const
virtual bool isMaterialModified (GaussPoint &iGP, Element &iEl, CrossSection *&opCS) const
virtual void updateGeometry (FailureCriteriaStatus *fc, TimeStep *tStep)
virtual void updateGeometry (TimeStep *tStep)
virtual bool hasPropagatingFronts () const
virtual bool hasInitiationCriteria ()
int giveStartOfDofIdPool () const
int giveEndOfDofIdPool () const
virtual void computeEnrichedDofManDofIdArray (IntArray &oDofIdArray, DofManager &iDMan)
virtual void giveEIDofIdArray (IntArray &answer) const
virtual void givePotentialEIDofIdArray (IntArray &answer) const
bool evalLevelSetNormalInNode (double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
bool evalLevelSetTangInNode (double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
bool evalNodeEnrMarkerInNode (double &oNodeEnrMarker, int iNodeInd) const
virtual void createEnrichedDofs ()
PropagationLawgivePropagationLaw ()
void setPropagationLaw (std::unique_ptr< PropagationLaw > ipPropagationLaw)
bool hasPropagationLaw ()
const std ::unordered_map< int, NodeEnrichmentType > & giveEnrNodeMap () const
EnrichmentFrontgiveEnrichmentFrontStart ()
void setEnrichmentFrontStart (std::unique_ptr< EnrichmentFront > ipEnrichmentFrontStart, bool iDeleteOld=true)
EnrichmentFrontgiveEnrichmentFrontEnd ()
void setEnrichmentFrontEnd (std::unique_ptr< EnrichmentFront > ipEnrichmentFrontEnd, bool iDeleteOld=true)
bool tipIsTouchingEI (const TipInfo &iTipInfo)
void setEnrichmentFunction (std::unique_ptr< EnrichmentFunction > ipEnrichmentFunc)
Public Member Functions inherited from oofem::FEMComponent
 FEMComponent (int n, Domain *d)
virtual ~FEMComponent ()=default
 Virtual destructor.
DomaingiveDomain () const
virtual void setDomain (Domain *d)
int giveNumber () const
void setNumber (int num)
virtual void updateLocalNumbering (EntityRenumberingFunctor &f)
virtual void initializeFrom (InputRecord &ir, int priority)
virtual void initializeFinish ()
virtual void saveContext (DataStream &stream, ContextMode mode)
virtual void restoreContext (DataStream &stream, ContextMode mode)
virtual int checkConsistency ()
virtual void printOutputAt (FILE *file, TimeStep *tStep)
virtual void printYourself ()
 Prints receiver state on stdout. Useful for debugging.
virtual InterfacegiveInterface (InterfaceType t)
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros).

Protected Attributes

std ::vector< GaussPoint * > mCohesiveZoneGaussPoints
std ::vector< double > mCohesiveZoneArcPositions
Protected Attributes inherited from oofem::GeometryBasedEI
std ::unique_ptr< BasicGeometrympBasicGeometry
Protected Attributes inherited from oofem::EnrichmentItem
std::unique_ptr< EnrichmentFunctionmpEnrichmentFunc
std::unique_ptr< EnrichmentFrontmpEnrichmentFrontStart
std::unique_ptr< EnrichmentFrontmpEnrichmentFrontEnd
int mEnrFrontIndex
 mEnrFrontIndex: nonzero if an enrichment front is present, zero otherwise.
std::unique_ptr< PropagationLawmpPropagationLaw
int mPropLawIndex
 mPropLawIndex: nonzero if a propagation law is present, zero otherwise.
bool mInheritBoundaryConditions
bool mInheritOrderedBoundaryConditions
int startOfDofIdPool
int endOfDofIdPool
IntArray mpEnrichesDofsWithIdArray
 Geometry associated with EnrichmentItem.
std ::unordered_map< int, double > mLevelSetNormalDirMap
std ::unordered_map< int, double > mLevelSetTangDirMap
std ::unordered_map< int, NodeEnrichmentTypemNodeEnrMarkerMap
IntArray mEIDofIdArray
bool mLevelSetsNeedUpdate
const double mLevelSetTol2
std::shared_ptr< InputRecordthisIr
Protected Attributes inherited from oofem::FEMComponent
int number
 Component number.
Domaindomain
 Link to domain object, useful for communicating with other FEM components.

Additional Inherited Members

Static Public Member Functions inherited from oofem::EnrichmentItem
static double calcXiZeroLevel (const double &iQ1, const double &iQ2)
static void calcPolarCoord (double &oR, double &oTheta, const FloatArray &iOrigin, const FloatArray &iPos, const FloatArray &iN, const FloatArray &iT, const EfInput &iEfInput, bool iFlipTangent)
Static Protected Attributes inherited from oofem::EnrichmentItem
static const double mLevelSetTol = 1.0e-12
static const double mLevelSetRelTol = 1.0e-3

Detailed Description

Crack.

Author
Erik Svenning
Date
Feb 14, 2014

Definition at line 54 of file crack.h.

Constructor & Destructor Documentation

◆ Crack()

oofem::Crack::Crack ( int n,
XfemManager * xm,
Domain * aDomain )

Member Function Documentation

◆ AppendCohesiveZoneGaussPoint()

◆ callGnuplotExportModule()

void oofem::Crack::callGnuplotExportModule ( GnuplotExportModule & iExpMod,
TimeStep * tStep )
overridevirtual

Reimplemented from oofem::EnrichmentItem.

Definition at line 95 of file crack.C.

References oofem::GnuplotExportModule::outputXFEM().

◆ ClearCohesiveZoneGaussPoints()

void oofem::Crack::ClearCohesiveZoneGaussPoints ( )
inline

Definition at line 64 of file crack.h.

References mCohesiveZoneArcPositions, and mCohesiveZoneGaussPoints.

◆ computeArcPoints()

void oofem::Crack::computeArcPoints ( const std ::vector< FloatArray > & iIntersectionPoints,
std ::vector< double > & oArcPositions )

◆ computeCrackIntersectionPoints()

void oofem::Crack::computeCrackIntersectionPoints ( Crack & iCrack,
std ::vector< FloatArray > & oIntersectionPoints,
std ::vector< double > & oArcPositions )

◆ computeLength()

◆ giveClassName()

const char * oofem::Crack::giveClassName ( ) const
inlineoverridevirtual
Returns
Class name of the receiver.

Implements oofem::FEMComponent.

Reimplemented in oofem::ShellCrack.

Definition at line 59 of file crack.h.

◆ giveCohesiveZoneArcPositions()

const std ::vector< double > & oofem::Crack::giveCohesiveZoneArcPositions ( ) const
inline

Definition at line 69 of file crack.h.

References mCohesiveZoneArcPositions.

Referenced by oofem::GnuplotExportModule::outputXFEM().

◆ giveCohesiveZoneGaussPoints()

const std ::vector< GaussPoint * > & oofem::Crack::giveCohesiveZoneGaussPoints ( ) const
inline

Definition at line 68 of file crack.h.

References mCohesiveZoneGaussPoints.

Referenced by oofem::GnuplotExportModule::outputXFEM().

◆ giveDofPoolSize()

int oofem::Crack::giveDofPoolSize ( ) const
overridevirtual

◆ giveInputRecordName()

const char * oofem::Crack::giveInputRecordName ( ) const
inlineoverridevirtual
Returns
Input record name of the receiver.

Implements oofem::FEMComponent.

Reimplemented in oofem::ShellCrack.

Definition at line 60 of file crack.h.

References _IFT_Crack_Name.

◆ initializeFrom()

void oofem::Crack::initializeFrom ( InputRecord & ir)
overridevirtual

Initializes receiver according to object description stored in input record. This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record. Note that initializeFrom may be called mutiple times.

See also
IR_GIVE_FIELD
IR_GIVE_OPTIONAL_FIELD
Parameters
irInput record to initialize from.
priorityPriority of the input record. This is used to determine the order of initialization

Reimplemented from oofem::FEMComponent.

Reimplemented in oofem::ShellCrack.

Definition at line 54 of file crack.C.

Member Data Documentation

◆ mCohesiveZoneArcPositions

std :: vector< double > oofem::Crack::mCohesiveZoneArcPositions
protected

◆ mCohesiveZoneGaussPoints

std :: vector< GaussPoint * > oofem::Crack::mCohesiveZoneGaussPoints
protected

Array of pointers to the Gauss points related to the cohesive zone. The array is used for data extraction and visualization only. The reason for keeping an array of pointers here is as follows: the cohesive zone Gauss points are created in the XFEMElementInterface, that (of course) only keeps track of GPs in that element. However, for visualization it is very valuable to be able to plot cohesive zone data (e.g. damage or crack opening) vs the arc length coordinate of the crack. This must be accomplished at the level of the EnrichmentItem, because here we know about the geometry of the crack.

Definition at line 90 of file crack.h.

Referenced by AppendCohesiveZoneGaussPoint(), ClearCohesiveZoneGaussPoints(), and giveCohesiveZoneGaussPoints().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011