lr1l3d
C LR1L3D SOURCE PV090527 23/02/13 21:15:10 11592 SUBROUTINE LR1LDP3D(K,G,b,d,s1,s2,s3,Hdp,f1,R1,f2,lr1,ldp, # precision3d,log_err) c Multiplicateur plastique Rankine1 et Drucker Prager couples c (A.Sellier 2021/04/22) implicit real*8 (a-h,o-z) implicit integer (i-n) real*8 K,G,b,d,s1,s2,s3,Hdp,f1,R1,f2,lr1,ldp,precision3d real*8 CC(2,2),denom logical log_err log_err=.false. t3 = R1 ** 2 t5 = -s2 - s3 t7 = s2 ** 2 t8 = 0.3D1 * t7 t10 = 0.3D1 * s2 * s3 t11 = s3 ** 2 t12 = 0.3D1 * t11 t14 = (0.3D1 * R1 * t5 - t10 + t12 + 0.3D1 * t3 + t8) if(t14.ge.0.) then t14=sqrt(t14) else print*,'Pb dans lr1ldp3d t14<0' log_err=.true. goto 10 end if t15 = 0.1D1 / t14 t16 = b * K t19 = s2 / 0.2D1 t20 = s3 / 0.2D1 t27 = s1 ** 2 t31 = (0.3D1 * s1 * t5 - t10 + t12 + 0.3D1 * t27 + t8) if(t31.gt.0.d0) then t31=sqrt(t31) else c print*,'Pb dans lr1ldp3d t14<0' log_err=.true. goto 10 end if t32 = 0.1D1 / t31 CC(1,1) = -0.4D1 / 0.3D1 * G - K CC(1,2) = -0.4D1 / 0.3D1 * (0.3D1 / 0.4D1 * t14 * t16 + 0.3D1 / # 0.2D1 * (R1 - t19 - t20) * G) * t15 CC(2,1) = -0.3D1 * (t31 * d * K / 0.3D1 + 0.2D1 / 0.3D1 * (s1 - # t19 - t20) * G) * t32 CC(2,2) = -0.3D1 * t15 * (t14 * t31 * (d * t16 + Hdp) / 0.3D1 + G # * (t7 + (-R1 / 0.2D1 - s1 / 0.2D1 - s3) * s2 + t11 + s3 * (-R1 - # s1) / 0.2D1 + R1 * s1)) * t32 denom=CC(1,1) * CC(2,2) - CC(1,2) * CC(2,1) if(abs(denom).lt.precision3d) then log_err=.true. goto 10 else lr1 = (CC(1,2) * f2 - CC(2,2) * f1) / denom ldp = -(CC(1,1) * f2 - CC(2,1) * f1) / denom end if 10 if(log_err.or.lr1.ne.lr1.or.ldp.ne.ldp) then c print*,'Pb1 dans lr1l3d' c print*,'K,G,b,d,s1,s2,s3,Hdp,f1,R1,f2,lr1,ldp' c print*,K,G,b,d,s1,s2,s3,Hdp,f1,R1,f2,lr1,ldp lr1=0.d0 ldp=0.d0 log_err=.true. end if c attention remplcer s1=R1 dans le gradient de DP( Vdep ) return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales