Télécharger rlexco.eso

Retour à la liste

Numérotation des lignes :

rlexco
  1. C RLEXCO SOURCE OF166741 24/10/03 21:15:40 12022
  2. SUBROUTINE RLEXCO(MLEFC,MACOE2,MCHELM)
  3. C
  4. C**** Definition de MCHAML qui contient les coefficients
  5. C pour le calcul du gradient
  6. C
  7. IMPLICIT INTEGER(I-N)
  8.  
  9. -INC PPARAM
  10. -INC CCOPTIO
  11. INTEGER NBL, NBTPOI
  12. SEGMENT MLELEM
  13. INTEGER INDEX(NBL+1)
  14. INTEGER LESPOI(NBTPOI)
  15. ENDSEGMENT
  16. POINTEUR MLEFC.MLELEM
  17. C
  18. INTEGER N1,N2
  19. SEGMENT MATRIX
  20. REAL*8 MAT(N1,N2)
  21. ENDSEGMENT
  22. POINTEUR MACOE2.MATRIX
  23. C
  24. INTEGER N3,L1,N1PTEL,N1EL,N2PTEL,N2EL
  25. -INC SMCHAML
  26. INTEGER NBNN,NBELEM,NBSOUS,NBREF
  27. -INC SMELEME
  28. INTEGER JG
  29. -INC SMLENTI
  30. POINTEUR MLELAS.MLENTI, MLECON.MLENTI, MLEELT.MLENTI
  31. C
  32. INTEGER NMAX, IELEM, IPOS, IPOS1, ISOUS, NTSOUS, NG
  33. & , I1, I2, I3, IPOS2
  34. C
  35. SEGACT MLEFC
  36. SEGACT MACOE2
  37. NBL=MLEFC.INDEX(/1)-1
  38. C
  39. NMAX=0
  40. IPOS1=MLEFC.INDEX(1)
  41. DO IELEM = 1, NBL
  42. IPOS=IPOS1
  43. IPOS1=MLEFC.INDEX(1+IELEM)
  44. NMAX=MAX(NMAX,IPOS1-IPOS)
  45. ENDDO
  46. C
  47. C**** L'elt le plus grand a NMAX point
  48. C
  49. JG=NMAX
  50. SEGINI MLELAS
  51. SEGINI MLECON
  52. JG=NBL
  53. SEGINI MLEELT
  54. C
  55. C**** Les MLENTI ici initialisé
  56. C
  57. C MLELAS+MLEELT = structure pour definir les MAILLAGEs
  58. C du MCHELM
  59. C
  60. C NELT1=MLELAS.LECT(I) = 0 -> il n'y a pas d'elts avec I points
  61. C > 0 -> NELT1 a I points
  62. C Les autres elts avec I points sont
  63. C dedans MLEELT (liste chaînée qui
  64. C est lié à MLEELT)
  65. C
  66. C MLECON.LECT(I) = nombre de elts avec I points
  67. C
  68. C N.B: MLECON.LECT(I) est une information redondantemais pratique
  69. C
  70. C
  71. IPOS1=MLEFC.INDEX(1)
  72. DO IELEM = 1, NBL, 1
  73. IPOS=IPOS1
  74. IPOS1=MLEFC.INDEX(1+IELEM)
  75. NBNN=IPOS1-IPOS
  76. MLECON.LECT(NBNN)=MLECON.LECT(NBNN)+1
  77. MLEELT.LECT(IELEM)= MLELAS.LECT(NBNN)
  78. MLELAS.LECT(NBNN)=IELEM
  79. ENDDO
  80. C
  81. C**** Les supports
  82. C
  83. NTSOUS=0
  84. DO ISOUS=1,NMAX,1
  85. IF(MLECON.LECT(ISOUS).NE.0) NTSOUS=NTSOUS+1
  86. ENDDO
  87. C
  88. C**** Initialisation du MCHELM
  89. C
  90. N1=NTSOUS
  91. N2=IDIM
  92. N3=6
  93. L1=8
  94. SEGINI MCHELM
  95. MCHELM.TITCHE='Gradient'
  96. MCHELM.IFOCHE=IFOUR
  97. C
  98. ISOUS=0
  99. NBSOUS=0
  100. NBREF=0
  101. DO I1 = 1, NMAX, 1
  102. NBELEM=MLECON.LECT(I1)
  103. IF(NBELEM .GT. 0)THEN
  104. ISOUS=ISOUS+1
  105. NBNN=I1
  106. SEGINI MELEME
  107. C ITYPEL=32 -> 'POLY'
  108. ITYPEL=32
  109. MCHELM.IMACHE(ISOUS)=MELEME
  110. MCHELM.CONCHE(ISOUS)=' '
  111. MCHELM.INFCHE(ISOUS,6)=1
  112. SEGINI MCHAML
  113. MCHELM.ICHAML(ISOUS)=MCHAML
  114. MCHAML.NOMCHE(1)='alphax'
  115. MCHAML.NOMCHE(2)='alphay'
  116. MCHAML.TYPCHE(1)='REAL*8 '
  117. MCHAML.TYPCHE(2)='REAL*8 '
  118. N1PTEL=NBNN
  119. N1EL=NBELEM
  120. N2PTEL=0
  121. N2EL=0
  122. SEGINI MELVA1
  123. SEGINI MELVA2
  124. MCHAML.IELVAL(1)=MELVA1
  125. MCHAML.IELVAL(2)=MELVA2
  126. IF(IDIM.EQ.3)THEN
  127. MCHAML.NOMCHE(3)='alphaz'
  128. MCHAML.TYPCHE(3)='REAL*8 '
  129. SEGINI MELVA3
  130. MCHAML.IELVAL(3)=MELVA3
  131. ENDIF
  132. IELEM=MLELAS.LECT(I1)
  133. IPOS=MLEFC.INDEX(IELEM)
  134. IPOS1=MLEFC.INDEX(IELEM+1)
  135. IF((IPOS1-IPOS).NE.NBNN)THEN
  136. WRITE(IOIMP,*) 'subroutine rlexco.eso'
  137. CALL ERREUR(5)
  138. GOTO 9999
  139. ENDIF
  140. C
  141. C********** MELEME.NUM(1,*) est le point face
  142. C
  143. DO I3=1,NBNN,1
  144. IPOS2=IPOS+I3-1
  145. NG=MLEFC.LESPOI(IPOS2)
  146. MELEME.NUM(I3,1)=NG
  147. MELVA1.VELCHE(I3,1)=MACOE2.MAT(1,IPOS2)
  148. MELVA2.VELCHE(I3,1)=MACOE2.MAT(2,IPOS2)
  149. IF(IDIM.EQ.3) MELVA3.VELCHE(I3,1)=MACOE2.MAT(3,IPOS2)
  150. ENDDO
  151. C
  152. DO I2=2,NBELEM,1
  153. IELEM=MLEELT.LECT(IELEM)
  154. IPOS=MLEFC.INDEX(IELEM)
  155. IPOS1=MLEFC.INDEX(IELEM+1)
  156. IF((IPOS1-IPOS).NE.NBNN)THEN
  157. WRITE(IOIMP,*) 'subroutine rlexco.eso'
  158. CALL ERREUR(5)
  159. GOTO 9999
  160. ENDIF
  161. C
  162. DO I3=1,NBNN,1
  163. IPOS2=IPOS+I3-1
  164. NG=MLEFC.LESPOI(IPOS2)
  165. MELEME.NUM(I3,I2)=NG
  166. MELVA1.VELCHE(I3,I2)=MACOE2.MAT(1,IPOS2)
  167. MELVA2.VELCHE(I3,I2)=MACOE2.MAT(2,IPOS2)
  168. IF(IDIM.EQ.3) MELVA3.VELCHE(I3,I2)=MACOE2.MAT(3,IPOS2)
  169. ENDDO
  170. ENDDO
  171. C
  172. IELEM=MLEELT.LECT(IELEM)
  173. IF(IELEM.NE.0)THEN
  174. WRITE(IOIMP,*) 'subroutine rlexco.eso'
  175. CALL ERREUR(5)
  176. GOTO 9999
  177. ENDIF
  178. SEGDES MCHAML
  179. SEGDES MELEME
  180. SEGDES MELVA1
  181. SEGDES MELVA2
  182. IF(IDIM.EQ.3) SEGDES MELVA3
  183. ENDIF
  184. ENDDO
  185. C
  186. SEGDES MCHELM
  187. C
  188. SEGSUP MLEFC
  189. SEGSUP MACOE2
  190. SEGSUP MLEELT
  191. SEGSUP MLECON
  192. SEGSUP MLELAS
  193. C
  194. 9999 RETURN
  195. END
  196.  
  197.  
  198.  

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