Télécharger devso2.eso

Retour à la liste

Numérotation des lignes :

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

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