Télécharger zfpu.eso

Retour à la liste

Numérotation des lignes :

zfpu
  1. C ZFPU SOURCE CB215821 20/11/25 13:44:53 10792
  2. SUBROUTINE ZFPU(MTABX,MTAB1)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C
  7. C SYNTAXE :
  8. C
  9. C FPU NU UET YP <,VPAROI>
  10. C
  11. C 1------2
  12. C (R1,AL1) LEF FLUIDE NOEUDS 1 2
  13. C
  14. C
  15. C ANU VISCOSITE CINEMATIQUE
  16. C UET U*
  17. C YP DISTANCE A LA PAROI
  18. C VPAROI VITESSE DE LA PAROI (PAR DEFAUT 0.)
  19. C
  20. C CAS TRIDIMENSIONNEL
  21. C 4 ________ 3
  22. C / FLUIDE /
  23. C 1 /________/2
  24. C
  25. C
  26. C***********************************************************************
  27.  
  28. -INC CCVQUA4
  29.  
  30. -INC PPARAM
  31. -INC CCOPTIO
  32. -INC SMCOORD
  33. -INC SMLENTI
  34. -INC SMELEME
  35. POINTEUR MELEM1.MELEME
  36. -INC SMCHPOI
  37. POINTEUR IZG1.MCHPOI, IZGG1.MPOVAL
  38. POINTEUR IZD2.MCHPOI, IZDD2.MPOVAL
  39. POINTEUR IZD3.MCHPOI, IZDD3.MPOVAL
  40. POINTEUR IZTU1.MPOVAL,IZTU2.MPOVAL,IZTU3.MPOVAL
  41. POINTEUR MZNU.MPOVAL,MZUE.MPOVAL,MZYP.MPOVAL
  42. POINTEUR IZVOL.MPOVAL
  43.  
  44. -INC SMTABLE
  45. POINTEUR KIZG.TABLE,MTABX.MTABLE,OPTI.MTABLE
  46. POINTEUR INCO.TABLE,KOPT.MTABLE,KIZD.MTABLE
  47. POINTEUR MTABZ.MTABLE,MTABD.MTABLE
  48. -INC SMLMOTS
  49. POINTEUR LINCO.MLMOTS
  50. CHARACTER*8 NOMZ,NOMI,NOMA,TYPE,CHAI,TYPC
  51. LOGICAL LOGI
  52. PARAMETER (NTB=1)
  53. CHARACTER*8 LTAB(NTB)
  54. DIMENSION KTAB(NTB),IXV(3)
  55. DATA LTAB/'KIZX '/
  56. C*****************************************************************************
  57. CFPU
  58. C write(6,*)' debut FPU '
  59. CALL LEKTAB(MTAB1,'INCO',KINC)
  60. IF(KINC.EQ.0)THEN
  61. WRITE(6,*)' Opérateur NSKE :'
  62. WRITE(6,*)' Il n''y a pas de table INCO ? ?.'
  63. RETURN
  64. ENDIF
  65.  
  66. C*****************************************************************************
  67. C OPTIONS
  68. C CES PARAMETRES SONT INITIALISES POUR ETRE EN DECENTRE
  69. IKOMP=0
  70. IAXI=0
  71. IF(IFOMOD.EQ.0)IAXI=2
  72. C CALL LEKTAB(MTABX,'KOPT',OPTI)
  73. KOPTI=0
  74. TYPE=' '
  75. CALL ACMO(MTABX,'KOPT',TYPE,IENT)
  76. IF(TYPE.EQ.'TABLE')KOPTI=IENT
  77. IF(KOPTI.NE.0)THEN
  78. TYPE=' '
  79. CALL ACMO(KOPTI,'PRECAU',TYPE,IENT)
  80. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'PRECAU',IPRE)
  81. TYPE=' '
  82. CALL ACMO(KOPTI,'IKOMP',TYPE,IENT)
  83. IF(TYPE.EQ.'ENTIER')CALL ACME(KOPTI,'IKOMP',IKOMP)
  84.  
  85. ENDIF
  86. C*****************************************************************************
  87.  
  88. CALL ACMM(MTABX,'NOMZONE',NOMZ)
  89. CALL LEKTAB(MTABX,'DOMZ',MTABZ)
  90. IF(MTABZ.EQ.0)THEN
  91. WRITE(6,*)' On ne trouve pas l''indice DOMZ ? '
  92. GO TO 90
  93. ENDIF
  94. SEGACT MTABZ
  95.  
  96. CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
  97. IF(MELEME.EQ.0)GO TO 90
  98. SEGACT MELEME
  99.  
  100. CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  101. IF(MELEMC.EQ.0)GO TO 90
  102.  
  103. CALL LEKTAB(MTABZ,'XXVOLUM',MCHPOI)
  104. IF(MCHPOI.EQ.0)GO TO 90
  105. CALL LICHT(MCHPOI,IZVOL,TYPC,IGEOM)
  106. C***
  107.  
  108. TYPE='LISTMOTS'
  109. CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
  110. SEGACT LINCO
  111.  
  112. CALL ACME(MTABX,'IARG',IARG)
  113. IKOMP=0
  114.  
  115. C--Cas incompréssible
  116. IF(IKOMP.EQ.0)THEN
  117. C 1er coefficient : nu
  118. IXV(1)=MELEMC
  119. IXV(2)=1
  120. IXV(3)=0
  121. IRET =0
  122. CALL LEKCOF('Opérateur FPU :',
  123. & MTABX,KINC,1,IXV,MNU,MZNU,NPT1,NC1,IK1,IRET)
  124. IF(IRET.EQ.0)RETURN
  125.  
  126. C 2ème coefficient : uet
  127. IXV(1)=MELEMC
  128. IXV(2)=0
  129. IXV(3)=0
  130. IRET =0
  131. CALL LEKCOF('Opérateur FPU :',
  132. & MTABX,KINC,2,IXV,MUE,MZUE,NPT2,NC2,IK2,IRET)
  133. IF(IRET.EQ.0)RETURN
  134.  
  135. C 3ème coefficient : yp
  136. IXV(1)=0
  137. IXV(2)=1
  138. IXV(3)=0
  139. IRET =0
  140. CALL LEKCOF('Opérateur FPU :',
  141. & MTABX,KINC,3,IXV,MYP,MZYP,NPT3,NC3,IK3,IRET)
  142. IF(IRET.EQ.0)RETURN
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. C--Cas compréssible
  152. ELSEIF(IKOMP.EQ.1)THEN
  153. C 1er coefficient : mu
  154. IXV(1)=MELEMC
  155. IXV(2)=1
  156. IXV(3)=0
  157. CALL LEKCOF('Opérateur FPU :',
  158. & MTABX,KINC,1,IXV,MNU,MZNU,NPT1,NC1,IK1,IRET)
  159. IF(IRET.EQ.0)RETURN
  160.  
  161. C 2ème coefficient : uet
  162. IXV(1)=MELEMC
  163. IXV(2)=0
  164. IXV(3)=0
  165. CALL LEKCOF('Opérateur FPU :',
  166. & MTABX,KINC,2,IXV,MUE,MZUE,NPT2,NC2,IK2,IRET)
  167. IF(IRET.EQ.0)RETURN
  168.  
  169. ENDIF
  170.  
  171. CALL LEKTAB(MTABX,'EQEX',MTAB1)
  172. IF(MTAB1.EQ.0)THEN
  173. WRITE(6,*)' On ne trouve pas l''indice EQEX ? '
  174. GO TO 90
  175. ENDIF
  176. SEGACT MTAB1
  177. CALL LEKTAB(MTAB1,'DOMAINE',MTABD)
  178. IF(MTABD.EQ.0)THEN
  179. WRITE(6,*)' On ne trouve pas l''indice DOMAINE ?'
  180. GO TO 90
  181. ENDIF
  182. SEGACT MTABD
  183. CALL LEKTAB(MTABD,'SOMMET',MELEM1)
  184. IF(MELEM1.EQ.0)THEN
  185. WRITE(6,*)' On ne trouve pas l''indice SOMMET ?'
  186. GO TO 90
  187. ENDIF
  188.  
  189. CALL LEKTAB(MTAB1,'INCO',INCO)
  190. IF(INCO.EQ.0)THEN
  191. WRITE(6,*)'Il n''y a pas de table INCO '
  192. RETURN
  193. ENDIF
  194. SEGACT INCO
  195.  
  196. CALL LEKTAB(MTAB1,'KIZD',KIZD)
  197. IF(KIZD.EQ.0)THEN
  198. WRITE(6,*)'Il n''y a pas de table KIZD '
  199. RETURN
  200. ENDIF
  201. SEGACT KIZD
  202.  
  203. CALL KRIPAD(MELEM1,MLENTI)
  204.  
  205. C*****************************************************************************
  206.  
  207. CALL LEKTAB(MTAB1,'KIZG',KIZG)
  208. IF(KIZG.EQ.0)THEN
  209. CALL CRTABL(KIZG)
  210. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  211. CALL ECMO(MTAB1,'KIZG','TABLE ',KIZG)
  212. ELSE
  213. SEGACT KIZG
  214. ENDIF
  215.  
  216. C VERIFICATIONS SUR LES INCONNUES
  217. NBINC=LINCO.MOTS(/2)
  218. IF(NBINC.NE.3)THEN
  219. WRITE(6,*)'Nombre d''inconnues incorrecte : ',NBINC,' On attend 3'
  220. RETURN
  221. ENDIF
  222.  
  223. C --> 1 ere Inconnue
  224.  
  225. NOMI=LINCO.MOTS(1)
  226.  
  227. TYPE=' '
  228. CALL ACMO(INCO,NOMI,TYPE,MCHPOI)
  229. IF(TYPE.NE.'CHPOINT ')THEN
  230. WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
  231. RETURN
  232. ELSE
  233. CALL LICHT(MCHPOI,IZTU1,TYPC,IGEOM0)
  234. ENDIF
  235.  
  236. TYPE=' '
  237. CALL ACMO(KIZG,NOMI,TYPE,IZG1)
  238. IF(TYPE.NE.'CHPOINT ')THEN
  239. NC=IZTU1.VPOCHA(/2)
  240. TYPE='SOMMET'
  241. CALL CRCHPT(TYPE,IGEOM0,NC,IZG1)
  242. CALL ECMO(KIZG,NOMI,'CHPOINT ',IZG1)
  243. ENDIF
  244.  
  245. CALL LICHT(IZG1,IZGG1,TYPC,IGEOM)
  246.  
  247. C --> 2 eme Inconnue
  248.  
  249. NOMI=LINCO.MOTS(2)
  250.  
  251. TYPE=' '
  252. CALL ACMO(INCO,NOMI,TYPE,MCHPOI)
  253. IF(TYPE.NE.'CHPOINT ')THEN
  254. WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
  255. RETURN
  256. ELSE
  257. CALL LICHT(MCHPOI,IZTU2,TYPC,IGEOM0)
  258. ENDIF
  259.  
  260. TYPE=' '
  261. CALL ACMO(KIZD,NOMI,TYPE,IZD2)
  262. IF(TYPE.NE.'CHPOINT ')THEN
  263. WRITE(6,*)' Il n''y a pas de diagonale associee a ',NOMI
  264. RETURN
  265. ENDIF
  266.  
  267. CALL LICHT(IZD2,IZDD2,TYPC,IGEOM)
  268.  
  269. C --> 3 eme Inconnue
  270.  
  271. NOMI=LINCO.MOTS(3)
  272.  
  273. TYPE=' '
  274. CALL ACMO(INCO,NOMI,TYPE,MCHPOI)
  275. IF(TYPE.NE.'CHPOINT ')THEN
  276. WRITE(6,*)' L objet CHPOINT ',NOMI,' n existe pas dans la table'
  277. RETURN
  278. ELSE
  279. CALL LICHT(MCHPOI,IZTU3,TYPC,IGEOM0)
  280. ENDIF
  281.  
  282. TYPE=' '
  283. CALL ACMO(KIZD,NOMI,TYPE,IZD3)
  284. IF(TYPE.NE.'CHPOINT ')THEN
  285. WRITE(6,*)' Il n''y a pas de diagonale associee a ',NOMI
  286. RETURN
  287. ENDIF
  288.  
  289. CALL LICHT(IZD3,IZDD3,TYPC,IGEOM)
  290.  
  291.  
  292. SEGACT MELEME
  293. NBSOUS=LISOUS(/1)
  294. IF(NBSOUS.EQ.0)NBSOUS=1
  295. NUTOEL=0
  296.  
  297. NPTD=IZTU1.VPOCHA(/1)
  298. IES=IDIM
  299.  
  300. DO 1 L=1,NBSOUS
  301. IPT1=MELEME
  302. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  303. SEGACT IPT1
  304.  
  305. NP =IPT1.NUM(/1)
  306. NBEL=IPT1.NUM(/2)
  307.  
  308. C SUBROUTINE XCVFPU(NEL,K0,NP,IES,IAXI,IPADL,
  309. C & LEF,XYZ, ----> IPT1,COOR
  310. C & VOLF, ----> IZVOL.T,
  311. C & UN,TK,TE, ----> IZTU1.T,IZTU2.T,IZTU3.T,
  312. C & F, ----> IZG1,
  313. C & DK,DE, ----> IZD2,IZD3
  314. C & ANU,IKC,UET,YP, ----> IZTG1.T,IK1,IZTG2.T,IZTG3.T,
  315. C & VPAROI,IKV, IZTG4.T,IK4,
  316. C & PORO,NPR,IPOR) ----> IZPORO,NPOR,IOP7
  317.  
  318. C write(6,*)' Appel YCVFPU '
  319. CALL ZCVFPU(NBEL,NUTOEL,NP,IES,NPTD,IAXI,LECT,
  320. & IPT1.NUM,XCOOR,
  321. & IZVOL.VPOCHA,
  322. & IZTU1.VPOCHA,IZTU2.VPOCHA,IZTU3.VPOCHA,
  323. & IZGG1.VPOCHA,
  324. & IZDD2.VPOCHA,IZDD3.VPOCHA,
  325. & MZNU.VPOCHA,IK1,MZUE.VPOCHA,MZYP.VPOCHA)
  326.  
  327. SEGDES IPT1
  328. NUTOEL=NUTOEL+NBEL
  329.  
  330. 1 CONTINUE
  331.  
  332.  
  333. SEGDES IZTU1,IZTU2,IZTU3
  334. SEGDES IZG1,IZGG1
  335. SEGDES IZD2,IZDD2
  336. SEGDES IZD3,IZDD3
  337. SEGDES IZVOL
  338. SEGDES LINCO
  339. SEGDES MTABX,MTAB1,INCO,KIZG,KIZD
  340. SEGSUP MLENTI
  341.  
  342. RETURN
  343. 90 CONTINUE
  344. WRITE(6,*)' Interuption anormale de FPU '
  345. RETURN
  346. 1002 FORMAT(10(1X,1PE11.4))
  347. END
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  

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