OOFEM 3.0
Loading...
Searching...
No Matches
fracturemanager.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef fracturemanager_h
36#define fracturemanager_h
37
38#include "datareader.h"
39#include "inputrecord.h"
40#include "contextioresulttype.h"
41#include "contextmode.h"
42#include "timestep.h"
43#include "interface.h"
44#include "enumitem.h"
45#include "floatarray.h"
46
47namespace oofem {
48class Domain;
49class IntArray;
50class Element;
51class FractureManager;
52class FailureCriteria;
54
55
57
58#define _IFT_FracManager_Name "fracmanager"
59#define _IFT_FracManager_numcriterias "numcriterias"
60#define _IFT_FracManager_verbose "verbose"
61
62// Failure criterias
63#define _IFT_DamagedNeighborLayered_Name "damagedneighborlayered"
64#define _IFT_DamagedNeighborLayered_DamageThreshold "damagethreshold"
66
67// IPLocal - each integration point, ELLocal - one per element
68#define FailureCriteria_DEF \
69 ENUM_ITEM_WITH_VALUE(FC_Undefined, 0) \
70 ENUM_ITEM_WITH_VALUE(IPLocal, 1) \
71 ENUM_ITEM_WITH_VALUE(ELLocal, 2) \
72 ENUM_ITEM_WITH_VALUE(Nonlocal, 3)
73
77
78
79#undef ENUM_ITEM
80#undef ENUM_ITEM_WITH_VALUE
81#undef enumitem_h
82
83
85{
86 // abstract class from all the different failure criterias should be derived
87private:
88 //FractureManager *fMan;
89 FailureCriteria *failCrit; // pointer to the corresponding failure criteria
90// FailureCriteriaType type; // local, nonlocal
91 //FailureCriteriaName name; // max strain, von Mises, effectivePlasticStrain, tsaiHill, J-integral, G, K etc.
92// bool failedFlag; // is the criteria fulfilled?
93 int number;
94
95public:
97 {
98 this->number = number;
99 this->failCrit = failCrit;
100 }
101
103 {
104 this->el = el;
105 this->failCrit = failCrit;
106 }
107
109 virtual ~FailureCriteriaStatus() { } // must destroy object correctly
111
112 std :: vector< std :: vector< FloatArray > >quantities;
114 std :: vector< bool >failedFlags;
115
116 //FailureCriteriaType giveType() { return this->giveFailureCriteria().giveType(); }
117 FailureCriteria *giveFailureCriteria() { return this->failCrit; }
118
119 bool hasFailed(int i) { return failedFlags.at(i - 1); }
120
121 virtual void initializeFrom(InputRecord &ir);
122 virtual int instanciateYourself(DataReader &dr) { return 1; }
123 virtual const char *giveClassName() const { return "FailureCriteriaStatus"; }
124};
125
126
128{
129private:
130 FailureCriteriaType type; // local, nonlocal
131 FractureManager *fMan; // pointer to its corresponding manager
133
134public:
136 {
137 this->number = number;
138 this->fMan = fMan;
139 };
140 virtual ~FailureCriteria() { } // must destroy object correctly
141
142 std :: vector< FailureCriteriaStatus * >list;
143
144 FailureCriteriaType giveType() { return this->type; }
145 FractureManager *giveFractureManager() { return this->fMan; }
146 void setType(FailureCriteriaType _type) { this->type = _type; }
147
148 virtual void initializeFrom(InputRecord &ir);
150 virtual const char *giveClassName() const { return "FailureCriteria"; }
151
154 virtual bool evaluateFCQuantities(Element *el, TimeStep *tStep) { return false; } // defaults to no implementation
156};
157
158
167
168
170{
171private:
173
174public:
178
179 bool evaluateFailureCriteria(FailureCriteriaStatus *fcStatus) override;
180 const char *giveClassName() const override { return "DamagedNeighborLayered"; }
182 void initializeFrom(InputRecord &ir) override;
183
185 { return new DamagedNeighborLayeredStatus(el, this); }
186};
187
188
190{
191public:
193 const char *giveClassName() const override { return "FailureModuleElementInterface"; }
195};
196
197
204{
205private:
208
209public:
214
215 void setUpdateFlag(bool flag) { this->updateFlag = flag; }
216 bool giveUpdateFlag() { return this->updateFlag; }
217
218 void evaluateFailureCriterias(TimeStep *tStep); //Loop through all elements and evaluate criteria (if supported)
219
220
221 void evaluateYourself(TimeStep *tStep);
222 void updateXFEM(TimeStep *tStep);
224
225 void initializeFrom(InputRecord &ir);
227 const char *giveClassName() const { return "FractureManager"; }
228 const char *giveInputRecordName() const { return "FractureManager"; }
229 void clear();
230 Domain *giveDomain() { return this->domain; }
231
232 std::vector<std::unique_ptr<FailureCriteria>> criteriaList;
233 //std :: vector< CrackManager* > crackManagers; // Keep track of all cracks - each crack may have several fronts/tips
234 //std :: vector< PropagationLawManager* > propagationLawManagers;
235};
236} // end namespace oofem
237#endif // fracturemanager_h
DamagedNeighborLayeredStatus(Element *el, FailureCriteria *failCrit)
const char * giveClassName() const override
DamagedNeighborLayered(int number, FractureManager *fracMan)
bool evaluateFailureCriteria(FailureCriteriaStatus *fcStatus) override
FailureCriteriaStatus * CreateStatus(Element *el) override
const char * giveInputRecordName() const
void initializeFrom(InputRecord &ir) override
virtual int instanciateYourself(DataReader &dr)
std ::vector< bool > failedFlags
std ::vector< std ::vector< FloatArray > > quantities
FailureCriteria * giveFailureCriteria()
FailureCriteriaStatus(Element *el, FailureCriteria *failCrit)
virtual const char * giveClassName() const
FailureCriteriaStatus(int number, FailureCriteria *failCrit)
virtual void initializeFrom(InputRecord &ir)
FractureManager * giveFractureManager()
FailureCriteria(int number, FractureManager *fMan)
void setType(FailureCriteriaType _type)
virtual bool evaluateFCQuantities(Element *el, TimeStep *tStep)
virtual bool computeFailureCriteriaQuantities(FailureCriteriaStatus *fcStatus, TimeStep *tStep)
FailureCriteriaType type
FractureManager * fMan
virtual FailureCriteriaStatus * CreateStatus(Element *el)=0
FailureCriteriaType giveType()
virtual bool evaluateFailureCriteria(FailureCriteriaStatus *fcStatus)=0
std ::vector< FailureCriteriaStatus * > list
int instanciateYourself(DataReader &dr)
virtual const char * giveClassName() const
virtual void initializeFrom(InputRecord &ir)
virtual void computeFailureCriteriaQuantities(FailureCriteriaStatus *fc, TimeStep *tStep)
const char * giveClassName() const override
const char * giveClassName() const
void evaluateYourself(TimeStep *tStep)
void updateXFEM(TimeStep *tStep)
~FractureManager()
Destructor.
void evaluateFailureCriterias(TimeStep *tStep)
int instanciateYourself(DataReader &dr)
void updateXFEM(FailureCriteriaStatus *fc, TimeStep *tStep)
FractureManager(Domain *domain)
Constructor.
const char * giveInputRecordName() const
void initializeFrom(InputRecord &ir)
void setUpdateFlag(bool flag)
std::vector< std::unique_ptr< FailureCriteria > > criteriaList
Interface()
Constructor.
Definition interface.h:86
#define _IFT_DamagedNeighborLayered_Name
@ FailureCriteria_DEF

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