Download chole1.eso

Back to the list

   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