Télécharger varche.eso

Retour à la liste

Numérotation des lignes :

varche
  1. C VARCHE SOURCE CB215821 20/11/04 21:21:53 10766
  2.  
  3. *_______________________________________________________________________
  4. * MULTIPLICATION D'UN MCHAML PAR UN OBJET EVOLUTION
  5. * (APPELE PAR OPERMU)
  6. *
  7. * ENTREES :
  8. * _________
  9. * IPCHE1 POINTEUR SUR UN CHAMELEM (TYPE MCHAML)
  10. * IPEVOL POINTEUR SUR UN OBJET EVOLUTION
  11. *
  12. * SORTIE :
  13. * ________
  14. * IPCHMU POINTEUR SUR UN CHAMELEM RESULTAT (TYPE MCHAML)
  15. * IRET =0 SI L'OPERATION EST IMPOSSIBLE.
  16. *_______________________________________________________________________
  17.  
  18. SUBROUTINE VARCHE (IPCHE1,IPEVOL,IPCHMU,IRET)
  19.  
  20. IMPLICIT INTEGER(I-N)
  21. IMPLICIT REAL*8(A-H,O-Z)
  22.  
  23.  
  24. -INC PPARAM
  25. -INC CCOPTIO
  26.  
  27. -INC SMCHAML
  28. -INC SMLREEL
  29. -INC SMEVOLL
  30. -INC SMCOORD
  31.  
  32. IRET = 0
  33. IPCHMU = 0
  34. *
  35. * ON RECUPERE L'OBJET EVOLUTION
  36. *
  37. MEVOLL = IPEVOL
  38. SEGACT,MEVOLL
  39. KEVOLL = mevoll.IEVOLL(1)
  40. SEGDES,MEVOLL
  41. SEGACT,KEVOLL
  42. IF (kevoll.TYPX .NE. 'LISTREEL' .OR.
  43. & kevoll.TYPY .NE. 'LISTREEL') THEN
  44. SEGDES,KEVOLL
  45. MOTERR(1:8) = 'LISTREEL'
  46. CALL ERREUR(37)
  47. RETURN
  48. ENDIF
  49. MLREE1 = kevoll.IPROGX
  50. MLREE2 = kevoll.IPROGY
  51. SEGDES,KEVOLL
  52.  
  53. SEGACT,MLREE1,MLREE2
  54. NBPOIX = MLREE1.PROG(/1)
  55. NBPOIY = MLREE2.PROG(/1)
  56. * Petites verifications sur le contenu de l'evolution
  57. IF (NBPOIX.NE.NBPOIY) THEN
  58. CALL ERREUR(577)
  59. GOTO 999
  60. ENDIF
  61. JORDO = 0
  62. CALL VARIFV(MLREE1.PROG,NBPOIX,JORDO)
  63. IF (JORDO.EQ.0) THEN
  64. CALL ERREUR(872)
  65. GOTO 999
  66. ENDIF
  67. *
  68. * ACTIVATION DU CHAMELEM
  69. *
  70. MCHELM = IPCHE1
  71. SEGINI,MCHEL1 = MCHELM
  72.  
  73. NSOUS = MCHEL1.ICHAML(/1)
  74. *
  75. * BOUCLE SUR LES SOUS ZONES
  76. *
  77. DO 100 ISOUS = 1, NSOUS
  78.  
  79. MCHAML = MCHEL1.ICHAML(ISOUS)
  80. SEGINI,MCHAM1=MCHAML
  81. MCHEL1.ICHAML(ISOUS) = MCHAM1
  82. NCOMP = MCHAM1.IELVAL(/1)
  83.  
  84. DO 200 ICOMP = 1, NCOMP
  85.  
  86. MELVAL = MCHAM1.IELVAL(ICOMP)
  87. SEGACT,MELVAL
  88. N1PTEL = MELVAL.VELCHE(/1)
  89. N1EL = MELVAL.VELCHE(/2)
  90. N2PTEL = MELVAL.IELCHE(/1)
  91. N2EL = MELVAL.IELCHE(/2)
  92. SEGINI,MELVA1
  93. MCHAM1.IELVAL(ICOMP) = MELVA1
  94.  
  95. IF (N1PTEL.EQ.0) THEN
  96. IF (MCHAM1.TYPCHE(ICOMP).EQ.'POINTEURLISTREEL') THEN
  97. DO 201 IB = 1, N2EL
  98. DO 201 IGAU = 1, N2PTEL
  99. MLREE3 = MELVAL.IELCHE(IGAU,IB)
  100. SEGACT,MLREE3
  101. JG = MLREE3.PROG(/1)
  102. SEGINI,MLREEL
  103. DO 202 IPROG = 1, JG
  104. XTT1 = MLREE3.PROG(IPROG)
  105. CALL VARIFO(MLREE1.PROG,MLREE2.PROG,NBPOIX,
  106. & JORDO,XTT1, YTT1)
  107. MLREEL.PROG(IPROG) = YTT1
  108. 202 CONTINUE
  109. SEGDES,MLREE3,MLREEL
  110. MELVA1.IELCHE(IGAU,IB) = MLREEL
  111. 201 CONTINUE
  112. ELSE IF (MCHAM1.TYPCHE(ICOMP).EQ.'POINTEURPOINT ') THEN
  113. c*// Attention : risque de probleme si travail avec ASSIstant(s) en //
  114. c*// a cause du segment "global" MCOORD qui est ici modifie !
  115. c* On peut se demander si le present cas a deja ete rencontre...
  116. IDIMP1 = IDIM + 1
  117. SEGACT,MCOORD*MOD
  118. NBNOI = nbpts
  119. NBPTS = NBNOI + (N2EL*N2PTEL)
  120. SEGADJ,MCOORD
  121. NBPTS = NBNOI
  122. DO 203 IB = 1, N2EL
  123. DO 203 IGAU =1, N2PTEL
  124. IP = MELVAL.IELCHE(IGAU,IB)
  125. IREF = (IP-1)*IDIMP1
  126. NBPTS = NBPTS + 1
  127. INEW = (NBPTS-1)*IDIMP1
  128. DO 204 IC=1,IDIM
  129. XTT1 = XCOOR(IREF+IC)
  130. CALL VARIFO(MLREE1.PROG,MLREE2.PROG,NBPOIX,
  131. & JORDO,XTT1, YTT1)
  132. c* ?? XCOOR(INEW+IC) = XTT1*YTT1
  133. XCOOR(INEW+IC) = YTT1
  134. 204 CONTINUE
  135. XCOOR(INEW+IDIMP1) = XCOOR(IREF+IDIMP1)
  136. IELCHE(IGAU,IB) = NBPTS
  137. 203 CONTINUE
  138. SEGACT,MCOORD
  139. ELSE
  140. *
  141. * TYPE DE COMPOSANTE NON RECONNU
  142. *
  143. MOTERR(1:8) = MCHAM1.NOMCHE(ICOMP)
  144. CALL ERREUR(679)
  145. SEGSUP,MELVA1,MCHAM1,MCHEL1
  146. SEGDES,MELVAL
  147. GOTO 999
  148. ENDIF
  149. ELSE
  150. DO 300 IB = 1, N1EL
  151. DO 300 IGAU = 1, N1PTEL
  152. XTT1 = MELVAL.VELCHE(IGAU,IB)
  153. CALL VARIFO(MLREE1.PROG,MLREE2.PROG,NBPOIX,
  154. & JORDO,XTT1, YTT1)
  155. MELVA1.VELCHE(IGAU,IB) = YTT1
  156. 300 CONTINUE
  157. ENDIF
  158. SEGDES,MELVA1,MELVAL
  159. 200 CONTINUE
  160. SEGDES,MCHAM1
  161. 100 CONTINUE
  162. SEGDES,MCHEL1
  163.  
  164. IPCHMU = MCHEL1
  165. IRET = 1
  166. *
  167. 999 CONTINUE
  168. SEGDES,MLREE1,MLREE2
  169.  
  170. RETURN
  171. END
  172.  
  173.  
  174.  
  175.  
  176.  

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