Télécharger invhok.eso

Retour à la liste

Numérotation des lignes :

  1. C INVHOK SOURCE CHAT 05/01/13 00:43:00 5004
  2. SUBROUTINE INVHOK(G,GINV,N)
  3. *
  4. * g est une matrice carre de dimension n
  5. * invg est le resultat la mtruice inverse de dimension n
  6. *
  7. * calcul de l'inverse de g matrice symmetrique definie positive
  8. * par la méthode de cholevsky
  9. *
  10. * utilisée pour la matrice tangente de la loi vsico-plastique
  11. *
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8 (A-H,O-Z)
  14. REAL*8 G(6,6),GINV(6,6),P(6),B(6,6)
  15. DATA B /1.D0, 0.D0, 0.D0,0.D0,0.D0,0.D0,
  16. & 0.D0, 1.D0, 0.D0,0.D0,0.D0,0.D0,
  17. & 0.D0, 0.D0, 1.D0,0.D0,0.D0,0.D0,
  18. & 0.D0, 0.D0, 0.D0,1.D0,0.D0,0.D0,
  19. & 0.D0, 0.D0, 0.D0,0.D0,1.D0,0.D0,
  20. & 0.D0, 0.D0, 0.D0,0.D0,0.D0,1.D0/
  21. * cholevsky
  22. * la diagonale est stockee dans p
  23. * la partie inférieure est stockée dans g: g est modifiée
  24. DO 30 I=1,N
  25. DO 20 J=I ,N
  26. SUM=G(I,J)
  27. DO 10 K=I-1,1,-1
  28. SUM=SUM-G(I,K)*G(J,K)
  29. 10 CONTINUE
  30. IF ( I .EQ. J) THEN
  31. IF ( SUM .LE. 0.D0 ) then
  32. SUM = ABS(SUM)
  33. IF ( SUM .EQ. 0.D0) SUM = 1.D-20
  34. ENDIF
  35. P(I)=SQRT(SUM)
  36. ELSE
  37. G(J,I)=SUM/P(I)
  38. ENDIF
  39. 20 CONTINUE
  40. 30 CONTINUE
  41. *
  42. * boucle sur les colonnes de b
  43. DO 80 L=1,N
  44. * premier subsitution l.y=b
  45. DO 50 I=1,N
  46. SUM=B(L,I)
  47. DO 40 K=I-1,1,-1
  48. SUM=SUM-G(I,K)*GINV(L,K)
  49. 40 CONTINUE
  50. GINV(L,I)=SUM/P(I)
  51. 50 CONTINUE
  52. * seconde subsitution tl.x=y
  53. DO 70 I=N,1,-1
  54. SUM=GINV(L,I)
  55. DO 60 K=I+1,N
  56. SUM=SUM-G(K,I)*GINV(L,K)
  57. 60 CONTINUE
  58. GINV(L,I)=SUM/P(I)
  59. 70 CONTINUE
  60. 80 CONTINUE
  61. RETURN
  62. END
  63.  
  64.  
  65.  
  66.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales