Télécharger ellp53.eso

Retour à la liste

Numérotation des lignes :

ellp53
  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.  
  129.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales