OOFEM 3.0
Loading...
Searching...
No Matches
latticeplasticitydamage.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 program is free software; you can redistribute it and/or modify
21 * it under the terms of the GNU General Public License as published by
22 * the Free Software Foundation; either version 2 of the License, or
23 * (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
28 * GNU General Public License for more details.
29 *
30 * You should have received a copy of the GNU General Public License
31 * along with this program; if not, write to the Free Software
32 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
33 */
34
35#ifndef latticeplasticitydamage_h
36#define latticeplasticitydamage_h
37
39#include "latticematstatus.h"
40
42
43#define _IFT_LatticePlasticityDamage_Name "latticeplastdam"
44#define _IFT_LatticePlasticityDamage_tol "tol"
45#define _IFT_LatticePlasticityDamage_iter "iter"
46#define _IFT_LatticePlasticityDamage_sub "sub"
47#define _IFT_LatticePlasticityDamage_ft "ft"
48#define _IFT_LatticePlasticityDamage_fc "fc"
49#define _IFT_LatticePlasticityDamage_angle1 "angle1"
50#define _IFT_LatticePlasticityDamage_angle2 "angle2"
51#define _IFT_LatticePlasticityDamage_flow "flow"
52#define _IFT_LatticePlasticityDamage_stype "stype"
53#define _IFT_LatticePlasticityDamage_wf "wf"
54#define _IFT_LatticePlasticityDamage_ft1 "ft1"
55#define _IFT_LatticePlasticityDamage_wf1 "wf1"
56#define _IFT_LatticePlasticityDamage_ahard "ahard"
57#define _IFT_LatticePlasticityDamage_damage "damage"
59
60namespace oofem {
66{
67protected:
68
69 double kappaP = 0.;
70
71 double tempKappaP = 0.;
72
73 double kappaDOne = 0., kappaDTwo = 0.;//, kappaDThree;
74
75 double tempKappaDOne = 0., tempKappaDTwo = 0.;//, tempKappaDThree;
76
77 double damage = 0.;
78
79 double tempDamage = 0.;
80
81 //double e0 = 0.;
82
84
85
86public:
87
90
91 double giveKappaP() const { return kappaP; }
92
93 double giveTempKappaP() const { return tempKappaP; }
94
95 double giveKappaDOne() const { return kappaDOne; }
96 double giveKappaDTwo() const { return kappaDTwo; }
97
98 double giveTempKappaDOne() const { return tempKappaDOne; }
99 double giveTempKappaDTwo() const { return tempKappaDTwo; }
100
101 void setTempKappaP(double newKappa) { tempKappaP = newKappa; }
102
103 void setTempKappaDOne(double newKappa) { tempKappaDOne = newKappa; }
104
105 void setTempKappaDTwo(double newKappa) { tempKappaDTwo = newKappa; }
106
107 double giveDamage() const { return damage; }
108
109 double giveTempDamage() const { return tempDamage; }
110
111 void setTempDamage(double newDamage) { tempDamage = newDamage; }
112
113 int giveCompressionFlag() const { return compressionFlag; }
114
115 void setCompressionFlag(int flag) { compressionFlag = flag; }
116
117 void printOutputAt(FILE *file, TimeStep *tStep) const override;
118
119 const char *giveClassName() const override { return "LatticePlasticityDamageStatus"; }
120
121 void initTempStatus() override;
122
123 void updateYourself(TimeStep *) override;
124
125 void saveContext(DataStream &stream, ContextMode mode) override;
126
127 void restoreContext(DataStream &stream, ContextMode mode) override;
128};
129
130
135{
136protected:
137
143
145
147 double ft = 0.;
149 double fc = 0.;
151 double frictionAngleOne = 0.;
153 double frictionAngleTwo = 0.;
155 double flowAngleOne = 0.;
156
158 double flowAngleTwo = 0.;
159
161 double wf = 0.;
162
165
167 double ftOneRatio = 0.;
168
170 double wfOne = 0.;
171
173 double aHard = 0.;
174
176 double yieldTol = 0.;
177
179 int newtonIter = 0;
181
183 int damageFlag = 0;
184
185 virtual double giveTensileStrength(GaussPoint *gp, TimeStep *tStep) const { return this->give(ft_strength, gp) * this->ft; }
186
187 virtual double giveCompressiveStrength(GaussPoint *gp, TimeStep *tStep) const { return this->give(fc_strength, gp) * this->fc; }
188
189public:
190
193
194 const char *giveInputRecordName() const override { return _IFT_LatticePlasticityDamage_Name; }
195 const char *giveClassName() const override { return "LatticePlasticityDamage"; }
196
197
198 void initializeFrom(InputRecord &ir) override;
199
200 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
201
202 double give(int aProperty, GaussPoint *gp) const override;
203
204 FloatMatrixF< 6, 6 >give3dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
205
206 bool hasMaterialModeCapability(MaterialMode mode) const override;
207
208
209 FloatArrayF< 3 >computeFVector(const FloatArrayF< 3 > &sigma, const double deltaLambda,
210 GaussPoint *gp, TimeStep *tStep) const;
211
212 FloatArrayF< 3 >computeMVector(const FloatArrayF< 3 > &sigma, const double deltaLambda,
213 GaussPoint *gp, TimeStep *tStep) const;
214
215 FloatMatrixF< 3, 3 >computeDMMatrix(const FloatArrayF< 3 > &sigma, const double deltaLambda,
216 GaussPoint *gp, TimeStep *tStep) const;
217
218
219 FloatMatrixF< 4, 4 >computeJacobian(const FloatArrayF< 3 > &sigma, const double tempKappa,
220 const double deltaLambda, GaussPoint *gp, TimeStep *tStep) const;
221
222 virtual double computeDamageParam(double kappaOne, double kappaTwo, GaussPoint *gp, TimeStep *tStep) const;
223
225
227 const FloatArrayF< 6 > &reducedStrain,
228 TimeStep *tStep) const;
229
231 FloatArrayF< 6 > &reducedStrain,
232 TimeStep *tStep) const;
233
234 double performRegularReturn(FloatArrayF< 3 > &stress, LatticePlasticityDamage_ReturnResult &returnResult, double yieldValue, GaussPoint *gp, TimeStep *tStep) const;
235
236 double computeYieldValue(const FloatArrayF< 3 > &sigma,
237 const double tempKappa,
238 GaussPoint *gp,
239 TimeStep *tStep) const;
240
241 double computeHardening(const double kappa,
242 GaussPoint *gp) const;
243
244
245 double computeDHardeningDKappa(const double kappa,
246 GaussPoint *gp) const;
247 double computeDDHardeningDDKappa(const double kappa,
248 GaussPoint *gp) const;
249
250 double computeDuctilityMeasure(FloatArray &stress, double ductilityParameter) const;
251
252 double computeYieldStress(double kappaP, GaussPoint *gp);
253 const
254
255 double computeEquivalentStress(const FloatArray &tempSigma) const;
256
257 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
258
259 virtual FloatArrayF< 6 >giveReducedStrain(GaussPoint *gp, TimeStep *tStep) const;
260
261
262protected:
263
264 int giveIPValue(FloatArray &answer,
265 GaussPoint *gp,
267 TimeStep *atTime) override;
268
270 GaussPoint *gp);
271
274 MaterialMode mmode);
275
277};
278} // end namespace oofem
279
280#endif
LatticePlasticityDamageStatus(int n, Domain *d, GaussPoint *g)
Constructor.
const char * giveClassName() const override
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void restoreContext(DataStream &stream, ContextMode mode) override
void saveContext(DataStream &stream, ContextMode mode) override
FloatArrayF< 6 > giveLatticeStress3d(const FloatArrayF< 6 > &jump, GaussPoint *gp, TimeStep *tStep) override
double performRegularReturn(FloatArrayF< 3 > &stress, LatticePlasticityDamage_ReturnResult &returnResult, double yieldValue, GaussPoint *gp, TimeStep *tStep) const
double computeYieldStress(double kappaP, GaussPoint *gp)
double flowAngleTwo
frictional angle of the plastic potential
double computeDDHardeningDDKappa(const double kappa, GaussPoint *gp) const
double computeDHardeningDKappa(const double kappa, GaussPoint *gp) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime) override
double ftOneRatio
ratio of tensile stress value for bilinear stress-crack opening curve
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
bool hasMaterialModeCapability(MaterialMode mode) const override
double flowAngleOne
frictional angle of the plastic potential
virtual double giveTensileStrength(GaussPoint *gp, TimeStep *tStep) const
double computeHardening(const double kappa, GaussPoint *gp) const
FloatMatrixF< 4, 4 > computeJacobian(const FloatArrayF< 3 > &sigma, const double tempKappa, const double deltaLambda, GaussPoint *gp, TimeStep *tStep) const
virtual double giveCompressiveStrength(GaussPoint *gp, TimeStep *tStep) const
virtual double computeDamageParam(double kappaOne, double kappaTwo, GaussPoint *gp, TimeStep *tStep) const
int softeningType
softening type determines the type of softening. 0 is exponential and 1 is bilinear.
double give(int aProperty, GaussPoint *gp) const override
const char * giveClassName() const override
int giveIntVarCompFullIndx(IntArray &answer, InternalStateType type, MaterialMode mmode)
FloatMatrixF< 3, 3 > computeDMMatrix(const FloatArrayF< 3 > &sigma, const double deltaLambda, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 6 > giveReducedStrain(GaussPoint *gp, TimeStep *tStep) const
double frictionAngleTwo
frictional angle of the yield surface
InternalStateValueType giveIPValueType(InternalStateType type)
FloatArrayF< 3 > computeMVector(const FloatArrayF< 3 > &sigma, const double deltaLambda, GaussPoint *gp, TimeStep *tStep) const
int giveIPValueSize(InternalStateType type, GaussPoint *gp)
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
double frictionAngleOne
frictional angle of the yield surface
double computeDuctilityMeasure(FloatArray &stress, double ductilityParameter) const
FloatMatrixF< 6, 6 > give3dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
const char * giveInputRecordName() const override
double computeYieldValue(const FloatArrayF< 3 > &sigma, const double tempKappa, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 6 > performPlasticityReturn(GaussPoint *gp, const FloatArrayF< 6 > &reducedStrain, TimeStep *tStep) const
double wf
determines the softening -> corresponds to crack opening (not strain) when tension stress vanishes
FloatArrayF< 3 > computeFVector(const FloatArrayF< 3 > &sigma, const double deltaLambda, GaussPoint *gp, TimeStep *tStep) const
const double computeEquivalentStress(const FloatArray &tempSigma) const
double wfOne
crack opening value for bilinear stress-crack opening curve
int newtonIter
maximum number of iterations for stress return
LatticePlasticityDamage(int n, Domain *d)
Constructor.
void initializeFrom(InputRecord &ir) override
void performDamageEvaluation(GaussPoint *gp, FloatArrayF< 6 > &reducedStrain, TimeStep *tStep) const
#define _IFT_LatticePlasticityDamage_Name
#define fc_strength
Definition matconst.h:92
#define ft_strength
Definition matconst.h:91
long ContextMode
Definition contextmode.h:43
InternalStateValueType
Determines the type of internal variable.

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