Download ellp53.eso

Back to the list

   1 : C ELLP53    SOURCE    CHAT      05/01/12    23:35:47     5004           
   2 :       SUBROUTINE ELLP53(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 EN UTILISATION LE STOCKAGE DE LA                   
  15 : C                                                                               
  16 : C    TRIANGULARISATION FAITE PAR ELLP51 (IPIV, JPIV, 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-10                                                              
  37 : C                                                                               
  38 : C     DO 10 I=1,N                                                               
  39 : C       IAUX(I) = I                                                             
  40 : C 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 : C     XPIV =0.D0                                                                
  49 : C     IPIV =0                                                                   
  50 : C     JPIV =0                                                                   
  51 : C     DO 110 I = ILIG,N                                                         
  52 : C       DO 111 J = ILIG,N                                                       
  53 : C         IF(  ABS ( ZA1(I,J))  .GT.XPIV ) THEN                                 
  54 : C           IPIV= I                                                             
  55 : C           JPIV= J                                                             
  56 : C           XPIV =ABS ( ZA1(I,J))                                               
  57 : C         ENDIF                                                                 
  58 : C111    CONTINUE                                                                
  59 : C110  CONTINUE                                                                  
  60 : C                                                                               
  61 : C                                                                               
  62 : C     IF(XPIV .LE.EPS) THEN                                                     
  63 : C         WRITE(6,*)'RETURN DANS ELLP51',XPIV,ILIG                              
  64 : C          RETURN                                                               
  65 : C     ENDIF                                                                     
  66 : C                                                                               
  67 : C   1.2  ON MET LA LIGNE NUMERO IPIV EN ILIG                                    
  68 : C        ET MEME CHOSE AU SECOND MEMBRE                                         
  69 : C                                                                               
  70 :       DO 120 J=ILIG,N                                                           
  71 :         ZAUX      = ZA1(IPIVO(ILIG),J)                                          
  72 :         ZA1(IPIVO(ILIG),J)= ZA1(ILIG,J)                                         
  73 :         ZA1(ILIG,J)= ZAUX                                                       
  74 :   120 CONTINUE                                                                  
  75 : C                                                                               
  76 :       ZAUX    = ZV(IPIVO(ILIG))                                                 
  77 :       ZV(IPIVO(ILIG))= ZV(ILIG)                                                 
  78 :       ZV(ILIG)= ZAUX                                                            
  79 : C                                                                               
  80 : C   1.3  ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG                            
  81 : C        ET ON NOTE CELA DANS LE TABLEAU IAUX                                   
  82 : C   *      ERREUR SUR BORNES 130 CORRIGEE                                       
  83 : C                                                                               
  84 :       JLIG=ILIG                                                                 
  85 :       DO 130 I=1   ,N                                                           
  86 :         ZAUX      = ZA1(I,JPIVO(JLIG))                                          
  87 :         ZA1(I,JPIVO(JLIG))= ZA1(I,JLIG)                                         
  88 :         ZA1(I,JLIG)= ZAUX                                                       
  89 :   130 CONTINUE                                                                  
  90 : C       I0         = IAUX (JPIVO(JLIG))                                         
  91 : C       IAUX(JPIVO(JLIG)) = IAUX (JLIG)                                         
  92 : C       IAUX(JLIG) = I0                                                         
  93 : C                                                                               
  94 : C   1.4  REDUCTION PAR SOUSTRACTION DES LIGNES ENTRE-ELLES                      
  95 : C         ET MEME CHOSE AU SECOND MEMBRE                                        
  96 : C                                                                               
  97 :       DO 140 I= ILIG + 1 ,N                                                     
  98 :         ZAUX      = ZA1(I,ILIG) / ZA1(ILIG,ILIG)                                
  99 :         DO 141 J=ILIG  ,N                                                       
 100 :           ZA1(I,J)= ZA1(I,J)- ZAUX * ZA1 (ILIG,J)                               
 101 :   141   CONTINUE                                                                
 102 :         ZV(I)  = ZV(I)- ZAUX * ZV(ILIG)                                         
 103 :   140 CONTINUE                                                                  
 104 : C                                                                               
 105 : C     FIN   BOUCLE SUR LES MATRICES EMBOITEES                                   
 106 : 100   CONTINUE                                                                  
 107 : C                                                                               
 108 : C   2. SUBSTITUTION EN REMONTANT                                                
 109 : C                                                                               
 110 :       ZV(N) = ZV(N) / ZA1 (N,N)                                                 
 111 :       DO 200 I= 2,N                                                             
 112 :         IN = N + 1 - I                                                          
 113 :         DO 210 K= 1,I-1                                                         
 114 :           KN = N + 1 - K                                                        
 115 :           ZV(IN) = ZV(IN) - ZA1 (IN,KN)* ZV(KN)                                 
 116 :   210   CONTINUE                                                                
 117 :         ZV(IN) = ZV(IN) / ZA1 (IN,IN)                                           
 118 :   200 CONTINUE                                                                  
 119 : C                                                                               
 120 : C   3. ON REMET LES INCONNUES A LA BONNE PLACE                                  
 121 : C                                                                               
 122 :       DO 300 I= 1,N                                                             
 123 :         ZX(IAUX(I)) = ZV(I)                                                     
 124 :   300 CONTINUE                                                                  
 125 : C                                                                               
 126 :       RETURN                                                                    
 127 :       END                                                                       
 128 :  

© Cast3M 2003 - All rights reserved.
Disclaimer