35#ifndef plasticmaterial_h
36#define plasticmaterial_h
99 const char *
giveClassName()
const override {
return "PlasticMaterialStatus"; }
189 FloatArray *fullStressSpaceHardeningVars)
const;
201 double Gamma,
const FloatArray &fullStressVector,
202 const FloatArray &fullStressSpaceHardeningVars)
const;
208 FloatArray *strainSpaceHardeningVariables)
const
211 FloatArray *stressSpaceHardeningVars)
const {
return 0.; }
217 FloatArray *stressSpaceHardeningVars)
const {
return NULL; }
226 const FloatArray &stressSpaceHardeningVars)
const = 0;
void letPlasticStrainVectorBe(FloatArray v)
void restoreContext(DataStream &stream, ContextMode mode) override
int giveStateFlag() const
FloatArray tempStrainSpaceHardeningVarsVector
const FloatArray & giveTempPlasticStrainVector() const
const FloatArray & givePlasticStrainVector() const
PlasticMaterialStatus(GaussPoint *g, int statusSize)
int state_flag
Yield function status indicator.
void letTempPlasticStrainVectorBe(FloatArray v)
void updateYourself(TimeStep *tStep) override
FloatArray strainSpaceHardeningVarsVector
Strain space hardening variables.
void letTempPlasticConsistencyPrameterBe(double v)
FloatArray tempPlasticStrainVector
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
double givePlasticConsistencyPrameter() const
void initTempStatus() override
void copyStateVariables(const MaterialStatus &iStatus) override
Functions for MaterialStatusMapperInterface.
const FloatArray & giveStrainSpaceHardeningVars() const
const FloatArray & givetempStrainSpaceHardeningVarsVector() const
void saveContext(DataStream &stream, ContextMode mode) override
FloatArray plasticStrainVector
Plastic strain vector (reduced form).
int giveTempStateFlag() const
double giveTempPlasticConsistencyPrameter() const
void letTempStrainSpaceHardeningVarsVectorBe(FloatArray v)
void letStrainSpaceHardeningVarsVectorBe(FloatArray v)
double gamma
Plastic consistency parameter.
void letTempStateFlagBe(int v)
void addStateVariables(const MaterialStatus &iStatus) override
const char * giveClassName() const override
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
FloatArray * ComputeGradientVector(GaussPoint *gp, FloatArray *fullStressVector, FloatArray *fullStressSpaceHardeningVars) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
LinearElasticMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
virtual int giveSizeOfFullHardeningVarsVector() const
PlasticMaterial(int n, Domain *d)
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
bool hasMaterialModeCapability(MaterialMode mode) const override
virtual void computeHardeningReducedModuli(FloatMatrix &answer, GaussPoint *gp, FloatArray *strainSpaceHardeningVariables, TimeStep *tStep) const =0
friend class PlasticMaterialStatus
virtual void computeTrialStressIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &strainIncrement, TimeStep *tStep) const
FloatArrayF< 3 > giveRealStressVector_Fiber(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
FloatMatrixF< 3, 3 > giveFiberStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
void computeConsistentModuli(FloatMatrix &answer, GaussPoint *gp, FloatMatrix &elasticModuliInverse, FloatMatrix &hardeningModuliInverse, double Gamma, const FloatArray &fullStressVector, const FloatArray &fullStressSpaceHardeningVars) const
virtual int hasHardening() const
virtual ~PlasticMaterial()
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
virtual FloatArray * ComputeStressSpaceHardeningVarsReducedGradient(GaussPoint *gp, FloatArray *stressVector, FloatArray *stressSpaceHardeningVars) const
virtual double computeYieldValueAt(GaussPoint *gp, FloatArray *stressVector, FloatArray *stressSpaceHardeningVars) const
virtual FloatArray * ComputeStressGradient(GaussPoint *gp, FloatArray *stressVector, FloatArray *stressSpaceHardeningVars) const
FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
void computeDiagModuli(FloatMatrix &answer, GaussPoint *gp, FloatMatrix &elasticModuliInverse, FloatMatrix &hardeningModuliInverse) 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.
virtual void computeReducedGradientMatrix(FloatMatrix &answer, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars) const =0
virtual FloatMatrix giveConsistentStiffnessMatrix(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 2 > giveRealStressVector_2dBeamLayer(const FloatArrayF< 2 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
const char * giveClassName() const override
virtual void compute3dElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const =0
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
virtual void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 2, 2 > give2dBeamLayerStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatArray * ComputeResidualVector(GaussPoint *gp, double Gamma, FloatArray *plasticStrainVectorR, FloatArray *strainSpaceHardeningVariables, FloatArray *gradientVectorR) const
FloatArrayF< 5 > giveRealStressVector_PlateLayer(const FloatArrayF< 5 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual FloatArray * ComputeStressSpaceHardeningVars(GaussPoint *gp, FloatArray *strainSpaceHardeningVariables) const
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)