Télécharger tp4.dgibi

Retour à la liste

Numérotation des lignes :

  1. *****************************************************
  2. ************************************************************************
  3. ************************************************************************
  4. * fichier : tp4.dgibi *
  5. ** modifie le 15/06/2014 passage EQPR -> EQEX *
  6. *****************************************************
  7. ***************** CAS TEST : TP4.DGIBI *************************
  8. *
  9. * Convection naturelle dans un cylindre uniformement chauffé
  10. * (Navier-Stokes incompressible et approximation de Boussinesq)
  11. *
  12. * Ref biblio : Gartling D.K., A finite element analysis of
  13. * volumetrically heated fluids in an axisymmetric enclosure,
  14. * in Finite Elements in Fluids, vol4, pp233-250, 1982.
  15. *
  16. *------------------------------------------------------------------
  17. *
  18. * Algorithme de projection et élément (v,T)/p MACRO/CENTREP1
  19. *
  20. *------------------------------------------------------------------
  21. *
  22. * Auteur : Frédéric DABBENE
  23. * ttmf3@semt2.smts.cea.fr
  24. *
  25. *------------------------------------------------------------------
  26. * Procédures spécifiques à évoluer et à généraliser
  27. *------------------------------------------------------------------
  28. * COURANT : Calcul de la fonction de courant d'un domaine fermé
  29. * CALCNUSS : Calcul du Nusselt (en adimensionné = grad THETA)
  30. * RESIDU : Calcul du residu en température
  31. *------------------------------------------------------------------
  32. *
  33. *
  34. * COMPLET : Booleen mis à FAUX pour les tests de non régresssion
  35. * GRAPH : Booleen réalisation ou non des post-traitements
  36. * POST1 : Booleen indiquant si on affiche le résidu en NCLK
  37. * POST2 : Booleen indiquant si on affiche la température en NCLK
  38. * IRESU : Critère d'arret sur l'incrément de température
  39. *
  40. COMPLET = FAUX ;
  41. GRAPH = FAUX ;
  42. POST1 = FAUX ;
  43. POST2 = FAUX ;
  44. 'SI' COMPLET ;
  45. IRESU = 1.D-6 ;
  46. 'SINO' ;
  47. IRESU = 1.D-3 ;
  48. 'FINSI' ;
  49. *
  50. *
  51. *
  52. *
  53. *==================================================================
  54. * Calcul de la fonction de courant d'un domaine fermé
  55. *==================================================================
  56. * E/ : UN : CHPO : Champ de vitesse
  57. * E/ : $DOMAINE : MMODEL 'NAVIER_STOKES' volumique
  58. * E/ : $CONTOUR : MMODEL 'NAVIER_STOKES' surfacique
  59. * /S : PSI : CHPO : Fonction de courant
  60. *------------------------------------------------------------------
  61. * On vérifie qu'on est en dimension 2 mais pas que div(UN)=0
  62. * Si le domaine est ouvert, modifier les conditions aux limites
  63. *------------------------------------------------------------------
  64. 'DEBPROC' courant un*chpoint $domaine*mmodel $contour*mmodel ;
  65. VAL0 = 'VALE' 'DIME' ;
  66. TEST = 'EGA' VAL0 2 ;
  67. 'SI' TEST ;
  68. 'MESS' 'Remember that Velocity have to be at zero divergence' ;
  69. 'SINON' ;
  70. 'ERRE' 832 ;
  71. 'QUIT' courant ;
  72. 'FINSI' ;
  73. VAL1 = 'VALE' 'MODE' ;
  74. TEST = 'EGA' VAL1 'AXIS' ;
  75. 'SI' TEST ;
  76. ROTU0 = 'KOPS' un 'ROT' $domaine ;
  77. XC1 YC1 = 'COOR' ('DOMA' $domaine 'CENTRE') ;
  78. VZ1 = 'NOEL' $domaine ('EXCO' un 'UY' 'SCAL') ;
  79. ROTU0 = 2. * VZ1 '-' (ROTU0 * XC1) ;
  80. 'SINO' ;
  81. ROTU0 = 'KOPS' un 'ROT' $domaine ;
  82. 'FINSI' ;
  83. CONT0 = 'DOMA' $contour 'MAILLAGE' ;
  84. RK = 'EQEX' $domaine 'OPTI' 'EF' 'IMPL'
  85. 'ZONE' $domaine 'OPER' 'LAPN' -1. 'INCO' 'PSI'
  86. 'ZONE' $domaine 'OPER' 'FIMP' ROTU0 'INCO' 'PSI'
  87. 'CLIM' 'PSI' 'TIMP' CONT0 0. ;
  88. RK . 'INCO' = 'TABLE' 'INCO' ;
  89. RK . 'INCO' . 'PSI' = 'KCHT' $domaine 'SCAL' 'SOMMET' 0. ;
  90. EXEC RK ;
  91. psi = 'COPI' RK . 'INCO' . 'PSI' ;
  92. 'FINP' psi ;
  93. *
  94. *==================================================================
  95. * Calcul du Nusselt (en adimensionné = grad THETA)
  96. *==================================================================
  97. * E/ : TN : CHPO : Température
  98. * E/ : $DOMAINE : MMODEL 'NAVIER_STOKES' volumique
  99. * E/ : $COTE : MMODEL 'NAVIER_STOKES' surfacique
  100. * /S : NUSS1 : CHPO : Nusselt local aux sommets
  101. * /S : RES1 : FLOTTANT : Nusselt moyen
  102. *------------------------------------------------------------------
  103. *
  104. 'DEBPROC' calcnuss tn*chpoint $domaine*mmodel $cote*mmodel ;
  105. GRADC0 = 'KOPS' tn 'GRAD' $domaine ;
  106. GRADS0 = 'ELNO' $domaine GRADC0 ;
  107. GS0 = 'KCHT' $cote 'VECT' 'SOMMET' GRADS0 ;
  108. GC0 = 'NOEL' $cote GS0 ;
  109. NORM1 = 'DOMA' $domaine 'NORMALE' ;
  110. NCOTE = 'KCHT' $cote 'VECT' 'CENTRE' NORM1 ;
  111. MOT1 = 'MOTS' 'UX' 'UY' ;
  112. NUSS1 = 'PSCA' GC0 NCOTE MOT1 MOT1 ;
  113. S1 = 'DOMA' $cote 'VOLUME' ;
  114. NUSS2 = NUSS1 * S1 ;
  115. RES1 = 'MAXI' ('RESU' NUSS2) ;
  116. 'FINP' nuss1 res1 ;
  117. *------------------------------------------------------------------
  118. *
  119. *
  120. *==================================================================
  121. * Calcul du résidu en température et arrêt suivant un critère
  122. *==================================================================
  123. * E/ : RVX : TABLE : TABLE des données créées par EQEX
  124. * ARG1 : Fréquence d'impression
  125. * ARG2 : Critère d'arrêt
  126. * /S : MAT1 : MATRIK : Objet vide
  127. * /S : CHP1 : CHPO : Objet vide
  128. *------------------------------------------------------------------
  129. *
  130. 'DEBPROC' residu rvx*table ;
  131. RV = rvx . 'EQEX' ;
  132. FREQ = RVX . 'ARG1' ;
  133. EPS0 = RVX . 'ARG2' ;
  134. NITER = RV . 'NITER' ;
  135. DD = RV . 'PASDETPS' . 'NUPASDT' ;
  136. NN = DD '/' FREQ ;
  137. L0 = 'EGA' (DD '-' (FREQ*NN)) 0 ;
  138. 'SI' L0 ;
  139. RANG0 = RV . 'PASDETPS' . 'NUPASDT' ;
  140. TIME0 = RV . 'PASDETPS' . 'TPS' ;
  141. TN0 = RV . 'INCO' . 'TN' ;
  142. TNM0 = RV . 'INCO' . 'TN2' ;
  143. ERR0 = ('MAXIMUM' ('ABS' (TN0 '-' TNM0))) '+' 1.D-20 ;
  144. ERR10 = ('LOG' ERR0 ) '/' ('LOG' 10.) ;
  145. 'MESSAGE' 'Résidu en Température au pas'
  146. RANG0 '(' TIME0 ') :' ERR0 ':' ERR10 ;
  147. RV . 'INCO' . 'IT' = RV . 'INCO' . 'IT' 'ET' ('PROG' RANG0) ;
  148. RV . 'INCO' . 'TI' = RV . 'INCO' . 'TI' 'ET' ('PROG' TIME0) ;
  149. RV . 'INCO' . 'ER' = RV . 'INCO' . 'ER' 'ET' ('PROG' ERR10) ;
  150. EV1 = 'EVOL' 'MANUEL' (RV . 'INCO' . 'IT') (RV . 'INCO' . 'ER') ;
  151. Y1 = ('LOG' EPS0) '/' ('LOG' 10) ;
  152. 'SI' POST1 ;
  153. X1 = 0. ; X2 = RV . 'ITMA' ;
  154. 'DESSIN' EV1 'YBOR' Y1 0. 'NCLK' ;
  155. 'FINSI' ;
  156. 'SI' POST2 ;
  157. L1 = (PROG 10. PAS 5. 90.)* 1.D-3 ;
  158. trace L1 tn0 DOM1 CNT1 'TITR' 'Température' 'NCLK' ;
  159. 'FINSI' ;
  160. 'SI' ((ERR10 < Y1) 'ET' (DD > 10)) ;
  161. RV . 'TFINAL' = RV . 'PASDETPS' . 'TPS' ;
  162. 'FINSI' ;
  163. 'FINSI' ;
  164. RV . 'INCO' . 'TN2' = 'COPIER' RV . 'INCO' . 'TN' ;
  165. mat1 chp1 = 'KOPS' 'MATRIK' ;
  166. 'FINP' mat1 chp1 ;
  167. *------------------------------------------------------------------
  168. *
  169. *
  170. 'OPTION' 'DIME' 2 'ELEM' 'QUA8' 'MODE' 'AXIS' 'ISOV' 'SULI' ;
  171. *
  172. * NLI0 : Nombre d'isovaleurs
  173. *
  174. NLI0 = 14 ;
  175. *
  176. *------------------------------------------------------------------
  177. * Choix de l'algorithme et des discrétisations en vitesse/pression
  178. *------------------------------------------------------------------
  179. * Les couples vitesse/pression (ICHOI/)
  180. * :( 1/ LINE + CENTRE (déconseillé,--couteux, -stable -précis)
  181. * (P1/P0 et Q1/P0)
  182. * :( 2/ MACRO + CENTRE (déconseillé,--couteux, =stable -précis)
  183. * (P1/P0 stabilisé et Q1/P0 stabilisé)
  184. * 3/ MACRO + CENTREP1 (conseillé, -couteux, +stable, =précis)
  185. * :( (isoP2/isoP1nc à éviter (PAS DE TRIANGLE SVP))
  186. * :) (isoQ2/isoP1nc à consommer sans modération)
  187. * :) 4/ QUAF + CENTREP1 (conseillé, +couteux, +stable, +précis)
  188. * :) 5/ QUAF + MSOMMET (conseillé,++couteux, +stable, +précis)
  189. * Les autres combinaisons ne sont pas dans les notices de
  190. * NAVI, EXEC, EQEX, EQPR et DOMA. Donc ...
  191. *------------------------------------------------------------------
  192. * Les algorithmes (IRESO/)
  193. * :( 1/ avec itérations internes et méthode de projection
  194. * (à utiliser avec précaution : TESTS INSUFFISANTS)
  195. * :) 2/ sans itérations internes et méthode de projection
  196. * :) 3/ full implicite
  197. * Les autres choix ne sont pas dans les notices de
  198. * NAVI, EXEC, EQEX, EQPR et DOMA. Donc ...
  199. *------------------------------------------------------------------
  200. * Le décentrement (IDCEN/)
  201. * 0/ Pas de décentrement (Galerkin)
  202. * 1/ SUPG (Petrov-Galerkin)
  203. * / SUPGDC (En dernier recours)
  204. *------------------------------------------------------------------
  205. IRESO = 2 ;
  206. ICHOI = 3 ;
  207. IDCEN = 0 ;
  208. *
  209. 'SI' ('EGA' ICHOI 1) ;
  210. DISCR = 'LINE' ;
  211. KPRES = 'CENTRE' ;
  212. 'FINSI' ;
  213. 'SI' ('EGA' ICHOI 2) ;
  214. DISCR = 'MACRO' ;
  215. KPRES = 'CENTRE' ;
  216. 'FINSI' ;
  217. 'SI' ('EGA' ICHOI 3) ;
  218. DISCR = 'MACRO' ;
  219. KPRES = 'CENTREP1' ;
  220. 'FINSI' ;
  221. 'SI' ('EGA' ICHOI 4) ;
  222. DISCR = 'QUAF' ;
  223. KPRES = 'CENTREP1' ;
  224. 'FINSI' ;
  225. 'SI' ('EGA' ICHOI 5) ;
  226. DISCR = 'QUAF' ;
  227. KPRES = 'MSOMMET' ;
  228. 'FINSI' ;
  229. 'SI' ('EGA' IDCEN 0) ;
  230. KSUPG = 'CENTREE' ;
  231. 'SINON' ;
  232. KSUPG = 'SUPG' ;
  233. * KSUPG = 'SUPGDC' ;
  234. 'FINSI' ;
  235. *
  236. *==========================================================
  237. * Maillage
  238. *==========================================================
  239. *
  240. * Dimensions caractéristiques
  241. L = 1.25 ;
  242. H = 2.5 ;
  243. A = H '/' L ;
  244. AS2 = A '/' 2. ;
  245. FLAG1 = ICHOI < 4 ;
  246. *
  247. * Décallage par rapport à l'axe pour les éléments quadratiques
  248. 'SI' FLAG1 ;
  249. RMIN = 0.0 ;
  250. 'SINO' ;
  251. RMIN = 0.01 ;
  252. 'FINSI' ;
  253. *
  254. * Points du maillage
  255. P0 = 0.5 AS2 ;
  256. P1 = RMIN 0.0 ;
  257. P2 = 0.5 0.0 ;
  258. P3 = 1.0 0.0 ;
  259. P4 = 1.0 AS2 ;
  260. P5 = 1.0 A ;
  261. P6 = 0.5 A ;
  262. P7 = RMIN A ;
  263. P8 = RMIN AS2 ;
  264. *
  265. * Données pour le mailleur
  266. NXY = -4 ;
  267. RAF = 2 ;
  268. NX0 = RAF * NXY ;
  269. NX = RAF * NXY ;
  270. NY = RAF * NXY ;
  271. D0 = 0.10 ;
  272. D1 = 0.10 ;
  273. D2 = 0.10 ;
  274. *
  275. * Droites du maillage filaire
  276. P1P2 = P1 'DROI' NX0 P2 'DINI' D0 'DFIN' D2 ;
  277. P2P3 = P2 'DROI' NX P3 'DINI' D2 'DFIN' D1 ;
  278. P1P3 = P1P2 'ET' P2P3 ;
  279. P3P4 = P3 'DROI' NY P4 'DINI' D1 'DFIN' D2 ;
  280. P4P5 = P4 'DROI' NY P5 'DINI' D2 'DFIN' D1 ;
  281. P3P5 = P3P4 'ET' P4P5 ;
  282. P5P6 = P5 'DROI' NX P6 'DINI' D1 'DFIN' D2 ;
  283. P6P7 = P6 'DROI' NX0 P7 'DINI' D2 'DFIN' D0 ;
  284. P5P7 = P5P6 'ET' P6P7 ;
  285. P7P8 = P7 'DROI' NY P8 'DINI' D1 'DFIN' D2 ;
  286. P8P1 = P8 'DROI' NY P1 'DINI' D2 'DFIN' D1 ;
  287. P7P1 = P7P8 'ET' P8P1 ;
  288. *
  289. * Maillages, sous-maillages et modèles associés
  290. CNT1 = P1P3 'ET' P3P5 'ET' P5P7 'ET' P7P1 ;
  291. CNT2 = P1P3 'ET' P3P5 'ET' P5P7 ;
  292. DOM1 = 'DALL' P1P3 P3P5 P5P7 P7P1 ;
  293. DOM1 = 'CHAN' DOM1 'QUAF' ;
  294. *
  295. $DOM1 = 'MODE' DOM1 'NAVIER_STOKES' DISCR ;
  296. $CNT1 = 'MODE' CNT1 'NAVIER_STOKES' DISCR ;
  297. $CNT2 = 'MODE' CNT2 'NAVIER_STOKES' DISCR ;
  298. *
  299. CNT1 = 'DOMA' $CNT1 'CENTRE' ;
  300. CNT2 = 'DOMA' $CNT2 'CENTRE' ;
  301. DOMF = 'DOMA' $DOM1 'FACE' ;
  302. 'ELIM' DOMF (CNT1 'ET' CNT2) 1.D-4 ;
  303. DOM1 = 'DOMA' $DOM1 'MAILLAGE' ;
  304. CNT1 = 'DOMA' $CNT1 'MAILLAGE' ;
  305. CNT2 = 'DOMA' $CNT2 'MAILLAGE' ;
  306. MP1 = ('DOMA' $DOM1 KPRES) 'ELEM' 1 ;
  307. ******** ????????????????? Menvlp = doma $vc 'ENVELOPPE' ;
  308. ******** ????????????????? nentr = doma $entree 'NORMALEV' ;
  309. 'DOMA' $DOM1 'IMPR' ;
  310. *
  311. *==========================================================
  312. * Définition des équations vitesse, pression et température
  313. *==========================================================
  314. *
  315. *
  316. * Paramètres physiques et pas de temps
  317. Pr = 0.65 ;
  318. Gr = 4.4E4 ;
  319. **Gr = 4.4E5 ;
  320. GB1 = Gr * Pr * Pr ;
  321. NU = Pr ;
  322. ALFA = 1. ;
  323. GB = 0. (-1. * GB1) ;
  324. DT = 0.05 ;
  325. *
  326. * Equations en vitesse et température
  327. * ITMA : Nombre de pas de temps
  328. * NITER : Nombre d'itérations internes
  329. * OMEGA : Facteur de relaxation des itérations internes
  330. * FIDT : Nombre maximum de pas de temps
  331. *RV = 'EQEX' $DOM1 'ITMA' 100 'NITER' 10 'OMEGA' 0.9 'FIDT' 10000
  332.  
  333. 'SI' ('EGA' IRESO 1) ;
  334. RV = 'EQEX' $DOM1 'ITMA' 500 'NITER' 5 'OMEGA' 0.2 'FIDT' 10000
  335. 'OPTI' 'EF' KSUPG 'IMPL' KPRES
  336. 'ZONE' $DOM1 'OPER' residu 1 IRESU
  337. 'ZONE' $DOM1 'OPER' 'NS' 1. 'UN' NU GB 'TN' 0. 'INCO' 'UN'
  338. 'ZONE' $DOM1 'OPER' 'LAPN' ALFA 'INCO' 'TN'
  339. 'ZONE' $DOM1 'OPER' 'KONV' 1. 'UN' ALFA 'INCO' 'TN'
  340. 'ZONE' $DOM1 'OPER' 'FIMP' 1. 'INCO' 'TN';
  341. RV = 'EQEX' RV
  342. 'OPTI' 'EF' 'CENTREE'
  343. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'UNM' DT 'INCO' 'UN'
  344. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'TNM' DT 'INCO' 'TN' ;
  345. 'FINSI' ;
  346. 'SI' ('EGA' IRESO 2) ;
  347. RV = 'EQEX' $DOM1 'ITMA' 1000 'NITER' 1 'OMEGA' 1. 'FIDT' 10000
  348. 'OPTI' 'EF' KSUPG 'IMPL' KPRES
  349. 'ZONE' $DOM1 'OPER' residu 1 IRESU
  350. 'ZONE' $DOM1 'OPER' 'NS' 1. 'UN' NU GB 'TN' 0. 'INCO' 'UN'
  351. 'ZONE' $DOM1 'OPER' 'LAPN' ALFA 'INCO' 'TN'
  352. 'ZONE' $DOM1 'OPER' 'KONV' 1. 'UN' ALFA 'INCO' 'TN'
  353. 'ZONE' $DOM1 'OPER' 'FIMP' 1. 'INCO' 'TN';
  354. RV = 'EQEX' RV
  355. 'OPTI' 'EF' 'CENTREE'
  356. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'UN' DT 'INCO' 'UN'
  357. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'TN' DT 'INCO' 'TN' ;
  358. 'FINSI' ;
  359. 'SI' ('EGA' IRESO 3) ;
  360. RV = 'EQEX' $DOM1 'ITMA' 1000 'NITER' 1 'OMEGA' 1. 'FIDT' 10000
  361. 'OPTI' 'EF' KSUPG 'IMPL' KPRES
  362. 'ZONE' $DOM1 'OPER' residu 1 IRESU
  363. 'ZONE' $DOM1 'OPER' 'NS' 1. 'UN' NU GB 'TN' 0. 'INCO' 'UN'
  364. 'ZONE' $DOM1 'OPER' 'LAPN' ALFA 'INCO' 'TN'
  365. 'ZONE' $DOM1 'OPER' 'KONV' 1. 'UN' ALFA 'INCO' 'TN'
  366. 'ZONE' $DOM1 'OPER' 'FIMP' 1. 'INCO' 'TN';
  367. ** 'ZONE' $DOM1 'OPER' 'TSCAL' 1. 'UN' ALFA 1. 'INCO' 'TN'
  368. RV = 'EQEX' RV
  369. 'OPTI' 'EFM1' 'CENTREE'
  370. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'UN' DT 'INCO' 'UN'
  371. 'ZONE' $DOM1 'OPER' 'DFDT' 1. 'TN' DT 'INCO' 'TN' ;
  372. 'FINSI' ;
  373. *
  374. * Conditions aux limites en vitesse et température
  375. RV = 'EQEX' RV 'CLIM'
  376. 'TN' 'TIMP' CNT2 0.
  377. 'UN' 'UIMP' CNT1 0. 'UN' 'VIMP' CNT2 0. ;
  378. *
  379. * Equation en pression avec condition de Dirichlet en un point
  380. 'SI' ('&lt;EG' IRESO 2) ;
  381. RVP = 'EQEX' 'OPTI' 'EF' KPRES
  382. 'ZONE' $DOM1 'OPER' 'KBBT' -1. 'INCO' 'UN' 'PRES'
  383. 'CLIM' 'PRES' 'TIMP' MP1 0. ;
  384. 'FINSI' ;
  385. 'SI' ('EGA' IRESO 3) ;
  386. RV = 'EQEX' RV 'OPTI' 'EF' KSUPG 'IMPL' KPRES
  387. 'ZONE' $DOM1 'OPER' 'KBBT' 1. 'INCO' 'UN' 'PRES'
  388. 'CLIM' 'PRES' 'TIMP' MP1 0. ;
  389. 'FINSI' ;
  390. *
  391. * Initialisation des champs (table INCO)
  392. rv . 'INCO' = TABLE 'INCO' ;
  393. rv . 'INCO' . 'TN' = 'KCHT' $DOM1 'SCAL' 'SOMMET' 0. ;
  394. rv . 'INCO' . 'UN' = 'KCHT' $DOM1 'VECT' 'SOMMET' (0. 0.) ;
  395. rv . 'INCO' . 'PRES' = 'KCHT' $DOM1 'SCAL' KPRES 0. ;
  396. rv . 'INCO' . 'UNM' = 'COPI' rv . 'INCO' . 'UN' ;
  397. rv . 'INCO' . 'TNM' = 'COPI' rv . 'INCO' . 'TN' ;
  398. *
  399. * Champs supplémentaires pour la procédure residu
  400. rv . 'INCO' . 'UN2' = 'COPI' rv . 'INCO' . 'UN' ;
  401. rv . 'INCO' . 'TN2' = 'COPI' rv . 'INCO' . 'TN' ;
  402. rv . 'INCO' . 'IT' = 'PROG' ;
  403. rv . 'INCO' . 'TI' = 'PROG' ;
  404. rv . 'INCO' . 'ER' = 'PROG' ;
  405. *
  406. * Méthode d'inversion du problème en vitesse
  407. rv . 'METHINV' . TYPINV = 1 ;
  408. rv . 'METHINV' . IMPINV = 0 ;
  409. rv . 'METHINV' . NITMAX = 100 ;
  410. rv . 'METHINV' . PRECOND = 3 ;
  411. rv . 'METHINV' . RESID = 1.e-6 ;
  412. rv. 'METHINV' . 'FCPRECT'=1 ;
  413. rv. 'METHINV' . 'FCPRECI'=1 ;
  414. *
  415. * Méthode d'inversion du problème en pression
  416. 'SI' ('&lt;EG' IRESO 2) ;
  417. rvp . 'METHINV' . TYPINV = 1 ;
  418. rvp . 'METHINV' . IMPINV = 0 ;
  419. rvp . 'METHINV' . NITMAX = 100 ;
  420. rvp . 'METHINV' . PRECOND = 3 ;
  421. rvp . 'METHINV' . RESID = 1.e-12 ;
  422. rvp.'METHINV' . 'FCPRECT'=100 ;
  423. rvp.'METHINV' . 'FCPRECI'=100 ;
  424. 'FINSI' ;
  425. *
  426. * Couplage vitesse/pression : Méthode de projection
  427. 'SI' ('&lt;EG' IRESO 2) ;
  428. RV . 'PROJ' = RVP ;
  429. 'FINSI' ;
  430. 'SI' ('EGA' IRESO 3) ;
  431. * En implicite complet, EXEC sans infos en +
  432. 'FINSI' ;
  433. *
  434. *==========================================================
  435. * Résolution
  436. *==========================================================
  437. *
  438. 'OPTION' echo 0 ;
  439. EXEC RV ;
  440. 'OPTION' echo 0 ;
  441. *
  442. *==========================================================
  443. * Post traitement
  444. *==========================================================
  445. *
  446. * Nusselt
  447. nug resg = calcnuss (RV . 'INCO' . 'TN') $DOM1 $CNT2 ;
  448. *
  449. * Fonction de courant
  450. psi1 = courant (RV . 'INCO' . 'UN') $DOM1 $CNT1 ;
  451. *-------------------------> Début des tracés
  452. 'SI' GRAPH ;
  453. trace psi1 DOM1 CNT1 NLI0 'TITR' 'Fonction de courant' ;
  454. *
  455. * Température
  456. tn = RV . 'INCO' . 'TN' ;
  457. trace tn DOM1 CNT1 NLI0 'TITR' 'Température' ;
  458. *
  459. * Vitesse
  460. un = RV . 'INCO' . 'UN' ;
  461. vun = 'VECT' UN 0.005 'UX' 'UY' 'JAUNE' ;
  462. trace VUN DOM1 CNT1 'TITR' 'Vitesse' ;
  463. *
  464. * Pression
  465.  
  466. 'SI' ('&lt;EG' IRESO 2) ;
  467. pe = 'EXCO' rv . 'INCO' . 'PRESSION' 'PRES' ;
  468. 'FINSI' ;
  469. 'SI' ('EGA' IRESO 3) ;
  470. pe = RV . 'INCO' . 'PRES' ;
  471. 'FINSI' ;
  472. pn = 'ELNO' $DOM1 ('KCHT' $DOM1 'SCAL' kpres pe) kpres;
  473. trace pn dom1 CNT1 NLI0 'TITR' 'Pression' ;
  474. *
  475. 'FINSI' ;
  476. *-------------------------> Fin des tracés
  477. *
  478. *==========================================================
  479. * Test de non régression
  480. *==========================================================
  481. *
  482. 'SAUT' 5 'LIGN' ;
  483. VTMAX = maxi (RV . 'INCO' . 'TN') ;
  484. mininu = 'MINI' nug ; maxinu = 'MAXI' nug ;
  485. VTIME = RV . 'PASDETPS' . 'TPS' ;
  486. 'SI' COMPLET ;
  487. TTMAX = 0.12727 ;
  488. TNMAX =-3.52366E-2 ;
  489. TNMIN =-0.99271 ;
  490. TNAVE =-5.9121 ;
  491. TIMEM = 3.25 ;
  492. 'SINON' ;
  493. TTMAX = 0.12813 ;
  494. TNMAX =-3.50596E-2 ;
  495. TNMIN =-0.96950 ;
  496. TNAVE =-5.8951 ;
  497. TIMEM = 0.5 ;
  498. 'FINSI' ;
  499. DTMAX = 1.D-5 ;
  500. DNMAX = 1.D-4 ;
  501. DTIME = 1.D-4 ;
  502. ER1 = VTMAX - TTMAX ABS ; TEST1 = ER1 < DTMAX ;
  503. ER2 = MININU - TNMIN ABS ; TEST2 = ER2 < DNMAX ;
  504. ER3 = RESG - TNAVE ABS ; TEST3 = ER3 < DNMAX ;
  505. ER4 = VTIME - TIMEM ABS ; TEST4 = ER4 < DTIME ;
  506. 'MESS' 'CHAMP/VALEUR/CIBLE/ERREUR/TOLERANCE/TEST' ;
  507. 'MESS' '----------------------------------------' ;
  508. 'MESS' 'Temperature ' VTMAX TTMAX ER1 DTMAX ;
  509. list TEST1 ;
  510. 'MESS' 'Nusselt min ' mininu TNMIN ER2 DNMAX ;
  511. list TEST2 ;
  512. 'MESS' 'Nusselt moy ' resg TNMIN ER3 DNMAX ;
  513. list TEST3 ;
  514. 'MESS' 'Temps final ' VTIME TIMEM ER4 DTIME ;
  515. list TEST4 ;
  516. TEST5 = TEST1 ET TEST2 ET TEST3 ET TEST4 ;
  517. SI TEST5 ;
  518. ERRE 0 ;
  519. SINO ;
  520. ERRE 5 ;
  521. FINSI ;
  522. 'FIN' ;
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  

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