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. *BEGINPROCEDUR gmail
  1354. ************************************************************************
  1355. * NOM : GMAIL
  1356. * DESCRIPTION : Extrait le maillage des points supports des degrés
  1357. * de liberté d'une inconnue
  1358. *
  1359. * Cette procédure est identique à GMAIL2 qui paraissait
  1360. * mieux que l'ancienne GMAIL
  1361. *
  1362. *
  1363. *
  1364. * LANGAGE : GIBIANE-CAST3M
  1365. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1366. * mél : gounand@semt2.smts.cea.fr
  1367. **********************************************************************
  1368. * VERSION : v1, 20/04/2012, version initiale
  1369. * HISTORIQUE :
  1370. * HISTORIQUE :
  1371. ************************************************************************
  1372. *
  1373. *
  1374. 'DEBPROC' GMAIL ;
  1375. 'ARGUMENT' _mt/'MAILLAGE' ;
  1376. 'ARGU' tdisc/'TABLE' ;
  1377. xmt = 'EXIS' _mt ;
  1378. xtdisc = 'EXIS' tdisc ;
  1379. *
  1380. 'SI' ('NON' xmt) ;
  1381. 'SI' ('NON' xtdisc) ;
  1382. 'ARGUMENT' tdisc*'TABLE' ;
  1383. xtdisc = vrai ;
  1384. 'FINS' ;
  1385. 'ARGUMENT' nmt*'MOT' ;
  1386. 'SI' ('NON' ('EXISTE' tdisc nmt)) ;
  1387. cherr = 'CHAINE' 'Le domaine ' nmt ' nest pas defini dans'
  1388. ' la table de discretisation' ;
  1389. 'ERREUR' cherr ;
  1390. 'FINSI' ;
  1391. _mt = tdisc . nmt . 'QUAF' ;
  1392. 'FINSI' ;
  1393. *
  1394. 'ARGU' dua*'MOT' ;
  1395. 'SI' ('NON' xtdisc) ;
  1396. discdua = dua ;
  1397. * nomdua = dua ;
  1398. 'SINO' ;
  1399. * nomdua = dua ;
  1400. discdua = tdisc . dua . 'DISC' ;
  1401. 'FINS' ;
  1402. *
  1403. *'ARGUMENT' nomdua*'MOT ' ;
  1404. *
  1405. * Raccourcis du 2019/01/25
  1406. * Est-ce vraiment astucieux ?...
  1407. *
  1408. 'SI' ('EGA' discdua 'QUAF') ;
  1409. 'RESP' _mt ;
  1410. 'QUIT' GMAIL ;
  1411. 'FINS' ;
  1412. 'SI' ('EGA' discdua 'LINE') ;
  1413. 'RESP' ('CHAN' _mt 'LINE') ;
  1414. 'QUIT' GMAIL ;
  1415. 'FINS' ;
  1416. 'SI' ('EGA' discdua 'QUAI') ;
  1417. 'RESP' ('CHAN' _mt 'QUAD') ;
  1418. 'QUIT' GMAIL ;
  1419. 'FINS' ;
  1420. *
  1421. mdim = DEADUTIL 'DIMM' _mt ;
  1422. *vdim = 'VALEUR' 'DIME' ;
  1423. 'SI' ('EGA' discdua 'LINM') ;
  1424. discdua = 'CSTE' ;
  1425. 'FINSI' ;
  1426. *
  1427. numop = 1 ; numder = mdim ; numvar = 1 ; numdat = 0 ; numcof = 0 ;
  1428. A = ININLIN numop numvar numdat numcof numder ;
  1429. A . 'VAR' . 1 . 'VALEUR' = 0. ;
  1430. *
  1431. A . 1 . 1 . 0 = 0 ;
  1432. *
  1433. B = ININLIN numop numvar numdat numcof numder ;
  1434. B . 'VAR' . 1 . 'NOMDDL' = 'DUMM' ;
  1435. B . 'VAR' . 1 . 'DISC' = discdua ;
  1436. *
  1437. B . 1 . 1 . 0 = 0 ;
  1438. *
  1439. gm = 'NLIN' 'LINE' _mt A B 'ERF1' 'GAU1' ;
  1440. dom = 'EXTRAIRE' gm 'MAIL' ;
  1441. *
  1442. 'RESPRO' dom ;
  1443. 'FINPROC' ;
  1444. *
  1445. * End of procedure file GMAIL
  1446. *
  1447. *ENDPROCEDUR gmail
  1448. *
  1449. * Procédure donnant les valeurs des Nusselts de référence
  1450. *
  1451. 'DEBPROC' VAHL ;
  1452. 'ARGUMENT' Ra*'FLOTTANT' ;
  1453. lok = FAUX ;
  1454. iRa = 'ENTIER' ('+' Ra 0.5D0) ;
  1455. 'SI' ('EGA' iRa 1000) ;
  1456. lok = VRAI ;
  1457. Nu = 1.118 ;
  1458. 'FINSI' ;
  1459. 'SI' ('EGA' iRa 10000) ;
  1460. lok = VRAI ;
  1461. Nu = 2.243 ;
  1462. 'FINSI' ;
  1463. 'SI' ('EGA' iRa 100000) ;
  1464. lok = VRAI ;
  1465. Nu = 4.519 ;
  1466. 'FINSI' ;
  1467. 'SI' ('EGA' iRa 1000000) ;
  1468. lok = VRAI ;
  1469. Nu = 8.800 ;
  1470. 'FINSI' ;
  1471. 'SI' ('NON' lok) ;
  1472. cherr = 'CHAINE' 'Pas de sol tabulee pour Ra = ' Ra ;
  1473. 'ERREUR' cherr ;
  1474. 'FINSI' ;
  1475. 'RESPRO' Nu ;
  1476. 'FINPROC' ;
  1477. *
  1478. * Calcul de l'incrément vitesse-pression-temperature
  1479. * NS incompressible + Boussinesq
  1480. *
  1481. 'DEBPROC' SOLAPP ;
  1482. 'ARGUMENT' _mt*'MAILLAGE' ;
  1483. 'ARGUMENT' inco*'CHPOINT' ;
  1484. *
  1485. * Vitesse-pression
  1486. *
  1487. *
  1488. mlapx = GLAPN _mt discg 'UX' discv 'FX' discv cdifu ;
  1489. mlapx = '*' mlapx -1.D0 ;
  1490. mlapy = 'CHANGER' 'INCO' mlapx ('MOTS' 'UX') ('MOTS' 'UY')
  1491. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1492. mcnvx = GUGRAD _mt discg 'UX' discv 'FX' discv inco mxpri discv
  1493. ccnvu ;
  1494. mcnvy = 'CHANGER' 'INCO' mcnvx ('MOTS' 'UX') ('MOTS' 'UY')
  1495. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1496. 'SI' lsupg ;
  1497. mdecx = GDECENT 2 _mt discg 'UX' discv 'FX' discv inco mxpri discv
  1498. ('*' csupg ccnvu) cdifu 2.D0 ;
  1499. mdecy = 'CHANGER' 'INCO' mdecx ('MOTS' 'UX') ('MOTS' 'UY')
  1500. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1501. 'FINSI' ;
  1502. mbbt = GBBT _mt discg discv discp -1. ;
  1503. * Régularisation de pression
  1504. mp = GMASS _mt discg 'LX' discp 'FLX' discp ('*' ap -1.D0) ;
  1505. * Terme source
  1506. * fbou = GMASS _mt discg 'T' disct 'FY' discv ('/' Ra Pr) inco ;
  1507. mbou = GMASS _mt discg 'T' disct 'FY' discv cbouu ;
  1508. mbou = '*' mbou -1.D0 ;
  1509. mmasx = GMASS _mt discg 'UX' discv 'FX' discv
  1510. ('*' nx 1.D0) ;
  1511. mmasy = 'CHANGER' 'INCO' mlapx ('MOTS' 'UX') ('MOTS' 'UY')
  1512. ('MOTS' 'FX') ('MOTS' 'FY') ;
  1513. * Blocage vitesse
  1514. mblov = 'BLOQUE' 'DEPL' bor ;
  1515. * Température
  1516. mlapt = GLAPN _mt discg 'T' disct 'Q' disct cdift ;
  1517. mlapt = '*' mlapt -1.D0 ;
  1518. mcnvt = GUGRAD _mt discg 'T' disct 'Q' disct inco mxpri discv ccnvt ;
  1519. 'SI' lsupg ;
  1520. mdect = GDECENT 2 _mt discg 'T' disct 'Q' disct inco mxpri discv
  1521. ('*' csupg ccnvt) cdift 2.D0 ;
  1522. 'FINSI' ;
  1523. * Blocage température
  1524. mblotg = 'BLOQUE' 'T' gau ;
  1525. fblotg = 'DEPIMPOSE' mblotg 0.5D0 ;
  1526. mblotd = 'BLOQUE' 'T' dro ;
  1527. fblotd = 'DEPIMPOSE' mblotd -0.5D0 ;
  1528. *
  1529. mphy = mlapx 'ET' mlapy 'ET' mcnvx 'ET' mcnvy 'ET' mbbt 'ET' mbou
  1530. 'ET' mblov 'ET' mlapt 'ET' mcnvt 'ET' mblotg 'ET' mblotd ;
  1531. 'SI' lsupg ;
  1532. mphy = mphy 'ET' mdecx 'ET' mdecy 'ET' mdect ;
  1533. 'FINSI' ;
  1534. mtot = mphy 'ET' mp 'ET' mmasx 'ET' mmasy ;
  1535. *
  1536. ftot = '-' (fblotg '+' fblotd) ('*' mphy inc) ;
  1537. *
  1538. incr = 'KRES' mtot ftot ;
  1539. 'RESPRO' incr ;
  1540. 'FINPROC' ;
  1541. *
  1542. * Calcul du nombre de Nusselt en paroi gauche et droite
  1543. *
  1544. 'DEBPROC' CALCNUSS ;
  1545. 'ARGUMENT' inco*'CHPOINT' ;
  1546. mlapt = GLAPN _mt discg 'T' disct 'Q' disct cdift ;
  1547. mlapt = '*' mlapt -1.D0 ;
  1548. mcnvt = GUGRAD _mt discg 'T' disct 'Q' disct inco mxpri discv ccnvt ;
  1549. 'SI' lsupg ;
  1550. mdect = GDECENT 2 _mt discg 'T' disct 'Q' disct inco mxpri discv
  1551. ('*' csupg ccnvt) cdift 2.D0 ;
  1552. 'FINSI' ;
  1553. mtot = mlapt 'ET' mcnvt ;
  1554. 'SI' lsupg ;
  1555. mtot = mtot 'ET' mdect ;
  1556. 'FINSI' ;
  1557. fres = '*' ('*' mtot inco) -1.D0 ;
  1558. 'SI' (graph 'ET' debug) ;
  1559. tit = 'CHAINE' 'Valeur du résidu en température' ;
  1560. 'TRACER' fres _mt 'TITR' tit ;
  1561. 'FINSI' ;
  1562. fresgau = 'REDU' fres gau ;
  1563. fresdro = 'REDU' fres dro ;
  1564. nusgau = 'MAXIMUM' ('RESULT' fresgau) ;
  1565. nusdro = 'MAXIMUM' ('RESULT' fresdro) ;
  1566. nusgau = '/' nusgau cdift ;
  1567. nusdro = '/' nusdro cdift ;
  1568. 'RESPRO' nusgau nusdro ;
  1569. 'FINPROC' ;
  1570. *
  1571. * Calcul de la métrique : on utilise une combinaison de :
  1572. * grad v : gradtv et (grad T)^2 pour réaliser l'adaptation
  1573. *
  1574. 'DEBPROC' TGDENT ;
  1575. 'ARGUMENT' _mt*'MAILLAGE' ;
  1576. 'ARGUMENT' vit*'CHPOINT' ;
  1577. 'ARGUMENT' tem*'CHPOINT' ;
  1578. 'ARGUMENT' beta*'FLOTTANT' ;
  1579. * Volume des éléments
  1580. vmtl = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. c1 c1 ;
  1581. vmt = 'MAXIMUM' ('RESULT' vmtl) ;
  1582. discc = 'CSTE' ;
  1583. *
  1584. * Calcul de la dissipation thermique
  1585. *
  1586. fdtxi = GLAPN _mt discg 'UX' discv 'UX' discv cdifu vit vit ;
  1587. fdtyi = GLAPN _mt discg 'UY' discv 'UY' discv cdifu vit vit ;
  1588. fdtxi = '*' fdtxi -1. ;
  1589. fdtyi = '*' fdtyi -1. ;
  1590. fdtx = '/' fdtxi vmtl ;
  1591. fdty = '/' fdtyi vmtl ;
  1592. fdt = '+' fdtx fdty ;
  1593. 'SI' lsupgm ;
  1594. fdecxi = GDECENT 2 _mt discg 'UX' discv 'UX' discv vit mxpri discv
  1595. ('*' csupg ccnvu) cdifu 2.D0 vit vit ;
  1596. fdecyi = GDECENT 2 _mt discg 'UY' discv 'UY' discv vit mxpri discv
  1597. ('*' csupg ccnvu) cdifu 2.D0 vit vit ;
  1598. fdecx = '/' fdecxi vmtl ;
  1599. fdecy = '/' fdecyi vmtl ;
  1600. fdec = '+' fdecx fdecy ;
  1601. 'FINSI' ;
  1602. 'SI' (graph 'ET' debug) ;
  1603. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1604. tit = 'CHAINE' 'Dissipation thermique' ;
  1605. 'TRACER' rescal $mb 'TITR' tit ;
  1606. 'SI' lsupg ;
  1607. rescal = 'KCHA' $mt fdec 'CHAM' ;
  1608. tit = 'CHAINE' 'Dissipation numérique' ;
  1609. 'TRACER' rescal $mb 'TITR' tit ;
  1610. 'FINSI' ;
  1611. 'FINSI' ;
  1612. 'SI' lsupg ;
  1613. fdt = '+' fdt fdec ;
  1614. 'FINSI' ;
  1615. *
  1616. * Calcul du gradient de T au carré
  1617. *
  1618. fdqi = GLAPN _mt discg 'T' disct 'T' disct cdift tem tem ;
  1619. fdqi = '*' fdqi -1. ;
  1620. fdq = '/' fdqi vmtl ;
  1621. *
  1622. 'SI' (graph 'ET' debug) ;
  1623. rescal = 'KCHA' $mt fdq 'CHAM' ;
  1624. tit = 'CHAINE' 'Abs. grad T au carré' ;
  1625. 'TRACER' rescal $mb 'TITR' tit ;
  1626. 'FINSI' ;
  1627. *
  1628. * Scaling des dissipations
  1629. *
  1630. sfdti = GMASS _mt discg 'SCAL' 'CSTE' 'SCAL' 'CSTE' 1. fdt ;
  1631. mfdt = '/' ('MAXIMUM' ('RESULT' sfdti)) vmt ;
  1632. 'SI' verbose ;
  1633. 'MESSAGE' ('CHAINE' ' Diss. therm. moy. =' mfdt) ;
  1634. 'FINSI' ;
  1635. sfdqi = GMASS _mt discg 'SCAL' 'CSTE' 'SCAL' 'CSTE' 1. fdq ;
  1636. mfdq = '/' ('MAXIMUM' ('RESULT' sfdqi)) vmt ;
  1637. 'SI' verbose ;
  1638. 'MESSAGE' ('CHAINE' ' |gradT^2| moy. =' mfdq) ;
  1639. 'FINSI' ;
  1640. * D'où alpha :
  1641. alphat = '*' ('/' ('-' 1.D0 beta) beta) mfdt ;
  1642. alphaq = '*' ('/' ('-' 1.D0 beta) beta) mfdq ;
  1643. 'SI' ('ET' debug verbose) ;
  1644. 'MESSAGE' ('CHAINE' ' Alphat = ' alphat) ;
  1645. 'MESSAGE' ('CHAINE' ' Alphaq = ' alphaq) ;
  1646. 'FINSI' ;
  1647. fdt = '/' fdt alphat ;
  1648. fdq = '/' fdq alphaq ;
  1649. 'SI' (graph 'ET' debug) ;
  1650. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1651. tit = 'CHAINE' 'fdt scalé' ;
  1652. 'TRACER' rescal $mb 'TITR' tit ;
  1653. rescal = 'KCHA' $mt fdq 'CHAM' ;
  1654. tit = 'CHAINE' 'fdq scalé' ;
  1655. 'TRACER' rescal $mb 'TITR' tit ;
  1656. 'FINSI' ;
  1657. fdt = '+' fdt fdq ;
  1658. 'SI' (graph 'ET' debug) ;
  1659. rescal = 'KCHA' $mt fdt 'CHAM' ;
  1660. tit = 'CHAINE' 'fdtotal' ;
  1661. 'TRACER' rescal $mb 'TITR' tit ;
  1662. 'FINSI' ;
  1663. *
  1664. * Calcul du gradient de la dissipation thermique et du tenseur directionnel
  1665. *
  1666. lmvit = 'MOTS' 'UX' 'UY' ;
  1667. mmgs = GMASS _mt discg lmvit discr lmvit discr 1. ;
  1668. gfdti = GGRADT _mt discg 'SCAL' 'CSTE' lmvit discr 1. fdt ;
  1669. *gfdt = '/' gfdti vmtl ;
  1670. gfdts = 'RESOUD' mmgs gfdti ;
  1671. gfdti = GMASS _mt discg lmvit discr lmvit 'CSTE' 1. gfdts ;
  1672. gfdt = '/' gfdti vmtl ;
  1673. 'SI' (graph 'ET' debug) ;
  1674. tit = 'CHAINE' 'Gradient de dissipation thermique ; i=' &bcl ;
  1675. vvit = 'VECT' gfdt 'DEPL' 'JAUN' ;
  1676. 'TRACER' vvit mt 'TITR' tit ;
  1677. 'FINSI' ;
  1678. *
  1679. * Lissage du gradient
  1680. *
  1681. 'SI' lissg ;
  1682. mms = GMASS _mt discg 'SCAL' discg 'SCAL' discr 1. c1 ;
  1683. gfdti = GMASS _mt discg lmvit 'CSTE' lmvit discr 1. gfdt ;
  1684. gfdts = '/' gfdti mms ;
  1685. gfdtsi = GMASS _mt discg lmvit discr lmvit 'CSTE' 1. gfdts ;
  1686. gfdt = '/' gfdtsi vmtl ;
  1687. 'SI' (graph 'ET' debug) ;
  1688. tit = 'CHAINE' 'Gradient apres lissage ; i=' &bcl ;
  1689. vvit = 'VECT' gfdt 'DEPL' 'JAUN' ;
  1690. 'TRACER' vvit mt 'TITR' tit ;
  1691. 'FINSI' ;
  1692. 'FINSI' ;
  1693. *
  1694. nfdt = 'PSCAL' gfdt gfdt lmvit lmvit ;
  1695. snfdt = '**' nfdt 0.5D0 ;
  1696. msnfdt = 'MAXIMUM' snfdt ;
  1697. 'SI' ('<' msnfdt 1.D-100) ;
  1698. binf = 1.D0 ;
  1699. 'SINON' ;
  1700. binf = '*' msnfdt 1.D-10 ;
  1701. 'FINSI' ;
  1702. snfdt = '+' snfdt binf ;
  1703. sgfdt = '/' gfdt snfdt ;
  1704. 'SI' (graph 'ET' debug) ;
  1705. tit = 'CHAINE' 'Gddt mis a lechelle ; i=' &bcl ;
  1706. vvit = 'VECT' sgfdt 'DEPL' 'JAUN' ;
  1707. 'TRACER' vvit mt 'TITR' tit ;
  1708. 'FINSI' ;
  1709. td11 = '*' sgfdt sgfdt ('MOTS' 'UX') ('MOTS' 'UX') ('MOTS' 'SCAL') ;
  1710. td22 = '*' sgfdt sgfdt ('MOTS' 'UY') ('MOTS' 'UY') ('MOTS' 'SCAL') ;
  1711. td12 = '*' sgfdt sgfdt ('MOTS' 'UX') ('MOTS' 'UY') ('MOTS' 'SCAL') ;
  1712. * D'où le tenseur
  1713. gxx = '**' fdt 2 ;
  1714. vdim = 'VALEUR' 'DIME' ;
  1715. limgd2 = '**' limgd 2 ;
  1716. gd1 = '**' gxx ('/' 1.D0 vdim) ;
  1717. gd2 = '-' ('**' ('+' gd1 1.) vdim) 1. ;
  1718. *
  1719. * Considération pour les calculs de ngd :
  1720. * en 1D : gd1 = gd2, la partie anisotrope doit s'annuler
  1721. *
  1722. gdb = '-' ('*' ('**' ('+' gd1 1.) delta)
  1723. ('**' ('+' gd2 1.) ('-' 1. delta))) 1. ;
  1724. gda = '-' ('**' ('+' gd1 1.) delta) 1. ;
  1725. dgd = '-' gdb gda ;
  1726. *
  1727. 'SI' (graph 'ET' debug) ;
  1728. rescal = 'KCHA' $mt ('**' gda 0.5D0) 'CHAM' ;
  1729. tit = 'CHAINE' 'Partie isotrope de ladaptation' ;
  1730. 'TRACER' rescal $mb 'TITR' tit ;
  1731. rescal = 'KCHA' $mt ('**' dgd 0.5D0) 'CHAM' ;
  1732. tit = 'CHAINE' 'Partie anisotrope de ladaptation' ;
  1733. 'TRACER' rescal $mb 'TITR' tit ;
  1734. 'FINSI' ;
  1735. *
  1736. * Limitation des valeurs supérieures
  1737. *
  1738. * de la partie isotrope
  1739. m1 = 'MASQUE' gda 'INFERIEUR' limgd2 ;
  1740. m0 = '*' ('-' m1 1.) -1. ;
  1741. gda = '+' ('*' m1 gda) ('*' m0 limgd2) ;
  1742. * de la partie anisotrope
  1743. gdb = gda '+' dgd ;
  1744. m1 = 'MASQUE' gdb 'INFERIEUR' limgd2 ;
  1745. m0 = '*' ('-' m1 1.) -1. ;
  1746. gdb = '+' ('*' m1 gdb) ('*' m0 limgd2) ;
  1747. dgd = '-' gdb gda ;
  1748. 'SI' (graph 'ET' debug) ;
  1749. rescal = 'KCHA' $mt ('**' gda 0.5D0) 'CHAM' ;
  1750. tit = 'CHAINE' 'Partie isotrope de ladaptation apres lim' ;
  1751. 'TRACER' rescal $mb 'TITR' tit ;
  1752. rescal = 'KCHA' $mt ('**' dgd 0.5D0) 'CHAM' ;
  1753. tit = 'CHAINE' 'Partie anisotrope de ladaptation apres lim' ;
  1754. 'TRACER' rescal $mb 'TITR' tit ;
  1755. 'FINSI' ;
  1756. *
  1757. * Le tenseur
  1758. *
  1759. g11 = 'NOMC' 'G11' (gda '+' ('*' dgd td11) '+' 1.D0) ;
  1760. g22 = 'NOMC' 'G22' (gda '+' ('*' dgd td22) '+' 1.D0) ;
  1761. g21 = 'NOMC' 'G21' ('*' dgd td12) ;
  1762. gtot = g11 '+' g22 '+' g21 ;
  1763. *
  1764. 'RESPRO' gtot fdt ;
  1765. 'FINPROC' ;
  1766. *
  1767. * Début du jeu de donnés
  1768. *
  1769. 'OPTION' 'DIME' 2 ;
  1770. 'SI' ('NON' interact) ;
  1771. 'OPTION' 'TRAC' 'PSC' ;
  1772. 'SINON' ;
  1773. 'OPTION' 'TRAC' 'X' ;
  1774. 'FINSI' ;
  1775. *
  1776. * Maillage
  1777. *
  1778. * Paramètres d'adaptation :
  1779. * beta :
  1780. * 0. pas d'adaptation ;
  1781. * 0.5 la moitié des mailles dans les régions où le paramètre de
  1782. * contrôle est grand
  1783. * 1. toutes les mailles dans les régions où le paramètre de
  1784. * contrôle est grand
  1785. * Usuellement, 0.5 < beta < 0.8
  1786. * lissd : lissage de la dissipation thermique
  1787. * limfdt : limitation de la dissipation thermique
  1788. * on limite les valeurs qui dépassent (moy. fdt) * limfdt
  1789. * limgd : limitation de la diagonale du tenseur métrique
  1790. * on limite les valeurs qui dépassent limgd
  1791. * delta : 0.D0 adaptation totalement anisotrope
  1792. * 1.D0 adaptation totalement isotrope
  1793. * omi : relaxation de l'incrément vitesse-pression-temperature
  1794. * omd : relaxation de l'incrément de déplacement du maillage
  1795. * theta et gamma : paramètres de l'adapteur de DEDU ADAP
  1796. om = 0.9D0 ;
  1797. omi = om ;
  1798. omd = om ;
  1799. 'OPTI' 'ELEM' 'QUA8' ;
  1800. 'SI' complet ;
  1801. nx = 15 ; ny = 15 ;
  1802. cvg = 2.D-3 ; nitmax = 85 ;
  1803. lRa = 'PROG' 1.D3 1.D4 1.D5 1.D6 ;
  1804. Pr = 0.71 ;
  1805. * Ici, sans adaptation , ca marche mieux aux Rayleigh faible
  1806. * Mais pour les deux Rayleigh les plus forts, il faut adapter...
  1807. * lerrnu = 'PROG' 2.D-3 4.D-3 3.D-3 2.D-4 ;
  1808. * Les erreurs de référence augmentent suite correction bug fiche 10552
  1809. lerrnu = 'PROG' 2.D-3 4.D-3 3.D-3 2.D-3 ;
  1810. adap = VRAI ;
  1811. beta = 0.7D0 ; lissd = FAUX ; limfdt = 7.D0 ;
  1812. theta = 0.5D0 ; gamma = 2.D0 ;
  1813. lissg = FAUX ; limgd = 15.D0 ;
  1814. delta = 1.D0 ;
  1815. 'SINON' ;
  1816. nx = 10 ; ny = 10 ;
  1817. cvg = 5.D-3 ; nitmax = 50 ;
  1818. lRa = 'PROG' 1.D3 1.D4 1.D5 ;
  1819. Pr = 0.71 ;
  1820. * Ici, ca marche aussi bien sans adaptation :)
  1821. * Les critères pour adapter ne sont sans doute pas les meilleurs...
  1822. lerrnu = 'PROG' 4.D-3 6.D-3 6.D-3 ;
  1823. adap = VRAI ;
  1824. beta = 0.7D0 ;
  1825. theta = 0.5D0 ; gamma = 2.D0 ;
  1826. lissg = FAUX ; limgd = 15.D0 ;
  1827. * delta = 0.75D0 ;
  1828. delta = 1.D0 ;
  1829. 'FINSI' ;
  1830. lerrnuc = 'PROG' ;
  1831. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  1832. bas = 'DROIT' nx pA pB ; dro = 'DROIT' ny pB pC ;
  1833. hau = 'DROIT' nx pC pD ; gau = 'DROIT' ny pD pA ;
  1834. mt = 'DALLER' bas dro hau gau ;
  1835. bor = 'CONTOUR' mt ;
  1836. _mt = 'CHANGER' mt 'QUAF' ;
  1837. $mt = 'MODE' _mt 'NAVIER_STOKES' 'QUAF' ;
  1838. $mb = 'MODE' ('DOMA' $mt 'MAILLAGE') 'THERMIQUE' ;
  1839. mtl = 'CHANGER' mt 'LINEAIRE' ;
  1840. * Paramètres pour le décentrement
  1841. * lsupg : VRAI=decentrement
  1842. * csupg : facteur multiplicatif
  1843. lsupg = FAUX ;
  1844. lsupgm = FAUX ;
  1845. *csupg = 0.3D0 ;
  1846. csupg = 0.7D0 ;
  1847. *
  1848. * discg : discrétisation géométrique
  1849. * discv : discrétisation vitesse
  1850. * discp : discrétisation pression
  1851. * disct : discrétisation température
  1852. * discr : discrétisation pour la mise au sommet du paramètre de contrôle
  1853. discg = 'QUAF' ;
  1854. discv = 'QUAF' ;
  1855. discp = 'LINE' ;
  1856. disct = 'QUAF' ;
  1857. discr = 'LINE' ;
  1858. *
  1859. methgau = 'GAU7' ;
  1860. mxpri = 'MOTS' 'UX' 'UY' ;
  1861. mxdua = 'MOTS' 'FX' 'FY' ;
  1862. mppri = 'MOTS' 'LX' ;
  1863. mpdua = 'MOTS' 'FLX' ;
  1864. mtpri = 'MOTS' 'T' ;
  1865. mtdua = 'MOTS' 'Q' ;
  1866. * Limitation du déplacement
  1867. ldmax = FAUX ;
  1868. dmax = 1. ;
  1869. echvit = 1. ;
  1870. echtem = 1. ;
  1871. echdx = 1. ;
  1872. *
  1873. *bug detecte fiche 10552 c1 = 'MANUEL' 'CHPO' mt ('MOTS' 'SCAL') ('PROG' 1.) ;
  1874. c1 = 'MANUEL' 'CHPO' _mt ('MOTS' 'SCAL') ('PROG' 1.) ;
  1875. *
  1876. lok = VRAI ;
  1877. mailv = GMAIL _mt discv ;
  1878. inc = 'MANU' 'CHPO' mailv mxpri ('PROG' 0. 0.) ;
  1879. inc = inc '+' ('MANUEL' 'CHPO' gau 1 'T' 0.5)
  1880. '+' ('MANUEL' 'CHPO' dro 1 'T' -0.5) ;
  1881. *
  1882. dRa = 'DIME' lRa ;
  1883. 'REPETER' iiRa dRa ;
  1884. Ra = 'EXTRAIRE' lRa &iiRa ;
  1885. * Physique
  1886. ccnvu = 1.D0 ;
  1887. cdifu = '**' ('/' Ra Pr) -0.5D0 ;
  1888. cbouu = 1.D0 ;
  1889. ccnvt = 1.D0 ;
  1890. cdift= '**' ('*' Ra Pr) -0.5D0 ;
  1891. * Numérique
  1892. ap= 1.D-4 ;
  1893. *
  1894. * Résumé du cas
  1895. *
  1896. 'SAUTER' 1 'LIGN' ;
  1897. 'MESSAGE' ('CHAINE' '***********************************') ;
  1898. 'MESSAGE' ('CHAINE' 'Résumé du cas : ') ;
  1899. 'MESSAGE' ('CHAINE' 'Nombre de maille = ' nx ' x ' ny) ;
  1900. 'MESSAGE' ('CHAINE' 'Rayleigh = ' Ra) ;
  1901. 'MESSAGE' ('CHAINE' 'Param. adaptation = ' beta) ;
  1902. 'MESSAGE' ('CHAINE' '***********************************') ;
  1903. *
  1904. * Algorithme
  1905. *
  1906. 'REPETER' bcl nitmax ;
  1907. 'SI' verbose ;
  1908. 'MESSAGE' ('CHAINE' 'Itération : ' &bcl ) ;
  1909. 'FINSI' ;
  1910. * Calcul des champs
  1911. dinc = SOLAPP _mt inc ;
  1912. inc = inc '+' ('*' dinc omi) ;
  1913. vit = 'EXCO' mxpri inc ;
  1914. pre = 'EXCO' mppri inc ;
  1915. tem = 'EXCO' mtpri inc ;
  1916. dvit = 'EXCO' mxpri dinc ;
  1917. dtem = 'EXCO' mtpri dinc ;
  1918. *bug fiche 10552 : le calcul du Nusselt dépend aussi de la vitesse.
  1919. * nusgau nusdro = calcnuss tem ;
  1920. nusgau nusdro = calcnuss inc ;
  1921. 'SI' verbose ;
  1922. 'MESSAGE' ('CHAINE' ' Nusselt gauche : ' nusgau) ;
  1923. 'MESSAGE' ('CHAINE' ' Nusselt droite : ' nusdro) ;
  1924. 'FINSI' ;
  1925. echvit = '/' ('MAXIMUM' vit 'ABS') ('*' omi 2.0D0) ;
  1926. 'SI' verbose ;
  1927. 'MESSAGE' ('CHAINE' ' Echelle vitesse : ' echvit) ;
  1928. 'FINSI' ;
  1929. echdvit = '/' ('MAXIMUM' dvit 'ABS') echvit ;
  1930. echdtem = '/' ('MAXIMUM' dtem 'ABS') echtem ;
  1931. 'SI' verbose ;
  1932. 'MESSAGE' ('CHAINE' ' Echelle increment vitesse : ' echdvit) ;
  1933. 'MESSAGE' ('CHAINE' ' Echelle increment tempera : ' echdtem) ;
  1934. 'FINSI' ;
  1935. *
  1936. 'SI' graph ;
  1937. 'SI' debug ;
  1938. tit = 'CHAINE' 'Vitesse ; i=' &bcl ;
  1939. vvit = 'VECT' ('/' 0.8 ('*' echvit nx)) vit 'DEPL' 'JAUN' ;
  1940. 'TRACER' vvit _mt 'TITR' tit ;
  1941. tit = 'CHAINE' 'Pression ; i=' &bcl ;
  1942. 'TRACER' pre mtl 'TITR' tit ;
  1943. tit = 'CHAINE' 'Temperature ; i=' &bcl ;
  1944. 'TRACER' tem _mt 'TITR' tit ;
  1945. 'FINSI' ;
  1946. 'FINSI' ;
  1947. *
  1948. * Calcul du champ de déplacement
  1949. *
  1950. * Construction de la métrique
  1951. 'SI' adap ;
  1952. tdcd fdt = TGDENT _mt vit tem beta ;
  1953. 'FINSI' ;
  1954. 'SI' graph ;
  1955. rescal = tem ;
  1956. vvit = 'VECT' ('/' 0.8D0 ('*' echvit nx)) vit
  1957. 'DEPL' 'JAUN' ;
  1958. tit = 'CHAINE' 'Temp. + Vitesse ; i=' &bcl ' ; Ra='
  1959. Ra ;
  1960. 'SI' debug ;
  1961. 'TRACER' rescal vvit _mt 'TITR' tit ;
  1962. 'SINON' ;
  1963. 'TRACER' rescal vvit _mt 'TITR' tit 'NCLK' ;
  1964. 'FINSI' ;
  1965. 'FINSI' ;
  1966. 'SI' adap ;
  1967. * Champ de déplacement
  1968. mblox = 'BLOQUE' 'UX' (gau 'ET' dro) ;
  1969. mbloy = 'BLOQUE' 'UY' (bas 'ET' hau) ;
  1970. mblo = mblox 'ET' mbloy ;
  1971. dep = 'DEDU' 'ADAP' _mt mblo 'DISG' discg
  1972. 'METR' tdcd 'CSTE' 'THET' theta 'GAMM' gamma
  1973. 'NITM' 1 'METG' methgau ;
  1974. *
  1975. echdep = '/' ('MAXIMUM' dep 'ABS') echdx ;
  1976. 'SI' verbose ;
  1977. 'MESSAGE' ('CHAINE' ' Echelle des depl. : ' echdep) ;
  1978. 'FINSI' ;
  1979. *
  1980. 'SI' ldmax ;
  1981. 'SI' ('>' echdep dmax) ;
  1982. fdep = '/' dmax echdep ;
  1983. dep = '*' dep fdep ;
  1984. 'FINSI' ;
  1985. 'SI' verbose ;
  1986. 'MESSAGE'
  1987. ('CHAINE' ' Echelle des depl. apres lim : ' echdep) ;
  1988. 'FINSI' ;
  1989. 'FINSI' ;
  1990. dep = '*' dep omd ;
  1991. crit2 = '<' echdep cvg ;
  1992. 'SI' ('NON' crit2) ;
  1993. 'FORME' dep ;
  1994. 'FINSI' ;
  1995. ciso = DEADUTIL 'QISO' _mt discg 'GAU7' tdcd 'CSTE' ;
  1996. cequ = DEADUTIL 'QEQU' _mt discg 'GAU7' tdcd 'CSTE' ;
  1997. maciso = 'MAXIMUM' ciso ; miciso = 'MINIMUM' ciso ;
  1998. macequ = 'MAXIMUM' cequ ; micequ = 'MINIMUM' cequ ;
  1999. 'SI' verbose ;
  2000. 'MESSAGE' ('CHAINE'
  2001. ' CISO : max. = ' maciso ' min. = ' miciso) ;
  2002. 'MESSAGE' ('CHAINE'
  2003. ' CEQU : max. = ' macequ ' min. = ' micequ) ;
  2004. 'FINSI' ;
  2005. 'SI' (graph 'ET' debug) ;
  2006. cliso = 'KCHA' $mt ciso 'CHAM' ;
  2007. tit = 'CHAINE' 'Isotropie ; i=' &bcl ' ; Re=' Re ;
  2008. 'TRACER' cliso $mb 'TITR' tit ;
  2009. clequ = 'KCHA' $mt cequ 'CHAM' ;
  2010. tit = 'CHAINE' 'Equidis. ; i=' &bcl ' ; Re=' Re ;
  2011. 'TRACER' clequ $mb 'TITR' tit ;
  2012. 'FINSI' ;
  2013. 'FINSI' ;
  2014. * Critères de convergence :
  2015. * sur les incréments
  2016. crit1 = '<' echdvit cvg ;
  2017. crit2 = '<' echdtem cvg ;
  2018. critt = crit1 'ET' crit2 ;
  2019. 'SI' adap ;
  2020. crit3 = '<' echdep cvg ;
  2021. critt = critt 'ET' crit3 ;
  2022. 'FINSI' ;
  2023. 'SI' critt ;
  2024. 'QUITTER' bcl ;
  2025. 'FINSI' ;
  2026. 'FIN' bcl ;
  2027. 'SI' ('ET' graph interact) ;
  2028. tit = 'CHAINE' 'Vitesse+Tem ; Ra=' Ra ;
  2029. vvit = 'VECT' ('/' 0.8D0 ('*' echvit nx)) vit 'DEPL' 'JAUN' ;
  2030. 'TRACER' tem _mt vvit 'TITR' tit ;
  2031. 'FINSI' ;
  2032. *
  2033. * Test sur le Nusselt
  2034. *
  2035. nusref = VAHL Ra ;
  2036. *bug fiche 10552 : le calcul du Nusselt dépend aussi de la vitesse.
  2037. * nusgau nusdro = calcnuss tem ;
  2038. nusgau nusdro = calcnuss inc ;
  2039. 'MESSAGE' ('CHAINE' ' Nusselt de réference : ' nusref) ;
  2040. 'MESSAGE' ('CHAINE' ' Nusselt gauche : ' nusgau) ;
  2041. 'MESSAGE' ('CHAINE' ' Nusselt droite : ' nusdro) ;
  2042. tsymnu = 'EGA' ('ABS' nusgau) ('ABS' nusdro) 1.D-4 ;
  2043. 'SI' ('NON' tsymnu) ;
  2044. cherr = 'CHAINE'
  2045. '!!! Erreur, on aurait voulu |nusgau| = |nusdro|' ;
  2046. 'ERREUR' cherr ;
  2047. 'FINSI' ;
  2048. lok = 'ET' lok tsymnu ;
  2049. errnu = '/' ('ABS' ('-' ('ABS' nusgau) nusref)) ('ABS' nusref) ;
  2050. 'MESSAGE' ('CHAINE' ' errnu = ' errnu) ;
  2051. lerrnuc = 'ET' lerrnuc ('PROG' errnu) ;
  2052. vernur = 'EXTRAIRE' lerrnu &iiRa ;
  2053. ternu = ('<' errnu vernur) ;
  2054. 'SI' ('NON' ternu) ;
  2055. cherr = 'CHAINE' '!!! Erreur, on aurait voulu errnu < ' vernur ;
  2056. 'MESSAGE' cherr ;
  2057. 'FINSI' ;
  2058. lok = 'ET' lok ternu ;
  2059. 'FIN' iiRa ;
  2060. *
  2061. * Fin du jeu de donnees
  2062. *
  2063. 'SAUTER' 2 'LIGNE' ;
  2064. 'SI' lok ;
  2065. 'MESSAGE' 'Tout sest bien passe' ;
  2066. 'SINON' ;
  2067. 'MESSAGE' 'Il y a eu des erreurs' ;
  2068. 'FINSI' ;
  2069. 'SAUTER' 2 'LIGNE' ;
  2070. 'SI' interact ;
  2071. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  2072. 'FINSI' ;
  2073. 'SI' ('NON' lok) ;
  2074. 'ERREUR' 5 ;
  2075. 'FINSI' ;
  2076. *
  2077. * End of dgibi file DEDU_VAHL
  2078. *
  2079. 'FIN' ;
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  

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