OOFEM 3.0
Loading...
Searching...
No Matches
misesmat.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 misesmat_h
36#define misesmat_h
37
41#include "dictionary.h"
42#include "floatarray.h"
43#include "floatmatrix.h"
44#include "scalarfunction.h"
45
47
48#define _IFT_MisesMat_Name "misesmat"
49#define _IFT_MisesMat_sig0 "sig0"
50#define _IFT_MisesMat_h "h"
51#define _IFT_MisesMat_htype "htype"
52#define _IFT_MisesMat_h_eps "h_eps"
53#define _IFT_MisesMat_h_function_eps "h(eps)"
54#define _IFT_MisesMat_omega_crit "omega_crit"
55#define _IFT_MisesMat_a "a"
56#define _IFT_MisesMat_yieldTol "yieldtol"
58
59namespace oofem {
60class GaussPoint;
61class Domain;
62
77{
78protected:
81
83 double G = 0.;
84
86 double K = 0.;
87
89 double H = 0.;
90
93
95 int hType;
96
99
101 double omega_crit = 0.;
103 double a = 0.;
104
106 double yieldTol = 0.;
107
108public:
109 MisesMat(int n, Domain *d);
110
111 void performPlasticityReturn(const FloatArray &totalStrain, GaussPoint *gp, TimeStep *tStep) const;
112 void performPlasticityReturn_PlaneStress(const FloatArrayF< 3 > &totalStrain, GaussPoint *gp, TimeStep *tStep) const;
113
114 double checkYieldStress(double &dKappa, double kappa, GaussPoint *gp, TimeStep *tStep) const;
115 double computeYieldStress(double kappa, GaussPoint *gp, TimeStep *tStep) const;
116 double computeYieldStressPrime(double kappa) const;
117
118 double computeDamage(GaussPoint *gp, TimeStep *tStep) const;
119 double computeDamageParam(double tempKappa) const;
120 double computeDamageParamPrime(double tempKappa) const;
121 virtual double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const;
122
123 void initializeFrom(InputRecord &ir) override;
124
125 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
126
127 const char *giveInputRecordName() const override { return _IFT_MisesMat_Name; }
128 const char *giveClassName() const override { return "MisesMat"; }
129
130 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
131
132 FloatMatrixF< 6, 6 >give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
133
134 FloatMatrixF< 3, 3 >givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override;
135
136 FloatMatrixF< 1, 1 >give1dStressStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
137
138 FloatArrayF< 6 >giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override;
139
140 FloatArrayF< 3 >giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &totalStrain, GaussPoint *gp, TimeStep *tStep) const override;
141
142 FloatArrayF< 1 >giveRealStressVector_1d(const FloatArrayF< 1 > &reducedE, GaussPoint *gp, TimeStep *tStep) const override;
143
144 double giveS(GaussPoint *gp, TimeStep *tStep) const;
145 double giveTemperature(GaussPoint *gp, TimeStep *tStep) const;
146
147protected:
149
150
151 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
152};
153
154//=============================================================================
155
156
158{
159protected:
162
165
168
170 double trialStressV = 0.;
171
174
176 double kappa = 0.;
177
179 double tempKappa = 0.;
180
182 double damage = 0.;
183
185 double tempDamage = 0.;
186
187
188public:
190
191 const FloatArray &givePlasticStrain() const { return plasticStrain; }
192
193 const FloatArray &giveTrialStressDev() const { return trialStressD; }
194
195 double giveTrialStressVol() const { return trialStressV; }
196
197 double giveDamage() const { return damage; }
198 double giveTempDamage() const { return tempDamage; }
199
200 double giveCumulativePlasticStrain() const { return kappa; }
202
204 const FloatArray &giveEffectiveStress() const { return effStress; }
205
206 void letTempPlasticStrainBe(const FloatArray &values) { tempPlasticStrain = values; }
208
209 void letTrialStressDevBe(const FloatArray &values) { trialStressD = values; }
210
211 void letEffectiveStressBe(const FloatArray &values) { effStress = values; }
212
213 void letTempEffectiveStressBe(const FloatArray &values) { tempEffStress = values; }
214
215
216 void setTrialStressVol(double value) { trialStressV = value; }
217
218
219
220
221 void setTempCumulativePlasticStrain(double value) { tempKappa = value; }
222
223 void setTempDamage(double value) { tempDamage = value; }
224
226
227 void printOutputAt(FILE *file, TimeStep *tStep) const override;
228
229 void initTempStatus() override;
230
231 void updateYourself(TimeStep *tStep) override;
232
233 void saveContext(DataStream &stream, ContextMode mode) override;
234 void restoreContext(DataStream &stream, ContextMode mode) override;
235
236 const char *giveClassName() const override { return "MisesMatStatus"; }
237};
238} // end namespace oofem
239#endif // misesmat_h
void restoreContext(DataStream &stream, ContextMode mode) override
Definition misesmat.C:778
double giveDamage() const
Definition misesmat.h:197
const char * giveClassName() const override
Definition misesmat.h:236
double damage
damage variable (initial).
Definition misesmat.h:182
void letTempEffectiveStressBe(const FloatArray &values)
Definition misesmat.h:213
double giveTempCumulativePlasticStrain() const
Definition misesmat.h:201
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition misesmat.C:683
const FloatArray & givePlasDef()
Definition misesmat.h:225
void saveContext(DataStream &stream, ContextMode mode) override
Definition misesmat.C:758
double giveTempDamage() const
Definition misesmat.h:198
double giveCumulativePlasticStrain() const
Definition misesmat.h:200
const FloatArray & giveEffectiveStress() const
Definition misesmat.h:204
void setTrialStressVol(double value)
Definition misesmat.h:216
const FloatArray & giveTempEffectiveStress() const
Definition misesmat.h:203
FloatArray trialStressD
Deviatoric trial stress - needed for tangent stiffness.
Definition misesmat.h:167
FloatArray effStress
Definition misesmat.h:172
void setTempDamage(double value)
Definition misesmat.h:223
void letTempPlasticStrainBe(const FloatArray &values)
Definition misesmat.h:206
double giveTrialStressVol() const
Definition misesmat.h:195
void letTrialStressDevBe(const FloatArray &values)
Definition misesmat.h:209
void initTempStatus() override
Definition misesmat.C:707
void setTempCumulativePlasticStrain(double value)
Definition misesmat.h:221
double trialStressV
volumetric trial stress - needed for tangent stiffness.
Definition misesmat.h:170
FloatArray tempPlasticStrain
Plastic strain (final).
Definition misesmat.h:164
double kappa
Cumulative plastic strain (initial).
Definition misesmat.h:176
double tempDamage
damage variable (final).
Definition misesmat.h:185
void updateYourself(TimeStep *tStep) override
Definition misesmat.C:720
const FloatArray & givePlasticStrain() const
Definition misesmat.h:191
FloatArray tempEffStress
Definition misesmat.h:173
const FloatArray & giveTrialStressDev() const
Definition misesmat.h:193
MisesMatStatus(GaussPoint *g)
Definition misesmat.C:672
void letEffectiveStressBe(const FloatArray &values)
Definition misesmat.h:211
double tempKappa
Cumulative plastic strain (final).
Definition misesmat.h:179
const FloatArray & getTempPlasticStrain() const
Definition misesmat.h:207
FloatArray plasticStrain
Plastic strain (initial).
Definition misesmat.h:161
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &reducedE, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
Definition misesmat.C:109
ScalarFunction sig0
Initial (uniaxial) yield stress.
Definition misesmat.h:92
IsotropicLinearElasticMaterial linearElasticMaterial
Reference to the basic elastic material.
Definition misesmat.h:80
double giveS(GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:732
virtual double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:486
void initializeFrom(InputRecord &ir) override
Definition misesmat.C:60
const char * giveInputRecordName() const override
Definition misesmat.h:127
double computeDamageParam(double tempKappa) const
Definition misesmat.C:451
double computeYieldStress(double kappa, GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:404
double G
Elastic shear modulus.
Definition misesmat.h:83
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition misesmat.C:496
double a
exponent in damage function.
Definition misesmat.h:103
double giveTemperature(GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:739
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition misesmat.C:616
double checkYieldStress(double &dKappa, double kappa, GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:379
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition misesmat.C:647
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition misesmat.C:103
double computeDamage(GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:472
const char * giveClassName() const override
Definition misesmat.h:128
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
Definition misesmat.h:125
double yieldTol
tolerance for the yield function in RRM algorithm.
Definition misesmat.h:106
void performPlasticityReturn(const FloatArray &totalStrain, GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:181
FloatArray h_eps
user-defined hardening (yield stress - kappa)
Definition misesmat.h:98
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
Definition misesmat.C:548
double computeYieldStressPrime(double kappa) const
Definition misesmat.C:426
int hType
type of hardening function
Definition misesmat.h:95
double H
Hardening modulus.
Definition misesmat.h:89
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &totalStrain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
Definition misesmat.C:145
void performPlasticityReturn_PlaneStress(const FloatArrayF< 3 > &totalStrain, GaussPoint *gp, TimeStep *tStep) const
Definition misesmat.C:266
double omega_crit
critical(maximal) damage.
Definition misesmat.h:101
double K
Elastic bulk modulus.
Definition misesmat.h:86
FloatArray h_function_eps
Definition misesmat.h:98
void computeGLPlasticStrain(const FloatMatrix &F, FloatMatrix &Ep, FloatMatrix b, double J)
double computeDamageParamPrime(double tempKappa) const
Definition misesmat.C:461
MisesMat(int n, Domain *d)
Definition misesmat.C:54
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Definition misesmat.C:162
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)
#define _IFT_MisesMat_Name
Definition misesmat.h:48
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