Télécharger ccar_forc1.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : ccar_forc1.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTION' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : VALREL
  7. * DESCRIPTION : Calcul d'une valeur relative
  8. *
  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, 16/12/2004, version initiale
  16. * HISTORIQUE : v1, 16/12/2004, création
  17. * HISTORIQUE :
  18. * HISTORIQUE :
  19. ************************************************************************
  20. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  21. * en cas de modification de ce sous-programme afin de faciliter
  22. * la maintenance !
  23. ************************************************************************
  24. *
  25. *
  26. 'DEBPROC' VALREL ;
  27. 'ARGUMENT' val*'FLOTTANT' ;
  28. 'ARGUMENT' valref*'FLOTTANT' ;
  29. *
  30. 'SI' ('<' ('ABS' valref) 1.D-10) ;
  31. echref = 1.D0 ;
  32. 'SINON' ;
  33. echref = valref ;
  34. 'FINSI' ;
  35. *
  36. valabs = '/' val echref;
  37. *
  38. 'RESPRO' valabs ;
  39. *
  40. * End of procedure file VALREL
  41. *
  42. 'FINPROC' ;
  43. *
  44. * Tracé des vitesses
  45. *
  46. 'DEBPROC' TRACVIT ;
  47. 'ARGUMENT' rvx*'TABLE' ;
  48. rv = rvx . 'EQEX' ;
  49. nuit = rv . 'NUITER' ;
  50. chv = rv . 'INCO' . 'UN' ;
  51. maxv = 'MAXIMUM' chv 'ABS' ;
  52. 'SI' ('<' maxv 1.D-8) ;
  53. maxv = 1.D0 ;
  54. 'FINSI' ;
  55. echvit = maxv ;
  56. mt = 'DOMA' (rvx . 'DOMZ') 'MAILLAGE' ;
  57. echmvi = '**' ('/' ('MESURE' mt) ('NBEL' mt))
  58. ('/' 1.D0 ('VALEUR' 'DIME')) ;
  59. vref = '/' ('*' echmvi 2.D0) echvit ;
  60. * Vecteur unité
  61. mpA = mt 'POIN' 'PROC' (0. 0.) ;
  62. cvecu = 'MANUEL' 'CHPO' mpA 2 'UX' echvit 'UY' 0.D0
  63. 'NATURE' 'DISCRET' ;
  64. vecvit1 = 'VECTEUR' chv vref 'DEPL' 'JAUN' ;
  65. vecvit2 = 'VECTEUR' cvecu vref 'DEPL' 'ROUG' ;
  66. vecvit = vecvit1 'ET' vecvit2 ;
  67. tit = 'CHAINE' 'Vitesse ; nuiter=' nuit ' ; echvit=' echvit ;
  68. 'TRACER' vecvit mt ('CONTOUR' mt) 'TITR' tit 'NCLK' ;
  69. mat chpo = 'KOPS' 'MATRIK' ;
  70. 'RESPRO' mat chpo ;
  71. 'FINPROC' ;
  72. *
  73. * Stratégie de pas de temps automatique et de gestion de
  74. * la non-linéarité
  75. *
  76. 'DEBPROC' STRANLIN ;
  77. 'ARGUMENT' rvx*'TABLE' ;
  78. rv = rvx . 'EQEX' ;
  79. nuit = rv . 'NUITER' ;
  80. chv = rv . 'INCO' . 'UN' ;
  81. 'SI' ('EGA' nuit 1) ;
  82. rv . 'UI' = 'COPIER' chv ;
  83. rv . 'UIP' = 'COPIER' chv ;
  84. 'SINON' ;
  85. chvi = rv . 'UIP' ;
  86. dchv = '-' chv chvi ;
  87. rv . 'UIP' = 'COPIER' chv ;
  88. ndui = VALREL ('MAXIMUM' dchv) ('MAXIMUM' chv) ;
  89. * 'MESSAGE' ('CHAINE' 'ndui = ' ndui) ;
  90. tes1 = ('EGA' nuit nitermax) ;
  91. tes2 = ('<' ndui cvgnlin) ;
  92. quitnlin = 'OU' tes1 tes2 ;
  93. 'SI' quitnlin ;
  94. 'SI' tes2 ;
  95. ifmul = '/' ndui objdv ;
  96. ifmul = '+' ifmul 1.D-10 ;
  97. fmul = '/' 1.D0 ifmul ;
  98. 'SI' ('>' fmul fmdt) ;
  99. fmul = fmdt ;
  100. 'FINSI' ;
  101. 'SI' ('<' fmul ('/' 1.D0 fmdt)) ;
  102. fmul = '/' 1.D0 fmdt ;
  103. 'FINSI' ;
  104. 'SINON' ;
  105. fmul = fredt ;
  106. 'FINSI' ;
  107. * 'MESSAGE' ('CHAINE' 'fmul=' fmul) ;
  108. rv . 'INCO' . 'DT' = '*' fmul (rv . 'INCO' . 'DT') ;
  109. rv . 'STOPITER' = VRAI ;
  110. *
  111. tps = rv . 'PASDETPS' . 'TPS' ;
  112. ittps = rv . 'PASDETPS' . 'NUPASDT' ;
  113. chvp = rv . 'UI' ;
  114. dchv = '-' chv chvp ;
  115. ndup = VALREL ('MAXIMUM' dchv) ('MAXIMUM' chv) ;
  116. test1 = 'OU' ('>' tps tfinal) ('>' ittps npdtmax) ;
  117. test2 = ('<' ndup dvfinal) ;
  118. quitpdt = 'OU' test1 test2 ;
  119. 'SI' quitpdt ;
  120. rv . 'STOPPDT' = VRAI ;
  121. rv . 'CVGOK' = test2 ;
  122. 'FINSI' ;
  123. 'FINSI' ;
  124. 'FINSI' ;
  125. mat chpo = 'KOPS' 'MATRIK' ;
  126. 'RESPRO' mat chpo ;
  127. 'FINPROC' ;
  128.  
  129. ************************************************************************
  130. * NOM : CCAR_FORC1
  131. * DESCRIPTION : Cavité à paroi défilante avec cisaillement imposé
  132. * en surface.
  133. * Le but est de tester les nouveaux indices de exec :
  134. * STOPPDT, STOPITER et NUITER
  135. *
  136. *
  137. *
  138. *
  139. * LANGAGE : GIBIANE-CAST3M
  140. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  141. * mél : gounand@semt2.smts.cea.fr
  142. **********************************************************************
  143. * VERSION : v1, 13/12/2006, version initiale
  144. * HISTORIQUE : v1, 13/12/2006, création
  145. * HISTORIQUE :
  146. * HISTORIQUE :
  147. ************************************************************************
  148. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  149. * en cas de modification de ce sous-programme afin de faciliter
  150. * la maintenance !
  151. ************************************************************************
  152. *
  153. *
  154. interact = FAUX ;
  155. graph = FAUX ;
  156. *
  157. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' ;
  158. 'SI' ('NON' interact) ;
  159. 'OPTION' 'TRAC' 'PS' ;
  160. 'SINON' ;
  161. 'OPTION' 'TRAC' 'X' ;
  162. 'FINSI' ;
  163. *
  164. * Stratégie pour le pas de temps et la non-linéarité
  165. * tfinal : temps d'arrêt
  166. * npdtmax : nombre de pas de temps maxi.
  167. * dvfinal : deltav d'arrêt
  168. * dtdeb : pas de temps de départ
  169. * fmdt : facteur de variation maxi du pas de temps
  170. * fredt : facteur de réduction du pas de temps si non convergence
  171. * sur la non-linéarité
  172. * objdv : variation voulue du champ de vitesse pour un pas de temps
  173. * fred : facteur de réduction du delta v pour les itérations
  174. * non-linéaires.
  175. * nitermax : nombre maxi d'itérations non-linéaires
  176. * omeg : sous-relaxation
  177. tfinal = 1000. ;
  178. npdtmax = 30 ;
  179. dvfinal = 1.D-5 ;
  180. dtdeb = 1.D-1 ;
  181. fmdt = 1.4D0 ;
  182. fredt = 0.5D0 ;
  183. objdv = 5.D-2 ;
  184. fred = 10. ;
  185. cvgnlin = '/' objdv fred ;
  186. nitermax = 10 ;
  187. omeg = 0.9 ;
  188. *
  189. * Maillage + discrétisation
  190. *
  191. nm = 10 ;
  192. disv = 'QUAF' ;
  193. disp = 'CENTREP1' ;
  194. dec = 'CENTREE' ;
  195. *
  196. * Physique
  197. *
  198. Re = 50. ;
  199. dif = '/' 1. Re ;
  200. *
  201. p0 = 0. 0. ; p1 = 1. 0. ; p2 = 1. 1. ; p3 = 0. 1. ;
  202. bas = 'DROIT' nm p0 p1 ; dro = 'DROIT' nm p1 p2 ;
  203. hau = 'DROIT' nm p2 p3 ; gau = 'DROIT' nm p3 p0 ;
  204. mt = 'DALLER' bas dro hau gau ;
  205. _mt = 'CHANGER' mt 'QUAF' ;
  206. $mt = 'MODELISER' _mt 'NAVIER_STOKES' disv ;
  207. $hau = 'MODELISER' hau 'NAVIER_STOKES' disv ;
  208. ppres = 'POIN' ('DOMA' $mt disp) 'PROC' (0.5 0.5) ;
  209. mp1 = 'MANUEL' ppres 'POI1' ;
  210. *
  211. * Discrétisation
  212. *
  213. * On met des entiers arbitrairement grands :
  214. * c'est la procédure STRANLIN qui s'occupe de gérer les itérations
  215. ngrand = 100000 ;
  216. *
  217. rv = 'EQEX' 'ITMA' ngrand 'NITER' ngrand 'OMEGA' omeg 'FIDT' 1
  218. 'ZONE' $mt 'OPER' 'STRANLIN' ;
  219. 'SI' graph ;
  220. rv = 'EQEX' rv
  221. 'ZONE' $mt 'OPER' 'TRACVIT' ;
  222. 'FINSI' ;
  223. rv = 'EQEX' rv
  224. 'OPTI' 'EF' 'IMPL' dec disp
  225. 'ZONE' $mt 'OPER' 'NS' 1. 'UN' dif 'INCO' 'UN'
  226. 'OPTI' 'EF' 'IMPL' dec disp
  227. 'ZONE' $mt 'OPER' 'KBBT' 1. 'INCO' 'UN' 'PN'
  228. 'OPTI' 'EF' 'IMPL' 'CENTREE' disp
  229. 'ZONE' $mt 'OPER' 'DFDT' 1. 'UNM' 'DT' 'UN' dif 'INCO' 'UN' ;
  230. rv = 'EQEX' rv
  231. 'OPTI' 'EF' 'IMPL' 'CENTREE' disp
  232. 'ZONE' $hau 'OPER' 'TOIM' (-1. 0.) 'INCO' 'UN' ;
  233. rv = 'EQEX' rv 'CLIM'
  234. 'UN' 'UIMP' (gau 'ET' bas 'ET' dro) 0.
  235. 'UN' 'VIMP' (gau 'ET' bas 'ET' dro 'ET' hau) 0.
  236. 'PN' 'TIMP' mp1 0. ;
  237. rv . 'INCO' = 'TABLE' 'INCO' ;
  238. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0. 0.) ;
  239. rv . 'INCO' . 'PN' = 'KCHT' $mt 'SCAL' disp 0. ;
  240. rv . 'INCO' . 'DT' = dtdeb ;
  241. *
  242. EXEC rv ;
  243. *
  244. *
  245. * Post-traitement
  246. *
  247. * Tracés
  248. 'SI' graph ;
  249. vit = rv . 'INCO' . 'UN' ;
  250. ncovit = 'MOTS' 'UX' 'UY' ;
  251. nvit = '**' ('PSCAL' vit vit ncovit ncovit) 0.5 ;
  252. mvit = 'MAXIMUM' nvit ;
  253. vvit = 'VECT' vit 'DEPL' 'JAUN' ;
  254. cmt = 'CONTOUR' mt ;
  255. 'TRACER' vvit mt cmt 'TITR' ('CHAINE' 'Vitesse max.=' mvit) ;
  256. 'OPTI' 'ISOV' 'SULI' ;
  257. pre = rv . 'INCO' . 'PN' ;
  258. prep = 'ELNO' $mt pre disp ;
  259. 'TRACER' prep mt cmt 'TITR' 'Pression' ;
  260. 'FINSI' ;
  261. *
  262. ok = rv . 'CVGOK' ;
  263. *
  264. 'SI' ('NON' ok) ;
  265. 'MESSAGE' ('CHAINE' 'Il ny a pas eu convergence') ;
  266. 'ERREUR' 5 ;
  267. 'SINON' ;
  268. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  269. 'FINSI' ;
  270. *
  271. 'SI' interact ;
  272. 'OPTION' 'ECHO' 1 ;
  273. OPTION' 'DONN' 5 ;
  274. 'FINSI' ;
  275. *
  276. * End of dgibi file CCAR_FORC1
  277. *
  278. 'FIN' ;
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  

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