Télécharger gridturb.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : gridturb.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. **********************************************************
  5. * GRID TURBULENCE : convection of homogeneous turbulence *
  6. * Analysis of the K-Epsilon TURBULENCE MODEL *
  7. * Mohammadi/Pironneau p. 74 (Wiley) *
  8. * H. PAILLERE/TTMF/AVRIL 1997 (à l'origine 1/2 explicite)*
  9. * Version implicite MARS 2000 *
  10. * Teste K-Epsilon en implicite méthode de projection *
  11. **********************************************************
  12. * WARNING : Il faut que Nt/Nu > 1
  13.  
  14. *opti trace 'PSC';
  15. GRAPH = VRAI ;
  16. GRAPH = FAUX ;
  17. KPRES='MSOMMET';
  18. DISCR='LINE';
  19. KSUPG='SUPGDC';
  20. *
  21. D = 1 ;
  22. NITMA =200 ;
  23. LCFL = PROG 0.1 0.5 1. 10.;
  24. LCFL = PROG 1. 10. 50. 100.;
  25. lerkm= prog -1.5 -2. -4. -4. ;
  26. lerem= prog -1.5 -2. -4. -4. ;
  27.  
  28. NX = D*40 ;
  29. NY = D ;
  30.  
  31. opti elem qua8 ;
  32. opti isov suli ;
  33.  
  34. ******************************************************************
  35. * PROCEDURE POUR ESTIMER LA CONVERGENCE VERS L'ETAT STATIONNAIRE *
  36. ******************************************************************
  37.  
  38. DEBPROC CALCUL ;
  39. ARGU RVX*'TABLE' ;
  40.  
  41. RV = RVX.'EQEX' ;
  42.  
  43. DD = RV.PASDETPS.'NUPASDT' ;
  44. NN = DD/10 ;
  45. LO = (DD-(10*NN)) EGA 0 ;
  46. SI ( LO ) ;
  47.  
  48. EN = RV.INCO.'EN' ;
  49. ENM1 = RV.INCO.'ENM1' ;
  50. KN = RV.INCO.'KN' ;
  51. KNM1 = RV.INCO.'KNM1' ;
  52.  
  53. ERRE = KOPS EN '-' ENM1 ;
  54. ELIE = MAXI ERRE 'ABS' ;
  55. ELIE = (LOG (ELIE + 1.0E-20))/(LOG 20.) ;
  56. ERRK = KOPS KN '-' KNM1 ;
  57. ELIK = MAXI ERRK 'ABS' ;
  58. ELIK = (LOG (ELIK + 1.0E-20))/(LOG 20.) ;
  59. MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF ' ELIK ELIE ;
  60. RV.INCO.'ENM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'EN') ;
  61. RV.INCO.'KNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'KN') ;
  62. IT = PROG RV.PASDETPS.'NUPASDT' ;
  63. ERK = PROG ELIK ;
  64. ERE = PROG ELIE ;
  65. RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
  66. RV.INCO.'ERK' = (RV.INCO.'ERK') ET ERK ;
  67. RV.INCO.'ERE' = (RV.INCO.'ERE') ET ERE ;
  68. FINSI ;
  69. as2 ama1 = 'KOPS' 'MATRIK' ;
  70. FINPROC as2 ama1 ;
  71.  
  72. ***********************
  73. * GEOMETRY OF PROBLEM *
  74. ***********************
  75.  
  76. A1 = 0.0 0.0 ;
  77. A2 = 1.0 0.0 ;
  78. A3 = 1.0 0.02;
  79. A4 = 0.0 0.02;
  80.  
  81. A1A2 = A1 'DROI' NX A2 ;
  82. A2A3 = A2 'DROI' NY A3 ;
  83. A3A4 = A3 'DROI' NX A4 ;
  84. A4A1 = A4 'DROI' NY A1 ;
  85.  
  86. DOMTOT = 'DALLER' A1A2 A2A3 A3A4 A4A1 'PLAN' ;
  87. DOMTOT = CHAN DOMTOT QUAF ;
  88. A4A1 = CHAN A4A1 QUAF ;
  89. A2A3 = CHAN A2A3 QUAF ;
  90. A1A2 = CHAN A1A2 QUAF ;
  91. A3A4 = CHAN A3A4 QUAF ;
  92. ELIM (DOMTOT et A4A1 et A2A3 et A3A4 et A1A2) 1.E-9 ;
  93. MCOTE = A1A2 et A3A4;
  94.  
  95. $DOMTOT = 'MODE' DOMTOT 'NAVIER_STOKES' DISCR ;
  96. DOMA $DOMTOT IMPR ;
  97. $INLET = 'MODE' A4A1 'NAVIER_STOKES' DISCR ;
  98. INLET = 'DOMA' $INLET 'MAILLAGE' ;
  99. $OUTLET = 'MODE' A2A3 'NAVIER_STOKES' DISCR ;
  100. OUTLET = 'DOMA' $OUTLET 'MAILLAGE' ;
  101. poutlet= 'DOMA' $OUTLET 'MSOMMET' ;
  102. $COTE = 'MODE' MCOTE 'NAVIER_STOKES' DISCR ;
  103. COTE = DOMA $COTE MAILLAGE ;
  104.  
  105. DOMTOT = DOMA $DOMTOT MAILLAGE ;
  106. CNT = CONT DOMTOT ;
  107.  
  108. *****************
  109. * PHYSICAL DATA *
  110. *****************
  111.  
  112. Uinlet = 1.71;
  113. Kinlet = 0.013;
  114. Einlet = 0.029;
  115. deltax = (coor 1 A2)/nx ;
  116. Nu = 1.E-3 ;
  117.  
  118. *****************************************
  119. * ANALYTICAL SOLUTION FOR K(x) AND E(x) *
  120. *****************************************
  121.  
  122. C2 = 1.92 ;
  123. X1 = COOR 1 (DOMA $DOMTOT SOMMET) ;
  124. TINLET = KINLET/EINLET;
  125. TAN=(((C2 - 1.)*X1) + (UINLET*TINLET))/UINLET;
  126. M=1. - C2 ;
  127. KAN=KINLET * (( 1. - ((M*X1)/UINLET/TINLET))**(1./M));
  128. EAN=KAN*(INVE TAN) ;
  129.  
  130.  
  131. ********************
  132. * SET OF EQUATIONS *
  133. ********************
  134.  
  135. RV = EQEX $DOMTOT 'ITMA' NITMA 'OMEGA' 1. 'NITER' 1 'FIDT' 20
  136. 'ZONE' $DOMTOT 'OPER' CALCUL
  137. 'OPTI' KSUPG 'IMPL' EF
  138. 'ZONE' $DOMTOT 'OPER' 'NS' 'Ro' 'UN' 'MUF' 'INCO' 'UN'
  139. 'ZONE' $DOMTOT 'OPER' 'KEPSILON' 'Ro' 'UN' 'Mu' 'DT' 'INCO' 'KN' 'EN'
  140. OPTI EFM1 'CENTREE'
  141. 'ZONE' $DOMTOT 'OPER' 'DFDT' 'Ro' 'UN' 'DT' 'INCO' 'UN'
  142. ;
  143.  
  144. RV = EQEX RV
  145. 'CLIM' 'UN' 'UIMP' INLET Uinlet
  146. 'UN' 'VIMP' INLET 0.
  147. 'UN' 'VIMP' COTE 0.
  148. 'CLIM' 'KN' 'TIMP' INLET Kinlet
  149. 'EN' 'TIMP' INLET Einlet
  150. ;
  151.  
  152. RVP = EQEX 'OPTI' 'EF' KPRES
  153. ZONE $DOMTOT 'OPER' KBBT (-1.) INCO 'UN' 'PRES'
  154. CLIM 'PRES' TIMP poutlet 0.
  155. ;
  156.  
  157. rvp.'METHINV' . 'FCPRECT'=300 ;
  158.  
  159.  
  160.  
  161. RV.INCO = TABLE INCO ;
  162. RV.INCO.'UN' = KCHT $DOMTOT VECT SOMMET (uinlet 0.) ;
  163. RV.INCO.'KN' = KCHT $DOMTOT SCAL SOMMET Kinlet;
  164. RV.INCO.'EN' = KCHT $DOMTOT SCAL SOMMET 1.e-3 ;
  165. RV.INCO.'ENM1' = KCHT $DOMTOT SCAL SOMMET Einlet ;
  166. RV.INCO.'KNM1' = KCHT $DOMTOT SCAL SOMMET Kinlet ;
  167. RV.INCO.'MUF' = KCHT $DOMTOT SCAL SOMMET 1.E-10 ;
  168. RV.INCO.'Ro' = KCHT $DOMTOT SCAL SOMMET 1. ;
  169. RV.INCO.'Mu' = KCHT $DOMTOT SCAL SOMMET Nu ;
  170. RV.INCO.'PRES' = KCHT $DOMTOT SCAL KPRES 0. ;
  171. RV.INCO.'IT' = PROG 1 ;
  172. RV.INCO.'ERK' = PROG 0.;
  173. RV.INCO.'ERE' = PROG 0.;
  174. RV.INCO.'EAN'=EAN;
  175. RV.INCO.'KAN'=KAN;
  176.  
  177. RV.'PROJ' = RVP ;
  178.  
  179. EVOLKA = EVOL (BLEU) 'CHPO' KAN 'SCAL' A1A2 ;
  180. EVOLEA = EVOL (BLEU) 'CHPO' EAN 'SCAL' A1A2 ;
  181.  
  182. NCFL = DIME LCFL ;
  183. REPETER BCFL NCFL;
  184. CFL = extr LCFL &BCFL ;
  185. dt = CFL*deltax/Uinlet ;
  186. mess ' CFL=' CFL ' deltax ' deltax ' dt = ' dt ;
  187. RV.INCO.'DT' = dt;
  188.  
  189. RV.INCO.'IT' = PROG 1 ;
  190. RV.INCO.'ERK' = PROG 0.;
  191. RV.INCO.'ERE' = PROG 0.;
  192. RV.'PASDETPS'.'NUPASDT'= 1;
  193.  
  194. EXEC RV ;
  195.  
  196. EVOLKA = EVOLKA et (EVOL (ROUG) 'CHPO' RV.INCO.'KN' 'SCAL' A1A2) ;
  197. EVOLEA = EVOLEA et (EVOL (ROUG) 'CHPO' RV.INCO.'EN' 'SCAL' A1A2) ;
  198.  
  199. EVOLK = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  200. (RV.INCO.'ERK') ;
  201. EVOLE = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  202. (RV.INCO.'ERE') ;
  203. Si (EGA &BCFL 1);
  204. EVOLER = EVOLK et EVOLE;
  205. Sinon ;
  206. EVOLER = EVOLK et EVOLE et EVOLER ;
  207. Finsi ;
  208. * TESTS D'ERREUR *
  209.  
  210. erkm= extr &bcfl lerkm;
  211. erem= extr &bcfl lerem;
  212. list rv.inco.'ERK' ;
  213. mess ' Sur K' (MINI RV.INCO.'ERK') erkm;
  214. list rv.inco.'ERE' ;
  215. mess ' Sur E' (MINI RV.INCO.'ERE') erem;
  216. SI ( (MINI RV.INCO.'ERE') > erem ) ;
  217. * ERREUR 5 ;
  218. FINSI ;
  219. SI ( (MINI RV.INCO.'ERK') > erkm ) ;
  220. * ERREUR 5 ;
  221. FINSI ;
  222. FIN BCFL ;
  223.  
  224. SI ( GRAPH ) ;
  225. TRACE DOMTOT ;
  226. TAB1 = TABLE ;
  227. TAB1.1 = 'TIRC MARQ TRIA REGU' ;
  228. TAB1.2 = 'TIRC MARQ TRIA REGU' ;
  229. TAB1.3 = 'TIRL MARQ LOSA REGU' ;
  230. TAB1.4 = 'TIRL MARQ LOSA REGU' ;
  231. TAB1.5 = 'TIRM MARQ TRIB REGU' ;
  232. TAB1.6 = 'TIRM MARQ TRIB REGU' ;
  233. TAB1.7 = 'TIRR MARQ ETOI REGU' ;
  234. TAB1.8 = 'TIRR MARQ ETOI REGU' ;
  235.  
  236. TAB1.'TITRE' = TABLE ;
  237. REPETER BCL NCFL ;
  238. TAB1.'TITRE'. (2*&bcl-1) = (CHAI 'Cv_ k : CFL=' (EXTR LCFL &bcl));
  239. TAB1.'TITRE'. (2*&bcl) = (CHAI 'Cv_ e : CFL=' (EXTR LCFL &bcl));
  240. FIN BCL ;
  241.  
  242. titl = chai 'Convergence Linf : Cfl = ' cfl ;
  243. DESS EVOLER 'XBOR' 0. (2.*NITMA) 'YBOR' -15.0 0.0 'GRIL'
  244. 'TITR' titl LEGE TAB1 ;
  245.  
  246. TRACE RV.INCO.'KN' DOMTOT CNT 'TITR' 'KN' 20 ;
  247. TRACE RV.INCO.'EN' DOMTOT CNT 'TITR' 'EN' 20 ;
  248.  
  249.  
  250. TAB1 = TABLE ;
  251. TAB1.1 = 'MARQ CROI ' ;
  252. TAB1.2 = 'TIRC MARQ TRIA REGU' ;
  253. TAB1.3 = 'TIRL MARQ CARR REGU' ;
  254. TAB1.4 = 'TIRM MARQ LOSA REGU' ;
  255. TAB1.5 = 'TIRM MARQ ETOI REGU' ;
  256. TAB1.'TITRE' = TABLE ;
  257. TAB1.'TITRE'. 1 = 'MOT' 'k : ANALYTIQUE' ;
  258. REPETER BCL NCFL ;
  259. TAB1.'TITRE'. (1+&bcl) = (CHAI 'k : CFL=' (EXTR LCFL &bcl));
  260. FIN BCL ;
  261.  
  262. mess ' CFL=' CFL ;
  263. titk = chai 'Grid Turbulence K : Cfl = ' cfl ;
  264. tite = chai 'Grid Turbulence E : Cfl = ' cfl ;
  265. DESS EVOLKA LEGE TAB1 'TITR' titk 'GRIL';
  266.  
  267. TAB1.'TITRE'. 1 = 'MOT' 'epsilon ANALYTIQUE' ;
  268. REPETER BCL NCFL ;
  269. TAB1.'TITRE'. (1+&bcl) = (CHAI 'e : CFL=' (EXTR LCFL &bcl));
  270. FIN BCL ;
  271. DESS EVOLEA LEGE TAB1 'TITR' tite 'GRIL';
  272. FINSI ;
  273.  
  274. ERRK = KOPS RV.INCO.'KN' '-' KAN ;
  275. ERRK = KOPS ERRK '*' ERRK ;
  276. ERR2 = 0. ;
  277. REPETER BLOC1 (NBNO (DOMA $DOMTOT MAILLAGE)) ;
  278. P1 = (doma $DOMTOT SOMMET) POIN &BLOC1 ;
  279. ERR1 = 'EXTR' ERRK 'SCAL' P1 ;
  280. ERR2 = ERR2 + ERR1 ;
  281. FIN BLOC1 ;
  282. ERR2 = ERR2/(nbno (doma $DOMTOT MAILLAGE)) ;
  283. ERR2 = ERR2 ** 0.5 ;
  284. ERR2K = ERR2/Kinlet ;
  285. MESSAGE 'ERREUR SUR K EN NORME L2 = ' ERR2K ;
  286.  
  287. ERRE = KOPS RV.INCO.'EN' '-' EAN ;
  288. ERRE = KOPS ERRE '*' ERRE ;
  289. ERR2 = 0. ;
  290. REPETER BLOC1 (NBNO (DOMA $DOMTOT MAILLAGE)) ;
  291. P1 = (DOMA $DOMTOT SOMMET) POIN &BLOC1 ;
  292. ERR1 = 'EXTR' ERRE 'SCAL' P1 ;
  293. ERR2 = ERR2 + ERR1 ;
  294. FIN BLOC1 ;
  295. ERR2 = ERR2/(NBNO (DOMA $DOMTOT MAILLAGE)) ;
  296. ERR2 = ERR2 ** 0.5 ;
  297. ERR2E = ERR2/Einlet ;
  298. MESSAGE 'ERREUR SUR E EN NORME L2 = ' ERR2E ;
  299.  
  300.  
  301. FIN ;
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  

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