New question #700748 on Yade: https://answers.launchpad.net/yade/+question/700748
Hi, I want to calculate the plastic shear displacement of any specific contact during every time step. I'm using Law2_ScGeom6D_CohFrictPhys_CohesionMoment[1]. In the source code, the plastic displacement is calculated by the following code (L140-L159): Vector3r& shearForce = geom->rotate(phys->shearForce); const Vector3r& dus = geom->shearIncrement(); //Linear elasticity giving "trial" shear force shearForce -= phys->ks * dus; Real Fs = phys->shearForce.norm(); Real maxFs = phys->shearAdhesion; if (!phys->cohesionDisablesFriction || maxFs == 0) maxFs += Fn * phys->tangensOfFrictionAngle; maxFs = math::max((Real)0, maxFs); if (Fs > maxFs) { //Plasticity condition on shear force if (phys->fragile && !phys->cohesionBroken) { phys->SetBreakingState(); maxFs = max((Real)0, Fn * phys->tangensOfFrictionAngle); } maxFs = maxFs / Fs; Vector3r trialForce = shearForce; shearForce *= maxFs; if (scene->trackEnergy || traceEnergy) { Real sheardissip = ((1 / phys->ks) * (trialForce - shearForce)) /*plastic disp*/.dot(shearForce) /*active force*/; Briefly, the plastic shear displacement is calculated by 1/ks*(trialForce - shearForce). However, it seems trialForce is not available during the simulation process. Though shearInc is available, which is dus in the source code, it is not exactly the same as 1/ks*(trialForce - shearForce). Therefore I want to ask if there is a simple way to get the plastic shear displacement instead of modify the source code? Thank you! [1] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/CohesiveFrictionalContactLaw.cpp -- You received this question notification because your team yade-users is an answer contact for Yade. _______________________________________________ Mailing list: https://launchpad.net/~yade-users Post to : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp