Télécharger inver.eso

Retour à la liste

Numérotation des lignes :

inver
  1. C INVER SOURCE SP204843 26/02/16 21:15:06 12477
  2. SUBROUTINE INVER(A,NZ,ICRIT,B,IS,EPS)
  3. C
  4. C ====================================================================
  5. C SOUS-PROGRAMME FORTRAN APPELE PAR ELFINV
  6. C INVERSION DE MATRICE PAR RESOLUTION SUCCESSIVE DE NZ SYSTEMES
  7. C LINEAIRES
  8. C A MATRICE (NZ*NZ) A INVERSER EN ENTREE, MATRICE INVERSEE EN SORTIE
  9. C ICRIT=1 SI MATRICE SINGULIERE, 0 SINON
  10. C B TABLEAU DE REELS DE DIMENSION NZ*NZ
  11. C IS TABLEAU D'ENTIERS DE DIMENSION NZ
  12. C EPS PRECISION
  13. C ====================================================================
  14. C
  15. IMPLICIT INTEGER(I-N)
  16. IMPLICIT REAL*8(A-H,O-Z)
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. -INC CCREEL
  21. DIMENSION A(NZ,1),B(NZ,1)
  22. DIMENSION IS(1)
  23. C
  24. C INITIALISATIONS
  25. C IS SUITE REPRESENTANT L'INDICE J DE X(J) SOLU CORRESPONDANT
  26. C A LA I EME COLONNE DE LA MATRICE A TRIANGULARISEE
  27. C
  28. DO 20 I=1,NZ
  29. DO 10 J=1,NZ
  30. B(J,I)=0.D0
  31. 10 CONTINUE
  32. B(I,I)=1.D0
  33. IS(I)=I
  34. 20 CONTINUE
  35. ICRIT=0
  36. C
  37. C 1- TRIANGULARISATION
  38. C
  39. NZM1=NZ-1
  40. DO 100 NR=1,NZM1
  41. C
  42. C CHOIX DU PIVOT
  43. C
  44. PIVOT=0.D0
  45. DO 40 K=NR,NZ
  46. DO 41 L=NR,NZ
  47. ABSKL=ABS(A(K,L))
  48. IF(ABSKL.GT.PIVOT) THEN
  49. I=K
  50. J=L
  51. PIVOT=ABSKL
  52. ENDIF
  53. 41 CONTINUE
  54. 40 CONTINUE
  55. C
  56. C LE PIVOT EST-IL NUL?
  57. C
  58. IF(PIVOT.LE.EPS) THEN
  59. ICRIT=1
  60. RETURN
  61. ENDIF
  62. C
  63. C CHANGEMENT DE LIGNE : PLACE LE PIVOT EN NR EME LIGNE
  64. C
  65. DO 50 L=1,NZ
  66. D =A(NR,L)
  67. A(NR,L)=A(I,L)
  68. A(I,L)=D
  69. 50 CONTINUE
  70. DO 60 L=1,NZ
  71. E=B(NR,L)
  72. B(NR,L)=B(I,L)
  73. B(I,L)=E
  74. 60 CONTINUE
  75. C
  76. C CHANGEMENT DE COLONNE : PLACE LE PIVOT EN R EME COLONNE
  77. C
  78. DO 70 M=1,NZ
  79. CC =A(M,NR)
  80. A(M,NR)=A(M,J)
  81. A(M,J)=CC
  82. 70 CONTINUE
  83. C
  84. C INDICE DES VARIABLES CORRESPONDANT A LA J EME ET A LA R EME COLON
  85. C
  86. ISR=IS(NR)
  87. IS(NR)=IS(J)
  88. IS(J)=ISR
  89. C
  90. C CALCUL DE LA NOUVELLE MATRICE A
  91. C
  92. NRP1=NR+1
  93. DO 90 I=NRP1,NZ
  94. IF(A(I,NR).NE.0.D0)THEN
  95. G=A(I,NR)/A(NR,NR)
  96. DO 80 J=1,NZ
  97. A(I,J)=A(I,J)-G*A(NR,J)
  98. B(I,J)=B(I,J)-G*B(NR,J)
  99. 80 CONTINUE
  100. ENDIF
  101. 90 CONTINUE
  102. 100 CONTINUE
  103. C
  104. C 2- RESOLUTION DU SYSTEME TRIANGULARISE
  105. C
  106. DO 130 J=1,NZ
  107. IF (ABS(B(NZ,J)).GT.(1.-XZPREC)*ABS(B(NZ,J))) THEN
  108. IF (ABS(A(NZ,NZ)).LE.((1.-XZPREC)*ABS(A(NZ,NZ)))) THEN
  109. ICRIT = 1
  110. RETURN
  111. ENDIF
  112. B(NZ,J)=B(NZ,J)/A(NZ,NZ)
  113. ENDIF
  114. DO 120 I= NZM1,1,-1
  115. F=0.D0
  116. I1=I+1
  117. DO 110 JJ=I1,NZ
  118. F=F-A(I,JJ)*B(JJ,J)
  119. 110 CONTINUE
  120. B(I,J)=(B(I,J)+F)/A(I,I)
  121. 120 CONTINUE
  122. 130 CONTINUE
  123. C
  124. DO 140 L=1,NZ
  125. IL=IS(L)
  126. DO 141 J=1,NZ
  127. A(IL,J)=B(L,J)
  128. 141 CONTINUE
  129. 140 CONTINUE
  130. RETURN
  131. END
  132.  
  133.  
  134.  

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