Télécharger chelco.eso

Retour à la liste

Numérotation des lignes :

chelco
  1. C CHELCO SOURCE PASCAL 21/06/22 21:15:00 11039
  2. SUBROUTINE CHELCO(IVAL,IPCHEL,IPCHE1,IPCHE2,IPCHE3)
  3.  
  4. C=======================================================================
  5. C ENTREES
  6. C IVAL = 0 SI ON VEUT IDIM CHAMELEM CONTENANT CHACUN UNE COMPOSA
  7. C IVAL = 1 SI ON VEUT LA PREMIERE COMPOSANTE
  8. C IVAL = 2 SI ON VEUT LA DEUXIEME COMPOSANTE
  9. C IVAL = 3 SI ON VEUT LA TROISIEME COMPOSANTE
  10. C IPCHEL = POINTEUR SUR UN CHAMP PAR ELEMENT (TYPE MCHAML)
  11.  
  12. C SORTIES
  13. C IPCHE1 =POINTEURS SUR LES CHAMP/ELEMENT CONTENANT LES COORDONNEES
  14. C IPCHE2
  15. C IPCHE3
  16. C
  17. C EBERSOLT OCT 85
  18. C NOUVEAUX CHAMELEMS P DOWLATYARI OCT 91
  19. C=======================================================================
  20. IMPLICIT INTEGER(I-N)
  21. IMPLICIT REAL*8(A-H,O-Z)
  22. -INC SMCHAML
  23. -INC SMELEME
  24. -INC SMINTE
  25. -INC SMCOORD
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC CCGEOME
  30. CHARACTER*4 NOMEL
  31. C
  32. SEGMENT MTRA
  33. REAL*8 XE(3,NBNN)
  34. ENDSEGMENT
  35. C
  36. DATA XZER/0.D0/
  37. C
  38. IPCHE1 = 0
  39. IPCHE2 = 0
  40. IPCHE3 = 0
  41. C
  42. MCHEL1=IPCHEL
  43. N1=MCHEL1.INFCHE(/1)
  44. N3=MCHEL1.INFCHE(/2)
  45. L1=8
  46. NSOUS=N1
  47. C
  48. IF(IVAL.EQ.0)THEN
  49. IDEB=IDIM
  50. IFIN=1
  51. ELSE
  52. IDEB=IVAL
  53. IFIN=IVAL
  54. ENDIF
  55. C
  56. NCHE=0
  57. C
  58. C BOUCLE SUR LES COMPOSANTES
  59. C
  60. DO 1000 ICO=IDEB,IFIN,-1
  61. C
  62. C ON INITIALISE LE MCHAML CONTENANT LA COORDONNEE ICO
  63. C
  64. SEGINI,MCHELM
  65. NCHE=NCHE+1
  66. IF(NCHE.EQ.1)IPCHE1=MCHELM
  67. IF(NCHE.EQ.2)IPCHE2=MCHELM
  68. IF(NCHE.EQ.3)IPCHE3=MCHELM
  69. IFOCHE=MCHEL1.IFOCHE
  70. TITCHE='SCALAIRE'
  71. C
  72. C BOUCLE SUR LES SOUS-ZONES
  73. C
  74. DO 100 ISOUS=1,NSOUS
  75. C
  76. CONCHE(ISOUS)=MCHEL1.CONCHE(ISOUS)
  77. IMACHE(ISOUS)=MCHEL1.IMACHE(ISOUS)
  78. C
  79. DO 10 IO=1,N3
  80. INFCHE(ISOUS,IO)=MCHEL1.INFCHE(ISOUS,IO)
  81. 10 CONTINUE
  82. N2=1
  83. SEGINI MCHAML
  84. ICHAML(ISOUS)=MCHAML
  85. NOMCHE(1)='SCAL'
  86. TYPCHE(1)='REAL*8'
  87. C
  88. MELEME=IMACHE(ISOUS)
  89. NBELEM=NUM(/2)
  90. NBNN=NUM(/1)
  91. NOMEL=NOMS(ITYPEL)
  92. C
  93. ISUP=INFCHE(ISOUS,6)
  94. IF(ISUP.NE.1)THEN
  95. MINTE=INFCHE(ISOUS,4)
  96. NBPGAU=SHPTOT(/3)
  97. ELSE
  98. NBPGAU=NBNN
  99. ENDIF
  100. C
  101. N1EL =NBELEM
  102. N1PTEL=NBPGAU
  103. N2EL =0
  104. N2PTEL=0
  105. SEGINI MELVAL
  106. IELVAL(1)=MELVAL
  107. SEGINI MTRA
  108. C
  109. NBOUC=NBNN
  110. IF(NOMEL.EQ.'RAP3'.AND.ISUP.NE.1) NBOUC=6
  111. IF(NOMEL.EQ.'LIP6'.AND.ISUP.NE.1) NBOUC=12
  112. IF(NOMEL.EQ.'LIP8'.AND.ISUP.NE.1) NBOUC=16
  113.  
  114. DO 200 IB=1,NBELEM
  115. C
  116. CALL ZERO(XE,3,NBNN)
  117. CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE)
  118. C
  119. DO 210 IGAU=1,NBPGAU
  120. C
  121. IF(ISUP.NE.1)THEN
  122. XX=XZER
  123. DO 220 ID=1,NBOUC
  124. XX=XX+SHPTOT(1,ID,IGAU)*XE(ICO,ID)
  125. 220 CONTINUE
  126. ELSE
  127. XX=XE(ICO,IGAU)
  128. ENDIF
  129. C+PPj
  130. C ON DIVISE PAR 2 LE RESULTAT POUR CERTAINS ELEMENTS DE JOINTS
  131. C AM 29/3/16 UNIQUEMENT SI LE SUPPORT EST DIFFERENT DE 1
  132. IF(ISUP.NE.1) THEN
  133. IF((NOMEL.EQ.'RAC2').OR.(NOMEL.EQ.'LIA3')
  134. . .OR.(NOMEL.EQ.'LIA4').OR.(NOMEL.EQ.'LIA6').OR.(NOMEL.EQ.'LIA8')
  135. . .OR.(NOMEL.EQ.'RAP3').OR.(NOMEL.EQ.'LIP6').OR.(NOMEL.EQ.'LIP8'))
  136. . XX=XX/2
  137. ENDIF
  138. C+PPj
  139. C
  140. VELCHE(IGAU,IB)=XX
  141. C
  142. 210 CONTINUE
  143. 200 CONTINUE
  144. SEGSUP MTRA
  145. C
  146. 100 CONTINUE
  147.  
  148. C
  149. 1000 CONTINUE
  150.  
  151. END
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  

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