Télécharger nlin_decent2d.dgibi

Retour à la liste

Numérotation des lignes :

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

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