Télécharger kcha1.eso

Retour à la liste

Numérotation des lignes :

kcha1
  1. C KCHA1 SOURCE PV090527 25/01/07 14:42:46 12115
  2. SUBROUTINE KCHA1(MTRAV,IPGEOM,IPRESU)
  3. C-----------------------------------------------------------------------
  4. C Transforme un CHPO de support CENTRE en un MCHAML constant par élément
  5. C Le maillage IPGEOM est le maillage à partir duquel les points CENTRE
  6. C sont créés (verification faite dans kcha.eso).
  7. C-----------------------------------------------------------------------
  8. C
  9. C---------------------------
  10. C Paramètres Entrée/Sortie :
  11. C---------------------------
  12. C
  13. C E/ MTRAV : Segment de travail du CHPO de support centre.
  14. C Les valeurs du ième point de MTRAV sont
  15. C à affecter au ième élément de IPGEOM.
  16. C E/ IPGEOM : Support du MCHAML
  17. C /S IPRESU : Contient le MCHAML résultat de support IPGEOM
  18. C
  19. C----------------------
  20. C Variables en COMMON :
  21. C----------------------
  22. C
  23. C E/ IFOUR : cf CCOPTIO
  24. C E/ NIFOUR : cf CCOPTIO
  25. C
  26. C-----------------------------------------------------------------------
  27. C
  28. C Langage : ESOPE + FORTRAN77
  29. C
  30. C Auteurs : F.DABBENE
  31. C
  32. C-----------------------------------------------------------------------
  33. IMPLICIT INTEGER(I-N)
  34. IMPLICIT REAL*8 (A-H,O-Z)
  35. C
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC SMCOORD
  40. -INC SMCHAML
  41. -INC SMCHPOI
  42. -INC SMELEME
  43. -INC TMTRAV
  44. C
  45. C- Initialisations
  46. C
  47. IELEM = 0
  48. ISTOP = 0
  49. MELEME = IPGEOM
  50. SEGACT MELEME
  51. NBSOUS = LISOUS(/1)
  52. IF (NBSOUS.EQ.0) NBSOUS=1
  53. C
  54. C - Création du MCHELM
  55. C
  56. C - Récupération du nombre total de composantes dans MTRAV
  57. C - Approximation d'une seule harmonique.
  58. C
  59. SEGACT MTRAV
  60. NNIN = IBIN(/1)
  61. C
  62. C - Création par zone élémentaire
  63. C
  64. L1 = 8
  65. N1 = NBSOUS
  66. N3 = 6
  67. SEGINI MCHELM
  68. IPRESU = MCHELM
  69. TITCHE = 'SCALAIRE'
  70. IFOCHE = IFOUR
  71. IF (NBSOUS.EQ.1) THEN
  72. NBNN = NUM(/1)
  73. MELE = ITYPEL
  74. IELE = NUMGEO(MELE)
  75. IMACHE(1) = MELEME
  76. N2 = NNIN
  77. SEGINI MCHAML
  78. DO 5 ICOMP=1,NNIN
  79. NOMCHE(ICOMP) = INCO(ICOMP)
  80. 5 CONTINUE
  81. ICHAML(1) = MCHAML
  82. CONCHE(1) = ' '
  83. INFCHE(1,1) = 0
  84. INFCHE(1,2) = 0
  85. INFCHE(1,3) = NIFOUR
  86. ISTOP = ISTOP + 1
  87. CALL RESHPT(1,NBNN,IELE,MELE,0,MINTE,IRT1)
  88. IF (IRT1.EQ.0) GOTO 100
  89. INFCHE(1,4) = MINTE
  90. INFCHE(1,5) = 0
  91. INFCHE(1,6) = 2
  92. SEGACT MCHAML
  93. ELSE
  94. IPOS = 0
  95. DO 10 I=1,NBSOUS
  96. IPT1 = LISOUS(I)
  97. SEGACT IPT1
  98. NBNN = IPT1.NUM(/1)
  99. NBELEM = IPT1.NUM(/2)
  100. MELE = IPT1.ITYPEL
  101. IELE = NUMGEO(MELE)
  102. IMACHE(I) = IPT1
  103. SEGACT IPT1
  104. CONCHE(I) = ' '
  105. N2 = NNIN
  106. SEGINI MCHAML
  107. C - Recherche du nombre de composantes réellement dans la zone :
  108. C On ne conserve que les composantes ayant une valeur pour au moins un
  109. C point du sous-maillage
  110. IN2 = 0
  111. DO 20 ICOMP=1,NNIN
  112. DO 30 NEL=1,NBELEM
  113. IF (IBIN(ICOMP,IPOS+NEL).EQ.1) THEN
  114. IN2 = IN2 + 1
  115. NOMCHE(IN2) = INCO(ICOMP)
  116. GOTO 20
  117. ENDIF
  118. 30 CONTINUE
  119. 20 CONTINUE
  120. C On ajuste la taille du MCHAML au nouveau nombre de composantes
  121. N2 = IN2
  122. SEGADJ MCHAML
  123. ICHAML(I) = MCHAML
  124. INFCHE(I,1) = 0
  125. INFCHE(I,2) = 0
  126. INFCHE(I,3) = NIFOUR
  127. ISTOP = ISTOP + 1
  128. CALL RESHPT(1,NBNN,IELE,MELE,0,MINTE,IRT1)
  129. IF (IRT1.EQ.0) GOTO 100
  130. INFCHE(I,4) = MINTE
  131. INFCHE(I,5) = 0
  132. INFCHE(I,6) = 2
  133. SEGACT MCHAML
  134. IPOS = IPOS + NBELEM
  135. 10 CONTINUE
  136. ENDIF
  137. SEGACT MELEME
  138. C
  139. C- Remplissage du MCHAML et du MELVAL de chaque sous zone
  140. C
  141. DO 40 I=1,NBSOUS
  142. MELEME = IMACHE(I)
  143. MCHAML = ICHAML(I)
  144. SEGACT MELEME
  145. SEGACT MCHAML*MOD
  146. N2 = NOMCHE(/2)
  147. N1PTEL = 1
  148. N1EL = MELEME.NUM(/2)
  149. N2PTEL = 0
  150. N2EL = 0
  151.  
  152. DO 50 ICOMP=1,N2
  153. SEGINI MELVAL
  154. TYPCHE(ICOMP) = 'REAL*8'
  155. IELVAL(ICOMP) = MELVAL
  156. IF (NBSOUS.EQ.1) THEN
  157. IPOS = ICOMP
  158. ELSE
  159. CALL PLACE(INCO,NNIN,IPOS,NOMCHE(ICOMP))
  160. ENDIF
  161. IPOS1 = IELEM
  162. DO 60 NEL=1,N1EL
  163. IPOS1 = IPOS1 + 1
  164. VELCHE(1,NEL) = BB(IPOS,IPOS1)
  165. 60 CONTINUE
  166. SEGACT MELVAL
  167. 50 CONTINUE
  168. SEGACT MCHAML
  169. SEGACT MELEME
  170. IELEM = IELEM + N1EL
  171. 40 CONTINUE
  172. SEGACT MCHELM
  173. SEGSUP MTRAV
  174. RETURN
  175. C
  176. C- Ménage en cas d'erreur
  177. C
  178. 100 CONTINUE
  179. SEGACT MCHAML
  180. SEGACT MCHELM
  181. SEGACT MELEME
  182. IPRESU = 0
  183. C
  184. RETURN
  185. END
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  

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