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

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