* fichier : isov.dgibi ************************************************************************ ************************************************************************ 'OPTION' 'ECHO' 0 ; ************************************************************************ * NOM : ISOV * DESCRIPTION : Cas-test élémentaire pour l'opérateur ISOV * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 25/07/2014, version initiale * HISTORIQUE : v1, 25/07/2014, création * HISTORIQUE : v1.1, 12/03/2015, ajout cas plantage fiche 8433 * HISTORIQUE : ************************************************************************ * graph = faux ; interact = faux ; * 'DEBPROC' EGAMAIL ; 'ARGUMENT' mail1*'MAILLAGE' ; 'ARGUMENT' mail2*'MAILLAGE' ; 'RESPRO' lega ; 'FINPROC' ; * 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PS' ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; * * lok = vrai ; * * Cas des POI1 * * * lok = 'ET' lok ('EGA' lresu lref) ; 'SI' ('NON' lok) ; 'LISTE' lresu ; 'ERREUR' 5 ; 'FINSI' ; * * Cas des SEG2 * mm = 'DROIT' 3 p1 p2 ; unt = '/' 1. 3. ; xmm = 'COORDONNEE' 1 mm ; xmm2 = ('*' xmm 0.) '+' unt ; cmm = 'CHANGER' 'CHAM' xmm mm ; * Pour tester les MCHAML constants *cmm2 = 'CHANGER' 'CHAM' xmm2 mm ; * unt = '/' 1. 3. ; pasunt = 0.3333333333 ; lok = lok 'ET' (EGAMAIL r1 punt) ; *'LISTE' r1 ; lok = lok 'ET' (EGAMAIL r2 mm) ; *'LISTE' r2 ; *'LISTE' r3 ; lok = lok 'ET' (EGAMAIL r4 mref) ; *'LISTE' r4 ; lok = lok 'ET' (EGAMAIL ('INTERSECTION' r5 mm) mref) ; *'LISTE' r5 ; lok = lok 'ET' (EGAMAIL r4b mrefb) ; *'LISTE' r4b ; mpcom = 'INTERSECTION' ('CHANGER' r5b 'POI1') ('CHANGER' mrefb 'POI1') ; *'LISTE' r5b ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; * * Cas des TRI3 * deut = '/' 2. 3. ; cinqt = '/' 5. 3. ; * pA = 0. 0. ; pB = deut 0. ; pC = deut cinqt ; pD = 0. cinqt ; mm = tri1 'ET' tri2 ; xmm ymm = 'COORDONNEE' mm ; xmm2 = ('*' xmm 0.) '+' unt ; xym = ('+' ('*' 2.5 xmm) ('*' 1. ('-' ymm cinqt))) '+' unt ; axym = ('ABS' ('-' ('*' 2.5 xmm) ('*' 1. ymm))) '+' unt ; xym2 = ('-' ('*' 2.5 xmm) ('*' 1. ymm )) '+' unt ; cmm = 'CHANGER' 'CHAM' xym mm ; *cmm2 = 'CHANGER' 'CHAM' xmm2 mm ; cmm3 = 'CHANGER' 'CHAM' axym mm ; cmm4 = 'CHANGER' 'CHAM' xym2 mm ; *'LISTE' cmm ; *'LISTE' cmm3 ; * *vr1 = vsur ('MODE' r1 mecanique elastique isotrope coq2) 'NORM' ; *'LISTE' vr1 ; *'OPTION' 'DONN' 5 ; lok = lok 'ET' (EGAMAIL r1 mr1) ; * *'LISTE' r2 ; mr2 = tri2 ; lok = lok 'ET' (EGAMAIL r2 mr2) ; * *!!!! 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; * rmm = 'CHANGER' mm 'QUAF' ; rmm = 'CHANGER' rmm 'TRI3' ; xmm ymm = 'COORDONNEE' rmm ; 'SI' graph ; 'TRACER' rmm ; 'FINSI' ; xy2 = ('**' ('/' xmm deut) 2) '+' ('**' ('/' ymm cinqt) 2) '+' unt ; * cxy2 = 'CHANGER' 'CHAM' xy2 rmm ; 'SI' graph ; 'TRACER' xy2 rmm ; 'FINSI' ; * vcher = '+' 1 unt ; 'SI' graph ; 'FINSI' ; *'LISTE' vv5a ; *'LISTE' vv5b ; *'LISTE' vv5c ; lok = lok 'ET' ('EGA' vv5a 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv5b 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv5b 0. 1.D-13) ; volex = '*' deut cinqt ; volmm = 'MESURE' mm ; dvolmm = '-' volmm volex ; *'LISTE' dvolmm ; lok = lok 'ET' ('EGA' dvolmm 0. 1.D-13) ; vol5b = 'MESURE' r5b ; vol5c = 'MESURE' r5c ; vol5 = vol5b '+' vol5c ; dvol5 = '-' vol5 volex ; *'LISTE' dvol5 ; lok = lok 'ET' ('EGA' dvol5 0. 1.D-13) ; * vcher = 1.33 ; 'SI' graph ; 'FINSI' ; *'LISTE' vv6a ; *'LISTE' vv6b ; *'LISTE' vv6c ; lok = lok 'ET' ('EGA' vv6a 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv6b 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv6b 0. 1.D-13) ; vol6b = 'MESURE' r6b ; vol6c = 'MESURE' r6c ; vol6 = vol6b '+' vol6c ; dvol6 = '-' vol6 volex ; *'LISTE' dvol6 ; lok = lok 'ET' ('EGA' dvol6 0. 1.D-13) ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; * * Cas des TET4 * p1 = 0. 0. 0. ; p2 = pi 0. 0. ; p3 = 0. 2.5 0. ; p4 = 0. 0. ('/' 10. 3.) ; tet1 = p1 'ET' p2 'ET' p3 'ET' p4 ; vinf = 0. ; vmoy = cinqt ; vsup = pi ; * * On parcourt des cas standards (isovaleur=surface) * tabcas = 'TABLE' ; 'REPETER' ikas dkas ; lval = tabcas . &ikas ; *lval = 'PROG' vinf vinf vsup vsup ; 'SI' graph ; 'TRACER' cval tet ; 'FINSI' ; ccval = 'CHANGER' 'CHAM' cval tet ; * vcher = vmoy ; 'SI' graph ; 'FINSI' ; * 'LISTE' vv1a ; * 'LISTE' vv1b ; * 'LISTE' vv1c ; lok = lok 'ET' ('EGA' vv1a 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1b 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1c 0. 1.D-13) ; volex = 'MESURE' tet ; vol1b = 'MESURE' r1b ; vol1c = 'MESURE' r1c ; vol1 = vol1b '+' vol1c ; dvol1 = '-' vol1 volex ; * 'LISTE' dvol1 ; lok = lok 'ET' ('EGA' dvol1 0. 1.D-13) ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ikas ; * * Le diamant triangulaire * p1 = 0. 0. 0. ; p2 = pi 0. 0. ; p3 = 0. 2.5 0. ; p4 = 0. 0. ('/' 10. 3.) ; p5 = pi 2.5 ('/' 10. 3.) ; tet = teta 'ET' tetb ; tet1 = p1 'ET' p2 'ET' p3 'ET' p4 'ET' p5 ; vinf = 0. ; vmoy = cinqt ; vsup = pi ; * * On parcourt quelques cas particuliers * tabcas = 'TABLE' ; tabega = 'TABLE' ; tabsup = 'TABLE' ; tabinf = 'TABLE' ; tabega . 1 = p1 'ET' p5 ; tabinf . 1 = tet ; tabsup . 1 = tabega . 1 ; * tabinf . 2 = tabega . 2; tabsup . 2 = tet ; * tabinf . 3 = tet ; tabsup . 3 = tabega . 3 ; * tabinf . 4 = tetb ; tabsup . 4 = teta ; * tabega . 5 = tet ; tabinf . 5 = tet ; tabsup . 5 = tet ; * 'REPETER' ikas dkas ; lval = tabcas . &ikas ; 'SI' graph ; 'TRACER' cval tet ; 'FINSI' ; ccval = 'CHANGER' 'CHAM' cval tet ; * vcher = vmoy ; * 'LISTE' r1a ; * 'LISTE' r1b ; * 'LISTE' r1c ; 'SI' graph ; 'FINSI' ; lok = lok 'ET' (EGAMAIL r1a (tabega . &ikas)) ; lok = lok 'ET' (EGAMAIL r1b (tabsup . &ikas)) ; lok = lok 'ET' (EGAMAIL r1c (tabinf . &ikas)) ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ikas ; * * On parcourt des cas plus standards (isovaleur = surface) * tabcas = 'TABLE' ; 'REPETER' ikas dkas ; lval = tabcas . &ikas ; *lval = 'PROG' vinf vinf vsup vsup ; 'SI' graph ; 'TRACER' cval tet ; 'FINSI' ; ccval = 'CHANGER' 'CHAM' cval tet ; * vcher = vmoy ; * 'LISTE' r1a ; * 'LISTE' r1b ; * 'LISTE' r1c ; 'SI' graph ; 'FINSI' ; * 'LISTE' vv1a ; * 'LISTE' vv1b ; * 'LISTE' vv1c ; lok = lok 'ET' ('EGA' vv1a 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1b 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1c 0. 1.D-13) ; volex = 'MESURE' tet ; vol1b = 'MESURE' r1b ; vol1c = 'MESURE' r1c ; vol1 = vol1b '+' vol1c ; dvol1 = '-' vol1 volex ; * 'LISTE' dvol1 ; lok = lok 'ET' ('EGA' dvol1 0. 1.D-13) ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ikas ; * * Cas d'un cube * nm = 3 ; pO = 0. 0. 0. ; pA = 1. 0. 0. ; pB = 0. 1. 0. ; pC = 0. 0. 1. ; lOA = 'DROIT' nm pO pA ; lOB = 'DROIT' nm pO pB ; bas = 'TRANSLATION' lOA nm pB ; fro = 'TRANSLATION' lOA nm pC ; gau = 'TRANSLATION' lOB nm pC ; emt = bas 'ET' hau 'ET' gau 'ET' dro 'ET' fro 'ET' rea ; 'ELIMINATION' emt 1.D-6 ; mt = 'VOLUME' emt ; volex = 'MESURE' mt ; 'TRACER' mt cach ; amt = 'ARETE' mt ; xmt ymt zmt = 'COORDONNEE' mt ; rmt = '**' (('**' xmt 2) '+' ('**' ymt 2) '+' ('**' zmt 2)) 0.5 ; crmt = 'CHANGER' 'CHAM' rmt mt ; 'SI' graph ; 'TRACER' rmt mt ; 'FINSI' ; 'REPETER' ival dval ; vcher = 'EXTRAIRE' lval &ival ; 'SI' graph ; 'FINSI' ; * 'LISTE' vv1a ; * 'LISTE' vv1b ; * 'LISTE' vv1c ; lok = lok 'ET' ('EGA' vv1a 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1b 0. 1.D-13) ; lok = lok 'ET' ('EGA' vv1c 0. 1.D-13) ; vol1b = 'MESURE' r1b ; vol1c = 'MESURE' r1c ; vol1 = vol1b '+' vol1c ; dvol1 = '-' vol1 volex ; * 'LISTE' dvol1 ; lok = lok 'ET' ('EGA' dvol1 0. 1.D-13) ; 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' ival ; * * Un cas qui plantait sèchement avant la fiche 8433 * * * Carré initial nmail = 1 ; lAB = 'DROIT' nmail pA pB ; lBC = 'DROIT' nmail pB pC ; lCD = 'DROIT' nmail pC pD ; lDA = 'DROIT' nmail pD pA ; bas = 'DALLER' lAB lBC lCD lDA ; mt = 'VOLUME' nmail bas hau ; mtq = 'CHANGER' mt 'QUAF' ; mt = 'CHANGER' mtq 'TET4' ; xmt ymt zmt = 'COORDONNEE' mt ; cymt = 'CHANGER' 'CHAM' ymt mt ; micymt = 'MINIMUM' cymt ; 'MESSAGE' ('CHAINE' 'micymt=' micymt) ; * Verif micymtr = 'MINIMUM' cymtr ; 'MESSAGE' ('CHAINE' 'micymtr=' micymtr) ; lok = lok 'ET' ('>EG' micymtr 0.) ; * * Un cas qui donnait un résultat incorrect sur semt2 avant la fiche 8625 * *'OPTI' echo 1 'TRACER' x ; graph = vrai ; p1 = 1. 0. ; p2 = 2. 0. ; d1 = 'DROIT' 2 p1 p2 ; mai = d1 'ROTATION' 10 60 (0. 0.) ; cx cy = 'COORDONNEE' mai ; cr = '**' ('+' ('**' cx 2) ('**' cy 2)) 0.5 ; ct = 'ATG' cy cx ; 'SI' graph ; 'TRACER' cr mai 'TITR' 'R' ; 'TRACER' ct mai 'TITR' 'theta' ; 'FINSI' ; 'SI' graph ; 'FINSI' ; * Verif pmisor = 'CHANGER' misor 'POI1' ; * On fait une petite homothetie car inclus est trop strict pmisor = 'HOMOTHETIE' pmisor 0.99 ('BARYCENTRE' pmisor) ; pmisor2 = pmisor 'INCLUS' mai 'LARG' ; pmisot = 'CHANGER' misot 'POI1' ; pmisot = 'HOMOTHETIE' pmisot 0.99 ('BARYCENTRE' pmisot) ; pmisot2 = pmisot 'INCLUS' mai 'LARG' ; lok = lok 'ET' tst1 'ET' tst2 ; * 'SI' ('NON' lok) ; 'ERREUR' 5 ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; * 'SI' interact ; 'OPTION' 'ECHO' 1 ; 'OPTION' 'DONN' 5 ; 'FINSI' ; * * End of dgibi file ISOV * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales