Télécharger muchel.eso

Retour à la liste

Numérotation des lignes :

muchel
  1. C MUCHEL SOURCE CB215821 20/11/04 21:19:07 10766
  2. SUBROUTINE MUCHEL(IPCHE1,XFLOT,IPCHMU,IEPS)
  3. C_______________________________________________________________________
  4. C
  5. C MULTIPLIE UN CHPS PAR ELMTS PAR XFLO SI IEPS=1
  6. C MULTIPLIE UN CHPS PAR ELMTS PAR 1/XFLO SI IEPS=-1
  7. C LE CHPS RESULTANT VOIT SON POINTEUR STOCKE DANS IRET
  8. C SI L OPERATION N EST PAS POSSIBLE IRET=0
  9. C PAR EXEMPLE SI IEPS=-1 ET XFLOT=0.
  10. C (APPELE PAR OPERMU)
  11. C
  12. C ENTREES :
  13. C ---------
  14. C
  15. C IPCHE1 POINTEUR SUR LE CHAMPS PAR ELEMENT
  16. C XFLOT SCALAIRE
  17. C IEPS = 1 SI MULTIPLICATION
  18. C -1 SI DIVISION
  19. C
  20. C SORTIES :
  21. C ---------
  22. C
  23. C IPCHMU POINTEUR SUR LE CHAMPS*XFLOT**IEPS
  24. C =0 SI OPERATION IMPOSSSIBLE
  25. C
  26. C CODE EBERSOLT JUIN 84
  27. C
  28. C PASSAGE AUX NOUVEAUX CHAMELEM PAR JM CAMPENON LE 29 10 90
  29. C
  30. C_______________________________________________________________________
  31. C
  32. IMPLICIT INTEGER(I-N)
  33. IMPLICIT REAL*8(A-H,O-Z)
  34. C
  35. -INC SMCHAML
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC SMCOORD
  40. -INC SMLREEL
  41. -INC SMEVOLL
  42. C
  43. IPCHMU=0
  44. C
  45. IF(IEPS.EQ.-1.AND.XFLOT.EQ.0.) GOTO 666
  46. C
  47. IF(IEPS.EQ.1) XFLOT1=XFLOT
  48. IF(IEPS.EQ.-1) XFLOT1=1.D0/XFLOT
  49. C
  50. MCHEL1=IPCHE1
  51. SEGACT MCHEL1
  52. SEGINI,MCHELM=MCHEL1
  53. SEGDES MCHEL1
  54. IPCHMU=MCHELM
  55. C
  56. DO 72 ISOUS=1,ICHAML(/1)
  57. MCHAM1=ICHAML(ISOUS)
  58. SEGACT MCHAM1
  59. SEGINI,MCHAML=MCHAM1
  60. SEGDES MCHAM1
  61. ICHAML(ISOUS)=MCHAML
  62. DO 73 ICOMP=1,IELVAL(/1)
  63. MELVA1=IELVAL(ICOMP)
  64. SEGACT MELVA1
  65. SEGINI,MELVAL=MELVA1
  66. SEGDES MELVA1
  67. IELVAL(ICOMP)=MELVAL
  68. N1PTEL=VELCHE(/1)
  69. IF (N1PTEL.NE.0) THEN
  70. N1EL =VELCHE(/2)
  71. DO 74 IGAU=1,N1PTEL
  72. DO 74 IB=1,N1EL
  73. VELCHE(IGAU,IB)=XFLOT1*VELCHE(IGAU,IB)
  74. 74 CONTINUE
  75. ELSE
  76. N2PTEL=IELCHE(/1)
  77. N2EL =IELCHE(/2)
  78. IF (TYPCHE(ICOMP).EQ.'POINTEURLISTREEL') THEN
  79. DO 64 IGAU=1,N2PTEL
  80. DO 64 IB=1,N2EL
  81. ILREE1=IELCHE(IGAU,IB)
  82. CALL MUFLIR(ILREE1,XFLOT1,ILREEL,1)
  83. IELCHE(IGAU,IB)=ILREEL
  84. 64 CONTINUE
  85. ELSE IF (TYPCHE(ICOMP).EQ.'POINTEURPOINT ') THEN
  86. SEGACT,MCOORD*mod
  87. NBNO=nbpts
  88. NBNOI=NBNO
  89. NBPTS=NBNO+(N2PTEL*N2EL)
  90. SEGADJ,MCOORD
  91. DO 54 IGAU=1,N2PTEL
  92. DO 54 IB=1,N2EL
  93. IP=IELCHE(IGAU,IB)
  94. IREF=(IP-1)*(IDIM+1)
  95. C
  96. DO 55 IC=1,IDIM
  97. XCOOR(NBNOI*(IDIM+1)+IC)=XCOOR(IREF+IC)*XFLOT1
  98. 55 CONTINUE
  99. XCOOR(NBNOI*(IDIM+1)+(IDIM+1))=XCOOR(IREF+(IDIM+1))
  100. IELCHE(IGAU,IB)=NBNOI+1
  101. NBNOI=NBNOI+1
  102. 54 CONTINUE
  103. ELSE IF (TYPCHE(ICOMP).EQ.'POINTEUREVOLUTIO') THEN
  104. DO 65 IGAU=1,N2PTEL
  105. DO 65 IB=1,N2EL
  106. IEVOL1=IELCHE(IGAU,IB)
  107. CALL MUFLEV(IEVOL1,XFLOT,IEVOL2,IEPS)
  108. IELCHE(IGAU,IB)=IEVOL2
  109. 65 CONTINUE
  110. ELSE
  111. C
  112. C NOM DE COMPOSANTE NON RECONNU
  113. C
  114. MOTERR(1:4)=NOMCHE(ICOMP)
  115. CALL ERREUR(197)
  116. SEGSUP MELVAL
  117. SEGSUP MCHAML
  118. SEGSUP MCHELM
  119. IPCHMU=0
  120. RETURN
  121. ENDIF
  122. ENDIF
  123. SEGDES MELVAL
  124. C
  125. 73 CONTINUE
  126. SEGDES MCHAML
  127. C
  128. 72 CONTINUE
  129. SEGDES MCHELM
  130. C
  131. 666 CONTINUE
  132. RETURN
  133. END
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  

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