Télécharger devso2.eso

Retour à la liste

Numérotation des lignes :

  1. C DEVSO2 SOURCE BP208322 18/01/30 21:15:14 9719
  2. SUBROUTINE DEVSO2(ITRES)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Op{rateur DYNE : algorithme de Fu - de Vogelaere *
  8. * ________________________________________________ *
  9. * *
  10. * Remplissage des CHPOINTs/LISTREELS resultats. *
  11. * Sauvegarde des variables necessaires a une reprise de calcul *
  12. * *
  13. * Parametres: *
  14. * *
  15. * es ITRES Segment de sauvegarde des resultats *
  16. * *
  17. * Auteur, date de creation: *
  18. * *
  19. * Denis ROBERT-MOUGIN, le 1er juin 1989. *
  20. * *
  21. *--------------------------------------------------------------------*
  22. -INC CCOPTIO
  23. -INC SMCOORD
  24. -INC SMCHPOI
  25. -INC SMLREEL
  26. *
  27. SEGMENT,MTRES
  28. REAL*8 XRES(NRES,NCRES,NPRES),XREP(NREP,NCRES)
  29. REAL*8 XRESLA(NLSA,NPRES,NVALA),XRESLB(NLSB,NPRES,NVALB)
  30. REAL*8 XMREP(NLIAB,4,IDIMB)
  31. INTEGER ICHRES(NVES),IPORES(NRESPO,NPRES),IPOREP(NREP)
  32. INTEGER ILIRES(NRESLI,NCRES)
  33. INTEGER IPOLA(NLSA),INULA(NLSA),IPLRLA(NLSA,NVALA)
  34. INTEGER IPOLB(NLSB),INULB(NLSB),IPLRLB(NLSB,NVALB)
  35. INTEGER ILIREA(NLSA,NTVAR),ILIREB(NLSB,NTVAR)
  36. INTEGER ILIRNA(NLSA,NTVAR),ILIRNB(NLSB,NTVAR)
  37. INTEGER IPOLR(1),IMREP(NLIAB,2),IPPREP(NLIAB,4)
  38. INTEGER ILPOLA(NLIAA,2)
  39. ENDSEGMENT
  40. *
  41. MTRES = ITRES
  42. NRES = XRES(/1)
  43. NREP = XREP(/1)
  44. NCRES = XRES(/2)
  45. NPRES = XRES(/3)
  46. NLIAB = XMREP(/1)
  47. IDIMB = XMREP(/3)
  48. *
  49. * Boucle sur les variables demandees, pour tous les pas
  50. * de sortie:
  51. *
  52. IRE2 = 0
  53. IRE2PO = 0
  54. IRE2LI = 0
  55. DO 10 IRES=1,8
  56. c -- cas pas de sortie --
  57. IF (ICHRES(IRES).EQ.0) GOTO 10
  58. IRE2 = IRE2 + 1
  59. c -- cas CHPOINT --
  60. IF(ICHRES(IRES).EQ.1) THEN
  61. IRE2PO = IRE2PO + 1
  62. DO 20 IPAS=1,NPRES
  63. MCHPOI = IPORES(IRE2PO,IPAS)
  64. NSOUPO = IPCHP(/1)
  65. DO 30 ISOUPO=1,NSOUPO
  66. MSOUPO = IPCHP(ISOUPO)
  67. MPOVAL = IPOVAL
  68. N1 = VPOCHA(/1)
  69. NC = VPOCHA(/2)
  70. INCO = 0
  71. DO 40 J=1,N1
  72. DO 50 I=1,NC
  73. INCO = INCO + 1
  74. VPOCHA(J,I) = XRES(IRE2,INCO,IPAS)
  75. 50 CONTINUE
  76. 40 CONTINUE
  77. SEGDES,MPOVAL,MSOUPO
  78. 30 CONTINUE
  79. SEGDES,MCHPOI
  80. 20 CONTINUE
  81. c -- cas LISTREEL --
  82. ELSEIF(ICHRES(IRES).EQ.2) THEN
  83. IRE2LI = IRE2LI + 1
  84. DO 21 INCO=1,NCRES
  85. JG=NPRES
  86. SEGINI,MLREEL
  87. KLREEL = MLREEL
  88. ILIRES(IRE2LI,INCO) = KLREEL
  89. DO IPAS=1,NPRES
  90. PROG(IPAS)=XRES(IRE2,INCO,IPAS)
  91. ENDDO
  92. SEGDES,MLREEL
  93. 21 CONTINUE
  94. ENDIF
  95. 10 CONTINUE
  96. *
  97. * Cas des CHPOINTs destines a la reprise de calcul:
  98. *
  99. DO 100 IREP=1,NREP
  100. MCHPOI = IPOREP(IREP)
  101. NSOUPO = IPCHP(/1)
  102. DO 110 ISOUPO=1,NSOUPO
  103. MSOUPO = IPCHP(ISOUPO)
  104. MPOVAL = IPOVAL
  105. N1 = VPOCHA(/1)
  106. NC = VPOCHA(/2)
  107. INCO = 0
  108. DO 120 J=1,N1
  109. DO 130 I=1,NC
  110. INCO = INCO + 1
  111. VPOCHA(J,I) = XREP(IREP,INCO)
  112. 130 CONTINUE
  113. * end do
  114. 120 CONTINUE
  115. * end do
  116. SEGDES,MPOVAL,MSOUPO
  117. 110 CONTINUE
  118. * end do
  119. SEGDES,MCHPOI
  120. 100 CONTINUE
  121. * end do
  122. *
  123. * Cas des variables de liaison necessaires a la reprise de calcul
  124. *
  125. IF (NLIAB.NE.0) THEN
  126. IDIM1 = IDIM + 1
  127. DO 200 I = 1,NLIAB
  128. ITYP = IMREP(I,1)
  129. IF (ITYP.EQ.3 .OR. ITYP.EQ.4 .OR. ITYP.EQ.5 .OR.
  130. & ITYP.EQ.6 .OR.
  131. & ITYP.EQ.13 .or. ityp.eq.-13 .or. ityp.eq.113
  132. & .OR. ITYP.EQ.14 .OR. ITYP.EQ.23 .OR.
  133. & ITYP.EQ.24 .OR. ITYP.EQ.33 .OR. ITYP.EQ.34) THEN
  134. DO 210 II = 1,3
  135. NUMPO = IPPREP(I,II)
  136. XCOOR(NUMPO * IDIM1) = 0.D0
  137. DO 210 ID = 1,IDIM
  138. XCOOR((NUMPO - 1) * IDIM1 + ID) = XMREP(I,II,ID)
  139. 210 CONTINUE
  140. * end do
  141. ELSE IF (ITYP.EQ.7) THEN
  142. DO 220 II = 1,3
  143. NUMPO = IPPREP(I,II)
  144. XCOOR(NUMPO * IDIM1) = 0.D0
  145. XCOOR((NUMPO - 1) * IDIM1 + 1) = XMREP(I,II,1)
  146. 220 CONTINUE
  147. * end do
  148. ELSE IF (ITYP.EQ.25 .OR. ITYP.EQ.26) THEN
  149. DO 230 II = 1,4
  150. NUMPO = IPPREP(I,II)
  151. XCOOR(NUMPO * IDIM1) = 0.D0
  152. DO 230 ID = 1,IDIM
  153. XCOOR((NUMPO - 1) * IDIM1 + ID) = XMREP(I,II,ID)
  154. 230 CONTINUE
  155. * end do
  156.  
  157. ENDIF
  158. 200 CONTINUE
  159. * end do
  160. ENDIF
  161. *
  162. END
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  

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