Télécharger trac.dgibi

Retour à la liste

Numérotation des lignes :

  1. ************************************************************************
  2. * NOM : TRAC
  3. * DESCRIPTION : Tester TRAC avec les QUAFs compares aux autres elements
  4. * suite aux modifications pour gerer correctement les
  5. * faces TRI7/QUA9.
  6. * Les modifs ont touche pas mal de subroutine de trace
  7. * celles issues de envvol (operateur ENVELOPPE) qui
  8. * tracent les isovaleurs.
  9. * On a simplifie la programmation, corrige des bugs mais
  10. * peut-etre introduit d'autres.
  11. * Voir operquaf.dgibi pour le test des operateurs de
  12. * maillage (ENVE, etc...)
  13. *
  14. * On pourrait egalement ajouter d'autres tests SECT, etc.
  15. *
  16. * Le test tel que identifie un certain nombre de bugs
  17. * visibles en sortie PSC :
  18. * 1) TET4 PRI6 : l'arete situe derriere est trace
  19. * ex: pages 132, 198
  20. * 2) OPTI ISOV LIGNE en 3D ne gere pas totalement
  21. * correctement les parties cachees et les labels
  22. * particulierement sur les lineaires.
  23. * Sur les QUAD et surtout QUAFs, c'est mieux grace aux
  24. * noeuds centre face rajoute et au decoupage en
  25. * triangle barycentrique de chaque face
  26. * ex: pages 134, 152, 170, 272, 279
  27. * 3) TRAC COUP + chpo/cham : facette non visible
  28. * tracee en chpo mais pas en cham
  29. * ex: pages 360, 361
  30. * 4) Lorsqu'il y a a la fois des lignes et des surfaces
  31. * les segments apparaissent derriere les faces meme
  32. * s'ils sont devant. Mais cela semble etre voulu dans
  33. * faced2 ??? (cf. le -TDIST dans KFAC)
  34. * ex: pages 270, 288
  35. * 5) Trace des champs sur des segments non geres en OPTI
  36. * ISOV LIGN
  37. * ex: pages 84, 82
  38. * 5b) Trace des champs sur des surfaces mal gere en OPTI
  39. * ISOV LIGN
  40. * ex: page 290, 615
  41. * 6) L'option COUP ne gere pas les segments
  42. * ex: page 131
  43. * 7) Les traces chpo+vect ne trace pas le chpo sur le
  44. * maillage de segments
  45. * mais les traces cham+vect si ! (sauf option isov lign)
  46. * ex: pages 594, 595, 567
  47. * 8) Option BOIT, le clipping Postcript tel que fait dans
  48. * strini introduit des effets
  49. * étranges sur certaines isovaleurs : iso et contour
  50. * non coherent.
  51. * ex: page 720
  52. * On peut régler ce pb en modifiant strini, au prix
  53. * d'un passage de I4 en I5 sur l'écriture des entiers
  54. * dans le Postscript
  55. *
  56. * Il y a un logique sautquaf utilise pour tracer
  57. * uniquement les elements standard. Ceci a servi pour
  58. * tester la non-regression au moment de l'incorporation
  59. * des quafs
  60. *
  61. * Inspire de orieelem.dgibi
  62. *
  63. *
  64. *
  65. * LANGAGE : GIBIANE-CAST3M
  66. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  67. * mél : stephane.gounand@cea.fr
  68. **********************************************************************
  69. * VERSION : v1, 05/07/2016, version initiale
  70. * HISTORIQUE : v1, 05/07/2016, création
  71. * HISTORIQUE : 23/08/2016 : modif maillage complexe : melange ligne,
  72. * surface, volume suite fiche 9050
  73. * HISTORIQUE : 29/11/2016 : ajout option boite pour zoomer un peu
  74. * (fiche 9218)
  75. * HISTORIQUE : 09/10/2018 : ajout champ constant strictement ou bruite
  76. * (fiche 9956)
  77. * HISTORIQUE :
  78. ************************************************************************
  79. *
  80.  
  81. *
  82. complet = FAUX ;
  83. interact= FAUX ;
  84. sautquaf= FAUX ;
  85. 'OPTION' 'DIME' 3 'ELEM' CUB8 ;
  86. 'SI' ('NON' interact) ;
  87. 'OPTION' 'TRAC' 'PS' ;
  88. 'SINON' ;
  89. 'OPTION' 'TRAC' 'X' ;
  90. 'FINSI' ;
  91. *
  92. * Paramètres globaux
  93. *
  94. lisquaf = 'MOTS' 'TRI7' 'QUA9' 'TE15' 'PY19' 'PR21' 'CU27' ;
  95. lisel2 = 'MOTS' 'TRI3' 'TRI6' 'TRI7' 'QUA4' 'QUA8' 'QUA9' ;
  96. lisel3 = 'MOTS' 'TET4' 'TE10' 'TE15' 'PYR5' 'PY13' 'PY19'
  97. 'PRI6' 'PR15' 'PR21' 'CUB8' 'CU20' 'CU27' ;
  98. *
  99. * Liste de paramètres à tester :
  100. * lsort : canaux de sortie
  101. * lisov : type d'isovaleurs à tracer
  102. * ltypcha : quand on trace un champ, on peut choisir de le tracer comme
  103. * chpoint ou chamelem
  104. * lforcha : forme du champ à tracer :
  105. * 1) un champ valant 1 en un point bien choisi et zéro ailleurs
  106. * 2) une combinaison linéaire des coordonnées des noeuds
  107. * couvec : couleur des champs de vecteurs
  108. * ltypma2 : nom des maillages 2D à traiter (mis dans une table)
  109. * ltypma3 : nom des maillages 2D à traiter (mis dans une table)
  110. *
  111.  
  112.  
  113. 'SI' complet ;
  114. 'SI' interact ;
  115. lsort = 'MOTS' 'PS' 'PSC' 'X' 'OPEN' ;
  116. 'SINON' ;
  117. lsort = 'MOTS' 'PS' 'PSC' ;
  118. 'FINSI' ;
  119. lisov = 'MOTS' 'SURF' 'LIGN' 'SULI' ;
  120. ltypcha = 'MOTS' 'chpo' 'cham' ;
  121. lforcha = 'LECT' 1 2 ;
  122. 'SINON' ;
  123. 'SI' interact ;
  124. * lsort = 'MOTS' 'PS' 'PSC' 'X' 'OPEN' ;
  125. lsort = 'MOTS' 'PSC' 'X' ;
  126. * lsort = 'MOTS' 'X' ;
  127. 'SINON' ;
  128. * lsort = 'MOTS' 'PS' 'PSC' ;
  129. lsort = 'MOTS' 'PSC' ;
  130. 'FINSI' ;
  131. lisov = 'MOTS' 'SURF' 'LIGN' 'SULI' ;
  132. * lisov = 'MOTS' 'SURF' ;
  133. ltypcha = 'MOTS' 'chpo' 'cham' ;
  134. lforcha = 'LECT' 1 2 ;
  135. * ltypcha = 'MOTS' 'chpo' ;
  136. * lforcha = 'LECT' 1 ;
  137. 'FINSI' ;
  138. 'SI' interact ;
  139. couvec = 'JAUN' ;
  140. 'SINON' ;
  141. couvec = 'ROUG' ;
  142. 'FINSI' ;
  143. *
  144. * Les maillages à traiter en 2D et 3D : les maillages à un élément ont le même nom
  145. * que l'élément du même type
  146. * MCO2 : maillage "complexe" 2D ; MC2Q : le meme en quadratique : MC2F le meme
  147. * en quaf
  148. * MCO3 : maillage "complexe" 3D ...
  149. *
  150. ltypma2 = lisel2 'ET' ('MOTS' 'MCO2' 'MC2Q' 'MC2F') ;
  151. ltypma3 = lisel3 'ET' ('MOTS' 'MCO3' 'MC3Q' 'MC3F' 'MCOP') ;
  152. *
  153. * Procedure pour les traces de champ en 3D
  154. *
  155. 'DEBPROC' vtch3 ;
  156. 'ARGUMENT' el*'MAILLAGE' ;
  157. lcoup = faux ; lvect = faux ; lboit = faux ;
  158. lmotcle = 'MOTS' 'COUP' 'SECT' 'VECT' 'BOIT' ;
  159. 'REPETER' imotcle ;
  160. 'ARGUMENT' motcle/'MOT' ;
  161. 'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
  162. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  163. cherr = 'CHAINE' 'Keyword' ' ' motcle ' unknown.' ;
  164. 'ERREUR' cherr ;
  165. 'FINSI' ;
  166. 'SI' ('EGA' motcle 'COUP') ;
  167. lcoup = vrai ; mocoup = 'CHAINE' 'COUP' ;
  168. 'FINSI' ;
  169. 'SI' ('EGA' motcle 'SECT') ;
  170. lcoup = vrai ; mocoup = 'SECT' ;
  171. 'FINSI' ;
  172. 'SI' ('EGA' motcle 'VECT') ;
  173. lvect = vrai ;
  174. 'FINSI' ;
  175. 'SI' ('EGA' motcle 'BOIT') ;
  176. lboit= vrai ;
  177. 'FINS' ;
  178. 'FIN' imotcle ;
  179. 'SI' ('ET' lboit ('OU' lvect lcoup)) ;
  180. cherr = 'CHAI' 'Option BOIT non compatible avec COUP et VECT' ;
  181. 'ERRE' cherr ;
  182. 'FINS' ;
  183. *
  184. pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  185. * pc1 = 1. 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  186. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  187. lquaf = 'EXISTE' lisquaf nomel ;
  188. 'SI' ('ET' sautquaf lquaf) ;
  189. 'MESSAGE' 'On saute lelement' ' ' nomel ;
  190. 'QUITTER' vtch3 ;
  191. 'FINSI' ;
  192. 'SI' lvect ;
  193. xel yel zel = 'COORDONNEE' el ;
  194. vel = ('NOMC' 'UX' ('+' xel 1.))
  195. '+' ('NOMC' 'UY' ('+' yel 0.5)) '+'
  196. ('NOMC' 'UZ' ('+' zel 0.33)) ;
  197. vvel = 'VECT' vel 'DEPL' couvec ;
  198. 'FINSI' ;
  199. * Zoom * 2
  200. 'SI' lboit ;
  201. boitel = BOITE ('HOMO' el ('BARY' el) 0.5) ;
  202. 'FINS' ;
  203. 'SI' ('NEG' ('NBEL' el) 1) ;
  204. lcle = 'LECT' 2 ;
  205. 'SINON' ;
  206. lcle = lforcha ;
  207. 'FINSI' ;
  208. * TRAC cham chpo
  209. 'REPETER' iicle ('DIME' lcle) ;
  210. icle = 'EXTRAIRE' lcle &iicle ;
  211. 'SI' ('EGA' icle 1) ;
  212. evel = 'ENVELOPPE' el ;
  213. yevel = 'COORDONNEE' 2 evel ;
  214. ppp = 'POIN' yevel 'EGINFE' 1.D-10 ;
  215. fac = 'ELEM' evel 'APPUYE' 'STRICTEMENT' ppp ;
  216. 'SI' ('NEG' ('NBEL' fac) 1) ;
  217. 'LISTE' fac ;
  218. 'ERREUR' 'on devrait avoir un element dans fac' ;
  219. 'FINSI' ;
  220. p1 = 1. 0. 0. ;
  221. pb = 'BARYCENTRE' fac ;
  222. pb1 = 'PLUS' ('*' p1 0.1) ('*' pb 0.9) ;
  223. pel = 'POIN' evel 'PROC' pb1 ;
  224. cel = 'MANU' 'CHPO' pel 1 'SCAL' 1. ;
  225. 'FINSI' ;
  226. 'SI' ('EGA' icle 2) ;
  227. xel yel zel = 'COORDONNEE' el ;
  228. cel = xel '+' ('*' 0.1 yel) '+' ('*' 0.12 zel) ;
  229. 'FINSI' ;
  230. ccel = 'CHANGER' 'CHAM' cel el ;
  231. 'REPETER' isort ('DIME' lsort) ;
  232. mosort = 'EXTRAIRE' lsort &isort ;
  233. 'OPTI' 'TRAC' mosort ;
  234. 'REPETER' iisov ('DIME' lisov) ;
  235. moisov = 'EXTRAIRE' lisov &iisov ;
  236. 'OPTI' 'ISOV' moisov ;
  237. 'REPETER' icham ('DIME' ltypcha) ;
  238. iicham = &icham ;
  239. mocham = 'EXTRAIRE' ltypcha iicham ;
  240. 'SI' ('EGA' mocham 'chpo') ;
  241. tcel = cel ;
  242. tm = el ;
  243. 'FINSI' ;
  244. 'SI' ('EGA' mocham 'cham') ;
  245. tcel = ccel ;
  246. 'SI' lquaf ;
  247. tm = 'MODE' el 'NAVIER_STOKES' 'QUAF' ;
  248. 'SINON' ;
  249. tm = 'MODE' el 'THERMIQUE' ;
  250. 'FINSI' ;
  251. 'FINSI' ;
  252. ch = 'CHAINE' 'TRAC' ;
  253. 'SI' lcoup ;
  254. ch = 'CHAINE' ch ' ' mocoup ;
  255. 'FINSI' ;
  256. 'SI' lvect ;
  257. ch = 'CHAINE' ch ' VECT' ;
  258. 'FINSI' ;
  259. 'SI' lboit ;
  260. ch = 'CHAINE' ch ' BOIT' ;
  261. 'FINSI' ;
  262. ch = 'CHAINE' ch ' ' mocham ' ' mosort ' ' moisov ' '
  263. nomel ;
  264. 'MESSAGE' ch ;
  265. lsaut = 'ET' ('EGA' nomel 'PY19') ('EGA' mocham 'cham') ;
  266. 'SI' lsaut ;
  267. 'MESSAGE' ' Pas de trace de chamelem en PY19 ' ;
  268. 'MESSAGE' ' Il manque les fns de forme du PY19 ' ;
  269. 'SINON' ;
  270. 'SI' lcoup ;
  271. 'SI' lvect ;
  272. 'TRACER' 'CACH' tcel tm el vvel mocoup pc1 pc2 pc3
  273. 'TITR' ch ;
  274. 'SINON' ;
  275. 'TRACER' 'CACH' tcel tm mocoup pc1 pc2 pc3
  276. 'TITR' ch ;
  277. 'FINSI' ;
  278. 'SINON' ;
  279. 'SI' lvect
  280. 'TRACER' 'CACH' tcel tm el vvel 'TITR' ch ;
  281. 'SINON' ;
  282. 'SI' lboit ;
  283. 'TRACER' 'CACH' tcel tm 'TITR' ch
  284. 'BOIT' boitel ;
  285. 'SINO' ;
  286. 'TRACER' 'CACH' tcel tm 'TITR' ch ;
  287. 'FINS' ;
  288. 'FINSI' ;
  289. 'FINSI' ;
  290. 'FINSI' ;
  291. 'FIN' icham ;
  292. 'FIN' iisov ;
  293. 'FIN' isort ;
  294. 'FIN' iicle ;
  295. 'FINPROC' ;
  296. *
  297. * Procedure pour les traces de champ en 2D
  298. * Pourrait etre rassemblee avec vtch3
  299. *
  300. 'DEBPROC' vtch2 ;
  301. 'ARGUMENT' el*'MAILLAGE' ;
  302. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  303. lquaf = 'EXISTE' lisquaf nomel ;
  304. 'SI' ('ET' sautquaf lquaf) ;
  305. 'MESSAGE' 'On saute lelement' ' ' nomel ;
  306. 'QUITTER' vtch2 ;
  307. 'FINSI' ;
  308. 'SI' ('NEG' ('NBEL' el) 1) ;
  309. lcle = 'LECT' 2 ;
  310. 'SINON' ;
  311. lcle = lforcha ;
  312. 'FINSI' ;
  313. * TRAC cham chpo
  314. 'REPETER' iicle ('DIME' lcle) ;
  315. icle = 'EXTRAIRE' lcle &iicle ;
  316. 'SI' ('EGA' icle 1) ;
  317. p1 = 1. 0. ;
  318. pb = 'BARYCENTRE' el ;
  319. pb1 = 'PLUS' ('*' p1 0.1) ('*' pb 0.9) ;
  320. pel = 'POIN' el 'PROC' pb1 ;
  321. * pel = 'POIN' ('NBNO' el) ('CHANGER' 'POI1' el) ;
  322. cel = 'MANU' 'CHPO' pel 1 'SCAL' 1. ;
  323. 'FINSI' ;
  324. 'SI' ('EGA' icle 2) ;
  325. xel yel = 'COORDONNEE' el ;
  326. cel = xel '+' ('*' 0.1 yel) ;
  327. 'FINSI' ;
  328. ccel = 'CHANGER' 'CHAM' cel el ;
  329. *
  330. 'REPETER' isort ('DIME' lsort) ;
  331. mosort = 'EXTRAIRE' lsort &isort ;
  332. 'OPTI' 'TRAC' mosort ;
  333. 'REPETER' iisov ('DIME' lisov) ;
  334. moisov = 'EXTRAIRE' lisov &iisov ;
  335. 'OPTI' 'ISOV' moisov ;
  336. 'REPETER' icham ('DIME' ltypcha) ;
  337. iicham = &icham ;
  338. mocham = 'EXTRAIRE' ltypcha iicham ;
  339. 'SI' ('EGA' mocham 'chpo') ;
  340. tcel = cel ;
  341. tm = el ;
  342. 'FINSI' ;
  343. 'SI' ('EGA' mocham 'cham') ;
  344. tcel = ccel ;
  345. 'SI' lquaf ;
  346. tm = 'MODE' el 'NAVIER_STOKES' 'QUAF' ;
  347. 'SINON' ;
  348. tm = 'MODE' el 'THERMIQUE' ;
  349. 'FINSI' ;
  350. 'FINSI' ;
  351. ch = 'CHAINE' 'TRAC' ' ' mocham ' ' mosort ' ' moisov ' '
  352. nomel ;
  353. 'MESSAGE' ch ;
  354. 'TRACER' tcel tm 'TITR' ch ;
  355. 'FIN' icham ;
  356. 'FIN' iisov ;
  357. 'FIN' isort ;
  358. 'FIN' iicle ;
  359. 'FINPROC' ;
  360. *
  361. * Procedure pour les traces de faces
  362. *
  363. 'DEBPROC' vtfac ;
  364. 'ARGUMENT' el*'MAILLAGE' ;
  365. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  366. lquaf = 'EXISTE' lisquaf nomel ;
  367. 'SI' ('ET' sautquaf lquaf) ;
  368. 'MESSAGE' 'On saute lelement' ' ' nomel ;
  369. 'QUITTER' vtfac ;
  370. 'FINSI' ;
  371. 'MESSAGE' 'TRAC FACE' ' ' nomel ;
  372. * TRAC FACE
  373. 'REPETER' isort ('DIME' lsort) ;
  374. mosort = 'EXTRAIRE' lsort &isort ;
  375. 'OPTI' 'TRAC' mosort ;
  376. ch = 'CHAINE' 'TRAC FACE' ' ' mosort ' ' nomel ;
  377. 'MESSAGE' ch ;
  378. 'TRACER' 'FACE' el 'TITR' ch ;
  379. 'FIN' isort ;
  380. 'FINPROC' ;
  381. *
  382. * Procedure pour le trace d'un champ constant + un bruit
  383. *
  384. 'DEBPROC' vtccst ;
  385. 'ARGUMENT' el*'MAILLAGE' ;
  386. 'ARGU' val*'FLOTTANT' ;
  387. 'ARGU' bru/'FLOTTANT' ;
  388. *
  389. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  390. lquaf = 'EXISTE' lisquaf nomel ;
  391. 'SI' ('ET' sautquaf lquaf) ;
  392. 'MESSAGE' 'On saute lelement' ' ' nomel ;
  393. 'QUITTER' vtccst ;
  394. 'FINSI' ;
  395. cel ='MANU' 'CHPO' el 1 'SCAL' val 'NATURE' 'DISCRET' ;
  396. tit = 'CHAI' 'TRAC CSTE' ;
  397. 'SI' ('EXIS' bru) ;
  398. cel = '+' cel
  399. ('BRUI' 'BLAN' 'UNIF' 0. bru el) ;
  400. tit = 'CHAI' tit '+BRUI=' val '+' bru ;
  401. 'MESSAGE' tit ' ' nomel ;
  402. 'SINO' ;
  403. tit = 'CHAI' tit '=' val ;
  404. 'MESSAGE' tit ' ' nomel ;
  405. 'FINS' ;
  406.  
  407. * TRAC CSTE
  408. 'REPETER' isort ('DIME' lsort) ;
  409. mosort = 'EXTRAIRE' lsort &isort ;
  410. 'OPTI' 'TRAC' mosort ;
  411. 'REPETER' iisov ('DIME' lisov) ;
  412. moisov = 'EXTRAIRE' lisov &iisov ;
  413. 'OPTI' 'ISOV' moisov ;
  414. ch = 'CHAINE' tit ' ' mosort ' ' moisov ' ' nomel ;
  415. 'MESSAGE' ch ;
  416. 'TRACER' cel el 'TITR' ch ;
  417. 'FIN' iisov ;
  418. 'FIN' isort ;
  419. 'FINPROC' ;
  420. *
  421. * Procedure pour les traces de vecteur + coupe
  422. * Pourrait etre rassemblee avec vtch3
  423. *
  424. 'DEBPROC' vtcouvec ;
  425. 'ARGUMENT' el*'MAILLAGE' ;
  426. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  427. lquaf = 'EXISTE' lisquaf nomel ;
  428. 'SI' ('ET' sautquaf lquaf) ;
  429. 'MESSAGE' 'On saute lelement ' nomel ;
  430. 'QUITTER' vtcouvec ;
  431. 'FINSI' ;
  432. pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  433. xel yel zel = 'COORDONNEE' el ;
  434. vel = ('NOMC' 'UX' ('+' xel 1.))
  435. '+' ('NOMC' 'UY' ('+' yel 0.5)) '+' ('NOMC' 'UZ' ('+' zel 0.33)) ;
  436. vvel = 'VECT' vel 'DEPL' couvec ;
  437. * TRAC COUP vec
  438. 'REPETER' isort ('DIME' lsort) ;
  439. mosort = 'EXTRAIRE' lsort &isort ;
  440. 'OPTI' 'TRAC' mosort ;
  441. ch = 'CHAINE' 'TRAC COUP vec' ' ' mosort ' ' nomel ;
  442. 'MESSAGE' ch ;
  443. 'TRACER' 'CACH' vvel el 'COUP' pc1 pc2 pc3 'TITR' ch ;
  444. 'FIN' isort ;
  445. 'FINPROC' ;
  446. *
  447. *'OPTI' debu 1 ;
  448. *
  449. * Debut du jeu de donnee
  450. *
  451. tmail = 'TABLE' ;
  452. *
  453. 'REPETER' idim 3 ;
  454. dim = &idim ;
  455. *dim=3 ;
  456. 'SI' ('EGA' dim 1) ;
  457. 'OPTI' 'DIME' 1 'ELEM' 'SEG2' ;
  458. *
  459. p1 = 'POIN' 0. ; p2 = 'POIN' 1. ;
  460. * p3 = 'POIN' 0.5 ;
  461. se2 = 'MANU' 'SEG2' p1 p2 ;
  462. se3 = 'CHANGER' se2 'QUAD' ;
  463. se2i = 'MANU' 'SEG2' p2 p1 ;
  464. se3i = 'CHANGER' se2i 'QUAD' ;
  465. * On ne teste rien en dimension 1 : on devrait :)
  466. 'FINSI' ;
  467. 'SI' ('EGA' dim 2) ;
  468. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  469. p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
  470. tr3 = 'MANU' 'TRI3' p1 p2 p3 ;
  471. tr6 = 'CHANGER' tr3 'QUAD' ;
  472. tr7 = 'CHANGER' tr6 'QUAF' ;
  473. *
  474. qu4 = 'MANU' 'QUA4' p1 p2 p3 p4 ;
  475. qu8 = 'CHANGER' qu4 'QUAD' ;
  476. qu9 = 'CHANGER' qu8 'QUAF' ;
  477. *
  478. tmail . 'TRI3' = tr3 ; tmail . 'TRI6' = tr6 ; tmail . 'TRI7' = tr7 ;
  479. tmail . 'QUA4' = qu4 ; tmail . 'QUA8' = qu8 ; tmail . 'QUA9' = qu9 ;
  480.  
  481.  
  482. mcon1 = 'CHANGER' 'TRI3' tr7 ;
  483. mcon2 = ('CHANGER' 'QUA4' qu9) 'PLUS' (1. 0.);
  484. 'ELIMINATION' mcon1 mcon2 1.D-6 ;
  485. mcons = mcon1 'ET' mcon2 ;
  486. * Suite a la fiche 9050, on trace sur un maillage composite surface+ligne
  487. mconl = ('CHANGER' mcons 'LIGN') 'PLUS' (0. 1.) ;
  488. 'ELIMINATION' mcons mconl 1.D-6 ;
  489. mcon = mcons 'ET' mconl ;
  490.  
  491. mcon = 'CHANGER' mcon 'LINE' ;
  492. mconq = 'CHANGER' mcon 'QUAD' ;
  493. mconqf = 'CHANGER' mconq 'QUAF' ;
  494. *
  495. tmail . 'MCO2' = mcon ;
  496. tmail . 'MC2Q' = mconq ;
  497. tmail . 'MC2F' = mconqf ;
  498.  
  499. 'SI' faux ;
  500. * TEST 2D hors boucle
  501. lsort = 'MOTS' 'PSC' 'X' ;
  502. lisov = 'MOTS' 'SURF' ;
  503. ltypcha = 'MOTS' 'chpo' ;
  504. lforcha = 'LECT' 1 2 ;
  505. VTCH2 tr7 ; VTCH2 tr6 ;
  506. 'ERREUR' stop ;
  507. 'FINSI' ;
  508.  
  509.  
  510. * TRAC FACE
  511. 'REPETER' i ('DIME' ltypma2) ;
  512. VTFAC (tmail . ('EXTRAIRE' ltypma2 &i)) ;
  513. 'FIN' i ;
  514. * TRAC CHPO CHAM
  515. 'REPETER' i ('DIME' ltypma2) ;
  516. VTCH2 (tmail . ('EXTRAIRE' ltypma2 &i)) ;
  517. 'FIN' i ;
  518. 'FINSI' ;
  519. 'SI' ('EGA' dim 3) ;
  520. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  521. p1 = 0. 0. 0. ; p2 = 1. 0. 0. ; p3 = 1. 1. 0. ; p4 = 0. 1. 0. ;
  522. p5 = 0. 0. 1. ; p6 = 1. 0. 1. ; p7 = 1. 1. 1. ; p8 = 0. 1. 1. ;
  523. tetr4 = 'MANU' 'TET4' p1 p2 p3 p5 ;
  524. tetr10 = 'CHANGER' tetr4 'QUAD' ;
  525. tetr15 = 'CHANGER' tetr10 'QUAF' ;
  526. pyra5 = 'MANU' 'PYR5' p1 p2 p3 p4 p5 ;
  527. pyra13 = 'CHANGER' pyra5 'QUAD' ;
  528. pyra19 = 'CHANGER' pyra13 'QUAF' ;
  529. pris6 = 'MANU' 'PRI6' p1 p2 p3 p5 p6 p7 ;
  530. pris15 = 'CHANGER' pris6 'QUAD' ;
  531. pris21 = 'CHANGER' pris15 'QUAF' ;
  532. cube8 = 'MANU' 'CUB8' p1 p2 p3 p4 p5 p6 p7 p8 ;
  533. cube20 = 'CHANGER' cube8 'QUAD' ;
  534. cube27 = 'CHANGER' cube20 'QUAF' ;
  535. *
  536. c1 = 'CHANGER' 'TET4' tetr15 ;
  537. c2 = 'CHANGER' 'QUAF' c1 ;
  538. c3_1 = 'CHANGER' 'CUB8' c2 ;
  539. c3_1 = 'ORIENTER' c3_1 ;
  540.  
  541. * Maillage composite (volume + surface + ligne)
  542. c3_2 = 'PLUS' ('CHANGER' c3_1 'LIGNE') (0. 0. 1.1) ;
  543. * c3_2 = 'PLUS' ('CHANGER' c3_1 'LIGNE') (0. 1.1 0.) ;
  544. c3_3 = 'CHANGER' c3_1 'SURFACE' ;
  545. c3_3 = 'PLUS' c3_3 (0. 1.1 0.) ;
  546. c3 = c3_1 'ET' c3_2 'ET' c3_3 ;
  547. 'ELIMINATION' c3 1.D-6 ;
  548. tt = c3 ;
  549. ttq = 'CHANGER' 'QUAD' tt ;
  550. ttqf = 'CHANGER' 'QUAF' ttq ;
  551. * Maillage composite 2 (volume + surface + ligne) plus simple
  552. t3_1 = tetr4 ;
  553. t3_2 = 'PLUS' ('CHANGER' t3_1 'LIGNE') (0. 0. 1.1) ;
  554. t3_3 = 'CHANGER' t3_1 'SURFACE' ;
  555. t3_3 = 'PLUS' t3_3 (0. 1.1 0.) ;
  556. t3 = t3_1 'ET' t3_2 'ET' t3_3 ;
  557. *
  558. tmail . 'TET4' = tetr4 ; tmail . 'TE10' = tetr10 ;
  559. tmail . 'TE15' = tetr15 ; tmail . 'PYR5' = pyra5 ;
  560. tmail . 'PY13' = pyra13 ; tmail . 'PY19' = pyra19 ;
  561. tmail . 'PRI6' = pris6 ; tmail . 'PR15' = pris15 ;
  562. tmail . 'PR21' = pris21 ; tmail . 'CUB8' = cube8 ;
  563. tmail . 'CU20' = cube20 ; tmail . 'CU27' = cube27 ;
  564. tmail . 'MCO3' = tt ; tmail . 'MC3Q' = ttq ;
  565. tmail . 'MC3F' = ttqf ; tmail . 'MCOP' = t3 ;
  566.  
  567. 'SI' faux ;
  568. * TEST 3D hors boucle
  569. lsort = 'MOTS' 'X' ;
  570. lisov = 'MOTS' 'SURF' ;
  571. ltypcha = 'MOTS' 'chpo' ;
  572. lforcha = 'LECT' 1 ;
  573. 'OPTI' debu 1 ;
  574. VTCCST (tmail . 'TET4') PI ;
  575. * VTCCST (tmail . 'MCO3') PI ;
  576. * VTCH3 tetr4 'COUP' 'VECT' ; VTCOUVEC tetr4 ;
  577. 'ERREUR' stop ;
  578. 'FINSI' ;
  579. * TRAC FACE
  580. 'REPETER' i ('DIME' ltypma3) ;
  581. VTFAC (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  582. 'FIN' i ;
  583. * TRAC COUP VEC
  584. 'REPETER' i ('DIME' ltypma3) ;
  585. VTCOUVEC (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  586. 'FIN' i ;
  587. * TRAC CHAM CHPO
  588. 'REPETER' i ('DIME' ltypma3) ;
  589. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  590. 'FIN' i ;
  591. * TRAC CHAM CHPO COUP
  592. 'REPETER' i ('DIME' ltypma3) ;
  593. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'COUP' ;
  594. 'FIN' i ;
  595. * TRAC CHAM CHPO COUP VECT
  596. 'REPETER' i ('DIME' ltypma3) ;
  597. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'COUP' 'VECT' ;
  598. 'FIN' i ;
  599. * TRAC CHAM CHPO BOIT
  600. 'REPETER' i ('DIME' ltypma3) ;
  601. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'BOIT' ;
  602. 'FIN' i ;
  603. * TRAC CHPO CSTE Test un champ constant...
  604. mpi = pi '*' -1. ;
  605. s180 = 'SIN' 180. ;
  606. ms180 = '*' s180 -1. ;
  607. VTCCST (tmail . 'MCO3') PI ;
  608. VTCCST (tmail . 'MCO3') mPI ;
  609. VTCCST (tmail . 'MCO3') s180 ;
  610. VTCCST (tmail . 'MCO3') ms180 ;
  611. VTCCST (tmail . 'MCO3') 0. ;
  612. VTCCST (tmail . 'MCO3') PI ('*' s180 10) ;
  613. VTCCST (tmail . 'MCO3') mPI ('*' s180 10) ;
  614. VTCCST (tmail . 'MCO3') s180 s180 ;
  615. VTCCST (tmail . 'MCO3') ms180 s180 ;
  616. VTCCST (tmail . 'MCO3') 0. s180 ;
  617. 'FINSI' ;
  618. 'FIN' idim ;
  619. *
  620.  
  621.  
  622.  
  623.  
  624. 'SI' interact ;
  625. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  626. 'FINSI' ;
  627.  
  628. *
  629. * End of dgibi file TRAC
  630. *
  631. 'FIN' ;
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  

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