35#ifndef mplasticmaterial_h
36#define mplasticmaterial_h
128 const char *
giveClassName()
const override {
return "MPlasticMaterialStatus"; }
222 const FloatArray &fullStressSpaceHardeningVars)
const;
225 const FloatArray &strainSpaceHardeningVariables, std :: vector< FloatArray > &gradVec)
const;
229 MatResponseMode mode,
238 const FloatArray &fullStressSpaceHardeningVars)
const;
244 const FloatArray &strainSpaceHardeningVariables)
const = 0;
246 const FloatArray &stressSpaceHardeningVars)
const = 0;
249 const FloatArray &strainSpaceHardeningVariables,
252 const FloatArray &stressSpaceHardeningVars)
const = 0;
255 const FloatArray &stressSpaceHardeningVars)
const = 0;
260 const FloatArray &stressSpaceHardeningVars)
const = 0;
void initTempStatus() override
void restoreContext(DataStream &stream, ContextMode mode) override
FloatArray tempPlasticStrainVector
const FloatArray & giveTempGamma()
void saveContext(DataStream &stream, ContextMode mode) override
MPlasticMaterialStatus(GaussPoint *g, int statusSize)
FloatArray gamma
Consistency parameter values (needed for algorithmic stiffness).
void letPlasticStrainVectorBe(FloatArray v)
FloatArray tempStrainSpaceHardeningVarsVector
void letTempStrainSpaceHardeningVarsVectorBe(FloatArray v)
void letStrainSpaceHardeningVarsVectorBe(FloatArray v)
void letTempStateFlagBe(int v)
void setTempActiveConditionMap(IntArray v)
const char * giveClassName() const override
void updateYourself(TimeStep *tStep) override
const FloatArray & givePlasticStrainVector() const
Returns the equilibrated strain vector.
const FloatArray & giveTempPlasticStrainVector() const
Returns the actual (temp) strain vector.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void setTempGamma(FloatArray v)
const FloatArray & givetempStrainSpaceHardeningVarsVector() const
Returns the actual (temp) hardening variable vector.
IntArray activeConditionMap
Active set of yield functions (needed for algorithmic stiffness).
const FloatArray & giveStrainSpaceHardeningVars() const
Returns the equilibrated hardening variable vector.
const IntArray & giveTempActiveConditionMap()
int state_flag
Yield function status indicator.
FloatArray strainSpaceHardeningVarsVector
Strain space hardening variables.
IntArray tempActiveConditionMap
FloatArray plasticStrainVector
Plastic strain vector.
void letTempPlasticStrainVectorBe(FloatArray v)
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
FloatMatrixF< 2, 2 > give2dBeamLayerStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
const char * giveClassName() const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
bool hasMaterialModeCapability(MaterialMode mode) const override
void cuttingPlaneReturn(FloatArray &answer, IntArray &activeConditionMap, FloatArray &gamma, GaussPoint *gp, const FloatArray &totalStrain, FloatArray &plasticStrainR, FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const
virtual void computeTrialStressIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &strainIncrement, TimeStep *tStep) const
FloatMatrixF< 3, 3 > giveFiberStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
void computeAlgorithmicModuli(FloatMatrix &answer, GaussPoint *gp, const FloatMatrix &elasticModuliInverse, const FloatMatrix &hardeningModuliInverse, const FloatArray &gamma, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &fullStressSpaceHardeningVars) const
void closestPointReturn(FloatArray &answer, IntArray &activeConditionMap, FloatArray &gamma, GaussPoint *gp, const FloatArray &totalStrain, FloatArray &plasticStrainR, FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const
virtual void computeReducedGradientMatrix(FloatMatrix &answer, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const =0
virtual void computeStressSpaceHardeningVars(FloatArray &answer, GaussPoint *gp, const FloatArray &strainSpaceHardeningVariables) const =0
virtual void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const
MPlasticMaterial(int n, Domain *d)
LinearElasticMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
virtual void computeHardeningReducedModuli(FloatMatrix &answer, GaussPoint *gp, const FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const =0
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const =0
virtual double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const =0
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
virtual ~MPlasticMaterial()
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
functType
Type that allows to distinguish between yield function and loading function.
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
virtual void computeStressSpaceHardeningVarsReducedGradient(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const =0
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &, TimeStep *tStep) const override
int nsurf
Number of yield surfaces.
virtual int hasHardening() const
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
enum oofem::MPlasticMaterial::ReturnMappingAlgoType rmType
void computeGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &fullStressSpaceHardeningVars) const
ReturnMappingAlgoType
Protected type to determine the return mapping algorithm.
FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
void computeResidualVector(FloatArray &answer, GaussPoint *gp, const FloatArray &gamma, const IntArray &activeConditionMap, const FloatArray &plasticStrainVectorR, const FloatArray &strainSpaceHardeningVariables, std ::vector< FloatArray > &gradVec) const
virtual void giveElastoPlasticStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
virtual FloatMatrix giveConsistentStiffnessMatrix(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
enum oofem::MPlasticMaterial::plastType plType
void computeDiagModuli(FloatMatrix &answer, GaussPoint *gp, FloatMatrix &elasticModuliInverse, FloatMatrix &hardeningModuliInverse) const
virtual int giveSizeOfFullHardeningVarsVector() const
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)