Télécharger dedu_vahl.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dedu_vahl.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTI' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : DEDU_VAHL
  7. * DESCRIPTION : Calcul de la cavité carrée différentiellement chauffée
  8. * (Navier-Stokes incompressible + Energie) pour plusieurs
  9. * nombres de Rayleigh et comparaison avec les résultats de
  10. * référence de De Vahl Davis :
  11. *
  12. *@Article{vahl_davis,
  13. * author = {G. De Vahl Davis},
  14. * title = {Natural Convection of air in a square cavity: a bench
  15. * mark numerical solution},
  16. * journal = {IJNMF},
  17. * year = {1983},
  18. * volume = {3},
  19. * pages = {249-264},
  20. * endroit = {Classeur Benchmarks (I)}
  21. *}
  22. *
  23. * On utilise une adaptation de maillage par bougé de noeuds
  24. * utilisant l'algorithme implémenté dans 'DEDU' 'ADAP'
  25. * pour calculer le cas avec peu de mailles et sans
  26. * viscosité artificielle (décentrement).
  27. * On arrive à passer Ra= 10^6 avec un maillage 15x15
  28. *
  29. *
  30. * LANGAGE : GIBIANE-CAST3M
  31. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  32. * mél : gounand@semt2.smts.cea.fr
  33. **********************************************************************
  34. * VERSION : v1, 30/07/2007, version initiale
  35. * HISTORIQUE : v1, 30/07/2007, création
  36. * HISTORIQUE :
  37. * HISTORIQUE :
  38. ************************************************************************
  39. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  40. * en cas de modification de ce sous-programme afin de faciliter
  41. * la maintenance !
  42. ************************************************************************
  43. *
  44. 'SAUTER' 2 'LIGNE' ;
  45. 'MESSAGE' ' Execution de dedu_vahl.dgibi' ;
  46. 'SAUTER' 2 'LIGNE' ;
  47. *
  48. *
  49. *
  50. interact= FAUX ;
  51. graph = FAUX ;
  52. verbose = FAUX ;
  53. debug = FAUX ;
  54. complet = FAUX ;
  55. *
  56. *BEGINPROCEDUR gmass
  57. ************************************************************************
  58. * NOM : GMASS
  59. * DESCRIPTION : Une matrice de masse
  60. *
  61. *
  62. *
  63. * LANGAGE : GIBIANE-CAST3M
  64. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  65. * mél : gounand@semt2.smts.cea.fr
  66. **********************************************************************
  67. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  68. * VERSION : v1, 13/05/2004, version initiale
  69. * HISTORIQUE : v1, 13/05/2004, création
  70. * HISTORIQUE :
  71. * HISTORIQUE :
  72. ************************************************************************
  73. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  74. * en cas de modification de ce sous-programme afin de faciliter
  75. * la maintenance !
  76. ************************************************************************
  77. *
  78. *
  79. 'DEBPROC' GMASS ;
  80. 'ARGUMENT' _mt*'MAILLAGE' ;
  81. 'ARGUMENT' _smt/'MAILLAGE' ;
  82. 'ARGUMENT' gdisc*'MOT ' ;
  83. 'ARGUMENT' lnomt/'LISTMOTS' ;
  84. 'SI' ('NON' ('EXISTE' lnomt)) ;
  85. 'ARGUMENT' nomt*'MOT ' ;
  86. lnomt = 'MOTS' nomt ;
  87. 'FINSI' ;
  88. 'ARGUMENT' disct*'MOT ' ;
  89. 'ARGUMENT' lnomq/'LISTMOTS' ;
  90. 'SI' ('NON' ('EXISTE' lnomq)) ;
  91. 'ARGUMENT' nomq*'MOT ' ;
  92. lnomq = 'MOTS' nomq ;
  93. 'FINSI' ;
  94. 'ARGUMENT' discq*'MOT ' ;
  95. 'ARGUMENT' coef/'FLOTTANT' ;
  96. 'SI' ('NON' ('EXISTE' coef)) ;
  97. 'ARGUMENT' coef2/'CHPOINT ' ;
  98. 'SI' ('NON' ('EXISTE' coef2)) ;
  99. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  100. 'SINON' ;
  101. coef = coef2 ;
  102. 'ARGUMENT' discc*'MOT ' ;
  103. 'FINSI' ;
  104. 'SINON' ;
  105. discc = 'CSTE' ;
  106. 'FINSI' ;
  107. 'ARGUMENT' methgau/'MOT ' ;
  108. 'SI' ('NON' ('EXISTE' methgau)) ;
  109. methgau = 'GAU7' ;
  110. 'FINSI' ;
  111. 'ARGUMENT' chpop/'CHPOINT' ;
  112. 'ARGUMENT' chpod/'CHPOINT' ;
  113. *
  114. vdim = 'VALEUR' 'DIME' ;
  115. vmod = 'VALEUR' 'MODE' ;
  116. idim = 0 ;
  117. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  118. idim = 2 ;
  119. iaxi = FAUX ;
  120. 'FINSI' ;
  121. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  122. idim = 2 ;
  123. iaxi = VRAI ;
  124. 'FINSI' ;
  125. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  126. idim = 3 ;
  127. iaxi = FAUX ;
  128. 'FINSI' ;
  129. 'SI' ('EGA' vdim 1) ;
  130. idim = 1 ;
  131. iaxi = FAUX ;
  132. 'FINSI' ;
  133. 'SI' ('EGA' idim 0) ;
  134. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  135. 'FINSI' ;
  136. 'SI' iaxi ;
  137. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  138. 'FINSI' ;
  139. dlnomt = 'DIME' lnomt ; dlnomq = 'DIME' lnomq ;
  140. 'SI' ('NEG' dlnomt dlnomq) ;
  141. 'ERREUR' ('CHAINE' 'Pas le meme nombre dincos primales et duales');
  142. 'FINSI' ;
  143. * numop = 1 ;
  144. numop = dlnomt ;
  145. numder = idim ;
  146. numvar = dlnomt ;
  147. numdat = 1 ;
  148. numcof = 1 ;
  149. *
  150. A = ININLIN numop numvar numdat numcof numder ;
  151. 'REPETER' iilnomt dlnomt ;
  152. ilnomt = &iilnomt ;
  153. A . 'VAR' . ilnomt . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lnomt ilnomt) ;
  154. A . 'VAR' . ilnomt . 'DISC' = disct ;
  155. 'SI' ('EXISTE' chpop) ;
  156. A . 'VAR' . ilnomt . 'VALEUR' = chpop ;
  157. 'FINSI' ;
  158. 'FIN' iilnomt ;
  159. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  160. A . 'DAT' . 1 . 'DISC' = discc ;
  161. A . 'DAT' . 1 . 'VALEUR' = coef ;
  162. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  163. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  164. *
  165. 'REPETER' iilnomt dlnomt ;
  166. ilnomt = &iilnomt ;
  167. A . ilnomt . ilnomt . 0 = 'LECT' 1 ;
  168. 'FIN' iilnomt ;
  169. *
  170. 'SI' iaxi ;
  171. numdat = 1 ;
  172. numcof = 1 ;
  173. 'SINON' ;
  174. numdat = 0 ;
  175. numcof = 0 ;
  176. 'FINSI' ;
  177. B = ININLIN numop numvar numdat numcof numder ;
  178. 'REPETER' iilnomq dlnomq ;
  179. ilnomq = &iilnomq ;
  180. B . 'VAR' . ilnomq . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lnomq ilnomq) ;
  181. B . 'VAR' . ilnomq . 'DISC' = discq ;
  182. 'SI' ('EXISTE' chpod) ;
  183. B . 'VAR' . ilnomq . 'VALEUR' = chpod ;
  184. 'FINSI' ;
  185. 'FIN' iilnomq ;
  186. *
  187. 'SI' iaxi ;
  188. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  189. B . 'DAT' . 1 . 'DISC' = gdisc ;
  190. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  191. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  192. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  193. 'FINSI' ;
  194. 'SI' iaxi ;
  195. 'REPETER' iilnomq dlnomq ;
  196. ilnomq = &iilnomq ;
  197. B . ilnomq . ilnomq . 0 = 'LECT' 1 ;
  198. 'FIN' iilnomq ;
  199. 'SINON' ;
  200. 'REPETER' iilnomq dlnomq ;
  201. ilnomq = &iilnomq ;
  202. B . ilnomq . ilnomq . 0 = 'LECT' ;
  203. 'FIN' iilnomq ;
  204. 'FINSI' ;
  205. *
  206. 'SI' ('EXISTE' _smt) ;
  207. mgmass = 'NLIN' gdisc _mt _smt A B methgau ;
  208. 'SINON' ;
  209. mgmass = 'NLIN' gdisc _mt A B methgau ;
  210. 'FINSI' ;
  211. *
  212. 'RESPRO' mgmass ;
  213. 'FINPROC' ;
  214. *
  215. * End of procedure file GMASS
  216. *
  217. *ENDPROCEDUR gmass
  218. *BEGINPROCEDUR glapn
  219. ************************************************************************
  220. * NOM : GLAPN
  221. * DESCRIPTION : Un laplacien scalaire
  222. *
  223. *
  224. *
  225. * LANGAGE : GIBIANE-CAST3M
  226. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  227. * mél : gounand@semt2.smts.cea.fr
  228. **********************************************************************
  229. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  230. * VERSION : v1, 13/05/2004, version initiale
  231. * HISTORIQUE : v1, 13/05/2004, création
  232. * HISTORIQUE :
  233. * HISTORIQUE :
  234. ************************************************************************
  235. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  236. * en cas de modification de ce sous-programme afin de faciliter
  237. * la maintenance !
  238. ************************************************************************
  239. *
  240. *
  241. 'DEBPROC' GLAPN ;
  242. 'ARGUMENT' _mt*'MAILLAGE' ;
  243. 'ARGUMENT' gdisc*'MOT ' ;
  244. 'ARGUMENT' nomt*'MOT ' ;
  245. 'ARGUMENT' disct*'MOT ' ;
  246. 'ARGUMENT' nomq*'MOT ' ;
  247. 'ARGUMENT' discq*'MOT ' ;
  248. 'ARGUMENT' coef/'FLOTTANT' ;
  249. 'SI' ('NON' ('EXISTE' coef)) ;
  250. 'ARGUMENT' coef2/'CHPOINT ' ;
  251. 'SI' ('NON' ('EXISTE' coef2)) ;
  252. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  253. 'SINON' ;
  254. coef = coef2 ;
  255. 'ARGUMENT' discc*'MOT ' ;
  256. 'FINSI' ;
  257. 'SINON' ;
  258. discc = 'CSTE' ;
  259. 'FINSI' ;
  260. 'ARGUMENT' methgau/'MOT ' ;
  261. 'SI' ('NON' ('EXISTE' methgau)) ;
  262. methgau = 'GAU7' ;
  263. 'FINSI' ;
  264. 'ARGUMENT' chpop/'CHPOINT' ;
  265. 'ARGUMENT' chpod/'CHPOINT' ;
  266. *
  267. vdim = 'VALEUR' 'DIME' ;
  268. vmod = 'VALEUR' 'MODE' ;
  269. idim = 0 ;
  270. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  271. idim = 2 ;
  272. iaxi = FAUX ;
  273. 'FINSI' ;
  274. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  275. idim = 2 ;
  276. iaxi = VRAI ;
  277. 'FINSI' ;
  278. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  279. idim = 3 ;
  280. iaxi = FAUX ;
  281. 'FINSI' ;
  282. 'SI' ('EGA' vdim 1) ;
  283. idim = 1 ;
  284. iaxi = FAUX ;
  285. 'FINSI' ;
  286. 'SI' ('EGA' idim 0) ;
  287. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  288. 'FINSI' ;
  289. 'SI' iaxi ;
  290. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  291. 'FINSI' ;
  292. * Test bête...
  293. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT ') ;
  294. mincoef = 'MINIMUM' coef ;
  295. 'SINON' ;
  296. mincoef = coef ;
  297. 'FINSI' ;
  298. 'SI' ('<' mincoef 0.D0) ;
  299. 'ERREUR' 'Le coef (une viscosité) doit etre positive' ;
  300. 'FINSI' ;
  301. *
  302. 'SI' iaxi ;
  303. lcoef = 'MOTS' 'NURR' 'NUZZ' ;
  304. 'SINON' ;
  305. 'SI' ('EGA' idim 2) ;
  306. lcoef = 'MOTS' 'NUXX' 'NUYY' ;
  307. 'SINON' ;
  308. lcoef = 'MOTS' 'NUXX' 'NUYY' 'NUZZ' ;
  309. 'FINSI' ;
  310. 'FINSI' ;
  311. *
  312. ltens = FAUX ;
  313. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT') ;
  314. ncomp = 'DIME' ('EXTRAIRE' coef 'COMP') ;
  315. 'SI' ('EGA' ncomp idim) ;
  316. ltens = VRAI ;
  317. 'FINSI' ;
  318. 'FINSI' ;
  319. *
  320. tcoef = 'TABLE' ;
  321. 'SI' ltens ;
  322. 'REPETER' iidim idim ;
  323. tcoef . &iidim = 'EXCO' ('EXTRAIRE' lcoef &iidim) coef ;
  324. 'FIN' iidim ;
  325. 'SINON' ;
  326. 'REPETER' iidim idim ;
  327. tcoef . &iidim = coef ;
  328. 'FIN' iidim ;
  329. 'FINSI' ;
  330. *
  331. numop = idim ;
  332. numder = idim ;
  333. mmt = 'MOTS' nomt ;
  334. mmq = 'MOTS' nomq ;
  335. numvar = 1 ;
  336. numdat = idim ;
  337. numcof = idim ;
  338. *
  339. A = ININLIN numop numvar numdat numcof numder ;
  340. A . 'VAR' . 1 . 'NOMDDL' = mmt ;
  341. A . 'VAR' . 1 . 'DISC' = disct ;
  342. 'SI' ('EXISTE' chpop) ;
  343. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  344. 'FINSI' ;
  345. 'REPETER' iidim idim ;
  346. A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' 'SCAL' ;
  347. A . 'DAT' . &iidim . 'DISC' = discc ;
  348. A . 'DAT' . &iidim . 'VALEUR' = tcoef . &iidim ;
  349. A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
  350. A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
  351. 'FIN' iidim ;
  352. *
  353. 'REPETER' iidim idim ;
  354. A . &iidim . 1 . &iidim = 'LECT' &iidim ;
  355. 'FIN' iidim ;
  356. *
  357. 'SI' iaxi ;
  358. numdat = 1 ;
  359. numcof = 1 ;
  360. 'SINON' ;
  361. numdat = 0 ;
  362. numcof = 0 ;
  363. 'FINSI' ;
  364. *
  365. B = ININLIN numop numvar numdat numcof numder ;
  366. B . 'VAR' . 1 . 'NOMDDL' = mmq ;
  367. B . 'VAR' . 1 . 'DISC' = discq ;
  368. 'SI' ('EXISTE' chpod) ;
  369. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  370. 'FINSI' ;
  371. 'SI' iaxi ;
  372. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  373. B . 'DAT' . 1 . 'DISC' = gdisc ;
  374. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  375. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  376. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  377. 'FINSI' ;
  378. *
  379. 'REPETER' iidim idim ;
  380. 'SI' iaxi ;
  381. B . &iidim . 1 . &iidim = 'LECT' 1 ;
  382. 'SINON' ;
  383. B . &iidim . 1 . &iidim = 'LECT' ;
  384. 'FINSI' ;
  385. 'FIN' iidim ;
  386. *
  387. mglapn = 'NLIN' gdisc _mt A B methgau ;
  388. * Integration par parties
  389. mglapn = '*' mglapn -1.D0 ;
  390. *
  391. 'RESPRO' mglapn ;
  392. 'FINPROC' ;
  393. *
  394. * End of procedure file GLAPN
  395. *
  396. *ENDPROCEDUR glapn
  397. *BEGINPROCEDUR gugrad
  398. ************************************************************************
  399. * NOM : GUGRAD
  400. * DESCRIPTION : U . grad
  401. *
  402. *
  403. *
  404. * LANGAGE : GIBIANE-CAST3M
  405. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  406. * mél : gounand@semt2.smts.cea.fr
  407. **********************************************************************
  408. * VERSION : v1, 13/05/2004, version initiale
  409. * HISTORIQUE : v1, 13/05/2004, création
  410. * HISTORIQUE :
  411. * HISTORIQUE :
  412. ************************************************************************
  413. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  414. * en cas de modification de ce sous-programme afin de faciliter
  415. * la maintenance !
  416. ************************************************************************
  417. *
  418. *
  419. 'DEBPROC' GUGRAD ;
  420. 'ARGUMENT' _mt*'MAILLAGE' ;
  421. 'ARGUMENT' gdisc*'MOT ' ;
  422. 'ARGUMENT' nomp*'MOT ' ;
  423. 'ARGUMENT' discp*'MOT ' ;
  424. 'ARGUMENT' nomd*'MOT ' ;
  425. 'ARGUMENT' discd*'MOT ' ;
  426. 'ARGUMENT' vtot*'CHPOINT ' ;
  427. 'ARGUMENT' vcomp*'LISTMOTS' ;
  428. 'ARGUMENT' discv*'MOT ' ;
  429. 'ARGUMENT' coef/'FLOTTANT' ;
  430. 'SI' ('NON' ('EXISTE' coef)) ;
  431. 'ARGUMENT' coef2/'CHPOINT ' ;
  432. 'SI' ('NON' ('EXISTE' coef2)) ;
  433. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  434. 'SINON' ;
  435. coef = coef2 ;
  436. 'ARGUMENT' discc*'MOT ' ;
  437. 'FINSI' ;
  438. 'SINON' ;
  439. discc = 'CSTE' ;
  440. 'FINSI' ;
  441. 'ARGUMENT' methgau/'MOT ' ;
  442. 'SI' ('NON' ('EXISTE' methgau)) ;
  443. methgau = 'GAU7' ;
  444. 'FINSI' ;
  445. 'ARGUMENT' chpop/'CHPOINT' ;
  446. 'ARGUMENT' chpod/'CHPOINT' ;
  447. *
  448. vdim = 'VALEUR' 'DIME' ;
  449. vmod = 'VALEUR' 'MODE' ;
  450. idim = 0 ;
  451. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  452. idim = 2 ;
  453. iaxi = FAUX ;
  454. * Passé en argument désormais
  455. * vcomp = 'MOTS' 'UX' 'UY' ;
  456. 'FINSI' ;
  457. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  458. idim = 2 ;
  459. iaxi = VRAI ;
  460. * vcomp = 'MOTS' 'UR' 'UZ' ;
  461. 'FINSI' ;
  462. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  463. idim = 3 ;
  464. iaxi = FAUX ;
  465. * vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
  466. 'FINSI' ;
  467. 'SI' ('EGA' vdim 1) ;
  468. idim = 1 ;
  469. iaxi = FAUX ;
  470. 'FINSI' ;
  471. 'SI' ('EGA' idim 0) ;
  472. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  473. 'FINSI' ;
  474. 'SI' iaxi ;
  475. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  476. 'FINSI' ;
  477. *
  478. numop = 1 ;
  479. numder = idim ;
  480. mmp = 'MOTS' nomp ;
  481. mmd = 'MOTS' nomd ;
  482. numvar = 1 ;
  483. numdat = idim ;
  484. numcof = idim ;
  485. *
  486. A = ININLIN numop numvar numdat numcof numder ;
  487. A . 'VAR' . 1 . 'NOMDDL' = mmp ;
  488. A . 'VAR' . 1 . 'DISC' = discp ;
  489. 'SI' ('EXISTE' chpop) ;
  490. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  491. 'FINSI' ;
  492. 'REPETER' iidim idim ;
  493. nomco = 'EXTRAIRE' vcomp &iidim ;
  494. A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' nomco ;
  495. A . 'DAT' . &iidim . 'DISC' = discv ;
  496. * A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ;
  497. * A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  498. A . 'DAT' . &iidim . 'VALEUR' = vtot ;
  499. *
  500. A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
  501. A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
  502. 'FIN' iidim ;
  503. *
  504. 'REPETER' iidim idim ;
  505. A . 1 . 1 . &iidim = 'LECT' &iidim ;
  506. 'FIN' iidim ;
  507. *
  508. numvar = 1 ;
  509. 'SI' iaxi ;
  510. numdat = 2 ;
  511. numcof = 2 ;
  512. 'SINON' ;
  513. numdat = 1 ;
  514. numcof = 1 ;
  515. 'FINSI' ;
  516. *
  517. B = ININLIN numop numvar numdat numcof numder ;
  518. B . 'VAR' . 1 . 'NOMDDL' = mmd ;
  519. B . 'VAR' . 1 . 'DISC' = discd ;
  520. 'SI' ('EXISTE' chpod) ;
  521. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  522. 'FINSI' ;
  523. *
  524. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  525. B . 'DAT' . 1 . 'DISC' = discc ;
  526. B . 'DAT' . 1 . 'VALEUR' = coef ;
  527. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  528. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  529. *
  530. 'SI' iaxi ;
  531. B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  532. B . 'DAT' . 2 . 'DISC' = gdisc ;
  533. B . 'DAT' . 2 . 'VALEUR' = dprmt ;
  534. B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  535. B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  536. 'FINSI' ;
  537. *
  538. 'SI' iaxi ;
  539. B . 1 . 1 . 0 = 'LECT' 1 2 ;
  540. 'SINON' ;
  541. B . 1 . 1 . 0 = 'LECT' 1 ;
  542. 'FINSI' ;
  543. *
  544. mgugrad = 'NLIN' gdisc _mt A B methgau ;
  545. *
  546. 'RESPRO' mgugrad ;
  547. 'FINPROC' ;
  548. *
  549. * End of procedure file GUGRAD
  550. *
  551. *ENDPROCEDUR gugrad
  552. *BEGINPROCEDUR gdecent
  553. ************************************************************************
  554. * NOM : GDECENT
  555. * DESCRIPTION : Décentrement
  556. *
  557. *
  558. *
  559. * LANGAGE : GIBIANE-CAST3M
  560. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  561. * mél : gounand@semt2.smts.cea.fr
  562. **********************************************************************
  563. * VERSION : v1, 13/05/2004, version initiale
  564. * HISTORIQUE : v1, 13/05/2004, création
  565. * HISTORIQUE :
  566. * HISTORIQUE :
  567. ************************************************************************
  568. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  569. * en cas de modification de ce sous-programme afin de faciliter
  570. * la maintenance !
  571. ************************************************************************
  572. *
  573. *
  574. 'DEBPROC' GDECENT ;
  575. 'ARGUMENT' imeth*'ENTIER' ;
  576. 'ARGUMENT' _mt*'MAILLAGE' ;
  577. 'ARGUMENT' gdisc*'MOT ' ;
  578. 'ARGUMENT' nomp*'MOT ' ;
  579. 'ARGUMENT' discp*'MOT ' ;
  580. 'ARGUMENT' nomd*'MOT ' ;
  581. 'ARGUMENT' discd*'MOT ' ;
  582. 'ARGUMENT' vtot*'CHPOINT ' ;
  583. 'ARGUMENT' vcomp*'LISTMOTS' ;
  584. 'ARGUMENT' discv*'MOT ' ;
  585. 'ARGUMENT' rho*'FLOTTANT' ;
  586. 'ARGUMENT' nu*'FLOTTANT' ;
  587. 'ARGUMENT' Pec*'FLOTTANT' ;
  588. 'ARGUMENT' methgau/'MOT ' ;
  589. 'SI' ('NON' ('EXISTE' methgau)) ;
  590. methgau = 'GAU7' ;
  591. 'FINSI' ;
  592. 'ARGUMENT' chpop/'CHPOINT' ;
  593. 'ARGUMENT' chpod/'CHPOINT' ;
  594. *
  595. vdim = 'VALEUR' 'DIME' ;
  596. vmod = 'VALEUR' 'MODE' ;
  597. idim = 0 ;
  598. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  599. idim = 2 ;
  600. iaxi = FAUX ;
  601. * Passé en argument désormais
  602. * vcomp = 'MOTS' 'UX' 'UY' ;
  603. 'FINSI' ;
  604. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  605. idim = 2 ;
  606. iaxi = VRAI ;
  607. * vcomp = 'MOTS' 'UR' 'UZ' ;
  608. 'FINSI' ;
  609. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  610. idim = 3 ;
  611. iaxi = FAUX ;
  612. * vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
  613. 'FINSI' ;
  614. 'SI' ('EGA' vdim 1) ;
  615. idim = 1 ;
  616. iaxi = FAUX ;
  617. 'FINSI' ;
  618. 'SI' ('EGA' idim 0) ;
  619. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  620. 'FINSI' ;
  621. 'SI' iaxi ;
  622. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  623. 'FINSI' ;
  624. *
  625. mdumm = 'MOTS' 'DUMM' ;
  626. numop = 1 ;
  627. numder = idim ;
  628. mmp = 'MOTS' nomp ;
  629. mmd = 'MOTS' nomd ;
  630. numvar = 1 ;
  631. numdat = '+' idim 3 ;
  632. numcof = idim ;
  633. lisdat = 'LECT' 1 PAS 1 ('+' idim 3) ;
  634. *
  635. A = ININLIN numop numvar numdat numcof numder ;
  636. A . 'VAR' . 1 . 'NOMDDL' = mmp ;
  637. A . 'VAR' . 1 . 'DISC' = discp ;
  638. 'SI' ('EXISTE' chpop) ;
  639. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  640. 'FINSI' ;
  641. idat = 0 ;
  642. idat = '+' idat 1 ;
  643. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  644. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  645. A . 'DAT' . idat . 'VALEUR' = rho ;
  646. idat = '+' idat 1 ;
  647. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  648. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  649. A . 'DAT' . idat . 'VALEUR' = nu ;
  650. 'REPETER' iidim idim ;
  651. nomco = 'EXTRAIRE' vcomp &iidim ;
  652. idat = '+' idat 1 ;
  653. A . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ;
  654. A . 'DAT' . idat . 'DISC' = discv ;
  655. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ;
  656. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  657. A . 'DAT' . idat . 'VALEUR' = vtot ;
  658. 'FIN' iidim ;
  659. idat = '+' idat 1 ;
  660. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  661. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  662. A . 'DAT' . idat . 'VALEUR' = Pec ;
  663. *
  664. icof = 0 ;
  665. 'REPETER' iidim idim ;
  666. icof = '+' icof 1 ;
  667. A . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ;
  668. A . 'COF' . icof . 'LDAT' = lisdat ;
  669. 'FIN' iidim ;
  670. *
  671. 'REPETER' iidim idim ;
  672. A . 1 . 1 . &iidim = 'LECT' &iidim ;
  673. 'FIN' iidim ;
  674. *
  675. numvar = 1 ;
  676. 'SI' iaxi ;
  677. numdat = '+' idim 4 ;
  678. numcof = '+' idim 1 ;
  679. 'SINON' ;
  680. numdat = '+' idim 3 ;
  681. numcof = idim ;
  682. 'FINSI' ;
  683. *
  684. B = ININLIN numop numvar numdat numcof numder ;
  685. B . 'VAR' . 1 . 'NOMDDL' = mmd ;
  686. B . 'VAR' . 1 . 'DISC' = discd ;
  687. 'SI' ('EXISTE' chpod) ;
  688. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  689. 'FINSI' ;
  690. idat = 0 ;
  691. idat = '+' idat 1 ;
  692. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  693. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  694. B . 'DAT' . idat . 'VALEUR' = rho ;
  695. idat = '+' idat 1 ;
  696. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  697. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  698. B . 'DAT' . idat . 'VALEUR' = nu ;
  699. 'REPETER' iidim idim ;
  700. nomco = 'EXTRAIRE' vcomp &iidim ;
  701. idat = '+' idat 1 ;
  702. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ;
  703. B . 'DAT' . idat . 'DISC' = discv ;
  704. * B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  705. B . 'DAT' . idat . 'VALEUR' = vtot ;
  706. 'FIN' iidim ;
  707. idat = '+' idat 1 ;
  708. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  709. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  710. B . 'DAT' . idat . 'VALEUR' = Pec ;
  711. *
  712. icof = 0 ;
  713. 'REPETER' iidim idim ;
  714. icof = '+' icof 1 ;
  715. B . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ;
  716. B . 'COF' . icof . 'LDAT' = lisdat ;
  717. 'FIN' iidim ;
  718. *
  719. 'SI' iaxi ;
  720. idat = '+' idat 1 ;
  721. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' 'SCAL' ;
  722. B . 'DAT' . idat . 'DISC' = gdisc ;
  723. B . 'DAT' . idat . 'VALEUR' = dprmt ;
  724. icof = '+' icof 1 ;
  725. B . 'COF' . icof . 'COMPOR' = 'IDEN' ;
  726. B . 'COF' . icof . 'LDAT' = 'LECT' idat ;
  727. 'FINSI' ;
  728. *
  729. 'SI' iaxi ;
  730. 'REPETER' iidim idim ;
  731. B . 1 . 1 . &iidim = 'LECT' &iidim icof ;
  732. 'FIN' iidim ;
  733. 'SINON' ;
  734. 'REPETER' iidim idim ;
  735. B . 1 . 1 . &iidim = 'LECT' &iidim ;
  736. 'FIN' iidim ;
  737. 'FINSI' ;
  738. *
  739. mgdecent = 'NLIN' gdisc _mt A B methgau ;
  740. *
  741. 'RESPRO' mgdecent ;
  742. 'FINPROC' ;
  743. *
  744. * End of procedure file GDECENT
  745. *
  746. *ENDPROCEDUR gdecent
  747. *BEGINPROCEDUR gbbt
  748. ************************************************************************
  749. * NOM : GBBT
  750. * DESCRIPTION : Copie de GDIV mais en précablé
  751. *
  752. *
  753. *
  754. * LANGAGE : GIBIANE-CAST3M
  755. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  756. * mél : gounand@semt2.smts.cea.fr
  757. **********************************************************************
  758. * VERSION : v1, 14/09/2004, version initiale
  759. * HISTORIQUE : v1, 14/09/2004, création
  760. * HISTORIQUE :
  761. * HISTORIQUE :
  762. ************************************************************************
  763. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  764. * en cas de modification de ce sous-programme afin de faciliter
  765. * la maintenance !
  766. ************************************************************************
  767. *
  768. *
  769. 'DEBPROC' GBBT ;
  770. 'ARGUMENT' _mt*'MAILLAGE' ;
  771. 'ARGUMENT' gdisc*'MOT ' ;
  772. 'ARGUMENT' discv*'MOT ' ;
  773. 'ARGUMENT' discp*'MOT ' ;
  774. 'ARGUMENT' coef/'FLOTTANT' ;
  775. 'SI' ('NON' ('EXISTE' coef)) ;
  776. 'ARGUMENT' coef2/'CHPOINT ' ;
  777. 'SI' ('NON' ('EXISTE' coef2)) ;
  778. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  779. 'SINON' ;
  780. coef = coef2 ;
  781. 'ARGUMENT' discc*'MOT ' ;
  782. 'FINSI' ;
  783. 'SINON' ;
  784. discc = 'CSTE' ;
  785. 'FINSI' ;
  786. 'ARGUMENT' methgau/'MOT ' ;
  787. 'SI' ('NON' ('EXISTE' methgau)) ;
  788. methgau = 'GAU7' ;
  789. 'FINSI' ;
  790. *
  791. vdim = 'VALEUR' 'DIME' ;
  792. vmod = 'VALEUR' 'MODE' ;
  793. idim = 0 ;
  794. lpp = 'MOTS' 'LX' ; ldp = 'MOTS' 'FLX' ;
  795. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  796. lpv = 'MOTS' 'UX' 'UY' ; ldv = 'MOTS' 'FX' 'FY' ;
  797. idim = 2 ;
  798. iaxi = FAUX ;
  799. 'FINSI' ;
  800. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  801. lpv = 'MOTS' 'UR' 'UZ' ; ldv = 'MOTS' 'FR' 'FZ' ;
  802. idim = 2 ;
  803. iaxi = VRAI ;
  804. 'FINSI' ;
  805. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  806. lpv = 'MOTS' 'UX' 'UY' 'UZ' ; ldv = 'MOTS' 'FX' 'FY' 'FZ' ;
  807. idim = 3 ;
  808. iaxi = FAUX ;
  809. 'FINSI' ;
  810. 'SI' ('EGA' idim 0) ;
  811. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  812. 'FINSI' ;
  813. 'SI' iaxi ;
  814. dp = ('*' PI 2.D0) ;
  815. rmt = 'COORDONNEE' 1 _mt ;
  816. 'FINSI' ;
  817. *
  818. numop = 2 ;
  819. numder = idim ;
  820. mmp = 'MOTS' nomp ;
  821. idim1 = '+' idim 1 ;
  822. numvar = idim1 ;
  823. 'SI' iaxi ;
  824. numdat = 3 ;
  825. numcof = 3 ;
  826. 'SINON' ;
  827. numdat = 1 ;
  828. numcof = 1 ;
  829. 'FINSI' ;
  830. *
  831. A = ININLIN numop numvar numdat numcof numder ;
  832. 'REPETER' iidim idim ;
  833. A . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lpv &iidim) ;
  834. A . 'VAR' . &iidim . 'DISC' = discv ;
  835. 'FIN' iidim ;
  836. A . 'VAR' . idim1 . 'NOMDDL' = lpp ;
  837. A . 'VAR' . idim1 . 'DISC' = discp ;
  838. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  839. A . 'DAT' . 1 . 'DISC' = discc ;
  840. A . 'DAT' . 1 . 'VALEUR' = coef ;
  841. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  842. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  843. *
  844. 'SI' iaxi ;
  845. A . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  846. A . 'DAT' . 2 . 'DISC' = 'CSTE' ;
  847. A . 'DAT' . 2 . 'VALEUR' = dp ;
  848. A . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  849. A . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  850. A . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  851. A . 'DAT' . 3 . 'DISC' = gdisc ;
  852. A . 'DAT' . 3 . 'VALEUR' = rmt ;
  853. A . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
  854. A . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
  855. 'FINSI' ;
  856. *
  857. 'SI' iaxi ;
  858. 'REPETER' iidim idim ;
  859. A . 1 . &iidim . &iidim = 'LECT' 1 2 3 ;
  860. 'FIN' iidim ;
  861. A . 1 . 1 . 0 = 'LECT' 1 2 ;
  862. 'SINON' ;
  863. 'REPETER' iidim idim ;
  864. A . 1 . &iidim . &iidim = 'LECT' 1 ;
  865. 'FIN' iidim ;
  866. 'FINSI' ;
  867. A . 2 . idim1 . 0 = 'LECT' ;
  868. *
  869. 'SI' iaxi ;
  870. numdat = 3 ;
  871. numcof = 3 ;
  872. 'SINON' ;
  873. numdat = 1 ;
  874. numcof = 1 ;
  875. 'FINSI' ;
  876. B = ININLIN numop numvar numdat numcof numder ;
  877. 'REPETER' iidim idim ;
  878. B . 'VAR' . &iidim . 'NOMDDL' = 'MOTS' ('EXTRAIRE' ldv &iidim) ;
  879. B . 'VAR' . &iidim . 'DISC' = discv ;
  880. 'FIN' iidim ;
  881. B . 'VAR' . idim1 . 'NOMDDL' = ldp ;
  882. B . 'VAR' . idim1 . 'DISC' = discp ;
  883. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  884. B . 'DAT' . 1 . 'DISC' = discc ;
  885. B . 'DAT' . 1 . 'VALEUR' = coef ;
  886. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  887. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  888. *
  889. 'SI' iaxi ;
  890. B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  891. B . 'DAT' . 2 . 'DISC' = 'CSTE' ;
  892. B . 'DAT' . 2 . 'VALEUR' = dp ;
  893. B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  894. B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  895. B . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  896. B . 'DAT' . 3 . 'DISC' = gdisc ;
  897. B . 'DAT' . 3 . 'VALEUR' = rmt ;
  898. B . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
  899. B . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
  900. 'FINSI' ;
  901. *
  902. 'SI' iaxi ;
  903. 'REPETER' iidim idim ;
  904. B . 2 . &iidim . &iidim = 'LECT' 1 2 3 ;
  905. 'FIN' iidim ;
  906. B . 2 . 1 . 0 = 'LECT' 1 2 ;
  907. 'SINON' ;
  908. 'REPETER' iidim idim ;
  909. B . 2 . &iidim . &iidim = 'LECT' 1 ;
  910. 'FIN' iidim ;
  911. 'FINSI' ;
  912. B . 1 . idim1 . 0 = 'LECT' ;
  913. *
  914. mgbbt = 'NLIN' gdisc _mt A B methgau ;
  915. *
  916. 'RESPRO' mgbbt ;
  917. 'FINPROC' ;
  918. *
  919. * End of procedure file GBBT
  920. *
  921. *ENDPROCEDUR gbbt
  922. *BEGINPROCEDUR ggradt
  923. ************************************************************************
  924. * NOM : GGRADT
  925. * DESCRIPTION : Gradient d'une quantité
  926. *
  927. *
  928. *
  929. * LANGAGE : GIBIANE-CAST3M
  930. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  931. * mél : gounand@semt2.smts.cea.fr
  932. **********************************************************************
  933. * VERSION : v1, 08/03/2006, version initiale
  934. * HISTORIQUE : v1, 08/03/2006, création
  935. * HISTORIQUE :
  936. * HISTORIQUE :
  937. ************************************************************************
  938. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  939. * en cas de modification de ce sous-programme afin de faciliter
  940. * la maintenance !
  941. ************************************************************************
  942. *
  943. *
  944. 'DEBPROC' GGRADT ;
  945. 'ARGUMENT' _mt*'MAILLAGE' ;
  946. 'ARGUMENT' gdisc*'MOT ' ;
  947. 'ARGUMENT' nomp*'MOT ' ;
  948. 'ARGUMENT' discp*'MOT ' ;
  949. 'ARGUMENT' nomv*'LISTMOTS' ;
  950. 'ARGUMENT' discv*'MOT ' ;
  951. 'ARGUMENT' coef/'FLOTTANT' ;
  952. 'SI' ('NON' ('EXISTE' coef)) ;
  953. 'ARGUMENT' coef2/'CHPOINT ' ;
  954. 'SI' ('NON' ('EXISTE' coef2)) ;
  955. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  956. 'SINON' ;
  957. coef = coef2 ;
  958. 'ARGUMENT' discc*'MOT ' ;
  959. 'FINSI' ;
  960. 'SINON' ;
  961. discc = 'CSTE' ;
  962. 'FINSI' ;
  963. 'ARGUMENT' methgau/'MOT ' ;
  964. 'SI' ('NON' ('EXISTE' methgau)) ;
  965. methgau = 'GAU7' ;
  966. 'FINSI' ;
  967. 'ARGUMENT' chpop/'CHPOINT' ;
  968. 'ARGUMENT' chpod/'CHPOINT' ;
  969. *
  970. vdim = 'VALEUR' 'DIME' ;
  971. vmod = 'VALEUR' 'MODE' ;
  972. idim = 0 ;
  973. lpp = 'MOTS' nomp ;
  974. ldv = nomv ;
  975. 'SI' ('ET' ('EGA' vdim 1) ('EGA' vmod 'UNIDPLANDYDZ')) ;
  976. idim = 1 ;
  977. iaxi = FAUX ;
  978. 'FINSI' ;
  979. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  980. idim = 2 ;
  981. iaxi = FAUX ;
  982. 'FINSI' ;
  983. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  984. idim = 2 ;
  985. iaxi = VRAI ;
  986. 'FINSI' ;
  987. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  988. idim = 3 ;
  989. iaxi = FAUX ;
  990. 'FINSI' ;
  991. 'SI' ('EGA' idim 0) ;
  992. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  993. 'FINSI' ;
  994. 'SI' iaxi ;
  995. dp = ('*' PI 2.D0) ;
  996. rmt = 'COORDONNEE' 1 _mt ;
  997. 'FINSI' ;
  998. *
  999. numop = idim ;
  1000. numder = idim ;
  1001. numvar = 1 ;
  1002. 'SI' iaxi ;
  1003. numdat = 3 ;
  1004. numcof = 3 ;
  1005. 'SINON' ;
  1006. numdat = 1 ;
  1007. numcof = 1 ;
  1008. 'FINSI' ;
  1009. *
  1010. A = ININLIN numop numvar numdat numcof numder ;
  1011. A . 'VAR' . 1 . 'NOMDDL' = lpp ;
  1012. A . 'VAR' . 1 . 'DISC' = discp ;
  1013. 'SI' ('EXISTE' chpop) ;
  1014. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  1015. 'FINSI' ;
  1016. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  1017. A . 'DAT' . 1 . 'DISC' = discc ;
  1018. A . 'DAT' . 1 . 'VALEUR' = coef ;
  1019. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  1020. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  1021. 'SI' iaxi ;
  1022. A . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  1023. A . 'DAT' . 2 . 'DISC' = 'CSTE' ;
  1024. A . 'DAT' . 2 . 'VALEUR' = dp ;
  1025. A . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  1026. A . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  1027. A . 'DAT' . 3 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  1028. A . 'DAT' . 3 . 'DISC' = gdisc ;
  1029. A . 'DAT' . 3 . 'VALEUR' = rmt ;
  1030. A . 'COF' . 3 . 'COMPOR' = 'IDEN' ;
  1031. A . 'COF' . 3 . 'LDAT' = 'LECT' 3 ;
  1032. 'FINSI' ;
  1033. *
  1034. 'SI' iaxi ;
  1035. 'REPETER' iidim idim ;
  1036. A . &iidim . 1 . 0 = 'LECT' 1 2 3 ;
  1037. 'FIN' iidim ;
  1038. 'SINON' ;
  1039. 'REPETER' iidim idim ;
  1040. A . &iidim . 1 . 0 = 'LECT' 1 ;
  1041. 'FIN' iidim ;
  1042. 'FINSI' ;
  1043. *
  1044. numvar = idim ;
  1045. numdat = 0 ;
  1046. numcof = 0 ;
  1047. B = ININLIN numop numvar numdat numcof numder ;
  1048. 'REPETER' iidim idim ;
  1049. msinc = 'MOTS' ('EXTRAIRE' ldv &iidim) ;
  1050. B . 'VAR' . &iidim . 'NOMDDL' = msinc ;
  1051. B . 'VAR' . &iidim . 'DISC' = discv ;
  1052. 'SI' ('EXISTE' chpod) ;
  1053. B . 'VAR' . &iidim . 'VALEUR' = 'EXCO' msinc chpod msinc ;
  1054. 'FINSI' ;
  1055. 'FIN' iidim ;
  1056. *
  1057. 'REPETER' iidim idim ;
  1058. B . &iidim . &iidim . &iidim = 'LECT' ;
  1059. 'FIN' iidim ;
  1060. *
  1061. mggradt = 'NLIN' gdisc _mt A B methgau ;
  1062. *
  1063. 'RESPRO' mggradt ;
  1064. 'FINPROC' ;
  1065. *
  1066. * End of procedure file GGRADT
  1067. *
  1068. *ENDPROCEDUR ggradt
  1069. *BEGINPROCEDUR dessevol
  1070. ************************************************************************
  1071. * NOM : DESSEVOL
  1072. * DESCRIPTION : Dessine des évolutions : choisit automatiquement
  1073. * les options, marqueurs, couleurs...
  1074. *
  1075. *
  1076. * LANGAGE : GIBIANE-CAST3M
  1077. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1078. * mél : gounand@semt2.smts.cea.fr
  1079. **********************************************************************
  1080. * VERSION : v1, 16/11/2004, version initiale
  1081. * HISTORIQUE : v1, 16/11/2004, création
  1082. * HISTORIQUE :
  1083. * HISTORIQUE :
  1084. ************************************************************************
  1085. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1086. * en cas de modification de ce sous-programme afin de faciliter
  1087. * la maintenance !
  1088. ************************************************************************
  1089. *
  1090. *
  1091. 'DEBPROC' DESSEVOL ;
  1092. 'ARGUMENT' evtot*'EVOLUTION' ;
  1093. 'ARGUMENT' tabt*'TABLE' ;
  1094. 'ARGUMENT' tit*'MOT' ;
  1095. 'ARGUMENT' tix*'MOT' ;
  1096. 'ARGUMENT' tiy*'MOT' ;
  1097. 'ARGUMENT' lnclk/'LOGIQUE' ;
  1098. 'ARGUMENT' nb/'ENTIER' ;
  1099. *
  1100. 'SI' ('NON' ('EXISTE' lnclk)) ;
  1101. lnclk = FAUX ;
  1102. 'FINSI' ;
  1103. *
  1104. 'SI' ('NON' ('EXISTE' nb)) ;
  1105. nb = 3 ;
  1106. 'FINSI' ;
  1107. *
  1108. nt = 'DIME' tabt ;
  1109. nev = 'DIME' evtot ;
  1110. *
  1111. * Attention, dans evtot, il y a une évolution avec des noms de points ?
  1112. *
  1113. *'SI' ('NEG' nev nt) ;
  1114. * cherr = 'CHAINE' 'Evolution and title table : not same dim.' ;
  1115. * 'ERREUR' cherr ;
  1116. *'FINSI' ;
  1117. *
  1118. tev = 'TABLE' ;
  1119. tev . 'TITRE' = tabt ;
  1120. *
  1121. toto = 'TABLE' ;
  1122. *
  1123. lcoul = 'MOTS' 'TURQ' 'VERT' 'JAUN' 'ROSE' 'ROUG' 'BLEU' ;
  1124. lmarq = 'MOTS' 'TRIB' 'TRIA' 'LOSA' 'CARR' 'ETOI' 'PLUS' 'CROI' ;
  1125. ltirr = 'MOTS' 'TIRR' 'TIRC' 'TIRL' 'TIRM' ;
  1126. *
  1127. 'SI' ('EGA' nb 0) ;
  1128. ev2 = evtot ;
  1129. 'SINON' ;
  1130. icou = 0 ;
  1131. 'REPETER' iev nev ;
  1132. ii = &iev ;
  1133. evi = 'EXTRAIRE' evtot 'COUR' ii ;
  1134. 'SI' ('NEG' ('TYPE' ('EXTRAIRE' evi 'ORDO')) 'LISTMOTS') ;
  1135. icou = '+' icou 1 ;
  1136. 'FINSI' ;
  1137. * ii2 = '/' ('+' ii 1) 2 ;
  1138. * ci = EXMOMOD lcoul ii2 ;
  1139. * ci = EXMOMOD lcoul ii ;
  1140. ci = EXMOMOD lcoul icou ;
  1141. APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ;
  1142. 'FIN' iev ;
  1143. ev2 = toto . 'EVOLUTION' ;
  1144. 'FINSI' ;
  1145. *
  1146. 'REPETER' iev nev ;
  1147. ii = &iev ;
  1148. mi = EXMOMOD lmarq ii ;
  1149. ti = EXMOMOD ltirr ii ;
  1150. 'SI' ('>' nb 2) ;
  1151. tev . ii = 'CHAINE' 'MARQ ' mi ' ' ti ;
  1152. 'FINSI' ;
  1153. 'SI' ('>' nb 1) ;
  1154. tev . ii = 'CHAINE' 'MARQ ' mi ;
  1155. 'FINSI' ;
  1156. 'FIN' iev ;
  1157. *
  1158. 'SI' lnclk ;
  1159. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev
  1160. 'NCLK' ;
  1161. 'SINON' ;
  1162. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ;
  1163. 'FINSI' ;
  1164. *
  1165. * End of procedure file DESSEVOL
  1166. *
  1167. 'FINPROC' ;
  1168. *ENDPROCEDUR dessevol
  1169. *BEGINPROCEDUR exmomod
  1170. ************************************************************************
  1171. * NOM : EXMOMOD
  1172. * DESCRIPTION : Extraction d'un mot d'un listmots
  1173. *
  1174. *
  1175. *
  1176. * LANGAGE : GIBIANE-CAST3M
  1177. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1178. * mél : gounand@semt2.smts.cea.fr
  1179. **********************************************************************
  1180. * VERSION : v1, 23/06/2003, version initiale
  1181. * HISTORIQUE : v1, 23/06/2003, création
  1182. * HISTORIQUE :
  1183. * HISTORIQUE :
  1184. ************************************************************************
  1185. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1186. * en cas de modification de ce sous-programme afin de faciliter
  1187. * la maintenance !
  1188. ************************************************************************
  1189. *
  1190. *
  1191. 'DEBPROC' EXMOMOD ;
  1192. 'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ;
  1193. j = 'DIME' lm ;
  1194. k = '+' (MODULO ('-' i 1) j) 1 ;
  1195. lemot = 'EXTRAIRE' lm k ;
  1196. * Usage de l'opérateur text pour éviter que lemot
  1197. * ne soit interprété comme un opérateur
  1198. 'RESPRO' 'TEXTE' lemot ;
  1199. *
  1200. * End of procedure file EXMOMOD
  1201. *
  1202. 'FINPROC' ;
  1203. *ENDPROCEDUR exmomod
  1204. *BEGINPROCEDUR modulo
  1205. ************************************************************************
  1206. * NOM : MODULO
  1207. * DESCRIPTION : Calcule un entier modulo un autre...
  1208. *
  1209. *
  1210. *
  1211. * LANGAGE : GIBIANE-CAST3M
  1212. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1213. * mél : gounand@semt2.smts.cea.fr
  1214. **********************************************************************
  1215. * VERSION : v1, 15/10/2002, version initiale
  1216. * HISTORIQUE : v1, 15/10/2002, création
  1217. * HISTORIQUE :
  1218. * HISTORIQUE :
  1219. ************************************************************************
  1220. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1221. * en cas de modification de ce sous-programme afin de faciliter
  1222. * la maintenance !
  1223. ************************************************************************
  1224. *
  1225. *
  1226. 'DEBPROC' MODULO ;
  1227. 'ARGUMENT' i*'ENTIER' j*'ENTIER' ;
  1228. 'SI' ('EGA' j 0) ;
  1229. 'MESSAGE' 'Impossible de faire modulo 0' ;
  1230. 'ERREUR' 5 ;
  1231. 'SINON' ;
  1232. k=i '/' j ;
  1233. mod=i '-' ( k '*'j ) ;
  1234. 'RESPRO' mod ;
  1235. 'FINSI' ;
  1236. *
  1237. * End of procedure file MODULO
  1238. *
  1239. 'FINPROC' ;
  1240. *ENDPROCEDUR modulo
  1241. *BEGINPROCEDUR append
  1242. ************************************************************************
  1243. * NOM : APPEND
  1244. * DESCRIPTION : Rajoute :
  1245. * - un entier à un listentier
  1246. * - un réel à un listreel
  1247. * - un objet (liste, evolution, matrice ou chpoint)
  1248. * à un indice de table ('MOT' ou 'ENTIER')
  1249. * * si l'indice n'existe pas
  1250. * * 'ET' si l'indice existe
  1251. *
  1252. *
  1253. *
  1254. * LANGAGE : GIBIANE-CAST3M
  1255. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1256. * mél : gounand@semt2.smts.cea.fr
  1257. **********************************************************************
  1258. * VERSION : v1, 10/09/2004, version initiale
  1259. * HISTORIQUE : v1, 10/09/2004, création
  1260. * HISTORIQUE :
  1261. * HISTORIQUE :
  1262. ************************************************************************
  1263. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1264. * en cas de modification de ce sous-programme afin de faciliter
  1265. * la maintenance !
  1266. ************************************************************************
  1267. *
  1268. *
  1269. 'DEBPROC' APPEND ;
  1270. 'ARGUMENT' tab/'TABLE' ;
  1271. 'SI' ('EXISTE' tab) ;
  1272. 'ARGUMENT' itab/'MOT' ;
  1273. 'SI' ('NON' ('EXISTE' itab)) ;
  1274. 'ARGUMENT' itab*'ENTIER' ;
  1275. 'FINSI' ;
  1276. lobj = FAUX ;
  1277. 'SI' ('NON' lobj) ;
  1278. 'ARGUMENT' lr/'LISTREEL' ;
  1279. 'SI' ('EXISTE' lr) ;
  1280. obj = lr ; lobj = VRAI ;
  1281. 'FINSI' ;
  1282. 'FINSI' ;
  1283. 'SI' ('NON' lobj) ;
  1284. 'ARGUMENT' le/'LISTENTI' ;
  1285. 'SI' ('EXISTE' le) ;
  1286. obj = le ; lobj = VRAI ;
  1287. 'FINSI' ;
  1288. 'FINSI' ;
  1289. 'SI' ('NON' lobj) ;
  1290. 'ARGUMENT' lev/'EVOLUTION' ;
  1291. 'SI' ('EXISTE' lev) ;
  1292. obj = lev ; lobj = VRAI ;
  1293. 'FINSI' ;
  1294. 'FINSI' ;
  1295. 'SI' ('NON' lobj) ;
  1296. 'ARGUMENT' lm/'MAILLAGE' ;
  1297. 'SI' ('EXISTE' lm) ;
  1298. obj = lm ; lobj = VRAI ;
  1299. 'FINSI' ;
  1300. 'FINSI' ;
  1301. 'SI' ('NON' lobj) ;
  1302. 'ARGUMENT' chpo/'CHPOINT' ;
  1303. 'SI' ('EXISTE' chpo) ;
  1304. obj = chpo ; lobj = VRAI ;
  1305. 'FINSI' ;
  1306. 'FINSI' ;
  1307. 'SI' ('NON' lobj) ;
  1308. 'ARGUMENT' rig/'RIGIDITE' ;
  1309. 'SI' ('EXISTE' rig) ;
  1310. obj = rig ; lobj = VRAI ;
  1311. 'FINSI' ;
  1312. 'FINSI' ;
  1313. 'SI' ('NON' lobj) ;
  1314. 'ARGUMENT' matk/'MATRIK' ;
  1315. 'SI' ('EXISTE' matk) ;
  1316. obj = matk ; lobj = VRAI ;
  1317. 'FINSI' ;
  1318. 'FINSI' ;
  1319. 'SI' ('NON' lobj) ;
  1320. cherr = 'CHAINE'
  1321. 'Il faut fournir un objet liste, evolution, matrice ou chpoint.'
  1322. ;
  1323. 'ERREUR' cherr ;
  1324. 'FINSI' ;
  1325. 'SI' ('EXISTE' tab itab) ;
  1326. 'SI' ('EGA' ('TYPE' obj) 'CHPOINT') ;
  1327. tab . itab = '+' (tab . itab) obj ;
  1328. 'SINON' ;
  1329. tab . itab = 'ET' (tab . itab) obj ;
  1330. 'FINSI' ;
  1331. 'SINON' ;
  1332. tab . itab = obj ;
  1333. 'FINSI' ;
  1334. 'RESPRO' tab ;
  1335. 'FINSI' ;
  1336. 'ARGUMENT' lenti/'LISTENTI' ;
  1337. 'ARGUMENT' lreel/'LISTREEL' ;
  1338. 'SI' ('EXISTE' lenti) ;
  1339. 'ARGUMENT' enti*'ENTIER' ;
  1340. lenti = 'ET' lenti ('LECT' enti) ;
  1341. 'RESPRO' lenti ;
  1342. 'FINSI' ;
  1343. 'SI' ('EXISTE' lreel) ;
  1344. 'ARGUMENT' reel*'FLOTTANT' ;
  1345. lreel = 'ET' lreel ('PROG' reel) ;
  1346. 'RESPRO' lreel ;
  1347. 'FINSI' ;
  1348. *
  1349. * End of procedure file APPEND
  1350. *
  1351. 'FINPROC' ;
  1352. *ENDPROCEDUR append
  1353. *
  1354. * Procédure donnant les valeurs des Nusselts de référence
  1355. *
  1356. 'DEBPROC' VAHL ;
  1357. 'ARGUMENT' Ra*'FLOTTANT' ;
  1358. lok = FAUX ;
  1359. iRa = 'ENTIER' ('+' Ra 0.5D0) ;
  1360. 'SI' ('EGA' iRa 1000) ;
  1361. lok = VRAI ;
  1362. Nu = 1.118 ;
  1363. 'FINSI' ;
  1364. 'SI' ('EGA' iRa 10000) ;
  1365. lok = VRAI ;
  1366. Nu = 2.243 ;
  1367. 'FINSI' ;
  1368. 'SI' ('EGA' iRa 100000) ;
  1369. lok = VRAI ;
  1370. Nu = 4.519 ;
  1371. 'FINSI' ;
  1372. 'SI' ('EGA' iRa 1000000) ;
  1373. lok = VRAI ;
  1374. Nu = 8.800 ;
  1375. 'FINSI' ;
  1376. 'SI' ('NON' lok) ;
  1377. cherr = 'CHAINE' 'Pas de sol tabulee pour Ra = ' Ra ;
  1378. 'ERREUR' cherr ;
  1379. 'FINSI' ;
  1380. 'RESPRO' Nu ;
  1381. 'FINPROC' ;
  1382. *
  1383. * Calcul de l'incrément vitesse-pression-temperature
  1384. * NS incompressible + Boussinesq
  1385. *
  1386. 'DEBPROC' SOLAPP ;
  1387. 'ARGUMENT' _mt*'MAILLAGE' ;
  1388. 'ARGUMENT' inco*'CHPOINT' ;
  1389. *
  1390. * Vitesse-pression
  1391. *
  1392. *
  1393. mlapx = GLAPN _mt discg 'UX' discv 'FX' discv cdifu ;
  1394. mlapx = '*' mlapx -1.D0 ;
  1395. mlapy = 'CHANGER' 'INCO' mlapx ('MOTS' 'UX') ('MOTS' 'UY')
  1396. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1397. mcnvx = GUGRAD _mt discg 'UX' discv 'FX' discv inco mxpri discv
  1398. ccnvu ;
  1399. mcnvy = 'CHANGER' 'INCO' mcnvx ('MOTS' 'UX') ('MOTS' 'UY')
  1400. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1401. 'SI' lsupg ;
  1402. mdecx = GDECENT 2 _mt discg 'UX' discv 'FX' discv inco mxpri discv
  1403. ('*' csupg ccnvu) cdifu 2.D0 ;
  1404. mdecy = 'CHANGER' 'INCO' mdecx ('MOTS' 'UX') ('MOTS' 'UY')
  1405. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1406. 'FINSI' ;
  1407. mbbt = GBBT _mt discg discv discp -1. ;
  1408. * Régularisation de pression
  1409. mp = GMASS _mt discg 'LX' discp 'FLX' discp ('*' ap -1.D0) ;
  1410. * Terme source
  1411. * fbou = GMASS _mt discg 'T' disct 'FY' discv ('/' Ra Pr) inco ;
  1412. mbou = GMASS _mt discg 'T' disct 'FY' discv cbouu ;
  1413. mbou = '*' mbou -1.D0 ;
  1414. mmasx = GMASS _mt discg 'UX' discv 'FX' discv
  1415. ('*' nx 1.D0) ;
  1416. mmasy = 'CHANGER' 'INCO' mlapx ('MOTS' 'UX') ('MOTS' 'UY')
  1417. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1418. * Blocage vitesse
  1419. mblov = 'BLOQUE' 'DEPL' bor ;
  1420. * Température
  1421. mlapt = GLAPN _mt discg 'T' disct 'Q' disct cdift ;
  1422. mlapt = '*' mlapt -1.D0 ;
  1423. mcnvt = GUGRAD _mt discg 'T' disct 'Q' disct inco mxpri discv ccnvt ;
  1424. 'SI' lsupg ;
  1425. mdect = GDECENT 2 _mt discg 'T' disct 'Q' disct inco mxpri discv
  1426. ('*' csupg ccnvt) cdift 2.D0 ;
  1427. 'FINSI' ;
  1428. * Blocage température
  1429. mblotg = 'BLOQUE' 'T' gau ;
  1430. fblotg = 'DEPIMPOSE' mblotg 0.5D0 ;
  1431. mblotd = 'BLOQUE' 'T' dro ;
  1432. fblotd = 'DEPIMPOSE' mblotd -0.5D0 ;
  1433. *
  1434. mphy = mlapx 'ET' mlapy 'ET' mcnvx 'ET' mcnvy 'ET' mbbt 'ET' mbou
  1435. 'ET' mblov 'ET' mlapt 'ET' mcnvt 'ET' mblotg 'ET' mblotd ;
  1436. 'SI' lsupg ;
  1437. mphy = mphy 'ET' mdecx 'ET' mdecy 'ET' mdect ;
  1438. 'FINSI' ;
  1439. mtot = mphy 'ET' mp 'ET' mmasx 'ET' mmasy ;
  1440. *
  1441. ftot = '-' (fblotg '+' fblotd) ('*' mphy inc) ;
  1442. *
  1443. incr = 'KRES' mtot ftot ;
  1444. 'RESPRO' incr ;
  1445. 'FINPROC' ;
  1446. *
  1447. * Calcul du nombre de Nusselt en paroi gauche et droite
  1448. *
  1449. 'DEBPROC' CALCNUSS ;
  1450. 'ARGUMENT' inco*'CHPOINT' ;
  1451. mlapt = GLAPN _mt discg 'T' disct 'Q' disct cdift ;
  1452. mlapt = '*' mlapt -1.D0 ;
  1453. mcnvt = GUGRAD _mt discg 'T' disct 'Q' disct inco mxpri discv ccnvt ;
  1454. 'SI' lsupg ;
  1455. mdect = GDECENT 2 _mt discg 'T' disct 'Q' disct inco mxpri discv
  1456. ('*' csupg ccnvt) cdift 2.D0 ;
  1457. 'FINSI' ;
  1458. mtot = mlapt 'ET' mcnvt ;
  1459. 'SI' lsupg ;
  1460. mtot = mtot 'ET' mdect ;
  1461. 'FINSI' ;
  1462. fres = '*' ('*' mtot inco) -1.D0 ;
  1463. 'SI' (graph 'ET' debug) ;
  1464. tit = 'CHAINE' 'Valeur du résidu en température' ;
  1465. 'TRACER' fres _mt 'TITR' tit ;
  1466. 'FINSI' ;
  1467. fresgau = 'REDU' fres gau ;
  1468. fresdro = 'REDU' fres dro ;
  1469. nusgau = 'MAXIMUM' ('RESULT' fresgau) ;
  1470. nusdro = 'MAXIMUM' ('RESULT' fresdro) ;
  1471. nusgau = '/' nusgau cdift ;
  1472. nusdro = '/' nusdro cdift ;
  1473. 'RESPRO' nusgau nusdro ;
  1474. 'FINPROC' ;
  1475. *
  1476. * Calcul de la métrique : on utilise une combinaison de :
  1477. * grad v : gradtv et (grad T)^2 pour réaliser l'adaptation
  1478. *
  1479. 'DEBPROC' TGDENT ;
  1480. 'ARGUMENT' _mt*'MAILLAGE' ;
  1481. 'ARGUMENT' vit*'CHPOINT' ;
  1482. 'ARGUMENT' tem*'CHPOINT' ;
  1483. 'ARGUMENT' beta*'FLOTTANT' ;
  1484. * Volume des éléments
  1485. vmtl = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. c1 c1 ;
  1486. vmt = 'MAXIMUM' ('RESULT' vmtl) ;
  1487. discc = 'CSTE' ;
  1488. *
  1489. * Calcul de la dissipation thermique
  1490. *
  1491. fdtxi = GLAPN _mt discg 'UX' discv 'UX' discv cdifu vit vit ;
  1492. fdtyi = GLAPN _mt discg 'UY' discv 'UY' discv cdifu vit vit ;
  1493. fdtxi = '*' fdtxi -1. ;
  1494. fdtyi = '*' fdtyi -1. ;
  1495. fdtx = '/' fdtxi vmtl ;
  1496. fdty = '/' fdtyi vmtl ;
  1497. fdt = '+' fdtx fdty ;
  1498. 'SI' lsupgm ;
  1499. fdecxi = GDECENT 2 _mt discg 'UX' discv 'UX' discv vit mxpri discv
  1500. ('*' csupg ccnvu) cdifu 2.D0 vit vit ;
  1501. fdecyi = GDECENT 2 _mt discg 'UY' discv 'UY' discv vit mxpri discv
  1502. ('*' csupg ccnvu) cdifu 2.D0 vit vit ;
  1503. fdecx = '/' fdecxi vmtl ;
  1504. fdecy = '/' fdecyi vmtl ;
  1505. fdec = '+' fdecx fdecy ;
  1506. 'FINSI' ;
  1507. 'SI' (graph 'ET' debug) ;
  1508. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1509. tit = 'CHAINE' 'Dissipation thermique' ;
  1510. 'TRACER' rescal $mb 'TITR' tit ;
  1511. 'SI' lsupg ;
  1512. rescal = 'KCHA' $mt fdec 'CHAM' ;
  1513. tit = 'CHAINE' 'Dissipation numérique' ;
  1514. 'TRACER' rescal $mb 'TITR' tit ;
  1515. 'FINSI' ;
  1516. 'FINSI' ;
  1517. 'SI' lsupg ;
  1518. fdt = '+' fdt fdec ;
  1519. 'FINSI' ;
  1520. *
  1521. * Calcul du gradient de T au carré
  1522. *
  1523. fdqi = GLAPN _mt discg 'T' disct 'T' disct cdift tem tem ;
  1524. fdqi = '*' fdqi -1. ;
  1525. fdq = '/' fdqi vmtl ;
  1526. *
  1527. 'SI' (graph 'ET' debug) ;
  1528. rescal = 'KCHA' $mt fdq 'CHAM' ;
  1529. tit = 'CHAINE' 'Abs. grad T au carré' ;
  1530. 'TRACER' rescal $mb 'TITR' tit ;
  1531. 'FINSI' ;
  1532. *
  1533. * Scaling des dissipations
  1534. *
  1535. sfdti = GMASS _mt discg 'SCAL' 'CSTE' 'SCAL' 'CSTE' 1. fdt ;
  1536. mfdt = '/' ('MAXIMUM' ('RESULT' sfdti)) vmt ;
  1537. 'SI' verbose ;
  1538. 'MESSAGE' ('CHAINE' ' Diss. therm. moy. =' mfdt) ;
  1539. 'FINSI' ;
  1540. sfdqi = GMASS _mt discg 'SCAL' 'CSTE' 'SCAL' 'CSTE' 1. fdq ;
  1541. mfdq = '/' ('MAXIMUM' ('RESULT' sfdqi)) vmt ;
  1542. 'SI' verbose ;
  1543. 'MESSAGE' ('CHAINE' ' |gradT^2| moy. =' mfdq) ;
  1544. 'FINSI' ;
  1545. * D'où alpha :
  1546. alphat = '*' ('/' ('-' 1.D0 beta) beta) mfdt ;
  1547. alphaq = '*' ('/' ('-' 1.D0 beta) beta) mfdq ;
  1548. 'SI' ('ET' debug verbose) ;
  1549. 'MESSAGE' ('CHAINE' ' Alphat = ' alphat) ;
  1550. 'MESSAGE' ('CHAINE' ' Alphaq = ' alphaq) ;
  1551. 'FINSI' ;
  1552. fdt = '/' fdt alphat ;
  1553. fdq = '/' fdq alphaq ;
  1554. 'SI' (graph 'ET' debug) ;
  1555. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1556. tit = 'CHAINE' 'fdt scalé' ;
  1557. 'TRACER' rescal $mb 'TITR' tit ;
  1558. rescal = 'KCHA' $mt fdq 'CHAM' ;
  1559. tit = 'CHAINE' 'fdq scalé' ;
  1560. 'TRACER' rescal $mb 'TITR' tit ;
  1561. 'FINSI' ;
  1562. fdt = '+' fdt fdq ;
  1563. 'SI' (graph 'ET' debug) ;
  1564. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1565. tit = 'CHAINE' 'fdtotal' ;
  1566. 'TRACER' rescal $mb 'TITR' tit ;
  1567. 'FINSI' ;
  1568. *
  1569. * Calcul du gradient de la dissipation thermique et du tenseur directionnel
  1570. *
  1571. lmvit = 'MOTS' 'UX' 'UY' ;
  1572. mmgs = GMASS _mt discg lmvit discr lmvit discr 1. ;
  1573. gfdti = GGRADT _mt discg 'SCAL' 'CSTE' lmvit discr 1. fdt ;
  1574. *gfdt = '/' gfdti vmtl ;
  1575. gfdts = 'RESOUD' mmgs gfdti ;
  1576. gfdti = GMASS _mt discg lmvit discr lmvit 'CSTE' 1. gfdts ;
  1577. gfdt = '/' gfdti vmtl ;
  1578. 'SI' (graph 'ET' debug) ;
  1579. tit = 'CHAINE' 'Gradient de dissipation thermique ; i=' &bcl ;
  1580. vvit = 'VECT' gfdt 'DEPL' 'JAUN' ;
  1581. 'TRACER' vvit mt 'TITR' tit ;
  1582. 'FINSI' ;
  1583. *
  1584. * Lissage du gradient
  1585. *
  1586. 'SI' lissg ;
  1587. mms = GMASS _mt discg 'SCAL' discg 'SCAL' discr 1. c1 ;
  1588. gfdti = GMASS _mt discg lmvit 'CSTE' lmvit discr 1. gfdt ;
  1589. gfdts = '/' gfdti mms ;
  1590. gfdtsi = GMASS _mt discg lmvit discr lmvit 'CSTE' 1. gfdts ;
  1591. gfdt = '/' gfdtsi vmtl ;
  1592. 'SI' (graph 'ET' debug) ;
  1593. tit = 'CHAINE' 'Gradient apres lissage ; i=' &bcl ;
  1594. vvit = 'VECT' gfdt 'DEPL' 'JAUN' ;
  1595. 'TRACER' vvit mt 'TITR' tit ;
  1596. 'FINSI' ;
  1597. 'FINSI' ;
  1598. *
  1599. nfdt = 'PSCAL' gfdt gfdt lmvit lmvit ;
  1600. snfdt = '**' nfdt 0.5D0 ;
  1601. msnfdt = 'MAXIMUM' snfdt ;
  1602. 'SI' ('<' msnfdt 1.D-100) ;
  1603. binf = 1.D0 ;
  1604. 'SINON' ;
  1605. binf = '*' msnfdt 1.D-10 ;
  1606. 'FINSI' ;
  1607. snfdt = '+' snfdt binf ;
  1608. sgfdt = '/' gfdt snfdt ;
  1609. 'SI' (graph 'ET' debug) ;
  1610. tit = 'CHAINE' 'Gddt mis a lechelle ; i=' &bcl ;
  1611. vvit = 'VECT' sgfdt 'DEPL' 'JAUN' ;
  1612. 'TRACER' vvit mt 'TITR' tit ;
  1613. 'FINSI' ;
  1614. td11 = '*' sgfdt sgfdt ('MOTS' 'UX') ('MOTS' 'UX') ('MOTS' 'SCAL') ;
  1615. td22 = '*' sgfdt sgfdt ('MOTS' 'UY') ('MOTS' 'UY') ('MOTS' 'SCAL') ;
  1616. td12 = '*' sgfdt sgfdt ('MOTS' 'UX') ('MOTS' 'UY') ('MOTS' 'SCAL') ;
  1617. * D'où le tenseur
  1618. gxx = '**' fdt 2 ;
  1619. vdim = 'VALEUR' 'DIME' ;
  1620. limgd2 = '**' limgd 2 ;
  1621. gd1 = '**' gxx ('/' 1.D0 vdim) ;
  1622. gd2 = '-' ('**' ('+' gd1 1.) vdim) 1. ;
  1623. *
  1624. * Considération pour les calculs de ngd :
  1625. * en 1D : gd1 = gd2, la partie anisotrope doit s'annuler
  1626. *
  1627. gdb = '-' ('*' ('**' ('+' gd1 1.) delta)
  1628. ('**' ('+' gd2 1.) ('-' 1. delta))) 1. ;
  1629. gda = '-' ('**' ('+' gd1 1.) delta) 1. ;
  1630. dgd = '-' gdb gda ;
  1631. *
  1632. 'SI' (graph 'ET' debug) ;
  1633. rescal = 'KCHA' $mt ('**' gda 0.5D0) 'CHAM' ;
  1634. tit = 'CHAINE' 'Partie isotrope de ladaptation' ;
  1635. 'TRACER' rescal $mb 'TITR' tit ;
  1636. rescal = 'KCHA' $mt ('**' dgd 0.5D0) 'CHAM' ;
  1637. tit = 'CHAINE' 'Partie anisotrope de ladaptation' ;
  1638. 'TRACER' rescal $mb 'TITR' tit ;
  1639. 'FINSI' ;
  1640. *
  1641. * Limitation des valeurs supérieures
  1642. *
  1643. * de la partie isotrope
  1644. m1 = 'MASQUE' gda 'INFERIEUR' limgd2 ;
  1645. m0 = '*' ('-' m1 1.) -1. ;
  1646. gda = '+' ('*' m1 gda) ('*' m0 limgd2) ;
  1647. * de la partie anisotrope
  1648. gdb = gda '+' dgd ;
  1649. m1 = 'MASQUE' gdb 'INFERIEUR' limgd2 ;
  1650. m0 = '*' ('-' m1 1.) -1. ;
  1651. gdb = '+' ('*' m1 gdb) ('*' m0 limgd2) ;
  1652. dgd = '-' gdb gda ;
  1653. 'SI' (graph 'ET' debug) ;
  1654. rescal = 'KCHA' $mt ('**' gda 0.5D0) 'CHAM' ;
  1655. tit = 'CHAINE' 'Partie isotrope de ladaptation apres lim' ;
  1656. 'TRACER' rescal $mb 'TITR' tit ;
  1657. rescal = 'KCHA' $mt ('**' dgd 0.5D0) 'CHAM' ;
  1658. tit = 'CHAINE' 'Partie anisotrope de ladaptation apres lim' ;
  1659. 'TRACER' rescal $mb 'TITR' tit ;
  1660. 'FINSI' ;
  1661. *
  1662. * Le tenseur
  1663. *
  1664. g11 = 'NOMC' 'G11' (gda '+' ('*' dgd td11) '+' 1.D0) ;
  1665. g22 = 'NOMC' 'G22' (gda '+' ('*' dgd td22) '+' 1.D0) ;
  1666. g12 = 'NOMC' 'G12' ('*' dgd td12) ;
  1667. gtot = g11 '+' g22 '+' g12 ;
  1668. *
  1669. 'RESPRO' gtot fdt ;
  1670. 'FINPROC' ;
  1671. *
  1672. * Début du jeu de donnés
  1673. *
  1674. 'OPTION' 'DIME' 2 ;
  1675. 'SI' ('NON' interact) ;
  1676. 'OPTION' 'TRAC' 'PSC' ;
  1677. 'SINON' ;
  1678. 'OPTION' 'TRAC' 'X' ;
  1679. 'FINSI' ;
  1680. *
  1681. * Maillage
  1682. *
  1683. * Paramètres d'adaptation :
  1684. * beta :
  1685. * 0. pas d'adaptation ;
  1686. * 0.5 la moitié des mailles dans les régions où le paramètre de
  1687. * contrôle est grand
  1688. * 1. toutes les mailles dans les régions où le paramètre de
  1689. * contrôle est grand
  1690. * Usuellement, 0.5 < beta < 0.8
  1691. * lissd : lissage de la dissipation thermique
  1692. * limfdt : limitation de la dissipation thermique
  1693. * on limite les valeurs qui dépassent (moy. fdt) * limfdt
  1694. * limgd : limitation de la diagonale du tenseur métrique
  1695. * on limite les valeurs qui dépassent limgd
  1696. * delta : 0.D0 adaptation totalement anisotrope
  1697. * 1.D0 adaptation totalement isotrope
  1698. * omi : relaxation de l'incrément vitesse-pression-temperature
  1699. * omd : relaxation de l'incrément de déplacement du maillage
  1700. * theta et gamma : paramètres de l'adapteur de DEDU ADAP
  1701. om = 0.9D0 ;
  1702. omi = om ;
  1703. omd = om ;
  1704. 'OPTI' 'ELEM' 'QUA8' ;
  1705. 'SI' complet ;
  1706. nx = 15 ; ny = 15 ;
  1707. cvg = 2.D-3 ; nitmax = 85 ;
  1708. lRa = 'PROG' 1.D3 1.D4 1.D5 1.D6 ;
  1709. Pr = 0.71 ;
  1710. * Ici, sans adaptation , ca marche mieux aux Rayleigh faible
  1711. * Mais pour les deux Rayleigh les plus forts, il faut adapter...
  1712. lerrnu = 'PROG' 2.D-3 4.D-3 3.D-3 2.D-4 ;
  1713. adap = VRAI ;
  1714. beta = 0.7D0 ; lissd = FAUX ; limfdt = 7.D0 ;
  1715. theta = 0.5D0 ; gamma = 2.D0 ;
  1716. lissg = FAUX ; limgd = 15.D0 ;
  1717. delta = 1.D0 ;
  1718. 'SINON' ;
  1719. nx = 10 ; ny = 10 ;
  1720. cvg = 5.D-3 ; nitmax = 50 ;
  1721. lRa = 'PROG' 1.D3 1.D4 1.D5 ;
  1722. Pr = 0.71 ;
  1723. * Ici, ca marche aussi bien sans adaptation :)
  1724. * Les critères pour adapter ne sont sans doute pas les meilleurs...
  1725. lerrnu = 'PROG' 4.D-3 6.D-3 6.D-3 ;
  1726. adap = VRAI ;
  1727. beta = 0.7D0 ;
  1728. theta = 0.5D0 ; gamma = 2.D0 ;
  1729. lissg = FAUX ; limgd = 15.D0 ;
  1730. * delta = 0.75D0 ;
  1731. delta = 1.D0 ;
  1732. 'FINSI' ;
  1733. lerrnuc = 'PROG' ;
  1734. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  1735. bas = 'DROIT' nx pA pB ; dro = 'DROIT' ny pB pC ;
  1736. hau = 'DROIT' nx pC pD ; gau = 'DROIT' ny pD pA ;
  1737. mt = 'DALLER' bas dro hau gau ;
  1738. bor = 'CONTOUR' mt ;
  1739. _mt = 'CHANGER' mt 'QUAF' ;
  1740. $mt = 'MODE' _mt 'NAVIER_STOKES' 'QUAF' ;
  1741. $mb = 'MODE' ('DOMA' $mt 'MAILLAGE') 'THERMIQUE' ;
  1742. mtl = 'CHANGER' mt 'LINEAIRE' ;
  1743. * Paramètres pour le décentrement
  1744. * lsupg : VRAI=decentrement
  1745. * csupg : facteur multiplicatif
  1746. lsupg = FAUX ;
  1747. lsupgm = FAUX ;
  1748. *csupg = 0.3D0 ;
  1749. csupg = 0.7D0 ;
  1750. *
  1751. * discg : discrétisation géométrique
  1752. * discv : discrétisation vitesse
  1753. * discp : discrétisation pression
  1754. * disct : discrétisation température
  1755. * discr : discrétisation pour la mise au sommet du paramètre de contrôle
  1756. discg = 'QUAF' ;
  1757. discv = 'QUAF' ;
  1758. discp = 'LINE' ;
  1759. disct = 'QUAF' ;
  1760. discr = 'LINE' ;
  1761. *
  1762. methgau = 'GAU7' ;
  1763. mxpri = 'MOTS' 'UX' 'UY' ;
  1764. mxdua = 'MOTS' 'FX' 'FY' ;
  1765. mppri = 'MOTS' 'LX' ;
  1766. mpdua = 'MOTS' 'FLX' ;
  1767. mtpri = 'MOTS' 'T' ;
  1768. mtdua = 'MOTS' 'Q' ;
  1769. * Limitation du déplacement
  1770. ldmax = FAUX ;
  1771. dmax = 1. ;
  1772. echvit = 1. ;
  1773. echtem = 1. ;
  1774. echdx = 1. ;
  1775. *
  1776. c1 = 'MANUEL' 'CHPO' mt ('MOTS' 'SCAL') ('PROG' 1.) ;
  1777. *
  1778. lok = VRAI ;
  1779. inc = '+' ('MANUEL' 'CHPO' gau 1 'T' 0.5)
  1780. ('MANUEL' 'CHPO' dro 1 'T' -0.5) ;
  1781. *
  1782. dRa = 'DIME' lRa ;
  1783. 'REPETER' iiRa dRa ;
  1784. Ra = 'EXTRAIRE' lRa &iiRa ;
  1785. * Physique
  1786. ccnvu = 1.D0 ;
  1787. cdifu = '**' ('/' Ra Pr) -0.5D0 ;
  1788. cbouu = 1.D0 ;
  1789. ccnvt = 1.D0 ;
  1790. cdift= '**' ('*' Ra Pr) -0.5D0 ;
  1791. * Numérique
  1792. ap= 1.D-4 ;
  1793. *
  1794. * Résumé du cas
  1795. *
  1796. 'SAUTER' 1 'LIGN' ;
  1797. 'MESSAGE' ('CHAINE' '***********************************') ;
  1798. 'MESSAGE' ('CHAINE' 'Résumé du cas : ') ;
  1799. 'MESSAGE' ('CHAINE' 'Nombre de maille = ' nx ' x ' ny) ;
  1800. 'MESSAGE' ('CHAINE' 'Rayleigh = ' Ra) ;
  1801. 'MESSAGE' ('CHAINE' 'Param. adaptation = ' beta) ;
  1802. 'MESSAGE' ('CHAINE' '***********************************') ;
  1803. *
  1804. * Algorithme
  1805. *
  1806. 'REPETER' bcl nitmax ;
  1807. 'SI' verbose ;
  1808. 'MESSAGE' ('CHAINE' 'Itération : ' &bcl ) ;
  1809. 'FINSI' ;
  1810. * Calcul des champs
  1811. dinc = SOLAPP _mt inc ;
  1812. inc = inc '+' ('*' dinc omi) ;
  1813. vit = 'EXCO' mxpri inc ;
  1814. pre = 'EXCO' mppri inc ;
  1815. tem = 'EXCO' mtpri inc ;
  1816. dvit = 'EXCO' mxpri dinc ;
  1817. dtem = 'EXCO' mtpri dinc ;
  1818. nusgau nusdro = calcnuss tem ;
  1819. 'SI' verbose ;
  1820. 'MESSAGE' ('CHAINE' ' Nusselt gauche : ' nusgau) ;
  1821. 'MESSAGE' ('CHAINE' ' Nusselt droite : ' nusdro) ;
  1822. 'FINSI' ;
  1823. echvit = '/' ('MAXIMUM' vit 'ABS') ('*' omi 2.0D0) ;
  1824. 'SI' verbose ;
  1825. 'MESSAGE' ('CHAINE' ' Echelle vitesse : ' echvit) ;
  1826. 'FINSI' ;
  1827. echdvit = '/' ('MAXIMUM' dvit 'ABS') echvit ;
  1828. echdtem = '/' ('MAXIMUM' dtem 'ABS') echtem ;
  1829. 'SI' verbose ;
  1830. 'MESSAGE' ('CHAINE' ' Echelle increment vitesse : ' echdvit) ;
  1831. 'MESSAGE' ('CHAINE' ' Echelle increment tempera : ' echdtem) ;
  1832. 'FINSI' ;
  1833. *
  1834. 'SI' graph ;
  1835. 'SI' debug ;
  1836. tit = 'CHAINE' 'Vitesse ; i=' &bcl ;
  1837. vvit = 'VECT' ('/' 0.8 ('*' echvit nx)) vit 'DEPL' 'JAUN' ;
  1838. 'TRACER' vvit _mt 'TITR' tit ;
  1839. tit = 'CHAINE' 'Pression ; i=' &bcl ;
  1840. 'TRACER' pre mtl 'TITR' tit ;
  1841. tit = 'CHAINE' 'Temperature ; i=' &bcl ;
  1842. 'TRACER' tem _mt 'TITR' tit ;
  1843. 'FINSI' ;
  1844. 'FINSI' ;
  1845. *
  1846. * Calcul du champ de déplacement
  1847. *
  1848. * Construction de la métrique
  1849. 'SI' adap ;
  1850. tdcd fdt = TGDENT _mt vit tem beta ;
  1851. 'FINSI' ;
  1852. 'SI' graph ;
  1853. rescal = tem ;
  1854. vvit = 'VECT' ('/' 0.8D0 ('*' echvit nx)) vit
  1855. 'DEPL' 'JAUN' ;
  1856. tit = 'CHAINE' 'Temp. + Vitesse ; i=' &bcl ' ; Ra='
  1857. Ra ;
  1858. 'SI' debug ;
  1859. 'TRACER' rescal vvit _mt 'TITR' tit ;
  1860. 'SINON' ;
  1861. 'TRACER' rescal vvit _mt 'TITR' tit 'NCLK' ;
  1862. 'FINSI' ;
  1863. 'FINSI' ;
  1864. 'SI' adap ;
  1865. * Champ de déplacement
  1866. mblox = 'BLOQUE' 'UX' (gau 'ET' dro) ;
  1867. mbloy = 'BLOQUE' 'UY' (bas 'ET' hau) ;
  1868. mblo = mblox 'ET' mbloy ;
  1869. dep = 'DEDU' 'ADAP' _mt mblo 'DISG' discg
  1870. 'METR' tdcd 'CSTE' 'THET' theta 'GAMM' gamma
  1871. 'NITM' 1 'METG' methgau ;
  1872. *
  1873. echdep = '/' ('MAXIMUM' dep 'ABS') echdx ;
  1874. 'SI' verbose ;
  1875. 'MESSAGE' ('CHAINE' ' Echelle des depl. : ' echdep) ;
  1876. 'FINSI' ;
  1877. *
  1878. 'SI' ldmax ;
  1879. 'SI' ('>' echdep dmax) ;
  1880. fdep = '/' dmax echdep ;
  1881. dep = '*' dep fdep ;
  1882. 'FINSI' ;
  1883. 'SI' verbose ;
  1884. 'MESSAGE'
  1885. ('CHAINE' ' Echelle des depl. apres lim : ' echdep) ;
  1886. 'FINSI' ;
  1887. 'FINSI' ;
  1888. dep = '*' dep omd ;
  1889. crit2 = '<' echdep cvg ;
  1890. 'SI' ('NON' crit2) ;
  1891. 'FORME' dep ;
  1892. 'FINSI' ;
  1893. ciso = DEADUTIL 'QISO' _mt discg 'GAU7' tdcd 'CSTE' ;
  1894. cequ = DEADUTIL 'QEQU' _mt discg 'GAU7' tdcd 'CSTE' ;
  1895. maciso = 'MAXIMUM' ciso ; miciso = 'MINIMUM' ciso ;
  1896. macequ = 'MAXIMUM' cequ ; micequ = 'MINIMUM' cequ ;
  1897. 'SI' verbose ;
  1898. 'MESSAGE' ('CHAINE'
  1899. ' CISO : max. = ' maciso ' min. = ' miciso) ;
  1900. 'MESSAGE' ('CHAINE'
  1901. ' CEQU : max. = ' macequ ' min. = ' micequ) ;
  1902. 'FINSI' ;
  1903. 'SI' (graph 'ET' debug) ;
  1904. cliso = 'KCHA' $mt ciso 'CHAM' ;
  1905. tit = 'CHAINE' 'Isotropie ; i=' &bcl ' ; Re=' Re ;
  1906. 'TRACER' cliso $mb 'TITR' tit ;
  1907. clequ = 'KCHA' $mt cequ 'CHAM' ;
  1908. tit = 'CHAINE' 'Equidis. ; i=' &bcl ' ; Re=' Re ;
  1909. 'TRACER' clequ $mb 'TITR' tit ;
  1910. 'FINSI' ;
  1911. 'FINSI' ;
  1912. * Critères de convergence :
  1913. * sur les incréments
  1914. crit1 = '<' echdvit cvg ;
  1915. crit2 = '<' echdtem cvg ;
  1916. critt = crit1 'ET' crit2 ;
  1917. 'SI' adap ;
  1918. crit3 = '<' echdep cvg ;
  1919. critt = critt 'ET' crit3 ;
  1920. 'FINSI' ;
  1921. 'SI' critt ;
  1922. 'QUITTER' bcl ;
  1923. 'FINSI' ;
  1924. 'FIN' bcl ;
  1925. 'SI' ('ET' graph interact) ;
  1926. tit = 'CHAINE' 'Vitesse+Tem ; Ra=' Ra ;
  1927. vvit = 'VECT' ('/' 0.8D0 ('*' echvit nx)) vit 'DEPL' 'JAUN' ;
  1928. 'TRACER' tem _mt vvit 'TITR' tit ;
  1929. 'FINSI' ;
  1930. *
  1931. * Test sur le Nusselt
  1932. *
  1933. nusref = VAHL Ra ;
  1934. nusgau nusdro = calcnuss tem ;
  1935. 'MESSAGE' ('CHAINE' ' Nusselt de réference : ' nusref) ;
  1936. 'MESSAGE' ('CHAINE' ' Nusselt gauche : ' nusgau) ;
  1937. 'MESSAGE' ('CHAINE' ' Nusselt droite : ' nusdro) ;
  1938. tsymnu = 'EGA' ('ABS' nusgau) ('ABS' nusdro) 1.D-4 ;
  1939. 'SI' ('NON' tsymnu) ;
  1940. cherr = 'CHAINE'
  1941. '!!! Erreur, on aurait voulu |nusgau| = |nusdro|' ;
  1942. 'ERREUR' cherr ;
  1943. 'FINSI' ;
  1944. lok = 'ET' lok tsymnu ;
  1945. errnu = '/' ('ABS' ('-' ('ABS' nusgau) nusref)) ('ABS' nusref) ;
  1946. 'MESSAGE' ('CHAINE' ' errnu = ' errnu) ;
  1947. lerrnuc = 'ET' lerrnuc ('PROG' errnu) ;
  1948. vernur = 'EXTRAIRE' lerrnu &iiRa ;
  1949. ternu = ('<' errnu vernur) ;
  1950. 'SI' ('NON' ternu) ;
  1951. cherr = 'CHAINE' '!!! Erreur, on aurait voulu errnu < ' vernur ;
  1952. 'MESSAGE' cherr ;
  1953. 'FINSI' ;
  1954. lok = 'ET' lok ternu ;
  1955. 'FIN' iiRa ;
  1956. *
  1957. * Fin du jeu de donnees
  1958. *
  1959. 'SAUTER' 2 'LIGNE' ;
  1960. 'SI' lok ;
  1961. 'MESSAGE' 'Tout sest bien passe' ;
  1962. 'SINON' ;
  1963. 'MESSAGE' 'Il y a eu des erreurs' ;
  1964. 'FINSI' ;
  1965. 'SAUTER' 2 'LIGNE' ;
  1966. 'SI' interact ;
  1967. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  1968. 'FINSI' ;
  1969. 'SI' ('NON' lok) ;
  1970. 'ERREUR' 5 ;
  1971. 'FINSI' ;
  1972. *
  1973. * End of dgibi file DEDU_VAHL
  1974. *
  1975. 'FIN' ;
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  

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