Télécharger react1.eso

Retour à la liste

Numérotation des lignes :

react1
  1. C REACT1 SOURCE CB215821 25/04/23 21:15:36 12247
  2. SUBROUTINE REACT1(MRIGID,MCHPOI,MCHPO1)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. -INC SMRIGID
  6. -INC SMCOORD
  7. -INC SMELEME
  8. -INC SMCHPOI
  9.  
  10. -INC PPARAM
  11. -INC CCOPTIO
  12. CHARACTER*72 CTEXT
  13. SEGMENT IGARD(NNOL)
  14. C
  15. C ** ON VERIFIE QUE LE CHPOINT CONTIENT DES MULTIPLICATEURS
  16. C ** EN LEUR ABSENCE ON CREE UN CHPOINT VIDE
  17. C
  18. SEGACT MCHPOI
  19. NSOUPO = IPCHP(/1)
  20. * write(6,*) 'NSOUPO =',NSOUPO
  21. CTEXT = MOCHDE
  22. ITRUC = IFOPOI
  23. DO 500 K=1,IPCHP(/1)
  24. MSOUPO=IPCHP(K)
  25. SEGACT MSOUPO
  26. DO 501 J=1,NOCOMP(/2)
  27. IF(NOCOMP(J).EQ.'LX ') GO TO 502
  28. 501 CONTINUE
  29. 500 CONTINUE
  30. GO TO 288
  31. *
  32. 502 CONTINUE
  33. C DANS UN CHPOINT IL NE PEUT Y AVOIR Q'UNE SEULE PARTIE QUI CONTIENT
  34. C DES MULTIPLICATEURS , ON CREE UN CHPOIN LE CONTENANT
  35. NSOUPO=1
  36. NAT=1
  37. SEGINI MCHPOI
  38. JATTRI(1)=2
  39. IPCHP(1)=MSOUPO
  40. C
  41. C ** TERMINE POUR LE CHPOINT ON PASSE A LA RIGIDITE . ON VEUT
  42. C ** MAINTENANT FABRIQUER UN OBJET RIGIDITE CONTENANT UNIQUEMENT
  43. C ** LES MATRICES DE BLOQUAGE.
  44. C
  45. NRIGEL=0
  46. SEGACT MRIGID
  47. NNR=IRIGEL(/2)
  48. C
  49. C ** BOUCLE 1 SUR LES SOUS OBJETS RIGIDITES POUR COMPTER COMBIEN
  50. C ** DE MATRICES DE BLOQUAGES
  51. C
  52. DO 1 I=1,NNR
  53. DESCR= IRIGEL(3,I)
  54. SEGACT DESCR
  55. NINC=LISINC(/2)
  56. DO 2 J = 1,NINC
  57. IF(LISINC(J).EQ.'LX ') GO TO 3
  58. 2 CONTINUE
  59. SEGDES DESCR
  60. GO TO 1
  61. 3 CONTINUE
  62. NRIGEL=NRIGEL+1
  63. SEGDES DESCR
  64. 1 CONTINUE
  65. C
  66. C ** INITIALISATION DE L'OBJET RIGIDITE
  67. C
  68. IF(NRIGEL.NE.0) GO TO 4
  69. C
  70. C SI RIGIDITE VIDE , ON CREE UN CHPOINT VIDE
  71. C
  72. SEGSUP MCHPOI
  73. SEGDES MRIGID
  74. 288 NSOUPO=0
  75. NAT=1
  76. SEGINI MCHPO1
  77. MCHPO1.JATTRI(1)=2
  78. MCHPO1.IFOPOI=ITRUC
  79. MCHPO1.MOCHDE=CTEXT
  80. MCHPO1.MTYPOI=' '
  81. RETURN
  82. C
  83. 4 CONTINUE
  84. IA=1
  85. NRIGE= IRIGEL(/1)
  86. SEGINI RI1
  87. DO 10 I=1,NNR
  88. DESCR= IRIGEL(3,I)
  89. SEGACT DESCR
  90. NINC=LISINC(/2)
  91. DO 20 J = 1,NINC
  92. IF(LISINC(J).EQ.'LX ') GO TO 30
  93. 20 CONTINUE
  94. SEGDES DESCR
  95. GO TO 10
  96. 30 CONTINUE
  97. DO 31 L=1,NRIGE
  98. RI1.IRIGEL(L,IA)=IRIGEL(L,I)
  99. 31 CONTINUE
  100. RI1.COERIG(IA)=-COERIG(I)
  101. IA=IA+1
  102. SEGDES DESCR
  103. 10 CONTINUE
  104. SEGDES MRIGID,RI1
  105. CALL MUCPRI(MCHPOI,RI1,IRET)
  106. IF (IERR.NE.0) return
  107. C
  108. C ** IL FAUT ENLEVER DU CHPOINT LA PARTIE CONCERNANT FLX
  109. C
  110. C ** ON VERIFIE AU PREALABLE QU'IL N'Y A PAS DE MULTIPLICATEURS
  111. C ** DE MULTIPLICATEUR
  112. C
  113. SEGACT RI1
  114. INON=1
  115. DO 40 I=1,RI1.IRIGEL(/2)
  116. DESCR=RI1.IRIGEL(3,I)
  117. SEGACT DESCR
  118. DO 41 J=1,LISINC(/2)
  119. IF( LISINC(J).EQ.'LX ') THEN
  120. INON=0
  121. SEGDES DESCR
  122. GO TO 45
  123. ENDIF
  124. 41 CONTINUE
  125. SEGDES DESCR
  126. 40 CONTINUE
  127. 45 CONTINUE
  128. MCHPOI=IRET
  129. SEGACT MCHPOI
  130. NSOUPO=IPCHP(/1) -INON
  131. NAT=1
  132. SEGINI MCHPO1
  133. MCHPO1.IFOPOI=ITRUC
  134. MCHPO1.MOCHDE=CTEXT
  135. MCHPO1.MTYPOI=' '
  136. MCHPO1.JATTRI(1)=2
  137. IA=1
  138. ** call ecchpo(mchpoi,1)
  139. DO 60 I=1,NSOUPO+INON
  140. MSOUPO=IPCHP(I)
  141. SEGACT MSOUPO
  142. IF(NOCOMP(1).EQ.'FLX ') THEN
  143. IF(INON.EQ.0) THEN
  144. MELEME=IGEOC
  145. SEGACT MELEME
  146. NNOL=NUM(/2)
  147. SEGINI IGARD
  148. DO 61 J=1,RI1.IRIGEL(/2)
  149. DESCR= RI1.IRIGEL(3,J)
  150. SEGACT DESCR
  151. DO 62 K=3,LISINC(/2)
  152. IF(LISINC(K).EQ.'LX ') THEN
  153. IPT1=RI1.IRIGEL(1,J)
  154. SEGACT IPT1
  155. DO 63 L=1,IPT1.NUM(/2)
  156. IP=IPT1.NUM(NOELEP(K),L)
  157. DO 64 M=1,NNOL
  158. IF( NUM(1,M).EQ.IP) THEN
  159. IGARD(M)=1
  160. GO TO 63
  161. ENDIF
  162. 64 CONTINUE
  163. 63 CONTINUE
  164. ENDIF
  165. 62 CONTINUE
  166. SEGDES DESCR
  167. 61 CONTINUE
  168. NBELEM=0
  169. DO 65 J=1,NNOL
  170. NBELEM=NBELEM+IGARD(J)
  171. 65 CONTINUE
  172. NBNN=1
  173. NBSOUS=0
  174. NBREF=0
  175. SEGINI IPT2
  176. IGEOC=IPT2
  177. IB=1
  178. N=NBELEM
  179. NC=1
  180. SEGINI MPOVA1
  181. MPOVAL=IPOVAL
  182. SEGACT MPOVAL
  183. DO 66 J=1,NNOL
  184. IF(IGARD(J).EQ.0) GO TO 66
  185. IPT2.NUM(1,IB)=NUM(1,J)
  186. MPOVA1.VPOCHA(IB,1)=VPOCHA(J,1)
  187. IB=IB+1
  188. 66 CONTINUE
  189. SEGSUP MPOVAL
  190. IPOVAL=MPOVA1
  191. call crech1(ipt2,1)
  192. IF (IERR.NE.0) return
  193. MCHPO1.IPCHP(IA)=MSOUPO
  194. IA=IA+1
  195. SEGSUP IGARD
  196. ELSE
  197. MELEME=IGEOC
  198. MPOVAL=IPOVAL
  199. SEGSUP MPOVAL,MSOUPO
  200. ENDIF
  201. ELSE
  202. MCHPO1.IPCHP(IA)=MSOUPO
  203. IA=IA+1
  204. ENDIF
  205. 60 CONTINUE
  206. NSOUPO=IA-1
  207. * write(6,*) 'MCHPO1, NSOUPO=',MCHPO1,NSOUPO
  208. IF (NSOUPO.GT.0) THEN
  209. SEGADJ MCHPO1
  210. SEGSUP MCHPOI,RI1
  211. ELSE
  212. GOTO 288
  213. ENDIF
  214.  
  215. END
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  

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