OOFEM 3.0
Loading...
Searching...
No Matches
latticebondplasticity.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 latticebondplasticity_h
36#define latticebondplasticity_h
37
39#include "latticematstatus.h"
40
42
43#define _IFT_LatticeBondPlasticity_Name "latticebondplast"
44#define _IFT_LatticeBondPlasticity_tol "tol"
45#define _IFT_LatticeBondPlasticity_iter "iter"
46#define _IFT_LatticeBondPlasticity_sub "sub"
47#define _IFT_LatticeBondPlasticity_fc "fc"
48#define _IFT_LatticeBondPlasticity_angle1 "angle1"
49#define _IFT_LatticeBondPlasticity_ef "ef"
51
52namespace oofem {
57{
58protected:
59
60 double kappaP = 0.;
61 double tempKappaP = 0.;
62
63 int surfaceValue = 0.;
64
65public:
66
69
71 double giveKappaP() const { return kappaP; }
73 double giveTempKappaP() const { return tempKappaP; }
75 void setTempKappaP(double newKappa) { tempKappaP = newKappa; }
76
77 void setSurfaceValue(int val)
78 {
79 surfaceValue = val;
80 }
81
83 {
84 return surfaceValue;
85 }
86
87
88 void printOutputAt(FILE *file, TimeStep *tStep) const override;
89
90 const char *giveClassName() const override { return "LatticeBondPlasticityStatus"; }
91
92 void initTempStatus() override;
93
94 void updateYourself(TimeStep *) override;
95
96
97 void saveContext(DataStream &stream, ContextMode mode) override;
98
99 void restoreContext(DataStream &stream, ContextMode mode) override;
100};
101
103{
104protected:
105
107
109
110 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime) override;
111
113 double fc = 0.;
114
116 double frictionAngleOne = 0.;
117 double frictionAngleTwo = 0.;
118
119 double flowAngle = 0.;
120
122 double yieldTol = 0.;
123
125 int newtonIter = 0;
126
129
130 //parameter in hardening law
131 double ef = 0.;
132
133public:
134
136 LatticeBondPlasticity(int n, Domain *d);
137
138 const char *giveInputRecordName() const override { return _IFT_LatticeBondPlasticity_Name; }
139 const char *giveClassName() const override { return "LatticeBondPlasticity"; }
140
141 double computeHardening(double kappa) const;
142
143 double computeDHardeningDKappa(double kappa) const;
144
145 double computeParamA(const double kappa) const;
146 double computeDParamADKappa(const double kappa) const;
147
148 double computeShift(const double kappa) const;
149 double computeDShiftDKappa(const double kappa) const;
150
151
152 void initializeFrom(InputRecord &ir) override;
153
154 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
155
156
157
158 bool checkForVertexCase(FloatArrayF< 3 > &stress, GaussPoint *gp) const;
159
160 void performVertexReturn(FloatArrayF< 3 > &stress, GaussPoint *gp) const;
161
162 double computeTransition(const double kappa, GaussPoint *gp) const;
163
164 bool hasMaterialModeCapability(MaterialMode mode) const override;
165
166
167 /* Compute the A matrix used for closest point return
168 */
170 const double tempKappa,
171 const double deltaLambda,
172 int transitionFlag,
173 GaussPoint *gp) const;
174
176 const double tempKappa,
177 const double deltaLambda,
178 int transitionFlag,
179 GaussPoint *gp) const;
180
182 const double kappa,
183 int transitionFlag,
184 GaussPoint *gp) const;
186 const double kappa,
187 int transitionFlag,
188 GaussPoint *gp) const;
190 const double deltaLambda,
191 int transitionFlag,
192 GaussPoint *gp) const;
193
195
196
198
202 double yieldValue,
203 int transitionFlag,
204 GaussPoint *gp) const;
205
206 double computeYieldValue(const FloatArrayF< 3 > &sigma,
207 const double tempKappa,
208 int transitionFlag,
209 GaussPoint *gp) const;
210
211
212 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
213
214 virtual FloatArrayF< 6 >giveReducedStrain(GaussPoint *gp, TimeStep *tStep) const;
215};
216} // end namespace oofem
217#endif
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
double giveTempKappaP() const
Returns the temp. scalar measure of the largest strain level.
void saveContext(DataStream &stream, ContextMode mode) override
void restoreContext(DataStream &stream, ContextMode mode) override
const char * giveClassName() const override
double giveKappaP() const
Returns the last equilibrated scalar measure of the largest strain level.
void setTempKappaP(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
LatticeBondPlasticityStatus(int n, Domain *d, GaussPoint *g)
Constructor.
const char * giveInputRecordName() const override
bool hasMaterialModeCapability(MaterialMode mode) const override
double performRegularReturn(FloatArrayF< 3 > &stress, LatticeBondPlasticity_ReturnResult &returnResult, LatticeBondPlasticity_SurfaceType &surfaceType, double yieldValue, int transitionFlag, GaussPoint *gp) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
FloatArrayF< 6 > giveLatticeStress3d(const FloatArrayF< 6 > &jump, GaussPoint *gp, TimeStep *tStep) override
double computeDHardeningDKappa(double kappa) const
FloatMatrixF< 3, 3 > computeAMatrix(const FloatArrayF< 3 > &sigma, const double tempKappa, const double deltaLambda, int transitionFlag, GaussPoint *gp) const
LatticeBondPlasticity(int n, Domain *d)
Constructor.
bool checkForVertexCase(FloatArrayF< 3 > &stress, GaussPoint *gp) const
const char * giveClassName() const override
FloatArrayF< 3 > computeMVector(const FloatArrayF< 3 > &sigma, const double kappa, int transitionFlag, GaussPoint *gp) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime) override
FloatMatrixF< 3, 3 > computeDMMatrix(const FloatArrayF< 3 > &sigma, const double deltaLambda, int transitionFlag, GaussPoint *gp) const
virtual FloatArrayF< 6 > giveReducedStrain(GaussPoint *gp, TimeStep *tStep) const
void initializeFrom(InputRecord &ir) override
double computeDParamADKappa(const double kappa) const
FloatMatrixF< 4, 4 > computeJacobian(const FloatArrayF< 3 > &sigma, const double tempKappa, const double deltaLambda, int transitionFlag, GaussPoint *gp) const
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
double computeYieldValue(const FloatArrayF< 3 > &sigma, const double tempKappa, int transitionFlag, GaussPoint *gp) const
FloatArrayF< 3 > performPlasticityReturn(GaussPoint *gp, const FloatArrayF< 3 > &totalStrain, TimeStep *) const
double frictionAngleOne
frictional angle of the yield surface
double fc
compressive strength
FloatArrayF< 3 > computeFVector(const FloatArrayF< 3 > &sigma, const double kappa, int transitionFlag, GaussPoint *gp) const
double computeShift(const double kappa) const
double computeTransition(const double kappa, GaussPoint *gp) const
double computeParamA(const double kappa) const
int numberOfSubIncrements
maximum number of subincrements
int newtonIter
maximum number of iterations for stress return
double computeHardening(double kappa) const
double computeDShiftDKappa(const double kappa) const
void performVertexReturn(FloatArrayF< 3 > &stress, GaussPoint *gp) const
#define _IFT_LatticeBondPlasticity_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