Download choli1.eso

Back to the list

   1 : C CHOLI1    SOURCE    PV        13/09/26    21:48:45     7827           
   2 :       FUNCTION CHOLI1(ILIGF,LIGN,VALF,DAAG,IPKNO,IPPVF,KHG,IVPOF,               
   3 :      # KIDEP,KI1,KQ,imasq,idep,prec,icle)
   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 : *      LIGN=ILIGF(KHAU+1)
  25 : *      IECAR = KQ-IPREL+1                                                               
  26 :       GOTO 50                                                                   
  27 :   20  CONTINUE                                                               
  28 :       IECAR=KQ-IPREL+1                                                           
  29 :       DO 30 NNJ=MAX(1,KIDEP+IECAR),KI1+IECAR                                    
  30 :        KK=NNJ-IECAR                                                             
  31 :        NNJJ=IPPVV(NNJ+1)                                                        
  32 :        NJ=NNJJ-IPPVV(NNJ)                                                       
  33 :        LLOL=MIN(NJ,KK)-1                                                                                                                                                                
  34 :        LLON=MIN(LLOL-KK+KPREM+1,LLOL-NNJJ+IVPO(NNJ)+1) 
  35 : C 3 lignes ajoutees                               
  36 :        IF (LLON.GT.0) THEN  
  37 :         IEC1=KK-LLOL-1                                                      
  38 :         IEC2=NNJJ-llol -1                                                                                                                              
  39 :         if (llon.gt.masdim) then
  40 :         ideq=1+iec1+idep-1
  41 :         p=ddotpw(llon,VALF(1+iec1),VAL(1+iec2),
  42 :      >     imasq(1),ideq)
  43 :         else
  44 :         p=ddotpv(llon,VALF(1+iec1),VAL(1+iec2))
  45 :         endif
  46 :         VALF(KK)=VALF(KK)-P
  47 :        ENDIF                                                                    
  48 :        IF (ABS(VALF(KK)).GT.DNORM) then
  49 :          KPREM=KK
  50 :          imasq((kk+idep-1)/masdim+1) =1
  51 :        ENDIF
  52 :   30  CONTINUE                                                                  
  53 :   50  CONTINUE                                                                  
  54 :       AUX1=0.D0                                                             
  55 :       if(ICLE.EQ.2) THEN
  56 :       iecar = KQ-IPREL+1
  57 :       nnj= ki1+IECAR+1
  58 :       kk = nnj-iecar
  59 :       nnjj=IPPVV(NNJ+1)  
  60 :       NJ=NNJJ-IPPVV(NNJ)
  61 :       LLOL=MIN(NJ,KK)-1 
  62 :       LLON=MIN(LLOL-KK+KPREM+1,LLOL-NNJJ+IVPO(NNJ)+1) 
  63 :       IEC1=KK-LLOL-1 
  64 :       IEC2=NNJJ-llol -1 
  65 :       IF(LLON.GT.0) THEN  
  66 : *      write(6,*)'diagonale llon iec1  iec2' , llon, iec1,iec2             
  67 :         DO 9 K=1+iec1,iec1+LLON                                                          
  68 : *        AUX=VALF(K)                                                               
  69 : *        VALF(K)=AUX/DAAG(K)                                                       
  70 :         AUX1=AUX1+valf(K)*VAL(K-iec1+iec2)                                                     
  71 :    9    CONTINUE   
  72 :       ENDIF
  73 :       DO 91 K=1,kprem
  74 :       VALF(K)=VALF(K)  /DAAG(K)                                                                                                       
  75 :   91  CONTINUE  
  76 :       else    
  77 :       DO 90 K=1,KPREM                                                                                                                      
  78 :       VALF(K)=VALF(K)  /DAAG(K)                                                                                                       
  79 :   90  CONTINUE  
  80 :       endif                                                            
  81 :       IVPOF(KHG)=KPREM+IPPKHG                                                   
  82 :       DO 8 K=KPREM+1,KI1                                                        
  83 :       VALF(K)=0.D0                                                              
  84 :    8  CONTINUE                                                                  
  85 :       CHOLI1=-AUX1                                                              
  86 :       RETURN                                                                    
  87 :       END                                                                       
  88 :  
  89 :  
  90 :  
  91 :  
  92 :  
  93 :  
  94 :  
  95 :  
  96 :  

© Cast3M 2003 - All rights reserved.
Disclaimer