Download graco5.eso

Back to the list

   1 : C GRACO5    SOURCE    PV        13/10/21    21:15:23     7845           
   2 :       SUBROUTINE GRACO5(IPREL,IDERL,IPPV,IPPR,IDDR,IVPO,                        
   3 :      # IPPVV1,VAL,VAL1,IVPO1,imasq,prec,ittr,incom1)
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
   6 : -INC CCHOLE
   7 : C                                                                               
   8 : C  COPIE DE CHOLE3  POUR FAIRE UN CHOLEVSKI INCOMPLET                           
   9 : C                                                                               
  10 :       DIMENSION IPPV(1),IVPO(1),IPPVV1(1),VAL(1),VAL1(1),IVPO1(1)               
  11 :       dimension imasq(1),ittr(1)
  12 :       IDD2=IPPV(1)                                                              
  13 :       DO 10 J=IPREL,IDERL                                                       
  14 :        incomp=incom1
  15 :        if (ittr(j).ne.0) incomp=0
  16 :        JID=J-IPREL+1                                                            
  17 :        IDD3=IPPV(JID+1)           
  18 :        IF(IDD3.NE.1)THEN
  19 :          DNORM=ABS(VAL(IDD3-1))*PREC
  20 :        ELSE
  21 :          DNORM=0.
  22 :        ENDIF
  23 :        N2=IDD3-IDD2                                                             
  24 :        KD2=J-N2+1                                                               
  25 :        N2J=IDD3-J                                                               
  26 :        KIDEP=IVPO(JID)                                                          
  27 :        IBABA=MAX(IPPR,KD2+1)                                                    
  28 :        IF (IBABA.GT.IDDR) GOTO 30                                               
  29 :        IDEB4=2*IPPVV1(IBABA-IPPR+1)                                             
  30 :        IDD=IVPO1(IDEB4-1)                                                       
  31 :        DO 20 JHY=IBABA,IDDR                                                     
  32 :         ILM=JHY-IPPR+1                                                          
  33 :         IDEB3=2*IPPVV1(ILM+1)                                                   
  34 :         NNJJ=IVPO1(IDEB3-1)                                                     
  35 :         N=NNJJ-IDD                                                              
  36 :         KD1=1+JHY-N                                                             
  37 :         IDEP=MAX(KD2,KD1)                                                       
  38 :         LLOL=JHY-IDEP                                                           
  39 :         I1=JHY+N2J                                                              
  40 :         LLON=LLOL-I1+KIDEP+1                                                  
  41 :         IF(VAL(I1) .NE.0.D0.or.incomp.eq.0.or.ittr(jhy).ne.0) then
  42 :           IF (LLON.GT.0) THEN                                                   
  43 :            P=0.D0                                                               
  44 :            IPOSM=N-LLOL+IDD-2                                                   
  45 :            IPLAC2=N2J+IDEP-1                                                    
  46 :          idebzc=ivpo1(ideb3)
  47 :            DO 2 IDEB2=IDEB3,IDEB4+2,-2                                        
  48 :             IAUX=IVPO1(IDEB2-3)-IPOSM                                           
  49 :             IPLAC=IVPO1(IDEB2-2)-IAUX                                           
  50 :             IFINZ=MIN(IDEBZC-1,LLON+IPLAC)                                      
  51 :             IDEBZC=MAX(1,IAUX)+IPLAC                                            
  52 :             IPLAC3=IPLAC2-IPLAC                                                 
  53 :           lond=ifinz-idebzc+1
  54 :         if (lond.GT.0) then
  55 :         ideq=IDEBZC+IPLAC3
  56 :         if (IFINZ-IDEBZC.GT.masdim) then
  57 :         p=p+ddotpw(lond,VAL(ideq),VAL1(IDEBZC),
  58 :      >      imasq(1),ideq)
  59 :         else
  60 :          if (imasq(ideq/masdim+1).gt.0.or.
  61 :      >       imasq((ifinz+iplac3)/masdim+1).gt.0)
  62 :      >  p=p+ddotpv(lond,VAL(ideq),VAL1(IDEBZC))
  63 :         endif
  64 :         endif
  65 :             IF (IAUX.LE.1) GOTO 3                                               
  66 :    2       CONTINUE                                                             
  67 :    3       CONTINUE                                                             
  68 :          if (abs(p).LT.dnorm.and.imasq(i1/masdim+1).le.0) goto 5
  69 :            VAL(I1)=VAL(I1)-P                                                    
  70 :           ENDIF                                                                 
  71 :         ENDIF                                                                   
  72 :         IF (ABS(VAL(I1)).GT.DNORM) then
  73 :           if (imasq(i1/masdim+1).le.0) imasq(i1/masdim+1)=1
  74 :           KIDEP=I1
  75 :         endif
  76 :    5    continue
  77 :        IDEB4=IDEB3                                                             
  78 :         IDD=NNJJ                                                                
  79 :   20   CONTINUE                                                                 
  80 :   30   CONTINUE                                                                 
  81 :        IVPO(JID)=KIDEP                                                          
  82 :        IDD2=IDD3                                                                
  83 :   10  CONTINUE                                                                  
  84 :       RETURN                                                                    
  85 :       END                                                                       
  86 :  
  87 :  
  88 :  
  89 :  
  90 :  
  91 :  
  92 :  

© Cast3M 2003 - All rights reserved.
Disclaimer