1 : C CHOLE1 SOURCE PV 13/10/23 21:15:01 7848 2 : FUNCTION CHOLE1(ILIGF,LIGN,VALF,DAAG,IPKNO,IPPVF,KHG,IVPOF, 3 : # KIDEP,KI1,KQ,imasq,idep,prec) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8 (A-H,O-Z) 6 : -INC SMMATRI 7 : -INC CCHOLE 8 : DIMENSION ILIGF(1),VALF(1),DAAG(1),IPKNO(1),IPPVF(1),IVPOF(1) 9 : dimension imasq(1) 10 : IPPKHG=IPPVF(KHG) 11 : KBAS=IPKNO(KIDEP) 12 : KHAU=IPKNO(KI1) 13 : KDIAG=KI1+1 14 : DNORM=ABS(VALF(KDIAG))*PREC 15 : KPREM=IVPOF(KHG)-IPPKHG 16 : DO 10 K=KBAS,KHAU 17 : LIG1=ILIGF(K) 18 : IF (LIG1.EQ.LIGN) GOTO 20 19 : IECAR=KQ-LIG1.IPREL+1 20 : ICA=MAX(1,KIDEP+IECAR) 21 : ICB=LIG1.IMMM(/1) 21 : CALL CHOLE2(LIG1.IPPVV(1),VALF(1),LIG1.VAL(1),LIG1.IVPO(1), 22 : > imasq(1),idep,prec,ica,icb,iecar,kprem,dnorm) 23 : 10 CONTINUE 24 : GOTO 50 25 : 20 CONTINUE 26 : IECAR=KQ-IPREL+1 27 : DO 30 NNJ=MAX(1,KIDEP+IECAR),KI1+IECAR 28 : KK=NNJ-IECAR 29 : NNJJ=IPPVF(NNJ+1) 30 : NJ=NNJJ-IPPVF(NNJ) 31 : LLOL=MIN(NJ,KK)-1 32 : LLON=MIN(LLOL-KK+KPREM+1,LLOL-NNJJ+IVPOF(NNJ)+1) 33 : IF (LLON.GT.0) THEN 34 : IEC1=KK-LLOL-1 35 : IEC2=NNJJ-IPPKHG-KK 36 : ideq=1+iec1+idep-1 37 : if (llon.gt.masdim+1) then 38 : p=ddotpw(llon,VALF(1+iec1),VALF(1+iec1+iec2), 39 : > imasq(1),ideq) 40 : else 41 : if (imasq(ideq/masdim+1).gt.0.or. 42 : > imasq((ideq+llon)/masdim+1).gt.0) 43 : > p=ddotpv(llon,VALF(1+iec1),VALF(1+iec1+iec2)) 44 : endif 45 : VALF(KK)=VALF(KK)-P 46 : ENDIF 47 : IF (ABS(VALF(KK)).GT.DNORM) then 48 : KPREM=KK 49 : imasq((kk+idep-1)/masdim+1) =1 50 : ENDIF 51 : 30 CONTINUE 52 : 50 CONTINUE 53 : AUX1=0.D0 54 : kdeb=1 55 : 43 continue 56 : km1=0 57 : im=1 58 : DO 9 K=kdeb,KPREM 59 : km=(k+idep-1)/masdim+1 60 : if (km.ne.km1) then 61 : km1=km 62 : im=imasq(km) 63 : endif 64 : if (im.eq.0) goto 9 65 : if (im.lt.0) then 66 : imr=-im-idep+1 67 : if (imr.gt.k+5) then 68 : kdeb=imr 69 : * write (6,*) ' k kdeb ',k,imasq(km) 70 : GOTO 43 71 : else 72 : goto 9 73 : endif 74 : ENDIF 75 : AUX=VALF(K) 76 : VALF(K)=AUX/DAAG(K) 77 : AUX1=AUX1+AUX*VALF(K) 78 : 9 CONTINUE 79 : IVPOF(KHG)=KPREM+IPPKHG 80 : DO 8 K=KPREM+1,KI1 81 : VALF(K)=0.D0 82 : 8 CONTINUE 83 : CHOLE1=-AUX1 84 : RETURN 85 : END 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : 94 : 95 :
© Cast3M 2003 - All rights reserved.
Disclaimer