58 this->domain = domain;
59 this->updateFlag =
false;
93 for (
int i = 1; i <= ( int ) this->
criteriaList.size(); i++ ) {
102 if ( !failCriteria ) {
103 OOFEM_ERROR(
"unknown failure criteria (%s)", name.c_str() );
109 if ( failCriteria->
giveType() == ELLocal ) {
111 failCriteria->
list.resize(numEl);
112 for (
int j = 1; j <= numEl; j++ ) {
115 failCriteria->
list.at(j - 1) = fcs;
117 }
else if ( failCriteria->
giveType() == IPLocal ) {
119 }
else if ( failCriteria->
giveType() == Nonlocal ) {
120 OOFEM_ERROR(
"Nonlocal criteria not supported yet");
147 for (
int i = 1; i <= ( int ) this->
criteriaList.size(); i++ ) {
149 printf(
"\n Evaluating failure criteria %i \n", i);
152 if ( failCrit->
giveType() == ELLocal ) {
153 for (
int j = 1; j <= ( int ) failCrit->
list.size(); j++ ) {
155 printf(
"\n Evaluating for element %i \n", j);
162 }
else if ( failCrit->
giveType() == Nonlocal ) {
163 OOFEM_ERROR(
"Nonlocal criteria not supported yet");
180 printf(
"\n Updating geometry of enrichment item %i ", k);
184 for (
int i = 1; i <= ( int ) this->
criteriaList.size(); i++ ) {
186 printf(
"based on failure criteria %i \n", i);
190 for (
int j = 1; j <= ( int ) failCrit->
list.size(); j++ ) {
192 printf(
"\n Element %i ", j);
219 if ( !this->evaluateFCQuantities(el, tStep) ) {
238 bool criteriaFulfilled =
false;
240 for (
int i = 1; i <= ( int ) status->
failedFlags.size(); i++ ) {
244 criteriaFulfilled =
true;
247 return criteriaFulfilled;
268 this->setType(ELLocal);
virtual FailureCriteriaStatus * CreateStatus(Element *el, FailureCriteria *failCrit) const =0
Abstract class representing entity, which is included in the FE model using one (or more) global func...
virtual bool evaluateFailureCriteria(FailureCriteriaStatus *fcStatus)=0
#define _IFT_DamagedNeighborLayered_DamageThreshold
virtual bool evaluateFailureCriteria(FailureCriteriaStatus *fcStatus)
double & at(int i)
Coefficient access function.
#define _IFT_FracManager_numcriterias
#define _IFT_FracManager_verbose
void evaluateFailureCriterias(TimeStep *tStep)
Abstract base class for all finite elements.
FailureCriteria * createFailureCriteria(const char *name, int num, FractureManager *fracManager)
virtual void updateGeometry(FailureCriteriaStatus *fc, TimeStep *tStep)
This class manages the fracture mechanics part.
std::vector< FailureCriteriaStatus * > list
Class representing the abstraction for input data source.
int giveNumberOfElements() const
Returns number of elements in domain.
XfemManager * giveXfemManager()
virtual void computeFailureCriteriaQuantities(FailureCriteriaStatus *fc, TimeStep *tStep)
int giveNumberOfEnrichmentItems() const
Element * giveElement(int n)
Service for accessing particular domain fe element.
void evaluateYourself(TimeStep *tStep)
void updateXFEM(TimeStep *tStep)
REGISTER_FailureCriteria(DamagedNeighborLayered)
std::vector< FailureCriteria * > criteriaList
FloatArray layerDamageValues
virtual IRResultType initializeFrom(InputRecord *ir)
virtual InputRecord * giveInputRecord(InputRecordType irType, int recordId)=0
Returns input record corresponding to given InputRecordType value and its record_id.
virtual IRResultType initializeFrom(InputRecord *ir)
void setUpdateFlag(bool flag)
This class manages the xfem part.
IRResultType
Type defining the return values of InputRecord reading operations.
FailureCriteriaType giveType()
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
EnrichmentItem * giveEnrichmentItem(int n)
ClassFactory & classFactory
virtual IRResultType initializeFrom(InputRecord *ir)
~FractureManager()
Destructor.
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
int instanciateYourself(DataReader &dr)
std::vector< bool > failedFlags
Class representing solution step.
virtual bool computeFailureCriteriaQuantities(FailureCriteriaStatus *fcStatus, TimeStep *tStep)
IRResultType initializeFrom(InputRecord *ir)