35#ifndef mplasticmaterial2_h
36#define mplasticmaterial2_h
134 const char *
giveClassName()
const override {
return "MPlasticMaterial2Status"; }
204 double alpha = this->linearElasticMaterial->
give(
tAlpha, gp);
205 return {alpha, alpha, alpha, 0., 0., 0.};
266 const FloatArray &strainSpaceHardeningVariables, std :: vector< FloatArray > &gradVec)
const;
275 const FloatArray &strainSpaceHardeningVariables)
const;
283 const FloatArray &strainSpaceHardeningVariables)
const = 0;
287 const FloatArray &strainSpaceHardeningVariables)
const = 0;
289 const FloatArray &strainSpaceHardeningVariables)
const;
307 const FloatArray &strainSpaceHardeningVariables)
const = 0;
332 const FloatArray &strainSpaceHardeningVariables)
const = 0;
335 const FloatArray &strainSpaceHardeningVariables)
const = 0;
void letTempPlasticStrainVectorBe(FloatArray v)
void letTempStateFlagBe(state_flag_values v)
const FloatArray & giveTempGamma()
double damage
Isotropic damage variables.
const FloatArray & givePlasticStrainVector() const
Returns the equilibrated strain vector.
const FloatArray & giveTempPlasticStrainVector() const
Returns the actual (temp) strain vector.
IntArray tempActiveConditionMap
const FloatArray & giveTempStrainSpaceHardeningVarsVector() const
Returns the actual (temp) hardening variable vector.
MPlasticMaterial2Status(GaussPoint *g, int statusSize)
FloatArray tempStrainSpaceHardeningVarsVector
void letStrainSpaceHardeningVarsVectorBe(FloatArray v)
void letTempStrainSpaceHardeningVarsVectorBe(FloatArray v)
state_flag_values giveTempStateFlag()
void initTempStatus() override
void letTempDamageBe(double v)
void letPlasticStrainVectorBe(FloatArray v)
IntArray activeConditionMap
Active set of yield functions (needed for algorithmic stiffness).
const char * giveClassName() const override
state_flag_values state_flag
Yield function status indicator.
state_flag_values giveStateFlag()
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void setTempGamma(FloatArray v)
void setTempActiveConditionMap(IntArray v)
const FloatArray & giveStrainSpaceHardeningVars() const
Returns the equilibrated hardening variable vector.
void saveContext(DataStream &stream, ContextMode mode) override
void updateYourself(TimeStep *tStep) override
void restoreContext(DataStream &stream, ContextMode mode) override
FloatArray tempPlasticStrainVector
FloatArray plasticStrainVector
Plastic strain vector.
FloatArray gamma
Consistency parameter values (needed for algorithmic stiffness).
state_flag_values temp_state_flag
const IntArray & giveTempActiveConditionMap()
FloatArray strainSpaceHardeningVarsVector
virtual int hasHardening() const =0
virtual void computeTrialStressIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &strainIncrement, TimeStep *tStep) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
void computeReducedStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
enum oofem::MPlasticMaterial2::ReturnMappingAlgoType rmType
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
int getNewPopulation(IntArray &result, IntArray &candidateMask, int degree, int size) const
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
const char * giveClassName() const override
void addNewPopulation(IntArray &mask) const
virtual double computeDamage(GaussPoint *gp, const FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
functType
Type that allows to distinguish between yield function and loading function.
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
void computeResidualVector(FloatArray &answer, GaussPoint *gp, const FloatArray &gamma, const IntArray &activeConditionMap, const FloatArray &plasticStrainVectorR, const FloatArray &strainSpaceHardeningVariables, std ::vector< FloatArray > &gradVec) const
MPlasticMaterial2(int n, Domain *d)
FloatMatrixF< 3, 3 > giveFiberStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
enum oofem::MPlasticMaterial2::plastType plType
virtual void computeReducedSSGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const =0
Computes second derivative of loading function with respect to stress.
void clearPopulationSet() const
virtual double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables) const =0
Computes the value of yield function.
LinearElasticMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
virtual int giveMaxNumberOfActiveYieldConds(GaussPoint *gp) const =0
void cuttingPlaneReturn(FloatArray &answer, IntArray &activeConditionMap, FloatArray &gamma, GaussPoint *gp, const FloatArray &totalStrain, FloatArray &plasticStrainR, FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const
ReturnMappingAlgoType
Protected type to determine the return mapping algorithm.
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
virtual ~MPlasticMaterial2()
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
bool iterativeUpdateOfActiveConds
Flag indicating whether iterative update of a set of active yield conditions takes place.
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
int nsurf
Number of yield surfaces.
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &strain, TimeStep *tStep) const override
virtual void computeReducedHardeningVarsSigmaGradient(FloatMatrix &answer, GaussPoint *gp, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &gamma) const =0
FloatMatrixF< 2, 2 > give2dBeamLayerStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
virtual void computeReducedHardeningVarsLamGradient(FloatMatrix &answer, GaussPoint *gp, int actSurf, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVars, const FloatArray &gamma) const =0
computes derivative of vector with respect to lambda vector
virtual FloatMatrix giveElastoPlasticStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
virtual void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &strainSpaceHardeningVariables) const =0
Computes the stress gradient of yield/loading function (df/d_sigma).
virtual int giveSizeOfFullHardeningVarsVector() const
virtual void computeReducedElasticModuli(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const
virtual void computeKGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const =0
long getPopulationSignature(IntArray &mask) const
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
virtual void computeReducedSKGradientMatrix(FloatMatrix &gradientMatrix, int i, GaussPoint *gp, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const =0
Computes second derivative of loading function with respect to stress and hardening vars.
void computeAlgorithmicModuli(FloatMatrix &answer, GaussPoint *gp, const FloatMatrix &elasticModuliInverse, const FloatArray &gamma, const IntArray &activeConditionMap, const FloatArray &fullStressVector, const FloatArray &strainSpaceHardeningVariables) const
virtual FloatMatrix giveConsistentStiffnessMatrix(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const
int testPopulation(long pop) const
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
virtual void computeStrainHardeningVarsIncrement(FloatArray &answer, GaussPoint *gp, const FloatArray &stress, const FloatArray &dlambda, const FloatArray &dplasticStrain, const IntArray &activeConditionMap) const =0
std ::set< long > populationSet
Set for keeping record of generated populations of active yield conditions during return.
void closestPointReturn(FloatArray &answer, IntArray &activeConditionMap, FloatArray &gamma, GaussPoint *gp, const FloatArray &totalStrain, FloatArray &plasticStrainR, FloatArray &strainSpaceHardeningVariables, TimeStep *tStep) const
virtual double give(int aProperty, GaussPoint *gp) const
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)