63 double equivStrain, tempKappa = 0.0, omega = 0.0;
71 if ( tempKappa >= equivStrain ) {
76 tempKappa = equivStrain;
82 de.
times(1.0 - omega);
102 answer.
at(1, 1) =
kn;
103 answer.
at(2, 2) =
ks;
104 answer.
at(3, 3) =
ks;
106 if ( rMode == ElasticStiffness ) {
110 if ( rMode == SecantStiffness ) {
117 answer.
times(1.0 - om);
132 answer.
times(1.0 - om);
136 double dom = -( -
e0 / un / un * exp( -(
ft /
gf ) * ( un -
e0 ) ) +
e0 / un * exp( -(
ft /
gf ) * ( un -
e0 ) ) * ( -(
ft /
gf ) ) );
138 answer.
at(1, 1) -= se.
at(1) * dom;
139 answer.
at(2, 1) -= se.
at(2) * dom;
151 if ( type == IST_DamageTensor ) {
156 }
else if ( type == IST_DamageTensorTemp ) {
161 }
else if ( type == IST_PrincipalDamageTensor ) {
165 }
else if ( type == IST_PrincipalDamageTempTensor ) {
169 }
else if ( type == IST_MaxEquivalentStrainLevel ) {
221 double epsNplus =
macbra( jump.
at(1) );
222 double epsT2 = jump.
at(2) * jump.
at(2);
224 epsT2 += jump.
at(3) * jump.
at(3);
226 kappa = sqrt(epsNplus * epsNplus +
beta * epsT2);
232 if ( kappa > this->
e0 ) {
233 omega = 1.0 - ( this->
e0 / kappa ) * exp( -(
ft /
gf ) * ( kappa -
e0 ) );
255 fprintf(file,
"status { ");
256 if ( this->
damage > 0.0 ) {
257 fprintf(file,
"kappa %f, damage %f ", this->
kappa, this->
damage);
260 fprintf(file,
"}\n");
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
double tempDamage
Non-equilibrated damage level of material.
double giveDamage()
Returns the last equilibrated damage level.
double kappa
Scalar measure of the largest equivalent displacement ever reached in material.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
IsoInterfaceDamageMaterial(int n, Domain *d)
Constructor.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
double kn
Elastic properties (normal moduli).
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
This class implements associated Material Status to IsoInterfaceDamageMaterial.
double & at(int i)
Coefficient access function.
int max(int i, int j)
Returns bigger value form two given decimals.
#define _IFT_IsoInterfaceDamageMaterial_kn
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
double macbra(double x)
Returns the positive part of given float.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual int read(int *data, int count)=0
Reads count integer values into array pointed by data.
MatResponseMode
Describes the character of characteristic material matrix.
double beta
Weight factor for the influence of shear component of displacement jump on equivalent strain...
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
IsoInterfaceDamageMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
void computeEquivalentStrain(double &kappa, const FloatArray &jump, GaussPoint *gp, TimeStep *tStep)
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double damage
Damage level of material.
double ft
Tension strength.
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual int write(const int *data, int count)=0
Writes count integer values from array pointed by data.
double giveTempDamage()
Returns the temp. damage level.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void computeDamageParam(double &omega, double kappa, const FloatArray &strain, GaussPoint *gp)
computes the value of damage parameter omega, based on given value of equivalent strain.
double e0
Limit elastic deformation.
void letTempJumpBe(FloatArray v)
Assigns tempJump to given vector v.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void times(double f)
Multiplies receiver by factor f.
virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
#define _IFT_IsoInterfaceDamageMaterial_maxOmega
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
This class implements a structural interface material status information.
#define _IFT_IsoInterfaceDamageMaterial_ks
double at(int i, int j) const
Coefficient access function.
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
virtual ~IsoInterfaceDamageMaterial()
Destructor.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Class representing vector of real numbers.
#define _IFT_IsoInterfaceDamageMaterial_ft
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
void zero()
Zeroes all coefficients of receiver.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
void zero()
Zeroes all coefficient of receiver.
int min(int i, int j)
Returns smaller value from two given decimals.
double giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
REGISTER_Material(DummyMaterial)
void letTempTractionBe(FloatArray v)
Assigns tempTraction to given vector v.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
int giveSize() const
Returns the size of receiver.
Abstract base class for all "structural" interface models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
#define _IFT_IsoInterfaceDamageMaterial_gf
const FloatArray & giveTempJump() const
Returns the const pointer to receiver's temporary jump.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual ~IsoInterfaceDamageMaterialStatus()
Destructor.
virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
double gf
Fracture energy.
Class representing integration point in finite element program.
Class representing solution step.
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
#define _IFT_IsoInterfaceDamageMaterial_beta
void resize(int s)
Resizes receiver towards requested size.