C GRADIG SOURCE AM 11/05/26 21:15:36 6982 subroutine GRADIG (da, force, q, force_prec, Xkapai, & Xksii, Xkapa_prec, Xksi_prec, Gradgs, Xkapa, Xksi) C Routine permettant le calcul des dérivées de la loi d'écoulement par rapport à l'effort et au vecteur force et d'écrouissage IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION da(20), force(5), q(5), force_prec(5) DIMENSION Gradgs(5), Xk19(4), term_Gradgs1(4) * a=da(8) b=da(9) c=da(10) d=da(11) e=da(12) f=da(13) gamma=1 gamma_prec=1 if (force(1).le.0) then den1=0 den2=0 else den1=q(5)*a*((force(1))**c)*((gamma-force(1))**d) den2=q(5)*b*((force(1))**e)*((gamma-force(1))**f) endif Xk11 = force(2)/den1 Xk12 = force(3)/den2 Xk13 = force(4)/den1 Xk14 = force(5)/den2 Xk15 = q(1)/q(5) Xk16 = q(2)/q(5) Xk17 = q(3)/q(5) Xk18 = q(4)/q(5) Xk19(1) = Xk11-Xk15 Xk19(2) = Xk12-Xk16 Xk19(3) = Xk13-Xk17 Xk19(4) = Xk14-Xk18 * term_Gradgs1(1) = Xk19(1)*force(2)*d/den1* & (2*force(1)-gamma*(1-Xkapai))/ & ((gamma-force(1))*(Xkapai*gamma+force(1))) term_Gradgs1(2) = Xk19(2)*force(3)*f/den2* & (2*force(1)-gamma*(1-Xksii))/ & ((gamma-force(1))*(Xksii*gamma+force(1))) term_Gradgs1(3) = Xk19(3)*force(4)*d/den1* & (2*force(1)-gamma*(1-Xkapai))/ & ((gamma-force(1))*(Xkapai*gamma+force(1))) term_Gradgs1(4) = Xk19(4)*force(5)*f/den2* & (2*force(1)-gamma*(1-Xksii))/ & ((gamma-force(1))*(Xksii*gamma+force(1))) if (force_prec(1).le.gamma_prec*(1-Xkapai)/2) then term_Gradgs1(1)=0 term_Gradgs1(3)=0 Xkapa=1-2*force_prec(1)/gamma_prec if (Xkapa.lt.Xkapa_prec) then *pour empêcher Xkapa de diminuer Xkapa=Xkapa_prec endif else Xkapa=Xkapai endif if (force_prec(1).le.gamma_prec*(1-Xksii)/2) then term_Gradgs1(2)=0 term_Gradgs1(4)=0 Xksi=1-2*force_prec(1)/gamma_prec if (Xksi.lt.Xksi_prec) then *pour empêcher Xksi de diminuer Xksi=Xksi_prec endif else Xksi=Xksii endif Gradgs(1) = abs(2*(term_Gradgs1(1)+term_Gradgs1(2)+ & term_Gradgs1(3)+term_Gradgs1(4))) Gradgs(2) = 2*Xk19(1)/den1 Gradgs(3) = 2*Xk19(2)/den2 Gradgs(4) = 2*Xk19(3)/den1 Gradgs(5) = 2*Xk19(4)/den2 * C Gradgs(1) =0 call SCALPR(5,Gradgs,Gradgs,Xnorm_Gradgs) Xnorm_Gradgs=sqrt(Xnorm_Gradgs) DO I=1,5 Gradgs(I)=Gradgs(I)/Xnorm_Gradgs ENDDO return end