Open luchete80 opened 3 years ago
if (Fail == 1) {
double J2 = 0.5*(ShearStress(0,0)*ShearStress(0,0) + 2.0*ShearStress(0,1)*ShearStress(1,0) +
2.0*ShearStress(0,2)*ShearStress(2,0) + ShearStress(1,1)*ShearStress(1,1) +
2.0*ShearStress(1,2)*ShearStress(2,1) + ShearStress(2,2)*ShearStress(2,2));
//Scale back, Fraser Eqn 3-53
double sig_trial = sqrt(3.0*J2);
ShearStress = std::min((Sigmay/sig_trial),1.0)*ShearStress;
if ( sig_trial > Sigmay) {
double dep=( sig_trial - Sigmay)/ (3.*G); //Fraser, Eq 3-49 TODO: MODIFY FOR TANGENT MODULUS = 0
pl_strain+=dep;
}
}
ORIGINALLY IT WAS:
// Elastic prediction step (ShearStress_e n+1)
Stress = ShearStress;
if (ct == 30)
ShearStress = dt*(2.0*G*(StrainRate-1.0/3.0*(StrainRate(0,0)+StrainRate(1,1)+StrainRate(2,2))*OrthoSys::I)+SRT+RS) + ShearStress;
else
ShearStress = 2.0*dt*(2.0*G*(StrainRate-1.0/3.0*(StrainRate(0,0)+StrainRate(1,1)+StrainRate(2,2))*OrthoSys::I)+SRT+RS) + ShearStressb;
ShearStressb = Stress;
if (Fail == 1)
{
double J2 = 0.5*(ShearStress(0,0)*ShearStress(0,0) + 2.0*ShearStress(0,1)*ShearStress(1,0) +
2.0*ShearStress(0,2)*ShearStress(2,0) + ShearStress(1,1)*ShearStress(1,1) +
2.0*ShearStress(1,2)*ShearStress(2,1) + ShearStress(2,2)*ShearStress(2,2));
//Scale back
ShearStress = std::min((Sigmay/sqrt(3.0*J2)),1.0)*ShearStress;
}
Sigma = -Pressure * OrthoSys::I + ShearStress;
Stress = Strain;
if (ct == 30)
Strain = dt*StrainRate + Strain;
else
Strain = 2.0*dt*StrainRate + Strainb;
Strainb = Stress;