Download ellp51.eso

Back to the list

   1 : C ELLP51    SOURCE    CHAT      05/01/12    23:35:43     5004           
   2 :       SUBROUTINE ELLP51(ZA1,ZV,ZX,N,IPIVO,JPIVO,IAUX)                           
   3 : C                                                                               
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8(A-H,O-Y)                                                  
   6 :       IMPLICIT COMPLEX*16(Z)                                                    
   7 : C                                                                               
   8 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC         
   9 : C                                                                               
  10 : C    OPERATEUR ELFE LAPLACE POUTRE                                              
  11 : C                                                                               
  12 : C    RESOLUTION D'UN SYSTEME LINEAIRE COMPLEXE   ZA1 * ZX = ZV                  
  13 : C                                                                               
  14 : C    PAR LA METHODE DE GAUSS AVEC CALCUL DE LA TRIANGULARISATION                
  15 : C                                                                               
  16 : C    ET STOCKAGE DE CELLE CI DANS LES VECTEURS IPIVO, JPIVO ET IAUX             
  17 : C                                                                               
  18 : C                                                                               
  19 : C    PARAMETRES :                                                               
  20 : C                                                                               
  21 : C    ZA1(N*N) : MATRICE (N*N) REPRESENTANT LE SYSTEME LINEAIRE                  
  22 : C    ZV(N)    : SECOND MEMBRE                                                   
  23 : C    IAUX(N)  : TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES              
  24 : C                                                                               
  25 : C    SORTIE :                                                                   
  26 : C                                                                               
  27 : C    ZX       : SOLUTION                                                        
  28 : C                                                                               
  29 : C    AUTEUR : DE LANGRE                                                         
  30 : C    DATE   : 08 DEC 1989                                                       
  31 : C                                                                               
  32 : C  ====================================================================         
  33 : C                                                                               
  34 :       COMPLEX*16  ZA1(N,*),ZV(*),ZX(*)                                          
  35 :       INTEGER      IAUX(*),IPIVO(*),JPIVO(*)                                    
  36 :       EPS = 1.D-35                                                              
  37 : C                                                                               
  38 :       DO 10 I=1,N                                                               
  39 :         IAUX(I) = I                                                             
  40 :   10  CONTINUE                                                                  
  41 : C      1.  TRIANGULARISATION                                                    
  42 : C         BOUCLE SUR LES MATRICES EMBOITEES                                     
  43 : C                                                                               
  44 :       DO 100 ILIG =1,N                                                          
  45 : C                                                                               
  46 : C      1.1  RECHERCHE DU PIVOT                                                  
  47 : C                                                                               
  48 :       XPIV =0.D0                                                                
  49 :       IPIV =0                                                                   
  50 :       JPIV =0                                                                   
  51 :       DO 110 I = ILIG,N                                                         
  52 :         DO 111 J = ILIG,N                                                       
  53 :           IF(  ABS ( ZA1(I,J))  .GT.XPIV ) THEN                                 
  54 :             IPIV= I                                                             
  55 :             JPIV= J                                                             
  56 :             XPIV =ABS ( ZA1(I,J))                                               
  57 :           ENDIF                                                                 
  58 :  111    CONTINUE                                                                
  59 :  110  CONTINUE                                                                  
  60 : C                                                                               
  61 :       IPIVO(ILIG) = IPIV                                                        
  62 :       JPIVO(ILIG) = JPIV                                                        
  63 : C                                                                               
  64 :       IF(XPIV .LE.EPS) THEN                                                     
  65 :           WRITE(6,*)'RETURN DANS ELLP51',XPIV,ILIG                              
  66 :            RETURN                                                               
  67 :       ENDIF                                                                     
  68 : C                                                                               
  69 : C   1.2  ON MET LA LIGNE NUMERO IPIV EN ILIG                                    
  70 : C        ET MEME CHOSE AU SECOND MEMBRE                                         
  71 : C                                                                               
  72 :       DO 120 J=ILIG,N                                                           
  73 :         ZAUX      = ZA1(IPIV,J)                                                 
  74 :         ZA1(IPIV,J)= ZA1(ILIG,J)                                                
  75 :         ZA1(ILIG,J)= ZAUX                                                       
  76 :   120 CONTINUE                                                                  
  77 : C                                                                               
  78 :       ZAUX    = ZV(IPIV)                                                        
  79 :       ZV(IPIV)= ZV(ILIG)                                                        
  80 :       ZV(ILIG)= ZAUX                                                            
  81 : C                                                                               
  82 : C   1.3  ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG                            
  83 : C        ET ON NOTE CELA DANS LE TABLEAU IAUX                                   
  84 : C   *      ERREUR SUR BORNES 130 CORRIGEE                                       
  85 : C                                                                               
  86 :       JLIG=ILIG                                                                 
  87 :       DO 130 I=1   ,N                                                           
  88 :         ZAUX      = ZA1(I,JPIV)                                                 
  89 :         ZA1(I,JPIV)= ZA1(I,JLIG)                                                
  90 :         ZA1(I,JLIG)= ZAUX                                                       
  91 :   130 CONTINUE                                                                  
  92 :         I0         = IAUX (JPIV)                                                
  93 :         IAUX(JPIV) = IAUX (JLIG)                                                
  94 :         IAUX(JLIG) = I0                                                         
  95 : C                                                                               
  96 : C   1.4  REDUCTION PAR SOUSTRACTION DES LIGNES ENTRE-ELLES                      
  97 : C         ET MEME CHOSE AU SECOND MEMBRE                                        
  98 : C                                                                               
  99 :       DO 140 I= ILIG + 1 ,N                                                     
 100 :         ZAUX      = ZA1(I,ILIG) / ZA1(ILIG,ILIG)                                
 101 :         DO 141 J=ILIG  ,N                                                       
 102 :           ZA1(I,J)= ZA1(I,J)- ZAUX * ZA1 (ILIG,J)                               
 103 :   141   CONTINUE                                                                
 104 :         ZV(I)  = ZV(I)- ZAUX * ZV(ILIG)                                         
 105 :   140 CONTINUE                                                                  
 106 : C                                                                               
 107 : C     FIN   BOUCLE SUR LES MATRICES EMBOITEES                                   
 108 : 100   CONTINUE                                                                  
 109 : C                                                                               
 110 : C   2. SUBSTITUTION EN REMONTANT                                                
 111 : C                                                                               
 112 :       ZV(N) = ZV(N) / ZA1 (N,N)                                                 
 113 :       DO 200 I= 2,N                                                             
 114 :         IN = N + 1 - I                                                          
 115 :         DO 210 K= 1,I-1                                                         
 116 :           KN = N + 1 - K                                                        
 117 :           ZV(IN) = ZV(IN) - ZA1 (IN,KN)* ZV(KN)                                 
 118 :   210   CONTINUE                                                                
 119 :         ZV(IN) = ZV(IN) / ZA1 (IN,IN)                                           
 120 :   200 CONTINUE                                                                  
 121 : C                                                                               
 122 : C   3. ON REMET LES INCONNUES A LA BONNE PLACE                                  
 123 : C                                                                               
 124 :       DO 300 I= 1,N                                                             
 125 :         ZX(IAUX(I)) = ZV(I)                                                     
 126 :   300 CONTINUE                                                                  
 127 : C                                                                               
 128 :       RETURN                                                                    
 129 :       END                                                                       
 130 :  

© Cast3M 2003 - All rights reserved.
Disclaimer