double MisesMat :: computeDamage(GaussPoint *gp, TimeStep *tStep) { double tempKappa, dam; MisesMatStatus *status = static_cast< MisesMatStatus * >( this->giveStatus(gp) ); dam = status->giveDamage(); computeCumPlastStrain(tempKappa, gp, tStep); double tempDam = computeDamageParam(tempKappa); if ( dam > tempDam ) { tempDam = dam; } return tempDam; }
int MisesMat :: giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) { MisesMatStatus *status = static_cast< MisesMatStatus * >( this->giveStatus(gp) ); if ( type == IST_PlasticStrainTensor ) { answer = status->givePlasDef(); return 1; } else if ( type == IST_MaxEquivalentStrainLevel ) { answer.resize(1); answer.at(1) = status->giveCumulativePlasticStrain(); return 1; } else if ( ( type == IST_DamageScalar ) || ( type == IST_DamageTensor ) ) { answer.resize(1); answer.at(1) = status->giveDamage(); return 1; } else { return StructuralMaterial :: giveIPValue(answer, gp, type, tStep); } }
int MisesMat :: giveIPValue(FloatArray &answer, GaussPoint *aGaussPoint, InternalStateType type, TimeStep *atTime) { MisesMatStatus *status = static_cast< MisesMatStatus * >( this->giveStatus(aGaussPoint) ); if ( type == IST_PlasticStrainTensor ) { const FloatArray &ep = status->givePlasDef(); ///@todo Fix this so that it doesn't just fill in zeros for plane stress: StructuralMaterial :: giveFullSymVectorForm(answer, ep, aGaussPoint->giveMaterialMode()); return 1; } else if ( type == IST_MaxEquivalentStrainLevel ) { answer.resize(1); answer.at(1) = status->giveCumulativePlasticStrain(); return 1; } else if ( ( type == IST_DamageScalar ) || ( type == IST_DamageTensor ) ) { answer.resize(1); answer.at(1) = status->giveDamage(); return 1; } else { return StructuralMaterial :: giveIPValue(answer, aGaussPoint, type, atTime); } }