35#ifndef isodamagemodel_h
36#define isodamagemodel_h
41#define keep_track_of_dissipated_energy
50#define _IFT_IsotropicDamageMaterial_talpha "talpha"
51#define _IFT_IsotropicDamageMaterial_maxOmega "maxomega"
52#define _IFT_IsotropicDamageMaterial_permstrain "ps"
84#ifdef keep_track_of_dissipated_energy
127#ifdef keep_track_of_dissipated_energy
144 const char *
giveClassName()
const override {
return "IsotropicDamageMaterialModelStatus"; }
189 const char *
giveClassName()
const override {
return "IsotropicDamageMaterial"; }
271 std::unique_ptr<MaterialStatus>
CreateStatus(
GaussPoint *gp)
const override {
return std::make_unique<IsotropicDamageMaterialStatus>(gp); }
GaussPoint * gp
Associated integration point.
double stressWork
Density of total work done by stresses on strain increments.
double damage
Damage level of material.
double giveStressWork() const
Returns the density of total work of stress on strain increments.
double kappa
Scalar measure of the largest strain level ever reached in material.
IsotropicDamageMaterialStatus(GaussPoint *g)
Constructor.
void restoreContext(DataStream &stream, ContextMode mode) override
double giveKappa() const
Returns the last equilibrated scalar measure of the largest strain level.
void saveContext(DataStream &stream, ContextMode mode) override
void updateYourself(TimeStep *tStep) override
double tempDissWork
Non-equilibrated density of dissipated work.
FloatArrayF< 3 > giveCrackVector() const
Returns crack vector stored in receiver. This is useful for plotting cracks as a vector field (paravi...
void computeWork(GaussPoint *gp)
Computes the increment of total stress work and of dissipated work.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
double giveTempDissWork() const
Returns the density of temp dissipated work.
double giveLe() const
Returns characteristic length stored in receiver.
double giveTempStressWork() const
Returns the temp density of total work of stress on strain increments.
double giveTempKappa() const
Returns the temp. scalar measure of the largest strain level.
const char * giveClassName() const override
double giveDamage() const
Returns the last equilibrated damage level.
double giveTempDamage() const
Returns the temp. damage level.
FloatArrayF< 3 > crackVector
Crack orientation normalized to damage magnitude. This is useful for plotting cracks as a vector fiel...
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
double giveCrackAngle() const
Returns crack angle stored in receiver.
double tempDamage
Non-equilibrated damage level of material.
double giveDissWork() const
Returns the density of dissipated work.
double crack_angle
Angle characterizing the crack direction.
void setLe(double ls)
Sets characteristic length to given value.
void setCrackAngle(double ca)
Sets crack angle to given value.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
double dissWork
Density of dissipated work.
void setCrackVector(const FloatArrayF< 3 > &cv)
Sets crack vector to given value. This is useful for plotting cracks as a vector field (paraview etc....
void setTempDissWork(double w)
Sets the density of dissipated work to given value.
double tempStressWork
Non-equilibrated density of total work done by stresses on strain increments.
void initTempStatus() override
double tempKappa
Non-equilibrated scalar measure of the largest strain level.
void setTempStressWork(double w)
Sets the density of total work of stress on strain increments to given value.
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
virtual void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp) const
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
void giveInputRecord(DynamicInputRecord &input) override
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
double tempDillatCoeff
Coefficient of thermal dilatation.
int permStrain
Indicator of the type of permanent strain formulation (0 = standard damage with no permanent strain).
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
virtual double computeDamageParam(double kappa, const FloatArray &strain, GaussPoint *gp) const =0
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
enum oofem::IsotropicDamageMaterial::loaUnloCriterium llcriteria
virtual double evaluatePermanentStrain(double kappa, double omega) const
bool hasMaterialModeCapability(MaterialMode mode) const override
double give(int aProperty, GaussPoint *gp) const override
void initializeFrom(InputRecord &ir) override
virtual ~IsotropicDamageMaterial()
Destructor.
virtual double computeEquivalentStrain(const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) const =0
FloatArray giveRealStressVector_StressControl(const FloatArray &strain, const IntArray &strainControl, GaussPoint *gp, TimeStep *tStep) const override
Iteratively calls giveRealStressVector_3d to find the stress controlled equal to zero·
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual void computeEta(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) 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 double damageFunctionPrime(double kappa, GaussPoint *gp) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
IsotropicDamageMaterial(int n, Domain *d)
Constructor.
void saveContext(DataStream &stream, ContextMode mode) override
LinearElasticMaterial * giveLinearElasticMaterial() const
Returns reference to undamaged (bulk) material.
void restoreContext(DataStream &stream, ContextMode mode) override
const char * giveClassName() const override
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)