C GRADIF SOURCE AM 11/05/26 21:15:35 6982 SUBROUTINE GRADIF (da, force, q, Gradfs, Gradfq) C Routine permettant le calcul des dérivées de la surface de charge 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),Gradfs(5),Gradfq(5),Xk9(4) * a=da(8) b=da(9) c=da(10) d=da(11) e=da(12) f=da(13) gamma=1. if (force(1).le.0) then Xnum1=0 Xnum2=0 else Xnum1=((force(1))**c)*((gamma-force(1))**d) Xnum2=((force(1))**(c-e))*((gamma-force(1))**(d-f)) endif Xk1 = force(2)/a Xk2 = force(3)*Xnum2/b Xk3 = force(4)/a Xk4 = force(5)*Xnum2/b Xk5 = q(1)*Xnum1 Xk6 = q(2)*Xnum1 Xk7 = q(3)*Xnum1 Xk8 = q(4)*Xnum1 Xk9(1)=Xk1-Xk5 Xk9(2)=Xk2-Xk6 Xk9(3)=Xk3-Xk7 Xk9(4)=Xk4-Xk8 if (force(1).le.0) then Xnum3=0 Xnum4=0 else Xnum3 = c*((force(1))**(c-1))*((gamma-force(1))**d) & -d*((force(1))**c)*((gamma-force(1))**(d-1)) Xnum4 =(c-e)*((force(1))**(c-e-1))*((gamma-force(1))**(d-f)) & -(d-f)*((force(1))**(c-e))*((gamma-force(1))*(d-f-1)) endif Gradfs(1) = -2*(Xk9(1)*q(1)*Xnum3-Xk9(2) & *(force(3)/b*Xnum4-q(2)*Xnum3) + Xk9(3)*q(3)*Xnum3 & -Xk9(4)*(force(5)/b*Xnum4-q(4)*Xnum3) & +q(5)**2*Xnum1*Xnum3) Gradfs(2) = 2*Xk9(1)/a Gradfs(3) = 2*Xk9(2)*Xnum2/b Gradfs(4) = 2*Xk9(3)/a Gradfs(5) = 2*Xk9(4)*Xnum2/b if (force(1).le.0) then Xnum5=0 Xnum6=0 else Xnum5=((force(1))**c)*((gamma-force(1))**(d-1)) Xnum6=((force(1))**(c-e))*((gamma-force(1))**(d-f-1)) endif Gradfq(1) = -2*Xk9(1)*Xnum1 Gradfq(2) = -2*Xk9(2)*Xnum1 Gradfq(3) = -2*Xk9(3)*Xnum1 Gradfq(4) = -2*Xk9(4)*Xnum1 Gradfq(5) = -2*q(5)*Xnum1**2 return end