Télécharger xlap13.eso

Retour à la liste

Numérotation des lignes :

xlap13
  1. C XLAP13 SOURCE CB215821 20/11/25 13:43:08 10792
  2. SUBROUTINE XLAP13(IMUC,IKAPC,ICVC,IROC,IVITC,IGRVC,
  3. & IGRTC,IVIMP,ITAUIM,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 : XLAP13
  12. C
  13. C DESCRIPTION : Subroutine appellée par ZLAP11
  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 IMUC : pointeur du CHAMPOINT "CENTRE"
  26. C viscosité dynamique (kg/m^3 * m^2/s dans le SI)
  27. C
  28. C IKAPC : pointeur du CHAMPOINT "CENTRE"
  29. C conductivité thermique (J / (s m K))
  30. C
  31. C ICVC : pointeur du CHAMPOINT "CENTRE"
  32. C chaleur spécifique à volume constant (J / (kg K))
  33. C
  34. C IROC : pointeur du CHAMPOINT "CENTRE" densité (kg/m^3)
  35. C
  36. C IVITC : pointeur du CHAMPOINT "CENTRE" vitesse
  37. C
  38. C IGRVC : pointeur du CHAMPOINT "FACE" gradient de vitesse
  39. C
  40. C IGRTC : pointeur du CHAMPOINT "FACE" gradient de
  41. C température
  42. C
  43. C IVIMP : pointeur de CHAMPOINT vitesse imposé (sur des
  44. C points FACE)
  45. C
  46. C ITAUIM : pointeur de CHAMPOINT tenseur de contraintes
  47. C visqueux imposé (sur des points FACE)
  48. C
  49. C IQIMP : pointeur de CHAMPOINT flux de chaleur imposé
  50. C (sur des points FACE)
  51. C
  52. C MELEMC : pointeur du maillage "CENTRE"
  53. C
  54. C MELEMF : pointeur du maillage "FACE"
  55. C
  56. C MELEFL : pointeur du maillage "FACEL"
  57. C
  58. C ISURF : pointeur du CHAMPOINT "FACE" qui contient les
  59. C surfaces de faces
  60. C
  61. C INORM : pointeur du CHAMPOINT "FACE" qui contient les
  62. C normales aux faces
  63. C
  64. C IDIAM : pointeur du CHAMPOINT "CENTRE" qui contient le
  65. C diamètre des elts
  66. C
  67. C
  68. C SORTIES
  69. C *******
  70. C
  71. C ICHFLU : pointeur du CHAMPOINT "FACE" qui contient les
  72. C flux diffusives aux interface
  73. C
  74. C DT (REAL*8) : pas de temps de stabilité donné par le critère
  75. C de Fourier
  76. C
  77. C***********************************************************************
  78. C
  79. C**** N.B.: Traitement des conditions aux bords
  80. C
  81. C 'VIMP' : la vitesse imposé n'importe ou!
  82. C
  83. C 'QIMP' : flux de chaleur imposé n'importe ou
  84. C
  85. C 'TAUI' : tenseur de contraintes visqueux imposé n'importe ou
  86. C
  87. C
  88. IMPLICIT INTEGER(I-N)
  89.  
  90. -INC PPARAM
  91. -INC CCOPTIO
  92. -INC CCREEL
  93. -INC SMCHPOI
  94. -INC SMELEME
  95. -INC SMCOORD
  96. -INC SMLENTI
  97. -INC SMLMOTS
  98. C
  99. POINTEUR MPMUC.MPOVAL,MPKAPC.MPOVAL,MPCVC.MPOVAL,
  100. $ MPROC.MPOVAL, MPVITC.MPOVAL, MPGRVF.MPOVAL,
  101. & MPGRTF.MPOVAL,
  102. & MPVIMP.MPOVAL, MPTAUI.MPOVAL, MPQIMP.MPOVAL,
  103. & MPSURF.MPOVAL, MPNORM.MPOVAL, MPDIAM.MPOVAL,
  104. & MPFLUX.MPOVAL
  105. C
  106. POINTEUR MELEMC.MELEME,MELEMF.MELEME,MELEFL.MELEME
  107. POINTEUR MLCENT.MLENTI,MLEVIM.MLENTI,MLEQIM.MLENTI,MLETAI.MLENTI
  108. C
  109. C**** Variables de COOPTIO
  110. C
  111. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  112. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  113. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  114. C & ,IECHO, IIMPI, IOSPI
  115. C & ,IDIM
  116. CC & ,MCOORD
  117. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  118. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  119. C & ,NORINC,NORVAL,NORIND,NORVAD
  120. C & ,NUCROU, IPSAUV
  121. CC
  122. INTEGER IMUC,IKAPC,ICVC,
  123. $ IROC,IVITC,IGRVC,IGRTC,IVIMP,ITAUIM,IQIMP
  124. & ,ISURF,INORM,IDIAM,ICHFLU
  125. & ,NFAC, NLCF, NGCF, NGCF1, NGCEG, NGCED
  126. & ,NLCEG,NLCED,NLFVI,NLFTI,NLFQI
  127. & , ICOORX, IGEOM
  128.  
  129. REAL*8 MU,KAPPA,LAMBRO,CV,DT, UNSDT
  130. & ,UXG,UYG,UZG
  131. & ,XG,YG,ZG,XFMXG,YFMYG,ZFMZG,DRG
  132. & ,UXD,UYD,UZD
  133. & ,XD,YD,ZD,XFMXD,YFMYD,ZFMZD,DRD,ALPHA,UMALPH
  134. & ,UXF,UYF,UZF,DUXXF,DUXYF,DUXZF,DUYXF,DUYYF,DUYZF
  135. & ,DUZXF,DUZYF,DUZZF
  136. & ,DTXF,DTYF,DTZF
  137. & ,DSTDU,TAUXX,TAUXY,TAUYY,TAUXZ,TAUYZ,TAUZZ
  138. $ ,QX,QY,QZ,XF,YF,ZF
  139. & ,CNX,CNY,CNZ,ORIENT,RO,DIAM,DIAM2,CELL,SURF
  140. C
  141. CHARACTER*8 TYPE
  142. C
  143. C**** Initialisation de 1/DT
  144. C
  145. UNSDT = 0.0D0
  146. C
  147. C**** KRIPAD pour la correspondance global/local de centre
  148. C
  149. CALL KRIPAD(MELEMC,MLCENT)
  150. C
  151. C EN KRIPAD
  152. C SEGACT MELEMC
  153. C SEGACT MLCENT
  154. C
  155. CALL LICHT(IMUC,MPMUC,TYPE,IGEOM)
  156. CALL LICHT(IKAPC,MPKAPC,TYPE,IGEOM)
  157. CALL LICHT(ICVC,MPCVC,TYPE,IGEOM)
  158. CALL LICHT(IROC,MPROC,TYPE,IGEOM)
  159. CALL LICHT(IVITC,MPVITC,TYPE,IGEOM)
  160. CALL LICHT(IGRVC,MPGRVF,TYPE,IGEOM)
  161. CALL LICHT(IGRTC,MPGRTF,TYPE,IGEOM)
  162. CALL LICHT(ISURF,MPSURF,TYPE,IGEOM)
  163. CALL LICHT(INORM,MPNORM,TYPE,IGEOM)
  164. CALL LICHT(IDIAM,MPDIAM,TYPE,IGEOM)
  165. CALL LICHT(ICHFLU,MPFLUX,TYPE,IGEOM)
  166. C
  167. C EN LICHT
  168. C SEGACT*MOD MPMUC
  169. C SEGACT*MOD MPKAPC
  170. C SEGACT*MOD MPCVC
  171. C SEGACT*MOD MPROC
  172. C SEGACT*MOD MPVITC
  173. C SEGACT*MOD MPGRVF
  174. C SEGACT*MOD MPGRTF
  175. C SEGACT*MOD MPSURF
  176. C SEGACT*MOD MPNORM
  177. C SEGACT*MOD MPDIAM
  178. C SEGACT*MOD MPFLUX
  179. C
  180. IF(IVIMP .NE. 0)THEN
  181. CALL LICHT(IVIMP,MPVIMP,TYPE,IGEOM)
  182. C SEGACT*MOD MPVIMP
  183. CALL KRIPAD(IGEOM,MLEVIM)
  184. C SEGACT IGEOM
  185. C SEGACT MLEVIM
  186. MELEME = IGEOM
  187. SEGDES MELEME
  188. ENDIF
  189. IF(ITAUIM .NE. 0)THEN
  190. CALL LICHT(ITAUIM,MPTAUI,TYPE,IGEOM)
  191. C SEGACT*MOD MPTAUI
  192. CALL KRIPAD(IGEOM,MLETAI)
  193. C SEGACT IGEOM
  194. C SEGACT MLETAI
  195. MELEME = IGEOM
  196. SEGDES MELEME
  197. ENDIF
  198. IF(IQIMP .NE. 0)THEN
  199. CALL LICHT(IQIMP,MPQIMP,TYPE,IGEOM)
  200. C SEGACT*MOD MPQIMP
  201. CALL KRIPAD(IGEOM,MLEQIM)
  202. C SEGACT IGEOM
  203. C SEGACT MLEQIM
  204. MELEME = IGEOM
  205. SEGDES MELEME
  206. ENDIF
  207. C
  208. SEGACT MELEFL
  209. SEGACT MELEMF
  210. NFAC = MELEMF.NUM(/2)
  211. C
  212. C**** Boucle sur les faces
  213. C
  214. DO NLCF = 1, NFAC, 1
  215. C
  216. C******* NLCF = numero local du centre de facel
  217. C NGCF = numero global du centre de facel
  218. C NLCF1 = numero local du centre de face
  219. C NGCEG = numero global du centre ELT "gauche"
  220. C NLCEG = numero local du centre ELT "gauche"
  221. C NGCED = numero global du centre ELT "droite"
  222. C NLCED = numero local du centre ELT "droite"
  223. C
  224. NGCF = MELEMF.NUM(1,NLCF)
  225. NGCF1 = MELEFL.NUM(2,NLCF)
  226. IF(NGCF .NE. NGCF1)THEN
  227. MOTERR(1:40)= 'FACEL et FACE = ? '
  228. CALL ERREUR(5)
  229. GOTO 9999
  230. ENDIF
  231. C
  232. NGCEG = MELEFL.NUM(1,NLCF)
  233. NGCED = MELEFL.NUM(3,NLCF)
  234. NLCEG = MLCENT.LECT(NGCEG)
  235. NLCED = MLCENT.LECT(NGCED)
  236. C
  237. C******* On controlle si sur NGCF on impose de CL
  238. C
  239. C NLFVI = numero local du centre de face sul le maillage des
  240. C "vitesses" "imposées"
  241. C
  242. C NLFTI = numero local du centre de face sul le maillage des
  243. C "tau" "imposés"
  244. C
  245. C NLFQI = numero local du centre de face sul le maillage des
  246. C "q" "imposés"
  247. C
  248. IF(IVIMP .NE. 0)THEN
  249. NLFVI = MLEVIM.LECT(NGCF)
  250. ELSE
  251. NLFVI = 0
  252. ENDIF
  253. C
  254. IF(ITAUIM .NE. 0)THEN
  255. NLFTI = MLETAI.LECT(NGCF)
  256. ELSE
  257. NLFTI = 0
  258. ENDIF
  259. C
  260. IF(IQIMP .NE. 0)THEN
  261. NLFQI = MLEQIM.LECT(NGCF)
  262. ELSE
  263. NLFQI = 0
  264. ENDIF
  265. C
  266. IF(NGCEG .NE. NGCED)THEN
  267. C
  268. C********** Parametres geometriques
  269. C
  270. ICOORX = ((IDIM + 1) * (NGCF - 1))+1
  271. XF = MCOORD.XCOOR(ICOORX)
  272. YF = MCOORD.XCOOR(ICOORX+1)
  273. ZF = MCOORD.XCOOR(ICOORX+2)
  274. C
  275. ICOORX = ((IDIM + 1) * (NGCEG - 1))+1
  276. XG = MCOORD.XCOOR(ICOORX)
  277. YG = MCOORD.XCOOR(ICOORX+1)
  278. ZG = MCOORD.XCOOR(ICOORX+2)
  279. XFMXG = XF - XG
  280. YFMYG = YF - YG
  281. ZFMZG = ZF - ZG
  282. DRG=SQRT((XFMXG*XFMXG)+(YFMYG*YFMYG)+(ZFMZG*ZFMZG))
  283. C
  284. ICOORX = ((IDIM + 1) * (NGCED - 1))+1
  285. XD = MCOORD.XCOOR(ICOORX)
  286. YD = MCOORD.XCOOR(ICOORX+1)
  287. ZD = MCOORD.XCOOR(ICOORX+2)
  288. XFMXD = XF - XD
  289. YFMYD = YF - YD
  290. ZFMZD = ZF - ZD
  291. DRD=SQRT((XFMXD*XFMXD)+(YFMYD*YFMYD)+(ZFMZD*ZFMZD))
  292. C
  293. C********** F=G -> DRG = 0 -> ALPHA = 0
  294. C
  295. ALPHA=DRG/(DRG+DRD)
  296. UMALPH= 1.0D0 - ALPHA
  297. C
  298. C********** Les valeurs à l'interface
  299. C
  300. C DRG=0 -> F=G
  301. C
  302. C
  303. C********** Tenseur de contraintes visqueux
  304. C
  305. DUXXF = MPGRVF.VPOCHA(NLCF,1)
  306. DUXYF = MPGRVF.VPOCHA(NLCF,2)
  307. DUXZF = MPGRVF.VPOCHA(NLCF,3)
  308. DUYXF = MPGRVF.VPOCHA(NLCF,4)
  309. DUYYF = MPGRVF.VPOCHA(NLCF,5)
  310. DUYZF = MPGRVF.VPOCHA(NLCF,6)
  311. DUZXF = MPGRVF.VPOCHA(NLCF,7)
  312. DUZYF = MPGRVF.VPOCHA(NLCF,8)
  313. DUZZF = MPGRVF.VPOCHA(NLCF,9)
  314. C
  315. IF (NLFTI .GT. 0) THEN
  316. TAUXX = MPTAUI.VPOCHA(NLFTI,1)
  317. TAUYY = MPTAUI.VPOCHA(NLFTI,2)
  318. TAUZZ = MPTAUI.VPOCHA(NLFTI,3)
  319. TAUXY = MPTAUI.VPOCHA(NLFTI,4)
  320. TAUXZ = MPTAUI.VPOCHA(NLFTI,5)
  321. TAUYZ = MPTAUI.VPOCHA(NLFTI,6)
  322. ELSE
  323. MU=UMALPH*MPMUC.VPOCHA(NLCEG,1) +
  324. & ALPHA*MPMUC.VPOCHA(NLCED,1)
  325. DSTDU = 2.0D0/3.0D0 * (DUXXF + DUYYF + DUZZF)
  326. TAUXX = MU * (2.0D0 * DUXXF - DSTDU)
  327. TAUYY = MU * (2.0D0 * DUYYF - DSTDU)
  328. TAUZZ = MU * (2.0D0 * DUZZF - DSTDU)
  329. TAUXY = MU * (DUXYF + DUYXF)
  330. TAUXZ = MU * (DUXZF + DUZXF)
  331. TAUYZ = MU * (DUZYF + DUYZF)
  332. ENDIF
  333. C
  334. C********** Vitesse
  335. C
  336. IF( NLFVI .GT. 0) THEN
  337. UXF = MPVIMP.VPOCHA(NLFVI,1)
  338. UYF = MPVIMP.VPOCHA(NLFVI,2)
  339. UZF = MPVIMP.VPOCHA(NLFVI,3)
  340. ELSE
  341. C************* Gauche
  342. UXG = MPVITC.VPOCHA(NLCEG,1)
  343. UYG = MPVITC.VPOCHA(NLCEG,2)
  344. UZG = MPVITC.VPOCHA(NLCEG,3)
  345. C************* Droite
  346. UXD = MPVITC.VPOCHA(NLCED,1)
  347. UYD = MPVITC.VPOCHA(NLCED,2)
  348. UZD = MPVITC.VPOCHA(NLCED,3)
  349. C************* Face
  350. UXF = UMALPH * UXG + ALPHA * UXD
  351. UYF = UMALPH * UYG + ALPHA * UYD
  352. UZF = UMALPH * UZG + ALPHA * UZD
  353. C************* Correction de la vitesse lineaire exacte
  354. UXF = UXF +
  355. & (DUXXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  356. & (DUXYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  357. & (DUXZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  358. UYF = UYF +
  359. & (DUYXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  360. & (DUYYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  361. & (DUYZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  362. UZF = UZF +
  363. & (DUZXF * ((XFMXG * UMALPH)+ (XFMXD * ALPHA))) +
  364. & (DUZYF * ((YFMYG * UMALPH)+ (YFMYD * ALPHA))) +
  365. & (DUZZF * ((ZFMZG * UMALPH)+ (ZFMZD * ALPHA)))
  366. ENDIF
  367. C
  368. C********** Flux de chaleur
  369. C
  370. IF(NLFQI .GT. 0)THEN
  371. QX = MPQIMP.VPOCHA(NLFQI,1)
  372. QY = MPQIMP.VPOCHA(NLFQI,2)
  373. QZ = MPQIMP.VPOCHA(NLFQI,3)
  374. ELSE
  375. C************* Gauche
  376. DTXF = MPGRTF.VPOCHA(NLCF,1)
  377. DTYF = MPGRTF.VPOCHA(NLCF,2)
  378. DTZF = MPGRTF.VPOCHA(NLCF,3)
  379. C
  380. KAPPA=UMALPH*MPKAPC.VPOCHA(NLCEG,1) +
  381. & ALPHA*MPKAPC.VPOCHA(NLCED,1)
  382. QX = -1.0D0 * KAPPA * DTXF
  383. QY = -1.0D0 * KAPPA * DTYF
  384. QZ = -1.0D0 * KAPPA * DTZF
  385. C
  386. ENDIF
  387. ELSE
  388. C
  389. C********** MURS
  390. C
  391. C Etat a gauche = Etat droite
  392. C
  393. ALPHA=0.0D0
  394. UMALPH=1.0D0
  395. C
  396. C********** Parametres geometriques
  397. C
  398. ICOORX = ((IDIM + 1) * (NGCF - 1))+1
  399. XF = MCOORD.XCOOR(ICOORX)
  400. YF = MCOORD.XCOOR(ICOORX+1)
  401. ZF = MCOORD.XCOOR(ICOORX+2)
  402. C
  403. ICOORX = ((IDIM + 1) * (NGCEG - 1))+1
  404. XG = MCOORD.XCOOR(ICOORX)
  405. YG = MCOORD.XCOOR(ICOORX+1)
  406. ZG = MCOORD.XCOOR(ICOORX+2)
  407. XFMXG = XF - XG
  408. YFMYG = YF - YG
  409. ZFMZG = ZF - ZG
  410. C
  411. C********** Tenseur de contraintes visqueux
  412. C
  413. DUXXF = MPGRVF.VPOCHA(NLCF,1)
  414. DUXYF = MPGRVF.VPOCHA(NLCF,2)
  415. DUXZF = MPGRVF.VPOCHA(NLCF,3)
  416. DUYXF = MPGRVF.VPOCHA(NLCF,4)
  417. DUYYF = MPGRVF.VPOCHA(NLCF,5)
  418. DUYZF = MPGRVF.VPOCHA(NLCF,6)
  419. DUZXF = MPGRVF.VPOCHA(NLCF,7)
  420. DUZYF = MPGRVF.VPOCHA(NLCF,8)
  421. DUZZF = MPGRVF.VPOCHA(NLCF,9)
  422. C
  423. IF (NLFTI .GT. 0) THEN
  424. TAUXX = MPTAUI.VPOCHA(NLFTI,1)
  425. TAUYY = MPTAUI.VPOCHA(NLFTI,2)
  426. TAUZZ = MPTAUI.VPOCHA(NLFTI,3)
  427. TAUXY = MPTAUI.VPOCHA(NLFTI,4)
  428. TAUXZ = MPTAUI.VPOCHA(NLFTI,5)
  429. TAUYZ = MPTAUI.VPOCHA(NLFTI,6)
  430. ELSE
  431. MU=UMALPH*MPMUC.VPOCHA(NLCEG,1) +
  432. & ALPHA*MPMUC.VPOCHA(NLCED,1)
  433. DSTDU = 2.0D0/3.0D0 * (DUXXF + DUYYF)
  434. TAUXX = MU * (2.0D0 * DUXXF - DSTDU)
  435. TAUYY = MU * (2.0D0 * DUYYF - DSTDU)
  436. TAUZZ = MU * (2.0D0 * DUZZF - DSTDU)
  437. TAUXY = MU * (DUXYF + DUYXF)
  438. TAUXZ = MU * (DUXZF + DUZXF)
  439. TAUYZ = MU * (DUZYF + DUYZF)
  440. ENDIF
  441. C
  442. C********** Vitesse
  443. C
  444. IF( NLFVI .GT. 0) THEN
  445. UXF = MPVIMP.VPOCHA(NLFVI,1)
  446. UYF = MPVIMP.VPOCHA(NLFVI,2)
  447. UZF = MPVIMP.VPOCHA(NLFVI,3)
  448. ELSE
  449. UXF = MPVITC.VPOCHA(NLCEG,1)
  450. UYF = MPVITC.VPOCHA(NLCEG,2)
  451. UZF = MPVITC.VPOCHA(NLCEG,3)
  452. C************* Correction de la vitesse lineaire exacte
  453. UXF = UXF +
  454. & (DUXXF * XFMXG ) +
  455. & (DUXYF * YFMYG ) +
  456. & (DUXZF * ZFMZG )
  457. UYF = UYF +
  458. & (DUYXF * XFMXG ) +
  459. & (DUYYF * YFMYG ) +
  460. & (DUYZF * ZFMZG )
  461. UZF = UZF +
  462. & (DUZXF * XFMXG ) +
  463. & (DUZYF * YFMYG ) +
  464. & (DUZZF * ZFMZG )
  465. ENDIF
  466. C
  467. C********** Flux de chaleur
  468. C
  469. IF(NLFQI .GT. 0)THEN
  470. QX = MPQIMP.VPOCHA(NLFQI,1)
  471. QY = MPQIMP.VPOCHA(NLFQI,2)
  472. QZ = MPQIMP.VPOCHA(NLFQI,3)
  473. ELSE
  474. C************* Gauche
  475. DTXF = MPGRTF.VPOCHA(NLCF,1)
  476. DTYF = MPGRTF.VPOCHA(NLCF,2)
  477. DTZF = MPGRTF.VPOCHA(NLCF,3)
  478. C
  479. KAPPA=UMALPH*MPKAPC.VPOCHA(NLCEG,1) +
  480. & ALPHA*MPKAPC.VPOCHA(NLCED,1)
  481. QX = -1.0D0 * KAPPA * DTXF
  482. QY = -1.0D0 * KAPPA * DTYF
  483. QZ = -1.0D0 * KAPPA * DTZF
  484. C
  485. ENDIF
  486. ENDIF
  487. C
  488. C******* On calcule le sign du pruduit scalare
  489. C (Normales de Castem) * (vecteur "gauche" -> "centre")
  490. C
  491. CNX = MPNORM.VPOCHA(NLCF,1)
  492. CNY = MPNORM.VPOCHA(NLCF,2)
  493. CNZ = MPNORM.VPOCHA(NLCF,3)
  494. ORIENT = CNX * XFMXG + CNY * YFMYG + CNZ * ZFMZG
  495. ORIENT = SIGN(1.0D0,ORIENT)
  496. IF(ORIENT .NE. 1.0D0)THEN
  497. MOTERR(1:40)=
  498. & 'LAPN , subroutine xlap13.eso. '
  499. WRITE(IOIMP,*) MOTERR(1:40)
  500. MOTERR(1:40)=
  501. & 'Orientation normales. '
  502. WRITE(IOIMP,*) MOTERR(1:40)
  503. CALL ERREUR(5)
  504. GOTO 9999
  505. ENDIF
  506. C
  507. C******* Le flux aux interfaces
  508. C
  509. SURF = MPSURF.VPOCHA(NLCF,1)
  510. MPFLUX.VPOCHA(NLCF,1) = ((TAUXX * CNX) + (TAUXY * CNY) +
  511. & (TAUXZ * CNZ))
  512. & * SURF * (-1.0D0)
  513. MPFLUX.VPOCHA(NLCF,2) = ((TAUXY * CNX) + (TAUYY * CNY) +
  514. & (TAUYZ * CNZ))
  515. & * SURF * (-1.0D0)
  516. MPFLUX.VPOCHA(NLCF,3) = ((TAUXZ * CNX) + (TAUYZ * CNY) +
  517. & (TAUZZ * CNZ))
  518. & * SURF * (-1.0D0)
  519. MPFLUX.VPOCHA(NLCF,4) = (
  520. & ((TAUXX * UXF + TAUXY * UYF + TAUXZ * UZF - QX) * CNX) +
  521. & ((TAUXY * UXF + TAUYY * UYF + TAUYZ * UZF - QY) * CNY) +
  522. & ((TAUXZ * UXF + TAUYZ * UYF + TAUZZ * UZF - QZ) * CNZ))
  523. & * SURF * (-1.0D0)
  524. C
  525. C****** Le pas de temps
  526. C
  527. CV=UMALPH*MPCVC.VPOCHA(NLCEG,1) +
  528. & ALPHA*MPCVC.VPOCHA(NLCED,1)
  529. RO=UMALPH*MPROC.VPOCHA(NLCEG,1) +
  530. & ALPHA*MPROC.VPOCHA(NLCED,1)
  531. DIAM = UMALPH*MPDIAM.VPOCHA(NLCEG,1) +
  532. & ALPHA*MPDIAM.VPOCHA(NLCED,1)
  533. DIAM2=DIAM*DIAM
  534. CELL = 4.0D0*MU / (DIAM2*RO)
  535. LAMBRO=KAPPA/CV
  536. CELL = MAX(CELL, (4.0D0*LAMBRO/(DIAM2*RO)))
  537. C
  538. IF(CELL .GT. UNSDT)THEN
  539. UNSDT = CELL
  540. ENDIF
  541. C
  542. ENDDO
  543. C
  544. C
  545. DT = 1.0D0 / (UNSDT + XPETIT)
  546. C
  547. SEGDES MELEFL
  548. SEGDES MELEMF
  549. SEGDES MELEMC
  550. SEGDES MPSURF
  551. SEGDES MPNORM
  552. SEGDES MPDIAM
  553. SEGSUP MLCENT
  554. C
  555. SEGDES MPKAPC
  556. SEGDES MPMUC
  557. SEGDES MPCVC
  558. SEGDES MPROC
  559. SEGDES MPVITC
  560. SEGDES MPGRVF
  561. SEGDES MPGRTF
  562. SEGDES MPFLUX
  563. C
  564. IF(IVIMP .NE. 0) THEN
  565. SEGDES MPVIMP
  566. SEGSUP MLEVIM
  567. ENDIF
  568. IF(ITAUIM .NE. 0)THEN
  569. SEGDES MPTAUI
  570. SEGSUP MLETAI
  571. ENDIF
  572. IF(IQIMP .NE. 0)THEN
  573. SEGDES MPQIMP
  574. SEGDES MLEQIM
  575. ENDIF
  576. C
  577. 9999 CONTINUE
  578. RETURN
  579. END
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  

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