Download icgfam.eso

Back to the list

   1 : C ICGFAM    SOURCE    CHAT      05/01/13    00:28:05     5004           
   2 :       SUBROUTINE ICGFAM(P,A,IA,JA,NEL)
   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  morse. 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 morse        ! C
  21 : C +----------+------+---------------------------------------------+ C
  22 : C ! IA       ! <--- ! Le tableau des pointeurs de d‚but de ligne  ! C
  23 : C +----------+------+---------------------------------------------+ C
  24 : C ! JA       ! <--- ! Le tableau d'indexage correspondant         ! C
  25 : C +----------+------+---------------------------------------------+ C
  26 : C ! NEL      ! <--- ! Nombre de lignes de la matrice              ! 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 JA(*),IA(NEL+1)
  53 :       DIMENSION P(*),A(*)             
  54 :      
  55 :       DO 1 I=1,NEL
  56 :          DO 3 JKA=IA(I)+1,IA(I+1)-1
  57 :             J=JA(JKA)
  58 :             IF(J.LT.I) THEN
  59 :                S=0.D0
  60 :                DO 4 KKA=IA(J)+1,IA(J+1)-1
  61 :                   K=JA(KKA)
  62 :                   IF(K.LT.J) THEN
  63 :                      IKA=NORDRM(I,K,IA,JA)     
  64 :                      IF(IKA.NE.0) S=S+P(IKA)*P(KKA)*P(IA(K))             
  65 :                   ENDIF
  66 :  4             CONTINUE
  67 :                P(JKA)=(A(JKA)-S)/P(IA(J))            
  68 :             ENDIF
  69 :  3       CONTINUE
  70 :          S=0.D0
  71 :          DO 2 KKA=IA(I)+1,IA(I+1)-1
  72 :             K=JA(KKA)
  73 :             IF(K.LT.I) S=S+P(KKA)*P(KKA)*P(IA(K))    
  74 :  2       CONTINUE
  75 :          P(IA(I))=A(IA(I))-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=IA(I)+1,IA(I+1)-1
  84 :             J=JA(JKA)
  85 :             IF(J.LT.I) THEN
  86 :                IKA=NORDRM(J,I,IA,JA)     
  87 :                P(IKA)=P(JKA)
  88 :             ENDIF
  89 :   6      CONTINUE
  90 :          P(IA(I))=1./P(IA(I))
  91 :   5   CONTINUE
  92 : C Sortie
  93 : C     do 4000 i=1,nel
  94 : C        write(60,60) (ka(i,j),j=1,9)
  95 : C4000 continue
  96 : C     do 4001 i=1,nel
  97 : C        write(60,61) ( a(i,j),j=1,9)
  98 : C4001 continue
  99 : C     do 4002 i=1,nel
 100 : C        write(60,61) ( p(ka),ka=ia(i),ia(i+1)-1)
 101 : C4002 continue
 102 : C60   format(9(1x,i4))
 103 : C61   format(9(1x,f7.4))
 104 : 
 105 :       RETURN
 106 :       END
 107 :  

© Cast3M 2003 - All rights reserved.
Disclaimer