Télécharger burgerC.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : burgerC.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. COMPLET = FAUX ;
  6. SI ( COMPLET ) ;
  7. NX = 30 ; NY = 30 ;
  8. NITER = 500 ;
  9. CFL = 0.8 ;
  10. SINON ;
  11. NX = 10 ; NY = 10 ;
  12. NITER = 180 ;
  13. CFL = 0.8 ;
  14. FINSI ;
  15. GRAPH = 'N' ;
  16.  
  17. ***********************************************************
  18. * EQUATION DE CONVECTION NON-LINEAIRE Ut + div (F(U)) = 0 *
  19. * TSCAL OPTION CONS (conservatif) SUPGDC (par défaut) *
  20. ***********************************************************
  21.  
  22. ********************************
  23. * PROCEDURE POUR TRACER COUPES *
  24. ********************************
  25.  
  26. DEBPROC TRCE ;
  27. ARGU M*'MAILLAGE' ;
  28. nb = nbel M ;
  29. R = (M poin 1) droi 1 (M poin 2) ;
  30. i=2 ; itma = nb-2 ;
  31. repeter bloc1 itma ;
  32. R = R et ((M poin i) droi 1 (M poin (i+1))) ;
  33. i=i+1 ;
  34. fin bloc1 ;
  35. FINPROC R ;
  36.  
  37. ***********************************************
  38. * PROCEDURE POUR CALCULER CHAMP DE VITESSE ET *
  39. * TESTER LA CONVERGENCE *
  40. ***********************************************
  41.  
  42. DEBPROC CALCUL ;
  43. ARGU RVX*'TABLE' ;
  44.  
  45. RV = RVX.'EQEX' ;
  46. CN = RV.INCO.'CN' ;
  47.  
  48. DD = RV.PASDETPS.'NUPASDT' ;
  49. NN = DD/5 ;
  50. LO = (DD-(5*NN)) EGA 0 ;
  51. SI ( LO ) ;
  52.  
  53. ERR = KOPS (RV.INCO.'CN') - (RV.INCO.'CNM1') ;
  54.  
  55. ELI = MAXI ERR 'ABS' ;
  56. ELI = (LOG (ELI + 1.0E-20))/(LOG 10.) ;
  57. MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF ' ELI ;
  58. IT = PROG RV.PASDETPS.'NUPASDT' ;
  59. ER = PROG ELI ;
  60. RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
  61. RV.INCO.'ER' = (RV.INCO.'ER') ET ER ;
  62. FINSI ;
  63.  
  64. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  65. VX1 = KOPS CN '/' 2. ;
  66. VX = NOMC 'UX' VX1 ;
  67. VV = KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY')
  68. (VX ET VY) ;
  69. RV.INCO.'VITESSE' = VV ;
  70.  
  71. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;
  72. as2 ama1 = 'KOPS' 'MATRIK' ;
  73. FINPROC as2 ama1 ;
  74.  
  75. ****************************************************
  76.  
  77. opti elem tri3 ;
  78. titre 'Equation de Burger' ;
  79.  
  80. *************
  81. * DIFFUSION *
  82. *************
  83. DIF = 1.0E-10 ;
  84.  
  85. ************
  86. * MAILLAGE *
  87. ************
  88.  
  89. A1 = 0.0 0.0 ;
  90. A2 = 1.0 0.0 ;
  91. A3 = 1.0 1.0 ;
  92. A4 = 0.0 1.0 ;
  93.  
  94. FBAS = A1 'DROI' NX A2 ;
  95. FDRO = A2 'DROI' NY A3 ;
  96. FHAU = A3 'DROI' NX A4 ;
  97. FGAU = A4 'DROI' NY A1 ;
  98.  
  99. PA1 = FBAS POIN 'PROC' A1 ;
  100. PA2 = FBAS POIN 'PROC' A2 ;
  101. P12 = CHAN POI1 FBAS ;
  102. MA1 = P12 ELEM 'CONTENANT' PA1 ;
  103. MA2 = P12 ELEM 'CONTENANT' PA2 ;
  104.  
  105. SI ( COMPLET ) ;
  106. * maillage regulier
  107. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  108. SINON ;
  109. * maillage non-structuré
  110. DOMTOT = (FBAS ET FDRO ET FHAU ET FGAU) 'SURF' 'PLAN' ;
  111. FINSI ;
  112.  
  113. *********************************
  114. * CREATION MODELE NAVIER-STOKES *
  115. *********************************
  116.  
  117. XDOMTOT = CHAN DOMTOT QUAF ;
  118. XFBAS = CHAN FBAS QUAF ;
  119. ELIM (XDOMTOT ET XFBAS) 1.E-3 ;
  120.  
  121. $DOMTOT = MODE XDOMTOT 'NAVIER_STOKES' LINE ;
  122. $FBAS = MODE XFBAS 'NAVIER_STOKES' LINE ;
  123.  
  124. **************************************
  125. * INITIALISATION DU CHAMP DE VITESSE *
  126. **************************************
  127.  
  128. VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' 0.0 ;
  129. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  130. CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY) ;
  131.  
  132. ************************************
  133. * PROFIL DE LA SOLUTION A L'ENTREE *
  134. ************************************
  135.  
  136. XBAS = COOR 1 FBAS ;
  137. XBAS = NOMC 'UX' XBAS ;
  138. SOLUTION = 1.5 - (2.0*XBAS) ;
  139. CHP1 = KCHT $FBAS 'SCAL' 'SOMMET' 'COMP' 'UX' SOLUTION ;
  140. CHP1 = NOMC 'CN' CHP1 ;
  141.  
  142. ***********************
  143. * TABLE DE RESOLUTION *
  144. ***********************
  145.  
  146. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  147. 'ZONE' $DOMTOT
  148. 'OPER' CALCUL
  149. 'OPTI' 'CONS'
  150. 'OPER' TSCAL DIF 'VITESSE' 0.0 'CN' 'INCO' 'CN'
  151. 'OPTI' 'CENTREE'
  152. 'OPER' 'DFDT' 1. 'CN' 'DELTAT' 'INCO' 'CN'
  153. 'CLIM' 'CN' 'TIMP' FBAS CHP1
  154. 'CLIM' 'CN' 'TIMP' FGAU 1.5
  155. 'CLIM' 'CN' 'TIMP' FDRO (-0.5)
  156. 'CLIM' 'CN' 'TIMP' MA1 (-1.5)
  157. 'CLIM' 'CN' 'TIMP' MA2 (0.5) ;
  158.  
  159. RV.INCO = TABLE 'INCO' ;
  160. RV.INCO.'CN' = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  161. RV.INCO.'VITESSE'= CHVIT ;
  162.  
  163. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' 1. ;
  164. RV.INCO.'IT' = PROG 1 ;
  165. RV.INCO.'ER' = PROG 0. ;
  166.  
  167. EXEC RV ;
  168.  
  169. *************************
  170. * ANALYSE DES RESULTATS *
  171. *************************
  172.  
  173. MESSAGE 'MAX = ' (MAXI RV.INCO.'CN') 'MAXTHEORIQUE = 1.5 ' ;
  174. MESSAGE 'MIN = ' (MINI RV.INCO.'CN') 'MINTHEORIQUE = -0.5 ' ;
  175.  
  176. SI ( (MINI RV.INCO.'ER') > -3.0 ) ;
  177. ERREUR 5 ;
  178. FINSI ;
  179. SI ( (MAXI RV.INCO.'CN') > 1.65 ) ;
  180. ERREUR 5 ;
  181. FINSI ;
  182. SI ( (MINI RV.INCO.'CN') < -0.60 ) ;
  183. ERREUR 5 ;
  184. FINSI ;
  185.  
  186. ***********************
  187. * TRACE DES RESULTATS *
  188. ***********************
  189.  
  190. SI ( 'EGA' graph 'O') ;
  191.  
  192. UEXACT = KCHT $DOMTOT 'SCAL' 'SOMMET' 0. ;
  193. XX YY = 'COOR' (DOMA $DOMTOT SOMMET) ;
  194. REPETER BLOC1 (NBNO DOMTOT) ;
  195. P1 = (DOMA $DOMTOT SOMMET) POIN &BLOC1 ;
  196. X1 = 'EXTR' XX 'SCAL' P1 ;
  197. Y1 = 'EXTR' YY 'SCAL' P1 ;
  198. D1 = Y1 - (0.5*X1/0.75) ;
  199. D2 = Y1 - (2.0*(1.0-X1)) ;
  200. D3 = Y1 - 1.0 - (2.0*(X1-1.0)) ;
  201. BO1 = ( D1 > 0.) ;
  202. BO2 = ( D2 > 0.) ;
  203. BO3 = ( D3 > 0.) ;
  204. SI ( BO1 ET BO3 ) ;
  205. U1 = 1.5 ;
  206. SINON ;
  207. SI ( (NON BO1) ET (NON BO2) );
  208. U1 = (1.5-(2.0*X1))/(1.-(2.0*Y1)) ;
  209. SINON ;
  210. U1 = -0.5 ;
  211. FINSI ;
  212. FINSI ;
  213. C1 = MANU 'CHPO' P1 1 SCAL U1 ;
  214. C2 = KCHT $DOMTOT 'SCAL' 'SOMMET' C1 ;
  215. UEXACT = (UEXACT ET C2) ;
  216. FIN BLOC1 ;
  217.  
  218.  
  219. TRACE DOMTOT ;
  220. MESSAGE 'MAX = ' (MAXI RV.INCO.'CN')
  221. 'MIN = ' (MINI RV.INCO.'CN') ;
  222. TRAC DOMTOT (RV.INCO.'CN') (CONT DOMTOT) ;
  223.  
  224. SI ( COMPLET ) ;
  225. P1 = DOMTOT POIN 'PROC' (0.0 0.7) ;
  226. P2 = DOMTOT POIN 'PROC' (1.0 0.7) ;
  227. P1P2 = DOMTOT POIN 'DROI' P1 P2 0.01 ;
  228. LI12 = TRCE P1P2 ;
  229.  
  230. XX = COOR 1 LI12 ;
  231.  
  232. EVOL1 = EVOL 'CHPO' (RV.INCO.'CN') SCAL LI12 ;
  233. EVOL2 = EVOL 'CHPO' XX SCAL LI12 ;
  234.  
  235. LIX = 'EXTR' EVOL2 ORDO ;
  236. LIU = 'EXTR' EVOL1 ORDO ;
  237. EVOL3 = EVOL 'MANU' 'X' LIX 'U(X)' LIU ;
  238.  
  239. EVOL4 = EVOL 'CHPO' UEXACT SCAL LI12 ;
  240. LIUEX = 'EXTR' EVOL4 ORDO ;
  241. EVOL5 = EVOL 'MANU' 'X' LIX 'UEXACT(X)' LIUEX ;
  242.  
  243. TAB1 = TABLE ;
  244. TAB1.1 = 'MARQ LOSA' ;
  245. DESS (EVOL3 ET EVOL5) 'XBOR' 0.0 1.0 'YBOR' -1. 2.
  246. 'TITR' 'Coupe a y=0.7' TAB1 ;
  247. FINSI ;
  248.  
  249. EVOL4 = EVOL 'MANU' 'ITERATIONS' (RV.INCO.'IT') 'LOG|E|inf'
  250. (RV.INCO.'ER') ;
  251. DESS EVOL4 'XBOR' 0. 2000. 'YBOR' -20.0 0.0 ;
  252.  
  253. FINSI ;
  254.  
  255. FIN ;
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  

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