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