Download elpdre.eso

Back to the list

   1 : C ELPDRE    SOURCE    CHAT      05/01/12    23:37:23     5004           
   2 :       SUBROUTINE ELPDRE(CA1,CV,CX,IAUX,N)                                       
   3 : C                                                                               
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-B,D-H,O-Z)                                              
   6 :       IMPLICIT COMPLEX*16(C)                                                    
   7 : C  ====================================================================         
   8 : C    CA1  MATRICE (N*N)
   9 : C    CV  SECOND MEMBRE                                                          
  10 : C    CX SOLUTION                                                                
  11 : C    IAUX(N) TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES                 
  12 : C  ====================================================================         
  13 : C                                                                               
  14 :       DIMENSION   CA1(N,*)                                                      
  15 :       DIMENSION   CV(*)                                                         
  16 :       DIMENSION   CX(*)                                                         
  17 :       DIMENSION    IAUX(*)                                                      
  18 : C                                                                               
  19 :       EPS = 1D-10                                                               
  20 : C                                                                               
  21 :       DO 10 I=1,N                                                               
  22 :         IAUX(I) = I                                                             
  23 :   10  CONTINUE                                                                  
  24 : C      1.  TRIANGULARISATION                                                    
  25 : C         BOUCLE SUR LES MATRICES EMBOITEES                                     
  26 : C                                                                               
  27 :       DO 100 ILIG =1,N                                                          
  28 : C                                                                               
  29 : C      1.1  RECHERCHE DU PIVOT                                                  
  30 : C                                                                               
  31 :       XPIV =0.D0                                                                
  32 :       IPIV =0                                                                   
  33 :       JPIV =0                                                                   
  34 :       DO 110 I = ILIG,N                                                         
  35 :         DO 111 J = ILIG,N                                                       
  36 :           IF(  ABS ( CA1(I,J))  .GT.XPIV ) THEN                                 
  37 :             IPIV= I                                                             
  38 :             JPIV= J                                                             
  39 :             XPIV =ABS ( CA1(I,J))                                               
  40 :           ENDIF                                                                 
  41 :  111    CONTINUE                                                                
  42 :  110  CONTINUE                                                                  
  43 : C                                                                               
  44 : *      WRITE(6,*) 'DRE  ILIG IPIV JPIV ',ILIG,IPIV,JPIV                         
  45 :       IF(XPIV .LE.EPS) THEN                                                     
  46 :            RETURN                                                               
  47 :       ENDIF                                                                     
  48 : C                                                                               
  49 : C   1.2  ON MET LA LIGNE NUMERO IPIV EN ILIG                                    
  50 : C        ET MEME CHOSE AU SECOND MEMBRE                                         
  51 : C                                                                               
  52 :       DO 120 J=ILIG,N                                                           
  53 :         CAUX      = CA1(IPIV,J)                                                 
  54 :         CA1(IPIV,J)= CA1(ILIG,J)                                                
  55 :         CA1(ILIG,J)= CAUX                                                       
  56 :   120 CONTINUE                                                                  
  57 : C                                                                               
  58 :       CAUX    = CV(IPIV)                                                        
  59 :       CV(IPIV)= CV(ILIG)                                                        
  60 :       CV(ILIG)= CAUX                                                            
  61 : C                                                                               
  62 : C   1.3  ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG                            
  63 : C        ET ON NOTE CELA DANS LE TABLEAU IAUX                                   
  64 : C   *      ERREUR SUR BORNES 130 CORRIGEE                                       
  65 : C                                                                               
  66 :       JLIG=ILIG                                                                 
  67 :       DO 130 I=1   ,N                                                           
  68 :         CAUX      = CA1(I,JPIV)                                                 
  69 :         CA1(I,JPIV)= CA1(I,JLIG)                                                
  70 :         CA1(I,JLIG)= CAUX                                                       
  71 :   130 CONTINUE                                                                  
  72 :         I0         = IAUX (JPIV)                                                
  73 :         IAUX(JPIV) = IAUX (JLIG)                                                
  74 :         IAUX(JLIG) = I0                                                         
  75 : C                                                                               
  76 : C   1.4  REDUCTION PAR SOUSTRACTION DES LIGNES ENTRE-ELLES                      
  77 : C         ET MEME CHOSE AU SECOND MEMBRE                                        
  78 : C                                                                               
  79 :       DO 140 I= ILIG + 1 ,N                                                     
  80 :         CAUX      = CA1(I,ILIG) / CA1(ILIG,ILIG)                                
  81 :         DO 141 J=ILIG  ,N                                                       
  82 :           CA1(I,J)= CA1(I,J)- CAUX * CA1 (ILIG,J)                               
  83 :   141   CONTINUE                                                                
  84 :         CV(I)  = CV(I)- CAUX * CV(ILIG)                                         
  85 :   140 CONTINUE                                                                  
  86 : C                                                                               
  87 : C     FIN   BOUCLE SUR LES MATRICES EMBOITEES                                   
  88 : 100   CONTINUE                                                                  
  89 : C                                                                               
  90 : C   2. SUBSTITUTION EN REMONTANT                                                
  91 : C                                                                               
  92 :       CV(N) = CV(N) / CA1 (N,N)                                                 
  93 :       DO 200 I= 2,N                                                             
  94 :         IN = N + 1 - I                                                          
  95 :         DO 210 K= 1,I-1                                                         
  96 :           KN = N + 1 - K                                                        
  97 :           CV(IN) = CV(IN) - CA1 (IN,KN)* CV(KN)                                 
  98 :   210   CONTINUE                                                                
  99 :         CV(IN) = CV(IN) / CA1 (IN,IN)                                           
 100 :   200 CONTINUE                                                                  
 101 : C                                                                               
 102 : C   3. ON REMET LES INCONNUES A LA BONNE PLACE                                  
 103 : C                                                                               
 104 :       DO 300 I= 1,N                                                             
 105 :         CX(IAUX(I)) = CV(I)                                                     
 106 :   300 CONTINUE                                                                  
 107 : C                                                                               
 108 :       RETURN                                                                    
 109 :       END                                                                       
 110 :  
 111 :  

© Cast3M 2003 - All rights reserved.
Disclaimer