Télécharger itinv1.eso

Retour à la liste

Numérotation des lignes :

itinv1
  1. C ITINV1 SOURCE PV 22/04/15 13:20:09 11344
  2. SUBROUTINE ITINV1 (IPA,IPB)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * I T I N V 1
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * 1) EFFECTUER (EVENTUELLEMENT) UNE ACCELERATION DE CONVERGENCE,
  14. * 2) EFFECTUER UNE ITERATION: |A|.X(I+1) = |B|.X(I), |A| ET |B|
  15. * ETANT 2 'RIGIDITE' ET X(J) LE 'CHPOINT' DE L'ITERATION "J".
  16. * 3) CALCULER DES ELEMENTS DE COMPARAISON ENTRE X(I) ET X(I+1).
  17. *
  18. * MODE D'APPEL:
  19. * -------------
  20. *
  21. * CALL ITINV1 (IPA,IPB)
  22. *
  23. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  24. * -----------
  25. *
  26. * +DIFREL REEL SP (S) "DIFFERENCE RELATIVE".
  27. * EGAL A ABS(DIFMAX/VALMAX).
  28. * +IACCEL ENTIER (E) NOMBRE D'ITERATIONS CONSECUTIVES EFFECTUEES
  29. * SANS ACCELERATION DE CONVERGENCE.
  30. * (S) MEME DEFINITION. VALEUR INCREMENTEE OU
  31. * REMISE A 0.
  32. * IPA ENTIER (E) POINTEUR DE L'OBJET 'RIGIDITE' |A|.
  33. * IPB ENTIER (E) POINTEUR DE L'OBJET 'RIGIDITE' |B|.
  34. * +IPBX1 ENTIER (S) POINTEUR DU 'CHPOINT' PRODUIT DE |B| PAR
  35. * "X1".
  36. * +IPX0 ENTIER (S) POINTEUR DU 'CHPOINT' ITERE PRECEDANT "X1"
  37. * (FOURNI QUAND "IACCEL" VAUT "NUMAC - 1").
  38. * +IPX1 ENTIER (E) POINTEUR DU 'CHPOINT' ITERE "X1" D'INDICE
  39. * "NBITER".
  40. * (S) MEME DEFINITION, "NBITER" AYANT ETE
  41. * INCREMENTE.
  42. * +IPX2 ENTIER (E) POINTEUR DU 'CHPOINT' ITERE "X1".
  43. * (S) POINTEUR DU 'CHPOINT' ITERE SUIVANT "X1".
  44. * +NBITER ENTIER (E) NOMBRE D'ITERATIONS EFFECTUEES.
  45. * (S) MEME DEFINITION, VALEUR INCREMENTEE.
  46. * +NUMAC ENTIER (E) L'ACCELERATION DE CONVERGENCE A LIEU 1
  47. * FOIS TOUTES LES "NUMAC" ITERATIONS.
  48. *
  49. * + = PARAMETRE PASSE DANS LE COMMUN "CITINV".
  50. *
  51. * LEXIQUE: (ORDRE ALPHABETIQUE)
  52. * --------
  53. *
  54. * DIFMAX REEL DP DIFFERENCE MAXIMALE ENTRE LES VALEURS
  55. * CORRESPONDANTES DE DEUX 'CHPOINT' ITERES
  56. * CONSECUTIFS.
  57. * IPDIFF ENTIER POINTEUR SUR LA DIFFERENCE DES 'CHPOINT' DE
  58. * POINTEURS "IPX2" ET "IPX1".
  59. * VALMAX REEL DP VALEUR MAXIMALE DANS UN 'CHPOINT' ITERE.
  60. *
  61. * SOUS-PROGRAMMES APPELES:
  62. * ------------------------
  63. *
  64. * ACCEL1, COMBI2, DTCHPO, ANCHPO, MAXIM1, MUCPRI, NORMA1, RESOU1,
  65. * DTCHPM .
  66. *
  67. * AUTEUR, DATE DE CREATION:
  68. * -------------------------
  69. *
  70. * PASCAL MANIGOT 19 DECEMBRE 1984
  71. *
  72. * LANGAGE:
  73. * --------
  74. *
  75. * FORTRAN77
  76. *
  77. ************************************************************************
  78. *
  79.  
  80. -INC PPARAM
  81. -INC CCOPTIO
  82. -INC CCHAMP
  83. -INC SMRIGID
  84. -INC CCREEL
  85. SEGMENT IDEMEN(0)
  86. *
  87. CHARACTER*(LOCOMP) MOTCLE
  88. *
  89. COMMON/CITINV/ NBITER,IACCEL,NUMAC,IPX2,IPX0,IPX1,IPBX1,
  90. C IBBX1,IBBX2,ITPRO,DIFREL
  91. *
  92. PARAMETER (IPLACE = 0)
  93. PARAMETER (UN = 1.D0)
  94. PARAMETER (XMOIN1 = -1.D0)
  95. *
  96. *
  97. *
  98. xspetl = xspeti
  99. *
  100. * -- PREPARATION POUR LES SOUS-PROGRAMMES "MAXIM1" ET "NORMA1" --
  101. *
  102. * ON EXCLUT LES COMPOSANTES DE TYPE "LX":
  103. CALL MOTS1 (IPLMOT,MOTCLE)
  104. *
  105. NBITER = NBITER + 1
  106. IACCEL = IACCEL + 1
  107. *
  108. *
  109. IF (IACCEL .EQ. NUMAC) THEN
  110. *
  111. * HYP: "NUMAC" >= 3 (NON TESTE DANS LE SOUS-PROGRAMME)
  112. *
  113. IACCEL = 0
  114. * ACCELERATION DE CONVERGENCE:
  115. * CALL ACCEL1 (IPX0,IPX1,IPX2, IPOINT)
  116. CALL ACTIPO (1.D0,1,IPX0,IPX1,IPX2,0)
  117. IF (IERR .NE. 0) RETURN
  118. CALL LIROBJ('CHPOINT',IPOINT,1,IRRR)
  119. CALL DTCHPO (IPX0)
  120. CALL DTCHPO (IPX1)
  121. IF (IPOINT .NE. IPX2) CALL DTCHPO (IPX2)
  122. IPX1 = IPOINT
  123. CALL MUCPRI(IPX1,IPB,IBBX1)
  124. IF(IERR.NE.0) RETURN
  125. *
  126. ELSE
  127. *
  128. IF ( (IACCEL + 1) .EQ. NUMAC) THEN
  129. IPX0 = IPX1
  130. ELSE IF (NBITER .GT. 1) THEN
  131. CALL DTCHPO (IPX1)
  132. END IF
  133. IPX1 = IPX2
  134. *
  135. END IF
  136. *
  137. * -- RESOLUTION DE: A.X2 = B.X1 --
  138. *
  139. * MISE A ZERO DES TERMES EN PI POUR LES ELTS LIQUIDES
  140. *
  141. IPTBX1 = IBBX1
  142. CALL ANCHPO(IPTBX1,NOMDU(15),IBBX1)
  143. CALL DTCHPO(IPTBX1)
  144. *
  145. * determination symetrique ou non
  146. *
  147. INSYM=0
  148. MRIGID = IPA
  149. SEGACT,MRIGID
  150. NRG = IRIGEL(/1)
  151. NBR = IRIGEL(/2)
  152. IF(NORINC.GT.0 .AND. NORIND.GT.0) THEN
  153. INSYM = 1
  154. ENDIF
  155. IF (NRG.GE.7) THEN
  156. DO 9 IN = 1,NBR
  157. IANTI=IRIGEL(7,IN)
  158. IF(IANTI.GT.0) THEN
  159. INSYM = 1
  160. ENDIF
  161. 9 CONTINUE
  162. ENDIF
  163. SEGDES,MRIGID
  164. *
  165. SEGINI IDEMEN
  166. IDEMEN(**)=IBBX1
  167. NOID=0
  168. NOEN=1
  169. IF (INSYM.EQ.0) THEN
  170. CALL RESOU1 (IPA,IDEMEN,NOID,NOEN,xspetl,0,0)
  171. ELSE
  172. CALL LDMT (IPA,IDEMEN,NOID,NOEN,xspetl,0)
  173. ENDIF
  174. SEGACT IDEMEN
  175. IPX20=IDEMEN(1)
  176. SEGSUP IDEMEN
  177. IF (IERR .NE. 0) RETURN
  178. *
  179. * -- NORMALISATION A 1 DE "X2" --
  180. *
  181. CALL NORMA1 (IPX20,IPLMOT,MOTCLE, IPX2)
  182. IF (IERR .NE. 0) RETURN
  183. CALL DTCHPO (IPX20)
  184. IF (NBITER .GT. 1) THEN
  185. * ON TUE AUSSI LE SUPPORT DES POINTS CREE PAR MUCPRI
  186. * CALL DTCHPM (IPBX1)
  187. * CALL DTCHPM (IBBX1)
  188. END IF
  189. * PRODUIT RIGIDITE.CHPOINT:
  190. CALL MUCPRI (IPX2,IPB, IBBX2)
  191. IF (IERR .NE. 0) RETURN
  192. *
  193. *
  194. * -- CREATION DU MAXIMUM DE (X2-X1) --
  195. *
  196. CALL COMBI2 (IPX2,UN,IPX1,XMOIN1, IPDIFF)
  197. IF (IERR .NE. 0) RETURN
  198. CALL MAXIM1 (IPDIFF,IPLMOT,MOTCLE,IPLACE, DIFMAX)
  199. IF (IERR .NE. 0) RETURN
  200. CALL DTCHPO (IPDIFF)
  201. *
  202. * RQ: GRACE A L'APPEL A "NORMA1", "VALMAX" EST CONSTANT ET
  203. * EGAL A 1 --> (DIFMAX/VALMAX = DIFMAX)
  204. *
  205. DIFREL = ABS(DIFMAX)
  206. IF (NBITER.EQ.30.AND.ITPRO.EQ.1) THEN
  207. IF (IIMPI.EQ.2) WRITE(IOIMP,11111) NBITER,DIFREL
  208. 11111 FORMAT(/1X,'ITERATION',1X,I4,1X,'CRITERE DE CONVERGENCE',1X,E12.5)
  209. ENDIF
  210. *
  211. END
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  

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