Télécharger rlexc1.eso

Retour à la liste

Numérotation des lignes :

rlexc1
  1. C RLEXC1 SOURCE CB215821 20/11/04 21:21:03 10766
  2. SUBROUTINE RLEXC1(MLEPOI,MLECOE,MCHELM)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : RLEXC1
  8. C
  9. C DESCRIPTION : Appelle par GRADI2
  10. C
  11. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  12. C
  13. C AUTEUR : A. BECCANTINI
  14. C
  15. C************************************************************************
  16. C
  17. C Inputs:
  18. C
  19. C MLEPOI : pointers of list of points (FACE + neighbors)
  20. C
  21. C MLECOE : pointers of the list of coeff
  22. C
  23. C Output
  24. C
  25. C MCHELM : MCHAML which contains the coeff. to compute gradients
  26. C
  27. C
  28. C
  29. C**** Variables de COOPTIO
  30. C
  31. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  32. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  33. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  34. C & ,IECHO, IIMPI, IOSPI
  35. C & ,IDIM
  36. C & ,MCOORD
  37. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  38. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  39. C & ,NORINC,NORVAL,NORIND,NORVAD
  40. C & ,NUCROU, IPSAUV, IPREFI, IFICLE
  41. CC
  42. IMPLICIT INTEGER(I-N)
  43.  
  44. INTEGER N1,N2
  45. SEGMENT MATRIX
  46. REAL*8 MAT(N1,N2)
  47. ENDSEGMENT
  48. C
  49.  
  50. -INC PPARAM
  51. -INC CCOPTIO
  52. INTEGER N3,L1,N1PTEL,N1EL,N2PTEL,N2EL
  53. INTEGER NBNN,NBELEM,NBSOUS,NBREF
  54. INTEGER JG
  55. -INC SMCHAML
  56. -INC SMLREEL
  57. -INC SMLENTI
  58. -INC SMELEME
  59. POINTEUR MLELAS.MLENTI, MLECON.MLENTI, MLEELT.MLENTI
  60. & ,MLEPOI.MLENTI,MLECOE.MLENTI
  61. C
  62. INTEGER NFAC,NMAX,IFAC, NTSOUS, I1, NBNN0, I3, I2, NG, ISOUS
  63. C
  64. SEGACT MLEPOI
  65. SEGACT MLECOE
  66. NFAC=MLEPOI.LECT(/1)
  67. C
  68. C**** NMAX = maximum number of points in the element
  69. C 'FACE'-neighbors
  70. NMAX=0
  71. DO IFAC = 1, NFAC, 1
  72. MLENTI=MLEPOI.LECT(IFAC)
  73. SEGACT MLENTI
  74. NBNN=MLENTI.LECT(/1)
  75. NMAX=MAX(NMAX,NBNN)
  76. ENDDO
  77. C
  78. C**** We create the following MLENTI
  79. C
  80. C MLECON : dimension = NMAX
  81. C MLECON.LECT(I) = number of elements with I points
  82. C
  83. C MLELAS : dimension = NMAX
  84.  
  85. C MLELAS.LECT(I) = 0 -> there are no elements with I
  86. C points
  87. C
  88. C J -> the J-th element has I points
  89. C
  90. C
  91. C The other elements with I points are into the chaining list
  92. C MLEELT.
  93. C
  94. C MLEELT : dimension = NFAC
  95. C MLEELT+MLELAS allows to rapidly recover the elements
  96. C with the same number of points
  97. C For example, the elements with I points are:
  98. C IELEM = MLELAS.LECT(I)
  99. C IELEM2 = MLEELT.LECT(IELEM)
  100. C ...
  101. C IELEM_K+1 = MLEELT.LECT(IELEM_K)
  102. C ...
  103. C until IELEM_K+1 = 0
  104. C
  105. JG=NMAX
  106. SEGINI MLELAS
  107. SEGINI MLECON
  108. JG=NFAC
  109. SEGINI MLEELT
  110. DO IFAC = 1, NFAC, 1
  111. MLENTI=MLEPOI.LECT(IFAC)
  112. NBNN=MLENTI.LECT(/1)
  113. MLECON.LECT(NBNN)=MLECON.LECT(NBNN)+1
  114. MLEELT.LECT(IFAC)= MLELAS.LECT(NBNN)
  115. MLELAS.LECT(NBNN)=IFAC
  116. ENDDO
  117. C
  118. C**** Les supports
  119. C
  120. NTSOUS=0
  121. DO ISOUS=1,NMAX,1
  122. IF(MLECON.LECT(ISOUS).NE.0) NTSOUS=NTSOUS+1
  123. ENDDO
  124. C
  125. C**** Initialisation du MCHELM
  126. C
  127. N1=NTSOUS
  128. N2=IDIM
  129. N3=6
  130. L1=8
  131. SEGINI MCHELM
  132. MCHELM.TITCHE='Gradient'
  133. MCHELM.IFOCHE=IFOUR
  134. C
  135. ISOUS=0
  136. NBSOUS=0
  137. NBREF=0
  138. DO I1 = 1, NMAX, 1
  139. NBELEM=MLECON.LECT(I1)
  140. IF(NBELEM .GT. 0)THEN
  141. ISOUS=ISOUS+1
  142. NBNN=I1
  143. SEGINI MELEME
  144. C ITYPEL=32 -> 'POLY'
  145. ITYPEL=32
  146. MCHELM.IMACHE(ISOUS)=MELEME
  147. SEGINI MCHAML
  148. MCHELM.ICHAML(ISOUS)=MCHAML
  149. MCHAML.NOMCHE(1)='alphax'
  150. MCHAML.NOMCHE(2)='alphay'
  151. MCHAML.TYPCHE(1)='REAL*8 '
  152. MCHAML.TYPCHE(2)='REAL*8 '
  153. N1PTEL=NBNN
  154. N1EL=NBELEM
  155. N2PTEL=0
  156. N2EL=0
  157. SEGINI MELVA1
  158. SEGINI MELVA2
  159. MCHAML.IELVAL(1)=MELVA1
  160. MCHAML.IELVAL(2)=MELVA2
  161. IF(IDIM.EQ.3)THEN
  162. MCHAML.NOMCHE(3)='alphaz'
  163. MCHAML.TYPCHE(3)='REAL*8 '
  164. SEGINI MELVA3
  165. MCHAML.IELVAL(3)=MELVA3
  166. ENDIF
  167. IFAC=MLELAS.LECT(I1)
  168. MLENTI=MLEPOI.LECT(IFAC)
  169. MATRIX=MLECOE.LECT(IFAC)
  170. SEGACT MATRIX
  171. NBNN0=MLENTI.LECT(/1)
  172. IF(NBNN0.NE.NBNN)THEN
  173. WRITE(IOIMP,*) 'subroutine rlexc1.eso'
  174. CALL ERREUR(5)
  175. GOTO 9999
  176. ENDIF
  177. C
  178. C********** The first point of MLENTI is a FACE point
  179. C In the same way, MELEME.NUM(1,*) is the FACE point
  180. C
  181. C N.B. the first element is stored into MLELAS
  182. C the others are stored into MLEELT
  183. C
  184. DO I3=1,NBNN,1
  185. NG=MLENTI.LECT(I3)
  186. MELEME.NUM(I3,1)=NG
  187. MELVA1.VELCHE(I3,1)=MATRIX.MAT(2,I3)
  188. MELVA2.VELCHE(I3,1)=MATRIX.MAT(3,I3)
  189. IF(IDIM.EQ.3) MELVA3.VELCHE(I3,1)=MATRIX.MAT(4,I3)
  190. ENDDO
  191. SEGSUP MLENTI
  192. SEGSUP MATRIX
  193. C
  194. DO I2=2,NBELEM,1
  195. IFAC=MLEELT.LECT(IFAC)
  196. MLENTI=MLEPOI.LECT(IFAC)
  197. MATRIX=MLECOE.LECT(IFAC)
  198. SEGACT MATRIX
  199. NBNN0=MLENTI.LECT(/1)
  200. IF(NBNN0.NE.NBNN)THEN
  201. WRITE(IOIMP,*) 'subroutine rlexc1.eso'
  202. CALL ERREUR(5)
  203. GOTO 9999
  204. ENDIF
  205. C
  206. DO I3=1,NBNN,1
  207. NG=MLENTI.LECT(I3)
  208. MELEME.NUM(I3,I2)=NG
  209. MELVA1.VELCHE(I3,I2)=MATRIX.MAT(2,I3)
  210. MELVA2.VELCHE(I3,I2)=MATRIX.MAT(3,I3)
  211. IF(IDIM.EQ.3) MELVA3.VELCHE(I3,I2)=MATRIX.MAT(4,I3)
  212. ENDDO
  213. SEGSUP MLENTI
  214. SEGSUP MATRIX
  215. ENDDO
  216. C
  217. IFAC=MLEELT.LECT(IFAC)
  218. IF(IFAC.NE.0)THEN
  219. WRITE(IOIMP,*) 'subroutine rlexc1.eso'
  220. CALL ERREUR(5)
  221. GOTO 9999
  222. ENDIF
  223. SEGDES MCHAML
  224. SEGDES MELEME
  225. SEGDES MELVA1
  226. SEGDES MELVA2
  227. IF(IDIM.EQ.3) SEGDES MELVA3
  228. ENDIF
  229. ENDDO
  230. C
  231. SEGDES MCHELM
  232. C
  233. SEGSUP MLEPOI
  234. SEGSUP MLECOE
  235. SEGSUP MLEELT
  236. SEGSUP MLECON
  237. SEGSUP MLELAS
  238. C
  239. 9999 RETURN
  240. END
  241.  
  242.  
  243.  
  244.  
  245. C
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  

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