OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
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 - 2013 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"
52 
53 
54 namespace oofem {
55 class GaussPoint;
56 class Domain;
57 
64 {
65 protected:
66  // Reference to the basic elastic material.
67  //LinearElasticMaterial *linearElasticMaterial;
68 
70  double G;
71 
73  double K;
74 
76  double H;
77 
79  double sigT;
80 
82  double tau0;
83 
85  double alpha;
86 
88  double alphaPsi;
89 
91  double yieldTol;
92 
95 
97  double omegaCrit;
98 
100  double a;
101 
102 public:
103  DruckerPragerCutMat(int n, Domain * d);
104  virtual ~DruckerPragerCutMat();
105 
106  virtual int hasMaterialModeCapability(MaterialMode mode);
107 
109 
110  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
111 
112  virtual int hasNonLinearBehaviour() { return 1; }
113  virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) { return false; }
114 
115  virtual const char *giveClassName() const { return "DruckerPragerCutMat"; }
116  virtual const char *giveInputRecordName() const { return _IFT_DruckerPragerCutMat_Name; }
117 
120 
121  virtual int giveSizeOfFullHardeningVarsVector() { return 4; }
122  virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const { return 4; } //cummulative strain = one per each surface
123 
124 protected:
125  virtual int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) { return 3; } //normally one less than number of all conditions
126 
127  virtual double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables);
128 
129  virtual void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars);
130 
132  virtual void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables);
133 
134  virtual void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep);
135 
137  virtual int hasHardening() { return 1; }
138 
140  virtual void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap);
141 
143  virtual void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables);
144 
146  virtual void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables);
147 
149  virtual void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda);
150 
152  virtual void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda);
153 
154  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
155 };
156 } // end namespace oofem
157 #endif // druckerpragercatmat_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
Class and object Domain.
Definition: domain.h:115
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
virtual int giveSizeOfFullHardeningVarsVector()
double tau0
Initial yield stress under pure shear.
LinearElasticMaterial * giveLinearElasticMaterial()
Returns a reference to the basic elastic material.
virtual void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables)
computes mixed derivative of load function with respect to stress and hardening variables ...
virtual void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars)
Computes the stress gradient of yield/loading function (df/d_sigma).
virtual void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
virtual void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables)
Computes the derivative of yield/loading function with respect to kappa_1, kappa_2 etc...
virtual void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda)
computes dk(i)/dsig(j) gradient matrix
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
DruckerPragerCutMat(int n, Domain *d)
virtual void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables)
Computes second derivative of yield/loading function with respect to stress.
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
functType
Type that allows to distinguish between yield function and loading function.
This class is a abstract base class for all linear elastic material models in a finite element proble...
double a
Parameter for damage computation from cumulative plastic strain.
virtual void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap)
Compute dot(kappa_1), dot(kappa_2) etc.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual int hasHardening()
Functions related to hardening.
double yieldTol
Tolerance of the error in the yield criterion.
double omegaCrit
Maximum damage value.
#define _IFT_DruckerPragerCutMat_Name
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
Abstract base class representing a material status information.
Definition: matstatus.h:84
virtual void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &dlambda)
computes dKappa_i/dLambda_j
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
double H
Hardening modulus.
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual const char * giveClassName() const
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual const char * giveInputRecordName() const
double alpha
Friction coefficient.
virtual int giveMaxNumberOfActiveYieldConds(GaussPoint *gp)
double alphaPsi
Dilatancy coefficient (allowing non-associated plasticity).
double G
Elastic shear modulus.
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables)
Computes the value of yield function.
int newtonIter
Maximum number of iterations in lambda search.
double sigT
Uniaxial tensile strength for cut-off.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Class representing solution step.
Definition: timestep.h:80
This class represents a base class for non-associated multisurface plasticity.
double K
Elastic bulk modulus.
This class implements an isotropic elasto-plasto-damage material with Drucker-Prager yield condition...

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011