OOFEM 3.0
Loading...
Searching...
No Matches
druckerpragercutmat.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 druckerpragercatmat_h
36#define druckerpragercatmat_h
37
39
41
42#define _IFT_DruckerPragerCutMat_Name "druckerpragercutmat"
43#define _IFT_DruckerPragerCutMat_alpha "alpha"
44#define _IFT_DruckerPragerCutMat_alphapsi "alphapsi"
45#define _IFT_DruckerPragerCutMat_h "h"
46#define _IFT_DruckerPragerCutMat_sigT "sigt"
47#define _IFT_DruckerPragerCutMat_omegaCrit "omega_crit"
48#define _IFT_DruckerPragerCutMat_a "a"
49#define _IFT_DruckerPragerCutMat_yieldTol "yieldtol"
50#define _IFT_DruckerPragerCutMat_newtonIter "newtoniter"
51#define _IFT_DruckerPragerCutMat_tau0 "tau0"
53
54namespace oofem {
55class GaussPoint;
56class Domain;
57
64{
65protected:
66 // Reference to the basic elastic material.
67 //LinearElasticMaterial *linearElasticMaterial;
68
70 double G = 0.;
71
73 double K = 0.;
74
76 double H = 0.;
77
79 double sigT = 0.;
80
82 double tau0 = 0.;
83
85 double alpha = 0.;
86
88 double alphaPsi = 0.;
89
91 double yieldTol = 0.;
92
94 int newtonIter = 30;
95
97 double omegaCrit = 0.;
98
100 double a = 0.;
101
102public:
103 DruckerPragerCutMat(int n, Domain * d);
104
105 bool hasMaterialModeCapability(MaterialMode mode) const override;
106
107 bool hasCastingTimeSupport() const override { return true; }
108
109 void initializeFrom(InputRecord &ir) override;
110
111 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
112
113 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
114
115 const char *giveClassName() const override { return "DruckerPragerCutMat"; }
116 const char *giveInputRecordName() const override { return _IFT_DruckerPragerCutMat_Name; }
117
120
121 int giveSizeOfFullHardeningVarsVector() const override { return 4; }
122 int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const override { return 4; } //cummulative strain = one per each surface
123
124protected:
125 int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) const override { return 3; } //normally one less than number of all conditions
126
127 double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables) const override;
128
129 void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const override;
130
132 void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override;
133
134 void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const override;
135
137 int hasHardening() const override { return 1; }
138
140 void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap) const override;
141
143 void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override;
144
146 void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override;
147
149 void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda) const override;
150
152 void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda) const override;
153
154 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
155};
156} // end namespace oofem
157#endif // druckerpragercatmat_h
void initializeFrom(InputRecord &ir) override
double omegaCrit
Maximum damage value.
int hasHardening() const override
Functions related to hardening.
void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda) const override
computes dk(i)/dsig(j) gradient matrix
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double sigT
Uniaxial tensile strength for cut-off.
void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap) const override
Compute dot(kappa_1), dot(kappa_2) etc.
void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
Computes second derivative of yield/loading function with respect to stress.
DruckerPragerCutMat(int n, Domain *d)
bool hasMaterialModeCapability(MaterialMode mode) const override
const char * giveClassName() const override
void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda) const override
computes dKappa_i/dLambda_j
double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables) const override
Computes the value of yield function.
double alphaPsi
Dilatancy coefficient (allowing non-associated plasticity).
double G
Elastic shear modulus.
int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) const override
LinearElasticMaterial * giveLinearElasticMaterial()
Returns a reference to the basic elastic material.
double yieldTol
Tolerance of the error in the yield criterion.
void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
computes mixed derivative of load function with respect to stress and hardening variables
int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const override
int giveSizeOfFullHardeningVarsVector() const override
const char * giveInputRecordName() const override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
double K
Elastic bulk modulus.
void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const override
void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const override
Computes the derivative of yield/loading function with respect to kappa_1, kappa_2 etc.
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
double alpha
Friction coefficient.
double a
Parameter for damage computation from cumulative plastic strain.
double tau0
Initial yield stress under pure shear.
bool hasCastingTimeSupport() const override
int newtonIter
Maximum number of iterations in lambda search.
double H
Hardening modulus.
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).
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
functType
Type that allows to distinguish between yield function and loading function.
MPlasticMaterial2(int n, Domain *d)
#define _IFT_DruckerPragerCutMat_Name

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