Télécharger muchel.eso

Retour à la liste

Numérotation des lignes :

muchel
  1. C MUCHEL SOURCE CB215821 26/08/24 21:17:25 12622
  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 667 IGAU=1,N1PTEL
  72. DO 74 IB=1,N1EL
  73. VELCHE(IGAU,IB)=XFLOT1*VELCHE(IGAU,IB)
  74. 74 CONTINUE
  75. 667 CONTINUE
  76. ELSE
  77. N2PTEL=IELCHE(/1)
  78. N2EL =IELCHE(/2)
  79. IF (TYPCHE(ICOMP).EQ.'POINTEURLISTREEL') THEN
  80. DO 668 IGAU=1,N2PTEL
  81. DO 64 IB=1,N2EL
  82. ILREE1=IELCHE(IGAU,IB)
  83. CALL MUFLIR(ILREE1,XFLOT1,ILREEL,1)
  84. IELCHE(IGAU,IB)=ILREEL
  85. 64 CONTINUE
  86. 668 CONTINUE
  87. ELSE IF (TYPCHE(ICOMP).EQ.'POINTEURPOINT ') THEN
  88. SEGACT,MCOORD*mod
  89. NBNO=nbpts
  90. NBNOI=NBNO
  91. NBPTS=NBNO+(N2PTEL*N2EL)
  92. SEGADJ,MCOORD
  93. DO 669 IGAU=1,N2PTEL
  94. DO 54 IB=1,N2EL
  95. IP=IELCHE(IGAU,IB)
  96. IREF=(IP-1)*(IDIM+1)
  97. C
  98. DO 55 IC=1,IDIM
  99. XCOOR(NBNOI*(IDIM+1)+IC)=XCOOR(IREF+IC)*XFLOT1
  100. 55 CONTINUE
  101. XCOOR(NBNOI*(IDIM+1)+(IDIM+1))=XCOOR(IREF+(IDIM+1))
  102. IELCHE(IGAU,IB)=NBNOI+1
  103. NBNOI=NBNOI+1
  104. 54 CONTINUE
  105. 669 CONTINUE
  106. ELSE IF (TYPCHE(ICOMP).EQ.'POINTEUREVOLUTIO') THEN
  107. DO 670 IGAU=1,N2PTEL
  108. DO 65 IB=1,N2EL
  109. IEVOL1=IELCHE(IGAU,IB)
  110. CALL MUFLEV(IEVOL1,XFLOT,IEVOL2,IEPS)
  111. IELCHE(IGAU,IB)=IEVOL2
  112. 65 CONTINUE
  113. 670 CONTINUE
  114. ELSE
  115. C
  116. C NOM DE COMPOSANTE NON RECONNU
  117. C
  118. MOTERR(1:4)=NOMCHE(ICOMP)
  119. CALL ERREUR(197)
  120. SEGSUP MELVAL
  121. SEGSUP MCHAML
  122. SEGSUP MCHELM
  123. IPCHMU=0
  124. RETURN
  125. ENDIF
  126. ENDIF
  127. SEGDES MELVAL
  128. C
  129. 73 CONTINUE
  130. SEGDES MCHAML
  131. C
  132. 72 CONTINUE
  133. SEGDES MCHELM
  134. C
  135. 666 CONTINUE
  136. RETURN
  137. END
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  

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