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 :
© Cast3M 2003 - All rights reserved.
Disclaimer