Télécharger burgers1d-2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : burgers1d-2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * NOM : BURGERS1D-2.DGIBI
  5. * DESCRIPTION : Exemple équation de Burgers 1D
  6. * 1D Burgers equation
  7. *
  8. * Similar to burgers1d.dgibi but more complex:
  9. * + interactive GUI (interact = vrai)
  10. * + slide generation for the lecture notes (transp = vrai)
  11. *
  12. *
  13. * See:
  14. * ENSTA Lecture Notes 2021
  15. * Introduction to the finite element method applied to
  16. * incompressible fluid mechanics (in english)
  17. * Introduction a la methode des elements finis en
  18. * mecanique des fluides incompressibles (en francais)
  19. * Stephane GOUNAND and Sergey KUDRIAKOV
  20. * http://www-cast3m.cea.fr/index.php?xml=supportcours
  21. *
  22. *
  23. *
  24. * LANGAGE : GIBIANE-CAST3M
  25. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  26. * mél : gounand@semt2.smts.cea.fr
  27. **********************************************************************
  28. * VERSION : v1, 25/09/2007, version initiale
  29. * HISTORIQUE : v1, 25/09/2007, création
  30. ************************************************************************
  31. *
  32. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  33. interact = FAUX ;
  34. graph = FAUX ;
  35. transp = VRAI ;
  36. *
  37. 'DEBPROC' MAJUN ;
  38. 'ARGUMENT' rvx*'TABLE' ;
  39. rv = rvx . 'EQEX' ;
  40. cn = rv . 'INCO' . 'CN' ;
  41. * cn = 'ELNO' $mt ('NOEL' $mt cn) ;
  42. un = '+' ('NOMC' 'UX' cn) ('NOMC' 'UY' ('*' cn 0.)) ;
  43. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' un ;
  44. matvid chvid = 'KOPS' 'MATRIK' ;
  45. 'RESPRO' matvid chvid ;
  46. 'FINPROC' ;
  47. *
  48. 'DEBPROC' CALCUL ;
  49. 'ARGUMENT' icini*'ENTIER' ;
  50. 'ARGUMENT' idecent*'ENTIER' ;
  51. 'ARGUMENT' lnclk/'LOGIQUE' ;
  52. *
  53. 'SI' ('NON' ('EXISTE' lnclk)) ;
  54. lnclk = FAUX ;
  55. 'FINSI' ;
  56. *
  57. nmail = 10 ;
  58. cfl = 0.5 ;
  59. dt = '/' cfl nmail ;
  60. tfinal = 2. ;
  61. nitma = 'ENTIER' ('/' tfinal dt) ;
  62. *
  63. 'SI' ('EGA' idecent 1) ;
  64. typdec = 'CENTREE' ;
  65. niter = 5 ;
  66. difart = '/' ('/' 1. ('FLOTTANT' nmail)) 2.D5 ;
  67. 'FINSI' ;
  68. 'SI' ('EGA' idecent 2) ;
  69. typdec = 'SUPG' ;
  70. niter = 5 ;
  71. difart = 0. ;
  72. 'FINSI' ;
  73. 'SI' ('EGA' idecent 3) ;
  74. typdec = 'SUPGDC' ;
  75. niter = 5 ;
  76. difart = 0. ;
  77. 'FINSI' ;
  78. omeg = 0.7 ;
  79. *
  80. * Maillage (Mesh)
  81. *
  82. pA = -1. 0. ; pB = 0. 0. ; pC = 1. 0. ; pD = 3. 0. ;
  83. lt1 = 'DROIT' nmail pA pB ;
  84. lt2 = 'DROIT' nmail pB pC ;
  85. lt3 = 'DROIT' nmail pC pD ;
  86. lt = lt1 'ET' lt2 'ET' lt3 ;
  87. bas = lt ;
  88. mt = 'TRANSLATION' lt 1 (0. 1.) ;
  89. gau = 'COTE' 4 mt ;
  90. dro = 'COTE' 2 mt ;
  91. _bas = 'CHANGER' bas 'QUAF' ;
  92. _gau = 'CHANGER' gau 'QUAF' ;
  93. _dro = 'CHANGER' dro 'QUAF' ;
  94. _mt = 'CHANGER' mt 'QUAF' ;
  95. 'ELIMINATION' (_mt 'ET' _bas 'ET' _gau 'ET' _dro) 1.D-6 ;
  96. $mt = 'MODE' _mt 'NAVIER_STOKES' 'LINE' ;
  97. $bas = 'MODE' _bas 'NAVIER_STOKES' 'LINE' ;
  98. $gau = 'MODE' _gau 'NAVIER_STOKES' 'LINE' ;
  99. $dro = 'MODE' _dro 'NAVIER_STOKES' 'LINE' ;
  100. mt = 'DOMA' $mt 'MAILLAGE' ;
  101. bas = 'DOMA' $bas 'MAILLAGE' ;
  102. gau = 'DOMA' $gau 'MAILLAGE' ;
  103. dro = 'DOMA' $dro 'MAILLAGE' ;
  104. *
  105. * Définition de la condition initiale et des conditions aux limites
  106. * Initial and boundary conditions
  107. *
  108. xmt = 'COORDONNEE' 1 mt ;
  109. *
  110. 'SI' ('EGA' icini 1) ;
  111. pmt = 'CHANGER' mt 'POI1' ;
  112. pmt1 = 'POIN' xmt 'EGINFE' 0. ;
  113. pmt3 = 'POIN' xmt 'EGSUPE' 1. ;
  114. pmt2 = 'DIFF' pmt (pmt1 'ET' pmt3) ;
  115. c1 = 'MANUEL' 'CHPO' pmt1 1 'SCAL' 0. ;
  116. c2 = 'COORDONNEE' 1 pmt2 ;
  117. c3 = 'MANUEL' 'CHPO' pmt3 1 'SCAL' 1. ;
  118. umcini = c1 '+' c2 '+' c3 ;
  119. cini = '*' ('-' umcini 1.) -1. ;
  120. 'FINSI' ;
  121. *
  122. 'SI' ('EGA' icini 2) ;
  123. cini = 'MASQUE' xmt 'SUPERIEUR' 0. ;
  124. 'FINSI' ;
  125. uini = '+' ('NOMC' 'UX' cini) ('NOMC' 'UY' ('*' cini 0.)) ;
  126. cgau = 'REDU' cini gau ;
  127. cdro = 'REDU' cini dro ;
  128. *
  129. * table EQEX (Problem definition)
  130. *
  131. rv = 'EQEX' 'NITER' niter 'OMEGA' omeg 'ITMA' 1
  132. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  133. 'ZONE' $mt 'OPER' 'DFDT' 1. 'CNM1' dt 'INCO' 'CN' ;
  134. rv = 'EQEX' rv
  135. 'ZONE' $mt 'OPER' 'MAJUN'
  136. 'OPTI' 'EF' 'IMPL' typdec 'CMD' 0.2
  137. 'ZONE' $mt 'OPER' 'KONV' 1. 'UN' 'ALF' 'INCO' 'CN'
  138. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  139. 'ZONE' $mt 'OPER' 'LAPN' 'ALF' 'INCO' 'CN'
  140. 'CLIM' gau 'CN' 'TIMP' cgau
  141. 'CLIM' dro 'CN' 'TIMP' cdro ;
  142. *
  143. rv . 'INCO' = 'TABLE' 'INCO' ;
  144. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' uini ;
  145. rv . 'INCO' . 'ALF' = 'KCHT' $mt 'SCAL' 'CENTRE' difart ;
  146. rv . 'INCO' . 'CN' = 'KCHT' $mt 'SCAL' 'SOMMET' cini ;
  147. rv . 'INCO' . 'CNM1' = 'KCHT' $mt 'SCAL' 'SOMMET' cini ;
  148. *
  149. * Boucle en temps à la main
  150. * Manual time stepping loop
  151. *
  152. res = 'TABLE' ;
  153. res . 'icini' = icini ;
  154. res . 'bas' = bas ;
  155. res . 'TPS' = 'TABLE' ;
  156. res . 'CN' = 'TABLE' ;
  157. ires = 1 ;
  158. cn = rv . 'INCO' . 'CN' ;
  159. res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ;
  160. res . 'CN' . ires = 'COPIER' cn ;
  161. 'REPETER' iitma nitma ;
  162. EXEC rv ;
  163. ires = '+' ires 1 ;
  164. cn = rv . 'INCO' . 'CN' ;
  165. res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ;
  166. res . 'CN' . ires = 'COPIER' cn ;
  167. evc = 'EVOL' 'CHPO' cn 'SCAL' bas ;
  168. evtot = evc ;
  169. tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ;
  170. tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ;
  171. *tabt . 1 = 'CHAINE' 'TIRC NOLI' ;
  172. tabt . 'TITRE' . 1 = 'CHAINE' 'Sol. App.' ;
  173. cht = 'CHAINE' 'Pdt = ' &iitma ;
  174. 'SI' graph ;
  175. 'SI' lnclk ;
  176. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C'
  177. 'TITR' cht 'LEGE' tabt 'NCLK' ;
  178. 'SINON' ;
  179. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C'
  180. 'TITR' cht 'LEGE' tabt ;
  181. 'FINSI' ;
  182. 'FINS' ;
  183. 'FIN' iitma ;
  184. 'RESPRO' res ;
  185. 'FINPROC' ;
  186. *
  187. * Post-traitement (Post-treatment)
  188. *
  189. 'DEBPROC' POST ;
  190. 'ARGUMENT' res*'TABLE' ;
  191. 'ARGUMENT' lnclk/'LOGIQUE' ;
  192. 'SI' ('NON' ('EXISTE' lnclk)) ;
  193. lnclk = FAUX ;
  194. 'FINSI' ;
  195.  
  196. 'OPTI' 'DIME' 3 ;
  197. icini = res . 'icini' ;
  198. bas = res . 'bas' ;
  199. rt = res . 'TPS' ;
  200. rc = res . 'CN' ;
  201. tm = 'TABLE' 'ESCLAVE' ;
  202. 'REPETER' it ('DIME' rt) ;
  203. ti = rt . &it ;
  204. ci = rc . &it ;
  205. mail = bas 'PLUS' ('NOMC' 'UZ' ci) ;
  206. mail = mail 'PLUS' (0. ti 0.) ;
  207. tm . &it = mail ;
  208. 'FIN' it ;
  209. 'SI' ('EGA' icini 1) ;
  210. oeil = '*' (1.2 -2.4 1.3) 2. ;
  211. 'FINSI' ;
  212. 'SI' ('EGA' icini 2) ;
  213. oeil = '*' (-2.1 -2.4 1.3) 2. ;
  214. 'FINSI' ;
  215. mtp = 'ET' tm ;
  216. 'SI' lnclk ;
  217. 'TRACER' oeil mtp 'NCLK' ;
  218. 'SINON' ;
  219. 'TRACER' oeil mtp ;
  220. 'FINSI' ;
  221. 'OPTI' 'DIME' 2 ;
  222. 'FINPROC' ;
  223. *
  224. * Table contenant les choix des menus (Menu entries)
  225. *
  226. tcini = 'TABLE' ;
  227. tcini . 1 = 'choc' ; tcini . 2 = 'detente' ;
  228. ntcini = 'DIME' tcini ; itcini = 1 ;
  229. tadc = 'TABLE' ;
  230. tadc . 1 = 'CENTREE' ; tadc . 2 = 'SUPG' ; tadc . 3 = 'SUPGDC' ;
  231. ntadc = 'DIME' tadc ; itadc = 1 ;
  232. *
  233. * Précalcul de tous les cas (Precompute all cases)
  234. *
  235. tprec = 'TABLE' ;
  236. 'REPETER' b1 ntcini ;
  237. tprec . &b1 = 'TABLE' ;
  238. 'REPETER' b2 ntadc ;
  239. tprec . &b1 . &b2 = CALCUL &b1 &b2 VRAI ;
  240. 'FIN' b2 ;
  241. 'FIN' b1 ;
  242. *
  243. * Boucle d'affichage (Print loop)
  244. *
  245. 'SI' interact ;
  246. 'REPETER' bouc ;
  247. * CALCUL itcini itadc VRAI ;
  248. POST (tprec . itcini . itadc) VRAI ;
  249. cha = 'CHAINE' ' ' ;
  250. ret = 'MENU' cha (tcini . itcini) (tadc . itadc) ;
  251. 'SI' ('EGA' ret 'Quitter') ;
  252. 'QUITTER' bouc ;
  253. 'FINSI';
  254. 'SI' ('EGA' ret (tcini . itcini)) ; itcini = '+' itcini 1 ; 'FINSI' ;
  255. 'SI' (itcini > ntcini) ; itcini = 1 ; 'FINSI';
  256. 'SI' ('EGA' ret (tadc . itadc)) ; itadc = '+' itadc 1 ; 'FINSI' ;
  257. 'SI' (itadc > ntadc) ; itadc = 1 ; 'FINSI';
  258. 'FIN' bouc ;
  259. 'FINS' ;
  260. *
  261. * Mes transparents
  262. * Lecture notes slides
  263. *
  264. 'SI' transp ;
  265. 'OPTI' 'TRAC' 'PS' ;
  266. POST (tprec . 1 . 1) VRAI ;
  267. POST (tprec . 1 . 2) VRAI ;
  268. POST (tprec . 2 . 1) VRAI ;
  269. POST (tprec . 2 . 2) VRAI ;
  270. 'FINSI' ;
  271. *
  272. 'SI' interact ;
  273. 'OPTION' 'DONN' 5 ;
  274. 'FINSI' ;
  275. *
  276. * End of dgibi file BURGERS1D-2.DGIBI
  277. *
  278. 'FIN' ;
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  

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