Télécharger fusolu.eso

Retour à la liste

Numérotation des lignes :

fusolu
  1. C FUSOLU SOURCE CHAT 05/01/13 00:13:02 5004
  2. SUBROUTINE FUSOLU(MSO1,MSO2,IRET)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C=======================================================================
  6. C REUNION DE 2 OBJETS SOLUTION DE MEME TYPE. OPTION VALABLE ACTUELLEMENT
  7. C POUR LES MODES ET LES SOLUTIONS STATIQUES ET LES PSEUDO MODES.
  8. C LES CHPOINTS DE DEPLACEMENT (QUAND IL Y EN A) DOIVENT S APPUYER SUR
  9. C LES MEMES POINTS MUNIS DES MEMES COMPOSANTES. LA VERIF EST FAITE
  10. C DANS COCHPO
  11. C SI 2 INDICES SONT IDENTIQUES ON N EN CONSERVE QU UN.
  12. C
  13. C ECRIT PAR FARVACQUE
  14. C APPELE PAR PRFUSE
  15. C APPELLE COCHPO,ERREUR(82,83)
  16. C=======================================================================
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. -INC SMSOLUT
  21. -INC SMELEME
  22. SEGMENT ITRAV(NNN2)
  23. C
  24. SEGACT MSO1,MSO2
  25. IF(MSO1.ITYSOL.NE.MSO2.ITYSOL) GOTO 1000
  26. NIPO=MSO1.MSOLIS(/1)
  27. IF(MSO1.ITYSOL.NE.'MODE ') GOTO 1
  28. ITY=1
  29. GOTO 20
  30. 1 IF(MSO1.ITYSOL.NE.'SOLUSTAT'.AND.
  31. C MSO1.ITYSOL.NE.'PSEUMODE') GOTO 2
  32. ITY=2
  33. GOTO 20
  34. 2 CONTINUE
  35. 1001 CONTINUE
  36. MOTERR(1:8)=MSO1.ITYSOL
  37. CALL ERREUR(82)
  38. GOTO 5000
  39. C OPERATION NON PROGRAMMEE POUR CE TYPE DE SOLUTION
  40. C
  41. 20 CONTINUE
  42. SEGINI MSOLUT
  43. IRET=MSOLUT
  44. ITYSOL=MSO1.ITYSOL
  45. DO 40 I=1,NIPO
  46. MSOLIS(I)=0
  47. MSOLIT(I)=0
  48. 40 CONTINUE
  49. GOTO (21,21),ITY
  50. C *********** OPERATION SUR LES MODES ET LES SOLUSTAT ****************
  51. 21 CONTINUE
  52. MSOLEN=MSO1.MSOLIS(4)
  53. SEGACT MSOLEN
  54. MMODE=ISOLEN(1)
  55. SEGACT MMODE
  56. IP1=IMMODD(3)
  57. SEGDES MMODE,MSOLEN
  58. MSOLEN=MSO2.MSOLIS(4)
  59. SEGACT MSOLEN
  60. MMODE=ISOLEN(1)
  61. SEGACT MMODE
  62. IP2=IMMODD(3)
  63. SEGDES MMODE,MSOLEN
  64. IF(IP2.NE.IP1) GOTO 1000
  65. C IF(IP2.EQ.3) GOTO 1001
  66. IPT1=MSO1.MSOLIS(3)
  67. IPT2=MSO2.MSOLIS(3)
  68. SEGACT IPT1,IPT2
  69. NNN1=IPT1.NUM(/2)
  70. NNN2=IPT2.NUM(/2)
  71. SEGINI ITRAV
  72. IMEL=0
  73. DO 22 I2=1,NNN2
  74. IPOIN=IPT2.NUM(1,I2)
  75. DO 23 I1=1,NNN1
  76. IF(IPOIN.NE.IPT1.NUM(1,I2)) GOTO 23
  77. GOTO 22
  78. 23 CONTINUE
  79. IMEL=IMEL+1
  80. ITRAV(IMEL)=I2
  81. 22 CONTINUE
  82. C
  83. NBSOUS=0
  84. NBREF=0
  85. NBNN=1
  86. NBELEM=NNN1+IMEL
  87. SEGINI MELEME
  88. ITYPEL=1
  89. DO 24 I1=1,NNN1
  90. NUM(1,I1)=IPT1.NUM(1,I1)
  91. 24 CONTINUE
  92. DO 25 I1=1,IMEL
  93. NUM(1,NNN1+I1)=IPT2.NUM(1,ITRAV(I1))
  94. 25 CONTINUE
  95. SEGDES IPT1,IPT2,MELEME
  96. MSOLIS(3)=MELEME
  97. N=NBELEM
  98. GOTO 200
  99. C
  100. C ***** POUR TOUS LES TYPES DE SOLUTION *************
  101. C
  102. 200 CONTINUE
  103. DO 127 I=4,NIPO
  104. MSOLE1=MSO1.MSOLIS(I)
  105. MSOLE2=MSO2.MSOLIS(I)
  106. IF(MSOLE1.EQ.0.AND.MSOLE2.EQ.0) GOTO 127
  107. SEGINI MSOLEN
  108. IBO=MSOLEN
  109. IF(MSOLE1.EQ.0)GOTO 110
  110. SEGACT MSOLE1
  111. DO 129 I1=1,NNN1
  112. ISOLEN(I1)=MSOLE1.ISOLEN(I1)
  113. 129 CONTINUE
  114. IF(MSOLE2.EQ.0) GOTO 111
  115. C
  116. C **** ON VERIFIE QUE LES CHPOINTS CONTENUS DANS LES MSOLEN ONT BIEN
  117. C **** DES FORMES IDENTIQUES
  118. C
  119. IF(MSO1.MSOLIT(I).NE.2) GOTO 6
  120. DO 60 I1=1,NNN1
  121. IF(MSOLE1.ISOLEN(I1).EQ.0) GOTO 60
  122. II1=MSOLE1.ISOLEN(I1)
  123. GOTO 61
  124. 60 CONTINUE
  125. 61 CONTINUE
  126. SEGACT MSOLE2
  127. DO 62 I2=1,NNN2
  128. IF(MSOLE2.ISOLEN(I2).EQ.0) GOTO 62
  129. II2=MSOLE2.ISOLEN(I2)
  130. GOTO 63
  131. 62 CONTINUE
  132. 63 ITAI=MSOLE2
  133. CALL COCHPO(II1,II2,ITAI,ITAF)
  134. IF(IERR.NE.0) GOTO 5000
  135. MSOLEN=IBO
  136. MSOLE2=ITAF
  137. C
  138. 6 CONTINUE
  139. SEGACT MSOLEN*MOD
  140. SEGACT MSOLE2
  141. DO 126 I2=1,IMEL
  142. ISOLEN(NNN1+I2)=MSOLE2.ISOLEN(ITRAV(I2))
  143. 126 CONTINUE
  144. GOTO 132
  145. C
  146. 111 CONTINUE
  147. DO 128 I2=1,IMEL
  148. ISOLEN(NNN1+I2)=0
  149. 128 CONTINUE
  150. GOTO 132
  151. C
  152. 110 CONTINUE
  153. SEGACT MSOLE2
  154. DO 130 I1=1,NNN1
  155. ISOLEN(I1)=0
  156. 130 CONTINUE
  157. DO 131 I2=1,IMEL
  158. ISOLEN(NNN1+I2)=MSOLE2.ISOLEN(ITRAV(I2))
  159. 131 CONTINUE
  160. 132 MSOLIS(I)=MSOLEN
  161. SEGDES MSOLE1
  162. SEGDES MSOLE2
  163. SEGDES MSOLEN
  164. IF(MSO1.MSOLIT(I).NE.0) THEN
  165. MSOLIT(I)=MSO1.MSOLIT(I)
  166. ELSE
  167. MSOLIT(I)=MSO2.MSOLIT(I)
  168. ENDIF
  169. 127 CONTINUE
  170. C
  171. SEGSUP ITRAV
  172. SEGDES MSOLUT
  173. GOTO 5000
  174. 1000 CONTINUE
  175. MOTERR(1:8)='SOLUTION'
  176. CALL ERREUR(83)
  177. C LES 2 OBJETS DOIVENT ETRE DE MEME TYPE
  178. 5000 CONTINUE
  179. SEGDES MSO1,MSO2
  180. RETURN
  181. END
  182.  
  183.  
  184.  

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