Télécharger yla12t.eso

Retour à la liste

Numérotation des lignes :

yla12t
  1. C YLA12T SOURCE OF166741 24/12/13 21:17:38 12097
  2. C YLAP12 SOURCE GOUNAND 01/09/10 21:16:17 4198
  3. SUBROUTINE YLA12T(IGRTC,IQIMP,
  4. & MELEMC,MELEMF,MELEFL,ISURF,INORM,IDIAM,
  5. & ICHFLU,DT)
  6. C
  7. C************************************************************************
  8. C
  9. C PROJET : CASTEM 2000
  10. C
  11. C NOM : YLA12T
  12. C
  13. C DESCRIPTION : Subroutine appellée par YLAP11
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C ENTRÉES:
  23. C *******
  24. C
  25. C MU (REAL*8) : viscosité dynamique (kg/m^3 * m^2/s dans le SI)
  26. C
  27. C KAPPA (REAL*8) : conductivité thermique (J / (s m K))
  28. C
  29. C CV (REAL*8) : chaleur spécifique à volume constant (J / (kg K))
  30. C
  31. C IROC : pointeur du CHAMPOINT "CENTRE" densité (kg/m^3)
  32. C
  33. C IVITC : pointeur du CHAMPOINT "CENTRE" vitesse
  34. C
  35. C IGRVC : pointeur du CHAMPOINT "FACE" gradient de vitesse
  36. C
  37. C IGRTC : pointeur du CHAMPOINT "FACE" gradient de
  38. C température
  39. C
  40. C IVIMP : pointeur de CHAMPOINT vitesse imposé (sur des
  41. C points FACE)
  42. C
  43. C ITAUIM : pointeur de CHAMPOINT tenseur de contraintes
  44. C visqueux imposé (sur des points FACE)
  45. C
  46. C IQIMP : pointeur de CHAMPOINT flux de chaleur imposé
  47. C (sur des points FACE)
  48. C
  49. C MELEMC : pointeur du maillage "CENTRE"
  50. C
  51. C MELEMF : pointeur du maillage "FACE"
  52. C
  53. C MELEFL : pointeur du maillage "FACEL"
  54. C
  55. C ISURF : pointeur du CHAMPOINT "FACE" qui contient les
  56. C surfaces de faces
  57. C
  58. C INORM : pointeur du CHAMPOINT "FACE" qui contient les
  59. C normales aux facesP12
  60. C
  61. C IDIAM : pointeur du CHAMPOINT "CENTRE" qui contient le
  62. C diamètre des elts
  63. C
  64. C
  65. C SORTIES
  66. C *******
  67. C
  68. C ICHFLU : pointeur du CHAMPOINT "FACE" qui contient les
  69. C flux diffusives aux interface
  70. C
  71. C DT (REAL*8) : pas de temps de stabilité donné par le critère
  72. C de Fourier
  73. C
  74. C***********************************************************************
  75. C
  76. C**** N.B.: Traitement des conditions aux bords
  77. C
  78. C 'VIMP' : la vitesse imposé n'importe ou!
  79. C
  80. C 'QIMP' : flux de chaleur imposé n'importe ou
  81. C
  82. C 'TAUI' : tenseur de contraintes visqueux imposé n'importe ou
  83. C
  84. C
  85. IMPLICIT INTEGER(I-N)
  86.  
  87. -INC PPARAM
  88. -INC CCOPTIO
  89. -INC CCREEL
  90. -INC SMCHPOI
  91. -INC SMELEME
  92. -INC SMCOORD
  93. -INC SMLENTI
  94. -INC SMLMOTS
  95. C
  96. POINTEUR MPROC.MPOVAL, MPVITC.MPOVAL, MPGRVF.MPOVAL,
  97. & MPGRTF.MPOVAL,
  98. & MPVIMP.MPOVAL, MPTAUI.MPOVAL, MPQIMP.MPOVAL,
  99. & MPSURF.MPOVAL, MPNORM.MPOVAL, MPDIAM.MPOVAL,
  100. & MPFLUX.MPOVAL
  101. C
  102. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  103. POINTEUR MLCENT.MLENTI,MLEVIM.MLENTI,MLEQIM.MLENTI,MLETAI.MLENTI
  104. C
  105. INTEGER IROC,IVITC,IGRVC,IGRTC,IVIMP,ITAUIM,IQIMP
  106. & ,ISURF,INORM,IDIAM,ICHFLU
  107. & ,NFAC, NLCF, NGCF, NGCF1, NGCEG, NGCED
  108. & ,NLCEG,NLCED,NLFVI,NLFTI,NLFQI
  109. & ,IGEOM,ICORX1,ICORXG,ICORXD
  110.  
  111. REAL*8 MU, DT, UNSDT
  112. & ,UXG,UYG
  113. & ,XG,YG,XFMXG,YFMYG,DRG
  114. & ,UXD,UYD
  115. & ,XD,YD,XFMXD,YFMYD,DRD,ALPHA,UMALPH
  116. & ,UXF,UYF,DUXXF,DUXYF,DUYXF,DUYYF,DTXF,DTYF
  117. & ,DSTDU,TAUXX,TAUXY,TAUYY,QX,QY,XF,YF
  118. & ,CNX, CNY, ORIENT, RO, DIAM, DIAM2, CELL, SURF
  119. C
  120. CHARACTER*8 TYPE
  121. C
  122. C**** Initialisation de 1/DT
  123. C
  124. UNSDT = 0.0D0
  125. C
  126. C**** KRIPAD pour la correspondance global/local de centre
  127. C
  128. CALL KRIPAD(MELEMC,MLCENT)
  129. C
  130. C EN KRIPAD
  131. C SEGACT MELEMC
  132. C SEGACT MLCENT
  133. C
  134. CALL LICHT(IGRTC,MPGRTF,TYPE,IGEOM)
  135. CALL LICHT(ISURF,MPSURF,TYPE,IGEOM)
  136. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  137. CALL LICHT(IDIAM,MPDIAM,TYPE,IGEOM)
  138. CALL LICHT(ICHFLU,MPFLUX,TYPE,IGEOM)
  139. C
  140. C EN LICHT
  141. C SEGACT*MOD MPROC
  142. C SEGACT*MOD MPVITC
  143. C SEGACT*MOD MPGRVF
  144. C SEGACT*MOD MPGRTF
  145. C SEGACT*MOD MPSURF
  146. C SEGACT*MOD MPNORM
  147. C SEGACT*MOD MPDIAM
  148. C SEGACT*MOD MPFLUX
  149. C
  150. IF(IQIMP .NE. 0)THEN
  151. CALL LICHT(IQIMP,MPQIMP,TYPE,IGEOM)
  152. C SEGACT*MOD MPQIMP
  153. CALL KRIPAD(IGEOM,MLEQIM)
  154. C SEGACT IGEOM
  155. C SEGACT MLEQIM
  156. MELEME = IGEOM
  157. C SEGDES MELEME
  158. ENDIF
  159. C
  160. SEGACT MELEFL
  161. SEGACT MELEMF
  162. NFAC = MELEMF.NUM(/2)
  163. C
  164. C**** Boucle sur les faces
  165. C
  166. DO NLCF = 1, NFAC, 1
  167. C
  168. C******* NLCF = numero local du centre de facel
  169. C NGCF = numero global du centre de facel
  170. C NLCF1 = numero local du centre de face
  171. C NGCEG = numero global du centre ELT "gauche"
  172. C NLCEG = numero local du centre ELT "gauche"
  173. C NGCED = numero global du centre ELT "droite"
  174. C NLCED = numero local du centre ELT "droite"
  175. C
  176. NGCF = MELEMF.NUM(1,NLCF)
  177. NGCF1 = MELEFL.NUM(2,NLCF)
  178. IF(NGCF .NE. NGCF1)THEN
  179. MOTERR(1:40)= 'FACEL et FACE = ? '
  180. CALL ERREUR(5)
  181. GOTO 9999
  182. ENDIF
  183. C
  184. NGCEG = MELEFL.NUM(1,NLCF)
  185. NGCED = MELEFL.NUM(3,NLCF)
  186. NLCEG = MLCENT.LECT(NGCEG)
  187. NLCED = MLCENT.LECT(NGCED)
  188. C
  189. C******* On controlle si sur NGCF on impose de CL
  190. C
  191. C NLFVI = numero local du centre de face sul le maillage des
  192. C "vitesses" "imposées"
  193. C
  194. C NLFTI = numero local du centre de face sul le maillage des
  195. C "tau" "imposés"
  196. C
  197. C NLFQI = numero local du centre de face sul le maillage des
  198. C "q" "imposés"
  199. C
  200. IF(IQIMP .NE. 0)THEN
  201. NLFQI = MLEQIM.LECT(NGCF)
  202. ELSE
  203. NLFQI = 0
  204. ENDIF
  205. C
  206. IF(NGCEG .NE. NGCED)THEN
  207. C
  208. C********** Parametres geometriques
  209. C
  210.  
  211. C CB215821 : Modification pour faire le calcul independamment de la dimension...
  212. ICORX1 = ((IDIM + 1) * (NGCF - 1))+1
  213. ICORXG = ((IDIM + 1) * (NGCEG - 1))+1
  214. ICORXD = ((IDIM + 1) * (NGCED - 1))+1
  215. DRG = 0.
  216. DRD = 0.
  217.  
  218. DO ILADIM=1,IDIM
  219. XF = MCOORD.XCOOR(ICORX1+(ILADIM-1))
  220. XG = MCOORD.XCOOR(ICORXG+(ILADIM-1))
  221. XD = MCOORD.XCOOR(ICORXD+(ILADIM-1))
  222. XFMXG = XF - XG
  223. XFMXD = XF - XD
  224. DRG = DRG + (XFMXG*XFMXG)
  225. DRD = DRD + (XFMXD*XFMXD)
  226. ENDDO
  227.  
  228. DRG=SQRT(DRG)
  229. DRD=SQRT(DRD)
  230. C CB215821 Fin de la modification...
  231.  
  232. C
  233. C********** F=G -> DRG = 0 -> ALPHA = 0
  234. ALPHA=DRG/(DRG+DRD)
  235. UMALPH= 1.0D0 - ALPHA
  236. C
  237. C
  238. C********** Les valeurs à l'interface
  239. C
  240. C DRG=0 -> F=G
  241. C
  242. C
  243. C********** Flux de chaleur
  244. C
  245. c IF(NLFQI .GT. 0)THEN
  246. c QX = MPQIMP.VPOCHA(NLFQI,1)
  247. c ELSE
  248. C************* Gauche
  249. DTXF = MPGRTF.VPOCHA(NLCF,1)
  250. C
  251. C CORRECTION
  252. QX = -1.0D0 * DTXF
  253. C
  254. c ENDIF
  255. ELSE
  256. C
  257. C********** MURS
  258. C
  259. C Etat a gauche = Etat droite
  260. C
  261.  
  262. ALPHA=0.0D0
  263. UMALPH=1.0D0
  264. C
  265. C********** Parametres geometriques
  266. C
  267.  
  268. C CB215821 : Tout ce qui est la semble inutile...
  269. C ICORX1 = ((IDIM + 1) * (NGCF - 1))+1
  270. C XF = MCOORD.XCOOR(ICORX1)
  271. C YF = MCOORD.XCOOR(ICORX1+1)
  272. C
  273. C ICORXG = ((IDIM + 1) * (NGCEG - 1))+1
  274. C XG = MCOORD.XCOOR(ICORXG)
  275. C YG = MCOORD.XCOOR(ICORXG+1)
  276. C XFMXG = XF - XG
  277. C YFMYG = YF - YG
  278.  
  279. C
  280. C********** Flux de chaleur
  281. C
  282. c IF(NLFQI .GT. 0)THEN
  283. c QX = MPQIMP.VPOCHA(NLFQI,1)
  284. c ELSE
  285. C************* Gauche
  286. DTXF = MPGRTF.VPOCHA(NLCF,1)
  287. c DTYF = MPGRTF.VPOCHA(NLCF,2)
  288. C
  289. C CORRECTION
  290. QX = -1.0D0 * DTXF
  291. C
  292. c ENDIF
  293. ENDIF
  294. C
  295. C******* On calcule le sign du pruduit scalare
  296. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  297. C
  298. c CNX = MPNORM.VPOCHA(NLCF,1)
  299. c CNY = MPNORM.VPOCHA(NLCF,2)
  300. c ORIENT = CNX * XFMXG + CNY * YFMYG
  301. c ORIENT = SIGN(1.0D0,ORIENT)
  302. c IF(ORIENT .NE. 1.0D0)THEN
  303. c MOTERR(1:40)=
  304. c & 'LAPN , subroutine ylap12.eso. '
  305. c WRITE(IOIMP,*) MOTERR(1:40)
  306. c CALL ERREUR(5)
  307. c GOTO 9999
  308. c ENDIF
  309. C
  310. C******* Le flux aux interfaces
  311. C
  312. SURF = MPSURF.VPOCHA(NLCF,1)
  313. MPFLUX.VPOCHA(NLCF,1) =
  314. & ( QX ) * SURF
  315. C
  316. C****** Le pas de temps
  317. C
  318. c RO=UMALPH +
  319. c & ALPHA
  320. c DIAM = UMALPH*MPDIAM.VPOCHA(NLCEG,1) +
  321. c & ALPHA*MPDIAM.VPOCHA(NLCED,1)
  322. c DIAM2=DIAM*DIAM
  323. c CELL = 4.0D0*MU / (DIAM2*RO)
  324. c CELL = MAX(CELL, (4.0D0/(DIAM2*RO)))
  325. C
  326. c IF(CELL .GT. UNSDT)THEN
  327. c UNSDT = CELL
  328. c ENDIF
  329. C
  330. ENDDO
  331. C
  332. C
  333. c DT = 1.0D0 / (UNSDT + XPETIT)
  334. DT = 1.0D0
  335. C
  336. C SEGDES MELEFL
  337. C SEGDES MELEMF
  338. C SEGDES MELEMC
  339. C SEGDES MPSURF
  340. C SEGDES MPNORM
  341. C SEGDES MPDIAM
  342. SEGSUP MLCENT
  343. C
  344. C SEGDES MPGRTF
  345. C SEGDES MPFLUX
  346. C
  347. C IF(IQIMP .NE. 0)THEN
  348. C SEGDES MPQIMP
  349. C SEGDES MLEQIM
  350. C ENDIF
  351. C
  352. 9999 CONTINUE
  353. END
  354.  
  355.  
  356.  
  357.  
  358.  

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