void MisesMatNl :: updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) { /* Implements the service updating local variables in given integration points, * which take part in nonlocal average process. Actually, no update is necessary, * because the value used for nonlocal averaging is strain vector used for nonlocal secant stiffness * computation. It is therefore necessary only to store local strain in corresponding status. * This service is declared at StructuralNonlocalMaterial level. */ double cumPlasticStrain; MisesMatNlStatus *nlstatus = static_cast< MisesMatNlStatus * >( this->giveStatus(gp) ); this->initTempStatus(gp); this->initGpForNewStep(gp); this->performPlasticityReturn(gp, strainVector); this->computeLocalCumPlasticStrain(cumPlasticStrain, gp, tStep); // standard formulation based on averaging of equivalent strain nlstatus->setLocalCumPlasticStrainForAverage(cumPlasticStrain); // influence of damage on weight function if ( averType >= 2 && averType <= 5 ) { this->modifyNonlocalWeightFunctionAround(gp); } }
int MisesMatNl :: unpackAndUpdateUnknowns(CommunicationBuffer &buff, TimeStep *tStep, GaussPoint *ip) { int result; MisesMatNlStatus *nlStatus = static_cast< MisesMatNlStatus * >( this->giveStatus(ip) ); double localCumPlasticStrainForAverage; result = buff.unpackDouble(localCumPlasticStrainForAverage); nlStatus->setLocalCumPlasticStrainForAverage(localCumPlasticStrainForAverage); return result; }