Télécharger ns1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : ns1.dgibi
  2. 'OPTI' 'ECHO' 0 ;
  3. ************************************************************************
  4. * NOM : NS1
  5. * DESCRIPTION : Ecoulement de Navier-Stokes dans une tete de Mickey
  6. * avec force tangente sur le bord
  7. * On utilise bloq depl dire pour imposer u.n = 0
  8. * Le test vérifie u.n=0
  9. *
  10. *
  11. * LANGAGE : GIBIANE-CAST3M
  12. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  13. * mél : gounand@semt2.smts.cea.fr
  14. **********************************************************************
  15. * VERSION : v1, 06/06/2008, version initiale
  16. * HISTORIQUE : v1, 06/06/2008, création
  17. * HISTORIQUE :
  18. * HISTORIQUE :
  19. ************************************************************************
  20. *
  21. 'SAUTER' 2 'LIGNE' ;
  22. 'MESSAGE' ' Execution de ns1.dgibi' ;
  23. 'SAUTER' 2 'LIGNE' ;
  24. *
  25. *
  26. interact = FAUX ;
  27. graph = FAUX ;
  28. *
  29. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  30. 'SI' ('NON' interact) ;
  31. 'OPTION' 'TRAC' 'PS' ;
  32. 'SINON' ;
  33. 'OPTION' 'TRAC' 'X' ;
  34. 'FINSI' ;
  35. lok = VRAI ;
  36. *
  37. * Procédure de calcul de la normale à un contour
  38. *
  39. * _mt : maillage de surface
  40. * discg : discrétisation géométrique
  41. * mnor : noms de composantes pour la normale
  42. * discm : discrétisation pour la normale
  43. *
  44. 'DEBPROC' VNOR ;
  45. 'ARGUMENT' _mt*'MAILLAGE' ;
  46. 'ARGUMENT' discg*'MOT' ;
  47. 'ARGUMENT' mnor*'LISTMOTS' ;
  48. 'ARGUMENT' discm*'MOT' ;
  49. *
  50. idim = 'VALEUR' 'DIME' ;
  51. numop = idim ; numder = idim ; numvar = 1 ; numdat = 0 ; numcof = 0 ;
  52. A = ININLIN numop numvar numdat numcof numder ;
  53. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  54. A . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  55. A . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  56. 'REPETER' iiidim idim ;
  57. iidim = &iiidim ;
  58. A . iidim . 1 . 0 = 'LECT' ;
  59. 'FIN' iiidim ;
  60. numvar = idim ;
  61. numcof = idim ;
  62. B = ININLIN numop numvar numdat numcof numder ;
  63. 'REPETER' iiidim idim ;
  64. iidim = &iiidim ;
  65. nominc = 'EXTRAIRE' mnor iidim ;
  66. * 'LISTE' nominc ;
  67. B . 'VAR' . iidim . 'NOMDDL' = 'MOTS' nominc ;
  68. B . 'VAR' . iidim . 'DISC' = discm ;
  69. B . 'COF' . iidim . 'COMPOR' = 'CHAINE' 'VNOR' iidim ;
  70. B . 'COF' . iidim . 'LDAT' = 'LECT' ;
  71. B . iidim . iidim . 0 = 'LECT' iidim ;
  72. 'FIN' iiidim ;
  73. chnori = 'NLIN' discg _mt A B 'GAU7' ;
  74. * Matrice masse
  75. numop = 1 ; numder = idim ; numvar = 1 ; numdat = 0 ; numcof = 0 ;
  76. A = ININLIN numop numvar numdat numcof numder ;
  77. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  78. A . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  79. A . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  80. A . 1 . 1 . 0 = 'LECT' ;
  81. B = ININLIN numop numvar numdat numcof numder ;
  82. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  83. B . 'VAR' . 1 . 'DISC' = discm ;
  84. B . 1 . 1 . 0 = 'LECT' ;
  85. chmass = 'NLIN' discg _mt A B 'GAU7' ;
  86. chnor = '/' chnori chmass ;
  87. 'RESPRO' chnor ;
  88. 'FINPROC' ;
  89. *
  90. * Tracé des vitesses
  91. *
  92. 'DEBPROC' TRACVIT ;
  93. 'ARGUMENT' rvx*'TABLE' ;
  94. 'SI' ('EXISTE' rvx 'EQEX') ;
  95. rv = rvx . 'EQEX' ;
  96. lrvx = VRAI ;
  97. domz = rvx . 'DOMZ' ;
  98. 'SINON' ;
  99. rv = rvx ;
  100. lrvx = FAUX ;
  101. 'ARGUMENT' domz*'MMODEL' ;
  102. 'FINSI' ;
  103. nuit = rv . 'NUITER' ;
  104. chv = rv . 'INCO' . 'UN' ;
  105. maxv = 'MAXIMUM' chv 'ABS' ;
  106. 'SI' ('<' maxv 1.D-8) ;
  107. maxv = 1.D0 ;
  108. 'FINSI' ;
  109. echvit = maxv ;
  110. mt = 'DOMA' domz 'MAILLAGE' ;
  111. echmvi = '**' ('/' ('MESURE' mt) ('NBEL' mt))
  112. ('/' 1.D0 ('VALEUR' 'DIME')) ;
  113. vref = '/' ('*' echmvi 2.D0) echvit ;
  114. * Vecteur unité
  115. mpA = mt 'POIN' 'PROC' (0. 0.) ;
  116. cvecu = 'MANUEL' 'CHPO' mpA 2 'UX' echvit 'UY' 0.D0
  117. 'NATURE' 'DISCRET' ;
  118. vecvit1 = 'VECTEUR' chv vref 'DEPL' 'JAUN' ;
  119. vecvit2 = 'VECTEUR' cvecu vref 'DEPL' 'ROUG' ;
  120. vecvit = vecvit1 'ET' vecvit2 ;
  121. tit = 'CHAINE' 'Vitesse ; nuiter=' nuit ' ; echvit=' echvit ;
  122. 'TRACER' vecvit mt ('CONTOUR' mt) 'TITR' tit 'NCLK' ;
  123. 'SI' lrvx ;
  124. 'TRACER' vecvit mt ('CONTOUR' mt) 'TITR' tit 'NCLK' ;
  125. mat chpo = 'KOPS' 'MATRIK' ;
  126. 'RESPRO' mat chpo ;
  127. 'SINON' ;
  128. 'TRACER' vecvit mt ('CONTOUR' mt) 'TITR' tit ;
  129. 'FINSI' ;
  130. 'FINPROC' ;
  131. *
  132. * Imposition d'une force
  133. *
  134. 'DEBPROC' KTOIM ;
  135. 'ARGUMENT' rvx*'TABLE' ;
  136. rv = rvx . 'EQEX' ;
  137. mq = 'DOMA' (rvx . 'DOMZ') 'QUAF' ;
  138. for = rvx . 'ARG1' ;
  139. nominc = 'EXTRAIRE' (rvx . 'LISTINCO') 1 ;
  140. ni1 = 'CHAINE' '1' nominc ;
  141. ni2 = 'CHAINE' '2' nominc ;
  142. * Matrice masse
  143. idim = 'VALEUR' 'DIME' ;
  144. numop = 2 ; numder = idim ; numvar = 2 ; numdat = 0 ; numcof = 0 ;
  145. A = ININLIN numop numvar numdat numcof numder ;
  146. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'FX' ;
  147. A . 'VAR' . 1 . 'DISC' = 'QUAF' ;
  148. A . 'VAR' . 1 . 'VALEUR' = for ;
  149. A . 'VAR' . 2 . 'NOMDDL' = 'MOTS' 'FY' ;
  150. A . 'VAR' . 2 . 'DISC' = 'QUAF' ;
  151. A . 'VAR' . 2 . 'VALEUR' = for ;
  152. A . 1 . 1 . 0 = 'LECT' ;
  153. A . 2 . 2 . 0 = 'LECT' ;
  154. B = ININLIN numop numvar numdat numcof numder ;
  155. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' ni1 ;
  156. B . 'VAR' . 1 . 'DISC' = 'QUAF' ;
  157. B . 'VAR' . 2 . 'NOMDDL' = 'MOTS' ni2 ;
  158. B . 'VAR' . 2 . 'DISC' = 'QUAF' ;
  159. B . 1 . 1 . 0 = 'LECT' ;
  160. B . 2 . 2 . 0 = 'LECT' ;
  161. forint = 'NLIN' 'QUAF' mq A B 'GAU7' ;
  162. chvid matvid = 'KOPS' 'MATRIK' ;
  163. 'RESPRO' forint matvid ;
  164. 'FINPROC' ;
  165. *
  166. * Bloquage des vitesses suivant un champ de normale
  167. *
  168. 'DEBPROC' KBLOQ ;
  169. 'ARGUMENT' rvx*'TABLE' ;
  170. rv = rvx . 'EQEX' ;
  171. 'SI' ('EXISTE' rvx 'MATRICE') ;
  172. mnormal = rvx . 'MATRICE' ;
  173. 'SINON' ;
  174. vnormal = rv . 'VNORMAL' ;
  175. mail = 'DOMA' (rvx . 'DOMZ') 'MAILLAGE' ;
  176. mn = 'BLOQUE' 'DEPL' 'DIRE' vnormal mail ;
  177. mn = 'KOPS' 'RIMA' mn ;
  178. nominc = 'EXTRAIRE' (rvx . 'LISTINCO') 1 ;
  179. ni1 = 'CHAINE' '1' nominc ;
  180. ni2 = 'CHAINE' '2' nominc ;
  181. mnormal = 'KOPS' 'CHANINCO' mn
  182. ('MOTS' 'LX' 'UX' 'UY')
  183. ('MOTS' 'LX' ni1 ni2)
  184. ('MOTS' 'FLX' 'FX' 'FY')
  185. ('MOTS' 'LX' ni1 ni2) ;
  186. rvx . 'MATRICE' = mnormal ;
  187. 'FINSI' ;
  188. chvid matvid = 'KOPS' 'MATRIK' ;
  189. 'RESPRO' chvid mnormal ;
  190. 'FINPROC' ;
  191. *
  192. * Maillage
  193. *
  194. * Paramètres
  195. Rgrand = 1. ; Dpetit = 1. ; ang = 45. ; dang = 10. ;
  196. den = 0.1 ;
  197. 'DENS' den ;
  198. * Points
  199. p0 = 0. 0. ;
  200. p1 = 0. ('*' Rgrand -1.) ;
  201. p2 = POINTCYL Rgrand ('-' ang dang) ;
  202. p3 = POINTCYL ('+' Rgrand Dpetit) ang ;
  203. p4 = POINTCYL Rgrand ('+' ang dang) ;
  204. p5 = POINTCYL Rgrand ('-' 180. ('+' ang dang)) ;
  205. p6 = POINTCYL ('+' Rgrand Dpetit) ('-' 180. ang) ;
  206. p7 = POINTCYL Rgrand ('-' 180. ('-' ang dang)) ;
  207. * Contour
  208. l1 = 'CER3' p7 p1 p2 ; l2 = 'CER3' p2 p3 p4 ;
  209. l3 = 'CERCLE' p4 p0 p5 ; l4 = 'CER3' p5 p6 p7 ;
  210. cmt = l1 'ET' l2 'ET' l3 'ET' l4 ;
  211. _cmt = cmt ;
  212. mt = 'SURFACE' cmt ; _mt = 'CHANGER' mt 'QUAF' ;
  213. *
  214. * Normale au contour
  215. *
  216. vnormal = VNOR cmt 'QUAF' ('MOTS' 'UX' 'UY') 'QUAF' ;
  217. *
  218. * Discrétisation
  219. *
  220. disv = 'QUAF' ;
  221. disp = 'CENTREP1' ;
  222. dec = 'CENTREE' ;
  223. *
  224. Re = 30. ;
  225. dif = '/' 1. Re ;
  226. omeg = 1. ;
  227. nitmax = 5 ;
  228. xfor = '**' 3. 0.5 ; yfor = PI ;
  229. fnormal = 'MANUEL' 'CHPO' _cmt ('MOTS' 'FX' 'FY') ('PROG' xfor yfor) ;
  230. *
  231. 'SI' graph ;
  232. vvno = 'VECT' vnormal 'DEPL' 'JAUN' ;
  233. vfno = 'VECT' fnormal 'FORC' 'ROUG' ;
  234. vtot = 'ET' vvno vfno ;
  235. tit = 'CHAINE' 'Maillage' ' '
  236. 'Jaune:normale' ' '
  237. 'Rouge:force imposee' ;
  238. 'TRACER' vtot _mt 'TITR' tit ;
  239. 'FINSI' ;
  240. *
  241. $mt = 'MODELISER' _mt 'NAVIER_STOKES' disv ;
  242. $cmt = 'MODELISER' cmt 'NAVIER_STOKES' disv ;
  243. ppres = 'POIN' ('DOMA' $mt disp) 'PROC' (0.5 0.5) ;
  244. mp1 = 'MANUEL' ppres 'POI1' ;
  245. *
  246. rv = 'EQEX' 'ITMA' 1 'NITER' nitmax 'OMEGA' omeg ;
  247. 'SI' graph ;
  248. rv = 'EQEX' rv
  249. 'ZONE' $mt 'OPER' 'TRACVIT' ;
  250. 'FINSI' ;
  251. *
  252. rv = 'EQEX' rv
  253. 'OPTI' 'EF' 'IMPL' dec disp
  254. 'ZONE' $mt 'OPER' 'KONV' 1. 'UN' dif 'INCO' 'UN'
  255. 'OPTI' 'EF' 'IMPL' dec disp 'FTAU'
  256. 'ZONE' $mt 'OPER' 'LAPN' dif 'INCO' 'UN'
  257. 'OPTI' 'EF' 'IMPL' dec disp
  258. 'ZONE' $mt 'OPER' 'KBBT' -1. 'INCO' 'UN' 'PN'
  259. ;
  260. * 'OPTI' 'EF' 'IMPL' 'CENTREE' disp
  261. * 'ZONE' $mt 'OPER' 'DFDT' 1. 'UNM' 'DT' 'UN' dif 'INCO' 'UN' ;
  262. rv = 'EQEX' rv
  263. 'ZONE' $cmt 'OPER' 'KTOIM' fnormal 'INCO' 'UN' ;
  264. rv = 'EQEX' rv
  265. 'ZONE' $cmt 'OPER' 'KBLOQ' 'INCO' 'UN' ;
  266. rv = 'EQEX' rv 'CLIM'
  267. 'PN' 'TIMP' mp1 0. ;
  268. rv . 'INCO' = 'TABLE' 'INCO' ;
  269. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0. 0.) ;
  270. rv . 'INCO' . 'PN' = 'KCHT' $mt 'SCAL' disp 0. ;
  271. rv . 'VNORMAL' = vnormal ;
  272. *
  273. EXEC rv ;
  274. *
  275. 'SI' graph ;
  276. TRACVIT rv $mt ;
  277. mt = 'DOMA' $mt 'MAILLAGE' ;
  278. fcou = FCOURANT mt (rv . 'INCO' . 'UN') ;
  279. 'OPTI' 'ISOV' 'SULI' ;
  280. tit = 'CHAINE' 'Fonction de courant ; Re=' Re ;
  281. 'TRACER' fcou _mt _cmt 'TITR' tit ;
  282. 'OPTI' 'ISOV' 'SURF' ;
  283. MONTAGNE fcou _mt 'TITRE' tit 'SUPER' ;
  284. 'FINSI' ;
  285. *
  286. * Vérification que la vitesse est bien orthogonale à la normale
  287. *
  288. vit = rv . 'INCO' . 'UN' ;
  289. mvit = 'MOTS' 'UX' 'UY' ;
  290. ps = 'PSCAL' vit vnormal mvit mvit ;
  291. mps = 'MAXIMUM' ps 'ABS' ;
  292. valim = 1.D-12 ;
  293. tst = ('<' mps valim) ;
  294. 'SI' ('NON' tst) ;
  295. cherr = 'CHAINE' '!!! Erreur, on aurait voulu '
  296. 'mps=' mps ' < ' 'valim=' valim ;
  297. 'MESSAGE' cherr ;
  298. 'FINSI' ;
  299. lok = lok 'ET' tst ;
  300. *
  301. * Fin du jeu de donnees
  302. *
  303. 'SAUTER' 2 'LIGNE' ;
  304. 'SI' lok ;
  305. 'MESSAGE' 'Tout sest bien passe' ;
  306. 'SINON' ;
  307. 'MESSAGE' 'Il y a eu des erreurs' ;
  308. 'FINSI' ;
  309. 'SAUTER' 2 'LIGNE' ;
  310. 'SI' interact ;
  311. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  312. 'FINSI' ;
  313. 'SI' ('NON' lok) ;
  314. 'ERREUR' 5 ;
  315. 'FINSI' ;
  316. *
  317. * End of dgibi file NS1
  318. *
  319. 'FIN' ;
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  

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