Télécharger ellp51.eso

Retour à la liste

Numérotation des lignes :

ellp51
  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.  
  131.  

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