Télécharger convdif1d-2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : convdif1d-2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * NOM : CONVDIF1D-2
  5. * DESCRIPTION : 1D convection-diffusion equation
  6. *
  7. * Similar to convdif1d.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. * LANGAGE : GIBIANE-CAST3M
  21. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  22. * mél : gounand@semt2.smts.cea.fr
  23. **********************************************************************
  24. * VERSION : v1, 25/09/2007, version initiale
  25. * HISTORIQUE : v1, 25/09/2007, création
  26. ************************************************************************
  27. *
  28. * Solution exacte : (1 - exp (2 Pe x)) / (1 - exp (2 Pe))
  29. * Exact solution
  30. *
  31. 'DEBPROC' solex ;
  32. 'ARGUMENT' pe*'FLOTTANT' ;
  33. pe2 = '*' pe 2 ;
  34. lx = 'PROG' 0. 'PAS' 1.D-3 1. ;
  35. l1 = 'PROG' ('DIME' lx) * 1. ;
  36. num = '-' l1 ('EXP' ('*' lx pe2)) ;
  37. den = '-' 1. ('EXP' pe2) ;
  38. ly = '/' num den ;
  39. evex = 'EVOL' 'MANU' lx ly ;
  40. 'RESPRO' evex ;
  41. 'FINPROC' ;
  42. *
  43. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  44. interact = faux ;
  45. nb = VRAI ;
  46. transp = vrai ;
  47. *
  48. Peclet = 10. ;
  49. *
  50. 'DEBPROC' CALCUL ;
  51. 'ARGUMENT' imail*'ENTIER' ;
  52. 'ARGUMENT' tmail*'ENTIER' ;
  53. 'ARGUMENT' idecent*'ENTIER' ;
  54. 'ARGUMENT' icmd*'ENTIER' ;
  55. 'ARGUMENT' lnclk/'LOGIQUE' ;
  56. *
  57. 'SI' ('NON' ('EXISTE' lnclk)) ;
  58. lnclk = FAUX ;
  59. 'FINSI' ;
  60. *
  61. * Nombre de mailles (mesh number)
  62. lnmail = 'LECT' 4 6 10 20 40 ;
  63. nmail = 'EXTRAIRE' lnmail imail ;
  64. * Densités (densities)
  65. ltmail = 'PROG' 1. 3. 10. ;
  66. dmail = 'EXTRAIRE' ltmail tmail ;
  67. dmoy = '/' 1. ('FLOTTANT' nmail) ;
  68. dini = '*' dmoy dmail ;
  69. dfin = '/' dmoy dmail ;
  70. * Décentrement (upwinding)
  71. 'SI' ('EGA' idecent 1) ;
  72. typdec = 'CENTREE' ;
  73. niter = 1 ;
  74. 'FINSI' ;
  75. 'SI' ('EGA' idecent 2) ;
  76. typdec = 'SUPG' ;
  77. niter = 1 ;
  78. 'FINSI' ;
  79. * Coefficient multiplicatif du décentrement
  80. * Multiplier for the upwinding term
  81. lcmd = 'PROG' 0.2 0.5 1. ;
  82. cmd = 'EXTRAIRE' lcmd icmd ;
  83. *
  84. * Maillage (Mesh)
  85. *
  86. p0 = 0. 0. ; p1 = 1. 0. ;
  87. *'SI' ('>' tmail 1) ;
  88. lt = 'DROIT' ('*' nmail -1) p0 p1 'DINI' dini 'DFIN' dfin ;
  89. *'SINON' ;
  90. * lt = 'DROIT' nmail p0 p1 ;
  91. *'FINSI' ;
  92. bas = lt ;
  93. mt = 'TRANSLATION' lt 1 (0. 1.) ;
  94. gau = 'COTE' 4 mt ;
  95. dro = 'COTE' 2 mt ;
  96. _bas = 'CHANGER' bas 'QUAF' ;
  97. _gau = 'CHANGER' gau 'QUAF' ;
  98. _dro = 'CHANGER' dro 'QUAF' ;
  99. _mt = 'CHANGER' mt 'QUAF' ;
  100. 'ELIMINATION' (_mt 'ET' _bas 'ET' _gau 'ET' _dro) 1.D-6 ;
  101. $mt = 'MODE' _mt 'NAVIER_STOKES' 'LINE' ;
  102. $bas = 'MODE' _bas 'NAVIER_STOKES' 'LINE' ;
  103. $gau = 'MODE' _gau 'NAVIER_STOKES' 'LINE' ;
  104. $dro = 'MODE' _dro 'NAVIER_STOKES' 'LINE' ;
  105. mt = 'DOMA' $mt 'MAILLAGE' ;
  106. bas = 'DOMA' $bas 'MAILLAGE' ;
  107. gau = 'DOMA' $gau 'MAILLAGE' ;
  108. dro = 'DOMA' $dro 'MAILLAGE' ;
  109. *
  110. * table EQEX (Problem description)
  111. *
  112. rv = 'EQEX' 'NITER' niter
  113. 'OPTI' 'EF' 'IMPL' typdec 'CMD' cmd
  114. 'ZONE' $mt 'OPER' 'KONV' 1. 'UN' 'ALF' 'INCO' 'TN'
  115. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  116. 'ZONE' $mt 'OPER' 'LAPN' 'ALF' 'INCO' 'TN'
  117. 'CLIM' gau 'TN' 'TIMP' 0.
  118. 'CLIM' dro 'TN' 'TIMP' 1.
  119. ;
  120. rv . 'INCO' = 'TABLE' 'INCO' ;
  121. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (1. 0.) ;
  122. rv . 'INCO' . 'ALF' = 'KCHT' $mt 'SCAL' 'CENTRE' ('/' 0.5 Peclet) ;
  123. rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET' 0. ;
  124. *
  125. EXEC rv ;
  126. *
  127. * Post treatment
  128. *
  129. tn = rv . 'INCO' . 'TN' ;
  130. evt = 'EVOL' 'CHPO' tn 'SCAL' bas ;
  131. evx = SOLEX Peclet ;
  132. evm = 'EVOL' 'CHPO' ('MANUEL' 'CHPO' bas 1 'SCAL' -0.3) 'SCAL' bas ;
  133. 'SI' nb ;
  134. evtot = evt 'ET' evx ;
  135. 'SINON' ;
  136. evtot = ('COULEUR' evt 'JAUN') 'ET' ('COULEUR' evx 'TURQ') ;
  137. 'FINSI' ;
  138. 'SI' ('>' tmail 1) ;
  139. evtot = evtot 'ET' evm ;
  140. 'FINSI' ;
  141. *
  142. tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ;
  143. tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ;
  144. *tabt . 1 = 'CHAINE' 'TIRC NOLI' ;
  145. tabt . 3 = 'CHAINE' 'MARQ PLUS' ;
  146. tabt . 'TITRE' . 1 = 'CHAINE' 'Sol. App.' ;
  147. tabt . 'TITRE' . 2 = 'CHAINE' 'Sol. Exa.' ;
  148. tabt . 'TITRE' . 3 = 'CHAINE' 'Pts mail.' ;
  149. 'SI' transp ;
  150. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'T'
  151. 'LEGE' tabt ;
  152. 'SINON' ;
  153. 'SI' lnclk ;
  154. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'T'
  155. 'TITR' ('CHAINE' 'Peclet=' Peclet)
  156. 'LEGE' tabt 'NCLK' ;
  157. 'SINON' ;
  158. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'T'
  159. 'TITR' ('CHAINE' 'Peclet=' Peclet)
  160. 'LEGE' tabt ;
  161. 'FINSI' ;
  162. 'FINSI' ;
  163. 'FINPROC' ;
  164. *
  165. 'SI' interact ;
  166. *
  167. * Table contenant les choix des menus
  168. * Menu entries
  169. *
  170. tanx = 'TABLE' ;
  171. tanx . 1 = 'nx=4' ; tanx . 2 = 'nx=6' ; tanx . 3 = 'nx=10' ;
  172. tanx . 4 = 'nx=20' ; tanx . 5 = 'nx=40' ;
  173. ntanx = 'DIME' tanx ; itanx = 1 ;
  174. tatm = 'TABLE' ;
  175. tatm . 1 = 'Regulier' ; tatm . 2 = 'Densx3' ; tatm . 3 = 'Densx10' ;
  176. ntatm = 'DIME' tatm ; itatm = 1 ;
  177. tadc = 'TABLE' ;
  178. tadc . 1 = 'CENTREE' ; tadc . 2 = 'SUPG' ;
  179. * tadc . 3 = 'SUPGDC' ;
  180. ntadc = 'DIME' tadc ; itadc = 1 ;
  181. *
  182. tacmd = 'TABLE' ;
  183. tacmd . 1 = 'CMD0.2' ; tacmd . 2 = 'CMD0.5' ; tacmd . 3 = 'CMD1.0' ;
  184. ntacmd = 'DIME' tacmd ; itacmd = 2 ;
  185. *
  186. * Boucle d'affichage
  187. * Print loop
  188. *
  189. 'REPETER' bouc ;
  190. CALCUL itanx itatm itadc itacmd VRAI ;
  191. cha = 'CHAINE' 'Peclet=' Peclet ;
  192. ret = 'MENU' cha (tanx . itanx) (tatm . itatm) (tadc . itadc)
  193. (tacmd . itacmd) ;
  194. 'SI' ('EGA' ret 'Quitter') ;
  195. 'QUITTER' bouc ;
  196. 'FINSI';
  197. 'SI' ('EGA' ret (tanx . itanx)) ; itanx = '+' itanx 1 ; 'FINSI' ;
  198. 'SI' (itanx > ntanx) ; itanx = 1 ; 'FINSI';
  199. 'SI' ('EGA' ret (tatm . itatm)) ; itatm = '+' itatm 1 ; 'FINSI' ;
  200. 'SI' (itatm > ntatm) ; itatm = 1 ; 'FINSI';
  201. 'SI' ('EGA' ret (tadc . itadc)) ; itadc = '+' itadc 1 ; 'FINSI' ;
  202. 'SI' (itadc > ntadc) ; itadc = 1 ; 'FINSI';
  203. 'SI' ('EGA' ret (tacmd . itacmd)) ; itacmd = '+' itacmd 1 ; 'FINSI' ;
  204. 'SI' (itacmd > ntacmd) ; itacmd = 1 ; 'FINSI';
  205. 'FIN' bouc ;
  206. 'FINSI' ;
  207. *
  208. * Mes transparents
  209. * Lecture notes slides
  210. *
  211. 'SI' transp ;
  212. 'OPTI' 'TRAC' 'PS' ;
  213. CALCUL 2 1 1 2 ;
  214. *
  215. CALCUL 3 1 1 2 ;
  216. CALCUL 5 1 1 2 ;
  217. *
  218. CALCUL 2 2 1 2 ;
  219. CALCUL 2 3 1 2 ;
  220. *
  221. CALCUL 2 1 2 2 ;
  222. CALCUL 3 1 2 2 ;
  223. 'FINSI' ;
  224. *
  225. 'SI' interact ;
  226. 'OPTION' 'DONN' 5 ;
  227. 'FINSI' ;
  228. *
  229. * End of dgibi file CONVDIF1D-2
  230. *
  231. 'FIN' ;
  232.  
  233.  
  234.  
  235.  

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