35 #ifndef isodamagemodel_h 36 #define isodamagemodel_h 41 #define keep_track_of_dissipated_energy 45 #include "../sm/Materials/structuralmaterial.h" 46 #include "../sm/Materials/structuralms.h" 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 129 #ifdef keep_track_of_dissipated_energy 147 virtual const char *
giveClassName()
const {
return "IsotropicDamageMaterialModelStatus"; }
193 virtual int hasMaterialModeCapability(
MaterialMode mode);
194 virtual const char *
giveClassName()
const {
return "IsotropicDamageMaterial"; }
199 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
208 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
210 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
212 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
214 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
216 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
231 virtual double give(
int aProperty,
GaussPoint *gp);
254 virtual void computeDamageParam(
double &omega,
double kappa,
const FloatArray &strain,
GaussPoint *gp) = 0;
296 #endif // isodamagemodel_h virtual void computeEta(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes derivative of the equivalent strain with regards to strain.
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
double giveDamage()
Returns the last equilibrated damage level.
double le
Characteristic element length, computed when damage initialized from direction of maximum positive pr...
Base class representing general isotropic damage model.
GaussPoint * gp
Associated integration point.
loaUnloCriterium
Variable controlling type of loading/unloading law, default set to idm_strainLevel defines the two tw...
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
double tempDillatCoeff
Coefficient of thermal dilatation.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
double kappa
Scalar measure of the largest strain level ever reached in material.
double tempDamage
Non-equilibrated damage level of material.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
virtual double evaluatePermanentStrain(double kappa, double omega)
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
void setTempStressWork(double w)
Sets the density of total work of stress on strain increments to given value.
double damage
Damage level of material.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual ~IsotropicDamageMaterialStatus()
Destructor.
double tempStressWork
Non-equilibrated density of total work done by stresses on strain increments.
This class implements a structural material status information.
virtual void giveRealStressVector_StressControl(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, const IntArray &strainControl, TimeStep *tStep)
Iteratively calls giveRealStressVector_3d to find the stress controlled equal to zero· ...
void setLe(double ls)
Sets characteristic length to given value.
double giveStressWork()
Returns the density of total work of stress on strain increments.
virtual double damageFunctionPrime(double kappa, GaussPoint *gp)
Returns the value of derivative of damage function wrt damage-driving variable kappa corresponding to...
MaterialMode
Type representing material mode of integration point.
MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Class implementing an array of integers.
MatResponseMode
Describes the character of characteristic material matrix.
This class is a abstract base class for all linear elastic material models in a finite element proble...
void computeWork(GaussPoint *gp)
Computes the increment of total stress work and of dissipated work.
void giveCrackVector(FloatArray &answer)
Returns crack vector stored in receiver. This is useful for plotting cracks as a vector field (paravi...
double giveLe()
Returns characteristic length stored in receiver.
virtual const char * giveClassName() const
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
double stressWork
Density of total work done by stresses on strain increments.
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
void setCrackAngle(double ca)
Sets crack angle to given value.
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
double giveTempStressWork()
Returns the temp density of total work of stress on strain increments.
LinearElasticMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Abstract base class representing a material status information.
double giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double tempDissWork
Non-equilibrated density of dissipated work.
Class representing vector of real numbers.
IsotropicDamageMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
int permStrain
Indicator of the type of permanent strain formulation (0 = standard damage with no permanent strain) ...
double giveCrackAngle()
Returns crack angle stored in receiver.
double giveDissWork()
Returns the density of dissipated work.
double giveTempDamage()
Returns the temp. damage level.
double tempKappa
Non-equilibrated scalar measure of the largest strain level.
virtual void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp)
Abstract service allowing to perform some initialization, when damage first appear.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double giveTempDissWork()
Returns the density of temp dissipated work.
double crack_angle
Angle characterizing the crack direction.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
This class implements associated Material Status to IsotropicDamageMaterial.
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double dissWork
Density of dissipated work.
Class representing integration point in finite element program.
FloatArray crackVector
Crack orientation normalized to damage magnitude. This is useful for plotting cracks as a vector fiel...
Class representing solution step.
void setTempDissWork(double w)
Sets the density of dissipated work to given value.
virtual const char * giveClassName() const
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
void setCrackVector(FloatArray cv)
Sets crack vector to given value. This is useful for plotting cracks as a vector field (paraview etc...