Télécharger inver1.eso

Retour à la liste

Numérotation des lignes :

inver1
  1. C INVER1 SOURCE CB215821 26/08/24 21:16:53 12622
  2. SUBROUTINE INVER1(TRAVAI,NZ,ICRIT,EPS)
  3. C
  4. C ====================================================================
  5. C SOUS-PROGRAMME APPELE PAR RAYE3 (RAYONNEMENT, oper. RAYN)
  6. C --> derive de inver.eso:
  7. C --> version esope
  8. C --> on travaille sur les matrices transposees
  9. C --> traitement des tableaux par colonne
  10. C RAPPEL:
  11. C INVERSION DE MATRICE PLEINE NON SYMETRIQUE PAR RESOLUTION
  12. C SUCCESSIVE DE NZ SYSTEMES LINEAIRES
  13. C A MATRICE (NZ*NZ) A INVERSER EN ENTREE, MATRICE INVERSEE EN SORTIE
  14. C ICRIT=1 SI MATRICE SINGULIERE, 0 SINON
  15. C BT TABLEAU DE REELS DE DIMENSION NZ*NZ
  16. C IS TABLEAU D'ENTIERS DE DIMENSION NZ
  17. C EPS PRECISION
  18. C
  19. C Le segment TRAVAI contenant A et BT est envoye actif par RAYE3
  20. C et retourné actif
  21. C
  22. C var locales : BTT transposee de BT dans segment DIVERS
  23. C ====================================================================
  24. C
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8(A-H,O-Z)
  27. -INC PPARAM
  28. -INC CCOPTIO
  29.  
  30. SEGMENT TRAVAI
  31. REAL *8 A(NEL,NEL), BT(NEL,NEL)
  32. INTEGER IS(NEL)
  33. ENDSEGMENT
  34.  
  35.  
  36. SEGMENT DIVERS
  37. REAL*8 BTT(NZ,NZ)
  38. ENDSEGMENT
  39. SEGINI DIVERS
  40. C
  41. C on peut stocker ABS(A) au lieu de le recalculer dans la boucle
  42. C 40 mais d'une part le gain en temps calcul n'est pas substantiel
  43. C et d'autre part cela implique une place memoire supplementaire
  44. C
  45. C DO 160 J=1,NZ
  46. C DO 160 I=1,NZ
  47. C ABA(I,J)=ABS(A(I,J))
  48. C 160 CONTINUE
  49. C
  50. C INITIALISATIONS
  51. C IS SUITE REPRESENTANT L'INDICE J DE X(J) SOLU CORRESPONDANT
  52. C A LA I EME COLONNE DE LA MATRICE A TRIANGULARISEE
  53. C
  54. DO 20 I=1,NZ
  55. DO 10 J=1,NZ
  56. BT(J,I)=0.D0
  57. 10 CONTINUE
  58. BT(I,I)=1.D0
  59. IS(I)=I
  60. 20 CONTINUE
  61. ICRIT=0
  62. C
  63. C 1- TRIANGULARISATION
  64. C
  65. NZM1=NZ-1
  66. DO 100 NR=1,NZM1
  67. C
  68. C CHOIX DU PIVOT
  69. C
  70. PIVOT=0.D0
  71. DO 151 K=NR,NZ
  72. DO 40 L=NR,NZ
  73. C ABSKL=ABA(L,K)
  74. ABSKL=ABS(A(L,K))
  75. IF(ABSKL.GT.PIVOT) THEN
  76. I=K
  77. J=L
  78. PIVOT=ABSKL
  79. ENDIF
  80. 40 CONTINUE
  81. 151 CONTINUE
  82. C
  83. C LE PIVOT EST-IL NUL?
  84. C
  85. IF(PIVOT.LE.EPS) THEN
  86. ICRIT=1
  87. RETURN
  88. ENDIF
  89. C
  90. C CHANGEMENT DE LIGNE : PLACE LE PIVOT EN NR EME LIGNE
  91. C
  92. DO 50 L=1,NZ
  93. D=A(L,NR)
  94. A(L,NR)=A(L,I)
  95. A(L,I)=D
  96. 50 CONTINUE
  97. DO 60 L=1,NZ
  98. E=BT(L,NR)
  99. BT(L,NR)=BT(L,I)
  100. BT(L,I)=E
  101. 60 CONTINUE
  102. C
  103. C CHANGEMENT DE COLONNE : PLACE LE PIVOT EN R EME COLONNE
  104. C
  105. DO 70 M=1,NZ
  106. CC=A(NR,M)
  107. A(NR,M)=A(J,M)
  108. A(J,M)=CC
  109. 70 CONTINUE
  110. C
  111. C INDICE DES VARIABLES CORRESPONDANT A LA J EME ET A LA R EME COLON
  112. C
  113. ISR=IS(NR)
  114. IS(NR)=IS(J)
  115. IS(J)=ISR
  116. C
  117. C CALCUL DE LA NOUVELLE MATRICE A
  118. C
  119. NRP1=NR+1
  120. DO 90 I=NRP1,NZ
  121. IF(A(NR,I).NE.0.D0)THEN
  122. G=A(NR,I)/A(NR,NR)
  123. DO 80 J=1,NZ
  124. A(J,I)=A(J,I)-G*A(J,NR)
  125. BT(J,I)=BT(J,I)-G*BT(J,NR)
  126. 80 CONTINUE
  127. ENDIF
  128. 90 CONTINUE
  129. 100 CONTINUE
  130. C
  131. C 2- RESOLUTION DU SYSTEME TRIANGULARISE
  132. C
  133. * On introduit la transposée de B pour performance calcul fortran
  134. *
  135. DO 152 I=1,NZ
  136. DO 150 J=1,NZ
  137. BTT(J,I)=BT(I,J)
  138. 150 CONTINUE
  139. 152 CONTINUE
  140.  
  141. DO 130 J=1,NZ
  142. BTT(NZ,J)=BTT(NZ,J)/A(NZ,NZ)
  143. DO 120 I= NZM1,1,-1
  144. F=0.D0
  145. I1=I+1
  146. DO 110 JJ=I1,NZ
  147. F=F-A(JJ,I)*BTT(JJ,J)
  148. 110 CONTINUE
  149. BTT(I,J)=(BTT(I,J)+F)/A(I,I)
  150. 120 CONTINUE
  151. 130 CONTINUE
  152. C
  153. DO 153 L=1,NZ
  154. IL=IS(L)
  155. DO 140 J=1,NZ
  156. A(J,IL)=BTT(L,J)
  157. 140 CONTINUE
  158. 153 CONTINUE
  159.  
  160. SEGSUP DIVERS
  161. RETURN
  162. END
  163.  
  164.  
  165.  
  166.  

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