Télécharger rlex.eso

Retour à la liste

Numérotation des lignes :

rlex
  1. C RLEX SOURCE CB215821 20/11/25 13:39:25 10792
  2. SUBROUTINE RLEX(MCHPOI,MCHPO1,MCHPO2,MCHPO3,MTABD)
  3. C
  4. C Subroutine de reconstruction lineaire exacte d'un
  5. C Champoint centre au sommet des elements.
  6. C
  7. C*********************************************************
  8. C
  9. C Cette subroutine est appelee par KLNO
  10. C
  11. C*********************************************************
  12. C
  13. C Date : 27/11/98
  14. C
  15. C Auteur : R. MOREL DRN/DMT/SEMT/TTMF
  16. C 21.01.04 : A. Beccantini correction E/S
  17. C correction 3D
  18. C
  19. C*********************************************************
  20. C
  21. C ENTREES : MCHPO1 : CHPOINT centre contenant la fonction
  22. C
  23. C MCHPO2 : CHPOINT centre contenant le gradient
  24. C
  25. C MCHPO3 : CHPOINT centre contenant le limiteur
  26. C
  27. C MTABD : Table domaine
  28. C
  29. C SORTIE : MCHPOI : CHPOINT sommet contenant la fonction
  30. C
  31. C*********************************************************
  32. IMPLICIT INTEGER(I-N)
  33. IMPLICIT REAL*8(A-H,O-Z)
  34.  
  35.  
  36. -INC PPARAM
  37. -INC CCOPTIO
  38. -INC SMCOORD
  39. -INC SMELEME
  40. POINTEUR MELEMS.MELEME,MELEMC.MELEME
  41. -INC SMCHPOI
  42. -INC SMLENTI
  43. -INC SMLMOTS
  44. C
  45. C Declaration
  46. C
  47. INTEGER MTABD, INDIC, NBCOMP, IGEOMB
  48. & , JGN, JGM, NSOM, NBSOUS, L, NP, NEL, J, K
  49. & , ISOM, LSOM, NCENT, NK
  50. REAL*8 XC, YC, ZC, FC, GX, GY, GZ, GLIM, XS, YS, ZS
  51. & , DX, DY, DZ, DF, FS
  52. CHARACTER*4 MOT
  53. CHARACTER*8 TYPC
  54. C
  55. C Lecture des maillages de la table domaine
  56. C Verification que les maillages correspondent
  57. C
  58. CALL LEKTAB(MTABD,'SOMMET',MELEMS)
  59. IF(IERR.NE.0)RETURN
  60. CALL LEKTAB(MTABD,'MAILLAGE',MELEME)
  61. IF(IERR.NE.0)RETURN
  62. CALL LEKTAB(MTABD,'CENTRE',MELEMC)
  63. IF(IERR.NE.0)RETURN
  64. C
  65. C**** We chech the geom. support of MCHPOi
  66. C
  67. INDIC = 1
  68. NBCOMP = 1
  69. MOT = 'SCAL'
  70. CALL QUEPOI(MCHPO1, MELEMC, INDIC, NBCOMP, MOT)
  71. IF(IERR.NE.0)RETURN
  72. C
  73. JGN = 4
  74. JGM = IDIM
  75. SEGINI MLMOTS
  76. MLMOTS.MOTS(1) = 'P1DX'
  77. MLMOTS.MOTS(2) = 'P1DY'
  78. IF(IDIM .EQ. 3) MLMOTS.MOTS(3) = 'P1DZ'
  79. CALL QUEPO1(MCHPO2, MELEMC, MLMOTS)
  80. IF(IERR.NE.0)RETURN
  81. SEGSUP MLMOTS
  82. C
  83. INDIC = 1
  84. NBCOMP = 1
  85. MOT = 'P1'
  86. CALL QUEPOI(MCHPO3, MELEMC, INDIC, NBCOMP, MOT)
  87. IF(IERR.NE.0)RETURN
  88. C
  89. C**** We read the function
  90. C
  91. CALL LICHT(MCHPO1,MPOVA1,TYPC,IGEOMB)
  92. C In LICHT, SEGACT MPOVA1
  93. IF(IERR.NE.0)RETURN
  94. C
  95. CALL KRIPAD(MELEMS,MLENTI)
  96. IF(IERR.NE.0)RETURN
  97. C In KRIPAD, SEGINI MLENTI
  98. C
  99. C Lecture du gradient
  100. C
  101. CALL LICHT(MCHPO2,MPOVA2,TYPC,IGEOMB)
  102. C In LICHT, SEGACT MPOVA2
  103. IF(IERR.NE.0) RETURN
  104. C
  105. C Lecture du limiteur
  106. C
  107. CALL LICHT(MCHPO3,MPOVA3,TYPC,IGEOMB)
  108. C In LICHT, SEGACT MPOVA3
  109. C
  110. C Creation du chpoint sommet
  111. C
  112. JGN = 4
  113. JGM = 1
  114. SEGINI MLMOTS
  115. MLMOTS.MOTS(1) = 'SCAL'
  116. TYPC = 'CHPOINT '
  117. CALL KRCHP1(TYPC, MELEMS, MCHPOI, MLMOTS)
  118. IF(IERR.NE.0) RETURN
  119. SEGSUP MLMOTS
  120. CALL LICHT(MCHPOI,MPOVAL,TYPC,IGEOMB)
  121. C In LICHT, SEGACT MPOVAL
  122. IF(IERR.NE.0) RETURN
  123.  
  124. NSOM=MPOVAL.VPOCHA(/1)
  125. C MPOVA4 contient le nombre de centre contribuant a un sommet
  126. SEGINI, MPOVA4=MPOVAL
  127. C
  128. CC
  129. C On fait une boucle sur les elements du maillage
  130. C A chaque sommet on ajoute la contribution du centre de
  131. C l'element
  132. C
  133. SEGACT MELEME
  134. SEGACT MELEMC
  135. SEGACT MELEMS
  136. NBSOUS=MELEME.LISOUS(/1)
  137. IF(NBSOUS.EQ.0)NBSOUS=1
  138. C
  139. NK=0
  140. IPT1=MELEME
  141. DO L=1,NBSOUS,1
  142. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  143. SEGACT IPT1
  144. NP=IPT1.NUM(/1)
  145. NEL=IPT1.NUM(/2)
  146. C
  147. DO J=1,NEL,1
  148. NK=NK+1
  149. NCENT=MELEMC.NUM(1,NK)
  150. C Coordonnee du centre
  151. XC=XCOOR((NCENT-1)*(IDIM+1)+1)
  152. YC=XCOOR((NCENT-1)*(IDIM+1)+2)
  153. ZC=0.0D0
  154. IF (IDIM .EQ. 3) ZC=XCOOR((NCENT-1)*(IDIM+1)+3)
  155. C Valeurs de la fonction sur l'element
  156. FC=MPOVA1.VPOCHA(NK,1)
  157. GX=MPOVA2.VPOCHA(NK,1)
  158. GY=MPOVA2.VPOCHA(NK,2)
  159. GZ=0.0D0
  160. IF (IDIM .EQ. 3) GZ=MPOVA2.VPOCHA(NK,3)
  161. GLIM=MPOVA3.VPOCHA(NK,1)
  162. DO K=1,NP,1
  163. ISOM=IPT1.NUM(K,J)
  164. LSOM=MLENTI.LECT(ISOM)
  165. MPOVA4.VPOCHA(LSOM,1)=MPOVA4.VPOCHA(LSOM,1)+1.0D0
  166. XS=XCOOR((ISOM-1)*(IDIM+1)+1)
  167. YS=XCOOR((ISOM-1)*(IDIM+1)+2)
  168. ZS=0.0D0
  169. IF (IDIM .EQ. 3) ZS=XCOOR((ISOM-1)*(IDIM+1)+3)
  170. DX=XS-XC
  171. DY=YS-YC
  172. DZ=ZS-ZC
  173. DF=(DX*GX+DY*GY+DZ*GZ)*GLIM
  174. FS=FC+DF
  175. MPOVAL.VPOCHA(LSOM,1)=MPOVAL.VPOCHA(LSOM,1)+FS
  176. ENDDO
  177. ENDDO
  178. ENDDO
  179. C
  180. DO J=1,NSOM,1
  181. MPOVAL.VPOCHA(J,1)=MPOVAL.VPOCHA(J,1)/MPOVA4.VPOCHA(J,1)
  182. ENDDO
  183. C
  184. SEGSUP MLENTI
  185. SEGSUP MPOVA4
  186. C
  187. END
  188.  
  189.  
  190.  
  191.  

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