C CHOLI1 SOURCE PV 13/09/26 21:48:45 7827 FUNCTION CHOLI1(ILIGF,LIGN,VALF,DAAG,IPKNO,IPPVF,KHG,IVPOF, # KIDEP,KI1,KQ,imasq,idep,prec,icle) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC SMMATRI -INC CCHOLE DIMENSION ILIGF(1),VALF(1),DAAG(1),IPKNO(1),IPPVF(1),IVPOF(1) dimension imasq(1) IPPKHG=IPPVF(KHG) KBAS=IPKNO(KIDEP) KHAU=IPKNO(KI1) KDIAG=KI1+1 DNORM=ABS(VALF(KDIAG))*PREC KPREM=IVPOF(KHG)-IPPKHG DO 10 K=KBAS,KHAU LIG1=ILIGF(K) IF (LIG1.EQ.LIGN) GOTO 20 IECAR=KQ-LIG1.IPREL+1 ICA=MAX(1,KIDEP+IECAR) ICB=LIG1.IMMM(/1) CALL CHOLE2(LIG1.IPPVV(1),VALF(1),LIG1.VAL(1),LIG1.IVPO(1), > imasq(1),idep,prec,ica,icb,iecar,kprem,dnorm) 10 CONTINUE * LIGN=ILIGF(KHAU+1) * IECAR = KQ-IPREL+1 GOTO 50 20 CONTINUE IECAR=KQ-IPREL+1 DO 30 NNJ=MAX(1,KIDEP+IECAR),KI1+IECAR KK=NNJ-IECAR NNJJ=IPPVV(NNJ+1) NJ=NNJJ-IPPVV(NNJ) LLOL=MIN(NJ,KK)-1 LLON=MIN(LLOL-KK+KPREM+1,LLOL-NNJJ+IVPO(NNJ)+1) C 3 lignes ajoutees IF (LLON.GT.0) THEN IEC1=KK-LLOL-1 IEC2=NNJJ-llol -1 if (llon.gt.masdim) then ideq=1+iec1+idep-1 p=ddotpw(llon,VALF(1+iec1),VAL(1+iec2), > imasq(1),ideq) else p=ddotpv(llon,VALF(1+iec1),VAL(1+iec2)) endif VALF(KK)=VALF(KK)-P ENDIF IF (ABS(VALF(KK)).GT.DNORM) then KPREM=KK imasq((kk+idep-1)/masdim+1) =1 ENDIF 30 CONTINUE 50 CONTINUE AUX1=0.D0 if(ICLE.EQ.2) THEN iecar = KQ-IPREL+1 nnj= ki1+IECAR+1 kk = nnj-iecar nnjj=IPPVV(NNJ+1) NJ=NNJJ-IPPVV(NNJ) LLOL=MIN(NJ,KK)-1 LLON=MIN(LLOL-KK+KPREM+1,LLOL-NNJJ+IVPO(NNJ)+1) IEC1=KK-LLOL-1 IEC2=NNJJ-llol -1 IF(LLON.GT.0) THEN * write(6,*)'diagonale llon iec1 iec2' , llon, iec1,iec2 DO 9 K=1+iec1,iec1+LLON * AUX=VALF(K) * VALF(K)=AUX/DAAG(K) AUX1=AUX1+valf(K)*VAL(K-iec1+iec2) 9 CONTINUE ENDIF DO 91 K=1,kprem VALF(K)=VALF(K) /DAAG(K) 91 CONTINUE else DO 90 K=1,KPREM VALF(K)=VALF(K) /DAAG(K) 90 CONTINUE endif IVPOF(KHG)=KPREM+IPPKHG DO 8 K=KPREM+1,KI1 VALF(K)=0.D0 8 CONTINUE CHOLI1=-AUX1 RETURN END