Télécharger clmi.eso

Retour à la liste

Numérotation des lignes :

clmi
  1. C CLMI SOURCE CB215821 23/01/25 21:15:07 11573
  2. SUBROUTINE CLMI
  3. PARAMETER (NTB=1)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Z)
  6. REAL*8 ctype,ferm
  7. C***********************************************************************
  8. C
  9. C
  10. C***********************************************************************
  11.  
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15. -INC CCGEOME
  16. -INC SMELEME
  17. -INC SMCOORD
  18. -INC SIZFFB
  19. POINTEUR IMAT1.IMATRI,IMAT2.IMATRI,IMAT3.IMATRI
  20. -INC SMCHPOI
  21. POINTEUR IZTU1.MPOVAL,MCHPO9.MCHPOI,MSOUP9.MSOUPO,MPOVA9.MPOVAL
  22. POINTEUR MCHPO8.MCHPOI,MSOUP8.MSOUPO,MPOVA8.MPOVAL
  23. POINTEUR MCHPOA.MCHPOI,MSOUPA.MSOUPO,MPOVAA.MPOVAL
  24. POINTEUR MCHPOB.MCHPOI,MSOUPB.MSOUPO,MPOVAB.MPOVAL
  25. SEGMENT TRAV
  26. REAL*8 UN(NPTI,IDIM),TN(NPTI,1)
  27. REAL*8 WT(NP,NPG),WS(NP,NPG)
  28. REAL*8 UIL(IDIM,NPG),DUIL(IDIM,NPG),ANUK(1),AIRE(1)
  29. REAL*8 HNM(NPTI),BNM(NPTI),Coef1(NPTI),Coef2(NPTI),DNM(NPTI)
  30. REAL*8 H32NM(NPTI),CFN(NPTI),CEN(NPTI),DeN(NPTI),D1N(NPTI)
  31. REAL*8 HHN(NPTI)
  32. REAL*8 UCL(NPTI),Delta(NPTI),SM1(NPTI),SM2(NPTI)
  33. REAL*8 FP(NPTI),PHIP(NPTI),VT(NPTI)
  34. ENDSEGMENT
  35.  
  36. -INC SMLENTI
  37. -INC SMLMOTS
  38. POINTEUR LINCO.MLMOTS
  39. real*8 nu
  40. CHARACTER*8 MTYP,NOME,NOMI,TYPE,NOMZ,TYPC
  41. CHARACTER*8 LTAB(NTB)
  42. DIMENSION KTAB(NTB),IXV(9)
  43. DATA LTAB/'KIZX '/
  44.  
  45. C*****************************************************************************
  46. C
  47. C write(6,*)' Debut CLMI '
  48.  
  49. CALL LITABS(LTAB,KTAB,NTB,1,IRET)
  50. IF (IERR.NE.0) RETURN
  51. MTABX=KTAB(1)
  52. C
  53. C- Récupération de la table EQEX (pointeur MTAB1)
  54. C
  55. CALL LEKTAB(MTABX,'EQEX',MTAB1)
  56. IF(MTAB1.EQ.0)THEN
  57. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  58. MOTERR( 1: 8) = ' EQEX '
  59. MOTERR( 9:16) = ' EQEX '
  60. MOTERR(17:24) = ' KIZX '
  61. CALL ERREUR(786)
  62. RETURN
  63. ENDIF
  64. CALL ACME(MTAB1,'NAVISTOK',NASTOK)
  65. C
  66. C- Récupération de la table INCO (pointeur KINC)
  67. C
  68. CALL LEKTAB(MTAB1,'INCO',KINC)
  69. IF(KINC.EQ.0)THEN
  70. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  71. MOTERR( 1: 8) = ' INCO '
  72. MOTERR( 9:16) = ' INCO '
  73. MOTERR(17:24) = ' EQEX '
  74. CALL ERREUR(786)
  75. RETURN
  76. ENDIF
  77.  
  78. C*****************************************************************************
  79. C OPTIONS
  80. C KIMPL = 0 -> EXPL 1 -> IMPL 2 -> SEMI
  81. C KFORM = 0 -> SI 1 -> EF 2 -> VF 3 -> EFMC
  82. C IDCEN = 0-> rien 1-> CENTREE 2-> SUPGDC 3-> SUPG 4-> TVISQUEU 5-> CNG
  83.  
  84. IAXI=0
  85. IF(IFOMOD.EQ.0)IAXI=2
  86. C
  87. C- Récupération de la table des options KOPT (pointeur KOPTI)
  88. C
  89. CALL LEKTAB(MTABX,'KOPT',KOPTI)
  90. IF (KOPTI.EQ.0) THEN
  91. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  92. MOTERR( 1: 8) = ' KOPT '
  93. MOTERR( 9:16) = ' KOPT '
  94. MOTERR(17:24) = ' KIZX '
  95. CALL ERREUR(786)
  96. RETURN
  97. ENDIF
  98.  
  99. C write(6,*)' Avant les options '
  100. CALL ACME(KOPTI,'IDCEN',IDCEN)
  101. KDIM=1
  102. IF(IDCEN.EQ.2)KDIM=IDIM
  103. CALL ACME(KOPTI,'IKOMP',IKOMP)
  104. CALL ACME(KOPTI,'KIMPL',KIMPL)
  105. CALL ACME(KOPTI,'KPOIN',KPRE)
  106. CALL ACME(KOPTI,'KFORM',KFORM)
  107. CALL ACMF(KOPTI,'CMD',CMD)
  108.  
  109. IF(KFORM.NE.0.AND.KFORM.NE.1)THEN
  110. C Option %m1:8 incompatible avec les données
  111. MOTERR( 1: 8) = 'EF/EFM1 '
  112. CALL ERREUR(803)
  113. RETURN
  114. ENDIF
  115. CALL ACMF(KOPTI,'AIMPL',AIMPL)
  116. AG=AIMPL
  117. AD=AIMPL-1.D0
  118. IF (IERR.NE.0) RETURN
  119.  
  120. C write(6,*)' Apres les options '
  121. C*****************************************************************************
  122. C
  123. C- Récupération de la table DOMAINE associée au domaine local
  124. C
  125. c write(6,*)' Recuperation du modele '
  126. CALL ACMM(MTABX,'NOMZONE',NOMZ)
  127. TYPE=' '
  128. CALL ACMO(MTABX,'DOMZ',TYPE,MMDZ)
  129. IF(TYPE.NE.'MMODEL')THEN
  130. C Indice %m1:8 : Indice %m9:16 non trouvé dans la table %m17:24
  131. MOTERR( 1: 8) = ' DOMZ '
  132. MOTERR( 9:16) = ' DOMZ '
  133. MOTERR(17:24) = ' KIZX '
  134. CALL ERREUR(786)
  135. RETURN
  136. ENDIF
  137.  
  138. C E/ MMODEL : Pointeur de la table contenant l'information cherchée
  139. C /S IPOINT : Pointeur sur la table DOMAINE
  140. C /S INEFMD : Type formulation INEFMD=1 LINE,=2 MACRO,=3 QUADRATIQUE
  141. C INEFMD=4 LINB
  142.  
  143. CALL LEKMOD(MMDZ,MTABZ,INEFMD)
  144. C verifier que la formulation est bonne INEFMD = 1
  145.  
  146. CALL LEKTAB(MTABZ,'MAILLAGE',MELEME)
  147. CALL LEKTAB(MTABZ,'SOMMET',MELEMS)
  148. C CALL LEKTAB(MTABZ,'CENTRE',MELEMC)
  149. CALL KRIPAD(MELEMS,MLENTI)
  150. IF (IERR.NE.0) RETURN
  151.  
  152.  
  153. C*************************************************************************
  154. C VERIFICATIONS SUR LES INCONNUES
  155. C
  156. C- Récupération du nombre d'inconnues et du nom de l'inconnue NOMI
  157. C
  158. c write(6,*)' Recuperation inconnues '
  159. TYPE='LISTMOTS'
  160. CALL ACMO(MTABX,'LISTINCO',TYPE,LINCO)
  161. IF (IERR.NE.0) RETURN
  162. SEGACT LINCO
  163. NBINC=LINCO.MOTS(/2)
  164. IF(NBINC.NE.1)THEN
  165. C Indice %m1:8 : contient plus de %i1 %m9:16
  166. MOTERR( 1:8) = 'LISTINCO'
  167. INTERR(1) = 1
  168. MOTERR(9:16) = ' MOTS '
  169. CALL ERREUR(799)
  170. RETURN
  171. ENDIF
  172.  
  173. NOMI=LINCO.MOTS(1)
  174. c write(6,*) 'Nb inco=',NBINC
  175. c write(6,*) 'NOMI=',NOMI
  176. C
  177. C- Récupération de l'inconnue
  178. c write(6,*) 'Récupération de l''inconnue'
  179. TYPE=' '
  180. CALL ACMO(KINC,NOMI,TYPE,MCHPO1)
  181. IF(TYPE.NE.'CHPOINT ')THEN
  182. C Indice %m1:8 : ne contient pas un objet de type %m9:16
  183. MOTERR( 1: 8) = 'INC '//NOMI
  184. MOTERR( 9:16) = 'CHPOINT '
  185. CALL ERREUR(800)
  186. RETURN
  187. ELSE
  188. CALL LICHT(MCHPO1,IZTU1,TYPC,MELEMI)
  189. NINKO = IZTU1.VPOCHA(/2)
  190. NPTI = IZTU1.VPOCHA(/1)
  191. c write (6,*) 'NINKO =',NINKO
  192. c write(6,*)' MCHPOI,MELEMI=',MCHPOI,MELEMI
  193. C On fait pointer ces deux tableaux sur le champ U inconu (tjs présent) pour
  194. C eviter de les enlever lors de l'appel FORTRAN si les options sont absentes
  195. ENDIF
  196.  
  197. C*****************************************************************************
  198. C Le domaine de definition est donne par le SPG de la premiere inconnue
  199. C Les inconnues suivantes devront posseder ce meme pointeur
  200. C On verifie que les points de la zone sont tous inclus dans ce SPG
  201.  
  202. CALL KRIPAD(MELEMI,IPADI)
  203.  
  204. CALL VERPAD(IPADI,MELEME,IRET)
  205. IF(IRET.NE.0)THEN
  206. C Indice %m1:8 : L'objet %m9:16 n'a pas le bon support géométrique
  207. MOTERR(1: 8) = 'INC '//NOMI
  208. MOTERR(9:16) = 'CHPOINT '
  209. CALL ERREUR(788)
  210. RETURN
  211. ENDIF
  212.  
  213. C*****************************************************************************
  214.  
  215. NU=1.d-6
  216.  
  217. C*************************************************************************
  218. C Lecture des coefficients
  219. C Type du coefficient :
  220. C IK1=0 CHPOINT IK1=1 scalaire IK1=2 vecteur
  221.  
  222. c write(6,*)' lecture coef '
  223. CALL ACME(MTABX,'IARG',IARG)
  224. IF(IARG.NE.6)THEN
  225. WRITE(6,*)' Operateur DETO : '
  226. WRITE(6,*)' Nombre d''arguments incorrect : ',IARG
  227. WRITE(6,*)' On attend 6 '
  228. C Indice %m1:8 : nombre d'arguments incorrect
  229. MOTERR(1:8) = 'IARG '
  230. CALL ERREUR(804)
  231. RETURN
  232. ENDIF
  233.  
  234.  
  235. C--Cas incompréssible
  236. c-------1er coefficient/type de fermeture
  237. IXV(1)=0
  238. IXV(2)=1
  239. IXV(3)=0
  240. CALL LEKCOF('Opérateur DETO :',
  241. & MTABX,KINC,1,IXV,IZTG1,MPOVA1,NPT1,NC1,IK1,IRET)
  242. IF(IRET.EQ.0)RETURN
  243. ferm = MPOVA1.VPOCHA(1,1)
  244. c------ 2eme coef/n°de l'équation traitée
  245. IXV(1)=0
  246. IXV(2)=1
  247. IXV(3)=0
  248. CALL LEKCOF('Opérateur DETO :',
  249. & MTABX,KINC,2,IXV,IZTG2,MPOVA2,NPT2,NC2,IK2,IRET)
  250. IF(IRET.EQ.0)RETURN
  251. ctype = MPOVA2.VPOCHA(1,1)
  252. c------ Ue, vitesse extérieure
  253. IXV(1)=MELEMS
  254. IXV(2)=0
  255. IXV(3)=0
  256. CALL LEKCOF('Opérateur DETO :',
  257. & MTABX,KINC,3,IXV,IZTG3,MPOVA3,NPT3,NC3,IK3,IRET)
  258. IF(IRET.EQ.0)RETURN
  259. c------ dUe/dX, gradient de vitesse extérieure
  260. IXV(1)=MELEMS
  261. IXV(2)=0
  262. IXV(3)=0
  263. CALL LEKCOF('Opérateur DETO :',
  264. & MTABX,KINC,4,IXV,IZTG4,MPOVA4,NPT4,NC4,IK4,IRET)
  265. IF(IRET.EQ.0)RETURN
  266. c------ lecture de l'inconnue D2 au temps n-1
  267. IXV(1)=MELEMS
  268. IXV(2)=0
  269. IXV(3)=0
  270. CALL LEKCOF('Opérateur DETO :',
  271. & MTABX,KINC,5,IXV,IZTG5,MPOVA5,NPT5,NC5,IK5,IRET)
  272. IF(IRET.EQ.0)RETURN
  273. c------ lecture de l'inconnue D3 au temps n-1(non obligatoire)
  274. IXV(1)=MELEMS
  275. IXV(2)=0
  276. IXV(3)=0
  277. CALL LEKCOF('Opérateur DETO :',
  278. & MTABX,KINC,6,IXV,IZTG6,MPOVA6,NPT6,NC6,IK6,IRET)
  279. IF(IRET.EQ.0)RETURN
  280.  
  281.  
  282. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  283. C On cree le champoint second membre
  284. NAT=2
  285. NSOUPO=1
  286. SEGINI MCHPOI
  287. IFOPOI = IFOUR
  288. MTYPOI = ' '
  289. MOCHDE = 'cree par CLIM'
  290. JATTRI(1)=2
  291. NC=1
  292. SEGINI MSOUPO
  293. IPCHP(1)=MSOUPO
  294. NOCOMP(1)=NOMI
  295. IGEOC=MELEMS
  296. N=NPTI
  297. SEGINI MPOVAL
  298. IPOVAL=MPOVAL
  299.  
  300. c write (6,*) 'longueur1 chpoint = ',VPOCHA(/1)
  301. c write (6,*) 'longueur2 chpoint = ',VPOCHA(/2)
  302. c write (6,*) 'NPTI = ',NPTI
  303.  
  304. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  305. C On crée le champoint qui reçoit les valeurs du facteur de forme
  306. SEGINI MCHPO9
  307. MCHPO9.JATTRI(1)=2
  308. NC=1
  309. SEGINI MSOUP9
  310. MCHPO9.IPCHP(1)=MSOUP9
  311. MSOUP9.NOCOMP(1)='SCAL'
  312. MSOUP9.IGEOC=MELEMS
  313. SEGINI MPOVA9
  314. MSOUP9.IPOVAL=MPOVA9
  315. C On crée le champoint qui reçoit les valeurs du coefficient de frottement
  316. SEGINI MCHPO8
  317. MCHPO8.JATTRI(1)=2
  318. NC=1
  319. SEGINI MSOUP8
  320. MCHPO8.IPCHP(1)=MSOUP8
  321. MSOUP8.NOCOMP(1)='SCAL'
  322. MSOUP8.IGEOC=MELEMS
  323. SEGINI MPOVA8
  324. MSOUP8.IPOVAL=MPOVA8
  325. C On crée le champoint qui reçoit les valeurs del'épaisseur de déplacement
  326. SEGINI MCHPOA
  327. MCHPOA.JATTRI(1)=2
  328. NC=1
  329. SEGINI MSOUPA
  330. MCHPOA.IPCHP(1)=MSOUPA
  331. MSOUPA.NOCOMP(1)='SCAL'
  332. MSOUPA.IGEOC=MELEMS
  333. SEGINI MPOVAA
  334. MSOUPA.IPOVAL=MPOVAA
  335. C On crée le champoint qui reçoit les valeur de d(UE*delta1)/dx
  336. SEGINI MCHPOB
  337. MCHPOB.JATTRI(1)=2
  338. NC=1
  339. SEGINI MSOUPB
  340. MCHPOB.IPCHP(1)=MSOUPB
  341. MSOUPB.NOCOMP(1)='SCAL'
  342. MSOUPB.IGEOC=MELEMS
  343. SEGINI MPOVAB
  344. MSOUPB.IPOVAL=MPOVAB
  345. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  346.  
  347. C MTYP='MAILLAGE'
  348. C CALL LIROBJ(MTYP,MELEME,1,IRETOU)
  349. C CALL ACTOBJ(MTYP,MELEME,1)
  350. C IF (IRETOU.NE.1)THEN
  351. C MOTERR( 1: 8) ='MAILLAGE'
  352. C CALL ERREUR(471)
  353. C RETURN
  354. C ENDIF
  355.  
  356. c write(6,*)' On peut commencer a travailler '
  357. c write(6,*)' La dimension de l espace IDIM=',idim
  358.  
  359. SEGACT MELEME
  360. NBSOUS=LISOUS(/1)
  361. c write(6,*)' Nb de sous maillage NBSOUS=',NBSOUS
  362. IF (NBSOUS.NE.0) RETURN
  363. IF (NBSOUS.EQ.0)NBSOUS=1
  364.  
  365. c write(6,*)' ITYPEL=',ITYPEL,NOMS(ITYPEL)
  366. NOME=NOMS(ITYPEL)//' '
  367. CALL KALPBG(NOME,'FONFORM ',IZFFM)
  368.  
  369. SEGACT IZFFM*MOD
  370. IZHR=KZHR(1)
  371. SEGACT IZHR*MOD
  372.  
  373. NES=GR(/1)
  374. NPG=GR(/3)
  375. IAXI=0
  376.  
  377. NBELEM=NUM(/2)
  378. NBNN =NUM(/1)
  379. write(6,*)' NBELEM=',nbelem,' NBNN=',nbnn
  380. NBEL = NBELEM
  381. NP=NBNN
  382. MP=NBNN
  383.  
  384. c SEGINI MTEL
  385. SEGINI TRAV
  386. CALL INITD(UN,(NPTI*IDIM),1.D0)
  387. CALL INITD(TN,NPTI,1.D0)
  388.  
  389. C creation de l'objet MATRIK
  390.  
  391. NRIGE=7
  392. NKID =9
  393. NKMT =7
  394. NMATRI=2
  395.  
  396. SEGINI MATRIK
  397.  
  398. NBME=1
  399.  
  400. c matrice masse élémentaire
  401. SEGINI IMAT1
  402. IRIGEL(1,1)=MELEME
  403. IRIGEL(2,1)=MELEME
  404. IRIGEL(4,1)=IMAT1
  405. IRIGEL(7,1)=0
  406.  
  407. IMAT1.LISPRI(1)=NOMI
  408. IMAT1.LISDUA(1)=NOMI
  409. IMAT1.KSPGP=MELEMS
  410. IMAT1.KSPGD=MELEMS
  411. SEGINI IPM1
  412. IMAT1.LIZAFM(1,1)=IPM1
  413. c matrice de convection
  414. SEGINI IMAT2
  415. IRIGEL(1,2)=MELEME
  416. IRIGEL(2,2)=MELEME
  417. IRIGEL(4,2)=IMAT2
  418. IRIGEL(7,2)=2
  419.  
  420. IMAT2.LISPRI(1)=NOMI
  421. IMAT2.LISDUA(1)=NOMI
  422. IMAT2.KSPGP=MELEMS
  423. IMAT2.KSPGD=MELEMS
  424. SEGINI IPM2
  425. IMAT2.LIZAFM(1,1)=IPM2
  426. nd1=ipm2.am(/1)
  427. nd2=ipm2.am(/2)
  428. nd3=ipm2.am(/3)
  429.  
  430.  
  431. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  432. C>>>>>>>>>>Relations de fermeture >>>>>>>>>>>>>>>>>>>>>>>>>>
  433. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  434. IF (ferm.EQ.1.) THEN
  435. write(6,*) 'CAS LAMINAIRE: Méthode simplifiée'
  436. IF(ctype.EQ.1.) THEN
  437. C----Cas laminaire, méthode simplifiée
  438. write(6,*) 'EQUATION DE QDM'
  439. DO I=1,VPOCHA(/1)
  440. HNM(I) = 2.5911
  441. BNM(I) = 0.22052
  442. MPOVA9.VPOCHA(I,1) = HNM(I)
  443. ENDDO
  444. ENDIF
  445. ENDIF
  446.  
  447. IF(ferm.EQ.2.) THEN
  448. C----Cas laminaire, méthode de Karman Pohlhausen
  449. write(6,*) 'CAS LAMINAIRE: Méthode de Von Karman-Pohlhausen'
  450. IF(ctype.EQ.1.) THEN
  451. write(6,*) 'EQUATION DE QDM'
  452. CALL Karpohl (MPOVA5.VPOCHA,MPOVA4.VPOCHA,MPOVA3.VPOCHA,
  453. & VPOCHA(/1),HNM,BNM)
  454. DO I=1,VPOCHA(/1)
  455. Coef1(I)= (HNM(I)+2)*MPOVA4.VPOCHA(I,1)
  456. & *((MPOVA3.VPOCHA(I,1))**(-1))
  457. Coef2(I)=(BNM(I)*1e-6)*((MPOVA3.VPOCHA(I,1)
  458. & *MPOVA5.VPOCHA(I,1))**(-1))
  459. MPOVA9.VPOCHA(I,1) = HNM(I)
  460.  
  461. ENDDO
  462. ENDIF
  463. ENDIF
  464.  
  465. IF(ferm.EQ.3.) THEN
  466. C----Cas laminaire, méthode à deux équations
  467. write(6,*) 'CAS LAMINAIRE: Méthode à 2 équations'
  468. IF(ctype.EQ.1.) THEN
  469. C--------Equation de Qdm
  470. write(6,*) 'EQUATION DE QDM'
  471. CALL LAM2(MPOVA5.VPOCHA,MPOVA6.VPOCHA,H32NM,HNM,BNM,DNM,D1N,
  472. & VPOCHA(/1))
  473. DO I=1,VPOCHA(/1)
  474. Coef1(I)= (HNM(I)+2)*MPOVA4.VPOCHA(I,1)
  475. & *((MPOVA3.VPOCHA(I,1))**(-1))
  476. Coef2(I)=((BNM(I)*1e-6)*((MPOVA3.VPOCHA(I,1)
  477. & *MPOVA5.VPOCHA(I,1))**(-1)))
  478. MPOVA9.VPOCHA(I,1)=HNM(I)
  479. MPOVA8.VPOCHA(I,1)=2*Coef2(I)
  480. MPOVAA.VPOCHA(I,1)=D1N(I)
  481. ENDDO
  482. ENDIF
  483. IF(ctype.EQ.2.) THEN
  484. c--------Equation d'énegie cinétique
  485. write(6,*) 'EQUATION D''ENERGIE CINETIQUE'
  486. CALL LAM2(MPOVA6.VPOCHA,MPOVA5.VPOCHA,H32NM,HNM,BNM,DNM,D1N,
  487. & VPOCHA(/1))
  488. DO I=1,VPOCHA(/1)
  489. Coef1(I)=3*MPOVA4.VPOCHA(I,1)*
  490. & ((MPOVA3.VPOCHA(I,1))**(-1))
  491. Coef2(I)=(2*DNM(I)*1e-6*((MPOVA3.VPOCHA(I,1)
  492. & *MPOVA5.VPOCHA(I,1))**(-1))*H32NM(I))
  493. MPOVA9.VPOCHA(I,1)=HNM(I)
  494. MPOVAA.VPOCHA(I,1)=D1N(I)
  495. ENDDO
  496. ENDIF
  497. ENDIF
  498.  
  499. IF(ferm.EQ.4.) THEN
  500. c----Cas Turbulent, méthode à deux équations (Cousteix)
  501. write(6,*) 'CAS TURBULENT: Méthode à 2 équations(Cousteix)'
  502. IF(ctype.EQ.1.) THEN
  503. c--------Equation de qdm
  504. write(6,*) 'EQUATION DE QDM'
  505. CALL TURB5(MPOVA5.VPOCHA,MPOVA6.VPOCHA,MPOVA3.VPOCHA,
  506. & HHN,HNM,CFN,CEN,D1N,DeN,VPOCHA(/1))
  507. DO I=1,VPOCHA(/1)
  508. Coef1(I)= (HNM(I)+2)*MPOVA4.VPOCHA(I,1)
  509. & *((MPOVA3.VPOCHA(I,1))**(-1))
  510. Coef2(I)=CFN(I)/2
  511. MPOVA9.VPOCHA(I,1)=HNM(I)
  512. MPOVA8.VPOCHA(I,1)=CFN(I)
  513. MPOVAA.VPOCHA(I,1)=D1N(I)
  514. ENDDO
  515. ENDIF
  516. IF(ctype.EQ.3.) THEN
  517. c--------Equation d'entrainement
  518. write(6,*) 'EQUATION D''ENTRAINEMENT'
  519. CALL TURB5(MPOVA6.VPOCHA,MPOVA5.VPOCHA,MPOVA3.VPOCHA,
  520. & HHN,HNM,CFN,CEN,D1N,DeN,VPOCHA(/1))
  521. DO I=1,VPOCHA(/1)
  522. Coef1(I)=(MPOVA4.VPOCHA(I,1))
  523. & *((MPOVA3.VPOCHA(I,1))**(-1))
  524. Coef2(I)=CEN(I)
  525. MPOVA9.VPOCHA(I,1)=HNM(I)
  526. MPOVA8.VPOCHA(I,1)=CFN(I)
  527. MPOVAA.VPOCHA(I,1)=D1N(I)
  528. ENDDO
  529. ENDIF
  530. ENDIF
  531. IF(ferm.EQ.5.) THEN
  532. c----Cas Turbulent, méthode à deux équations relations de Head
  533. write(6,*) 'CAS TURBULENT: Méthode à 2 équations(Head)'
  534. IF(ctype.EQ.1.) THEN
  535. c--------Equation de qdm
  536. write(6,*) 'EQUATION DE QDM'
  537. c write(6,*)MPOVA3.VPOCHA(/1),MPOVAL.VPOCHA(/1)
  538. CALL TURB6(MPOVA5.VPOCHA,MPOVA6.VPOCHA,MPOVA3.VPOCHA,
  539. & HHN,HNM,CFN,CEN,D1N,VPOCHA(/1))
  540. DO I=1,VPOCHA(/1)
  541. Coef1(I)= (HNM(I)+2)*MPOVA4.VPOCHA(I,1)
  542. & *((MPOVA3.VPOCHA(I,1))**(-1))
  543. Coef2(I)=CFN(I)/2
  544. MPOVA9.VPOCHA(I,1)=HNM(I)
  545. MPOVA8.VPOCHA(I,1)=CFN(I)
  546. MPOVAA.VPOCHA(I,1)=D1N(I)
  547. ENDDO
  548. ENDIF
  549. IF(ctype.EQ.3.) THEN
  550. c--------Equation d'entrainement
  551. write(6,*) 'EQUATION D''ENTRAINEMENT'
  552. CALL TURB6(MPOVA6.VPOCHA,MPOVA5.VPOCHA,MPOVA3.VPOCHA,
  553. & HHN,HNM,CFN,CEN,D1N,VPOCHA(/1))
  554. DO I=1,VPOCHA(/1)
  555. Coef1(I)=(MPOVA4.VPOCHA(I,1))
  556. & *((MPOVA3.VPOCHA(I,1))**(-1))
  557. Coef2(I)=CEN(I)
  558. MPOVA9.VPOCHA(I,1)=HNM(I)
  559. MPOVA8.VPOCHA(I,1)=CFN(I)
  560. MPOVAA.VPOCHA(I,1)=D1N(I)
  561. ENDDO
  562. ENDIF
  563. ENDIF
  564. c IF(ferm.EQ.6) THEN
  565. C---- Convection naturelle laminaire
  566. c write(6,*) 'CONVECTION NATURELLE'
  567. c IF(ctype.EQ.1) THEN
  568. C--------Equation de quantité de mouvement
  569. c write(6,*) 'EQUATION DE QDM'
  570. c CALL CNAT(MPOVA5.VPOCHA,MPOVA6.VPOCHA,MPOVA3.VPOCHA,
  571. c & MPOVA4.VPOCHA,UCL,Delta,SM1,SM2,FP,PHIP,VPOCHA(/1))
  572. c DO I=1,VPOCHA(/1)
  573. c Coef1(I) = 0
  574. c Coef2(I) = SM1(I)
  575. c MPOVA9.VPOCHA(I,1)=FP(I)
  576. c MPOVA8.VPOCHA(I,1)=PHIP(I)
  577. c MPOVAA.VPOCHA(I,1)=Delta(I)
  578. c ENDDO
  579. c ENDIF
  580. c IF(ctype.EQ.4.) THEN
  581. C--------Equation de la chaleur
  582. c write(6,*) 'EQUATION DE LA CHALEUR'
  583. c CALL CNAT(MPOVA5.VPOCHA,MPOVA6.VPOCHA,MPOVA3.VPOCHA,
  584. c & MPOVA4.VPOCHA,UCL,Delta,SM1,SM2,FP,PHIP,VPOCHA(/1))
  585. c DO I=1,VPOCHA(/1)
  586. c Coef1(I) = 0
  587. c Coef2(I) = SM2(I)
  588. c MPOVA9.VPOCHA(I,1)=FP(I)
  589. c MPOVA8.VPOCHA(I,1)=PHIP(I)
  590. c MPOVAA.VPOCHA(I,1)=Delta(I)
  591. c ENDDO
  592. c ENDIF
  593. c ENDIF
  594.  
  595. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  596. c write(6,*)' nd1,nd2,nd3=',nd1,nd2,nd3
  597. c write(6,*)' NBELEM=',NBELEM
  598.  
  599.  
  600. DO 101 K=1,NBELEM
  601. c write(6,*)' Element n ',k
  602. c write(6,1001)(num(ii,k),ii=1,nbnn)
  603.  
  604. C? DO 102 I=1,NBNN
  605. C? IP1=num(I,K)
  606. C? XYZ(1,I)=XCOOR((IP1-1)*(IDIM+1) +1)
  607. C? XYZ(2,I)=XCOOR((IP1-1)*(IDIM+1) +2)
  608. c write(6,*)'Coordonnees element ',K,' noeud ',ip1
  609. c write(6,1002)(XYZ(M,I),M=1,IDIM)
  610. C? 102 CONTINUE
  611.  
  612. C? CALL CALJBR(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  613. C? & NES,IDIM,NBNN,NPG,IAXI,AIRE,AJ)
  614.  
  615. KDEB=1
  616. KFIN=1
  617. LRV =1
  618. IKOMP=0
  619. ANUK(1)=1.D0
  620.  
  621. C CB215821 : DT n'est pas utilise mais doit etre initialise sinon NAN
  622. DT=0.D0
  623.  
  624. SEGACT,MCOORD
  625. CALL SUPGEF(FN,GR,PG,XYZ,HR,PGSQ,RPG,AJ,
  626. & NES,NP,NPG,IAXI,XCOOR,
  627. & NUM(1,K),KDEB,KFIN,LRV,IDCEN,CMD,IKOMP,
  628. & TN,LECT,UN,LECT,NPTI,ANUK,
  629. & WT,WS,HR,PGSQ,RPG,AJ,AIRE,UIL,DUIL,
  630. & DTM1,DT,DTT1,DTT2,DIAEL,NUEL)
  631. SEGDES,MCOORD
  632.  
  633. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  634. C>>>>>>>>>>Calcul des matrices élémentaires>>>>>>>>>>>>>>>>>
  635. C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  636. c calcul des matrices masses élémentaires
  637. c write(6,*)' NBNN=',nbnn
  638. DO 103 I=1,NBNN
  639. DO 104 J=1,NBNN
  640. U=0.D0
  641. DO 105 L=1,NPG
  642. V=0.D0
  643. DO 1051 L1=1,NBNN
  644. J1=lect(num(L1,K))
  645. V=V+FN(L1,L)*Coef1(J1)
  646. 1051 CONTINUE
  647. U=U+(WT(J,L)*FN(I,L)*PGSQ(L))*V
  648. 105 CONTINUE
  649. IPM1.AM(K,I,J)=U
  650. c write(6,*) 'M(',I,',',J,',',K,')=',IPM1.AM(K,I,J)
  651. 104 CONTINUE
  652. 103 CONTINUE
  653.  
  654. ax=1.d0
  655. ay=1.d0
  656. c calcul des matrices de convection élémentaires
  657. DO 106 I=1,NBNN
  658. DO 107 J=1,NBNN
  659. c J1 = lect(num(J,K))
  660. U=0.D0
  661. DO 108 L=1,NPG
  662. V=0.D0
  663. DO 1081 L1=1,NBNN
  664. J1 = lect(num(L1,K))
  665. V = V+FN(L1,L)*1.
  666. 1081 CONTINUE
  667. U=U+(WT(J,L)*((ax*HR(1,I,L)) )*PGSQ(L))*V
  668. c write(6,*) 'hr(',J,',',L,')=',HR(1,J,L)
  669. c write(6,*) 'FN(',I,',',L,',',K,')=',FN(I,L)
  670. c write(6,*) 'WT(',I,',',L,',',K,')=',WT(I,L)
  671. c U=U+(WT(I,L)*((ax*HR(1,J,L)) + (ay*HR(1,J,L)) )*PGSQ(L))
  672. c U=U+(WT(J,L)*((ax*HR(1,I,L)) )*PGSQ(L))
  673. c &*MPOVA2.VPOCHA(J1,1)
  674. 108 CONTINUE
  675. C write(6,*)'K,i,j=', K,i,j
  676. IPM2.AM(K,I,J) = U
  677. 107 CONTINUE
  678. 106 CONTINUE
  679.  
  680. C calcul du terme source
  681. DO 109 I=1,NBNN
  682. I1= lect(num(I,K))
  683. U=0.D0
  684. DO 110 L=1,NPG
  685. V=0.D0
  686. v2=0.D0
  687. DO 1101 J=1,NBNN
  688. J1 =lect(num(J,K))
  689. V=V+FN(J,L)*Coef2(J1)
  690. 1101 CONTINUE
  691. U=U+V*WT(I,L)*PGSQ(L)
  692. 110 CONTINUE
  693. VPOCHA(I1,1)=VPOCHA(I1,1)+ U
  694. 109 CONTINUE
  695.  
  696. C calcul de la vitesse de transpiration
  697. DO 111 I=1,NBNN
  698. I1 = lect(num(I,K))
  699. U=0.D0
  700. DO 112 J=1,NBNN
  701. J1 = lect(num(J,K))
  702. U = U+HR(1,J,1)*(D1N(J1)*MPOVA3.VPOCHA(J1,1))
  703. 112 CONTINUE
  704. VT(I1) = U
  705. c write(6,*) 'VT(',I1,')=',VT(I1)
  706. MPOVAB.VPOCHA(I1,1)= VT(I1)
  707. 111 CONTINUE
  708.  
  709. 101 CONTINUE
  710.  
  711.  
  712. C Sortie des valeurs des coefficients H, Cf, Ce et VT
  713.  
  714. CALL ECMO(KINC,'H','CHPOINT',MCHPO9)
  715. CALL ECMO(KINC,'CF','CHPOINT',MCHPO8)
  716. CALL ECMO(KINC,'D1','CHPOINT',MCHPOA)
  717. CALL ECMO(KINC,'Vtra','CHPOINT',MCHPOB)
  718.  
  719.  
  720. SEGDES IPM2,IMAT2,IPM1,IMAT1
  721. SEGDES MATRIK
  722. SEGDES TRAV
  723. SEGDES IZFFM,IZHR
  724. SEGDES LINCO
  725. C SEGDES MTEL
  726.  
  727. CALL ECROBJ('MATRIK ',MATRIK)
  728. CALL ACTOBJ('CHPOINT ',MCHPOI,1)
  729. CALL ECROBJ('CHPOINT ',MCHPOI)
  730. RETURN
  731. 1003 FORMAT(6(1X,1PE11.4))
  732. 1002 FORMAT(10(1X,1PE11.4))
  733. 1001 FORMAT(20(1X,I5))
  734. END
  735.  
  736.  

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