Télécharger diff1d-2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : diff1d-2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. * NOM : DIFF1D-2
  5. * DESCRIPTION : Exemple diffusion 1D en temporel
  6. * Non stationary 1D diffusion equation
  7. *
  8. * Similar to diff1d.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. *
  25. * LANGAGE : GIBIANE-CAST3M
  26. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  27. * mél : gounand@semt2.smts.cea.fr
  28. **********************************************************************
  29. * VERSION : v1, 25/09/2007, version initiale
  30. * HISTORIQUE : v1, 25/09/2007, création
  31. ************************************************************************
  32. *
  33. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  34. interact = FAUX ;
  35. graph = FAUX ;
  36. transp = VRAI ;
  37. *
  38. 'DEBPROC' CALCUL ;
  39. 'ARGUMENT' icini*'ENTIER' ;
  40. 'ARGUMENT' idt*'ENTIER' ;
  41. 'ARGUMENT' lnclk/'LOGIQUE' ;
  42. *
  43. 'SI' ('NON' ('EXISTE' lnclk)) ;
  44. lnclk = FAUX ;
  45. 'FINSI' ;
  46. *
  47. nmail = 10 ;
  48. nitma = 10 ;
  49. * Time steps
  50. lndt = 'PROG' 1.D-1 1.D-2 1.D-3 1.D-4 1.D-5 ;
  51. dt = 'EXTRAIRE' lndt idt ;
  52. *
  53. * Maillage (Mesh)
  54. *
  55. pA = 0. 0. ; pB = 1. 0. ;
  56. lt = 'DROIT' nmail pA pB ;
  57. bas = lt ;
  58. mt = 'TRANSLATION' lt 1 (0. 1.) ;
  59. gau = 'COTE' 4 mt ;
  60. dro = 'COTE' 2 mt ;
  61. _bas = 'CHANGER' bas 'QUAF' ;
  62. _gau = 'CHANGER' gau 'QUAF' ;
  63. _dro = 'CHANGER' dro 'QUAF' ;
  64. _mt = 'CHANGER' mt 'QUAF' ;
  65. 'ELIMINATION' (_mt 'ET' _bas 'ET' _gau 'ET' _dro) 1.D-6 ;
  66. $mt = 'MODE' _mt 'NAVIER_STOKES' 'LINE' ;
  67. $bas = 'MODE' _bas 'NAVIER_STOKES' 'LINE' ;
  68. $gau = 'MODE' _gau 'NAVIER_STOKES' 'LINE' ;
  69. $dro = 'MODE' _dro 'NAVIER_STOKES' 'LINE' ;
  70. mt = 'DOMA' $mt 'MAILLAGE' ;
  71. bas = 'DOMA' $bas 'MAILLAGE' ;
  72. gau = 'DOMA' $gau 'MAILLAGE' ;
  73. dro = 'DOMA' $dro 'MAILLAGE' ;
  74. *
  75. * Initial condition
  76. *
  77. 'SI' ('EGA' icini 1) ;
  78. cini = 'MANUEL' 'CHPO' mt 'SCAL' 0. ;
  79. 'FINSI' ;
  80. *
  81. 'SI' ('EGA' icini 2) ;
  82. cini = '+' ('MANUEL' 'CHPO' mt 'SCAL' 0.)
  83. ('MANUEL' 'CHPO' gau 'SCAL' 1.) ;
  84. 'FINSI' ;
  85. *
  86. * table EQEX (Problem definition)
  87. *
  88. rv = 'EQEX' 'NITER' 1 'OMEGA' 1. 'ITMA' 1
  89. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  90. 'ZONE' $mt 'OPER' 'DFDT' 1. 'CNM1' dt 'INCO' 'CN'
  91. 'OPTI' 'EF' 'IMPL' 'CENTREE'
  92. 'ZONE' $mt 'OPER' 'LAPN' 1. 'INCO' 'CN'
  93. 'CLIM' gau 'CN' 'TIMP' 1.
  94. 'CLIM' dro 'CN' 'TIMP' 0. ;
  95. *
  96. rv . 'INCO' = 'TABLE' 'INCO' ;
  97. rv . 'INCO' . 'CN' = 'KCHT' $mt 'SCAL' 'SOMMET' cini ;
  98. rv . 'INCO' . 'CNM1' = 'KCHT' $mt 'SCAL' 'SOMMET' cini ;
  99. *
  100. * Boucle en temps à la main
  101. * Manual time stepping loop
  102. *
  103. res = 'TABLE' ;
  104. res . 'icini' = icini ;
  105. res . 'bas' = bas ;
  106. res . 'TPS' = 'TABLE' ;
  107. res . 'CN' = 'TABLE' ;
  108. ires = 1 ;
  109. cn = rv . 'INCO' . 'CN' ;
  110. res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ;
  111. res . 'CN' . ires = 'COPIER' cn ;
  112. 'REPETER' iitma nitma ;
  113. EXEC rv ;
  114. ires = '+' ires 1 ;
  115. cn = rv . 'INCO' . 'CN' ;
  116. res . 'TPS' . ires = rv . 'PASDETPS' . 'TPS' ;
  117. res . 'CN' . ires = 'COPIER' cn ;
  118. evc = 'EVOL' 'CHPO' cn 'SCAL' bas ;
  119. evtot = evc ;
  120. tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ;
  121. tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ;
  122. *tabt . 1 = 'CHAINE' 'TIRC NOLI' ;
  123. tabt . 'TITRE' . 1 = 'CHAINE' 'Sol. App.' ;
  124. cht = 'CHAINE' 'Pdt = ' &iitma ;
  125. 'SI' graph ;
  126. 'SI' lnclk ;
  127. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C'
  128. 'TITR' cht 'LEGE' tabt 'NCLK' ;
  129. 'SINON' ;
  130. 'DESSIN' evtot 'TITX' 'X' 'TITY' 'C'
  131. 'TITR' cht 'LEGE' tabt ;
  132. 'FINSI' ;
  133. 'FINS' ;
  134. 'FIN' iitma ;
  135. 'RESPRO' res ;
  136. 'FINPROC' ;
  137. *
  138. * Post-traitement
  139. * Post treatment
  140. *
  141. 'DEBPROC' POST ;
  142. 'ARGUMENT' res*'TABLE' ;
  143. 'ARGUMENT' ipost*'ENTIER' ;
  144. 'ARGUMENT' lnclk/'LOGIQUE' ;
  145. 'SI' ('NON' ('EXISTE' lnclk)) ;
  146. lnclk = FAUX ;
  147. 'FINSI' ;
  148.  
  149. 'OPTI' 'DIME' 3 ;
  150. icini = res . 'icini' ;
  151. bas = res . 'bas' ;
  152. rt = res . 'TPS' ;
  153. rc = res . 'CN' ;
  154. tm = 'TABLE' 'ESCLAVE' ;
  155. lt = 'PROG' ;
  156. lm = 'PROG' ;
  157. 'REPETER' it ('DIME' rt) ;
  158. ti = rt . &it ;
  159. ci = rc . &it ;
  160. mail = bas 'PLUS' ('NOMC' 'UZ' ci) ;
  161. mail = mail 'PLUS' (0. ('*' &it 0.1) 0.) ;
  162. tm . &it = mail ;
  163. lt = 'ET' lt ('PROG' ti) ;
  164. lm = 'ET' lm ('PROG' ('MINIMUM' ci)) ;
  165. 'FIN' it ;
  166. oeil = '*' (1.2 -2.4 1.3) 2. ;
  167. mtp = 'ET' tm ;
  168. 'SI' ('EGA' ipost 1) ;
  169. 'SI' lnclk ;
  170. 'TRACER' oeil mtp 'NCLK' ;
  171. 'SINON' ;
  172. 'TRACER' oeil mtp ;
  173. 'FINSI' ;
  174. 'FINSI' ;
  175. 'OPTI' 'DIME' 2 ;
  176. 'SI' ('EGA' ipost 2) ;
  177. evtot = 'EVOL' 'MANU' lt lm ;
  178. tabt = 'TABLE' ;
  179. tabt . 1 = 'CHAINE' 'TIRC MARQ CROI' ;
  180. * tabt . 1 = 'CHAINE' 'TIRC NOLI' ;
  181. 'SI' lnclk ;
  182. 'DESSIN' evtot 'TITX' 't' 'TITY' 'Min c.'
  183. 'TITR' ('CHAINE' 'Minimum c(t)')
  184. 'LEGE' tabt 'NCLK' ;
  185. 'SINON' ;
  186. 'DESSIN' evtot 'TITX' 't' 'TITY' 'Min c.'
  187. 'TITR' ('CHAINE' 'Minimum c(t)')
  188. 'LEGE' tabt ;
  189. 'FINSI' ;
  190. 'FINSI' ;
  191. 'FINPROC' ;
  192. *
  193. * Table contenant les choix des menus (menu entries)
  194. *
  195. tcini = 'TABLE' ;
  196. tcini . 1 = 'choc' ; tcini . 2 = 'smooth' ;
  197. ntcini = 'DIME' tcini ; itcini = 1 ;
  198. tdt = 'TABLE' ;
  199. tdt . 1 = 'dt=1.D-1' ; tdt . 2 = 'dt=1.D-2' ; tdt . 3 = 'dt=1.D-3' ;
  200. tdt . 4 = 'dt=1.D-4' ; tdt . 5 = 'dt=1.D-5' ;
  201. ntdt = 'DIME' tdt ; itdt = 1 ;
  202. tpost = 'TABLE' ;
  203. tpost . 1 = '3D' ; tpost . 2 = 'Min. c' ;
  204. ntpost = 'DIME' tpost ; itpost = 1 ;
  205. *
  206. * Précalcul de tous les cas (Precompute all cases)
  207. *
  208. tprec = 'TABLE' ;
  209. 'REPETER' b1 ntcini ;
  210. tprec . &b1 = 'TABLE' ;
  211. 'REPETER' b2 ntdt ;
  212. tprec . &b1 . &b2 = CALCUL &b1 &b2 VRAI ;
  213. 'FIN' b2 ;
  214. 'FIN' b1 ;
  215. *
  216. 'SI' interact ;
  217. *
  218. * Boucle d'affichage (Print loop)
  219. *
  220. 'REPETER' bouc ;
  221. * CALCUL itcini itadc VRAI ;
  222. POST (tprec . itcini . itdt) itpost VRAI ;
  223. cha = 'CHAINE' ' ' ;
  224. ret = 'MENU' cha (tcini . itcini) (tdt . itdt) (tpost . itpost) ;
  225. 'SI' ('EGA' ret 'Quitter') ;
  226. 'QUITTER' bouc ;
  227. 'FINSI';
  228. 'SI' ('EGA' ret (tcini . itcini)) ; itcini = '+' itcini 1 ; 'FINSI' ;
  229. 'SI' (itcini > ntcini) ; itcini = 1 ; 'FINSI';
  230. 'SI' ('EGA' ret (tdt . itdt)) ; itdt = '+' itdt 1 ; 'FINSI' ;
  231. 'SI' (itdt > ntdt) ; itdt = 1 ; 'FINSI';
  232. 'SI' ('EGA' ret (tpost . itpost)) ; itpost = '+' itpost 1 ; 'FINSI' ;
  233. 'SI' (itpost > ntpost) ; itpost = 1 ; 'FINSI';
  234. 'FIN' bouc ;
  235. 'FINS' ;
  236. *
  237. * Mes transparents
  238. * Lecture notes slides
  239. *
  240. 'SI' transp ;
  241. 'OPTI' 'TRAC' 'PS' ;
  242. *
  243. POST (tprec . 1 . 1) 1 ;
  244. POST (tprec . 1 . 4) 1 ;
  245. *
  246. POST (tprec . 2 . 1) 1 ;
  247. POST (tprec . 2 . 4) 1 ;
  248. *
  249.  
  250. 'FINSI' ;
  251. *
  252. 'SI' interact ;
  253. 'OPTION' 'DONN' 5 ;
  254. 'FINSI' ;
  255. *
  256. * End of dgibi file DIFF1D-2
  257. *
  258. 'FIN' ;
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  

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