35 #ifndef mplasticmaterial2_h 36 #define mplasticmaterial2_h 38 #include "../sm/Materials/structuralmaterial.h" 44 #include "../sm/Materials/structuralms.h" 136 virtual const char *
giveClassName()
const {
return "MPlasticMaterial2Status"; }
186 enum plastType { associatedPT, nonassociatedPT } plType;
198 virtual int hasMaterialModeCapability(
MaterialMode mode);
208 double alpha = this->linearElasticMaterial->
give(
tAlpha, gp);
209 answer = {alpha, alpha, alpha, 0, 0, 0};
212 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
222 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
224 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
226 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
228 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
242 virtual int giveMaxNumberOfActiveYieldConds(
GaussPoint *gp) = 0;
258 const FloatArray &strainSpaceHardeningVariables, std :: vector< FloatArray > &gradVec);
259 virtual void giveConsistentStiffnessMatrix(
FloatMatrix &answer,
264 virtual void giveElastoPlasticStiffnessMatrix(
FloatMatrix &answer,
273 const FloatArray &strainSpaceHardeningVariables);
281 const FloatArray &strainSpaceHardeningVariables) = 0;
285 const FloatArray &strainSpaceHardeningVariables) = 0;
287 const FloatArray &strainSpaceHardeningVariables);
305 const FloatArray &strainSpaceHardeningVariables) = 0;
315 virtual void computeReducedHardeningVarsLamGradient(
FloatMatrix &answer,
GaussPoint *gp,
int actSurf,
323 virtual int hasHardening() = 0;
330 const FloatArray &strainSpaceHardeningVariables) = 0;
333 const FloatArray &strainSpaceHardeningVariables) = 0;
350 virtual void givePlaneStressStiffMtrx(
FloatMatrix &answer,
354 virtual void givePlaneStrainStiffMtrx(
FloatMatrix &answer,
358 virtual void give1dStressStiffMtrx(
FloatMatrix &answer,
362 virtual void give2dBeamLayerStiffMtrx(
FloatMatrix &answer,
366 virtual void givePlateLayerStiffMtrx(
FloatMatrix &answer,
371 virtual void giveFiberStiffMtrx(
FloatMatrix &answer,
376 long getPopulationSignature(
IntArray &mask);
377 int testPopulation(
long pop);
378 void clearPopulationSet();
379 void addNewPopulation(
IntArray &mask);
380 int getNewPopulation(
IntArray &result,
IntArray &candidateMask,
int degree,
int size);
383 #endif // mplasticmaterial2_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
const FloatArray & giveTempPlasticStrainVector() const
Returns the actual (temp) strain vector.
MPlasticMaterial2Status(int n, Domain *d, GaussPoint *g, int statusSize)
FloatArray gamma
Consistency parameter values (needed for algorithmic stiffness).
GaussPoint * gp
Associated integration point.
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
bool iterativeUpdateOfActiveConds
Flag indicating whether iterative update of a set of active yield conditions takes place...
virtual ~MPlasticMaterial2Status()
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
int nsurf
Number of yield surfaces.
This class implements a structural material status information.
FloatArray stressVector
Equilibrated stress vector in reduced form.
const FloatArray & giveTempGamma()
virtual const char * giveClassName() const
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
MaterialMode
Type representing material mode of integration point.
This class implements associated Material Status to MPlasticMaterial.
Class implementing an array of integers.
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...
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
void letTempDamageBe(double v)
void letTempStateFlagBe(int v)
std::set< long > populationSet
Set for keeping record of generated populations of active yield conditions during return...
void letTempPlasticStrainVectorBe(FloatArray v)
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.
FloatArray strainSpaceHardeningVarsVector
Strain space hardening variables, e.g.
IntArray tempActiveConditionMap
FloatArray tempPlasticStrainVector
int state_flag
Yield function status indicator.
virtual int giveSizeOfFullHardeningVarsVector()
LinearElasticMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
void letStrainSpaceHardeningVarsVectorBe(FloatArray v)
Abstract base class representing a material status information.
Class representing vector of real numbers.
const FloatArray & giveTempStrainSpaceHardeningVarsVector() const
Returns the actual (temp) hardening variable vector.
Implementation of matrix containing floating point numbers.
IntArray activeConditionMap
Active set of yield functions (needed for algorithmic stiffness).
void letPlasticStrainVectorBe(FloatArray v)
const FloatArray & giveStrainSpaceHardeningVars() const
Returns the equilibrated hardening variable vector.
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
void setTempActiveConditionMap(IntArray v)
void letTempStrainSpaceHardeningVarsVectorBe(FloatArray v)
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
ReturnMappingAlgoType
Protected type to determine the return mapping algorithm.
const IntArray & giveTempActiveConditionMap()
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
void setTempGamma(FloatArray v)
the oofem namespace is to define a context or scope in which all oofem names are defined.
FloatArray plasticStrainVector
Plastic strain vector.
virtual const char * giveClassName() const
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
Class representing integration point in finite element program.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
const FloatArray & givePlasticStrainVector() const
Returns the equilibrated strain vector.
Class representing solution step.
This class represents a base class for non-associated multisurface plasticity.
double damage
Isotropic damage variables.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
FloatArray tempStrainSpaceHardeningVarsVector