************************************************************************ * NOM : TRAC * DESCRIPTION : Tester TRAC avec les QUAFs compares aux autres elements * suite aux modifications pour gerer correctement les * faces TRI7/QUA9. * Les modifs ont touche pas mal de subroutine de trace * celles issues de envvol (operateur ENVELOPPE) qui * tracent les isovaleurs. * On a simplifie la programmation, corrige des bugs mais * peut-etre introduit d'autres. * Voir operquaf.dgibi pour le test des operateurs de * maillage (ENVE, etc...) * * On pourrait egalement ajouter d'autres tests SECT, etc. * * Le test tel que identifie un certain nombre de bugs * visibles en sortie PSC : * 1) TET4 PRI6 : l'arete situe derriere est trace * ex: pages 132, 198 * 2) OPTI ISOV LIGNE en 3D ne gere pas totalement * correctement les parties cachees et les labels * particulierement sur les lineaires. * Sur les QUAD et surtout QUAFs, c'est mieux grace aux * noeuds centre face rajoute et au decoupage en * triangle barycentrique de chaque face * ex: pages 134, 152, 170, 272, 279 * 3) TRAC COUP + chpo/cham : facette non visible * tracee en chpo mais pas en cham * ex: pages 360, 361 * 4) Lorsqu'il y a a la fois des lignes et des surfaces * les segments apparaissent derriere les faces meme * s'ils sont devant. Mais cela semble etre voulu dans * faced2 ??? (cf. le -TDIST dans KFAC) * ex: pages 270, 288 * 5) Trace des champs sur des segments non geres en OPTI * ISOV LIGN * ex: pages 84, 82 * 5b) Trace des champs sur des surfaces mal gere en OPTI * ISOV LIGN * ex: page 290, 615 * 6) L'option COUP ne gere pas les segments * ex: page 131 * 7) Les traces chpo+vect ne trace pas le chpo sur le * maillage de segments * mais les traces cham+vect si ! (sauf option isov lign) * ex: pages 594, 595, 567 * 8) Option BOIT, le clipping Postcript tel que fait dans * strini introduit des effets * étranges sur certaines isovaleurs : iso et contour * non coherent. * ex: page 720 * On peut régler ce pb en modifiant strini, au prix * d'un passage de I4 en I5 sur l'écriture des entiers * dans le Postscript * * Il y a un logique sautquaf utilise pour tracer * uniquement les elements standard. Ceci a servi pour * tester la non-regression au moment de l'incorporation * des quafs * * Inspire de orieelem.dgibi * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 05/07/2016, version initiale * HISTORIQUE : v1, 05/07/2016, création * HISTORIQUE : 23/08/2016 : modif maillage complexe : melange ligne, * surface, volume suite fiche 9050 * HISTORIQUE : 29/11/2016 : ajout option boite pour zoomer un peu * (fiche 9218) * HISTORIQUE : 09/10/2018 : ajout champ constant strictement ou bruite * (fiche 9956) * HISTORIQUE : ************************************************************************ * * complet = FAUX ; interact= FAUX ; sautquaf= FAUX ; 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PS' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; * * Paramètres globaux * lisel3 = 'MOTS' 'TET4' 'TE10' 'TE15' 'PYR5' 'PY13' 'PY19' 'PRI6' 'PR15' 'PR21' 'CUB8' 'CU20' 'CU27' ; * * Liste de paramètres à tester : * lsort : canaux de sortie * lisov : type d'isovaleurs à tracer * ltypcha : quand on trace un champ, on peut choisir de le tracer comme * chpoint ou chamelem * lforcha : forme du champ à tracer : * 1) un champ valant 1 en un point bien choisi et zéro ailleurs * 2) une combinaison linéaire des coordonnées des noeuds * couvec : couleur des champs de vecteurs * ltypma2 : nom des maillages 2D à traiter (mis dans une table) * ltypma3 : nom des maillages 2D à traiter (mis dans une table) * 'SI' complet ; 'SI' interact ; 'SINON' ; 'FINSI' ; 'SINON' ; 'SI' interact ; * lsort = 'MOTS' 'PS' 'PSC' 'X' 'OPEN' ; * lsort = 'MOTS' 'X' ; 'SINON' ; * lsort = 'MOTS' 'PS' 'PSC' ; 'FINSI' ; * lisov = 'MOTS' 'SURF' ; * ltypcha = 'MOTS' 'chpo' ; * lforcha = 'LECT' 1 ; 'FINSI' ; 'SI' interact ; couvec = 'JAUN' ; 'SINON' ; couvec = 'ROUG' ; 'FINSI' ; * * Les maillages à traiter en 2D et 3D : les maillages à un élément ont le même nom * que l'élément du même type * MCO2 : maillage "complexe" 2D ; MC2Q : le meme en quadratique : MC2F le meme * en quaf * MCO3 : maillage "complexe" 3D ... * * * Procedure pour les traces de champ en 3D * 'DEBPROC' vtch3 ; 'ARGUMENT' el*'MAILLAGE' ; lcoup = faux ; lvect = faux ; lboit = faux ; 'REPETER' imotcle ; 'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ; 'SI' ('NON' ('EXISTE' lmotcle motcle)) ; cherr = 'CHAINE' 'Keyword' ' ' motcle ' unknown.' ; 'ERREUR' cherr ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' motcle 'SECT') ; lcoup = vrai ; mocoup = 'SECT' ; 'FINSI' ; lvect = vrai ; 'FINSI' ; 'SI' ('EGA' motcle 'BOIT') ; lboit= vrai ; 'FINS' ; 'FIN' imotcle ; 'SI' ('ET' lboit ('OU' lvect lcoup)) ; 'ERRE' cherr ; 'FINS' ; * pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ; * pc1 = 1. 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ; lquaf = 'EXISTE' lisquaf nomel ; 'SI' ('ET' sautquaf lquaf) ; 'MESSAGE' 'On saute lelement' ' ' nomel ; 'QUITTER' vtch3 ; 'FINSI' ; 'SI' lvect ; xel yel zel = 'COORDONNEE' el ; 'FINSI' ; * Zoom * 2 'SI' lboit ; 'FINS' ; 'SINON' ; lcle = lforcha ; 'FINSI' ; * TRAC cham chpo icle = 'EXTRAIRE' lcle &iicle ; 'SI' ('EGA' icle 1) ; evel = 'ENVELOPPE' el ; yevel = 'COORDONNEE' 2 evel ; 'LISTE' fac ; 'ERREUR' 'on devrait avoir un element dans fac' ; 'FINSI' ; p1 = 1. 0. 0. ; pb = 'BARYCENTRE' fac ; 'FINSI' ; 'SI' ('EGA' icle 2) ; xel yel zel = 'COORDONNEE' el ; cel = xel '+' ('*' 0.1 yel) '+' ('*' 0.12 zel) ; 'FINSI' ; ccel = 'CHANGER' 'CHAM' cel el ; mosort = 'EXTRAIRE' lsort &isort ; moisov = 'EXTRAIRE' lisov &iisov ; iicham = &icham ; mocham = 'EXTRAIRE' ltypcha iicham ; tcel = cel ; tm = el ; 'FINSI' ; 'SI' ('EGA' mocham 'cham') ; tcel = ccel ; 'SI' lquaf ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' lcoup ; ch = 'CHAINE' ch ' ' mocoup ; 'FINSI' ; 'SI' lvect ; 'FINSI' ; 'SI' lboit ; ch = 'CHAINE' ch ' BOIT' ; 'FINSI' ; ch = 'CHAINE' ch ' ' mocham ' ' mosort ' ' moisov ' ' nomel ; 'MESSAGE' ch ; lsaut = 'ET' ('EGA' nomel 'PY19') ('EGA' mocham 'cham') ; 'SI' lsaut ; 'MESSAGE' ' Pas de trace de chamelem en PY19 ' ; 'MESSAGE' ' Il manque les fns de forme du PY19 ' ; 'SINON' ; 'SI' lcoup ; 'SI' lvect ; 'TRACER' 'CACH' tcel tm el vvel mocoup pc1 pc2 pc3 'TITR' ch ; 'SINON' ; 'TRACER' 'CACH' tcel tm mocoup pc1 pc2 pc3 'TITR' ch ; 'FINSI' ; 'SINON' ; 'SI' lvect 'TRACER' 'CACH' tcel tm el vvel 'TITR' ch ; 'SINON' ; 'SI' lboit ; 'TRACER' 'CACH' tcel tm 'TITR' ch 'BOIT' boitel ; 'SINO' ; 'TRACER' 'CACH' tcel tm 'TITR' ch ; 'FINS' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FIN' icham ; 'FIN' iisov ; 'FIN' isort ; 'FIN' iicle ; 'FINPROC' ; * * Procedure pour les traces de champ en 2D * Pourrait etre rassemblee avec vtch3 * 'DEBPROC' vtch2 ; 'ARGUMENT' el*'MAILLAGE' ; lquaf = 'EXISTE' lisquaf nomel ; 'SI' ('ET' sautquaf lquaf) ; 'MESSAGE' 'On saute lelement' ' ' nomel ; 'QUITTER' vtch2 ; 'FINSI' ; 'SINON' ; lcle = lforcha ; 'FINSI' ; * TRAC cham chpo icle = 'EXTRAIRE' lcle &iicle ; 'SI' ('EGA' icle 1) ; p1 = 1. 0. ; pb = 'BARYCENTRE' el ; * pel = 'POIN' ('NBNO' el) ('CHANGER' 'POI1' el) ; 'FINSI' ; 'SI' ('EGA' icle 2) ; xel yel = 'COORDONNEE' el ; cel = xel '+' ('*' 0.1 yel) ; 'FINSI' ; ccel = 'CHANGER' 'CHAM' cel el ; * mosort = 'EXTRAIRE' lsort &isort ; moisov = 'EXTRAIRE' lisov &iisov ; iicham = &icham ; mocham = 'EXTRAIRE' ltypcha iicham ; tcel = cel ; tm = el ; 'FINSI' ; 'SI' ('EGA' mocham 'cham') ; tcel = ccel ; 'SI' lquaf ; 'SINON' ; 'FINSI' ; 'FINSI' ; ch = 'CHAINE' 'TRAC' ' ' mocham ' ' mosort ' ' moisov ' ' nomel ; 'MESSAGE' ch ; 'TRACER' tcel tm 'TITR' ch ; 'FIN' icham ; 'FIN' iisov ; 'FIN' isort ; 'FIN' iicle ; 'FINPROC' ; * * Procedure pour les traces de faces * 'DEBPROC' vtfac ; 'ARGUMENT' el*'MAILLAGE' ; lquaf = 'EXISTE' lisquaf nomel ; 'SI' ('ET' sautquaf lquaf) ; 'MESSAGE' 'On saute lelement' ' ' nomel ; 'QUITTER' vtfac ; 'FINSI' ; * TRAC FACE mosort = 'EXTRAIRE' lsort &isort ; 'MESSAGE' ch ; 'FIN' isort ; 'FINPROC' ; * * Procedure pour le trace d'un champ constant + un bruit * 'DEBPROC' vtccst ; 'ARGUMENT' el*'MAILLAGE' ; * lquaf = 'EXISTE' lisquaf nomel ; 'SI' ('ET' sautquaf lquaf) ; 'MESSAGE' 'On saute lelement' ' ' nomel ; 'QUITTER' vtccst ; 'FINSI' ; cel = '+' cel 'MESSAGE' tit ' ' nomel ; 'SINO' ; 'MESSAGE' tit ' ' nomel ; 'FINS' ; * TRAC CSTE mosort = 'EXTRAIRE' lsort &isort ; moisov = 'EXTRAIRE' lisov &iisov ; ch = 'CHAINE' tit ' ' mosort ' ' moisov ' ' nomel ; 'MESSAGE' ch ; 'TRACER' cel el 'TITR' ch ; 'FIN' iisov ; 'FIN' isort ; 'FINPROC' ; * * Procedure pour les traces de vecteur + coupe * Pourrait etre rassemblee avec vtch3 * 'DEBPROC' vtcouvec ; 'ARGUMENT' el*'MAILLAGE' ; lquaf = 'EXISTE' lisquaf nomel ; 'SI' ('ET' sautquaf lquaf) ; 'MESSAGE' 'On saute lelement ' nomel ; 'QUITTER' vtcouvec ; 'FINSI' ; pc1 = 0.6 0. 0. ; pc2 = 0.47 0. 1. ; pc3 = 0.54 1. 0. ; xel yel zel = 'COORDONNEE' el ; * TRAC COUP vec mosort = 'EXTRAIRE' lsort &isort ; 'MESSAGE' ch ; 'FIN' isort ; 'FINPROC' ; * *'OPTI' debu 1 ; * * Debut du jeu de donnee * tmail = 'TABLE' ; * 'REPETER' idim 3 ; dim = &idim ; *dim=3 ; 'SI' ('EGA' dim 1) ; * * p3 = 'POIN' 0.5 ; se3 = 'CHANGER' se2 'QUAD' ; se3i = 'CHANGER' se2i 'QUAD' ; * On ne teste rien en dimension 1 : on devrait :) 'FINSI' ; 'SI' ('EGA' dim 2) ; p1 = 0. 0. ; p2 = 1. 0. ; p3 = 1. 1. ; p4 = 0. 1. ; tr6 = 'CHANGER' tr3 'QUAD' ; tr7 = 'CHANGER' tr6 'QUAF' ; * qu8 = 'CHANGER' qu4 'QUAD' ; qu9 = 'CHANGER' qu8 'QUAF' ; * tmail . 'TRI3' = tr3 ; tmail . 'TRI6' = tr6 ; tmail . 'TRI7' = tr7 ; tmail . 'QUA4' = qu4 ; tmail . 'QUA8' = qu8 ; tmail . 'QUA9' = qu9 ; mcon1 = 'CHANGER' 'TRI3' tr7 ; 'ELIMINATION' mcon1 mcon2 1.D-6 ; mcons = mcon1 'ET' mcon2 ; * Suite a la fiche 9050, on trace sur un maillage composite surface+ligne 'ELIMINATION' mcons mconl 1.D-6 ; mcon = mcons 'ET' mconl ; mcon = 'CHANGER' mcon 'LINE' ; mconq = 'CHANGER' mcon 'QUAD' ; mconqf = 'CHANGER' mconq 'QUAF' ; * tmail . 'MCO2' = mcon ; tmail . 'MC2Q' = mconq ; tmail . 'MC2F' = mconqf ; 'SI' faux ; * TEST 2D hors boucle VTCH2 tr7 ; VTCH2 tr6 ; 'ERREUR' stop ; 'FINSI' ; * TRAC FACE VTFAC (tmail . ('EXTRAIRE' ltypma2 &i)) ; 'FIN' i ; * TRAC CHPO CHAM VTCH2 (tmail . ('EXTRAIRE' ltypma2 &i)) ; 'FIN' i ; 'FINSI' ; 'SI' ('EGA' dim 3) ; p1 = 0. 0. 0. ; p2 = 1. 0. 0. ; p3 = 1. 1. 0. ; p4 = 0. 1. 0. ; p5 = 0. 0. 1. ; p6 = 1. 0. 1. ; p7 = 1. 1. 1. ; p8 = 0. 1. 1. ; tetr10 = 'CHANGER' tetr4 'QUAD' ; tetr15 = 'CHANGER' tetr10 'QUAF' ; pyra13 = 'CHANGER' pyra5 'QUAD' ; pyra19 = 'CHANGER' pyra13 'QUAF' ; pris15 = 'CHANGER' pris6 'QUAD' ; pris21 = 'CHANGER' pris15 'QUAF' ; cube20 = 'CHANGER' cube8 'QUAD' ; cube27 = 'CHANGER' cube20 'QUAF' ; * c1 = 'CHANGER' 'TET4' tetr15 ; c2 = 'CHANGER' 'QUAF' c1 ; c3_1 = 'CHANGER' 'CUB8' c2 ; c3_1 = 'ORIENTER' c3_1 ; * Maillage composite (volume + surface + ligne) * c3_2 = 'PLUS' ('CHANGER' c3_1 'LIGNE') (0. 1.1 0.) ; c3_3 = 'CHANGER' c3_1 'SURFACE' ; c3 = c3_1 'ET' c3_2 'ET' c3_3 ; 'ELIMINATION' c3 1.D-6 ; tt = c3 ; ttq = 'CHANGER' 'QUAD' tt ; ttqf = 'CHANGER' 'QUAF' ttq ; * Maillage composite 2 (volume + surface + ligne) plus simple t3_1 = tetr4 ; t3_3 = 'CHANGER' t3_1 'SURFACE' ; t3 = t3_1 'ET' t3_2 'ET' t3_3 ; * tmail . 'TET4' = tetr4 ; tmail . 'TE10' = tetr10 ; tmail . 'TE15' = tetr15 ; tmail . 'PYR5' = pyra5 ; tmail . 'PY13' = pyra13 ; tmail . 'PY19' = pyra19 ; tmail . 'PRI6' = pris6 ; tmail . 'PR15' = pris15 ; tmail . 'PR21' = pris21 ; tmail . 'CUB8' = cube8 ; tmail . 'CU20' = cube20 ; tmail . 'CU27' = cube27 ; tmail . 'MCO3' = tt ; tmail . 'MC3Q' = ttq ; tmail . 'MC3F' = ttqf ; tmail . 'MCOP' = t3 ; 'SI' faux ; * TEST 3D hors boucle VTCCST (tmail . 'TET4') PI ; * VTCCST (tmail . 'MCO3') PI ; * VTCH3 tetr4 'COUP' 'VECT' ; VTCOUVEC tetr4 ; 'ERREUR' stop ; 'FINSI' ; * TRAC FACE VTFAC (tmail . ('EXTRAIRE' ltypma3 &i)) ; 'FIN' i ; * TRAC COUP VEC VTCOUVEC (tmail . ('EXTRAIRE' ltypma3 &i)) ; 'FIN' i ; * TRAC CHAM CHPO VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) ; 'FIN' i ; * TRAC CHAM CHPO COUP 'FIN' i ; * TRAC CHAM CHPO COUP VECT 'FIN' i ; * TRAC CHAM CHPO BOIT VTCH3 (tmail . ('EXTRAIRE' ltypma3 &i)) 'BOIT' ; 'FIN' i ; * TRAC CHPO CSTE Test un champ constant... mpi = pi '*' -1. ; s180 = 'SIN' 180. ; ms180 = '*' s180 -1. ; VTCCST (tmail . 'MCO3') PI ; VTCCST (tmail . 'MCO3') mPI ; VTCCST (tmail . 'MCO3') s180 ; VTCCST (tmail . 'MCO3') ms180 ; VTCCST (tmail . 'MCO3') 0. ; VTCCST (tmail . 'MCO3') PI ('*' s180 10) ; VTCCST (tmail . 'MCO3') mPI ('*' s180 10) ; VTCCST (tmail . 'MCO3') s180 s180 ; VTCCST (tmail . 'MCO3') ms180 s180 ; VTCCST (tmail . 'MCO3') 0. s180 ; 'FINSI' ; 'FIN' idim ; * 'SI' interact ; 'OPTION' 'DONN' 5 'ECHO' 1 ; 'FINSI' ; * * End of dgibi file TRAC * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales