Télécharger inver1.eso

Retour à la liste

Numérotation des lignes :

inver1
  1. C INVER1 SOURCE CHAT 05/01/13 00:42:36 5004
  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 40 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. C
  82. C LE PIVOT EST-IL NUL?
  83. C
  84. IF(PIVOT.LE.EPS) THEN
  85. ICRIT=1
  86. RETURN
  87. ENDIF
  88. C
  89. C CHANGEMENT DE LIGNE : PLACE LE PIVOT EN NR EME LIGNE
  90. C
  91. DO 50 L=1,NZ
  92. D=A(L,NR)
  93. A(L,NR)=A(L,I)
  94. A(L,I)=D
  95. 50 CONTINUE
  96. DO 60 L=1,NZ
  97. E=BT(L,NR)
  98. BT(L,NR)=BT(L,I)
  99. BT(L,I)=E
  100. 60 CONTINUE
  101. C
  102. C CHANGEMENT DE COLONNE : PLACE LE PIVOT EN R EME COLONNE
  103. C
  104. DO 70 M=1,NZ
  105. CC=A(NR,M)
  106. A(NR,M)=A(J,M)
  107. A(J,M)=CC
  108. 70 CONTINUE
  109. C
  110. C INDICE DES VARIABLES CORRESPONDANT A LA J EME ET A LA R EME COLON
  111. C
  112. ISR=IS(NR)
  113. IS(NR)=IS(J)
  114. IS(J)=ISR
  115. C
  116. C CALCUL DE LA NOUVELLE MATRICE A
  117. C
  118. NRP1=NR+1
  119. DO 90 I=NRP1,NZ
  120. IF(A(NR,I).NE.0.D0)THEN
  121. G=A(NR,I)/A(NR,NR)
  122. DO 80 J=1,NZ
  123. A(J,I)=A(J,I)-G*A(J,NR)
  124. BT(J,I)=BT(J,I)-G*BT(J,NR)
  125. 80 CONTINUE
  126. ENDIF
  127. 90 CONTINUE
  128. 100 CONTINUE
  129. C
  130. C 2- RESOLUTION DU SYSTEME TRIANGULARISE
  131. C
  132. * On introduit la transposée de B pour performance calcul fortran
  133. *
  134. DO 150 I=1,NZ
  135. DO 150 J=1,NZ
  136. BTT(J,I)=BT(I,J)
  137. 150 CONTINUE
  138.  
  139. DO 130 J=1,NZ
  140. BTT(NZ,J)=BTT(NZ,J)/A(NZ,NZ)
  141. DO 120 I= NZM1,1,-1
  142. F=0.D0
  143. I1=I+1
  144. DO 110 JJ=I1,NZ
  145. F=F-A(JJ,I)*BTT(JJ,J)
  146. 110 CONTINUE
  147. BTT(I,J)=(BTT(I,J)+F)/A(I,I)
  148. 120 CONTINUE
  149. 130 CONTINUE
  150. C
  151. DO 140 L=1,NZ
  152. IL=IS(L)
  153. DO 140 J=1,NZ
  154. A(J,IL)=BTT(L,J)
  155. 140 CONTINUE
  156.  
  157. SEGSUP DIVERS
  158. RETURN
  159. END
  160.  
  161.  
  162.  

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