57void PLCZdamageRadius :: initializeFrom(
InputRecord &ir)
78 printf(
"EnrichmentFront.propagationIsAllowed is false \n");
87 printf(
"No dofmans in tip; nothing to propagate. \n");
101 IntArray EIelements, tempEIelements, CSelements;
103 for (
int CSnum : dei->giveDelamCrossSectionNum()) {
105 if (this->
mPropCS.contains(CS->
giveNumber()) || this->mPropCS.containsOnlyZeroes() ) {
112 for (
int iElt : EIelements ) {
114 bool CZdamageThresholdMet =
false;
115 double maxDamage(0.0);
116 double CZdamage(0.0);
121 int interfaceMatNumber(shellElt->giveLayeredCS()->giveInterfaceMaterialNum(dei->giveDelamInterfaceNum()));
123 if (interfaceMatNumber) {
127 OOFEM_ERROR(
"NULL pointer to material, interface %i",dei->giveDelamInterfaceNum());
130 for (
GaussPoint *gp: *shellElt->czIntegrationRulesArray[ dei->giveDelamInterfaceNum() - 1 ]) {
133 if (intMatStatus == 0) {
137 if (CZdamage > maxDamage) {maxDamage = CZdamage;}
139 CZdamageThresholdMet =
true;
146 CZdamageThresholdMet =
true;
151 if (CZdamageThresholdMet) {
152 for (
int iDF : shellElt->giveDofManArray() ) {
177 for (
int i = 1 ; i <= propagationDF.
giveSize() ; i++ ) {
182 std :: list< int > nodeList;
184 for (
int jNode : nodeList ) {
#define REGISTER_PropagationLaw(class)
void giveNodeNeighbourList(IntArray &answer, IntArray &nodeList)
int giveSetNumber() const
const FloatArray & giveCoordinates() const
SpatialLocalizer * giveSpatialLocalizer()
ConnectivityTable * giveConnectivityTable()
Element * giveElement(int n)
XfemManager * giveXfemManager()
CrossSection * giveCrossSection(int n)
const char * giveClassName() const override
const TipInfo & giveTipInfo() const
virtual bool propagationIsAllowed() const
virtual const char * giveClassName() const =0
bool insertSortedOnce(int value, int allocChunk=0)
void followedBy(const IntArray &b, int allocChunk=0)
int findCommonValuesSorted(const IntArray &iarray, IntArray &common, int allocChunk=0) const
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
const char * giveInputRecordName() const override
const IntArray & giveElementList()
virtual void giveAllNodesWithinBox(nodeContainerType &nodeList, const FloatArray &coords, const double radius)=0
virtual double giveTempDamage() const
IntArray mTipDofManNumbers
Local number of which edge the crack enters the element (2d).
EnrichmentItem * giveEnrichmentItem(int n)
#define _IFT_PLCZdamageRadius_PropagationCS
Cross sections (must be part of csnum) viable for propagation.
#define _IFT_PLCZdamageRadius_DamageThreshold
Damage threshold [0,1] for propagation.
#define _IFT_PLCZdamageRadius_IncRadius
Increment radius (from element nodes) per time step.
IntArray mPropagationDofManNumbers