Download invhok.eso

Back to the list

   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