Télécharger react1.eso

Retour à la liste

Numérotation des lignes :

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

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