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 :
  76. ************************************************************************
  77. *
  78. *
  79. complet = FAUX ;
  80. interact= FAUX ;
  81. sautquaf= FAUX ;
  82. 'OPTION' 'DIME' 3 'ELEM' CUB8 ;
  83. 'SI' ('NON' interact) ;
  84. 'OPTION' 'TRAC' 'PS' ;
  85. 'SINON' ;
  86. 'OPTION' 'TRAC' 'X' ;
  87. 'FINSI' ;
  88. *
  89. * Paramètres globaux
  90. *
  91. lisquaf = 'MOTS' 'TRI7' 'QUA9' 'TE15' 'PY19' 'PR21' 'CU27' ;
  92. lisel2 = 'MOTS' 'TRI3' 'TRI6' 'TRI7' 'QUA4' 'QUA8' 'QUA9' ;
  93. lisel3 = 'MOTS' 'TET4' 'TE10' 'TE15' 'PYR5' 'PY13' 'PY19'
  94. 'PRI6' 'PR15' 'PR21' 'CUB8' 'CU20' 'CU27' ;
  95. *
  96. * Liste de paramètres à tester :
  97. * lsort : canaux de sortie
  98. * lisov : type d'isovaleurs à tracer
  99. * ltypcha : quand on trace un champ, on peut choisir de le tracer comme
  100. * chpoint ou chamelem
  101. * lforcha : forme du champ à tracer :
  102. * 1) un champ valant 1 en un point bien choisi et zéro ailleurs
  103. * 2) une combinaison linéaire des coordonnées des noeuds
  104. * couvec : couleur des champs de vecteurs
  105. * ltypma2 : nom des maillages 2D à traiter (mis dans une table)
  106. * ltypma3 : nom des maillages 2D à traiter (mis dans une table)
  107. *
  108.  
  109.  
  110. 'SI' complet ;
  111. 'SI' interact ;
  112. lsort = 'MOTS' 'PS' 'PSC' 'X' 'OPEN' ;
  113. 'SINON' ;
  114. lsort = 'MOTS' 'PS' 'PSC' ;
  115. 'FINSI' ;
  116. lisov = 'MOTS' 'SURF' 'LIGN' 'SULI' ;
  117. ltypcha = 'MOTS' 'chpo' 'cham' ;
  118. lforcha = 'LECT' 1 2 ;
  119. 'SINON' ;
  120. 'SI' interact ;
  121. * lsort = 'MOTS' 'PS' 'PSC' 'X' 'OPEN' ;
  122. lsort = 'MOTS' 'PSC' 'X' ;
  123. * lsort = 'MOTS' 'X' ;
  124. 'SINON' ;
  125. * lsort = 'MOTS' 'PS' 'PSC' ;
  126. lsort = 'MOTS' 'PSC' ;
  127. 'FINSI' ;
  128. lisov = 'MOTS' 'SURF' 'LIGN' 'SULI' ;
  129. * lisov = 'MOTS' 'SURF' ;
  130. ltypcha = 'MOTS' 'chpo' 'cham' ;
  131. lforcha = 'LECT' 1 2 ;
  132. * ltypcha = 'MOTS' 'chpo' ;
  133. * lforcha = 'LECT' 1 ;
  134. 'FINSI' ;
  135. 'SI' interact ;
  136. couvec = 'JAUN' ;
  137. 'SINON' ;
  138. couvec = 'ROUG' ;
  139. 'FINSI' ;
  140. *
  141. * Les maillages à traiter en 2D et 3D : les maillages à un élément ont le même nom
  142. * que l'élément du même type
  143. * MCO2 : maillage "complexe" 2D ; MC2Q : le meme en quadratique : MC2F le meme
  144. * en quaf
  145. * MCO3 : maillage "complexe" 3D ...
  146. *
  147. ltypma2 = lisel2 'ET' ('MOTS' 'MCO2' 'MC2Q' 'MC2F') ;
  148. ltypma3 = lisel3 'ET' ('MOTS' 'MCO3' 'MC3Q' 'MC3F' 'MCOP') ;
  149. *
  150. * Procedure pour les traces de champ en 3D
  151. *
  152. 'DEBPROC' vtch3 ;
  153. 'ARGUMENT' el*'MAILLAGE' ;
  154. lcoup = faux ; lvect = faux ; lboit = faux ;
  155. lmotcle = 'MOTS' 'COUP' 'SECT' 'VECT' 'BOIT' ;
  156. 'REPETER' imotcle ;
  157. 'ARGUMENT' motcle/'MOT' ;
  158. 'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
  159. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  160. cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ;
  161. 'ERREUR' cherr ;
  162. 'FINSI' ;
  163. 'SI' ('EGA' motcle 'COUP') ;
  164. lcoup = vrai ; mocoup = 'CHAINE' 'COUP' ;
  165. 'FINSI' ;
  166. 'SI' ('EGA' motcle 'SECT') ;
  167. lcoup = vrai ; mocoup = 'SECT' ;
  168. 'FINSI' ;
  169. 'SI' ('EGA' motcle 'VECT') ;
  170. lvect = vrai ;
  171. 'FINSI' ;
  172. 'SI' ('EGA' motcle 'BOIT') ;
  173. lboit= vrai ;
  174. 'FINS' ;
  175. 'FIN' imotcle ;
  176. 'SI' ('ET' lboit ('OU' lvect lcoup)) ;
  177. cherr = 'CHAI' 'Option BOIT non compatible avec COUP et VECT' ;
  178. 'ERRE' cherr ;
  179. 'FINS' ;
  180. *
  181. pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  182. * pc1 = 1. 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  183. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  184. lquaf = 'EXISTE' lisquaf nomel ;
  185. 'SI' ('ET' sautquaf lquaf) ;
  186. 'MESSAGE' 'On saute lelement ' nomel ;
  187. 'QUITTER' vtch3 ;
  188. 'FINSI' ;
  189. 'SI' lvect ;
  190. xel yel zel = 'COORDONNEE' el ;
  191. vel = ('NOMC' 'UX' ('+' xel 1.))
  192. '+' ('NOMC' 'UY' ('+' yel 0.5)) '+'
  193. ('NOMC' 'UZ' ('+' zel 0.33)) ;
  194. vvel = 'VECT' vel 'DEPL' couvec ;
  195. 'FINSI' ;
  196. * Zoom * 2
  197. 'SI' lboit ;
  198. boitel = BOITE ('HOMO' el ('BARY' el) 0.5) ;
  199. 'FINS' ;
  200. 'SI' ('NEG' ('NBEL' el) 1) ;
  201. lcle = 'LECT' 2 ;
  202. 'SINON' ;
  203. lcle = lforcha ;
  204. 'FINSI' ;
  205. * TRAC cham chpo
  206. 'REPETER' iicle ('DIME' lcle) ;
  207. icle = 'EXTRAIRE' lcle &iicle ;
  208. 'SI' ('EGA' icle 1) ;
  209. evel = 'ENVELOPPE' el ;
  210. yevel = 'COORDONNEE' 2 evel ;
  211. ppp = 'POIN' yevel 'EGINFE' 1.D-10 ;
  212. fac = 'ELEM' evel 'APPUYE' 'STRICTEMENT' ppp ;
  213. 'SI' ('NEG' ('NBEL' fac) 1) ;
  214. 'LISTE' fac ;
  215. 'ERREUR' 'on devrait avoir un element dans fac' ;
  216. 'FINSI' ;
  217. p1 = 1. 0. 0. ;
  218. pb = 'BARYCENTRE' fac ;
  219. pb1 = 'PLUS' ('*' p1 0.1) ('*' pb 0.9) ;
  220. pel = 'POIN' evel 'PROC' pb1 ;
  221. cel = 'MANU' 'CHPO' pel 1 'SCAL' 1. ;
  222. 'FINSI' ;
  223. 'SI' ('EGA' icle 2) ;
  224. xel yel zel = 'COORDONNEE' el ;
  225. cel = xel '+' ('*' 0.1 yel) '+' ('*' 0.12 zel) ;
  226. 'FINSI' ;
  227. ccel = 'CHANGER' 'CHAM' cel el ;
  228. 'REPETER' isort ('DIME' lsort) ;
  229. mosort = 'EXTRAIRE' lsort &isort ;
  230. 'OPTI' 'TRAC' mosort ;
  231. 'REPETER' iisov ('DIME' lisov) ;
  232. moisov = 'EXTRAIRE' lisov &iisov ;
  233. 'OPTI' 'ISOV' moisov ;
  234. 'REPETER' icham ('DIME' ltypcha) ;
  235. iicham = &icham ;
  236. mocham = 'EXTRAIRE' ltypcha iicham ;
  237. 'SI' ('EGA' mocham 'chpo') ;
  238. tcel = cel ;
  239. tm = el ;
  240. 'FINSI' ;
  241. 'SI' ('EGA' mocham 'cham') ;
  242. tcel = ccel ;
  243. 'SI' lquaf ;
  244. tm = 'MODE' el 'NAVIER_STOKES' 'QUAF' ;
  245. 'SINON' ;
  246. tm = 'MODE' el 'THERMIQUE' ;
  247. 'FINSI' ;
  248. 'FINSI' ;
  249. ch = 'CHAINE' 'TRAC ' ;
  250. 'SI' lcoup ;
  251. ch = 'CHAINE' ch mocoup ' ' ;
  252. 'FINSI' ;
  253. 'SI' lvect ;
  254. ch = 'CHAINE' ch 'VECT ' ;
  255. 'FINSI' ;
  256. 'SI' lboit ;
  257. ch = 'CHAINE' ch 'BOIT ' ;
  258. 'FINSI' ;
  259. ch = 'CHAINE' ch mocham ' ' mosort ' ' moisov ' '
  260. nomel ;
  261. 'MESSAGE' ch ;
  262. lsaut = 'ET' ('EGA' nomel 'PY19') ('EGA' mocham 'cham') ;
  263. 'SI' lsaut ;
  264. 'MESSAGE' ' Pas de trace de chamelem en PY19 ' ;
  265. 'MESSAGE' ' Il manque les fns de forme du PY19 ' ;
  266. 'SINON' ;
  267. 'SI' lcoup ;
  268. 'SI' lvect ;
  269. 'TRACER' 'CACH' tcel tm el vvel mocoup pc1 pc2 pc3
  270. 'TITR' ch ;
  271. 'SINON' ;
  272. 'TRACER' 'CACH' tcel tm mocoup pc1 pc2 pc3
  273. 'TITR' ch ;
  274. 'FINSI' ;
  275. 'SINON' ;
  276. 'SI' lvect
  277. 'TRACER' 'CACH' tcel tm el vvel 'TITR' ch ;
  278. 'SINON' ;
  279. 'SI' lboit ;
  280. 'TRACER' 'CACH' tcel tm 'TITR' ch
  281. 'BOIT' boitel ;
  282. 'SINO' ;
  283. 'TRACER' 'CACH' tcel tm 'TITR' ch ;
  284. 'FINS' ;
  285. 'FINSI' ;
  286. 'FINSI' ;
  287. 'FINSI' ;
  288. 'FIN' icham ;
  289. 'FIN' iisov ;
  290. 'FIN' isort ;
  291. 'FIN' iicle ;
  292. 'FINPROC' ;
  293. *
  294. * Procedure pour les traces de champ en 2D
  295. * Pourrait etre rassemblee avec vtch3
  296. *
  297. 'DEBPROC' vtch2 ;
  298. 'ARGUMENT' el*'MAILLAGE' ;
  299. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  300. lquaf = 'EXISTE' lisquaf nomel ;
  301. 'SI' ('ET' sautquaf lquaf) ;
  302. 'MESSAGE' 'On saute lelement ' nomel ;
  303. 'QUITTER' vtch2 ;
  304. 'FINSI' ;
  305. 'SI' ('NEG' ('NBEL' el) 1) ;
  306. lcle = 'LECT' 2 ;
  307. 'SINON' ;
  308. lcle = lforcha ;
  309. 'FINSI' ;
  310. * TRAC cham chpo
  311. 'REPETER' iicle ('DIME' lcle) ;
  312. icle = 'EXTRAIRE' lcle &iicle ;
  313. 'SI' ('EGA' icle 1) ;
  314. p1 = 1. 0. ;
  315. pb = 'BARYCENTRE' el ;
  316. pb1 = 'PLUS' ('*' p1 0.1) ('*' pb 0.9) ;
  317. pel = 'POIN' el 'PROC' pb1 ;
  318. * pel = 'POIN' ('NBNO' el) ('CHANGER' 'POI1' el) ;
  319. cel = 'MANU' 'CHPO' pel 1 'SCAL' 1. ;
  320. 'FINSI' ;
  321. 'SI' ('EGA' icle 2) ;
  322. xel yel = 'COORDONNEE' el ;
  323. cel = xel '+' ('*' 0.1 yel) ;
  324. 'FINSI' ;
  325. ccel = 'CHANGER' 'CHAM' cel el ;
  326. *
  327. 'REPETER' isort ('DIME' lsort) ;
  328. mosort = 'EXTRAIRE' lsort &isort ;
  329. 'OPTI' 'TRAC' mosort ;
  330. 'REPETER' iisov ('DIME' lisov) ;
  331. moisov = 'EXTRAIRE' lisov &iisov ;
  332. 'OPTI' 'ISOV' moisov ;
  333. 'REPETER' icham ('DIME' ltypcha) ;
  334. iicham = &icham ;
  335. mocham = 'EXTRAIRE' ltypcha iicham ;
  336. 'SI' ('EGA' mocham 'chpo') ;
  337. tcel = cel ;
  338. tm = el ;
  339. 'FINSI' ;
  340. 'SI' ('EGA' mocham 'cham') ;
  341. tcel = ccel ;
  342. 'SI' lquaf ;
  343. tm = 'MODE' el 'NAVIER_STOKES' 'QUAF' ;
  344. 'SINON' ;
  345. tm = 'MODE' el 'THERMIQUE' ;
  346. 'FINSI' ;
  347. 'FINSI' ;
  348. ch = 'CHAINE' 'TRAC ' mocham ' ' mosort ' ' moisov ' '
  349. nomel ;
  350. 'MESSAGE' ch ;
  351. 'TRACER' tcel tm 'TITR' ch ;
  352. 'FIN' icham ;
  353. 'FIN' iisov ;
  354. 'FIN' isort ;
  355. 'FIN' iicle ;
  356. 'FINPROC' ;
  357. *
  358. * Procedure pour les traces de faces
  359. *
  360. 'DEBPROC' vtfac ;
  361. 'ARGUMENT' el*'MAILLAGE' ;
  362. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  363. lquaf = 'EXISTE' lisquaf nomel ;
  364. 'SI' ('ET' sautquaf lquaf) ;
  365. 'MESSAGE' 'On saute lelement ' nomel ;
  366. 'QUITTER' vtfac ;
  367. 'FINSI' ;
  368. 'MESSAGE' 'TRAC FACE ' nomel ;
  369. * TRAC FACE
  370. 'REPETER' isort ('DIME' lsort) ;
  371. mosort = 'EXTRAIRE' lsort &isort ;
  372. 'OPTI' 'TRAC' mosort ;
  373. ch = 'CHAINE' 'TRAC FACE ' mosort ' ' nomel ;
  374. 'MESSAGE' ch ;
  375. 'TRACER' 'FACE' el 'TITR' ch ;
  376. 'FIN' isort ;
  377. 'FINPROC' ;
  378. *
  379. * Procedure pour les traces de vecteur + coupe
  380. * Pourrait etre rassemblee avec vtch3
  381. *
  382. 'DEBPROC' vtcouvec ;
  383. 'ARGUMENT' el*'MAILLAGE' ;
  384. nomel = 'EXTRAIRE' ('ELEM' el 'TYPE') 1 ;
  385. lquaf = 'EXISTE' lisquaf nomel ;
  386. 'SI' ('ET' sautquaf lquaf) ;
  387. 'MESSAGE' 'On saute lelement ' nomel ;
  388. 'QUITTER' vtcouvec ;
  389. 'FINSI' ;
  390. pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ;
  391. xel yel zel = 'COORDONNEE' el ;
  392. vel = ('NOMC' 'UX' ('+' xel 1.))
  393. '+' ('NOMC' 'UY' ('+' yel 0.5)) '+' ('NOMC' 'UZ' ('+' zel 0.33)) ;
  394. vvel = 'VECT' vel 'DEPL' couvec ;
  395. * TRAC COUP vec
  396. 'REPETER' isort ('DIME' lsort) ;
  397. mosort = 'EXTRAIRE' lsort &isort ;
  398. 'OPTI' 'TRAC' mosort ;
  399. ch = 'CHAINE' 'TRAC COUP vec ' mosort ' ' nomel ;
  400. 'MESSAGE' ch ;
  401. 'TRACER' 'CACH' vvel el 'COUP' pc1 pc2 pc3 'TITR' ch ;
  402. 'FIN' isort ;
  403. 'FINPROC' ;
  404. *
  405. *'OPTI' debu 1 ;
  406. *
  407. * Debut du jeu de donnee
  408. *
  409. tmail = 'TABLE' ;
  410. *
  411. 'REPETER' idim 3 ;
  412. dim = &idim ;
  413. *dim=3 ;
  414. 'SI' ('EGA' dim 1) ;
  415. 'OPTI' 'DIME' 1 'ELEM' 'SEG2' ;
  416. *
  417. p1 = 'POIN' 0. ; p2 = 'POIN' 1. ;
  418. * p3 = 'POIN' 0.5 ;
  419. se2 = 'MANU' 'SEG2' p1 p2 ;
  420. se3 = 'CHANGER' se2 'QUAD' ;
  421. se2i = 'MANU' 'SEG2' p2 p1 ;
  422. se3i = 'CHANGER' se2i 'QUAD' ;
  423. * On ne teste rien en dimension 1 : on devrait :)
  424. 'FINSI' ;
  425. 'SI' ('EGA' dim 2) ;
  426. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  427. p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ;
  428. tr3 = 'MANU' 'TRI3' p1 p2 p3 ;
  429. tr6 = 'CHANGER' tr3 'QUAD' ;
  430. tr7 = 'CHANGER' tr6 'QUAF' ;
  431. *
  432. qu4 = 'MANU' 'QUA4' p1 p2 p3 p4 ;
  433. qu8 = 'CHANGER' qu4 'QUAD' ;
  434. qu9 = 'CHANGER' qu8 'QUAF' ;
  435. *
  436. tmail . 'TRI3' = tr3 ; tmail . 'TRI6' = tr6 ; tmail . 'TRI7' = tr7 ;
  437. tmail . 'QUA4' = qu4 ; tmail . 'QUA8' = qu8 ; tmail . 'QUA9' = qu9 ;
  438.  
  439.  
  440. mcon1 = 'CHANGER' 'TRI3' tr7 ;
  441. mcon2 = 'CHANGER' 'QUA4' qu9 ;
  442. mcons = 'ET' mcon1 ('PLUS' mcon2 (1. 0.)) ;
  443. * Suite a la fiche 9050, on trace sur un maillage composite surface+ligne
  444. mconl = 'PLUS' ('CHANGER' mcons 'LIGN') (0. 1.) ;
  445. mcon = mcons 'ET' mconl ;
  446. 'ELIMINATION' mcon 1.D-6 ;
  447. mcon = 'CHANGER' mcon 'LINE' ;
  448. mconq = 'CHANGER' mcon 'QUAD' ;
  449. mconqf = 'CHANGER' mconq 'QUAF' ;
  450. *
  451. tmail . 'MCO2' = mcon ; tmail . 'MC2Q' = mconq ;
  452. tmail . 'MC2F' = mconqf ;
  453.  
  454. 'SI' faux ;
  455. * TEST 2D hors boucle
  456. lsort = 'MOTS' 'PSC' 'X' ;
  457. lisov = 'MOTS' 'SURF' ;
  458. ltypcha = 'MOTS' 'chpo' ;
  459. lforcha = 'LECT' 1 2 ;
  460. VTCH2 tr7 ; VTCH2 tr6 ;
  461. 'ERREUR' stop ;
  462. 'FINSI' ;
  463.  
  464.  
  465. * TRAC FACE
  466. 'OPTI' debu 1 ;
  467. 'REPETER' i ('DIME' ltypma2) ;
  468. VTFAC (tmail . ('EXTRAIRE' ltypma2 &i)) ;
  469. 'FIN' i ;
  470. * TRAC CHPO CHAM
  471. 'REPETER' i ('DIME' ltypma2) ;
  472. VTCH2 (tmail . ('EXTRAIRE' ltypma2 &i)) ;
  473. 'FIN' i ;
  474. 'FINSI' ;
  475. 'SI' ('EGA' dim 3) ;
  476. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  477. p1 = 0. 0. 0. ; p2 = 1. 0. 0. ; p3 = 1. 1. 0. ; p4 = 0. 1. 0. ;
  478. p5 = 0. 0. 1. ; p6 = 1. 0. 1. ; p7 = 1. 1. 1. ; p8 = 0. 1. 1. ;
  479. tetr4 = 'MANU' 'TET4' p1 p2 p3 p5 ;
  480. tetr10 = 'CHANGER' tetr4 'QUAD' ;
  481. tetr15 = 'CHANGER' tetr10 'QUAF' ;
  482. pyra5 = 'MANU' 'PYR5' p1 p2 p3 p4 p5 ;
  483. pyra13 = 'CHANGER' pyra5 'QUAD' ;
  484. pyra19 = 'CHANGER' pyra13 'QUAF' ;
  485. pris6 = 'MANU' 'PRI6' p1 p2 p3 p5 p6 p7 ;
  486. pris15 = 'CHANGER' pris6 'QUAD' ;
  487. pris21 = 'CHANGER' pris15 'QUAF' ;
  488. cube8 = 'MANU' 'CUB8' p1 p2 p3 p4 p5 p6 p7 p8 ;
  489. cube20 = 'CHANGER' cube8 'QUAD' ;
  490. cube27 = 'CHANGER' cube20 'QUAF' ;
  491. *
  492. c1 = 'CHANGER' 'TET4' tetr15 ;
  493. c2 = 'CHANGER' 'QUAF' c1 ;
  494. c3_1 = 'CHANGER' 'CUB8' c2 ;
  495. c3_1 = 'ORIENTER' c3_1 ;
  496.  
  497. * Maillage composite (volume + surface + ligne)
  498. c3_2 = 'PLUS' ('CHANGER' c3_1 'LIGNE') (0. 0. 1.1) ;
  499. * c3_2 = 'PLUS' ('CHANGER' c3_1 'LIGNE') (0. 1.1 0.) ;
  500. c3_3 = 'CHANGER' c3_1 'SURFACE' ;
  501. c3_3 = 'PLUS' c3_3 (0. 1.1 0.) ;
  502. c3 = c3_1 'ET' c3_2 'ET' c3_3 ;
  503. 'ELIMINATION' c3 1.D-6 ;
  504. tt = c3 ;
  505. ttq = 'CHANGER' 'QUAD' tt ;
  506. ttqf = 'CHANGER' 'QUAF' ttq ;
  507. * Maillage composite 2 (volume + surface + ligne) plus simple
  508. t3_1 = tetr4 ;
  509. t3_2 = 'PLUS' ('CHANGER' t3_1 'LIGNE') (0. 0. 1.1) ;
  510. t3_3 = 'CHANGER' t3_1 'SURFACE' ;
  511. t3_3 = 'PLUS' t3_3 (0. 1.1 0.) ;
  512. t3 = t3_1 'ET' t3_2 'ET' t3_3 ;
  513. *
  514. tmail . 'TET4' = tetr4 ; tmail . 'TE10' = tetr10 ;
  515. tmail . 'TE15' = tetr15 ; tmail . 'PYR5' = pyra5 ;
  516. tmail . 'PY13' = pyra13 ; tmail . 'PY19' = pyra19 ;
  517. tmail . 'PRI6' = pris6 ; tmail . 'PR15' = pris15 ;
  518. tmail . 'PR21' = pris21 ; tmail . 'CUB8' = cube8 ;
  519. tmail . 'CU20' = cube20 ; tmail . 'CU27' = cube27 ;
  520. tmail . 'MCO3' = tt ; tmail . 'MC3Q' = ttq ;
  521. tmail . 'MC3F' = ttqf ; tmail . 'MCOP' = t3 ;
  522.  
  523. 'SI' faux ;
  524. * TEST 3D hors boucle
  525. lsort = 'MOTS' 'X' ;
  526. lisov = 'MOTS' 'SURF' ;
  527. ltypcha = 'MOTS' 'chpo' ;
  528. lforcha = 'LECT' 1 ;
  529. VTCH3 tetr4 'COUP' 'VECT' ; VTCOUVEC tetr4 ;
  530. 'ERREUR' stop ;
  531. 'FINSI' ;
  532. * TRAC FACE
  533. 'REPETER' i ('DIME' ltypma3) ;
  534. VTFAC (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  535. 'FIN' i ;
  536. * TRAC COUP VEC
  537. 'REPETER' i ('DIME' ltypma3) ;
  538. VTCOUVEC (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  539. 'FIN' i ;
  540. * TRAC CHAM CHPO
  541. 'REPETER' i ('DIME' ltypma3) ;
  542. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) ;
  543. 'FIN' i ;
  544. * TRAC CHAM CHPO COUP
  545. 'REPETER' i ('DIME' ltypma3) ;
  546. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'COUP' ;
  547. 'FIN' i ;
  548. * TRAC CHAM CHPO COUP VECT
  549. 'REPETER' i ('DIME' ltypma3) ;
  550. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'COUP' 'VECT' ;
  551. 'FIN' i ;
  552. * TRAC CHAM CHPO BOIT
  553. 'REPETER' i ('DIME' ltypma3) ;
  554. VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'BOIT' ;
  555. 'FIN' i ;
  556. 'FINSI' ;
  557. 'FIN' idim ;
  558.  
  559.  
  560. 'SI' interact ;
  561. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  562. 'FINSI' ;
  563.  
  564. *
  565. * End of dgibi file TRAC
  566. *
  567. 'FIN' ;
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  

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