Télécharger gtkl.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : gtkl.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. **********************************************************
  5. * GRID TURBULENCE : voir aussi gridturb.dgibi *
  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 2007 *
  10. * Teste K-L 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. rv.'ALGO_KEPSILON'=mots 'KL';
  144.  
  145. RV = EQEX RV
  146. 'CLIM' 'UN' 'UIMP' INLET Uinlet
  147. 'UN' 'VIMP' INLET 0.
  148. 'UN' 'VIMP' COTE 0.
  149. 'CLIM' 'KN' 'TIMP' INLET Kinlet
  150. 'EN' 'TIMP' INLET Einlet
  151. ;
  152.  
  153. RVP = EQEX 'OPTI' 'EF' KPRES
  154. ZONE $DOMTOT 'OPER' KBBT (-1.) INCO 'UN' 'PRES'
  155. CLIM 'PRES' TIMP poutlet 0.
  156. ;
  157.  
  158. rvp.'METHINV' . 'FCPRECT'=300 ;
  159.  
  160.  
  161.  
  162. RV.INCO = TABLE INCO ;
  163. RV.INCO.'UN' = KCHT $DOMTOT VECT SOMMET (uinlet 0.) ;
  164. RV.INCO.'KN' = KCHT $DOMTOT SCAL SOMMET Kinlet;
  165. RV.INCO.'EN' = KCHT $DOMTOT SCAL SOMMET 1.e-3 ;
  166. RV.INCO.'ENM1' = KCHT $DOMTOT SCAL SOMMET Einlet ;
  167. RV.INCO.'KNM1' = KCHT $DOMTOT SCAL SOMMET Kinlet ;
  168. RV.INCO.'MUF' = KCHT $DOMTOT SCAL SOMMET 1.E-10 ;
  169. RV.INCO.'Ro' = KCHT $DOMTOT SCAL SOMMET 1. ;
  170. RV.INCO.'Mu' = KCHT $DOMTOT SCAL SOMMET Nu ;
  171. RV.INCO.'PRES' = KCHT $DOMTOT SCAL KPRES 0. ;
  172. RV.INCO.'IT' = PROG 1 ;
  173. RV.INCO.'ERK' = PROG 0.;
  174. RV.INCO.'ERE' = PROG 0.;
  175. RV.INCO.'EAN'=EAN;
  176. RV.INCO.'KAN'=KAN;
  177. rv.inco.'Echl'=KAN**1.5*(inve EAN);
  178.  
  179. RV.'PROJ' = RVP ;
  180.  
  181. EVOLKA = EVOL (BLEU) 'CHPO' KAN 'SCAL' A1A2 ;
  182. EVOLEA = EVOL (BLEU) 'CHPO' EAN 'SCAL' A1A2 ;
  183.  
  184. NCFL = DIME LCFL ;
  185. REPETER BCFL NCFL;
  186. CFL = extr LCFL &BCFL ;
  187. dt = CFL*deltax/Uinlet ;
  188. mess ' CFL=' CFL ' deltax ' deltax ' dt = ' dt ;
  189. RV.INCO.'DT' = dt;
  190.  
  191. RV.INCO.'IT' = PROG 1 ;
  192. RV.INCO.'ERK' = PROG 0.;
  193. RV.INCO.'ERE' = PROG 0.;
  194. RV.'PASDETPS'.'NUPASDT'= 1;
  195.  
  196. EXEC RV ;
  197.  
  198. EVOLKA = EVOLKA et (EVOL (ROUG) 'CHPO' RV.INCO.'KN' 'SCAL' A1A2) ;
  199. EVOLEA = EVOLEA et (EVOL (ROUG) 'CHPO' RV.INCO.'EN' 'SCAL' A1A2) ;
  200.  
  201. EVOLK = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  202. (RV.INCO.'ERK') ;
  203. EVOLE = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  204. (RV.INCO.'ERE') ;
  205. Si (EGA &BCFL 1);
  206. EVOLER = EVOLK et EVOLE;
  207. Sinon ;
  208. EVOLER = EVOLK et EVOLE et EVOLER ;
  209. Finsi ;
  210. * TESTS D'ERREUR *
  211.  
  212. erkm= extr &bcfl lerkm;
  213. erem= extr &bcfl lerem;
  214. list rv.inco.'ERK' ;
  215. mess ' Sur K' (MINI RV.INCO.'ERK') erkm;
  216. list rv.inco.'ERE' ;
  217. mess ' Sur E' (MINI RV.INCO.'ERE') erem;
  218. SI ( (MINI RV.INCO.'ERE') > erem ) ;
  219. * ERREUR 5 ;
  220. FINSI ;
  221. SI ( (MINI RV.INCO.'ERK') > erkm ) ;
  222. * ERREUR 5 ;
  223. FINSI ;
  224. FIN BCFL ;
  225.  
  226. SI ( GRAPH ) ;
  227. TRACE DOMTOT ;
  228. TAB1 = TABLE ;
  229. TAB1.1 = 'TIRC MARQ TRIA REGU' ;
  230. TAB1.2 = 'TIRC MARQ TRIA REGU' ;
  231. TAB1.3 = 'TIRL MARQ LOSA REGU' ;
  232. TAB1.4 = 'TIRL MARQ LOSA REGU' ;
  233. TAB1.5 = 'TIRM MARQ TRIB REGU' ;
  234. TAB1.6 = 'TIRM MARQ TRIB REGU' ;
  235. TAB1.7 = 'TIRR MARQ ETOI REGU' ;
  236. TAB1.8 = 'TIRR MARQ ETOI REGU' ;
  237.  
  238. TAB1.'TITRE' = TABLE ;
  239. REPETER BCL NCFL ;
  240. TAB1.'TITRE'. (2*&bcl-1) = (CHAI 'Cv_ k : CFL=' (EXTR LCFL &bcl));
  241. TAB1.'TITRE'. (2*&bcl) = (CHAI 'Cv_ e : CFL=' (EXTR LCFL &bcl));
  242. FIN BCL ;
  243.  
  244. titl = chai 'Convergence Linf : Cfl = ' cfl ;
  245. DESS EVOLER 'XBOR' 0. (2.*NITMA) 'YBOR' -15.0 0.0 'GRIL'
  246. 'TITR' titl LEGE TAB1 ;
  247.  
  248. TRACE RV.INCO.'KN' DOMTOT CNT 'TITR' 'KN' 20 ;
  249. TRACE RV.INCO.'EN' DOMTOT CNT 'TITR' 'EN' 20 ;
  250.  
  251.  
  252. TAB1 = TABLE ;
  253. TAB1.1 = 'MARQ CROI ' ;
  254. TAB1.2 = 'TIRC MARQ TRIA REGU' ;
  255. TAB1.3 = 'TIRL MARQ CARR REGU' ;
  256. TAB1.4 = 'TIRM MARQ LOSA REGU' ;
  257. TAB1.5 = 'TIRM MARQ ETOI REGU' ;
  258. TAB1.'TITRE' = TABLE ;
  259. TAB1.'TITRE'. 1 = 'MOT' 'k : ANALYTIQUE' ;
  260. REPETER BCL NCFL ;
  261. TAB1.'TITRE'. (1+&bcl) = (CHAI 'k : CFL=' (EXTR LCFL &bcl));
  262. FIN BCL ;
  263.  
  264. mess ' CFL=' CFL ;
  265. titk = chai 'Grid Turbulence K : Cfl = ' cfl ;
  266. tite = chai 'Grid Turbulence E : Cfl = ' cfl ;
  267. DESS EVOLKA LEGE TAB1 'TITR' titk 'GRIL';
  268.  
  269. TAB1.'TITRE'. 1 = 'MOT' 'epsilon ANALYTIQUE' ;
  270. REPETER BCL NCFL ;
  271. TAB1.'TITRE'. (1+&bcl) = (CHAI 'e : CFL=' (EXTR LCFL &bcl));
  272. FIN BCL ;
  273. DESS EVOLEA LEGE TAB1 'TITR' tite 'GRIL';
  274. FINSI ;
  275.  
  276. ERRK = KOPS RV.INCO.'KN' '-' KAN ;
  277. ERRK = KOPS ERRK '*' ERRK ;
  278. ERR2 = 0. ;
  279. REPETER BLOC1 (NBNO (DOMA $DOMTOT MAILLAGE)) ;
  280. P1 = (doma $DOMTOT SOMMET) POIN &BLOC1 ;
  281. ERR1 = 'EXTR' ERRK 'SCAL' P1 ;
  282. ERR2 = ERR2 + ERR1 ;
  283. FIN BLOC1 ;
  284. ERR2 = ERR2/(nbno (doma $DOMTOT MAILLAGE)) ;
  285. ERR2 = ERR2 ** 0.5 ;
  286. ERR2K = ERR2/Kinlet ;
  287. MESSAGE 'ERREUR SUR K EN NORME L2 = ' ERR2K ;
  288.  
  289. ERRE = KOPS RV.INCO.'EN' '-' EAN ;
  290. ERRE = KOPS ERRE '*' ERRE ;
  291. ERR2 = 0. ;
  292. REPETER BLOC1 (NBNO (DOMA $DOMTOT MAILLAGE)) ;
  293. P1 = (DOMA $DOMTOT SOMMET) POIN &BLOC1 ;
  294. ERR1 = 'EXTR' ERRE 'SCAL' P1 ;
  295. ERR2 = ERR2 + ERR1 ;
  296. FIN BLOC1 ;
  297. ERR2 = ERR2/(NBNO (DOMA $DOMTOT MAILLAGE)) ;
  298. ERR2 = ERR2 ** 0.5 ;
  299. ERR2E = ERR2/Einlet ;
  300. MESSAGE 'ERREUR SUR E EN NORME L2 = ' ERR2E ;
  301.  
  302.  
  303. FIN ;
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  

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