void TrabBoneNL3D :: giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &totalStrain, TimeStep *tStep) { TrabBoneNL3DStatus *nlStatus = static_cast< TrabBoneNL3DStatus * >( this->giveStatus(gp) ); this->initTempStatus(gp); double tempDam; FloatArray effStress, totalStress, densStress; performPlasticityReturn(gp, totalStrain, tStep); tempDam = computeDamage(gp, tStep); effStress = nlStatus->giveTempEffectiveStress(); totalStress = ( 1 - tempDam ) * effStress; for ( int i = 1; i <= 6; i++ ) { if ( sqrt( totalStress.at(i) * totalStress.at(i) ) < 1e-8 ) { totalStress.at(i) = 0.; } } computePlasStrainEnerDensity(gp, totalStrain, totalStress); if ( densCrit != 0. ) { computeDensificationStress(densStress, gp, totalStrain, tStep); answer.add(densStress); } answer = totalStress; nlStatus->setTempDam(tempDam); nlStatus->letTempStrainVectorBe(totalStrain); nlStatus->letTempStressVectorBe(answer); }
void TrabBoneNL3D :: updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) { FloatArray SDstrainVector; double cumPlastStrain; TrabBoneNL3DStatus *nlStatus = static_cast< TrabBoneNL3DStatus * >( this->giveStatus(gp) ); this->initTempStatus(gp); this->giveStressDependentPartOfStrainVector(SDstrainVector, gp, strainVector, tStep, VM_Total); nlStatus->letTempStrainVectorBe(strainVector); this->performPlasticityReturn(gp, strainVector, tStep); this->computeLocalCumPlastStrain(cumPlastStrain, strainVector, gp, tStep); nlStatus->setLocalCumPlastStrainForAverage(cumPlastStrain); }