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