Télécharger conv2d-2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : conv2d-2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * NOM : CONV2D-2
  5. * DESCRIPTION : 2D pure convection equation
  6. *
  7. * Similar to conv2d.dgibi but more complex:
  8. * + interactive GUI (interact = vrai)
  9. * + slide generation for the lecture notes (transp = vrai)
  10. *
  11. * See:
  12. * ENSTA Lecture Notes 2021
  13. * Introduction to the finite element method applied to
  14. * incompressible fluid mechanics (in english)
  15. * Introduction a la methode des elements finis en
  16. * mecanique des fluides incompressibles (en francais)
  17. * Stephane GOUNAND and Sergey KUDRIAKOV
  18. * http://www-cast3m.cea.fr/index.php?xml=supportcours
  19. *
  20. *
  21. *
  22. * LANGAGE : GIBIANE-CAST3M
  23. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  24. * mél : gounand@semt2.smts.cea.fr
  25. **********************************************************************
  26. * VERSION : v1, 25/09/2007, version initiale
  27. * HISTORIQUE : v1, 25/09/2007, création
  28. ************************************************************************
  29. *
  30. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  31. interact = FAUX ;
  32. transp = VRAI ;
  33. *
  34. * Scaled hyperbolic tangent function
  35. *
  36. 'DEBPROC' STANH ;
  37. 'ARGUMENT' xmoy*'FLOTTANT' ;
  38. 'ARGUMENT' xtan*'FLOTTANT' ;
  39. 'ARGUMENT' ymin*'FLOTTANT' ;
  40. 'ARGUMENT' ymax*'FLOTTANT' ;
  41. 'ARGUMENT' xi*'CHPOINT' ;
  42. *
  43. xnew = '/' ('-' xi xmoy) xtan ;
  44. ynew = 'TANH' xnew ;
  45. ytan = '/' ('-' ymax ymin) 2.D0 ;
  46. ymoy = '/' ('+' ymax ymin) 2.D0 ;
  47. y = '+' ('*' ynew ytan) ymoy ;
  48. *
  49. 'RESPRO' y ;
  50. 'FINPROC' ;
  51. *
  52. *
  53. 'DEBPROC' CALCUL ;
  54. 'ARGUMENT' iini*'ENTIER' ;
  55. 'ARGUMENT' iang*'ENTIER' ;
  56. 'ARGUMENT' imail*'ENTIER' ;
  57. 'ARGUMENT' idecent*'ENTIER' ;
  58. 'ARGUMENT' icmd*'ENTIER' ;
  59. 'ARGUMENT' itrac*'ENTIER' ;
  60. 'ARGUMENT' lnclk/'LOGIQUE' ;
  61. *
  62. 'SI' ('NON' ('EXISTE' lnclk)) ;
  63. lnclk = FAUX ;
  64. 'FINSI' ;
  65. *
  66. angle = '*' ('-' iang 1) 10.D0 ;
  67. nmail = '*' 15 imail ;
  68. lcmd = 'PROG' 0.2 0.5 1.0 ;
  69. cmd = 'EXTRAIRE' lcmd icmd ;
  70. *
  71. lmesh = 1.5 ;
  72. 'SI' ('EGA' idecent 1) ;
  73. typdec = 'CENTREE' ;
  74. * diffusion toute petite (very small diffusion)
  75. difart = '/' ('/' lmesh ('FLOTTANT' nmail)) 2.D45 ;
  76. * difart = 0. ;
  77. niter = 1 ;
  78. omeg = 1. ;
  79. 'FINSI' ;
  80. 'SI' ('EGA' idecent 2) ;
  81. typdec = 'CENTREE' ;
  82. * alfa = U dx / 2 Pem avec Peclet critique de maille = 1
  83. * alfa = U dx / 2 Pem with critical mesh Peclet number = 1
  84. difart = '/' ('/' lmesh ('FLOTTANT' nmail)) 2. ;
  85. difart = '*' difart cmd ;
  86. niter = 1 ;
  87. omeg = 1. ;
  88. 'FINSI' ;
  89. 'SI' ('EGA' idecent 3) ;
  90. typdec = 'SUPG' ;
  91. difart = 0. ;
  92. niter = 1 ;
  93. omeg = 1. ;
  94. 'FINSI' ;
  95. 'SI' ('EGA' idecent 4) ;
  96. typdec = 'SUPGDC' ;
  97. difart = 0. ;
  98. niter = 15 ;
  99. omeg = 0.7 ;
  100. 'FINSI' ;
  101. *
  102. * Maillage (Mesh)
  103. *
  104. larg = 1.5 ; prof = 1.5 ;
  105. p0 = 0. 0. ; p1 = larg 0. ;
  106. lt = 'DROIT' nmail p0 p1 ;
  107. *mt = 'TRANSLATION' lt ('ENTIER' ('*' nmail 1.5)) (0. 1.5) ;
  108. mt = 'TRANSLATION' lt nmail (0. prof) ;
  109. *mt = 'TRANSLATION' lt nmail (0. iang) ;
  110. cmt = 'CONTOUR' mt ;
  111. pmt = 'CHANGER' mt 'POI1' ; pcmt = 'CHANGER' cmt 'POI1' ;
  112. intmt = 'DIFF' pmt pcmt ;
  113. pertx = 'BRUIT' 'BLAN' 'GAUSS' 0. ('/' 0.1 nmail) intmt ;
  114. perty = 'BRUIT' 'BLAN' 'GAUSS' 0. ('/' 0.1 nmail) intmt ;
  115. *'DEPLACER' mt 'PLUS'
  116. * ('+' ('NOMC' 'UX' pertx) ('NOMC' 'UY' perty)) ;
  117. bas dro hau gau = 'COTE' mt ;
  118. hau = 'INVERSE' hau ;
  119. _bas = 'CHANGER' bas 'QUAF' ; _dro = 'CHANGER' dro 'QUAF' ;
  120. _hau = 'CHANGER' hau 'QUAF' ; _gau = 'CHANGER' gau 'QUAF' ;
  121. _mt = 'CHANGER' mt 'QUAF' ;
  122. 'ELIMINATION' (_mt 'ET' _bas 'ET' _gau 'ET' _dro 'ET' _hau) 1.D-6 ;
  123. $mt = 'MODE' _mt 'NAVIER_STOKES' 'LINE' ;
  124. $gau = 'MODE' _gau 'NAVIER_STOKES' 'LINE' ;
  125. $dro = 'MODE' _dro 'NAVIER_STOKES' 'LINE' ;
  126. $hau = 'MODE' _hau 'NAVIER_STOKES' 'LINE' ;
  127. $bas = 'MODE' _bas 'NAVIER_STOKES' 'LINE' ;
  128. mt = 'DOMA' $mt 'MAILLAGE' ; gau = 'DOMA' $gau 'MAILLAGE' ;
  129. dro = 'DOMA' $dro 'MAILLAGE' ; hau = 'DOMA' $hau 'MAILLAGE' ;
  130. bas = 'DOMA' $bas 'MAILLAGE' ;
  131. *
  132. * Boundary condition
  133. *
  134. xmoye = 0.5 ;
  135. xmoys = xmoye '+' ('*' prof ('TAN' angle)) ;
  136. 'SI' ('EGA' iini 1) ;
  137. solex = STANH ('COORDONNEE' 1 mt) xmoye -0.15 0. 1. ;
  138. solsor= STANH ('COORDONNEE' 1 mt) xmoys -0.15 0. 1. ;
  139. 'SINON' ;
  140. solex = 'MASQUE' ('COORDONNEE' 1 mt) 'INFERIEUR' xmoye ;
  141. solsor = 'MASQUE' ('COORDONNEE' 1 mt) 'INFERIEUR' xmoys ;
  142. 'FINSI' ;
  143. mclim = 'ET' bas gau ;
  144. cclim = 'REDU' solex mclim ;
  145. *
  146. * table EQEX (Problem description)
  147. *
  148. rv = 'EQEX' 'NITER' niter 'OMEGA' omeg
  149. 'OPTI' 'EF' 'IMPL' typdec 'CMD' cmd
  150. 'ZONE' $mt 'OPER' 'KONV' 1. 'UN' 'ALF' 'INCO' 'TN'
  151. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  152. 'ZONE' $mt 'OPER' 'LAPN' 'ALF' 'INCO' 'TN'
  153. 'CLIM' mclim 'TN' 'TIMP' cclim
  154. ;
  155. rv . 'INCO' = 'TABLE' 'INCO' ;
  156. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (('SIN' angle)
  157. ('COS' angle)) ;
  158. rv . 'INCO' . 'ALF' = 'KCHT' $mt 'SCAL' 'CENTRE' difart ;
  159. rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' 0. ;
  160. *
  161. EXEC rv ;
  162. *
  163. tn = rv . 'INCO' . 'TN' ;
  164. *
  165. * Post-traitement (Post-treatment)
  166. *
  167. 'SI' ('EGA' itrac 1) ;
  168. 'OPTI' 'DIME' 3 ;
  169. tnp mtp = 'PLUS' tn mt ('*' ('NOMC' 'UZ' tn) 0.5D0) ;
  170. oeil = '*' (1.2 -2.4 1.3) 2. ;
  171. 'SI' lnclk ;
  172. 'TRACER' oeil 'CACH' tnp mtp 'NCLK' ;
  173. 'SINON' ;
  174. 'TRACER' oeil 'CACH' tnp mtp ;
  175. 'FINSI' ;
  176. 'OPTI' 'DIME' 2 ;
  177. 'FINSI' ;
  178. 'SI' ('EGA' itrac 2) ;
  179. 'OPTI' 'DIME' 3 ;
  180. mtp = 'PLUS' mt ('*' ('NOMC' 'UZ' tn) 0.5D0) ;
  181. oeil = '*' (1.2 -2.4 1.3) 2. ;
  182. 'SI' lnclk ;
  183. 'TRACER' oeil 'CACH' mtp 'NCLK' ;
  184. 'SINON' ;
  185. 'TRACER' oeil 'CACH' mtp ;
  186. 'FINSI' ;
  187. 'OPTI' 'DIME' 2 ;
  188. 'FINSI' ;
  189. 'SI' ('EGA' itrac 3) ;
  190. evb = 'EVOL' 'CHPO' solsor 'SCAL' hau ;
  191. evh = 'EVOL' 'CHPO' tn 'SCAL' hau ;
  192. * evtot = ('COULEUR' evh 'JAUN') 'ET' ('COULEUR' evb 'TURQ') ;
  193. evtot = evh 'ET' evb ;
  194. tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ;
  195. tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ;
  196. tabt . 'TITRE' . 1 = 'CHAINE' 'y=1' ;
  197. tabt . 'TITRE' . 2 = 'CHAINE' 'y=0' ;
  198. 'SI' lnclk ;
  199. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'T' 'LEGE' tabt 'NCLK' ;
  200. 'SINON' ;
  201. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'T' 'LEGE' tabt ;
  202. 'FINSI' ;
  203. 'FINSI' ;
  204. 'FINPROC' ;
  205. *
  206. 'SI' interact ;
  207. *
  208. * Table contenant les choix des menus (Menu entries)
  209. *
  210. tini = 'TABLE' ;
  211. tini . 1 = 'tanh' ; tini . 2 = 'choc' ;
  212. ntini = 'DIME' tini ; itini = 1 ;
  213. *
  214. tang = 'TABLE' ;
  215. tang . 1 = 'ang=0' ; tang . 2 = 'ang=10' ; tang . 3 = 'ang=20' ;
  216. ntang = 'DIME' tang ; itang = 2 ;
  217. *
  218. tanx = 'TABLE' ;
  219. tanx . 1 = 'nx=15' ; tanx . 2 = 'nx=30' ;
  220. ntanx = 'DIME' tanx ; itanx = 2 ;
  221. *
  222. tadc = 'TABLE' ;
  223. tadc . 1 = 'CENTREE' ; tadc . 2 = 'CENT+DIFF' ; tadc . 3 = 'SUPG' ;
  224. tadc . 4 = 'SUPGDC' ;
  225. ntadc = 'DIME' tadc ; itadc = 1 ;
  226. *
  227. tacmd = 'TABLE' ;
  228. tacmd . 1 = 'CMD0.3' ; tacmd . 2 = 'CMD0.5' ; tacmd . 3 = 'CMD1.0' ;
  229. ntacmd = 'DIME' tacmd ; itacmd = 2 ;
  230. *
  231. taff = 'TABLE' ;
  232. taff . 1 = '3D+ISO' ; taff . 2 = '3D' ; taff . 3 = '2D' ;
  233. ntaff = 'DIME' taff ; itaff = 1 ;
  234. *
  235. * Boucle d'affichage (Print loop)
  236. *
  237. 'REPETER' bouc ;
  238. CALCUL itini itang itanx itadc itacmd itaff VRAI ;
  239. cha = 'CHAINE' 'Transport concentration' ;
  240. ret = 'MENU' cha (tini . itini) (tang . itang) (tanx . itanx)
  241. (tadc . itadc) (tacmd . itacmd) (taff . itaff) ;
  242. 'SI' ('EGA' ret 'Quitter') ;
  243. 'QUITTER' bouc ;
  244. 'FINSI';
  245. 'SI' ('EGA' ret (tini . itini)) ; itini = '+' itini 1 ; 'FINSI' ;
  246. 'SI' (itini > ntini) ; itini = 1 ; 'FINSI';
  247. 'SI' ('EGA' ret (tang . itang)) ; itang = '+' itang 1 ; 'FINSI' ;
  248. 'SI' (itang > ntang) ; itang = 1 ; 'FINSI';
  249. 'SI' ('EGA' ret (tanx . itanx)) ; itanx = '+' itanx 1 ; 'FINSI' ;
  250. 'SI' (itanx > ntanx) ; itanx = 1 ; 'FINSI';
  251. 'SI' ('EGA' ret (tadc . itadc)) ; itadc = '+' itadc 1 ; 'FINSI' ;
  252. 'SI' (itadc > ntadc) ; itadc = 1 ; 'FINSI';
  253. 'SI' ('EGA' ret (tacmd . itacmd)) ; itacmd = '+' itacmd 1 ; 'FINSI' ;
  254. 'SI' (itacmd > ntacmd) ; itacmd = 1 ; 'FINSI';
  255. 'SI' ('EGA' ret (taff . itaff)) ; itaff = '+' itaff 1 ; 'FINSI' ;
  256. 'SI' (itaff > ntaff) ; itaff = 1 ; 'FINSI';
  257. 'FIN' bouc ;
  258. 'FINSI' ;
  259. *
  260. * Mes transparents
  261. * Lecture notes slides
  262. *
  263. 'SI' transp ;
  264. 'OPTI' 'TRAC' 'PS' ;
  265. CALCUL 1 2 2 1 2 2 ;
  266. *
  267. CALCUL 1 2 2 2 2 2 ;
  268. CALCUL 1 2 2 2 2 3 ;
  269. *
  270. CALCUL 1 2 2 3 2 2 ;
  271. CALCUL 1 2 2 3 2 3 ;
  272. *
  273. CALCUL 2 2 2 3 2 2 ;
  274. CALCUL 2 2 2 4 2 2 ;
  275. 'FINSI' ;
  276. *
  277. 'SI' interact ;
  278. 'OPTION' 'DONN' 5 ;
  279. 'FINSI' ;
  280. *
  281. * End of dgibi file CONV2D-2
  282. *
  283. 'FIN' ;
  284.  
  285.  
  286.  
  287.  

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