Télécharger valpro.eso

Retour à la liste

Numérotation des lignes :

valpro
  1. C VALPRO SOURCE CHAT 05/01/13 04:01:08 5004
  2. SUBROUTINE VALPRO
  3. ************************************************************************
  4. *
  5. * V A L P R O
  6. * -----------
  7. *
  8. * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "VALPROPRE"
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * CALCULER LES VALEURS PROPRES D'UNE MATRICE TRIDIAGONALE DE LA
  14. * FORME:
  15. *
  16. * | A1 1 0 0 0 0 |
  17. * | B1 A2 1 0 0 0 |
  18. * | 0 B2 A3 1 0 0 |
  19. * | 0 0 B3 A4 1 0 |
  20. * | 0 0 0 B4 A5 1 |
  21. * | 0 0 0 0 B5 A6 |
  22. *
  23. * PHRASE D'APPEL (EN GIBIANE):
  24. * ----------------------------
  25. *
  26. * |ABSOLU |
  27. * VV = VALPROPRE AA BB (ITERATIO II) (| | EE) ;
  28. * |RELATIF|
  29. *
  30. * LES PARENTHESES INDIQUANT DES OPERANDES FACULTATIFS.
  31. *
  32. * OPERANDES ET RESULTATS:
  33. * -----------------------
  34. *
  35. * AA 'LISTREEL' TERMES DE LA DIAGONALE DE LA MATRICE.
  36. * BB 'LISTREEL' TERMES DE LA SOUS-DIAGONALE DE LA MATRICE.
  37. * ITERATIO 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LE
  38. * NOMBRE MAXIMUM D'ITERATIONS A FAIRE DANS LES
  39. * CALCULS.
  40. * II 'ENTIER ' NOMBRE MAXIMUM D'ITERATIONS PERMIS DANS LES
  41. * CALCULS.
  42. * ABSOLU 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LA
  43. * PRECISION ABSOLUE DE CONVERGENCE.
  44. * RELATIF 'MOT ' MOT-CLE INDIQUANT QUE L'ON FOURNIT LA
  45. * PRECISION RELATIVE DE CONVERGENCE.
  46. * EE 'FLOTTANT' PRECISION DE CONVERGENCE.
  47. * VV 'LISTREEL' LISTE DES VALEURS PROPRES, DANS L'ORDRE DE
  48. * CALCUL.
  49. *
  50. * LES MOTS-CLES "ABSOLU" ET "RELATIF" S'EXCLUENT MUTUELLEMENT.
  51. *
  52. * LEXIQUE: (ORDRE ALPHABETIQUE)
  53. * --------
  54. *
  55. * IPDIAG ENTIER POINTEUR SUR L'OBJET "AA".
  56. * IPSOUS ENTIER POINTEUR SUR L'OBJET "BB".
  57. * IPVALP ENTIER POINTEUR SUR L'OBJET "VV".
  58. * LUPARM LOGIQUE TABLEAU DONT L'ELEMENT N."I" INDIQUE PAR "VRAI"
  59. * OU "FAUX" SI LE PARAMETRE DE CALCUL NUMEROTE "I"
  60. * A DEJA ETE DONNE.
  61. * NBITER ENTIER NOMBRE MAXIMUM D'ITERATIONS PERMISES.
  62. * NUMPAR ENTIER NUMERO COURANT DE PARAMETRE DE CALCUL.
  63. * PRECI1 REEL DP PRECISION ABSOLUE DE CONVERGENCE, OU BIEN "0".
  64. * PRECI2 REEL DP PRECISION RELATIVE DE CONVERGENCE, OU BIEN "0".
  65. *
  66. * AUTEUR, DATE DE CREATION:
  67. * -------------------------
  68. *
  69. * PASCAL MANIGOT 27 FEVRIER 1985
  70. *
  71. * LANGAGE:
  72. * --------
  73. *
  74. * FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS
  75. *
  76. ************************************************************************
  77. *
  78. IMPLICIT INTEGER(I-N)
  79.  
  80. -INC PPARAM
  81. -INC CCOPTIO
  82. *
  83. REAL*8 PRECI1,PRECI2,XMINIM
  84. *
  85. PARAMETER (NBMOTS = 3)
  86. PARAMETER (NBPARM = 2)
  87. *
  88. LOGICAL LUPARM(NBPARM)
  89. *
  90. CHARACTER*4 LISMOT(NBMOTS)
  91. *
  92. DATA LISMOT/'ITER','ABSO','RELA'/
  93. *
  94. * -- LECTURE DES PARAMETRES DE CALCUL --
  95. *
  96. DO 100 IB100=1,NBPARM
  97. LUPARM(IB100) = .FALSE.
  98. 100 CONTINUE
  99. * END DO
  100. *
  101. DO 200 IB200=1,NBPARM
  102. *
  103. ICODE = 0
  104. NBMOT = NBMOTS
  105. CALL LIRMOT (LISMOT,NBMOT,NUMLIS,ICODE)
  106. IF (NUMLIS.EQ.0) GO TO 200
  107. *
  108. IF (NUMLIS .GT. 2) THEN
  109. NUMPAR = NUMLIS - 1
  110. ELSE
  111. NUMPAR = NUMLIS
  112. END IF
  113. *
  114. IF (LUPARM(NUMPAR)) THEN
  115. NUMERR = 202
  116. CALL ERREUR (NUMERR)
  117. RETURN
  118. END IF
  119. LUPARM(NUMPAR) = .TRUE.
  120. *
  121. IF (NUMLIS .EQ. 1) THEN
  122. ICODE = 1
  123. MINIME = 1
  124. * LECTURE D'UN 'ENTIER' POSITIF:
  125. CALL LIRE03 (MINIME,NBITER,ICODE,IRETOU)
  126. IF (IERR .NE. 0) RETURN
  127. ELSE IF (NUMLIS .EQ. 2) THEN
  128. ICODE = 1
  129. XMINIM = 0.D0
  130. * LECTURE D'UN 'FLOTTANT' POSITIF:
  131. CALL LIRE04 (XMINIM,PRECI1,0,ICODE,IRETOU)
  132. IF (IERR .NE. 0) RETURN
  133. PRECI2 = 0.D0
  134. ELSE IF (NUMLIS .EQ. 3) THEN
  135. ICODE = 1
  136. XMINIM = 0.D0
  137. * LECTURE D'UN 'FLOTTANT' POSITIF:
  138. CALL LIRE04 (XMINIM,PRECI2,0,ICODE,IRETOU)
  139. IF (IERR .NE. 0) RETURN
  140. PRECI1 = 0.D0
  141. END IF
  142. *
  143. 200 CONTINUE
  144. * END DO
  145. *
  146. * RQ: ON NE TESTE PAS SI TOUS LES PARAMETRES NECESSAIRES ONT ETE
  147. * LUS. "VALPR1" DOIT CONTENIR DES TESTS ET DES VALEURS DE
  148. * REMPLACEMENT.
  149. *
  150. * -- LECTURE DE LA MATRICE TRIDIAGONALE NON SYMETRIQUE --
  151. *
  152. * LECTURE DES TERMES DIAGONAUX:
  153. ICODE = 1
  154. CALL LIROBJ ('LISTREEL',IPDIAG,ICODE,IRETOU)
  155. IF (IERR .NE. 0) RETURN
  156. *
  157. * LECTURE DES TERMES SOUS-DIAGONAUX:
  158. ICODE = 1
  159. CALL LIROBJ ('LISTREEL',IPSOUS,ICODE,IRETOU)
  160. IF (IERR .NE. 0) RETURN
  161. *
  162. * -- CALCUL DES VALEURS PROPRES --
  163. *
  164. CALL VALPR1 (IPDIAG,IPSOUS,NBITER,PRECI1,PRECI2, IPVALP)
  165. IF (IERR .NE. 0) RETURN
  166. *
  167. CALL ECROBJ ('LISTREEL',IPVALP)
  168. *
  169. END
  170.  
  171.  

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