Télécharger muposc.eso

Retour à la liste

Numérotation des lignes :

muposc
  1. C MUPOSC SOURCE CB215821 20/11/25 13:34:45 10792
  2. SUBROUTINE MUPOSC(IPOI1,IPOI2,IEPS,IRET)
  3. C=======================================================================
  4. C
  5. C ENTREE
  6. C IPOI1=CHPOINT
  7. C IPOI2=CHPOINT
  8. C IEPS =1 MULTIPLICATION -1 DIVISION
  9. C SORTIES
  10. C IRET =POINTEUR SUR CHPOINT RESULTANT
  11. C =0 SINON (UN MESSAGE D ERREUR EST ALORS IMPRIME )
  12. C
  13. C REGLE DE MULTIPLICATION : TOUT POINT AYANT DANS UN CHPOINT UNE
  14. C COMPOSANTE UNIQUE DE NOM "SCAL" VOIT TOUTES LES VALEURS DES
  15. C COMPOSANTES DE L'AUTRE CHPOINT MULTIPLIER PAR LA VALEUR SCALAIRE.
  16. C
  17. C LE CHPOINT RESULTAT NE COMPORTE QUE LES POINTS CITES CI-DESSUS.
  18. C
  19. C=======================================================================
  20. IMPLICIT INTEGER(I-N)
  21. IMPLICIT REAL*8(A-H,O-Z)
  22. -INC SMCHPOI
  23. -INC SMCOORD
  24.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC SMELEME
  28. -INC TMTRAV
  29. SEGMENT ICPR(nbpts)
  30. SEGMENT ICOR(nbpts)
  31. SEGMENT ICOM(0)
  32. SEGMENT SCOM
  33. CHARACTER*(LOCOMP) COM(0)
  34. ENDSEGMENT
  35. SEGMENT NOHA(0)
  36.  
  37.  
  38. CHARACTER*4 MOTCLE(3),MONATU(1)
  39. DATA MOTCLE/'INDE','DIFF','DISC'/
  40. DATA MONATU/'NATU'/
  41.  
  42.  
  43.  
  44. IRET=0
  45. MCHPO1=IPOI1
  46. MCHPO2=IPOI2
  47. MCHPOI=MCHPO1
  48. IPASS=0
  49. IA=0
  50. SEGINI ICPR ,SCOM ,NOHA
  51. C
  52. C ON FABRIQUE MTRAV A LA DIMENSION MAX POUR CELA FABRICATION DE
  53. C ICPR QUI DONNE NNNOE PUIS DE ICOM QUI SERA NNIN
  54. 1000 CONTINUE
  55. SEGACT MCHPOI
  56. NSOUP =IPCHP(/1)
  57.  
  58. DO 1 I = 1,NSOUP
  59. MSOUPO=IPCHP(I)
  60. SEGACT MSOUPO
  61. IF(I.EQ.1.AND.IPASS.EQ.0) THEN
  62. COM(**)=NOCOMP(1)
  63. NOHA(**)=NOHARM(1)
  64. ENDIF
  65.  
  66. DO 2 J=1,NOCOMP(/2)
  67. NNIN=COM(/2)
  68. DO 3 K=1,NNIN
  69. IF(NOCOMP(J).EQ.COM(K)) GO TO 2
  70. 3 CONTINUE
  71.  
  72. COM(**) =NOCOMP(J)
  73. NOHA(**)=NOHARM(J)
  74. 2 CONTINUE
  75.  
  76. MELEME=IGEOC
  77. SEGACT MELEME
  78.  
  79. DO 4 J=1,NUM(/2)
  80. IF(ICPR(NUM(1,J)).NE.0) GO TO 4
  81. IA=IA+1
  82. ICPR(NUM(1,J))=IA
  83. 4 CONTINUE
  84. 1 CONTINUE
  85.  
  86. IF(IIMPI.NE.0) WRITE(IOIMP,100) IA
  87.  
  88. 100 FORMAT(' NOMBRE DE NOEUDS CONCERNES PAR LES 2 CHPOINTS',I5)
  89. IF(IPASS.EQ.0) THEN
  90. IPASS=1
  91. MCHPOI=MCHPO2
  92. GO TO 1000
  93. ENDIF
  94. NNNOE=IA
  95. NNIN=COM(/2)
  96. SEGINI MTRAV
  97. C
  98. C ON REMPLIT INCO ET IGEO
  99. C
  100. DO 5 I=1,NNIN
  101. NHAR(I)=NOHA(I)
  102. INCO(I)=COM(I)
  103. 5 CONTINUE
  104.  
  105. SEGSUP SCOM,NOHA
  106. MCHPOI=MCHPO1
  107. IPASS=0
  108.  
  109. 1001 CONTINUE
  110. SEGACT MCHPOI
  111. NSOUP = IPCHP(/1)
  112.  
  113. DO 6 I=1,NSOUP
  114. MSOUPO=IPCHP(I)
  115. SEGACT MSOUPO
  116. MELEME=IGEOC
  117. SEGACT MELEME
  118.  
  119. DO 7 J = 1,NUM(/2)
  120. IA=ICPR(NUM(1,J))
  121. IGEO(IA)=NUM(1,J)
  122. 7 CONTINUE
  123. 6 CONTINUE
  124.  
  125. IF(IPASS.EQ.0) THEN
  126. IPASS=1
  127. MCHPOI=MCHPO2
  128. GO TO 1001
  129. ENDIF
  130. C
  131. C ON EFFECTUE LE TRAVAIL. ON ISOLE D'ABORD LA PARTIE CONCERNANT
  132. C UNIQUEMENT UNE COMPOSANTE DE NOM "SCAL".
  133. C
  134. MCHPOI=MCHPO1
  135. MCHPO3=MCHPO2
  136. IPASS=0
  137.  
  138. 1003 CONTINUE
  139. SEGACT MCHPO3
  140.  
  141. DO 10 I=1,MCHPO3.IPCHP(/1)
  142. MSOUP3=MCHPO3.IPCHP(I)
  143. SEGACT MSOUP3
  144. IF(MSOUP3.NOCOMP(/2).NE.1.OR.MSOUP3.NOCOMP(1).NE.'SCAL') THEN
  145. GO TO 10
  146. ENDIF
  147. C ON FABRIQUE UNE CORRESPONDANCE ICOR(I)=J VEUT DIRE QUE LE NOEUD I EST
  148. C EN J EME POSITION DANS CE MELEME
  149. C
  150. SEGINI ICOR
  151. IPT3=MSOUP3.IGEOC
  152. SEGACT IPT3
  153. DO 11 J=1,IPT3.NUM(/2)
  154. ICOR(IPT3.NUM(1,J))=J
  155. 11 CONTINUE
  156. MPOVA3=MSOUP3.IPOVAL
  157. SEGACT MPOVA3
  158. SEGACT MCHPOI
  159. DO 12 J=1,IPCHP(/1)
  160. MSOUPO=IPCHP(J)
  161. SEGACT MSOUPO
  162. IF(IPASS.NE.0) THEN
  163. C TEST POUR NE PAS REFAIRE LA MULTIPLICATION SCAL PAR SCAL
  164. IF(NOCOMP(/2).EQ.1.AND.NOCOMP(1).EQ.'SCAL') THEN
  165. GO TO 12
  166. ENDIF
  167. ENDIF
  168. SEGINI ICOM
  169. DO 13 K=1,NOCOMP(/2)
  170. DO 13 L=1,NNIN
  171. IF(NOCOMP(K).EQ.INCO(L)) ICOM(**) = L
  172. 13 CONTINUE
  173. MELEME=IGEOC
  174. MPOVAL=IPOVAL
  175. SEGACT MELEME,MPOVAL
  176. DO 14 K=1,NUM(/2)
  177. IC=ICOR(NUM(1,K))
  178. IF(IC.EQ.0) GO TO 14
  179. IB=ICPR(NUM(1,K))
  180. DO 15 L=1,NOCOMP(/2)
  181. IE=ICOM(L)
  182. IBIN(IE,IB)=1
  183. IF(IEPS.EQ.1)BB(IE,IB)=BB(IE,IB)+MPOVA3.VPOCHA(IC,1)*VPOCHA(K,L)
  184. IF(IEPS.EQ.-1)BB(IE,IB)=BB(IE,IB)+VPOCHA(K,L)/MPOVA3.VPOCHA(IC,1)
  185. 15 CONTINUE
  186. 14 CONTINUE
  187. SEGSUP ICOM
  188. 12 CONTINUE
  189. SEGSUP ICOR
  190. 10 CONTINUE
  191. IF(IPASS.EQ.0) THEN
  192. MCHPOI=MCHPO2
  193. MCHPO3=MCHPO1
  194. IPASS=1
  195. GO TO 1003
  196. ENDIF
  197. KTRAV=MTRAV
  198. CSG Emettre une erreur ne semble pas forcément utile
  199. CSG On laisse la création d'un chpoint vide par CRECHP
  200. C DO 50 I=1,NNIN
  201. C DO 50 J=1,NNNOE
  202. C IF(IBIN(I,J).NE.0) GO TO 60
  203. C 50 CONTINUE
  204. C CALL ERREUR(179)
  205. C SEGSUP MTRAV,ICPR
  206. C RETURN
  207. C 60 CONTINUE
  208. CALL CRECHP(KTRAV,IRET)
  209.  
  210.  
  211. C nature du champoint
  212. MCHPO3 = IRET
  213. SEGACT,MCHPO1
  214. SEGACT,MCHPO2
  215. SEGACT,MCHPO3*MOD
  216. CALL LIRMOT(MONATU,1,IVAL,0)
  217.  
  218. IF ( IVAL .EQ.1 ) THEN
  219. C Cas de la lecture imposée de la 'NATURE' du champ résultat
  220. CALL LIRMOT(MOTCLE,3,IVAL,1)
  221. IF ( IERR .NE. 0) RETURN
  222. MCHPO3.JATTRI(1) = IVAL-1
  223.  
  224. ELSE
  225. C Cas du calcul de la 'NATURE' du champ résultat
  226. NATRI = MCHPO1.JATTRI(1) * MCHPO2.JATTRI(1)
  227. IF ( NATRI .EQ. 0) THEN
  228. MCHPO3.JATTRI(1) = 0
  229. ELSE IF ( NATRI .EQ. 1) THEN
  230. MCHPO3.JATTRI(1) = 1
  231. ELSE IF ( NATRI .EQ. 2) THEN
  232. C la nature discrete domine
  233. MCHPO3.JATTRI(1) = 2
  234. ELSE
  235. MCHPO3.JATTRI(1) = 2
  236. ENDIF
  237. ENDIF
  238. IRET=MCHPO3
  239.  
  240. MTRAV=KTRAV
  241. SEGSUP MTRAV,ICPR
  242. END
  243.  
  244.  
  245.  
  246.  
  247.  

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