Télécharger centrif.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : centrif.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ****************************************************************************
  5. *
  6. *
  7. * Date : 19/3/97
  8. *
  9. * Version 1
  10. *
  11. * Objet : Le but de ce test est de valider la mise
  12. * en place sous CASTEM 2000 de calculs en
  13. * "vrai axi-symétrique", c'est à dire pour
  14. * lesquels la composante ortho-radiale de
  15. * la vitesse n'est pas nulle mais par contre
  16. * toutes les dérivées par rapport à la composante
  17. * ortho-radiale du repère cylindrique sont nulles.
  18. *
  19. * Les résultats issus du calcul numérique seront
  20. * comparés aux résultats prédits par la théorie
  21. * (voir M. Ungarish, Hydrodynalics of Suspensions,
  22. * p. 47, Springer-Verlag, 1993) et le rapport
  23. * CEA DMT 97/202 : étude phéno d'un bol en rotation.
  24. *
  25. *
  26. * Description: Le cas test est réalisé avec un tore muni
  27. * d'une entrée et d'une sortie. Le fluide est injecté
  28. * axialement par en dessous et sort librement par
  29. * au dessus en un autre endroit. On s'attend à trouver
  30. * deux colonnes de fluide au niveau des surfaces d'entrée
  31. * et de sortie du fluide ainsi que des couches limites
  32. * d'Ekman le long des parois horizontales.
  33. *
  34. * On choisit winj = 1 m/s
  35. * omeg = 100 rad/s
  36. * nu = 1/10 SI
  37. *
  38. * Ce qui permet d'avoir E = 10^-3 (nombre d'Ekman)
  39. * RO = 1/100 (nombre de Rossby)
  40. *
  41. * Représentation graphique
  42. * ------------------------
  43. *
  44. * Les traits figurants à l'intérieur du rectangle ne sont là
  45. * que pour mettre en évidence la symétrie du dessin.
  46. *
  47. * On a laissé des blancs pour représenter les entrées et sortie
  48. * du fluide.
  49. *
  50. * z
  51. * ^ axe de révolution
  52. * |
  53. * |--------------------------------------------->
  54. * | inj2
  55. * |
  56. * |------------------------------------->
  57. * | inj1
  58. * |
  59. * | out1 out2 sym1 sym2
  60. * | P4_______| |___________________________P3
  61. * | | |
  62. * | couche Ekman | | | | | |
  63. * | P44+----------------------------------------+P44
  64. * | | | | | | |
  65. * | | |
  66. * | | | | | | |
  67. * | | |
  68. * | | | | | | |
  69. * | | |
  70. * | P8+ | | | | +P6
  71. * | | |
  72. * | | | | | | |
  73. * | | |
  74. * | | | | | | |
  75. * | | |
  76. * | | | | | | |
  77. * | P11+----------------------------------------+P22
  78. * | couche Ekman | | | | | |
  79. * 0|_ _ _ _ _ _ _ _ |______________________ ____________| _ _ _\ x
  80. * |0 P1 syo1 syo2 ent1 ent2 P2 /
  81. * |
  82. * |-------------->
  83. * | rint
  84. * |
  85. * |---------------------->
  86. * | exi1
  87. * |
  88. * |---------------------------->
  89. * | exi2
  90. * |
  91. * |--------------------------------------------------------->
  92. * | rext
  93. * |
  94. *
  95. * Les deux colonnes qui se forment à l'entrée et la sortie du fluide
  96. * sont entourées de couches limites verticales dites
  97. * de Stewartson (non représentées).
  98. *
  99. *
  100. *
  101. * Auteur : Gilles Bernard-Michel
  102. *
  103. * Révision 1 : 16/06/2014 Passage EQPR -> EQEX
  104. *
  105. *****************************************************************************
  106. *
  107.  
  108.  
  109.  
  110. *
  111. ** Choix des éléments
  112. *
  113.  
  114. option 'DIME' 2 'ELEM' qua8 'MODELISER' axis ;
  115.  
  116. DISCR = 'MACRO' ;
  117. KPRESS = 'CENTRE' ;
  118. BETAP = 1. ;
  119.  
  120. *
  121. ************************ Quelques procédures ********************************
  122. *
  123.  
  124. *
  125. ** Max de l'erreur entre deux Champoints
  126. *
  127.  
  128. DEBPROC CALCERR vitp1*'CHPOINT' vit*'CHPOINT' ;
  129. vmax = 'MAXIMUM' vit 'ABS' + 1.e-13;
  130. dimax = 'MAXIMUM' (vitp1 - vit) 'ABS' ;
  131. err = (dimax /vmax) ;
  132. FINPROC err ;
  133.  
  134. *
  135. ************************ On définit les propriétés physiques ***************
  136. *
  137.  
  138. *
  139. ** viscosité dynamique mu/rho.
  140. *
  141.  
  142. nu =1.E-1 ;
  143.  
  144. *
  145. ** La vitesse de rotation initiale.
  146. *
  147.  
  148. omeg = 100 ;
  149.  
  150. *
  151. ** Ordre de grandeur de la vitesse d'injection.
  152. *
  153.  
  154. winj = 0.2 ;
  155.  
  156. *
  157. ********************* Les options utilisateur ******************************
  158. *
  159.  
  160. *
  161. ** Critère de convergence implicite.
  162. *
  163.  
  164. crit = 0.10 ;
  165.  
  166. *
  167. ** Test long ou court.
  168. *
  169.  
  170. COMPLET = FAUX;
  171.  
  172. *
  173. ** Nombre max de boucles d'implicitation.
  174. *
  175.  
  176. MAXIMP = 3;
  177.  
  178. *
  179. ** Sortie graphique.
  180. *
  181.  
  182. GRAPH = 'N';
  183.  
  184. *
  185. ** Calcul des évolutions de vitesses.
  186. *
  187.  
  188. CALCEV = VRAI;
  189.  
  190. *
  191. ** periode de calcul des evolutions.
  192. *
  193.  
  194. period = 10;
  195.  
  196. *
  197. ********************* On traite les aspects géométriques ********************
  198. *
  199.  
  200. *
  201. ** Les paramètres de la géométrie.
  202. *
  203.  
  204. rint = 1. ;
  205. rext = 2.1;
  206. hh = 1. ;
  207. inj1 = 1.8;
  208. inj2 = 1.9;
  209. exi1 = 1.2;
  210. exi2 = 1.3;
  211.  
  212. *
  213. ** Coefficients affectés aux couches d'Ekman et Stewartson.
  214. *
  215.  
  216. coefekma = 12. ;
  217. coefste1 = 0.8 ;
  218. coefste2 = 0.4 ;
  219.  
  220. *
  221. ** Densité du maillage.
  222. *
  223.  
  224. npts = 14;
  225. d1 = 1.0 / npts;
  226. d2 = d1 / 1. ;
  227.  
  228. *
  229. ** Calcul des épaisseurs des couches d'Ekman et de Stewartson.
  230. ** Ces épaisseurs sont des ordres de grandeurs sans dimension.
  231. *
  232.  
  233. ekma = nu / (omeg * (rext**2));
  234. ddek = ekma**0.5;
  235. stew = ekma**0.25;
  236.  
  237. *
  238. ** Modifications de ces épaisseurs en tenant compte des coefficents
  239. ** introduits.
  240. *
  241.  
  242. dbek = coefekma * ddek * hh ;
  243. fiek = hh * (1. - (coefekma * ddek)) ;
  244. dste = rint * coefste1 * stew ;
  245. fste = rext * coefste2 * stew ;
  246.  
  247. *
  248. ** Les sommets du bol
  249. *
  250.  
  251. p1 = rint 0. ;
  252. p2 = rext 0. ;
  253. p3 = rext hh ;
  254. p4 = rint hh ;
  255.  
  256. *
  257. ** Les milieux des cotés.
  258. *
  259.  
  260. mil1 = ((rint + rext)/2.0);
  261. mil2 = hh/2.0 ;
  262. p6 = rext mil2 ;
  263. p8 = rint mil2 ;
  264.  
  265. *
  266. ** Les points délimitant les couches d'Ekman.
  267. *
  268.  
  269. p11 = rint dbek ;
  270. p22 = rext dbek ;
  271. p33 = rext fiek ;
  272. p44 = rint fiek ;
  273.  
  274. *
  275. ** Les points d'entrée du fluide et leurs symétriques.
  276. ** Sont rajoutées les couches de Stewartson qui les
  277. ** entourent.
  278. *
  279.  
  280. ent1 = inj1 0. ;
  281. ent2 = inj2 0. ;
  282. sym1 = inj1 hh ;
  283. sym2 = inj2 hh ;
  284. en11 = (inj1 - fste) 0. ;
  285. en22 = (inj2 + fste) 0. ;
  286. sy11 = (inj1 - fste) hh ;
  287. sy22 = (inj2 + fste) hh ;
  288.  
  289. *
  290. ** Les points de sortie du fluide et leurs symétriques.
  291. ** Sont rajoutées les couches de Stewartson qui les
  292. ** entourent.
  293. *
  294.  
  295. out1 = exi1 hh ;
  296. out2 = exi2 hh ;
  297. syo1 = exi1 0. ;
  298. syo2 = exi2 0. ;
  299. ou11 = (exi1 - dste) hh ;
  300. ou22 = (exi2 + dste) hh ;
  301. so11 = (exi1 - dste) 0. ;
  302. so22 = (exi2 + dste) 0. ;
  303.  
  304. *
  305. ** Assemblage des bords du domaine.
  306. *
  307.  
  308. bas1 = p1 'DROIT' dini d1 dfin d1 so11
  309. 'DROIT' dini d1 dfin d2 syo1
  310. 'DROIT' dini d2 dfin d2 syo2
  311. 'DROIT' dini d2 dfin d1 so22
  312. 'DROIT' dini d1 dfin d1 en11
  313. 'DROIT' dini d1 dfin d2 ent1;
  314. entr = ent1 'DROIT' dini d2 dfin d2 ent2 ;
  315. bas2 = ent2 'DROIT' dini d2 dfin d1 en22
  316. 'DROIT' dini d1 dfin d1 p2;
  317. cdro = p2 'DROIT' dini d2 dfin d2 p22
  318. 'DROIT' dini d2 dfin d1 p6
  319. 'DROIT' dini d1 dfin d2 p33
  320. 'DROIT' dini d2 dfin d2 p3;
  321. hau2 = p3 'DROIT' dini d1 dfin d1 sy22
  322. 'DROIT' dini d1 dfin d2 sym2
  323. 'DROIT' dini d2 dfin d2 sym1
  324. 'DROIT' dini d2 dfin d1 sy11
  325. 'DROIT' dini d1 dfin d1 ou22
  326. 'DROIT' dini d1 dfin d2 out2;
  327. sor = out2 'DROIT' dini d2 dfin d2 out1;
  328. hau1 = out1 'DROIT' dini d2 dfin d1 ou11
  329. 'DROIT' dini d1 dfin d1 p4;
  330. cgau = p4 'DROIT' dini d2 dfin d2 p44
  331. 'DROIT' dini d2 dfin d1 p8
  332. 'DROIT' dini d1 dfin d2 p11
  333. 'DROIT' dini d2 dfin d2 p1;
  334. cot1 = bas1 'ET' entr 'ET' bas2;
  335. cot2 = cdro;
  336. cot3 = hau2 'ET' sor 'ET' hau1;
  337. cot4 = cgau;
  338. cnt = cot1 'ET' cot2 'ET' cot3 'ET' cot4 ;
  339.  
  340. *
  341. ** On maille avec des rectangles.
  342. *
  343.  
  344. mt= cot1 cot2 cot3 cot4 'DALLER' ;
  345. 'TASSER' mt ;
  346.  
  347. *
  348. ** On réoriente les éléments.
  349. *
  350.  
  351. mt = 'ORIENTER' mt ;
  352.  
  353. *
  354. ** On crée le domaine associé au maillage.
  355. *
  356. Mmt = 'CHAN' mt 'QUAF' ;
  357. $mt = 'MODE' Mmt 'NAVIER_STOKES' DISCR ;
  358. 'DOMA' $mt 'IMPR';
  359. mt = 'DOMA' $mt 'MAILLAGE' ;
  360.  
  361. *
  362. ************************ On défini les conditions sur les vitesses **************
  363. *
  364.  
  365. *
  366. ** On se donne l'échelle de grandeur pour le tracage.
  367. *
  368.  
  369. uref= 0.6 ;
  370.  
  371. *
  372. ** le terme gb défini la présence de terme source
  373. ** pour l'équation radiale et son absence dans
  374. ** l'équation axiale.
  375. *
  376.  
  377. gb = (-1.0 0.0) ;
  378.  
  379. *
  380. ** Les conditions d'injection pour t>= 0.
  381. ** On adopte un profil qui permet de se raccorder
  382. ** aux éléments entourant l'entrée.
  383. *
  384.  
  385. corx = coor 1 mt ;
  386. winj = winj * -4. * (corx - inj1) * (corx - inj2) / ((inj2 - inj1)**2);
  387.  
  388. *
  389. ** Les conditions initiales dans le domaine t < 0.
  390. *
  391.  
  392. udom = 0. ;
  393. vdom = 0. ;
  394. wdom = 0. ;
  395.  
  396. *
  397. ****************** Mise en place du calcul numérique ********************
  398. *
  399.  
  400. *
  401. ** On crée une table RX pour stocker les vitesses.
  402. *
  403.  
  404. RX = TABLE ;
  405.  
  406. *
  407. ** On initialise les CHPOINTS utilisés.
  408. *
  409.  
  410. RX.'UN' = 'KCHT' $mt vect SOMMET (udom wdom) ;
  411. RX.'VT' = 'KCHT' $mt scal SOMMET vdom ;
  412.  
  413. *
  414. ** Création de la table RV associé à la résolution des équations
  415. ** radiales et axiales avec 'NS' 'ET' azimutale avec 'TSCA'.
  416. ** On utilise la version Boussinesq pour avoir
  417. ** les termes sources aux sommets et non au centre.
  418. *
  419.  
  420. RV = 'EQEX' $mt 'OPTI' ALE 'ITMA' 1 'ALFA' 0.8
  421. 'ZONE' $mt 'OPER' 'NS' nu gb 'SR' 0. 'WN' 'INCO' 'UN'
  422. 'ZONE' $mt 'OPER' 'TSCA' nu 'WN' 'ST' 'INCO' 'VT'
  423. ;
  424.  
  425. RV=EQEX RV OPTI EFM1 'CENTREE'
  426. 'ZONE' $MT 'OPER' 'DFDT' 1. 'UN' 'DELTAT' 'INCO' 'UN'
  427. 'ZONE' $MT 'OPER' 'DFDT' 1. 'VT' 'DELTAT' 'INCO' 'VT'
  428. ;
  429.  
  430.  
  431. RV = 'EQEX' RV
  432. 'CLIM' 'UN' 'UIMP' cnt 0.
  433. 'UN' 'VIMP' (cgau et bas1 et bas2 et hau1 et hau2) 0.
  434. 'UN' 'VIMP' entr winj
  435. 'CLIM' 'VT' 'TIMP' (cot1 et cot3) 0.
  436. ;
  437.  
  438. *
  439. ** On charge la pression (méthode de Choleski).
  440. *
  441.  
  442. RVP = EQEX 'OPTI' 'EF' KPRESS
  443. 'ZONE' $MT OPER KBBT -1. betap INCO 'UN' 'PRES'
  444. ;
  445.  
  446. rvp.'METHINV'.TYPINV=1 ;
  447. rvp.'METHINV'.IMPINV=0 ;
  448. rvp.'METHINV'.NITMAX=300;
  449. rvp.'METHINV'.PRECOND=3 ;
  450. rvp.'METHINV'.RESID =1.e-8 ;
  451. rvp.'METHINV' . 'FCPRECT'=100 ;
  452. rvp.'METHINV' . 'FCPRECI'=100 ;
  453.  
  454. RV.'PROJ' =RVP ;
  455.  
  456. RV.'INCO' = TABLE 'INCO';
  457.  
  458. *
  459. ** On initialise aussi les champs de vitesse.
  460. *
  461.  
  462. RV.INCO.'PRES' = 'KCHT' $mt scal KPRESS 0. ;
  463. RV.INCO.'WN' = 'KCHT' $mt vect SOMMET (0. 0.) ;
  464. RV.INCO.'UN' = 'COPIER' RX.'UN';
  465. RV.INCO.'VT' = 'COPIER' RX.'VT';
  466.  
  467. *
  468. ****************** Boucle itérative sur les pas de temps ***************
  469. *
  470.  
  471. indice = 0 ;
  472. nper =1;
  473.  
  474. *
  475. ** On définit le nombre d'iterations.
  476. ** Pour l'instant seul le cas 'NON' COMPLET est possible.
  477. *
  478.  
  479. SI (NON COMPLET);
  480. NBITER = 10;
  481. FINSI;
  482.  
  483. REPETER ITER NBITER;
  484.  
  485. indice = indice + 1 ;
  486.  
  487. *
  488. ** stocke les vitesses dans des variables intermédiaires.
  489. *
  490.  
  491. un = RX.'UN' ;
  492. vt = RX.'VT' ;
  493.  
  494.  
  495. *
  496. ** Bouclage du calcul implicite des termes sources et du
  497. ** terme transportant.
  498. *
  499.  
  500. nimpl = 0 ;
  501.  
  502. REPETER IMPLIC MAXIMP ;
  503.  
  504. nimpl = nimpl + 1;
  505.  
  506. *
  507. ** On charge les termes sources implicites.
  508. *
  509.  
  510. uimpl = 'KCHT' $mt vect SOMMET RV.INCO.'UN';
  511. vimpl = 'KCHT' $mt SCAL SOMMET RV.INCO.'VT';
  512. sr = (vimpl * vimpl / corx) + (2. * omeg * vimpl) ;
  513. uscal = 'EXCO' RV.INCO.'UN' ux scal;
  514. st = (-1.0 * uscal * vimpl / corx) - (2. * omeg * uscal)
  515. - (nu*vt/(corx*corx)) ;
  516. stt = 'KCHT' $mt SCAL SOMMET st;
  517. st = 'NOEL' $mt stt;
  518. RV.INCO.'SR' = 'KCHT' $mt SCAL SOMMET sr;
  519. RV.INCO.'ST' = 'KCHT' $mt SCAL CENTRE st;
  520.  
  521. *
  522. ** On réinitialise les champs de vitesse transportants.
  523. *
  524.  
  525. RV.INCO.'WN' = 'KCHT' $mt vect SOMMET RV.INCO.'UN';
  526.  
  527. *
  528. ** On reinitialise les tables de vitesses non implicites
  529. *
  530.  
  531. RV.INCO.'UN' = 'KCHT' $mt vect SOMMET un ;
  532. RV.INCO.'VT' = 'KCHT' $mt SCAL SOMMET vt;
  533.  
  534.  
  535. *
  536. ** On execute le calcul.
  537. *
  538.  
  539. EXEC RV ;
  540.  
  541. *
  542. ** On test la convergence de notre implicitation.
  543. ** Ce qui a un sens pour MAXIMP >= 2.
  544. *
  545.  
  546. 'SI' (MAXIMP > 1);
  547.  
  548. err1 = CALCERR uimpl RV.INCO.'UN';
  549. err2 = CALCERR vimpl RV.INCO.'VT';
  550.  
  551. *
  552. ** On charge la premiere evolution.
  553. *
  554.  
  555. 'SI' (nimpl EGA 1);
  556. errdebu = err1 ;
  557. errdebv = err2 ;
  558. 'FINSI';
  559.  
  560. *
  561. ** On effectue le test.
  562. *
  563.  
  564. bool1 = nimpl > 1;
  565. bool2 = err1 &lt;EG (crit*errdebu);
  566. bool3 = err2 &lt;EG (crit*errdebv);
  567. bool = bool1 et bool2 et bool3;
  568. 'SI' (bool);
  569. QUITTER IMPLIC;
  570. 'FINSI';
  571.  
  572. 'SI' ((nimpl EGA MAXIMP) ET (NON bool) ET (nimpl > 1)) ;
  573. ***** Le calcul d'erreur n'a pas de sens pour le premier pas de temps.
  574. 'SI' (indice > 2);
  575. mess 'implicitation insuffisante ou critère trop severe';
  576. 'FINSI';
  577. 'FINSI';
  578. 'FINSI';
  579.  
  580. 'FIN' IMPLIC ;
  581.  
  582. *
  583. ** Calcul de l'évolution des vitesses.
  584. *
  585.  
  586. 'SI' (CALCEV 'ET' (indice 'EGA' (nper*period)));
  587. un1 = 'EXCO' un ux;
  588. un2 = vt;
  589. un3 = 'EXCO' un uy;
  590. un11 = 'EXCO' RV.INCO.'UN' ux;
  591. un22 = RV.INCO.'VT';
  592. un33 = 'EXCO' RV.INCO.'UN' uy;
  593. erru = CALCERR un1 un11 ;
  594. errv = CALCERR un2 un22 ;
  595. errw = CALCERR un3 un33 ;
  596.  
  597. *
  598. ** Stockage des erreurs en listes.
  599. *
  600.  
  601. 'SI' (nper EGA 1);
  602. convu = 'PROG' erru;
  603. convv = 'PROG' errv;
  604. convw = 'PROG' errw;
  605. liter = 'PROG' indice;
  606. SINON ; 'SI' (nper > 1);
  607. convu = convu 'ET' ('PROG' erru);
  608. convv = convv 'ET' ('PROG' errv);
  609. convw = convw 'ET' ('PROG' errw);
  610. liter = liter 'ET' ('PROG' indice);
  611. 'FINSI';
  612. 'FINSI';
  613. nper = nper + 1;
  614. 'FINSI';
  615.  
  616. *
  617. ** On sauve les expressions obtenues pour les vitesses.
  618. *
  619.  
  620. RX.'UN' = 'COPIER' RV.INCO.'UN' ;
  621. vt = RV.INCO.'VT';
  622. vtn = 'KCHT' $mt SCAL SOMMET vt;
  623. RX.'VT' = 'COPIER' vtn ;
  624.  
  625. 'FIN' ITER ;
  626.  
  627. *
  628. ******************** Test de l'erreur ************************
  629. *
  630.  
  631. *
  632. ** On n'autorise pas de test long donc meme test
  633. ** dans les deux cas.
  634. *
  635. si vrai ;
  636. erdif1 = 'ABS' (erru - 2.696e-2);
  637. bool1 = erdif1 &lt;EG 1.e-4;
  638. erdif2 = 'ABS' (errv - 6.285e-2);
  639. bool2 = erdif2 &lt;EG 1.e-4;
  640. erdif3 = 'ABS' (errw - 1.0465e-2);
  641. bool3 = erdif3 &lt;EG 1.e-4;
  642. bool4 = bool1 ET bool2 ET bool3;
  643. 'SI' ('NON' bool4);
  644. 'MESSAGE' erdif1 erdif2 erdif3;
  645. ERREUR 5;
  646. 'FINSI';
  647. finsi ;
  648. *
  649. **************** Traitement des résultats ******************************
  650. *
  651.  
  652. SI ('EGA' GRAPH 'O');
  653.  
  654. *
  655. ** Tracé pour les vitesses dans le plan (rz).
  656. *
  657.  
  658. ung1='VECTEUR' un uref ux uy jaune ;
  659. 'TRACER' ung1 mt ;
  660. *
  661. ** Tracé des lignes de courant.
  662. *
  663.  
  664. Mcot1 = 'CHAN' cot1 'QUAF';
  665. Mcot2 = 'CHAN' cot2 'QUAF';
  666. Mcot3 = 'CHAN' cot3 'QUAF';
  667. Mcot4 = 'CHAN' cot4 'QUAF';
  668. 'ELIM' (Mmt et Mcot1 et Mcot2 et Mcot3 et Mcot4) 1.e-5;
  669.  
  670. $cot1 = 'MODE' Mcot1 'NAVIER_STOKES' DISCR ;
  671. $cot2 = 'MODE' Mcot2 'NAVIER_STOKES' DISCR ;
  672. $cot3 = 'MODE' Mcot3 'NAVIER_STOKES' DISCR ;
  673. $cot4 = 'MODE' Mcot4 'NAVIER_STOKES' DISCR ;
  674. cot1 = 'DOMA' $cot1 'MAILLAGE' ;
  675. cot2 = 'DOMA' $cot2 'MAILLAGE' ;
  676. cot3 = 'DOMA' $cot3 'MAILLAGE' ;
  677. cot4 = 'DOMA' $cot4 'MAILLAGE' ;
  678.  
  679. un1 = 'EXCO' un ux;
  680. un2 = 'EXCO' un uy;
  681. un1 = -1. * corx * un1;
  682. un3 = corx * un2;
  683. un1 = 'KCHT' $mt SCAL SOMMET un1;
  684. un2 = 'KCHT' $mt SCAL SOMMET un2;
  685. un3 = 'KCHT' $mt SCAL SOMMET un3;
  686. uncz = 'NOEL' $mt un2;
  687. uncz = 'KCHT' $mt SCAL CENTRE uncz;
  688. rt2d= 'KOPS' un 'ROT' $mt ;
  689. corx = 'KCHT' $mt SCAL SOMMET corx;
  690. corm = 'NOEL' $mt corx;
  691. unn1 = 'KCHT' $cot1 SCAL SOMMET un1;
  692. unn2 = 'KCHT' $cot2 SCAL SOMMET (-1 * un3);
  693. unn3 = 'KCHT' $cot3 SCAL SOMMET (-1 * un1);
  694. unn4 = 'KCHT' $cot4 SCAL SOMMET un3;
  695. unn1 = 'NOEL' $cot1 unn1;
  696. unn1 = 'KCHT' $cot1 SCAL CENTRE unn1;
  697. unn2 = 'NOEL' $cot2 unn2;
  698. unn2 = 'KCHT' $cot2 SCAL CENTRE unn2;
  699. unn3 = 'NOEL' $cot3 unn3;
  700. unn3 = 'KCHT' $cot3 SCAL CENTRE unn3;
  701. unn4 = 'NOEL' $cot4 unn4;
  702. unn4 = 'KCHT' $cot4 SCAL CENTRE unn4;
  703. sw = 2*uncz - (corm * rt2d) ;
  704. rk = 'EQEX' $MT 'OPTI' 'EF' 'IMPL'
  705. ZONE $mt OPER 'LAPN' 1. INCO 'PSI'
  706. ZONE $mt OPER 'FIMP' sw INCO 'PSI'
  707. ZONE $cot1 OPER 'FIMP' unn1 INCO 'PSI'
  708. ZONE $cot2 OPER 'FIMP' unn2 INCO 'PSI'
  709. ZONE $cot3 OPER 'FIMP' unn3 INCO 'PSI'
  710. ZONE $cot4 OPER 'FIMP' unn4 INCO 'PSI'
  711. CLIM 'PSI' 'TIMP' cot4 0. ;
  712. rk.'INCO'.'PSI' = 'KCHT' $mt scal sommet 0. ;
  713. EXEC rk ;
  714. psi = rk.'INCO'.'PSI' ;
  715. 'OPTION' ISOV LIGNE;
  716. 'TRACER' psi mt ('CONTOUR' (mt)) ;
  717.  
  718. *
  719. ** Tracé pour la vitesse ortho-radiale en 3D.
  720. *
  721.  
  722. vtx = 'KCHT' $mt SCAL SOMMET 0;
  723. vtx = 'NOMC' 'UX' vtx 'NATU' DISCRET;
  724. vty = 'KCHT' $mt SCAL SOMMET 0.;
  725. vty = 'NOMC' 'UY' vty 'NATU' DISCRET;
  726.  
  727. *
  728. * La vitesse est inversée car le maillage
  729. * est en réalité dans le plan rz et non xy.
  730. * Pour recreer la véritable orientation, on change
  731. * le signe de la vitesse ortho-radiale.
  732. *
  733.  
  734. mvt = -1. * vt;
  735. vtz = 'NOMC' 'UZ' mvt 'NATU' DISCRET;
  736. 'OPTION' 'DIME' 3;
  737. uuu = 'KCHT' $mt vect SOMMET (vtx ET vty ET vtz);
  738. ung2 = 'VECTEUR' uuu uref ux uy uz jaune;
  739. 'TRACER' ung2 mt;
  740.  
  741. *
  742. ** tracé de l'évolution des vitesses en fonction du
  743. ** pas de temps. Il n'a rien si le nombre d'iterations
  744. ** est insuffisant.
  745. *
  746.  
  747. 'SI' (CALCEV);
  748. EVU = 'EVOL' 'MANU' 'ITERATION' liter
  749. 'EVOLUTION EN UR' convu;
  750. EVV = 'EVOL' 'MANU' 'ITERATION' liter
  751. 'EVOLUTION EN UTETA' convv;
  752. EVW = 'EVOL' 'MANU' 'ITERATION' liter
  753. 'EVOLUTION EN UZ' convw;
  754. 'DESSIN' evu logy;
  755. 'DESSIN' evv logy;
  756. 'DESSIN' evw logy;
  757. 'FINSI';
  758. 'FINSI';
  759.  
  760.  
  761. *
  762. ** Sauvegarde des données.
  763. *
  764.  
  765. *REPIX RV;
  766. *fsauv = ' ' ;
  767. *OPTI SAUV fsauv; SAUV;
  768.  
  769. 'FIN' ;
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  

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