Télécharger dedu_cl1d.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : dedu_cl1d.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTI' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : DEDU_CL1D
  7. * DESCRIPTION : Adaptation de maillage avec 'DEDU' 'ADAP' sur une
  8. * couche limite exponentielle 1D (équation de
  9. * convection-diffusion à fort Péclet)
  10. *
  11. *
  12. *
  13. *
  14. * LANGAGE : GIBIANE-CAST3M
  15. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  16. * mél : gounand@semt2.smts.cea.fr
  17. **********************************************************************
  18. * VERSION : v1, 26/03/2007, version initiale
  19. * HISTORIQUE : v1, 26/03/2007, création
  20. * HISTORIQUE :
  21. * HISTORIQUE :
  22. ************************************************************************
  23. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  24. * en cas de modification de ce sous-programme afin de faciliter
  25. * la maintenance !
  26. ************************************************************************
  27. *
  28. 'SAUTER' 2 'LIGNE' ;
  29. 'MESSAGE' ' Execution de dedu_cl1d.dgibi' ;
  30. 'SAUTER' 2 'LIGNE' ;
  31. *
  32. *
  33. *
  34. interact= FAUX ;
  35. graph = FAUX ;
  36. verbose = FAUX ;
  37. complet = FAUX ;
  38. debug = FAUX ;
  39. *
  40. *BEGINPROCEDUR gmass
  41. ************************************************************************
  42. * NOM : GMASS
  43. * DESCRIPTION : Une matrice de masse
  44. *
  45. *
  46. *
  47. * LANGAGE : GIBIANE-CAST3M
  48. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  49. * mél : gounand@semt2.smts.cea.fr
  50. **********************************************************************
  51. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  52. * VERSION : v1, 13/05/2004, version initiale
  53. * HISTORIQUE : v1, 13/05/2004, création
  54. * HISTORIQUE :
  55. * HISTORIQUE :
  56. ************************************************************************
  57. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  58. * en cas de modification de ce sous-programme afin de faciliter
  59. * la maintenance !
  60. ************************************************************************
  61. *
  62. *
  63. 'DEBPROC' GMASS ;
  64. 'ARGUMENT' _mt*'MAILLAGE' ;
  65. 'ARGUMENT' _smt/'MAILLAGE' ;
  66. 'ARGUMENT' gdisc*'MOT ' ;
  67. 'ARGUMENT' lnomt/'LISTMOTS' ;
  68. 'SI' ('NON' ('EXISTE' lnomt)) ;
  69. 'ARGUMENT' nomt*'MOT ' ;
  70. lnomt = 'MOTS' nomt ;
  71. 'FINSI' ;
  72. 'ARGUMENT' disct*'MOT ' ;
  73. 'ARGUMENT' lnomq/'LISTMOTS' ;
  74. 'SI' ('NON' ('EXISTE' lnomq)) ;
  75. 'ARGUMENT' nomq*'MOT ' ;
  76. lnomq = 'MOTS' nomq ;
  77. 'FINSI' ;
  78. 'ARGUMENT' discq*'MOT ' ;
  79. 'ARGUMENT' coef/'FLOTTANT' ;
  80. 'SI' ('NON' ('EXISTE' coef)) ;
  81. 'ARGUMENT' coef2/'CHPOINT ' ;
  82. 'SI' ('NON' ('EXISTE' coef2)) ;
  83. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  84. 'SINON' ;
  85. coef = coef2 ;
  86. 'ARGUMENT' discc*'MOT ' ;
  87. 'FINSI' ;
  88. 'SINON' ;
  89. discc = 'CSTE' ;
  90. 'FINSI' ;
  91. 'ARGUMENT' methgau/'MOT ' ;
  92. 'SI' ('NON' ('EXISTE' methgau)) ;
  93. methgau = 'GAU7' ;
  94. 'FINSI' ;
  95. 'ARGUMENT' chpop/'CHPOINT' ;
  96. 'ARGUMENT' chpod/'CHPOINT' ;
  97. *
  98. vdim = 'VALEUR' 'DIME' ;
  99. vmod = 'VALEUR' 'MODE' ;
  100. idim = 0 ;
  101. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  102. idim = 2 ;
  103. iaxi = FAUX ;
  104. 'FINSI' ;
  105. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  106. idim = 2 ;
  107. iaxi = VRAI ;
  108. 'FINSI' ;
  109. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  110. idim = 3 ;
  111. iaxi = FAUX ;
  112. 'FINSI' ;
  113. 'SI' ('EGA' vdim 1) ;
  114. idim = 1 ;
  115. iaxi = FAUX ;
  116. 'FINSI' ;
  117. 'SI' ('EGA' idim 0) ;
  118. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  119. 'FINSI' ;
  120. 'SI' iaxi ;
  121. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  122. 'FINSI' ;
  123. dlnomt = 'DIME' lnomt ; dlnomq = 'DIME' lnomq ;
  124. 'SI' ('NEG' dlnomt dlnomq) ;
  125. 'ERREUR' ('CHAINE' 'Pas le meme nombre dincos primales et duales');
  126. 'FINSI' ;
  127. * numop = 1 ;
  128. numop = dlnomt ;
  129. numder = idim ;
  130. numvar = dlnomt ;
  131. numdat = 1 ;
  132. numcof = 1 ;
  133. *
  134. A = ININLIN numop numvar numdat numcof numder ;
  135. 'REPETER' iilnomt dlnomt ;
  136. ilnomt = &iilnomt ;
  137. A . 'VAR' . ilnomt . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lnomt ilnomt) ;
  138. A . 'VAR' . ilnomt . 'DISC' = disct ;
  139. 'SI' ('EXISTE' chpop) ;
  140. A . 'VAR' . ilnomt . 'VALEUR' = chpop ;
  141. 'FINSI' ;
  142. 'FIN' iilnomt ;
  143. A . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  144. A . 'DAT' . 1 . 'DISC' = discc ;
  145. A . 'DAT' . 1 . 'VALEUR' = coef ;
  146. A . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  147. A . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  148. *
  149. 'REPETER' iilnomt dlnomt ;
  150. ilnomt = &iilnomt ;
  151. A . ilnomt . ilnomt . 0 = 'LECT' 1 ;
  152. 'FIN' iilnomt ;
  153. *
  154. 'SI' iaxi ;
  155. numdat = 1 ;
  156. numcof = 1 ;
  157. 'SINON' ;
  158. numdat = 0 ;
  159. numcof = 0 ;
  160. 'FINSI' ;
  161. B = ININLIN numop numvar numdat numcof numder ;
  162. 'REPETER' iilnomq dlnomq ;
  163. ilnomq = &iilnomq ;
  164. B . 'VAR' . ilnomq . 'NOMDDL' = 'MOTS' ('EXTRAIRE' lnomq ilnomq) ;
  165. B . 'VAR' . ilnomq . 'DISC' = discq ;
  166. 'SI' ('EXISTE' chpod) ;
  167. B . 'VAR' . ilnomq . 'VALEUR' = chpod ;
  168. 'FINSI' ;
  169. 'FIN' iilnomq ;
  170. *
  171. 'SI' iaxi ;
  172. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  173. B . 'DAT' . 1 . 'DISC' = gdisc ;
  174. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  175. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  176. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  177. 'FINSI' ;
  178. 'SI' iaxi ;
  179. 'REPETER' iilnomq dlnomq ;
  180. ilnomq = &iilnomq ;
  181. B . ilnomq . ilnomq . 0 = 'LECT' 1 ;
  182. 'FIN' iilnomq ;
  183. 'SINON' ;
  184. 'REPETER' iilnomq dlnomq ;
  185. ilnomq = &iilnomq ;
  186. B . ilnomq . ilnomq . 0 = 'LECT' ;
  187. 'FIN' iilnomq ;
  188. 'FINSI' ;
  189. *
  190. 'SI' ('EXISTE' _smt) ;
  191. mgmass = 'NLIN' gdisc _mt _smt A B methgau ;
  192. 'SINON' ;
  193. mgmass = 'NLIN' gdisc _mt A B methgau ;
  194. 'FINSI' ;
  195. *
  196. 'RESPRO' mgmass ;
  197. 'FINPROC' ;
  198. *
  199. * End of procedure file GMASS
  200. *
  201. *ENDPROCEDUR gmass
  202. *BEGINPROCEDUR glapn
  203. ************************************************************************
  204. * NOM : GLAPN
  205. * DESCRIPTION : Un laplacien scalaire
  206. *
  207. *
  208. *
  209. * LANGAGE : GIBIANE-CAST3M
  210. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  211. * mél : gounand@semt2.smts.cea.fr
  212. **********************************************************************
  213. * VERSION : v2, 14/03/2006, mise à jour NLIN évolué
  214. * VERSION : v1, 13/05/2004, version initiale
  215. * HISTORIQUE : v1, 13/05/2004, création
  216. * HISTORIQUE :
  217. * HISTORIQUE :
  218. ************************************************************************
  219. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  220. * en cas de modification de ce sous-programme afin de faciliter
  221. * la maintenance !
  222. ************************************************************************
  223. *
  224. *
  225. 'DEBPROC' GLAPN ;
  226. 'ARGUMENT' _mt*'MAILLAGE' ;
  227. 'ARGUMENT' gdisc*'MOT ' ;
  228. 'ARGUMENT' nomt*'MOT ' ;
  229. 'ARGUMENT' disct*'MOT ' ;
  230. 'ARGUMENT' nomq*'MOT ' ;
  231. 'ARGUMENT' discq*'MOT ' ;
  232. 'ARGUMENT' coef/'FLOTTANT' ;
  233. 'SI' ('NON' ('EXISTE' coef)) ;
  234. 'ARGUMENT' coef2/'CHPOINT ' ;
  235. 'SI' ('NON' ('EXISTE' coef2)) ;
  236. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  237. 'SINON' ;
  238. coef = coef2 ;
  239. 'ARGUMENT' discc*'MOT ' ;
  240. 'FINSI' ;
  241. 'SINON' ;
  242. discc = 'CSTE' ;
  243. 'FINSI' ;
  244. 'ARGUMENT' methgau/'MOT ' ;
  245. 'SI' ('NON' ('EXISTE' methgau)) ;
  246. methgau = 'GAU7' ;
  247. 'FINSI' ;
  248. 'ARGUMENT' chpop/'CHPOINT' ;
  249. 'ARGUMENT' chpod/'CHPOINT' ;
  250. *
  251. vdim = 'VALEUR' 'DIME' ;
  252. vmod = 'VALEUR' 'MODE' ;
  253. idim = 0 ;
  254. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  255. idim = 2 ;
  256. iaxi = FAUX ;
  257. 'FINSI' ;
  258. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  259. idim = 2 ;
  260. iaxi = VRAI ;
  261. 'FINSI' ;
  262. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  263. idim = 3 ;
  264. iaxi = FAUX ;
  265. 'FINSI' ;
  266. 'SI' ('EGA' vdim 1) ;
  267. idim = 1 ;
  268. iaxi = FAUX ;
  269. 'FINSI' ;
  270. 'SI' ('EGA' idim 0) ;
  271. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  272. 'FINSI' ;
  273. 'SI' iaxi ;
  274. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  275. 'FINSI' ;
  276. * Test bête...
  277. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT ') ;
  278. mincoef = 'MINIMUM' coef ;
  279. 'SINON' ;
  280. mincoef = coef ;
  281. 'FINSI' ;
  282. 'SI' ('<' mincoef 0.D0) ;
  283. 'ERREUR' 'Le coef (une viscosité) doit etre positive' ;
  284. 'FINSI' ;
  285. *
  286. 'SI' iaxi ;
  287. lcoef = 'MOTS' 'NURR' 'NUZZ' ;
  288. 'SINON' ;
  289. 'SI' ('EGA' idim 2) ;
  290. lcoef = 'MOTS' 'NUXX' 'NUYY' ;
  291. 'SINON' ;
  292. lcoef = 'MOTS' 'NUXX' 'NUYY' 'NUZZ' ;
  293. 'FINSI' ;
  294. 'FINSI' ;
  295. *
  296. ltens = FAUX ;
  297. 'SI' ('EGA' ('TYPE' coef) 'CHPOINT') ;
  298. ncomp = 'DIME' ('EXTRAIRE' coef 'COMP') ;
  299. 'SI' ('EGA' ncomp idim) ;
  300. ltens = VRAI ;
  301. 'FINSI' ;
  302. 'FINSI' ;
  303. *
  304. tcoef = 'TABLE' ;
  305. 'SI' ltens ;
  306. 'REPETER' iidim idim ;
  307. tcoef . &iidim = 'EXCO' ('EXTRAIRE' lcoef &iidim) coef ;
  308. 'FIN' iidim ;
  309. 'SINON' ;
  310. 'REPETER' iidim idim ;
  311. tcoef . &iidim = coef ;
  312. 'FIN' iidim ;
  313. 'FINSI' ;
  314. *
  315. numop = idim ;
  316. numder = idim ;
  317. mmt = 'MOTS' nomt ;
  318. mmq = 'MOTS' nomq ;
  319. numvar = 1 ;
  320. numdat = idim ;
  321. numcof = idim ;
  322. *
  323. A = ININLIN numop numvar numdat numcof numder ;
  324. A . 'VAR' . 1 . 'NOMDDL' = mmt ;
  325. A . 'VAR' . 1 . 'DISC' = disct ;
  326. 'SI' ('EXISTE' chpop) ;
  327. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  328. 'FINSI' ;
  329. 'REPETER' iidim idim ;
  330. A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' 'SCAL' ;
  331. A . 'DAT' . &iidim . 'DISC' = discc ;
  332. A . 'DAT' . &iidim . 'VALEUR' = tcoef . &iidim ;
  333. A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
  334. A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
  335. 'FIN' iidim ;
  336. *
  337. 'REPETER' iidim idim ;
  338. A . &iidim . 1 . &iidim = 'LECT' &iidim ;
  339. 'FIN' iidim ;
  340. *
  341. 'SI' iaxi ;
  342. numdat = 1 ;
  343. numcof = 1 ;
  344. 'SINON' ;
  345. numdat = 0 ;
  346. numcof = 0 ;
  347. 'FINSI' ;
  348. *
  349. B = ININLIN numop numvar numdat numcof numder ;
  350. B . 'VAR' . 1 . 'NOMDDL' = mmq ;
  351. B . 'VAR' . 1 . 'DISC' = discq ;
  352. 'SI' ('EXISTE' chpod) ;
  353. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  354. 'FINSI' ;
  355. 'SI' iaxi ;
  356. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  357. B . 'DAT' . 1 . 'DISC' = gdisc ;
  358. B . 'DAT' . 1 . 'VALEUR' = dprmt ;
  359. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  360. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  361. 'FINSI' ;
  362. *
  363. 'REPETER' iidim idim ;
  364. 'SI' iaxi ;
  365. B . &iidim . 1 . &iidim = 'LECT' 1 ;
  366. 'SINON' ;
  367. B . &iidim . 1 . &iidim = 'LECT' ;
  368. 'FINSI' ;
  369. 'FIN' iidim ;
  370. *
  371. mglapn = 'NLIN' gdisc _mt A B methgau ;
  372. * Integration par parties
  373. mglapn = '*' mglapn -1.D0 ;
  374. *
  375. 'RESPRO' mglapn ;
  376. 'FINPROC' ;
  377. *
  378. * End of procedure file GLAPN
  379. *
  380. *ENDPROCEDUR glapn
  381. *BEGINPROCEDUR gugrad
  382. ************************************************************************
  383. * NOM : GUGRAD
  384. * DESCRIPTION : U . grad
  385. *
  386. *
  387. *
  388. * LANGAGE : GIBIANE-CAST3M
  389. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  390. * mél : gounand@semt2.smts.cea.fr
  391. **********************************************************************
  392. * VERSION : v1, 13/05/2004, version initiale
  393. * HISTORIQUE : v1, 13/05/2004, création
  394. * HISTORIQUE :
  395. * HISTORIQUE :
  396. ************************************************************************
  397. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  398. * en cas de modification de ce sous-programme afin de faciliter
  399. * la maintenance !
  400. ************************************************************************
  401. *
  402. *
  403. 'DEBPROC' GUGRAD ;
  404. 'ARGUMENT' _mt*'MAILLAGE' ;
  405. 'ARGUMENT' gdisc*'MOT ' ;
  406. 'ARGUMENT' nomp*'MOT ' ;
  407. 'ARGUMENT' discp*'MOT ' ;
  408. 'ARGUMENT' nomd*'MOT ' ;
  409. 'ARGUMENT' discd*'MOT ' ;
  410. 'ARGUMENT' vtot*'CHPOINT ' ;
  411. 'ARGUMENT' vcomp*'LISTMOTS' ;
  412. 'ARGUMENT' discv*'MOT ' ;
  413. 'ARGUMENT' coef/'FLOTTANT' ;
  414. 'SI' ('NON' ('EXISTE' coef)) ;
  415. 'ARGUMENT' coef2/'CHPOINT ' ;
  416. 'SI' ('NON' ('EXISTE' coef2)) ;
  417. 'ERREUR' 'Il faut donner un coef FLOTTANT ou CHPOINT' ;
  418. 'SINON' ;
  419. coef = coef2 ;
  420. 'ARGUMENT' discc*'MOT ' ;
  421. 'FINSI' ;
  422. 'SINON' ;
  423. discc = 'CSTE' ;
  424. 'FINSI' ;
  425. 'ARGUMENT' methgau/'MOT ' ;
  426. 'SI' ('NON' ('EXISTE' methgau)) ;
  427. methgau = 'GAU7' ;
  428. 'FINSI' ;
  429. 'ARGUMENT' chpop/'CHPOINT' ;
  430. 'ARGUMENT' chpod/'CHPOINT' ;
  431. *
  432. vdim = 'VALEUR' 'DIME' ;
  433. vmod = 'VALEUR' 'MODE' ;
  434. idim = 0 ;
  435. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  436. idim = 2 ;
  437. iaxi = FAUX ;
  438. * Passé en argument désormais
  439. * vcomp = 'MOTS' 'UX' 'UY' ;
  440. 'FINSI' ;
  441. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  442. idim = 2 ;
  443. iaxi = VRAI ;
  444. * vcomp = 'MOTS' 'UR' 'UZ' ;
  445. 'FINSI' ;
  446. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  447. idim = 3 ;
  448. iaxi = FAUX ;
  449. * vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
  450. 'FINSI' ;
  451. 'SI' ('EGA' vdim 1) ;
  452. idim = 1 ;
  453. iaxi = FAUX ;
  454. 'FINSI' ;
  455. 'SI' ('EGA' idim 0) ;
  456. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  457. 'FINSI' ;
  458. 'SI' iaxi ;
  459. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  460. 'FINSI' ;
  461. *
  462. numop = 1 ;
  463. numder = idim ;
  464. mmp = 'MOTS' nomp ;
  465. mmd = 'MOTS' nomd ;
  466. numvar = 1 ;
  467. numdat = idim ;
  468. numcof = idim ;
  469. *
  470. A = ININLIN numop numvar numdat numcof numder ;
  471. A . 'VAR' . 1 . 'NOMDDL' = mmp ;
  472. A . 'VAR' . 1 . 'DISC' = discp ;
  473. 'SI' ('EXISTE' chpop) ;
  474. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  475. 'FINSI' ;
  476. 'REPETER' iidim idim ;
  477. nomco = 'EXTRAIRE' vcomp &iidim ;
  478. A . 'DAT' . &iidim . 'NOMDDL' = 'MOTS' nomco ;
  479. A . 'DAT' . &iidim . 'DISC' = discv ;
  480. * A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ;
  481. A . 'DAT' . &iidim . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  482. *
  483. A . 'COF' . &iidim . 'COMPOR' = 'IDEN' ;
  484. A . 'COF' . &iidim . 'LDAT' = 'LECT' &iidim ;
  485. 'FIN' iidim ;
  486. *
  487. 'REPETER' iidim idim ;
  488. A . 1 . 1 . &iidim = 'LECT' &iidim ;
  489. 'FIN' iidim ;
  490. *
  491. numvar = 1 ;
  492. 'SI' iaxi ;
  493. numdat = 2 ;
  494. numcof = 2 ;
  495. 'SINON' ;
  496. numdat = 1 ;
  497. numcof = 1 ;
  498. 'FINSI' ;
  499. *
  500. B = ININLIN numop numvar numdat numcof numder ;
  501. B . 'VAR' . 1 . 'NOMDDL' = mmd ;
  502. B . 'VAR' . 1 . 'DISC' = discd ;
  503. 'SI' ('EXISTE' chpod) ;
  504. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  505. 'FINSI' ;
  506. *
  507. B . 'DAT' . 1 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  508. B . 'DAT' . 1 . 'DISC' = discc ;
  509. B . 'DAT' . 1 . 'VALEUR' = coef ;
  510. B . 'COF' . 1 . 'COMPOR' = 'IDEN' ;
  511. B . 'COF' . 1 . 'LDAT' = 'LECT' 1 ;
  512. *
  513. 'SI' iaxi ;
  514. B . 'DAT' . 2 . 'NOMDDL' = 'MOTS' 'SCAL' ;
  515. B . 'DAT' . 2 . 'DISC' = gdisc ;
  516. B . 'DAT' . 2 . 'VALEUR' = dprmt ;
  517. B . 'COF' . 2 . 'COMPOR' = 'IDEN' ;
  518. B . 'COF' . 2 . 'LDAT' = 'LECT' 2 ;
  519. 'FINSI' ;
  520. *
  521. 'SI' iaxi ;
  522. B . 1 . 1 . 0 = 'LECT' 1 2 ;
  523. 'SINON' ;
  524. B . 1 . 1 . 0 = 'LECT' 1 ;
  525. 'FINSI' ;
  526. *
  527. mgugrad = 'NLIN' gdisc _mt A B methgau ;
  528. *
  529. 'RESPRO' mgugrad ;
  530. 'FINPROC' ;
  531. *
  532. * End of procedure file GUGRAD
  533. *
  534. *ENDPROCEDUR gugrad
  535. *BEGINPROCEDUR gdecent
  536. ************************************************************************
  537. * NOM : GDECENT
  538. * DESCRIPTION : Décentrement
  539. *
  540. *
  541. *
  542. * LANGAGE : GIBIANE-CAST3M
  543. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  544. * mél : gounand@semt2.smts.cea.fr
  545. **********************************************************************
  546. * VERSION : v1, 13/05/2004, version initiale
  547. * HISTORIQUE : v1, 13/05/2004, création
  548. * HISTORIQUE :
  549. * HISTORIQUE :
  550. ************************************************************************
  551. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  552. * en cas de modification de ce sous-programme afin de faciliter
  553. * la maintenance !
  554. ************************************************************************
  555. *
  556. *
  557. 'DEBPROC' GDECENT ;
  558. 'ARGUMENT' imeth*'ENTIER' ;
  559. 'ARGUMENT' _mt*'MAILLAGE' ;
  560. 'ARGUMENT' gdisc*'MOT ' ;
  561. 'ARGUMENT' nomp*'MOT ' ;
  562. 'ARGUMENT' discp*'MOT ' ;
  563. 'ARGUMENT' nomd*'MOT ' ;
  564. 'ARGUMENT' discd*'MOT ' ;
  565. 'ARGUMENT' vtot*'CHPOINT ' ;
  566. 'ARGUMENT' vcomp*'LISTMOTS' ;
  567. 'ARGUMENT' discv*'MOT ' ;
  568. 'ARGUMENT' rho*'FLOTTANT' ;
  569. 'ARGUMENT' nu*'FLOTTANT' ;
  570. 'ARGUMENT' Pec*'FLOTTANT' ;
  571. 'ARGUMENT' methgau/'MOT ' ;
  572. 'SI' ('NON' ('EXISTE' methgau)) ;
  573. methgau = 'GAU7' ;
  574. 'FINSI' ;
  575. 'ARGUMENT' chpop/'CHPOINT' ;
  576. 'ARGUMENT' chpod/'CHPOINT' ;
  577. *
  578. vdim = 'VALEUR' 'DIME' ;
  579. vmod = 'VALEUR' 'MODE' ;
  580. idim = 0 ;
  581. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'PLANDEFO')) ;
  582. idim = 2 ;
  583. iaxi = FAUX ;
  584. * Passé en argument désormais
  585. * vcomp = 'MOTS' 'UX' 'UY' ;
  586. 'FINSI' ;
  587. 'SI' ('ET' ('EGA' vdim 2) ('EGA' vmod 'AXIS')) ;
  588. idim = 2 ;
  589. iaxi = VRAI ;
  590. * vcomp = 'MOTS' 'UR' 'UZ' ;
  591. 'FINSI' ;
  592. 'SI' ('ET' ('EGA' vdim 3) ('EGA' vmod 'TRID')) ;
  593. idim = 3 ;
  594. iaxi = FAUX ;
  595. * vcomp = 'MOTS' 'UX' 'UY' 'UZ' ;
  596. 'FINSI' ;
  597. 'SI' ('EGA' vdim 1) ;
  598. idim = 1 ;
  599. iaxi = FAUX ;
  600. 'FINSI' ;
  601. 'SI' ('EGA' idim 0) ;
  602. 'ERREUR' ('CHAINE' 'vmod=' vmod ' et vdim=' vdim ' non prevu') ;
  603. 'FINSI' ;
  604. 'SI' iaxi ;
  605. dprmt = '*' ('COORDONNEE' 1 _mt) ('*' PI 2.D0) ;
  606. 'FINSI' ;
  607. *
  608. mdumm = 'MOTS' 'DUMM' ;
  609. numop = 1 ;
  610. numder = idim ;
  611. mmp = 'MOTS' nomp ;
  612. mmd = 'MOTS' nomd ;
  613. numvar = 1 ;
  614. numdat = '+' idim 3 ;
  615. numcof = idim ;
  616. lisdat = 'LECT' 1 PAS 1 ('+' idim 3) ;
  617. *
  618. A = ININLIN numop numvar numdat numcof numder ;
  619. A . 'VAR' . 1 . 'NOMDDL' = mmp ;
  620. A . 'VAR' . 1 . 'DISC' = discp ;
  621. 'SI' ('EXISTE' chpop) ;
  622. A . 'VAR' . 1 . 'VALEUR' = chpop ;
  623. 'FINSI' ;
  624. idat = 0 ;
  625. idat = '+' idat 1 ;
  626. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  627. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  628. A . 'DAT' . idat . 'VALEUR' = rho ;
  629. idat = '+' idat 1 ;
  630. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  631. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  632. A . 'DAT' . idat . 'VALEUR' = nu ;
  633. 'REPETER' iidim idim ;
  634. nomco = 'EXTRAIRE' vcomp &iidim ;
  635. idat = '+' idat 1 ;
  636. A . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ;
  637. A . 'DAT' . idat . 'DISC' = discv ;
  638. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ;
  639. A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  640. 'FIN' iidim ;
  641. idat = '+' idat 1 ;
  642. A . 'DAT' . idat . 'NOMDDL' = mdumm ;
  643. A . 'DAT' . idat . 'DISC' = 'CSTE' ;
  644. A . 'DAT' . idat . 'VALEUR' = Pec ;
  645. *
  646. icof = 0 ;
  647. 'REPETER' iidim idim ;
  648. icof = '+' icof 1 ;
  649. A . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ;
  650. A . 'COF' . icof . 'LDAT' = lisdat ;
  651. 'FIN' iidim ;
  652. *
  653. 'REPETER' iidim idim ;
  654. A . 1 . 1 . &iidim = 'LECT' &iidim ;
  655. 'FIN' iidim ;
  656. *
  657. numvar = 1 ;
  658. 'SI' iaxi ;
  659. numdat = '+' idim 4 ;
  660. numcof = '+' idim 1 ;
  661. 'SINON' ;
  662. numdat = '+' idim 3 ;
  663. numcof = idim ;
  664. 'FINSI' ;
  665. *
  666. B = ININLIN numop numvar numdat numcof numder ;
  667. B . 'VAR' . 1 . 'NOMDDL' = mmd ;
  668. B . 'VAR' . 1 . 'DISC' = discd ;
  669. 'SI' ('EXISTE' chpod) ;
  670. B . 'VAR' . 1 . 'VALEUR' = chpod ;
  671. 'FINSI' ;
  672. idat = 0 ;
  673. idat = '+' idat 1 ;
  674. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  675. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  676. B . 'DAT' . idat . 'VALEUR' = rho ;
  677. idat = '+' idat 1 ;
  678. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  679. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  680. B . 'DAT' . idat . 'VALEUR' = nu ;
  681. 'REPETER' iidim idim ;
  682. nomco = 'EXTRAIRE' vcomp &iidim ;
  683. idat = '+' idat 1 ;
  684. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomco ;
  685. B . 'DAT' . idat . 'DISC' = discv ;
  686. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco 'NOID' vtot nomco ;
  687. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomco vtot nomco ;
  688. 'FIN' iidim ;
  689. idat = '+' idat 1 ;
  690. B . 'DAT' . idat . 'NOMDDL' = mdumm ;
  691. B . 'DAT' . idat . 'DISC' = 'CSTE' ;
  692. B . 'DAT' . idat . 'VALEUR' = Pec ;
  693. *
  694. icof = 0 ;
  695. 'REPETER' iidim idim ;
  696. icof = '+' icof 1 ;
  697. B . 'COF' . icof . 'COMPOR' = 'CHAINE' 'MUSTAB' imeth &iidim ;
  698. B . 'COF' . icof . 'LDAT' = lisdat ;
  699. 'FIN' iidim ;
  700. *
  701. 'SI' iaxi ;
  702. idat = '+' idat 1 ;
  703. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' 'SCAL' ;
  704. B . 'DAT' . idat . 'DISC' = gdisc ;
  705. B . 'DAT' . idat . 'VALEUR' = dprmt ;
  706. icof = '+' icof 1 ;
  707. B . 'COF' . icof . 'COMPOR' = 'IDEN' ;
  708. B . 'COF' . icof . 'LDAT' = 'LECT' idat ;
  709. 'FINSI' ;
  710. *
  711. 'SI' iaxi ;
  712. 'REPETER' iidim idim ;
  713. B . 1 . 1 . &iidim = 'LECT' &iidim icof ;
  714. 'FIN' iidim ;
  715. 'SINON' ;
  716. 'REPETER' iidim idim ;
  717. B . 1 . 1 . &iidim = 'LECT' &iidim ;
  718. 'FIN' iidim ;
  719. 'FINSI' ;
  720. *
  721. mgdecent = 'NLIN' gdisc _mt A B methgau ;
  722. *
  723. 'RESPRO' mgdecent ;
  724. 'FINPROC' ;
  725. *
  726. * End of procedure file GDECENT
  727. *
  728. *ENDPROCEDUR gdecent
  729. *BEGINPROCEDUR dessevol
  730. ************************************************************************
  731. * NOM : DESSEVOL
  732. * DESCRIPTION : Dessine des évolutions : choisit automatiquement
  733. * les options, marqueurs, couleurs...
  734. *
  735. *
  736. * LANGAGE : GIBIANE-CAST3M
  737. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  738. * mél : gounand@semt2.smts.cea.fr
  739. **********************************************************************
  740. * VERSION : v1, 16/11/2004, version initiale
  741. * HISTORIQUE : v1, 16/11/2004, création
  742. * HISTORIQUE :
  743. * HISTORIQUE :
  744. ************************************************************************
  745. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  746. * en cas de modification de ce sous-programme afin de faciliter
  747. * la maintenance !
  748. ************************************************************************
  749. *
  750. *
  751. 'DEBPROC' DESSEVOL ;
  752. 'ARGUMENT' evtot*'EVOLUTION' ;
  753. 'ARGUMENT' tabt*'TABLE' ;
  754. 'ARGUMENT' tit*'MOT' ;
  755. 'ARGUMENT' tix*'MOT' ;
  756. 'ARGUMENT' tiy*'MOT' ;
  757. 'ARGUMENT' lnclk/'LOGIQUE' ;
  758. 'ARGUMENT' nb/'ENTIER' ;
  759. *
  760. 'SI' ('NON' ('EXISTE' lnclk)) ;
  761. lnclk = FAUX ;
  762. 'FINSI' ;
  763. *
  764. 'SI' ('NON' ('EXISTE' nb)) ;
  765. nb = 3 ;
  766. 'FINSI' ;
  767. *
  768. nt = 'DIME' tabt ;
  769. nev = 'DIME' evtot ;
  770. *
  771. * Attention, dans evtot, il y a une évolution avec des noms de points ?
  772. *
  773. *'SI' ('NEG' nev nt) ;
  774. * cherr = 'CHAINE' 'Evolution and title table : not same dim.' ;
  775. * 'ERREUR' cherr ;
  776. *'FINSI' ;
  777. *
  778. tev = 'TABLE' ;
  779. tev . 'TITRE' = tabt ;
  780. *
  781. toto = 'TABLE' ;
  782. *
  783. lcoul = 'MOTS' 'TURQ' 'VERT' 'JAUN' 'ROSE' 'ROUG' 'BLEU' ;
  784. lmarq = 'MOTS' 'TRIB' 'TRIA' 'LOSA' 'CARR' 'ETOI' 'PLUS' 'CROI' ;
  785. ltirr = 'MOTS' 'TIRR' 'TIRC' 'TIRL' 'TIRM' ;
  786. *
  787. 'SI' ('EGA' nb 0) ;
  788. ev2 = evtot ;
  789. 'SINON' ;
  790. icou = 0 ;
  791. 'REPETER' iev nev ;
  792. ii = &iev ;
  793. evi = 'EXTRAIRE' evtot 'COUR' ii ;
  794. 'SI' ('NEG' ('TYPE' ('EXTRAIRE' evi 'ORDO')) 'LISTMOTS') ;
  795. icou = '+' icou 1 ;
  796. 'FINSI' ;
  797. * ii2 = '/' ('+' ii 1) 2 ;
  798. * ci = EXMOMOD lcoul ii2 ;
  799. * ci = EXMOMOD lcoul ii ;
  800. ci = EXMOMOD lcoul icou ;
  801. APPEND toto 'EVOLUTION' ('COULEUR' evi ci) ;
  802. 'FIN' iev ;
  803. ev2 = toto . 'EVOLUTION' ;
  804. 'FINSI' ;
  805. *
  806. 'REPETER' iev nev ;
  807. ii = &iev ;
  808. mi = EXMOMOD lmarq ii ;
  809. ti = EXMOMOD ltirr ii ;
  810. 'SI' ('>' nb 2) ;
  811. tev . ii = 'CHAINE' 'MARQ ' mi ' ' ti ;
  812. 'FINSI' ;
  813. 'SI' ('>' nb 1) ;
  814. tev . ii = 'CHAINE' 'MARQ ' mi ;
  815. 'FINSI' ;
  816. 'FIN' iev ;
  817. *
  818. 'SI' lnclk ;
  819. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev
  820. 'NCLK' ;
  821. 'SINON' ;
  822. 'DESSIN' ev2 'TITR' tit 'TITX' tix 'TITY' tiy 'LEGE' 'MIMA' tev ;
  823. 'FINSI' ;
  824. *
  825. * End of procedure file DESSEVOL
  826. *
  827. 'FINPROC' ;
  828. *ENDPROCEDUR dessevol
  829. *BEGINPROCEDUR exmomod
  830. ************************************************************************
  831. * NOM : EXMOMOD
  832. * DESCRIPTION : Extraction d'un mot d'un listmots
  833. *
  834. *
  835. *
  836. * LANGAGE : GIBIANE-CAST3M
  837. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  838. * mél : gounand@semt2.smts.cea.fr
  839. **********************************************************************
  840. * VERSION : v1, 23/06/2003, version initiale
  841. * HISTORIQUE : v1, 23/06/2003, création
  842. * HISTORIQUE :
  843. * HISTORIQUE :
  844. ************************************************************************
  845. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  846. * en cas de modification de ce sous-programme afin de faciliter
  847. * la maintenance !
  848. ************************************************************************
  849. *
  850. *
  851. 'DEBPROC' EXMOMOD ;
  852. 'ARGUMENT' lm*'LISTMOTS' i*'ENTIER' ;
  853. j = 'DIME' lm ;
  854. k = '+' (MODULO ('-' i 1) j) 1 ;
  855. lemot = 'EXTRAIRE' lm k ;
  856. * Usage de l'opérateur text pour éviter que lemot
  857. * ne soit interprété comme un opérateur
  858. 'RESPRO' 'TEXTE' lemot ;
  859. *
  860. * End of procedure file EXMOMOD
  861. *
  862. 'FINPROC' ;
  863. *ENDPROCEDUR exmomod
  864. *BEGINPROCEDUR modulo
  865. ************************************************************************
  866. * NOM : MODULO
  867. * DESCRIPTION : Calcule un entier modulo un autre...
  868. *
  869. *
  870. *
  871. * LANGAGE : GIBIANE-CAST3M
  872. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  873. * mél : gounand@semt2.smts.cea.fr
  874. **********************************************************************
  875. * VERSION : v1, 15/10/2002, version initiale
  876. * HISTORIQUE : v1, 15/10/2002, création
  877. * HISTORIQUE :
  878. * HISTORIQUE :
  879. ************************************************************************
  880. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  881. * en cas de modification de ce sous-programme afin de faciliter
  882. * la maintenance !
  883. ************************************************************************
  884. *
  885. *
  886. 'DEBPROC' MODULO ;
  887. 'ARGUMENT' i*'ENTIER' j*'ENTIER' ;
  888. 'SI' ('EGA' j 0) ;
  889. 'MESSAGE' 'Impossible de faire modulo 0' ;
  890. 'ERREUR' 5 ;
  891. 'SINON' ;
  892. k=i '/' j ;
  893. mod=i '-' ( k '*'j ) ;
  894. 'RESPRO' mod ;
  895. 'FINSI' ;
  896. *
  897. * End of procedure file MODULO
  898. *
  899. 'FINPROC' ;
  900. *ENDPROCEDUR modulo
  901. *BEGINPROCEDUR append
  902. ************************************************************************
  903. * NOM : APPEND
  904. * DESCRIPTION : Rajoute :
  905. * - un entier à un listentier
  906. * - un réel à un listreel
  907. * - un objet (liste, evolution, matrice ou chpoint)
  908. * à un indice de table ('MOT' ou 'ENTIER')
  909. * * si l'indice n'existe pas
  910. * * 'ET' si l'indice existe
  911. *
  912. *
  913. *
  914. * LANGAGE : GIBIANE-CAST3M
  915. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  916. * mél : gounand@semt2.smts.cea.fr
  917. **********************************************************************
  918. * VERSION : v1, 10/09/2004, version initiale
  919. * HISTORIQUE : v1, 10/09/2004, création
  920. * HISTORIQUE :
  921. * HISTORIQUE :
  922. ************************************************************************
  923. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  924. * en cas de modification de ce sous-programme afin de faciliter
  925. * la maintenance !
  926. ************************************************************************
  927. *
  928. *
  929. 'DEBPROC' APPEND ;
  930. 'ARGUMENT' tab/'TABLE' ;
  931. 'SI' ('EXISTE' tab) ;
  932. 'ARGUMENT' itab/'MOT' ;
  933. 'SI' ('NON' ('EXISTE' itab)) ;
  934. 'ARGUMENT' itab*'ENTIER' ;
  935. 'FINSI' ;
  936. lobj = FAUX ;
  937. 'SI' ('NON' lobj) ;
  938. 'ARGUMENT' lr/'LISTREEL' ;
  939. 'SI' ('EXISTE' lr) ;
  940. obj = lr ; lobj = VRAI ;
  941. 'FINSI' ;
  942. 'FINSI' ;
  943. 'SI' ('NON' lobj) ;
  944. 'ARGUMENT' le/'LISTENTI' ;
  945. 'SI' ('EXISTE' le) ;
  946. obj = le ; lobj = VRAI ;
  947. 'FINSI' ;
  948. 'FINSI' ;
  949. 'SI' ('NON' lobj) ;
  950. 'ARGUMENT' lev/'EVOLUTION' ;
  951. 'SI' ('EXISTE' lev) ;
  952. obj = lev ; lobj = VRAI ;
  953. 'FINSI' ;
  954. 'FINSI' ;
  955. 'SI' ('NON' lobj) ;
  956. 'ARGUMENT' lm/'MAILLAGE' ;
  957. 'SI' ('EXISTE' lm) ;
  958. obj = lm ; lobj = VRAI ;
  959. 'FINSI' ;
  960. 'FINSI' ;
  961. 'SI' ('NON' lobj) ;
  962. 'ARGUMENT' chpo/'CHPOINT' ;
  963. 'SI' ('EXISTE' chpo) ;
  964. obj = chpo ; lobj = VRAI ;
  965. 'FINSI' ;
  966. 'FINSI' ;
  967. 'SI' ('NON' lobj) ;
  968. 'ARGUMENT' rig/'RIGIDITE' ;
  969. 'SI' ('EXISTE' rig) ;
  970. obj = rig ; lobj = VRAI ;
  971. 'FINSI' ;
  972. 'FINSI' ;
  973. 'SI' ('NON' lobj) ;
  974. 'ARGUMENT' matk/'MATRIK' ;
  975. 'SI' ('EXISTE' matk) ;
  976. obj = matk ; lobj = VRAI ;
  977. 'FINSI' ;
  978. 'FINSI' ;
  979. 'SI' ('NON' lobj) ;
  980. cherr = 'CHAINE'
  981. 'Il faut fournir un objet liste, evolution, matrice ou chpoint.'
  982. ;
  983. 'ERREUR' cherr ;
  984. 'FINSI' ;
  985. 'SI' ('EXISTE' tab itab) ;
  986. 'SI' ('EGA' ('TYPE' obj) 'CHPOINT') ;
  987. tab . itab = '+' (tab . itab) obj ;
  988. 'SINON' ;
  989. tab . itab = 'ET' (tab . itab) obj ;
  990. 'FINSI' ;
  991. 'SINON' ;
  992. tab . itab = obj ;
  993. 'FINSI' ;
  994. 'RESPRO' tab ;
  995. 'FINSI' ;
  996. 'ARGUMENT' lenti/'LISTENTI' ;
  997. 'ARGUMENT' lreel/'LISTREEL' ;
  998. 'SI' ('EXISTE' lenti) ;
  999. 'ARGUMENT' enti*'ENTIER' ;
  1000. lenti = 'ET' lenti ('LECT' enti) ;
  1001. 'RESPRO' lenti ;
  1002. 'FINSI' ;
  1003. 'SI' ('EXISTE' lreel) ;
  1004. 'ARGUMENT' reel*'FLOTTANT' ;
  1005. lreel = 'ET' lreel ('PROG' reel) ;
  1006. 'RESPRO' lreel ;
  1007. 'FINSI' ;
  1008. *
  1009. * End of procedure file APPEND
  1010. *
  1011. 'FINPROC' ;
  1012. *ENDPROCEDUR append
  1013. *BEGINPROCEDUR histo
  1014. ************************************************************************
  1015. * NOM : HISTO
  1016. * DESCRIPTION : Construit une evolution représentant un histogramme
  1017. *
  1018. *
  1019. *
  1020. * LANGAGE : GIBIANE-CAST3M
  1021. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  1022. * mél : gounand@semt2.smts.cea.fr
  1023. **********************************************************************
  1024. * VERSION : v1, 13/09/2004, version initiale
  1025. * HISTORIQUE : v1, 13/09/2004, création
  1026. * HISTORIQUE :
  1027. * HISTORIQUE :
  1028. ************************************************************************
  1029. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  1030. * en cas de modification de ce sous-programme afin de faciliter
  1031. * la maintenance !
  1032. ************************************************************************
  1033. *
  1034. *
  1035. 'DEBPROC' HISTO ;
  1036. 'ARGUMENT' lx*'LISTREEL' ;
  1037. 'ARGUMENT' ly*'LISTREEL' ;
  1038. *
  1039. dlx = 'DIME' lx ;
  1040. dly = 'DIME' ly ;
  1041. *
  1042. 'SI' ('NEG' dly ('-' dlx 1)) ;
  1043. cherr = 'CHAINE' 'Dimension des arguments incorrecte' ;
  1044. 'MESSAGE' ('CHAINE' 'Dime lx=' dlx ' Dime ly=' dly) ;
  1045. 'ERREUR' cherr ;
  1046. 'FINSI' ;
  1047. *
  1048. lxn = 'PROG' ;
  1049. lyn = 'PROG' ;
  1050. *
  1051. 'REPETER' ii dly ;
  1052. vx = 'EXTRAIRE' lx &ii ;
  1053. vxp = 'EXTRAIRE' lx ('+' &ii 1) ;
  1054. vy = 'EXTRAIRE' ly &ii ;
  1055. pvx = 'PROG' vx ; pvxp = 'PROG' vxp ;
  1056. pvy = 'PROG' vy ; pv0 = 'PROG' 0.D0 ;
  1057. lxn = lxn 'ET' pvx 'ET' pvx 'ET' pvxp 'ET' pvxp ;
  1058. lyn = lyn 'ET' pv0 'ET' pvy 'ET' pvy 'ET' pv0 ;
  1059. 'FIN' ii ;
  1060. evhist = 'EVOL' 'MANU' lxn lyn ;
  1061. 'RESPRO' evhist ;
  1062. *
  1063. * End of procedure file HISTO
  1064. *
  1065. 'FINPROC' ;
  1066. *ENDPROCEDUR histo
  1067. *
  1068. * Calcul de la solution exacte
  1069. *
  1070. 'DEBPROC' SOLEX ;
  1071. 'ARGUMENT' nu*'FLOTTANT' ;
  1072. 'ARGUMENT' mesh*'MAILLAGE' ;
  1073. *
  1074. ct = '/' 1.D0 nu ;
  1075. deno = '-' 1. ('EXP' ct) ;
  1076. nume = 'EXP' ('*' ('COORDONNEE' 1 mesh) ct) ;
  1077. nume = '*' nume -1. ;
  1078. nume = '+' nume 1. ;
  1079. vfon = '*' nume ('/' 1. deno) ;
  1080. vfon = 'NOMC' 'T' vfon ;
  1081. *
  1082. 'RESPRO' vfon ;
  1083. 'FINPROC' ;
  1084. *
  1085. * Calcul de la solution approchée
  1086. *
  1087. 'DEBPROC' SOLAPP ;
  1088. 'ARGUMENT' _mt*'MAILLAGE' ;
  1089. 'ARGUMENT' tem*'CHPOINT' ;
  1090. *
  1091. mlap = GLAPN _mt discg 'T' discg 'Q' discg iPe ;
  1092. mlap = '*' mlap -1.D0 ;
  1093. flap = GLAPN _mt discg 'T' discg 'Q' discg iPe tem ;
  1094. msou = GUGRAD _mt discg 'T' discg 'Q' discg v1 mxpri discg 1. ;
  1095. fsou = GUGRAD _mt discg 'T' discg 'Q' discg v1 mxpri discg 1. tem ;
  1096. fsou = '*' fsou -1.D0 ;
  1097. 'SI' lsupg ;
  1098. mdec = GDECENT 2 _mt discg 'T' discg 'Q' discg v1 mxpri discg
  1099. csupg iPe 2.D0 ;
  1100. fdec = GDECENT 2 _mt discg 'T' discg 'Q' discg v1 mxpri discg
  1101. csupg iPe 2.D0 tem ;
  1102. fdec = '*' fdec -1.D0 ;
  1103. 'FINSI' ;
  1104. *
  1105. ftot = flap '+' fsou ;
  1106. *
  1107. mblo = 'BLOQUE' 'T' (p0 'ET' p1) ;
  1108. mtot = mlap 'ET' msou 'ET' mblo ;
  1109. 'SI' lsupg ;
  1110. ftot = ftot '+' fdec ;
  1111. mtot = mtot 'ET' mdec ;
  1112. 'FINSI' ;
  1113. sol = 'RESOUD' mtot ftot ;
  1114. dtem = 'EXCO' mtpri sol ;
  1115. frea = 'REACTION' mblo sol ;
  1116. 'RESPRO' dtem frea ;
  1117. 'FINPROC' ;
  1118. *
  1119. * Calcul de la métrique : on utilise la valeur de Laplacien T
  1120. * (production locale d'entropie) pour réaliser l'adaptation
  1121. *
  1122. 'DEBPROC' TGDENT ;
  1123. 'ARGUMENT' _mt*'MAILLAGE' ;
  1124. 'ARGUMENT' tem*'CHPOINT' ;
  1125. 'ARGUMENT' beta*'FLOTTANT' ;
  1126. * Tracé des forces
  1127. * Calcul de la dérivée seconde de T
  1128. flap = GLAPN _mt discg 'T' discg 'Q' discg iPe tem ;
  1129. fsou = GUGRAD _mt discg 'T' discg 'Q' discg v1 mxpri discg 1. tem ;
  1130. fsou = '*' fsou -1.D0 ;
  1131. fdec = GDECENT 2 _mt discg 'T' discg 'Q' discg v1 mxpri discg
  1132. csupg iPe 2.D0 tem ;
  1133. fdec = '*' fdec -1.D0 ;
  1134. 'SI' ('NON' lsupg) ;
  1135. fdec = '*' fdec 0.D0 ;
  1136. 'FINSI' ;
  1137. 'SI' (graph 'ET' debug) ;
  1138. evl = 'EVOL' 'CHPO' ('+' flap cq) 'Q' mt ;
  1139. evs = 'EVOL' 'CHPO' ('+' fsou cq) 'Q' mt ;
  1140. evd = 'EVOL' 'CHPO' ('+' fdec cq) 'Q' mt ;
  1141. evb = 'EVOL' 'CHPO' ('+' fblo cq) 'Q' mt ;
  1142. evt = evl 'ET' evs 'ET' evd 'ET' evb ;
  1143. tabt = 'TABLE' ;
  1144. tabt . 1 = 'CHAINE' 'Laplacien' ;
  1145. tabt . 2 = 'CHAINE' 'Convection' ;
  1146. tabt . 3 = 'CHAINE' 'Decentrement' ;
  1147. tabt . 4 = 'CHAINE' 'Blocage' ;
  1148. tit = 'CHAINE' 'Forces integrees' ;
  1149. titx = 'CHAINE' 'x' ;
  1150. tity = 'CHAINE' 'F' ;
  1151. dessevol evt tabt tit titx tity ;
  1152. 'FINSI' ;
  1153. * Valeur du laplacien
  1154. mmg = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. ;
  1155. vmtl = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. c1 c1 ;
  1156. vmt = 'MAXIMUM' ('RESULT' vmtl) ;
  1157. mmc = GMASS _mt discg 'SCAL' 'CSTE' 'SCAL' 'CSTE' 1. ;
  1158. flap = 'NOMC' 'SCAL' ('*' fsou -1.D0) ;
  1159. vlap = 'RESOUD' mmg flap ;
  1160. vcont = 'ABS' vlap ;
  1161. * Tracé
  1162. 'SI' (graph 'ET' debug) ;
  1163. evc = 'EVOL' 'CHPO' vcont 'SCAL' mt ;
  1164. evm = 'EVOL' 'CHPO' cq 'Q' mt ;
  1165. evt = evc 'ET' evm ;
  1166. tabt = 'TABLE' ;
  1167. tabt . 1 = 'CHAINE' 'Controle' ;
  1168. tabt . 2 = 'CHAINE' 'Maillage' ;
  1169. tit = 'CHAINE' 'Parametre de contrôle' ;
  1170. titx = 'CHAINE' 'x' ;
  1171. tity = 'CHAINE' 'Vcont' ;
  1172. dessevol evt tabt tit titx tity ;
  1173. 'FINSI' ;
  1174. * Moyenne du contrôle
  1175. nconti = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. vcont ;
  1176. mcont = '/' ('MAXIMUM' ('RESULT' nconti)) vmt ;
  1177.  
  1178. * D'où alpha :
  1179. alpha = '*' ('/' ('-' 1.D0 beta) beta) mcont ;
  1180. 'SI' verbose ;
  1181. 'MESSAGE' ('CHAINE' ' moy. cont =' mcont) ;
  1182. 'MESSAGE' ('CHAINE' ' alpha =' alpha) ;
  1183. 'FINSI' ;
  1184. * D'où le tenseur
  1185. gxxi = GMASS _mt discg 'SCAL' discg 'SCAL' discg 1. vcont vcont ;
  1186. gxx = 'RESOUD' mmc gxxi ;
  1187. gtot = 'NOMC' 'G11' ('+' 1.D0 ('/' gxx ('*' alpha alpha))) ;
  1188. * Graphique
  1189. 'SI' (graph 'ET' debug) ;
  1190. sgtot = '**' gtot 0.5D0 ;
  1191. lgt = 'EXTRAIRE' ('EVOL' 'CHPO' sgtot 'G11' mtc) 'ORDO' ;
  1192. evgt = HISTO lx lgt ;
  1193. evt = evgt ;
  1194. tabt = 'TABLE' ;
  1195. tabt . 1 = 'CHAINE' 'Rac. met.' ;
  1196. tit = 'CHAINE' 'Racine de la métrique (x)' ;
  1197. titx = 'CHAINE' 'x' ;
  1198. tity = 'CHAINE' 'G' ;
  1199. dessevol evt tabt tit titx tity ;
  1200. 'FINSI' ;
  1201. 'RESPRO' gtot ;
  1202. 'FINPROC' ;
  1203. *
  1204. 'OPTION' 'DIME' 1 ;
  1205. 'SI' ('NON' interact) ;
  1206. 'OPTION' 'TRAC' 'PS' ;
  1207. 'SINON' ;
  1208. 'OPTION' 'TRAC' 'X' ;
  1209. 'FINSI' ;
  1210. *
  1211. * Maillage
  1212. *
  1213. 'OPTI' 'ELEM' 'SEG2' ;
  1214. 'SI' complet ;
  1215. nmail = 10 ;
  1216. cvg = 1.D-4 ; nitmax = 60 ;
  1217. lelem = 'MOTS' 'SEG2' 'SEG3' ;
  1218. lPe = 'PROG' 20. 120. 480. ;
  1219. lerref = 'PROG' 7.E-04 6.E-04 1.5E-02 7.E-04 3.E-04 2.E-04
  1220. 7.E-04 9.E-03 2.5E-02 7.E-04 3.E-03 4.E-03 ;
  1221. 'SINON' ;
  1222. nmail = 5 ;
  1223. cvg = 1.D-3 ; nitmax = 60 ;
  1224. lelem = 'MOTS' 'SEG2' 'SEG3' ;
  1225. lPe = 'PROG' 10. 60. 200. ;
  1226. lerref = 'PROG' 3.E-03 1.5E-02 1.5E-02 3.E-03 5.E-03 5.E-03
  1227. 3.E-03 2.5E-02 8.E-02 3.E-03 6.E-03 8.E-03 ;
  1228. 'FINSI' ;
  1229. * Paramètre d'adaptation
  1230. * 0. pas d'adaptation ;
  1231. * 0.5 la moitié des mailles dans les régions où le paramètre de
  1232. * contrôle est grand
  1233. * 1. toutes les mailles dans les régions où le paramètre de
  1234. * contrôle est grand
  1235. * Usuellement, 0.5 < beta < 0.8
  1236. beta = 0.55D0 ;
  1237. * Limitation du déplacement
  1238. ldmax = FAUX ;
  1239. dmax = 1. ;
  1240. echtem = 1. ;
  1241. echdx = 1. ;
  1242. * Tests
  1243. lok = VRAI ;
  1244. lerr = 'PROG' ;
  1245. ind = 0 ;
  1246. *
  1247. delem = 'DIME' lelem ;
  1248. 'REPETER' iielem delem ;
  1249. ielem = &iielem ;
  1250. melem = 'EXTRAIRE' lelem ielem ;
  1251. 'OPTI' 'ELEM' melem ;
  1252. tit1 = 'CHAINE' melem ;
  1253. 'REPETER' iisupg 2 ;
  1254. isupg = &iisupg ;
  1255. 'SI' ('EGA' isupg 1) ;
  1256. lsupg = FAUX ;
  1257. tit2 = 'CHAINE' ' nosupg' ;
  1258. 'SINON' ;
  1259. lsupg = VRAI ;
  1260. tit2 = 'CHAINE' ' supg' ;
  1261. 'FINSI' ;
  1262. *
  1263. 'SI' ('EGA' ('VALEUR' 'ELEM') 'SEG2') ;
  1264. discg = 'LINE' ;
  1265. nmail2 = '*' nmail 2 ;
  1266. csupg = 1.D0 ;
  1267. 'SINON' ;
  1268. discg = 'QUAI' ;
  1269. nmail2 = nmail ;
  1270. csupg = 0.5D0 ;
  1271. 'FINSI' ;
  1272. nmf = 1000 ;
  1273. p0 = 'POIN' 0. ; p1 = 'POIN' 1. ;
  1274. mt = 'DROIT' nmail2 p0 p1 ;
  1275. mtf = 'DROIT' nmf p0 p1 ;
  1276. bor = p0 'ET' p1 ;
  1277. borb = 'DIFF' ('CHANGER' 'POI1' mt) ('CHANGER' 'POI1' bor) ;
  1278. *
  1279. methgau = 'GAU7' ;
  1280. mxpri = 'MOTS' 'UX' ;
  1281. mxdua = 'MOTS' 'FX' ;
  1282. mtpri = 'MOTS' 'T' ;
  1283. mtdua = 'MOTS' 'Q' ;
  1284. *
  1285. v1 = 'MANUEL' 'CHPO' mt mxpri ('PROG' 1.D0) ;
  1286. cq = 'MANUEL' 'CHPO' mt mtdua ('PROG' 0.) ;
  1287. cfx = 'MANUEL' 'CHPO' bor mxdua ('PROG' 0.) ;
  1288. c1 = 'MANUEL' 'CHPO' mt ('MOTS' 'SCAL') ('PROG' 1.) ;
  1289. *
  1290. dPe = 'DIME' lPe ;
  1291. 'REPETER' iiPe dPe ;
  1292. Pe = 'EXTRAIRE' lPe &iiPe ;
  1293. iPe = '/' 1.D0 Pe ;
  1294. tit3 = 'CHAINE' ' Pe=' ('ENTIER' Pe) ;
  1295. titg = 'CHAINE' ' ' tit1 tit2 tit3 ;
  1296. solx = SOLEX iPe mt ;
  1297. tem = '+' ('MANUEL' 'CHPO' mt mtpri ('PROG' 0.D0))
  1298. ('REDU' solx bor) ;
  1299. solxf = SOLEX iPe mtf ;
  1300. evtxf = 'EVOL' 'VERT' 'CHPO' solxf 'T' mtf ;
  1301. *
  1302. * Résumé du cas
  1303. *
  1304. 'SAUTER' 1 'LIGN' ;
  1305. 'MESSAGE' titg ;
  1306. 'SAUTER' 1 'LIGN' ;
  1307. *
  1308. * Algorithme
  1309. *
  1310. 'REPETER' bcl nitmax ;
  1311. 'SI' verbose ;
  1312. 'MESSAGE' ('CHAINE' 'Itération : ' &bcl ) ;
  1313. 'FINSI' ;
  1314. _mt = 'CHANGER' mt 'QUAF' ;
  1315. * Pour les histogrammes
  1316. $mt = 'MODE' _mt 'NAVIER_STOKES' 'LINE' ;
  1317. mtc = 'QUELCONQUE' 'SEG2' ('DOMA' $mt 'CENTRE') ;
  1318. mtl = 'DOMA' $mt 'MAILLAGE' ;
  1319. xmtl = 'COORDONNEE' 1 mtl ;
  1320. lx = 'EXTRAIRE' ('EVOL' 'CHPO' xmtl mtl) 'ORDO' ;
  1321. *
  1322. * Calcul du champ de température
  1323. *
  1324. dtem fblo = SOLAPP _mt tem ;
  1325. tem = tem '+' dtem ;
  1326. echdtem = 'MAXIMUM' dtem 'ABS' ;
  1327. 'SI' verbose ;
  1328. 'MESSAGE' ('CHAINE'
  1329. ' Echelle increment thermique : ' echdtem) ;
  1330. 'FINSI' ;
  1331. 'SI' graph ;
  1332. tit = 'CHAINE' 'Temperature ; i=' &bcl titg ;
  1333. evta = 'EVOL' 'JAUN' 'CHPO' tem 'T' mt ;
  1334. 'SI' debug ;
  1335. 'DESSIN' ('ET' evta evtxf) 'TITR' tit ;
  1336. 'SINON' ;
  1337. 'SI' verbose ;
  1338. 'DESSIN' ('ET' evta evtxf) 'TITR' tit 'NCLK' ;
  1339. 'FINSI' ;
  1340. 'FINSI' ;
  1341. 'FINSI' ;
  1342. *
  1343. * Calcul du champ de déplacement
  1344. *
  1345. * Construction de la métrique
  1346. tdcd = TGDENT _mt tem beta ;
  1347. * Champ de déplacement
  1348. mblox = 'BLOQUE' 'UX' bor ;
  1349. mblo = mblox ;
  1350. theta = 0.2D0 ;
  1351. gamma = 2.D0 ;
  1352. dep = 'DEDU' 'ADAP' _mt mblo 'DISG' discg
  1353. 'METR' tdcd 'CSTE' 'THET' theta 'GAMM' gamma
  1354. 'NITM' 1 ;
  1355. 'SI' faux ;
  1356. 'MESSAGE' 'dep' ;
  1357. 'LISTE' ('REDU' dep mt) ;
  1358. 'FINSI' ;
  1359. *
  1360. echdep = 'MAXIMUM' dep 'ABS' ;
  1361. 'SI' verbose ;
  1362. 'MESSAGE' ('CHAINE' ' Echelle des depl. : ' echdep) ;
  1363. 'FINSI' ;
  1364. *
  1365. 'SI' ldmax ;
  1366. 'SI' ('>' echdep dmax) ;
  1367. fdep = '/' dmax echdep ;
  1368. dep = '*' dep fdep ;
  1369. 'FINSI' ;
  1370. 'SI' verbose ;
  1371. 'MESSAGE' ('CHAINE'
  1372. ' Echelle des depl. apres lim : ' echdep) ;
  1373. 'FINSI' ;
  1374. 'FINSI' ;
  1375. 'FORME' dep ;
  1376. 'SI' graph ;
  1377. 'SI' debug ;
  1378. 'TRACER' mt 'NOEU' 'TITR' ('CHAINE' 'i=' &bcl) ;
  1379. 'SINON' ;
  1380. 'SI' verbose ;
  1381. 'TRACER' mt 'NOEU' 'TITR' ('CHAINE' 'i=' &bcl)
  1382. 'NCLK' ;
  1383. 'FINSI' ;
  1384. 'FINSI' ;
  1385. 'FINSI' ;
  1386. * Critères de convergence :
  1387. * sur les incréments
  1388. crit1 = '<' ('/' echdtem echtem) cvg ;
  1389. crit2 = '<' ('/' echdep echdx) cvg ;
  1390. 'SI' ('ET' crit1 crit2) ;
  1391. 'QUITTER' bcl ;
  1392. 'FINSI' ;
  1393. 'FIN' bcl ;
  1394. 'SI' graph ;
  1395. tit = 'CHAINE' 'Temperature ; i=' &bcl titg ;
  1396. evta = 'EVOL' 'JAUN' 'CHPO' tem 'T' mt ;
  1397. 'DESSIN' ('ET' evta evtxf) 'TITR' tit ;
  1398. 'TRACER' mt 'NOEU' 'TITR' ('CHAINE' 'i=' &bcl) ;
  1399. 'FINSI' ;
  1400. *
  1401. * Tests d'erreurs
  1402. *
  1403. ctem = 'CHANGER' 'CHAM' tem mt ;
  1404. temf = proi mtf ctem ;
  1405. evtaf = 'EVOL' 'VERT' 'CHPO' temf 'T' mtf ;
  1406. err = ('INTG' ('-' evtaf evtxf) 'ABSO') ;
  1407. 'SI' verbose ;
  1408. 'SAUTER' 1 'LIGN' ;
  1409. 'FINSI' ;
  1410. 'MESSAGE' ('CHAINE'
  1411. ' Erreur/sol. analytique : ' err) ;
  1412. lerr = 'ET' lerr ('PROG' err) ;
  1413. ind = '+' ind 1 ;
  1414. errref = 'EXTRAIRE' lerref ind ;
  1415. terr = ('<' err errref) ;
  1416. 'SI' ('NON' terr) ;
  1417. cherr = 'CHAINE' '!!! Erreur, on aurait voulu err < '
  1418. errref ;
  1419. 'MESSAGE' cherr ;
  1420. 'FINSI' ;
  1421. lok = 'ET' lok terr ;
  1422. 'FIN' iiPe ;
  1423. 'FIN' iisupg ;
  1424. 'FIN' iielem ;
  1425. *
  1426. * Fin du jeu de donnees
  1427. *
  1428. 'SAUTER' 2 'LIGNE' ;
  1429. 'SI' lok ;
  1430. 'MESSAGE' 'Tout sest bien passe' ;
  1431. 'SINON' ;
  1432. 'MESSAGE' 'Il y a eu des erreurs' ;
  1433. 'FINSI' ;
  1434. 'SAUTER' 2 'LIGNE' ;
  1435. 'SI' interact ;
  1436. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  1437. 'FINSI' ;
  1438. 'SI' ('NON' lok) ;
  1439. 'ERREUR' 5 ;
  1440. 'FINSI' ;
  1441. *
  1442. * End of dgibi file DEDU_CL1D
  1443. *
  1444. 'FIN' ;
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  

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