Télécharger tconvd.eso

Retour à la liste

Numérotation des lignes :

tconvd
  1. C TCONVD SOURCE PV090527 26/04/30 21:16:36 12529
  2. SUBROUTINE TCONVD (MRIGID,IPTCEL,LPRIMA,NOMPR1,NOMDU1,IPJUCE,
  3. & MPOVA1,IPT1,IPTJUN,MPOVA2)
  4. C
  5. C***********************************************************************
  6. C
  7. C FONCTION:
  8. C ---------
  9. C
  10. C Création de la matrice de RIGIDITE liée à la discrétisation
  11. C en "0D/1D" sur des éléments de type POINT.
  12. C
  13. C (appelée par la subroutine TOCONV)
  14. C
  15. C AUTEUR, DATE DE CREATION:
  16. C -------------------------
  17. C
  18. C Laurent DADA décembre 1996
  19. C
  20. C
  21. C LANGAGE:
  22. C --------
  23. C
  24. C ESOPE + FORTRAN77
  25. C
  26. C***********************************************************************
  27. C
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8 (A-H,O-Z)
  30. C
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34. -INC CCGEOME
  35. -INC SMCOORD
  36. -INC SMCHPOI
  37. -INC SMELEME
  38. POINTEUR IPTCEL.MELEME,IPTJUN.MELEME,IPJUCE.MELEME
  39. -INC SMRIGID
  40. C
  41. SEGMENT REDI
  42. INTEGER ORDR1(NNGOT)
  43. ENDSEGMENT
  44. C
  45. CHARACTER*8 TYPE,MOTI,MOT1,NOMPR1,NOMDU1,NOSUP1,NOSUD1,NOMMU1
  46. CHARACTER*7 NAMT1
  47. CHARACTER*8 NOMFL1,NOSUF1
  48. LOGICAL LPRIMA
  49. C
  50. C
  51. C Création du support géométrique pour la RIGIDITE
  52. C (maillage de type SUPER-ELEMENT)
  53. C
  54. NNGOT = nbpts
  55. SEGINI REDI
  56. C
  57. C On transforme le maillage de POI1 du support de l'inconnue CELL
  58. C en un maillage de type SUPER-ELEMENT.
  59. C
  60. SEGACT IPTCEL
  61. IF (IPTCEL.ITYPEL.NE.1) CALL CHANGE (IPTCEL,1)
  62. SEGACT IPTCEL
  63. C
  64. NBNN = IPTCEL.NUM(/2)
  65. NBSOUS = 0
  66. NBREF = 0
  67. NBELEM = 1
  68. SEGINI MELEME
  69. ICOLOR(1) = IDCOUL
  70. ITYPEL = 28
  71. DO 40 I40=1,NBNN
  72. NUM(I40,1) = IPTCEL.NUM(1,I40)
  73. ORDR1(NUM(I40,1)) = I40
  74. 40 CONTINUE
  75. C
  76. SEGDES IPTCEL
  77. C
  78. C Création de la RIGIDITE
  79. C
  80. NRIGE = 7
  81. NRIGEL = 1
  82. SEGINI MRIGID
  83. IPRIGI = MRIGID
  84. C
  85. MTYMAT = 'RIGIDITE'
  86. IFORIG = IFOUR
  87. ICHOLE = 0
  88. IMGEO1 = 0
  89. IMGEO2 = 0
  90. ISUPEQ = 0
  91. COERIG(1) = 1.D0
  92. IRIGEL(1,1) = MELEME
  93. IRIGEL(2,1) = 0
  94. IRIGEL(5,1) = NIFOUR
  95. IRIGEL(6,1) = 0
  96. IRIGEL(7,1) = 2
  97. C
  98. C Remplissage du descripteur de l'objet RIGIDITE
  99. C
  100. IF (LPRIMA) THEN
  101. NLIGRP = NBNN
  102. NLIGRD = NBNN
  103. SEGINI DESCR
  104. IRIGEL(3,1) = DESCR
  105. DO 10 I10=1,NBNN
  106. NOELEP(I10) = I10
  107. LISINC(I10) = NOMPR1
  108. 10 CONTINUE
  109. DO 11 I11=1,NBNN
  110. NOELED(I11) = I11
  111. LISDUA(I11) = NOMDU1
  112. 11 CONTINUE
  113. ELSE
  114. NLIGRP = NBNN
  115. NLIGRD = NBNN
  116. SEGINI DESCR
  117. IRIGEL(3,1) = DESCR
  118. DO 20 I20=1,NBNN
  119. NOELEP(I20) = I20
  120. LISINC(I20) = NOMDU1
  121. NOELED(I20) = I20
  122. LISDUA(I20) = NOMDU1
  123. 20 CONTINUE
  124. ENDIF
  125. C
  126. SEGDES DESCR
  127. C
  128. NELRIG = 1
  129. * SEGINI IMATRI
  130. rigrel=0
  131. SEGINI XMATRI
  132. C
  133. * IMATTT(1) = XMATRI
  134. IRIGEL(4,1) = xMATRI
  135. xmatri.symre=2
  136. * SEGDES IMATRI
  137. C
  138. C Remplissage de la matrice élémentaire
  139. C
  140. SEGACT IPJUCE
  141. NBEJC1 = IPJUCE.NUM(/2)
  142. C activation du maillage et des valeurs du CHPOINT MULT1
  143. SEGACT IPT1
  144. SEGACT MPOVA1
  145. C petit controle du support du champ MULT1
  146. NBEL1 = IPT1.NUM(/2)
  147. IF (NBEL1.NE.NBNN) THEN
  148. CALL ERREUR (348)
  149. SEGDES IPT1
  150. SEGDES MPOVA1
  151. SEGDES IPJUCE
  152. SEGSUP MELEME
  153. SEGSUP XMATRI
  154. SEGSUP MRIGID
  155. SEGSUP REDI
  156. RETURN
  157. ENDIF
  158. C
  159. C
  160. C
  161. C activation du maillage et des valeurs du CHPOINT FLUX
  162. SEGACT IPTJUN
  163. NBNNJU = IPTJUN.NUM(/2)
  164. SEGACT MPOVA2
  165. C mise à 0.d0 de la matrice élémentaire
  166. DO 30 I30=1,NBNN
  167. DO 301 I301=1,NBNN
  168. RE(I30,I301,1) = 0.D0
  169. 301 CONTINUE
  170. 30 CONTINUE
  171. C
  172. C balayage sur les SEG3 du maillage des connectivités 'JUNCEL'
  173. DO 32 I32=1,NBEJC1
  174. NPT1 = IPJUCE.NUM(1,I32)
  175. NPTF1 = IPJUCE.NUM(2,I32)
  176. NPT2 = IPJUCE.NUM(3,I32)
  177. C récupération de la valeur du débit de masse au point NPTF1
  178. C et des valeurs du champ multiplicateur aux points NPT1 et NPT2
  179. C balayage sur les points du CHPOINT FLUX
  180. XVALF1 = 0.D0
  181. DO 321 I321=1,NBNNJU
  182. IF (NPTF1.EQ.(IPTJUN.NUM(1,I321))) THEN
  183. XVALF1 = MPOVA2.VPOCHA(I321,1)
  184. GOTO 322
  185. ENDIF
  186. 321 CONTINUE
  187. 322 CONTINUE
  188. C balayage sur les points du CHPOINT MULT1
  189. XVALM1 = 0.D0
  190. XVALM2 = 0.D0
  191. DO 323 I323=1,NBEL1
  192. IF (NPT1.EQ.(IPT1.NUM(1,I323))) XVALM1 = MPOVA1.VPOCHA(I323,1)
  193. IF (NPT2.EQ.(IPT1.NUM(1,I323))) XVALM2 = MPOVA1.VPOCHA(I323,1)
  194. 323 CONTINUE
  195. C quantités disparaissant ou apparaissant dans les deux compartiments
  196. XMASS1 = 0.5D0 * XVALM1 * (ABS(XVALF1)+XVALF1)
  197. XMASS2 = 0.5D0 * XVALM2 * (ABS(XVALF1)-XVALF1)
  198. C positions dans la matrice élémentaire
  199. IDUA1 = ORDR1(NPT1)
  200. IDUA2 = ORDR1(NPT2)
  201. C remplissage de la matrice
  202. RE(IDUA1,IDUA1,1) = RE(IDUA1,IDUA1,1) + XMASS1
  203. RE(IDUA1,IDUA2,1) = -1.D0 * XMASS2
  204. RE(IDUA2,IDUA1,1) = -1.D0 * XMASS1
  205. RE(IDUA2,IDUA2,1) = RE(IDUA2,IDUA2,1) + XMASS2
  206. 32 CONTINUE
  207. C
  208. SEGDES IPTJUN
  209. SEGDES MPOVA2
  210. C
  211. SEGDES IPT1
  212. SEGDES MPOVA1
  213. C
  214. SEGDES XMATRI
  215. SEGDES IPJUCE
  216. C
  217. SEGDES MELEME
  218. C
  219. SEGDES MRIGID
  220. SEGSUP REDI
  221. C
  222. END
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  

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