Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit 82f223e1 authored by Jan Stransky's avatar Jan Stransky
Browse files

fixed a small bug in shear force computation in CPM model

parent e4e757f2
......@@ -331,6 +331,7 @@ bool Law2_ScGeom_CpmPhys_Cpm::go(shared_ptr<IGeom>& _geom, shared_ptr<IPhys>& _p
/* shorthands */
Real& epsN(phys->epsN);
Vector3r& epsT(phys->epsT);
Vector3r& epsTPl(phys->epsTPl);
Real& kappaD(phys->kappaD);
/* Real& epsPlSum(phys->epsPlSum); */
const Real& E(phys->E); \
......@@ -395,13 +396,12 @@ bool Law2_ScGeom_CpmPhys_Cpm::go(shared_ptr<IGeom>& _geom, shared_ptr<IPhys>& _p
Real sigmaNSoft=E*(epsSoft+relKnSoft*(epsN-epsNPl-epsSoft));
if(sigmaNSoft>sigmaN){ /*assert(sigmaNSoft>sigmaN);*/ epsNPl+=(sigmaN-sigmaNSoft)/E; sigmaN=sigmaNSoft; }
}
sigmaT = G*epsT; /* trial stress */
sigmaT = G*(epsT-epsTPl); /* trial stress */
Real yieldSigmaT = std::max((Real)0.,undamagedCohesion*(1-omega)-sigmaN*tanFrictionAngle); /* Mohr-Coulomb law with damage */
if (sigmaT.squaredNorm() > yieldSigmaT*yieldSigmaT) {
Real scale = yieldSigmaT/sigmaT.norm();
sigmaT *= scale; /* stress return */
//epsT *= scale;
/* epsPlSum += yieldSigmaT*geom->slipToStrainTMax(yieldSigmaT/G);*/ /* adjust strain */
epsTPl += sigmaT*(1-scale)/G;
}
relResidualStrength = isCohesive? (kappaD<epsCrackOnset? 1. : (1-omega)*(kappaD)/epsCrackOnset) : 0;
#endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment