82 printf(
"EnrichmentFront.propagationIsAllowed is false \n");
91 printf(
"No dofmans in tip; nothing to propagate. \n");
102 if (
Delamination* dei = dynamic_cast < Delamination* > ( ei ) ) {
105 IntArray EIelements, tempEIelements, CSelements;
107 for (
int CSnum : dei->giveDelamCrossSectionNum()) {
116 for (
int iElt : EIelements ) {
118 bool CZdamageThresholdMet =
false;
119 double maxDamage(0.0);
120 double CZdamage(0.0);
123 if (
Shell7BaseXFEM *shellElt = dynamic_cast < Shell7BaseXFEM * > (elt) ) {
125 int interfaceMatNumber(shellElt->giveLayeredCS()->giveInterfaceMaterialNum(dei->giveDelamInterfaceNum()));
127 if (interfaceMatNumber) {
131 OOFEM_ERROR(
"NULL pointer to material, interface %i",dei->giveDelamInterfaceNum());
134 for (
GaussPoint *gp: *shellElt->czIntegrationRulesArray[ dei->giveDelamInterfaceNum() - 1 ]) {
137 if (intMatStatus == 0) {
141 if (CZdamage > maxDamage) {maxDamage = CZdamage;}
143 CZdamageThresholdMet =
true;
150 CZdamageThresholdMet =
true;
155 if (CZdamageThresholdMet) {
156 for (
int iDF : shellElt->giveDofManArray() ) {
181 for (
int i = 1 ; i <= propagationDF.
giveSize() ; i++ ) {
186 std :: list< int > nodeList;
188 for (
int jNode : nodeList ) {
bool contains(int value) const
The base class for all spatial localizers.
Abstract class representing entity, which is included in the FE model using one (or more) global func...
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
#define _IFT_PLCZdamageRadius_PropagationCS
Cross sections (must be part of csnum) viable for propagation.
int giveSetNumber() const
TipInfo gathers useful information about a crack tip, like its position and tangent direction...
ConnectivityTable * giveConnectivityTable()
Returns receiver's associated connectivity table.
bool insertSortedOnce(int value, int allocChunk=0)
Inserts given value into a receiver, which is assumed to be sorted.
IntArray mPropagationDofManNumbers
Abstract base class for all finite elements.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
IntArray mTipDofManNumbers
Local number of which edge the crack enters the element (2d)
XfemManager * giveXfemManager()
virtual bool propagateInterface(Domain &iDomain, EnrichmentFront &iEnrFront, TipPropagation &oTipProp)
bool containsOnlyZeroes() const
Checks if receiver is all zero.
Base abstract class representing cross section in finite element mesh.
CrossSection * giveCrossSection(int n)
Service for accessing particular domain cross section model.
virtual void giveAllNodesWithinBox(nodeContainerType &nodeList, const FloatArray &coords, const double radius)=0
Returns container (list) of all domain nodes within given box.
Element * giveElement(int n)
Service for accessing particular domain fe element.
void clear()
Clears the array (zero size).
virtual void giveInputRecord(DynamicInputRecord &input)
Class EnrichmentFront: describes the edge or tip of an XFEM enrichment.
SpatialLocalizer * giveSpatialLocalizer()
Returns receiver's associated spatial localizer.
virtual bool propagationIsAllowed() const
Set * giveSet(int n)
Service for accessing particular domain set.
This class implements a structural interface material status information.
REGISTER_PropagationLaw(PLDoNothing)
virtual const char * giveClassName() const
Class representing vector of real numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void giveNodeNeighbourList(IntArray &answer, IntArray &nodeList)
Returns list of elements sharing given nodes.
const FloatArray & giveNodeCoordinates() const
As giveCoordinates, but non-virtual and therefore faster (because it can be inlined).
Propagation law that propagates the (delamination) crack in a radius distance from element nodes when...
void followedBy(const IntArray &b, int allocChunk=0)
Appends array b at the end of receiver.
virtual const char * giveInputRecordName() const
EnrichmentItem * giveEnrichmentItem(int n)
#define _IFT_PLCZdamageRadius_IncRadius
Increment radius (from element nodes) per time step.
#define _IFT_PLCZdamageRadius_DamageThreshold
Damage threshold [0,1] for propagation.
const TipInfo & giveTipInfo() const
Abstract base class for all "structural" interface models.
virtual const char * giveClassName() const =0
Node * giveNode(int n)
Service for accessing particular domain node.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class implementing node in finite element mesh.
int findCommonValuesSorted(const IntArray &iarray, IntArray &common, int allocChunk=0) const
Extracts common values in receiver and iarray.
virtual double giveTempDamage()
Class representing integration point in finite element program.