Télécharger burgerpsi.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : burgerpsi.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. NX = 30 ; NY = 30 ;
  6. NITER = 200 ;
  7. CFL = 0.8 ;
  8. GRAPH = 'N' ;
  9. opti isov suli ;
  10.  
  11. ***********************************************************
  12. * EQUATION DE CONVECTION NON-LINEAIRE Ut + div (F(U)) = 0 *
  13. * RESOLUE SOUS FORME NON-CONSERVATIVE *
  14. * dU/dt + lambda . nabla U = 0 avec lambda = dF/dU *
  15. * AVEC L'OPTION PSI (POSITIVE STREAMWISE INVARIANT) *
  16. ***********************************************************
  17.  
  18. ********************************
  19. * PROCEDURE POUR TRACER COUPES *
  20. ********************************
  21.  
  22. DEBPROC TRCE ;
  23. ARGU M*'MAILLAGE' ;
  24. nb = nbel M ;
  25. R = (M poin 1) droi 1 (M poin 2) ;
  26. i=2 ; itma = nb-2 ;
  27. repeter bloc1 itma ;
  28. R = R et ((M poin i) droi 1 (M poin (i+1))) ;
  29. i=i+1 ;
  30. fin bloc1 ;
  31. FINPROC R ;
  32.  
  33. ***********************************************
  34. * PROCEDURE POUR CALCULER CHAMP DE VITESSE ET *
  35. * TESTER LA CONVERGENCE *
  36. ***********************************************
  37.  
  38. DEBPROC CALCUL ;
  39. ARGU RVX*'TABLE' ;
  40.  
  41. RV = RVX.'EQEX' ;
  42. CN = RV.INCO.'CN' ;
  43.  
  44. DD = RV.PASDETPS.'NUPASDT' ;
  45. NN = DD/5 ;
  46. LO = (DD-(5*NN)) EGA 0 ;
  47. SI ( LO ) ;
  48.  
  49. ERR = KOPS (RV.INCO.'CN') - (RV.INCO.'CNM1') ;
  50.  
  51. ELI = MAXI ERR 'ABS' ;
  52. ELI = (LOG (ELI + 1.0E-20))/(LOG 10.) ;
  53. MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF ' ELI ;
  54. IT = PROG RV.PASDETPS.'NUPASDT' ;
  55. ER = PROG ELI ;
  56. RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
  57. RV.INCO.'ER' = (RV.INCO.'ER') ET ER ;
  58. FINSI ;
  59.  
  60. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  61. VX = NOMC 'UX' CN ;
  62. VV = KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY')
  63. (VX ET VY) ;
  64. RV.INCO.'VITESSE' = VV ;
  65.  
  66. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;
  67. as2 ama1 = 'KOPS' 'MATRIK' ;
  68. FINPROC as2 ama1 ;
  69.  
  70. ****************************************************
  71.  
  72. opti elem tri3 ;
  73. titre 'Equation de Burger' ;
  74.  
  75. *************
  76. * DIFFUSION *
  77. *************
  78. DIF = 1.0E-10 ;
  79.  
  80. ************
  81. * MAILLAGE *
  82. ************
  83.  
  84. A1 = 0.0 0.0 ;
  85. A2 = 1.0 0.0 ;
  86. A3 = 1.0 1.0 ;
  87. A4 = 0.0 1.0 ;
  88.  
  89. FBAS = A1 'DROI' NX A2 ;
  90. FDRO = A2 'DROI' NY A3 ;
  91. FHAU = A3 'DROI' NX A4 ;
  92. FGAU = A4 'DROI' NY A1 ;
  93.  
  94. PA1 = FBAS POIN 'PROC' A1 ;
  95. PA2 = FBAS POIN 'PROC' A2 ;
  96. P12 = CHAN POI1 FBAS ;
  97. MA1 = P12 ELEM 'CONTENANT' PA1 ;
  98. MA2 = P12 ELEM 'CONTENANT' PA2 ;
  99.  
  100. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  101.  
  102. *********************************
  103. * CREATION MODELE NAVIER-STOKES *
  104. *********************************
  105.  
  106. XDOMTOT = CHAN DOMTOT QUAF ;
  107. XFBAS = CHAN FBAS QUAF ;
  108. ELIM (XDOMTOT ET XFBAS) 1.E-3 ;
  109.  
  110. $DOMTOT = MODE XDOMTOT 'NAVIER_STOKES' LINE ;
  111. $FBAS = MODE XFBAS 'NAVIER_STOKES' LINE ;
  112.  
  113. **************************************
  114. * INITIALISATION DU CHAMP DE VITESSE *
  115. **************************************
  116.  
  117. VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' 0.0 ;
  118. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  119. CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY) ;
  120.  
  121. ************************************
  122. * PROFIL DE LA SOLUTION A L'ENTREE *
  123. ************************************
  124.  
  125. XBAS = COOR 1 FBAS ;
  126. XBAS = NOMC 'UX' XBAS ;
  127. SOLUTION = 1.5 - (2.0*XBAS) ;
  128. CHP1 = KCHT $FBAS 'SCAL' 'SOMMET' 'COMP' 'UX' SOLUTION ;
  129. CHP1 = NOMC 'CN' CHP1 ;
  130.  
  131. ***********************
  132. * TABLE DE RESOLUTION *
  133. ***********************
  134.  
  135. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  136. 'ZONE' $DOMTOT
  137. 'OPER' CALCUL
  138. 'OPTI' 'PSI'
  139. 'OPER' TSCAL DIF 'VITESSE' 0.0 'INCO' 'CN'
  140. 'OPTI' 'CENTREE'
  141. 'OPER' 'DFDT' 1. 'CN' 'DELTAT' 'INCO' 'CN'
  142. 'CLIM' 'CN' 'TIMP' FBAS CHP1
  143. 'CLIM' 'CN' 'TIMP' FGAU 1.5
  144. 'CLIM' 'CN' 'TIMP' FDRO (-0.5)
  145. 'CLIM' 'CN' 'TIMP' MA1 (-1.5)
  146. 'CLIM' 'CN' 'TIMP' MA2 (0.5) ;
  147.  
  148. RV.INCO = TABLE 'INCO' ;
  149. RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  150. RV.INCO.'VITESSE'= CHVIT ;
  151.  
  152. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
  153. RV.INCO.'IT' = PROG 1 ;
  154. RV.INCO.'ER' = PROG 0. ;
  155.  
  156. EXEC RV ;
  157.  
  158. *************************
  159. * ANALYSE DES RESULTATS *
  160. *************************
  161.  
  162. MESSAGE 'MAX = ' (MAXI RV.INCO.'CN') 'MAXTHEORIQUE = 1.5 ' ;
  163. MESSAGE 'MIN = ' (MINI RV.INCO.'CN') 'MINTHEORIQUE = -0.5 ' ;
  164.  
  165. SI ( (MINI RV.INCO.'ER') > -4.0 ) ;
  166. ERREUR 5 ;
  167. FINSI ;
  168. SI ( (MAXI RV.INCO.'CN') > 1.50001D0 ) ;
  169. ERREUR 5 ;
  170. FINSI ;
  171. SI ( (MINI RV.INCO.'CN') < -0.50001D0 ) ;
  172. ERREUR 5 ;
  173. FINSI ;
  174.  
  175. SI ( 'EGA' graph 'O') ;
  176. TRAC DOMTOT ;
  177. TRAC DOMTOT (RV.INCO.'CN') (CONT DOMTOT) 14 ;
  178. P1 = DOMTOT POIN 'PROC' (0.0 0.7) ;
  179. P2 = DOMTOT POIN 'PROC' (1.0 0.7) ;
  180. P1P2 = DOMTOT POIN 'DROI' P1 P2 0.01 ;
  181. LI12 = TRCE P1P2 ;
  182. XX = COOR 1 LI12 ;
  183. EVOL1 = EVOL 'CHPO' (RV.INCO.'CN') SCAL LI12 ;
  184. EVOL2 = EVOL 'CHPO' XX SCAL LI12 ;
  185. LIX = 'EXTR' EVOL2 ORDO ;
  186. LIU = 'EXTR' EVOL1 ORDO ;
  187. EVOL3 = EVOL 'MANU' 'X' LIX 'U(X)' LIU ;
  188. EVOL3 = EVOL3 'COUL' VERT ;
  189.  
  190. EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  191. (RV.INCO.'ER') ;
  192. EVOL4 = EVOL4 'COUL' VERT ;
  193. FINSI ;
  194.  
  195. ****************************************************
  196.  
  197. opti elem qua4 ;
  198.  
  199. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  200.  
  201. *********************************
  202. * CREATION MODELE NAVIER-STOKES *
  203. *********************************
  204.  
  205. XDOMTOT = CHAN DOMTOT QUAF ;
  206. XFBAS = CHAN FBAS QUAF ;
  207. ELIM (XDOMTOT ET XFBAS) 1.E-3 ;
  208.  
  209. $DOMTOT = MODE XDOMTOT 'NAVIER_STOKES' LINE ;
  210. $FBAS = MODE XFBAS 'NAVIER_STOKES' LINE ;
  211.  
  212. ************************************
  213. * PROFIL DE LA SOLUTION A L'ENTREE *
  214. ************************************
  215.  
  216. XBAS = COOR 1 FBAS ;
  217. XBAS = NOMC 'UX' XBAS ;
  218. SOLUTION = 1.5 - (2.0*XBAS) ;
  219. CHP1 = KCHT $FBAS 'SCAL' 'SOMMET' 'COMP' 'UX' SOLUTION ;
  220. CHP1 = NOMC 'CN' CHP1 ;
  221.  
  222. ***********************
  223. * TABLE DE RESOLUTION *
  224. ***********************
  225.  
  226. CFL = 0.2 ;
  227. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  228. 'ZONE' $DOMTOT
  229. 'OPER' CALCUL
  230. 'OPTI' 'PSI'
  231. 'OPER' TSCAL DIF 'VITESSE' 0.0 'INCO' 'CN'
  232. 'OPTI' 'CENTREE'
  233. 'OPER' 'DFDT' 1. 'CN' 'DELTAT' 'INCO' 'CN'
  234. 'CLIM' 'CN' 'TIMP' FBAS CHP1
  235. 'CLIM' 'CN' 'TIMP' FGAU 1.5
  236. 'CLIM' 'CN' 'TIMP' FDRO (-0.5)
  237. 'CLIM' 'CN' 'TIMP' MA1 (-1.5)
  238. 'CLIM' 'CN' 'TIMP' MA2 (0.5) ;
  239.  
  240. RV.INCO = TABLE 'INCO' ;
  241. RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  242. RV.INCO.'VITESSE'= CHVIT ;
  243.  
  244. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
  245. RV.INCO.'IT' = PROG 1 ;
  246. RV.INCO.'ER' = PROG 0. ;
  247.  
  248. EXEC RV ;
  249.  
  250. *************************
  251. * ANALYSE DES RESULTATS *
  252. *************************
  253.  
  254. MESSAGE 'MAX = ' (MAXI RV.INCO.'CN') 'MAXTHEORIQUE = 1.5 ' ;
  255. MESSAGE 'MIN = ' (MINI RV.INCO.'CN') 'MINTHEORIQUE = -0.5 ' ;
  256.  
  257. SI ( (MINI RV.INCO.'ER') > -4.0 ) ;
  258. ERREUR 5 ;
  259. FINSI ;
  260. SI ( (MAXI RV.INCO.'CN') > 1.50001D0 ) ;
  261. ERREUR 5 ;
  262. FINSI ;
  263. SI ( (MINI RV.INCO.'CN') < -0.50001D0 ) ;
  264. ERREUR 5 ;
  265. FINSI ;
  266.  
  267. ***********************
  268. * TRACE DES RESULTATS *
  269. ***********************
  270.  
  271. SI ( 'EGA' graph 'O') ;
  272. UEXACT = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  273. XX YY = 'COOR' (DOMA $DOMTOT SOMMET) ;
  274. REPETER BLOC1 (NBNO DOMTOT) ;
  275. P1 = (DOMA $DOMTOT SOMMET) POIN &BLOC1 ;
  276. X1 = 'EXTR' XX 'SCAL' P1 ;
  277. Y1 = 'EXTR' YY 'SCAL' P1 ;
  278. D1 = Y1 - (0.5*X1/0.75) ;
  279. D2 = Y1 - (2.0*(1.0-X1)) ;
  280. D3 = Y1 - 1.0 - (2.0*(X1-1.0)) ;
  281. BO1 = ( D1 > 0.) ;
  282. BO2 = ( D2 > 0.) ;
  283. BO3 = ( D3 > 0.) ;
  284. SI ( BO1 ET BO3 ) ;
  285. U1 = 1.5 ;
  286. SINON ;
  287. SI ( (NON BO1) ET (NON BO2) );
  288. U1 = (1.5-(2.0*X1))/(1.-(2.0*Y1)) ;
  289. SINON ;
  290. U1 = -0.5 ;
  291. FINSI ;
  292. FINSI ;
  293. C1 = MANU 'CHPO' P1 1 SCAL U1 ;
  294. C2 = KCHT $DOMTOT 'SCAL' 'SOMMET' C1 ;
  295. UEXACT = (UEXACT ET C2) ;
  296. FIN BLOC1 ;
  297.  
  298.  
  299. TRACE DOMTOT ;
  300. TRAC DOMTOT (RV.INCO.'CN') (CONT DOMTOT) 14 ;
  301.  
  302. P1 = DOMTOT POIN 'PROC' (0.0 0.7) ;
  303. P2 = DOMTOT POIN 'PROC' (1.0 0.7) ;
  304. P1P2 = DOMTOT POIN 'DROI' P1 P2 0.01 ;
  305. LI12 = TRCE P1P2 ;
  306.  
  307. XX = COOR 1 LI12 ;
  308.  
  309. EVOL1 = EVOL 'CHPO' (RV.INCO.'CN') SCAL LI12 ;
  310. EVOL2 = EVOL 'CHPO' XX SCAL LI12 ;
  311.  
  312. LIX = 'EXTR' EVOL2 ORDO ;
  313. LIU = 'EXTR' EVOL1 ORDO ;
  314. EVOL33 = EVOL 'MANU' 'X' LIX 'U(X)' LIU ;
  315. EVOL33 = EVOL33 'COUL' 'TURQ' ;
  316.  
  317. EVOL44 = EVOL 'CHPO' UEXACT SCAL LI12 ;
  318. LIUEX = 'EXTR' EVOL44 ORDO ;
  319. EVOL55 = EVOL 'MANU' 'X' LIX 'UEXACT(X)' LIUEX ;
  320. EVOL55 = EVOL55 'COUL' 'ROUG' ;
  321.  
  322. TAB1 = TABLE ;
  323. TAB1.1 = 'MARQ TRIA' ;
  324. TAB1.2 = 'MARQ CARR' ;
  325. TAB1.'TITRE' = TABLE ;
  326. TAB1.'TITRE' . 1 = 'MOT' 'TRIANGLE' ;
  327. TAB1.'TITRE' . 2 = 'MOT' 'QUADRANGLE' ;
  328. TAB1.'TITRE' . 3 = 'MOT' 'EXACT' ;
  329. DESS (EVOL3 ET EVOL33 ET EVOL55) 'XBOR' 0.0 1.0 'YBOR' -1. 2.
  330. 'TITR' 'Coupe a y=0.7' LEGE TAB1 ;
  331.  
  332. EVOL6 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  333. (RV.INCO.'ER') ;
  334. EVOL6 = EVOL6 COUL TURQ ;
  335. DESS (EVOL4 ET EVOL6) 'XBOR' 0. 1000. 'YBOR' -10.0 0.0
  336. LEGE TAB1 ;
  337.  
  338. FINSI ;
  339.  
  340. FIN ;
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  

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