35 #ifndef druckerpragerplasticitysm_h 36 #define druckerpragerplasticitysm_h 41 #include "../sm/Materials/structuralms.h" 42 #include "../sm/Materials/structuralmaterial.h" 47 #define _IFT_DruckerPragerPlasticitySM_Name "druckerprager" 48 #define _IFT_DruckerPragerPlasticitySM_iys "iys" 49 #define _IFT_DruckerPragerPlasticitySM_alpha "alpha" 50 #define _IFT_DruckerPragerPlasticitySM_alphapsi "alphapsi" 51 #define _IFT_DruckerPragerPlasticitySM_ht "ht" 52 #define _IFT_DruckerPragerPlasticitySM_hm "hm" 53 #define _IFT_DruckerPragerPlasticitySM_kc "kc" 54 #define _IFT_DruckerPragerPlasticitySM_lys "lys" 55 #define _IFT_DruckerPragerPlasticitySM_yieldtol "yieldtol" 56 #define _IFT_DruckerPragerPlasticitySM_newtoniter "newtoniter" 102 virtual const char *
giveClassName()
const {
return "DruckerPragerPlasticitySMStatus"; }
238 virtual const char *
giveClassName()
const {
return "DruckerPragerPlasticitySM"; }
241 virtual void giveRealStressVector_3d(
FloatArray &answer,
246 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
263 bool checkForVertexCase(
double eM,
double gM,
double kM,
double trialStressJTwo,
double volumetricStress,
double tempKappa);
270 void performRegularReturn(
double eM,
double gM,
double kM,
double trialStressJTwo,
FloatArray &stressDeviator,
double &volumetricStress,
double &tempKappa);
277 void performVertexReturn(
double eM,
double gM,
double kM,
double trialStressJTwo,
FloatArray &stressDeviator,
double &volumetricStress,
double &tempKappa,
double volumetricElasticTrialStrain,
double kappa);
286 double computeYieldValue(
double meanStress,
296 virtual double computeYieldStressInShear(
double kappa,
double eM)
const;
304 virtual double computeYieldStressPrime(
double kappa,
double eM)
const;
313 void giveRegAlgorithmicStiffMatrix(
FloatMatrix &answer,
324 void giveVertexAlgorithmicStiffMatrix(
FloatMatrix &answer,
343 virtual double predictRelativeComputationalCost(
GaussPoint *gp);
347 #endif // druckerpragerplasticitysm_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double yieldTol
Yield tolerance.
GaussPoint * gp
Associated integration point.
#define _IFT_DruckerPragerPlasticitySM_Name
int newtonIter
Maximum number of iterations for stress return.
const FloatArray & givePlasticStrainDeviator() const
Get the plastic strain deviator from the material status.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
FloatArray tempPlasticStrainDeviator
This class implements a structural material status information.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
const FloatArray & giveTempPlasticStrainDeviator() const
Get the temp value of the plastic strain deviator from the material status.
virtual ~DruckerPragerPlasticitySMStatus()
Destructor.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
double tempVolumetricPlasticStrain
double giveTempVolumetricPlasticStrain() const
Get the temp value of the volumetric strain deviator from the material status.
MatResponseMode
Describes the character of characteristic material matrix.
double limitYieldStress
Parameter of the exponential hardening law.
state_flag_values
Values of history variable state_flag.
double giveVolumetricPlasticStrain() const
Get the volumetric plastic strain from the material status.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
double kappa
Hardening variable.
int giveTempStateFlag() const
Get the temp value of the state flag from the material status.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
double kappaC
Parameter of the exponential laws.
This class implements an isotropic linear elastic material in a finite element problem.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
FloatArray plasticStrainDeviator
Deviatoric of plastic strain.
void letTempPlasticStrainDeviatorBe(const FloatArray &v)
Assign the temp value of deviatoric plastic strain.
state_flag_values
Values of history variable state_flag.
double giveTempKappa() const
Get the temp value of the hardening variable from the material status.
This class implements the material status associated to DruckerPragerPlasticitySM.
void givePlasticStrainVector(FloatArray &answer) const
Get the full plastic strain vector from the material status.
Abstract base class representing a material status information.
void giveTempPlasticStrainVector(FloatArray &answer) const
Get the temp value of the full plastic strain vector from the material status.
Class representing vector of real numbers.
virtual const char * giveInputRecordName() const
IsotropicLinearElasticMaterial * LEMaterial
Associated linear elastic material.
double hardeningModulus
Hardening modulus normalized with the elastic modulus, parameter of the linear hardening/softening la...
void letTempStateFlagBe(int v)
Assign the temp value of the state flag.
FloatArray strainVector
Equilibrated strain vector in reduced form.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
int hardeningType
Controls the hardening function in the yield stress: 1: linear hardening/softening with cutoff at zer...
double alpha
Friction coefficient, parameter of the yield criterion.
double kFactor
Scalar factor between rate of plastic multiplier and rate of hardening variable.
DruckerPragerPlasticitySMStatus(int n, Domain *d, GaussPoint *gp)
Constructor.
int giveStateFlag() const
Get the state flag from the material status.
This class implements a (local) nonassociated plasticity model based on the Drucker-Prager yield crit...
void letTempKappaBe(double v)
Assign the temp value of the hardening variable.
virtual const char * giveClassName() const
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
double volumetricPlasticStrain
Volumetric plastic strain.
double alphaPsi
Dilatancy coefficient, parameter of the flow rule.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
the oofem namespace is to define a context or scope in which all oofem names are defined.
void letTempVolumetricPlasticStrainBe(double v)
Assign the temp value of volumetric plastic strain.
virtual const char * giveClassName() const
virtual double predictRelativeRedistributionCost(GaussPoint *gp)
Returns the relative redistribution cost of the receiver.
double initialYieldStress
Parameter of all three laws, this is the initial value of the yield stress in pure shear...
Class representing integration point in finite element program.
Class representing solution step.
double giveKappa() const
Get the hardening variable from the material status.
int state_flag
Indicates the state (i.e. elastic, yielding, vertex, unloading) of the Gauss point.