Télécharger burgerNC.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : burgerNC.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. * RESOLUE SOUS FORME NON-CONSERVATIVE *
  20. * dU/dt + lambda . nabla U = 0 avec lambda = dF/dU *
  21. * AVEC OPTION SUPGDC (par défaut) *
  22. ***********************************************************
  23.  
  24. ********************************
  25. * PROCEDURE POUR TRACER COUPES *
  26. ********************************
  27.  
  28. DEBPROC TRCE ;
  29. ARGU M*'MAILLAGE' ;
  30. nb = nbel M ;
  31. R = (M poin 1) droi 1 (M poin 2) ;
  32. i=2 ; itma = nb-2 ;
  33. repeter bloc1 itma ;
  34. R = R et ((M poin i) droi 1 (M poin (i+1))) ;
  35. i=i+1 ;
  36. fin bloc1 ;
  37. FINPROC R ;
  38.  
  39. ***********************************************
  40. * PROCEDURE POUR CALCULER CHAMP DE VITESSE ET *
  41. * TESTER LA CONVERGENCE *
  42. ***********************************************
  43.  
  44. DEBPROC CALCUL ;
  45. ARGU RVX*'TABLE' ;
  46.  
  47. RV = RVX.'EQEX' ;
  48. CN = RV.INCO.'CN' ;
  49.  
  50. DD = RV.PASDETPS.'NUPASDT' ;
  51. NN = DD/5 ;
  52. LO = (DD-(5*NN)) EGA 0 ;
  53. SI ( LO ) ;
  54.  
  55. ERR = KOPS (RV.INCO.'CN') - (RV.INCO.'CNM1') ;
  56.  
  57. ELI = MAXI ERR 'ABS' ;
  58. ELI = (LOG (ELI + 1.0E-20))/(LOG 10.) ;
  59. MESSAGE 'ITER ' RV.PASDETPS.'NUPASDT' ' ERREUR LINF ' ELI ;
  60. IT = PROG RV.PASDETPS.'NUPASDT' ;
  61. ER = PROG ELI ;
  62. RV.INCO.'IT' = (RV.INCO.'IT') ET IT ;
  63. RV.INCO.'ER' = (RV.INCO.'ER') ET ER ;
  64. FINSI ;
  65.  
  66. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  67. VX = NOMC 'UX' CN ;
  68. VV = KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY')
  69. (VX ET VY) ;
  70. RV.INCO.'VITESSE' = VV ;
  71.  
  72. RV.INCO.'CNM1' = KCHT $DOMTOT 'SCAL' 'SOMMET' (RV.INCO.'CN') ;
  73. as2 ama1 = 'KOPS' 'MATRIK' ;
  74. FINPROC as2 ama1 ;
  75.  
  76. ****************************************************
  77.  
  78. opti elem tri3 ;
  79. titre 'Equation de Burger' ;
  80.  
  81. *************
  82. * DIFFUSION *
  83. *************
  84. DIF = 1.0E-10 ;
  85.  
  86. ************
  87. * MAILLAGE *
  88. ************
  89.  
  90. A1 = 0.0 0.0 ;
  91. A2 = 1.0 0.0 ;
  92. A3 = 1.0 1.0 ;
  93. A4 = 0.0 1.0 ;
  94.  
  95. FBAS = A1 'DROI' NX A2 ;
  96. FDRO = A2 'DROI' NY A3 ;
  97. FHAU = A3 'DROI' NX A4 ;
  98. FGAU = A4 'DROI' NY A1 ;
  99.  
  100. PA1 = FBAS POIN 'PROC' A1 ;
  101. PA2 = FBAS POIN 'PROC' A2 ;
  102. P12 = CHAN POI1 FBAS ;
  103. MA1 = P12 ELEM 'CONTENANT' PA1 ;
  104. MA2 = P12 ELEM 'CONTENANT' PA2 ;
  105.  
  106. SI ( COMPLET ) ;
  107. * maillage regulier
  108. DOMTOT = 'DALL' FBAS FDRO FHAU FGAU 'PLAN' ;
  109. SINON ;
  110. * maillage non-structuré
  111. DOMTOT = (FBAS ET FDRO ET FHAU ET FGAU) 'SURF' 'PLAN' ;
  112. FINSI ;
  113.  
  114. ***********************************
  115. * CREATION MODELES NAVIERS_STOKES *
  116. ***********************************
  117.  
  118. XDOMTOT= DOMTOT CHAN QUAF ;
  119. XFBAS = FBAS CHAN QUAF ;
  120. ELIM XDOMTOT XFBAS 1.E-3 ;
  121.  
  122. $DOMTOT = MODE XDOMTOT 'NAVIER_STOKES' LINE ;
  123. $FBAS = MODE XFBAS 'NAVIER_STOKES' LINE ;
  124.  
  125. **************************************
  126. * INITIALISATION DU CHAMP DE VITESSE *
  127. **************************************
  128.  
  129. VX = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UX' 0.0 ;
  130. VY = KCHT $DOMTOT 'SCAL' 'SOMMET' 'COMP' 'UY' 1.0 ;
  131. CHVIT=KCHT $DOMTOT 'VECT' 'SOMMET' 'COMP' (MOTS 'UX' 'UY') (VX ET VY) ;
  132.  
  133. ************************************
  134. * PROFIL DE LA SOLUTION A L'ENTREE *
  135. ************************************
  136.  
  137. XBAS = COOR 1 FBAS ;
  138. XBAS = NOMC 'UX' XBAS ;
  139. SOLUTION = 1.5 - (2.0*XBAS) ;
  140. CHP1 = KCHT $FBAS 'SCAL' 'SOMMET' 'COMP' 'UX' SOLUTION ;
  141. CHP1 = NOMC 'CN' CHP1 ;
  142.  
  143. ***********************
  144. * TABLE DE RESOLUTION *
  145. ***********************
  146.  
  147. RV = EQEX $DOMTOT 'ITMA' NITER 'ALFA' CFL
  148. 'ZONE' $DOMTOT
  149. 'OPER' CALCUL
  150. 'OPER' TSCAL DIF 'VITESSE' 0.0 '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.75 ) ;
  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.  

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