Télécharger tconvd.eso

Retour à la liste

Numérotation des lignes :

tconvd
  1. C TCONVD SOURCE FANDEUR 22/01/03 21:15:50 11237
  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. SEGINI XMATRI
  131. C
  132. * IMATTT(1) = XMATRI
  133. IRIGEL(4,1) = xMATRI
  134. xmatri.symre=2
  135. * SEGDES IMATRI
  136. C
  137. C Remplissage de la matrice élémentaire
  138. C
  139. SEGACT IPJUCE
  140. NBEJC1 = IPJUCE.NUM(/2)
  141. C activation du maillage et des valeurs du CHPOINT MULT1
  142. SEGACT IPT1
  143. SEGACT MPOVA1
  144. C petit controle du support du champ MULT1
  145. NBEL1 = IPT1.NUM(/2)
  146. IF (NBEL1.NE.NBNN) THEN
  147. CALL ERREUR (348)
  148. SEGDES IPT1
  149. SEGDES MPOVA1
  150. SEGDES IPJUCE
  151. SEGSUP MELEME
  152. SEGSUP XMATRI
  153. SEGSUP MRIGID
  154. SEGSUP REDI
  155. RETURN
  156. ENDIF
  157. C
  158. C
  159. C
  160. C activation du maillage et des valeurs du CHPOINT FLUX
  161. SEGACT IPTJUN
  162. NBNNJU = IPTJUN.NUM(/2)
  163. SEGACT MPOVA2
  164. C mise à 0.d0 de la matrice élémentaire
  165. DO 30 I30=1,NBNN
  166. DO 301 I301=1,NBNN
  167. RE(I30,I301,1) = 0.D0
  168. 301 CONTINUE
  169. 30 CONTINUE
  170. C
  171. C balayage sur les SEG3 du maillage des connectivités 'JUNCEL'
  172. DO 32 I32=1,NBEJC1
  173. NPT1 = IPJUCE.NUM(1,I32)
  174. NPTF1 = IPJUCE.NUM(2,I32)
  175. NPT2 = IPJUCE.NUM(3,I32)
  176. C récupération de la valeur du débit de masse au point NPTF1
  177. C et des valeurs du champ multiplicateur aux points NPT1 et NPT2
  178. C balayage sur les points du CHPOINT FLUX
  179. XVALF1 = 0.D0
  180. DO 321 I321=1,NBNNJU
  181. IF (NPTF1.EQ.(IPTJUN.NUM(1,I321))) THEN
  182. XVALF1 = MPOVA2.VPOCHA(I321,1)
  183. GOTO 322
  184. ENDIF
  185. 321 CONTINUE
  186. 322 CONTINUE
  187. C balayage sur les points du CHPOINT MULT1
  188. XVALM1 = 0.D0
  189. XVALM2 = 0.D0
  190. DO 323 I323=1,NBEL1
  191. IF (NPT1.EQ.(IPT1.NUM(1,I323))) XVALM1 = MPOVA1.VPOCHA(I323,1)
  192. IF (NPT2.EQ.(IPT1.NUM(1,I323))) XVALM2 = MPOVA1.VPOCHA(I323,1)
  193. 323 CONTINUE
  194. C quantités disparaissant ou apparaissant dans les deux compartiments
  195. XMASS1 = 0.5D0 * XVALM1 * (ABS(XVALF1)+XVALF1)
  196. XMASS2 = 0.5D0 * XVALM2 * (ABS(XVALF1)-XVALF1)
  197. C positions dans la matrice élémentaire
  198. IDUA1 = ORDR1(NPT1)
  199. IDUA2 = ORDR1(NPT2)
  200. C remplissage de la matrice
  201. RE(IDUA1,IDUA1,1) = RE(IDUA1,IDUA1,1) + XMASS1
  202. RE(IDUA1,IDUA2,1) = -1.D0 * XMASS2
  203. RE(IDUA2,IDUA1,1) = -1.D0 * XMASS1
  204. RE(IDUA2,IDUA2,1) = RE(IDUA2,IDUA2,1) + XMASS2
  205. 32 CONTINUE
  206. C
  207. SEGDES IPTJUN
  208. SEGDES MPOVA2
  209. C
  210. SEGDES IPT1
  211. SEGDES MPOVA1
  212. C
  213. SEGDES XMATRI
  214. SEGDES IPJUCE
  215. C
  216. SEGDES MELEME
  217. C
  218. SEGDES MRIGID
  219. SEGSUP REDI
  220. C
  221. END
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  

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