Download icgfac.eso

Back to the list

   1 : C ICGFAC    SOURCE    CHAT      05/01/13    00:28:01     5004           
   2 :       SUBROUTINE ICGFAC(P,A,KA,NEL,NNZ)
   3 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
   4 : C                                                                   C
   5 : C  Effectue une factorisation par un Choleski incomplet de la       C
   6 : C  matrice de pression lorsque celle-ci est stock‚e en mode         C
   7 : C  compress‚. La matrice de pr‚conditionnement a la mˆme structure. C
   8 : C  On stocke dans la diagonale la diagonale inverse en vue de la    C
   9 : C  r‚solution par mont‚e descente.                                  C
  10 : C                                                                   C
  11 : C +---------------------------------------------------------------+ C
  12 : C ! DESCRIPTION DES ARGUMENTS                                     ! C
  13 : C !---------------------------------------------------------------! C
  14 : C !                                                               ! C
  15 : C +----------+------+---------------------------------------------+ C
  16 : C ! NOM      ! MODE ! DESCRIPTION                                 ! C
  17 : C +----------+------+---------------------------------------------+ C
  18 : C ! P        ! ---> ! La matrice de pr‚conditionnement            ! C
  19 : C +----------+------+---------------------------------------------+ C
  20 : C ! A        ! <--- ! La matrice de pression stock‚e compress‚    ! C
  21 : C +----------+------+---------------------------------------------+ C
  22 : C ! KA       ! <--- ! Le tableau d'indexage correspondant         ! C
  23 : C +----------+------+---------------------------------------------+ C
  24 : C ! NEL      ! <--- ! Nombre de lignes de la matrice              ! C
  25 : C +----------+------+---------------------------------------------+ C
  26 : C ! NNZ      ! <--- ! Nombre de colonnes (nombre maxi de voisins) ! C
  27 : C +----------+------+---------------------------------------------+ C
  28 : C !                                                               ! C
  29 : C ! MODE = ---> VARIABLE ECRITE (SORTIE)                          ! C
  30 : C ! MODE = <--- VARIABLE LUE    (ENTREE)                          ! C
  31 : C ! MODE = <--> VARIABLE LUE ET ECRITE                            ! C
  32 : C !                                                               ! C
  33 : C +---------------------------------------------------------------+ C
  34 : C !                                                               ! C
  35 : C ! CONTACT : Fran‡ois Thomas  69 08 24 64 ou 76 96               ! C
  36 : C !                                                               ! C
  37 : C +---------------------------------------------------------------+ C
  38 : C !                                                               ! C
  39 : C ! RELATIONS AVEC D'AUTRES MODULES                               ! C
  40 : C !                                                               ! C
  41 : C +---------------------------------------------------------------+ C
  42 : C !                                                               ! C
  43 : C ! MODIFICATIONS                                                 ! C
  44 : C !                                                               ! C
  45 : C ! 11/03/92 : Cr‚ation                                           ! C
  46 : C !                                                               ! C
  47 : C +---------------------------------------------------------------+ C
  48 : C                                                                   C
  49 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  50 :       IMPLICIT INTEGER(I-N)
  51 :       IMPLICIT REAL*8 (A-H,O-Z)
  52 :       DIMENSION P(NEL,NNZ),A(NEL,NNZ)
  53 :       DIMENSION KA(NEL,NNZ)
  54 :      
  55 :       DO 1 I=1,NEL
  56 :          DO 3 JKA=2,NNZ
  57 :             J=KA(I,JKA)
  58 :             IF(J.LT.I) THEN
  59 :                S=0.D0
  60 :                DO 4 KKA=2,NNZ
  61 :                   K=KA(J,KKA)
  62 :                   IF(K.LT.J) THEN
  63 :                      IKA=NORDRC(I,K,KA,NEL,NNZ)
  64 :                      IF(IKA.NE.0) S=S+P(I,IKA)*P(J,KKA)*P(K,1)
  65 :                   ENDIF
  66 :  4             CONTINUE
  67 :                P(I,JKA)=(A(I,JKA)-S)/P(J,1)
  68 :             ENDIF
  69 :  3       CONTINUE
  70 :          S=0.D0
  71 :          DO 2 KKA=2,NNZ
  72 :             K=KA(I,KKA)
  73 :             IF(K.LT.I) S=S+P(I,KKA)*P(I,KKA)*P(K,1)
  74 :  2       CONTINUE
  75 :          P(I,1)=A(I,1)-S
  76 :  1    CONTINUE
  77 :       
  78 : C On reporte dans le triangle sup‚rieur (plus pratique pour la
  79 : C r‚solution. On stocke la diagonale inverse pour des questions
  80 : C de performance dans la r‚solution.
  81 : 
  82 :       DO 5 I=1,NEL
  83 :          DO 6 JKA=2,NNZ
  84 :             J=KA(I,JKA)
  85 :             IF(J.LT.I) THEN
  86 :                IKA=NORDRC(J,I,KA,NEL,NNZ)
  87 :                P(J,IKA)=P(I,JKA)
  88 :             ENDIF
  89 :   6      CONTINUE
  90 :          P(I,1)=1./P(I,1)
  91 :   5   CONTINUE
  92 : 
  93 : C Sortie
  94 : C     do 4000 i=1,nel
  95 : C        write(61,60) (ka(i,j),j=1,9)
  96 : C4000 continue
  97 : C     do 4001 i=1,nel
  98 : C        write(61,61) ( a(i,j),j=1,9)
  99 : C4001 continue
 100 : C     do 4002 i=1,nel
 101 : C        write(61,61) ( p(i,j),j=1,9)
 102 : C4002 continue
 103 : C60   format(9(1x,i4))
 104 : C61   format(9(1x,f7.4))
 105 : 
 106 :       RETURN
 107 :       END
 108 :  

© Cast3M 2003 - All rights reserved.
Disclaimer