Télécharger chelco.eso

Retour à la liste

Numérotation des lignes :

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

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