Télécharger dvispqt.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dvispqt.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * CAVITE CARREE ­ VAHL­DAVIS Methode de projection implicite *
  5. * Malvina Renesson Aout 1999 *
  6. ***************************************************************
  7. GRAPH=VRAI ;
  8. GRAPH=FAUX ;
  9. COMPLET=VRAI;
  10. COMPLET=FAUX ;
  11.  
  12. Si (NON Complet);
  13. itmax= 80 ;
  14. DISCR='LINE' ;
  15. d1 = 0.04; d2 = 0.12;
  16. d1 = 0.05; d2 = 0.2;
  17. DT=.5;
  18. Ra = 1.e5 ;
  19. *Ra = 1.e6 ;
  20. Sinon ;
  21. Ra = 1.e5 ;
  22. *Ra = 1.e6 ;
  23. itmax= 600 ;
  24. DISCR='LINE' ;
  25. d1 = 0.01; d2 = 0.07;
  26. DT=.5;
  27.  
  28. Finsi ;
  29.  
  30. KSUPG ='CENTREE' ;
  31. KPRESS='MSOMMET' ;
  32.  
  33. ******************************
  34. *ESTIMATION DE LA CONVERGENCE*
  35. ******************************
  36. DEBPROC CALCUL;
  37. ARGU RVX*'TABLE';
  38. RV = RVX.'EQEX';
  39. DD = RV.PASDETPS.'NUPASDT';
  40. NN = DD/5;
  41. LO = (DD-(5*NN)) EGA 0;
  42. SI (LO);
  43. UN = RV.INCO.'UN';
  44. UNM1 = RV.INCO.'UNM1';
  45. unx = kcht $mt scal sommet (exco 'UX' un);
  46. unm1x = kcht $mt scal sommet (exco 'UX' unm1);
  47. uny = kcht $mt scal sommet (exco 'UY' un);
  48. unm1y = kcht $mt scal sommet (exco 'UY' unm1);
  49. ERRX = KOPS unx '-' unm1x;
  50. ERRY = KOPS uny '-' unm1y;
  51. ELIX = MAXI ERRX 'ABS';
  52. ELIY = MAXI ERRY 'ABS';
  53. ELIX = (LOG (ELIX + 1.0E-10))/(LOG 10.);
  54. ELIY = (LOG (ELIY + 1.0E-10))/(LOG 10.);
  55. MESSAGE 'ITER' RV.PASDETPS.'NUPASDT' 'ERREUR LINF' ELIX ELIY;
  56. RV.INCO.'UNM1' = KCHT $MT 'VECT' 'SOMMET' (RV.INCO.'UN');
  57. IT = PROG RV.PASDETPS.'NUPASDT';
  58. ER = PROG ELIY;
  59. RV.INCO.'IT' = (RV.INCO.'IT') ET IT;
  60. RV.INCO.'ER' = (RV.INCO.'ER') ET ER;
  61. FINSI;
  62. as2 ama1 = 'KOPS' 'MATRIK' ;
  63. 'FINPROC' as2 ama1 ;
  64.  
  65. ************
  66. * MAILLAGE *
  67. ************
  68. OPTI ELEM QUA8;
  69. crit = 0.0000001;
  70. xxll = 1.;
  71. p1 = 0. 0.;
  72. p15 = (xxll/2.) 0.;
  73. p2 = xxll 0.;
  74. p25 = xxll 0.5;
  75. p3 = xxll 1.;
  76. p35 = (xxll/2.) 1.;
  77. p4 = 0. 1.;
  78. p45 = 0. 0.5;
  79.  
  80. bas1 = p1 d dini d1 dfin d2 p15;
  81. bas2 = p15 d dini d2 dfin d1 p2;
  82. bas = (bas1 et bas2);elim crit bas;
  83. cdro = p2 d dini d1 dfin d2 p25 d dini d2 dfin d1 p3;
  84. haut = p3 d dini d1 dfin d2 p35 d dini d2 dfin d1 p4;
  85. cgau = p4 d dini d1 dfin d2 p45 d dini d2 dfin d1 p1;
  86. coupx = bas plus (0. 0.5) ;
  87. coupy=cgau plus (0.5 0.) ;
  88. cnt = bas et cdro et haut et cgau;
  89. *mt = bas cdro haut cgau daller;
  90. mt = surf cnt ;
  91. bord = cont mt;
  92. *mt = surf bord;
  93. elim (mt et coupx) 1.e-5;
  94. Si GRAPH ; trace mt ; Finsi ;
  95. *option donn 5;
  96. orienter mt;
  97. ********
  98. * DOMA *
  99. ********
  100.  
  101. Mmt = chan QUAF mt ;
  102. $mt = MODE Mmt 'NAVIER_STOKES' DISCR ;
  103. mt = doma $mt maillage;
  104.  
  105. Mcgau=chan cgau QUAF ;
  106. $cgau=mode Mcgau 'NAVIER_STOKES' DISCR ;
  107.  
  108. Mcdro=chan cdro QUAF ;
  109. $cdro=mode Mcdro 'NAVIER_STOKES' DISCR ;
  110.  
  111. Mcnt=chan cnt QUAF ;
  112. $cnt=mode Mcnt 'NAVIER_STOKES' DISCR ;
  113.  
  114. Mcoupx = chan coupx 'QUAF' ;
  115. $coupx=mode Mcoupx 'NAVIER_STOKES' DISCR ;
  116.  
  117. Mcoupy = chan coupy 'QUAF' ;
  118. $coupy=mode Mcoupy 'NAVIER_STOKES' DISCR ;
  119.  
  120. Elim (Mmt et Mcgau et Mcdro et Mcnt et Mcoupx
  121. et Mcoupy) 1.e-5 ;
  122. cgau=doma $cgau maillage ;
  123. cdro=doma $cdro maillage ;
  124. cnt=doma $cnt maillage ;
  125. coupx=doma $coupx maillage ;
  126. coupy=doma $coupy maillage ;
  127.  
  128. *option donn 5;
  129. **************
  130. * PARAMETRES *
  131. **************
  132. Pr = 0.71;
  133. Gr = Ra/Pr;
  134. NU = 1/(Gr**0.5);
  135. ALF= NU/Pr;
  136. gb = kcht $mt vect centre (0. -1.);
  137. uref = 0.2 ;
  138.  
  139. ***********************
  140. * CREATION DES TABLES *
  141. ***********************
  142. RV = EQEX 'OMEGA' 1. 'NITER' 1 ITMA itmax 'FIDT' 1
  143. 'OPTI' 'EF' 'IMPL' KSUPG
  144. 'ZONE' $MT 'OPER' CALCUL
  145. 'ZONE' $MT 'OPER' 'NS' 1. 'UN' NU 'GB' 'TN' 0.5 'INCO' 'UN'
  146. 'ZONE' $MT 'OPER' 'TSCAL' 1. 'UN' ALF 0. 'INCO' 'TN'
  147. 'OPTI' 'CENTREE'
  148. ZONE $mt OPER DFDT 1. 'UN' DT INCO 'UN'
  149. ZONE $mt OPER DFDT 1. 'TN' DT INCO 'TN'
  150. ;
  151. ****
  152.  
  153. RV = EQEX RV
  154. 'CLIM' 'UN' 'UIMP' cnt 0. 'UN' 'VIMP' cnt 0.
  155. 'TN' 'TIMP' cgau 1.
  156. 'TN' 'TIMP' cdro 0.;
  157.  
  158. rv.'METHINV'.TYPINV=3 ;
  159. rv.'METHINV'.IMPINV=0 ;
  160. rv.'METHINV'.NITMAX=400;
  161. rv.'METHINV'.PRECOND=5 ;
  162. rv.'METHINV'.RESID =1.e-10;
  163. rv. 'METHINV' . 'FCPRECT'=1 ;
  164. rv. 'METHINV' . 'FCPRECI'=1 ;
  165.  
  166.  
  167. ****
  168. * La cavité est fermée il faut imposer la pression en 1 point !
  169. prep1=doma $mt kpress;
  170. bcp=elem prep1 POI1 (lect 1 ) ;
  171.  
  172. RVP = EQEX
  173. 'OPTI' 'EF' KPRESS
  174. ZONE $mt OPER KBBT -1. INCO 'UN' 'PRES'
  175. CLIM PRES TIMP bcp 0. ;
  176.  
  177. rvp.'METHINV'.TYPINV=1 ;
  178. rvp.'METHINV'.IMPINV=0 ;
  179. rvp.'METHINV'.NITMAX=300;
  180. rvp.'METHINV'.PRECOND=3 ;
  181. rvp.'METHINV'.RESID =1.e-8 ;
  182. rvp.'METHINV' . 'FCPRECT'=100 ;
  183. rvp.'METHINV' . 'FCPRECI'=100 ;
  184.  
  185.  
  186.  
  187. RV.INCO = TABLE INCO;
  188. RV.INCO.'UN' = kcht $MT VECT SOMMET (0. 0.);
  189. corsx = coor 1 (doma $MT SOMMET) ;
  190. RV.INCO.'TN' = kcht $MT SCAL SOMMET (1.-corsx);
  191. *RV.INCO.'TN' = kcht $MT SCAL SOMMET 0.5 ;
  192. RV.INCO.'PRES' = kcht $MT SCAL KPRESS 0. ;
  193. RV.INCO.'UNM1' = kcht $MT VECT SOMMET (1.E-5 1.E-5);
  194. RV.INCO.'IT' = PROG 1;
  195. RV.INCO.'ER' = PROG 0.;
  196. RV.INCO.'GB' = gb ;
  197. RV.'PROJ' = RVP;
  198.  
  199. EXEC RV;
  200.  
  201. *************
  202. * RESULTATS *
  203. *************
  204. *option sauv 'SAV';
  205. *sauv Pr Ra Gr NU ALF gb uref RV;
  206. *************
  207. OPTI ISOV SULI;
  208.  
  209.  
  210. un=(RV.INCO.'UN') * (Pr*(Gr**0.5)) ;
  211. unch = vect un (0.3/(Pr*(Gr**0.5))) UX UY JAUNE;
  212.  
  213. u1y = exco un 'UX' ;
  214. u2x = exco un 'UY' ;
  215. evu=evol 'CHPO' u2x coupx ;
  216. evv=evol 'CHPO' u1y coupy ;
  217.  
  218. EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG---E---inf'
  219. (RV.INCO.'ER');
  220.  
  221. GRADT = KOPS RV.INCO.'TN' 'GRAD' $MT;
  222. DTDX = KCHT $MT 'SCAL' 'CENTRE' (EXCO 'UX' GRADT);
  223. DTDX = (-1)*(ELNO $MT DTDX);
  224.  
  225. EVOLd = EVOL 'CHPO' DTDX SCAL cdro ;
  226. EVOLg = EVOL 'CHPO' DTDX SCAL cgau ;
  227. evol1=evold et evolg ;
  228. LISTE EVOL1;
  229. TAB1 = TABLE;
  230. TAB1.1 = 'MARQ LOSA';
  231. TAB1.2 = 'MARQ CROI';
  232.  
  233. Si GRAPH ;
  234. DESS EVOL1 'XBOR' 0. 1. 'GRIL' TAB1 'TITRE' ' Nusselt' ;
  235. trac RV.INCO.'TN' mt (cont mt) 14 'TITRE' ' Isothermes' ;
  236. trace unch mt (cont mt) 'TITRE' ' Vitesses' ;
  237. **pas defini avec ce maillage:dess evu 'TITRE' 'Coupe ox à y=1/2 (uy)' ;
  238. **dess evv 'TITRE' 'Coupe oy à x=1/2 (ux)' ;
  239. dess EVOL4 'XBOR' 0. itmax 'YBOR' -10.0 0.0;
  240. Finsi;
  241.  
  242. Nusd = (redu DTDX cdro);
  243. Nusg = (redu DTDX cgau);
  244.  
  245. Numg = somt (Nusg*(doma $cgau 'XXDIAGSI')) ;
  246. Numd = somt (Nusd*(doma $cdro 'XXDIAGSI')) ;
  247.  
  248. un2=KOPS un '*' (Pr*(Gr**0.5));
  249. sw = KOPS un 'ROT' $mt ;
  250. rk = EQEX $mt 'OPTI' 'EF' 'IMPL'
  251. ZONE $mt OPER LAPN -1. INCO 'PSI'
  252. ZONE $mt OPER FIMP sw INCO 'PSI'
  253. 'CLIM' 'PSI' 'TIMP' cnt 0.;
  254. rk.'INCO'=table 'INCO' ;
  255. rk.'INCO'.'PSI'=kcht $mt scal sommet 0. ;
  256. EXec rk ;
  257. psi=rk.'INCO'.'PSI';
  258. psi2=kops psi '*' (Pr*(Gr**0.5));
  259.  
  260. Si GRAPH ;
  261. trac psi mt CNT 14 'TITRE' 'Fonction de courant ';
  262. Finsi;
  263.  
  264. opti 'ECHO' 0 ;
  265. MESS '----------- Ra = ' Ra '------------------------------------';
  266. MESS ' NUSSELT MOYEN NUSSELT MAX NUSSELT MIN' ;
  267. MESS 'CAST3M : Gauche ' NUMG ' ' (MAXI Nusg) ' ' (MINI Nusg) ;
  268. MESS 'CAST3M : Droite ' NUMD ' ' (MAXI Nusd) ' ' (MINI Nusd) ;
  269. Si (EGA Ra 1.e5);
  270. MESS 'Vahl Davis : Ra 1.e5 4.519 7.717 0.729';
  271. Finsi ;
  272. Si (EGA Ra 1.e6);
  273. MESS 'Vahl Davis : Ra 1.e6 8.8 17.925 0.989';
  274. Finsi ;
  275. MESS '---------------------------------------------------------------';
  276. MESS ' Umax Vmax ' ;
  277. MESS 'CAST3M : '
  278. (MAXI (exco un 'UX')) (MAXI (exco un 'UY'));
  279. Si (EGA Ra 1.e5);
  280. MESS 'Vahl Davis : Ra 1.e5 34.73 68.59 ' ;
  281. Finsi ;
  282. Si (EGA Ra 1.e6);
  283. MESS 'Vahl Davis : Ra 1.e6 64.63 219.36 ' ;
  284. Finsi ;
  285. MESS '---------------------------------------------------------------';
  286. MESS ' Psi max ' ;
  287. MESS 'CAST3M : ' (MAXI PSI) ;
  288. Si (EGA Ra 1.e5);
  289. MESS 'Vahl Davis : Ra 1.e5 9.612 ' ;
  290. Finsi;
  291. Si (EGA Ra 1.e6);
  292. MESS 'Vahl Davis : Ra 1.e6 16.75 ' ;
  293. Finsi;
  294. MESS '---------------------------------------------------------------';
  295. opti 'ECHO' 1 ;
  296.  
  297. Si (NON COMPLET) ;
  298.  
  299. ern=abs( NUMD - 3.7)/3.7 ; ernm=abs((MAXI Nusg) - 6.4)/6.4 ;
  300. eru=abs((MAXI (exco un 'UY')) - 79.)/79.;
  301. erp=abs((MAXI PSI) - 10.)/10.;
  302. mess 'ern = ' ern ' ernm = ' ernm ' eru = ' eru ' erp = ' erp ;
  303. Si (ern > 0.05 ); erreur 5 ; Finsi ;
  304. Si (ernm > 0.1 ); erreur 5 ; Finsi ;
  305. Si (eru > 0.1 ); erreur 5 ; Finsi ;
  306. Si (erp > 0.05 ); erreur 5 ; Finsi ;
  307.  
  308. Finsi ;
  309.  
  310. FIN ;
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  

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