OOFEM 3.0
Loading...
Searching...
No Matches
latticedamage.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 latticedamage_h
36#define latticedamage_h
37
39#include "latticematstatus.h"
40#include "randommaterialext.h"
41
43
44#define _IFT_LatticeDamage_Name "latticedamage"
45#define _IFT_LatticeDamage_softeningType "stype"
46#define _IFT_LatticeDamage_wf "wf"
47#define _IFT_LatticeDamage_wfOne "wf1"
48#define _IFT_LatticeDamage_e0Mean "e0"
49#define _IFT_LatticeDamage_e0OneMean "e01"
50#define _IFT_LatticeDamage_coh "coh"
51#define _IFT_LatticeDamage_ec "ec"
52#define _IFT_LatticeDamage_bio "bio"
53
54#define _IFT_LatticeDamage_btype "btype"
56
57namespace oofem {
62{
63protected:
64
65
67 double kappa = 0.;
68
70 double tempKappa = 0.;
71
73 double equivStrain = 0.;
74
76 double tempEquivStrain = 0.;
77
79 double damage = 0.;
80
82 double tempDamage = 0.;
83
85 double e0 = 0.;
86
88 double biot = 0.;
89
90public:
92
94 double giveKappa() const { return kappa; }
96 double giveTempKappa() const { return tempKappa; }
97
99 void setTempKappa(double newKappa) { tempKappa = newKappa; }
100
102 double giveEquivalentStrain() const { return equivStrain; }
104 double giveTempEquivalentStrain() const { return tempEquivStrain; }
106 void setTempEquivalentStrain(double newEquivStrain) { tempEquivStrain = newEquivStrain; }
107
108
110 double giveDamage() const { return damage; }
112 double giveTempDamage() const { return tempDamage; }
114 void setTempDamage(double newDamage) { tempDamage = newDamage; }
115
116 void printOutputAt(FILE *file, TimeStep *tStep) const override;
117
118
119 const char *giveClassName() const override { return "LatticeDamageStatus"; }
120
121 void initTempStatus() override;
122
123 void updateYourself(TimeStep *) override;
124
126 void setE0(double val) { e0 = val; }
127
128 void setBiotCoefficientInStatus(double variable) { biot = variable; }
129
130 void saveContext(DataStream &stream, ContextMode mode) override;
131
132 void restoreContext(DataStream &stream, ContextMode mode) override;
133};
134
135
140{
141protected:
142
143
145 double e0Mean = 0.;
146 double e0OneMean = 0.;
147
149 double ftMean = 0.;
150 double ftOneMean = 0.;
151
158
160 double wf = 0., wfOne = 0.;
161
162 double ultimateFactor = 0.;
163
164 //parameter for the elliptic equivalent strain function
165 double coh = 0.;
166
167 //parameter for the elliptic equivalent strain function
168 double ec = 0.;
169
171 double localRandomType = 0.;
172
174 double biotCoefficient = 0.;
175
177 int biotType = 0;
178
179
180public:
181 LatticeDamage(int n, Domain *d);
182
183 const char *giveInputRecordName() const override { return _IFT_LatticeDamage_Name; }
184 const char *giveClassName() const override { return "LatticeDamage"; }
185
186 bool hasAnalyticalTangentStiffness() const override { return true; }
187
188 void initializeFrom(InputRecord &ir) override;
189
190
192
193 FloatMatrixF< 6, 6 >give3dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
194
195 FloatMatrixF< 3, 3 >give2dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
196
197
198 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
199
200 bool hasMaterialModeCapability(MaterialMode mode) const override;
201
202 void performDamageEvaluation(GaussPoint *gp, FloatArrayF< 6 > &reducedStrain) const;
203
204 virtual double computeEquivalentStrain(const FloatArrayF< 6 > &strain, GaussPoint *gp) const;
205
206 virtual double computeBiot(double omega, double kappa, double le) const;
207
208 virtual double computeDamageParam(double kappa, GaussPoint *gp) const;
210 double computeDeltaDissipation2d(double omega, const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *atTime) const;
211
212 double computeDeltaDissipation3d(double omega, const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *atTime) const;
213
214 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
215
216 double give(int aProperty, GaussPoint *gp) const override;
217
218
219protected:
220 double computeReferenceGf(GaussPoint *gp) const;
221 double computeIntervals(double testDissipation, double referenceGf) const;
222
223 int giveIPValue(FloatArray &answer,
224 GaussPoint *gp,
226 TimeStep *atTime) override;
227};
228} // end namespace oofem
229
230#endif
double giveKappa() const
Returns the last equilibrated scalar measure of the largest strain level.
double giveTempEquivalentStrain() const
Returns the temp. scalar measure of the largest strain level.
double equivStrain
scalar measure of the largest strain level ever reached in material
double giveDamage() const
Returns the last equilibrated damage level.
double giveTempKappa() const
Returns the temp. scalar measure of the largest strain level.
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void initTempStatus() override
void saveContext(DataStream &stream, ContextMode mode) override
LatticeDamageStatus(GaussPoint *g)
void updateYourself(TimeStep *) override
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
void setTempEquivalentStrain(double newEquivStrain)
Sets the temp scalar measure of the largest strain level to given value.
double giveTempDamage() const
Returns the temp. damage level.
double tempDamage
non-equilibrated damage level of material
double tempEquivStrain
non-equilibrated scalar measure of the largest strain level
void setBiotCoefficientInStatus(double variable)
double kappa
scalar measure of the largest strain level ever reached in material
double tempKappa
non-equilibrated scalar measure of the largest strain level
double e0
random material parameter stored in status, since each gp has a differnet value.
void restoreContext(DataStream &stream, ContextMode mode) override
double biot
computed biot coefficient
double damage
damage level of material
double giveEquivalentStrain() const
Returns the last equilibrated scalar measure of the largest strain level.
void setE0(double val)
Set random e0.
const char * giveClassName() const override
int biotType
Parameter specifying how the biot coefficient changes with the crack opening.
double biotCoefficient
Biot's coefficient.
double computeDeltaDissipation3d(double omega, const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *atTime) const
bool hasMaterialModeCapability(MaterialMode mode) const override
void initializeFrom(InputRecord &ir) override
const char * giveInputRecordName() const override
virtual double computeEquivalentStrain(const FloatArrayF< 6 > &strain, GaussPoint *gp) const
double ftMean
tensile strength
bool hasAnalyticalTangentStiffness() const override
double computeIntervals(double testDissipation, double referenceGf) const
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
double localRandomType
flag which chooses between no distribution (0) and Gaussian distribution (1)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime) override
virtual double computeDamageParam(double kappa, GaussPoint *gp) const
FloatMatrixF< 6, 6 > give3dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
double computeDeltaDissipation2d(double omega, const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *atTime) const
Compute increment of dissipation for post-processing reasons.
LatticeDamage(int n, Domain *d)
virtual double computeBiot(double omega, double kappa, double le) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double computeReferenceGf(GaussPoint *gp) const
FloatArrayF< 6 > giveLatticeStress3d(const FloatArrayF< 6 > &jump, GaussPoint *gp, TimeStep *tStep) override
double give(int aProperty, GaussPoint *gp) const override
FloatMatrixF< 3, 3 > give2dLatticeStiffnessMatrix(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
double e0Mean
max effective strain at peak
const char * giveClassName() const override
double wf
determines the softening -> corresponds to crack opening when tension stress vanishes
void performDamageEvaluation(GaussPoint *gp, FloatArrayF< 6 > &reducedStrain) const
#define _IFT_LatticeDamage_Name
long ContextMode
Definition contextmode.h:43

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