61 return mode == _PlaneStress;
155 double overNonlocalCumulatedStrain =
mParam * nonlocalCumulatedStrain + ( 1. -
mParam ) * tempLocalCumulatedStrain;
157 gprime *= ( 1. -
mParam );
170 if ( mode != TangentStiffness ) {
176 if ( dKappa <= 0. ) {
188 double Estar =
E / ( 1. -
nu *
nu );
189 double aux = Estar / ( H + Estar );
191 eta.
at(2) =
nu * aux;
196 double denom =
E * dkap1 + H * ( 1. -
nu ) * ( dkap1 + dkap2 );
197 eta.
at(1) =
E * dkap1 / denom;
198 eta.
at(2) =
E * dkap2 / denom;
214 answer.
at(1, 1) = etaglob.
at(1);
215 answer.
at(1, 2) = etaglob.
at(2);
216 answer.
at(1, 3) = etaglob.
at(3);
225 if ( mode != TangentStiffness ) {
238 double overNonlocalCumulatedStrain =
mParam * nonlocalCumulatedStrain + ( 1. -
mParam ) * tempCumulatedStrain;
240 answer.
at(1, 1) = tempEffStress.at(1);
241 answer.
at(2, 1) = tempEffStress.at(2);
242 answer.
at(3, 1) = tempEffStress.at(3);
266 answer1.
beScaled(1.0 - tempDamage, tempEffStress);
274 #ifdef keep_track_of_dissipated_energy 291 kappa =
mParam * nlCumPlastStrain + ( 1. -
mParam ) * localCumPlastStrain;
324 if ( type == IST_CumPlasticStrain_2 ) {
328 }
else if ( type == IST_MaxEquivalentStrainLevel ) {
353 fprintf(file,
"status {");
355 #ifdef keep_track_of_dissipated_energy 358 fprintf(file,
" }\n");
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
void givePlaneStressGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
#define _IFT_RankineMatGrad_m
FloatArray plasticStrain
Plastic strain (initial).
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane stress stiffness matrix of receiver.
This class implements an isotropic elastoplastic material with Rankine yield condition, associated flow rule and linear isotropic softening, and with isotropic damage that leads to softening.
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
static void givePlaneStressVectorTranformationMtrx(FloatMatrix &answer, const FloatMatrix &base, bool transpose=false)
Computes 2d stress vector transformation matrix from standard vector transformation matrix...
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
double tempKappa
Cumulative plastic strain (final).
GaussPoint * gp
Associated integration point.
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
double giveTempCumulativePlasticStrain()
void setKappa_hat(double kap)
virtual void giveRealStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep)
gradient - based giveRealStressVector
virtual void givePDGradMatrix_LD(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Stress-based averaging.
double damage
Damage (initial).
RankineMatGradStatus(int n, Domain *d, GaussPoint *g)
void evaluatePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep, double gprime)
Executive method used by local and gradient version.
Specialization of a floating point array for representing a stress state.
double sig0
Initial (uniaxial) yield stress.
Gradient rankine material status.
double & at(int i)
Coefficient access function.
const FloatArray & giveTempEffectiveStress() const
void computePrincipalValDir(FloatArray &answer, FloatMatrix &dir) const
Computes principal values and directions of receiver vector.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
double nonlocalCumulatedStrain
void givePlaneStressKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
double stressWork
Density of total work done by stresses on strain increments.
MaterialMode
Type representing material mode of integration point.
virtual void givePDGradMatrix_ku(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left lower block.
#define _IFT_RankineMatGrad_negligibleDamage
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
MatResponseMode
Describes the character of characteristic material matrix.
void setKappa_nl(double kap)
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
RankineMatGrad(int n, Domain *d)
void computeWork_PlaneStress(GaussPoint *gp, double gf)
Computes the increment of total stress work and of dissipated work (gf is the dissipation density per...
void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
void beScaled(double s, const FloatArray &b)
Sets receiver to be .
virtual IRResultType initializeFrom(InputRecord *ir)
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void computeCumPlastStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
void times(double f)
Multiplies receiver by factor f.
Material interface for gradient material models.
double giveNonlocalCumPlasticStrain(GaussPoint *gp)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
double computeDamage(GaussPoint *gp, TimeStep *tStep)
double at(int i, int j) const
Coefficient access function.
#define _IFT_RankineMatGrad_L
double giveCumulativePlasticStrain()
virtual void givePDGradMatrix_uk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right upper block.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Class representing vector of real numbers.
void setTempDamage(double value)
Implementation of matrix containing floating point numbers.
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain)
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void zero()
Zeroes all coefficients of receiver.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void givePDGradMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Left upper block.
double computeDamageParamPrime(double tempKappa)
double E
Young's modulus.
virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain)
virtual void givePDGradMatrix_kk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Right lower block.
double kappa
Cumulative plastic strain (initial).
void zero()
Zeroes all coefficient of receiver.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
FloatArray tempPlasticStrain
Plastic strain (final).
double dissWork
Density of dissipated work.
virtual double giveNonlocalCumulatedStrain()
REGISTER_Material(DummyMaterial)
int giveSize() const
Returns the size of receiver.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
double evalPlasticModulus(const double kappa)
double nu
Poisson's ratio.
void letTempEffectiveStressBe(FloatArray values)
Class representing integration point in finite element program.
Class representing solution step.
double tempDamage
Damage (final).
void resize(int s)
Resizes receiver towards requested size.