OOFEM 3.0
Loading...
Searching...
No Matches
masonry02.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 masonry02_h
36#define masonry02_h
37
39
41
42#define _IFT_Masonry02_Name "masonry02"
43#define _IFT_Masonry02_ft0 "ft0"
44#define _IFT_Masonry02_gfi "gfi"
45#define _IFT_Masonry02_gfii "gfii"
46#define _IFT_Masonry02_kn "kn"
47#define _IFT_Masonry02_ks "ks"
48#define _IFT_Masonry02_c0 "c0"
49#define _IFT_Masonry02_tanfi0 "tanfi0"
50#define _IFT_Masonry02_tanfir "tanfir"
51#define _IFT_Masonry02_tanpsi "tanpsi"
52#define _IFT_Masonry02_cnn "cnn"
53#define _IFT_Masonry02_css "css"
54#define _IFT_Masonry02_cn "cn"
55#define _IFT_Masonry02_si "si"
56#define _IFT_Masonry02_sp "sp"
57#define _IFT_Masonry02_sm "sm"
58#define _IFT_Masonry02_sr "sr"
59#define _IFT_Masonry02_kp "kp"
60#define _IFT_Masonry02_km "km"
61#define _IFT_Masonry02_kr "kr"
62#define _IFT_Masonry02_cplane "cplane"
64
65namespace oofem {
66class Domain;
67
76{
77protected:
79 double ft0 = 0.;
81 double gfI = 0.;
83 double gfII = 0.;
85 double tanfir = 0.;
87 double tanfi0 = 0.;
89 double c0 = 0.;
91 double Cnn = 0., Css = 0., Cn = 0.;
92 // double fm = 0.;
93
95 double kn = 0., ks = 0.;
96
98 double tanpsi = 0.;
99
101 double sic = 0., spc = 0., smc = 0., src = 0.;
102 double kp = 0., km = 0., kr = 0.;
103
104public:
105 Masonry02(int n, Domain * d);
106
107 void initializeFrom(InputRecord &ir) override;
108 bool hasMaterialModeCapability(MaterialMode mode) const override;
109
110 const char *giveInputRecordName() const override { return _IFT_Masonry02_Name; }
111 const char *giveClassName() const override { return "Masonry02"; }
112
113 void giveStiffnessMatrix(FloatMatrix &answer,
114 MatResponseMode mode,
115 GaussPoint *gp,
116 TimeStep *tStep) const override;
117
118 int giveSizeOfFullHardeningVarsVector() const override { return 3; }
119 int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const override { return 3; }
120
121 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
122
123 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
124
125
126protected:
127 int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) const override { return 2; }
128 //
129 // yield(YC-like functions) and loading(LC-like functions) criteria specific section
130 //
131
132 double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector,
133 const FloatArray &stressSpaceHardeningVars) const override;
134
135 void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector,
136 const FloatArray &stressSpaceHardeningVars) const override;
138 const FloatArray &stress, const FloatArray &dlambda,
139 const FloatArray &dplasticStrain, const IntArray &activeConditionMap) const override;
140 void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector,
141 const FloatArray &strainSpaceHardeningVariables) const override;
142
143 void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap,
144 const FloatArray &fullStressVector,
145 const FloatArray &strainSpaceHardeningVars,
146 const FloatArray &gamma) const override;
148 const IntArray &activeConditionMap,
149 const FloatArray &fullStressVector,
150 const FloatArray &strainSpaceHardeningVars,
151 const FloatArray &gamma) const override;
152 int hasHardening() const override { return 1; }
153
154 void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector,
155 const FloatArray &strainSpaceHardeningVariables) const override;
156 void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector,
157 const FloatArray &strainSpaceHardeningVariables) const override;
158
159
160 void give2dInterfaceMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode,
161 GaussPoint *gp, TimeStep *tStep) const;
162
163 void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const override;
164
166 double computeF3HardeningLaw(double k) const;
167 double computeF3HardeningGradient(double k) const;
168};
169} // end namespace oofem
170#endif // masonry02_h
functType
Type that allows to distinguish between yield function and loading function.
MPlasticMaterial2(int n, Domain *d)
double computeF3HardeningLaw(double k) const
Cap mode related functions.
Definition masonry02.C:543
void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition masonry02.C:481
double kn
Elastic properties.
Definition masonry02.h:95
double computeF3HardeningGradient(double k) const
Definition masonry02.C:586
double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const override
Computes the value of yield function.
Definition masonry02.C:103
int giveSizeOfFullHardeningVarsVector() const override
Definition masonry02.h:118
int hasHardening() const override
Definition masonry02.h:152
Masonry02(int n, Domain *d)
Definition masonry02.C:47
double Cnn
Cap mode parameters.
Definition masonry02.h:91
bool hasMaterialModeCapability(MaterialMode mode) const override
Definition masonry02.C:58
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition masonry02.C:463
const char * giveClassName() const override
Definition masonry02.h:111
void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &gamma) const override
computes derivative of vector with respect to lambda vector
Definition masonry02.C:256
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
Definition masonry02.h:121
void initializeFrom(InputRecord &ir) override
Definition masonry02.C:67
void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap) const override
Definition masonry02.C:200
void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
Definition masonry02.C:335
const char * giveInputRecordName() const override
Definition masonry02.h:110
double gfII
Mode II GF.
Definition masonry02.h:83
double tanfi0
Initial friction angle.
Definition masonry02.h:87
void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const override
Computes the stress gradient of yield/loading function (df/d_sigma).
Definition masonry02.C:147
double tanpsi
Dilatancy angle.
Definition masonry02.h:98
int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const override
Definition masonry02.h:119
void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const override
Definition masonry02.C:516
double tanfir
Residual friction angle.
Definition masonry02.h:85
int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) const override
Definition masonry02.h:127
void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &gamma) const override
Definition masonry02.C:389
void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
Computes second derivative of loading function with respect to stress.
Definition masonry02.C:413
double gfI
Mode I GF.
Definition masonry02.h:81
double ft0
Tensile strength.
Definition masonry02.h:79
double c0
Initial cohesion of joint.
Definition masonry02.h:89
double sic
Cap mode parameters.
Definition masonry02.h:101
void give2dInterfaceMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
Definition masonry02.C:500
void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
Computes second derivative of loading function with respect to stress and hardening vars.
Definition masonry02.C:427
#define _IFT_Masonry02_Name
Definition masonry02.h:42

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