* fichier : mailtopo.dgibi ************************************************************************ ************************************************************************ graph = vrai ; interact = faux ; impr = 1 ; ************************************************************************ * NOM : MAILTOPO * DESCRIPTION : Tests du mailleur topologique utilise * dans les operateurs TRIA TOPO et REMA * Geometries variees mais tenseur metrique homogene et * isotrope * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 31/10/2025, version initiale * HISTORIQUE : v1, 31/10/2025, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * * Procedures * ************************************************************************ * NOM : GENTEST * DESCRIPTION : Génère une table contenant des cas-tests pour * utilisation dans mailtopo * * Pour l'instant, tous ces cas ont une métrique constante. * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA) * mél : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 28/11/2017, version initiale * HISTORIQUE : v1, 28/11/2017, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * 'DEBPROC' GENTEST ; * ikas = 0 ; * l2f = 'EGA' nomdbase 'mailtopo_2d_fast' ; l2s = 'EGA' nomdbase 'mailtopo_2d_slow' ; l3f = 'EGA' nomdbase 'mailtopo_3d_fast' ; l3s = 'EGA' nomdbase 'mailtopo_3d_slow' ; 'SI' (l2f 'OU' l2s 'OU' l3f 'OU' l3s) ; 'SI' ('OU' l2s l2f) ; 'FINS' ; 'SI' ('OU' l3s l3f) ; 'FINS' ; * braff = 1 : on génère un maillage sans insertion de noeud * braff = 2 : on génère un maillage avec insertion de noeud * braff = 3 : on raffine * braff = 4 : on déraffine * braff = 5 : on améliore 'REPE' braff 5 ; iraff = &braff ; * 'REPE' braff 1 ; * iraff = 4 ; icont = &bcont ; * Par défaut 'SI' l2f ; 'SI' ('EGA' ccont 'SELL') ; 'FINS' ; 'SI' ('OU' ('EGA' ccont 'TOC3') ('EGA' ccont 'TOR2')) ; 'SI' ('ET' ('EGA' ccont 'TOR2') ('<' iraff 3)) ; 'FINS' ; 'FINS' ; 'FINS' ; 'SI' l2s ; 'SI' ('EGA' ccont 'SELL') ; 'FINS' ; 'SI' ('OU' ('EGA' ccont 'TOC3') ('EGA' ccont 'TOR2')) ; 'SI' ('ET' ('EGA' ccont 'TOR2') ('<' iraff 3)) ; 'FINS' ; 'FINS' ; 'FINS' ; 'SI' l3f ; 'FINS' ; 'SI' l3s ; 'FINS' ; * 'SI' ('>' ddens 0) ; 'REPE' bidens ddens ; * ikas = '+' ikas 1 ; * tloc . 'idk' = idk ; * Génération de la topologie initiale topoini = gencont ccont idens ; lcar = 0.0 ; 'FINS' ; 'SI' ('EGA' iraff 3) ; cini = gencont ccont 1 ; 'SI' ('EGA' vdim 2) ; 'SINO' ; 'FINS' ; lcar = '/' 1. ('FLOT' idens) ; 'FINS' ; cini = gencont ccont idens ; 'SI' ('EGA' vdim 2) ; 'SINO' ; 'FINS' ; 'SI' ('EGA' iraff 4) ; lcar = 2. ; 'FINS' ; 'SI' ('EGA' iraff 5) ; lcar = '/' 1. ('FLOT' idens) ; 'FINS' ; 'FINS' ; tloc . 'topoini' = topoini ; tloc . 'lcar' = lcar ; tloc . 'ijob' = '-' iraff 1 ; 'SINO' ; tloc . 'ijob' = 2 ; 'FINS' ; 'FIN' bidens ; 'FINS' ; 'FIN' bcont ; 'FIN' braff ; 'FINS' ; * * 'RESPRO' tkas ; * * End of procedure file GENTEST * 'FINPROC' ; ************************************************************************ * NOM : GENCONT * DESCRIPTION : * * Procédure pour générer un contour ou une enveloppe dont on veut mailler * l'intérieur * SELL : en forme de pointe de flèche * on peut donner 1,2 ou 4 arguments entiers qui sont les nombres * de mailles des cotes * TORE : deux cercles concentriques * on peut donner 1 ou 2 arguments entiers qui sont le nombre de * mailles/4 de chaque cercle * On peut donner 2 arguments flottants qui sont le rapport * d'homothetie et un angle de rotation * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : stephane.gounand@cea.fr ********************************************************************** * VERSION : v1, 25/08/2016, version initiale * HISTORIQUE : v1, 25/08/2016, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * 'DEBPROC' GENCONT ; * lmail = 'MOTS' 'SELL' 'TORE' 'TOCO' 'TOC2' 'ISOC' 'TETR' 'CYCU' 'CERV' 'CRV2' 'TRIE' 'TRIR' 'QUAD' 'TETE' 'CUBE' 'SEL3' 'CYC2' 'TOC3' 'CYCO' 'TOR2' ; 'SI' ('EGA' imail 0) ; 'ERREUR' cherr ; 'FINSI' ; * * 'SELL' * 'SI' ('EGA' imail 1) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; n3 = n2 ; n4 = n2 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n2 ; n4 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = n1 ; n3 = tn . 2 ; n4 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 4) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = tn . 4 ; 'FINSI' ; * pA = -1. 2. ; pB = 0. 0. ; pC = 1. 2. ; pD = 0. 1. ; * lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ; lCD = 'DROIT' n3 pC pD ; lDA = 'DROIT' n4 pD pA ; * cnt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ; 'FINSI' ; * * 'TORE' * 'SI' ('EGA' imail 2) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; 'FINSI' ; tn = 'TABLE' ; 'REPETER' liflo ; 'ARGUMENT' iflo/'FLOTTANT' ; 'SI' ('EXISTE' iflo) ; tn . &liflo = iflo ; 'SINON' ; 'QUITTER' liflo ; 'FINSI' ; 'FIN' liflo ; rhomo = 2. ; angle = 0. ; 'SI' ('>EG' dtn 1) ; rhomo = tn . 1 ; 'FINSI' ; 'SI' ('>EG' dtn 2) ; angle = tn . 2 ; 'FINSI' ; n1 = '*' n1 2 ; n2 = '*' n2 2 ; * pA = 1. 0. ; pB = 0. 1. ; pC = -1. 0. ; pD = 0. -1. ; pE pF pG pH = 'HOMOTHETIE' pA pB pC pD rhomo (0. 0.) ; pE pF pG pH = 'TOURNER' pE pF pG pH angle (0. 0.) ; * cere = lEG 'ET' lGE ; * ceri = 'INVERSE' (lAC 'ET' lCA) ; * cnt = ceri 'ET' cere ; 'FINSI' ; * * 'TOCO' * 'SI' ('EGA' imail 3) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; n3 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; 'FINSI' ; tn = 'TABLE' ; 'REPETER' liflo ; 'ARGUMENT' iflo/'FLOTTANT' ; 'SI' ('EXISTE' iflo) ; tn . &liflo = iflo ; 'SINON' ; 'QUITTER' liflo ; 'FINSI' ; 'FIN' liflo ; rhomo = 2. ; angle = 0. ; ouvert = 0. ; 'SI' ('>EG' dtn 1) ; rhomo = tn . 1 ; 'FINSI' ; 'SI' ('>EG' dtn 2) ; angle = tn . 2 ; 'FINSI' ; 'SI' ('>EG' dtn 3) ; ouvert = tn . 3 ; 'FINSI' ; n1 = '*' n1 2 ; n2 = '*' n2 2 ; * pAp = 1. ouvert ; pB = 0. 1. ; pC = -1. 0. ; pD = 0. -1. ; pAm = 1. ('*' ouvert -1.) ; pEp pEm pF pG pH = 'HOMOTHETIE' pAp pAm pB pC pD rhomo (0. 0.) ; pEp pEm pF pG pH = 'TOURNER' pEp pEm pF pG pH angle (0. 0.) ; * lEA = 'DROIT' n3 pEm pAm ; lAE = 'DROIT' n3 pAp pEp ; cnt= LEG 'ET' lGE 'ET' lEA 'ET' lAC 'ET' lCA 'ET' lAE ; * 'FINSI' ; * * 'TOC2' * 'SI' ('EGA' imail 4) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 2 ; n2 = n1 ; n3 = n1 ; n4 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; n4 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ; n4 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 4) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = tn . 4 ; 'FINSI' ; tn = 'TABLE' ; 'REPETER' liflo ; 'ARGUMENT' iflo/'FLOTTANT' ; 'SI' ('EXISTE' iflo) ; tn . &liflo = iflo ; 'SINON' ; 'QUITTER' liflo ; 'FINSI' ; 'FIN' liflo ; rhomo = 2. ; angle = 0. ; ouvert = 1.D-7 ; 'SI' ('>EG' dtn 1) ; rhomo = tn . 1 ; 'FINSI' ; 'SI' ('>EG' dtn 2) ; angle = tn . 2 ; 'FINSI' ; 'SI' ('>EG' dtn 3) ; ouvert = tn . 3 ; 'FINSI' ; * pAp = 1. ouvert ; pC = -1. 0. ; pAm = 1. ('*' ouvert -1.) ; pEp pEm pG = 'HOMOTHETIE' pAp pAm pC rhomo (0. 0.) ; pEp pEm pG = 'TOURNER' pEp pEm pG angle (0. 0.) ; * lEA = 'DROIT' n2 pEm pAm ; lAE = 'DROIT' n4 pAp pEp ; cnt= cE 'ET' lEA 'ET' cA 'ET' lAE ; * 'FINSI' ; * * 'ISOC' * 'SI' ('EGA' imail 5) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 2 ; n2 = n1 ; n3 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; 'FINSI' ; tn = 'TABLE' ; 'REPETER' liflo ; 'ARGUMENT' iflo/'FLOTTANT' ; 'SI' ('EXISTE' iflo) ; tn . &liflo = iflo ; 'SINON' ; 'QUITTER' liflo ; 'FINSI' ; 'FIN' liflo ; angle = 60. ; 'SI' ('>EG' dtn 1) ; angle = tn . 1 ; 'FINSI' ; * pA = 0. 0. ; pB = 1. 0. ; pc = ('COS' angle) ('SIN' angle) ; lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ; lCA = 'DROIT' n3 pC pA ; * cnt= lAB 'ET' lBC 'ET' lCA ; * 'FINSI' ; * * 'TETR' ou 'TETE' * 'SI' ('OU' ('EGA' imail 6) ('EGA' imail 13)) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ; 'FINSI' ; * 'SI' ('EGA' imail 6) ; pA = 0. 0. 0. ; pB = 1. 0. 0. ; pC = 0. 1. 0. ; pD = 0. 0. 1. ; 'FINS' ; 'SI' ('EGA' imail 13) ; uns2 = 0.5 ; muns2 = -0.5 ; unsr8 = 8. '**' -0.5 ; munsr8 = '*' unsr8 -1. ; pA = muns2 0. munsr8 ; pB = uns2 0. munsr8 ; pC = 0. uns2 unsr8 ; pD = 0. muns2 unsr8 ; 'FINS' ; * Aretes lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ; lCA = 'DROIT' n3 pC pA ; lBD = 'DROIT' n4 pB pD ; lDA = 'DROIT' n5 pD pA ; lCD = 'DROIT' n6 pC pD ; * Orientations importantes !! reprises de 'CHAN' 'SURFACE' * Faces ABC, BDC, CDA, ADB cABC = lAB 'ET' lBC 'ET' lCA ; sABC = 'SURFACE' cABC 'PLANE' ; sBDC = 'SURFACE' cBDC 'PLANE' ; sCDA = 'SURFACE' cCDA 'PLANE' ; sADB = 'SURFACE' cADB 'PLANE' ; cnt = sABC 'ET' sBDC 'ET' sCDA 'ET' sADB ; * 'FINSI' ; * * 'CYCU' Un cylindre dans un cube 'CYCO' la meme chose mais bien orienté * 'SI' ('OU' ('EGA' imail 7) ('EGA' imail 18)) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 2 ; n2 = 1 ; n3 = 1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; 'FINSI' ; * tn = 'TABLE' ; 'REPETER' liflo ; 'ARGUMENT' iflo/'FLOTTANT' ; 'SI' ('EXISTE' iflo) ; tn . &liflo = iflo ; 'SINON' ; 'QUITTER' liflo ; 'FINSI' ; 'FIN' liflo ; rcyl = 0.75 ; angle = 0. ; 'SI' ('>EG' dtn 1) ; rcyl = tn . 1 ; 'FINSI' ; 'SI' ('>EG' dtn 2) ; angle = tn . 2 ; 'FINSI' ; * mrcyl = ('*' rcyl -1.) ; pA = rcyl 0. 0. ; pB = 0. rcyl 0. ; pC = mrcyl 0. 0. ; pD = 0. mrcyl 0. ; pA pB pC pD = 'TOURNER' pA pB pC pD (0. 0. 0.) (0. 0. 1.) angle ; pE = 1. -1. 0. ; pF = 1. 1. 0. ; pG = -1. 1. 0. ; pH = -1. -1. 0. ; * cerb = ctc1 'ET' ctc2 ; carb = 'DROIT' n2 pE pF 'DROIT' n2 pG 'DROIT' n2 pH 'DROIT' n2 pE ; bas = 'SURFACE' ('ET' carb ('INVERSE' cerb)) 'PLANE' ; suri = 'REGLER' n3 cerb cerh ; sure = 'REGLER' n3 carb carh ; 'SI' ('EGA' imail 7) ; cnt = bas 'ET' hau 'ET' suri 'ET' sure ; 'FINS' ; 'SI' ('EGA' imail 18) ; 'FINS' ; * 'FINSI' ; * * 'CERV' Cerveau * 'SI' ('EGA' imail 8) ; * 'OPTI' 'REST' '/test4/gounand/rebecca/cerveauf42.sauv' ; cnt = bbord ; * 'FINSI' ; * * 'CRV2' Cerveau 2 * 'SI' ('EGA' imail 9) ; * 'OPTI' 'REST' '/test4/gounand/rebecca/cerv143_best.sauv' ; * 'FINSI' ; * * 'TRIE' Triangle Equilateral 'TRIR' Triangle Isocel rectangle * 'SI' ('OU' ('EGA' imail 10) ('EGA' imail 11)) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; n3 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; 'FINSI' ; 'SI' ('EGA' imail 10) ; pA = 0. 0. ; pB = 1. 0. ; pC = 0.5 ('SIN' 60.) ; 'FINSI' ; 'SI' ('EGA' imail 11) ; pA = 0. 0. ; pB = 1. 0. ; pC = 0. 1. ; 'FINSI' ; lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ; lCA = 'DROIT' n3 pC pA ; * cnt= lAB 'ET' lBC 'ET' lCA ; * 'FINSI' ; * * 'QUAD' Quadrangle * 'SI' ('EGA' imail 12) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; n1 = 1 ; n2 = n1 ; n3 = n1 ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; n4 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 2) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ; n4 = n2 ; 'FINSI' ; 'SI' ('EGA' dtn 3) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = n1 ; 'FINSI' ; 'SI' ('EGA' dtn 4) ; n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = tn . 4 ; 'FINSI' ; pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ; lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ; lCD = 'DROIT' n3 pC pD ; lDA = 'DROIT' n4 pD pA ; * cnt= lAB 'ET' lBC 'ET' lCD 'ET' lDA ; * 'FINSI' ; * * 'CUBE' Cube * 'SI' ('EGA' imail 14) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; 'SINO' ; 'FINSI' ; * pA = 0. 0. 0. ; pB = 1. 0. 0. ; pC = 1. 1. 0. ; pD = 0. 1. 0. ; pE = 0. 0. 1. ; pF = 1. 0. 1. ; pG = 1. 1. 1. ; pH = 0. 1. 1. ; * Aretes lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n1 pB pC ; lCD = 'DROIT' n1 pC pD ; lDA = 'DROIT' n1 pD pA ; * lEF = 'DROIT' n1 pE pF ; lFG = 'DROIT' n1 pF pG ; lGH = 'DROIT' n1 pG pH ; lHE = 'DROIT' n1 pH pE ; * lAE = 'DROIT' n1 pA pE ; lBF = 'DROIT' n1 pB pF ; lCG = 'DROIT' n1 pC pG ; lDH = 'DROIT' n1 pD pH ; * * Orientations importantes !! reprises de 'CHAN' 'SURFACE' * Faces EHGF, DCGH, BFGC, ADHE, AEFB, ABCD cABCD = lAB 'ET' lBC 'ET' lCD 'ET' lDA ; * cnt= sEHGF 'ET' sDCGH 'ET' sBFGC 'ET' sADHE 'ET' sAEFB 'ET' sABCD ; * 'FINSI' ; * * 'SEL3' Equivalent de SELL en 3D * 'SI' ('EGA' imail 15) ; tn = 'TABLE' ; 'REPETER' lient ; 'ARGUMENT' ient/'ENTIER' ; 'SI' ('EXISTE' ient) ; tn . &lient = ient ; 'SINON' ; 'QUITTER' lient ; 'FINSI' ; 'FIN' lient ; 'SI' ('EGA' dtn 1) ; n1 = tn . 1 ; 'SINO' ; 'FINSI' ; * uns2 = 0.5 ; muns2 = -0.5 ; unsr8 = 8. '**' -0.5 ; munsr8 = '*' unsr8 -1. ; pA = muns2 0. munsr8 ; pB = uns2 0. munsr8 ; pC = 0. uns2 unsr8 ; pD = 0. muns2 unsr8 ; * Aretes lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n1 pB pC ; lCA = 'DROIT' n1 pC pA ; lBD = 'DROIT' n1 pB pD ; lDA = 'DROIT' n1 pD pA ; * lEF = 'DROIT' n1 pE pF ; lFC = 'DROIT' n1 pF pC ; lCE = 'DROIT' n1 pC pE ; lFD = 'DROIT' n1 pF pD ; lDE = 'DROIT' n1 pD pE ; * Orientations importantes !! reprises de 'CHAN' 'SURFACE' * Faces EFC, FDBC, ECAD, EDF * Faces CBA, ABD cEFC = lEF 'ET' lFC 'ET' lCE ; cABD = lAB 'ET' lBD 'ET' lDA ; * * cnt = sEFC 'ET' sFDBC 'ET' sECAD 'ET' sEDF 'ET' sCBA 'ET' sABD ; * 'FINSI' ; * * 'CYC2' Raccourci pour les arguments de CYCU * 'SI' ('EGA' imail 16) ; * * 'MESS' 'Avant appel' ; cnt = GENCONT 'CYCO' ('*' ient 2) ient ient 0.88 5. ; * 'MESS' 'Apres appel' ; * 'FINSI' ; * * 'TOC3' Raccourci pour les arguments de TOCO * 'SI' ('EGA' imail 17) ; * cnt = GENCONT 'TOCO' ient 2. 0. 0.001 ; * 'FINSI' ; * * 'TOR2' Raccourci pour les arguments de TORE * 'SI' ('EGA' imail 19) ; * cnt = GENCONT 'TORE' ient 2. 5. ; * 'FINSI' ; * 'RESPRO' cnt ; * * End of procedure file GENCONT * 'FINPROC' ; * * Fin Procedures * * lgentest = vrai : On génère la base sous forme de .sauv * lgentest = faux : On lit la base et on vérifie. lgentest = vrai ; lsauv = faux ; * * * On ne peut pas encore faire isens=1 pour cause de pas de 'INVE' LIST * * * tibas . 'nombase' = 'mailtopo_2d_fast' ; tibas . 'nomdate' = '20171218_135310' ; * Pas de cas en erreur dans cette base * tibas . 'nombase' = 'mailtopo_2d_slow' ; tibas . 'nomdate' = '20171218_135311' ; * Le cas 5 r1cTOC3d3 ne converge pas sur le volume * tibas . 'nombase' = 'mailtopo_3d_fast' ; tibas . 'nomdate' = '20171218_135312' ; * Le cas 30 r4cSEL3d2 perd son bord (a regarder) *tibas . 'lkerrref' = 'LECT' 30 ; * Depuis l'implementation des noeuds virtuels multiples * (2025-11-19) : plus de pbs. * tibas . 'nombase' = 'mailtopo_3d_slow' ; tibas . 'nomdate' = '20171218_135318' ; * Pas de cas en erreur dans cette base 'SI' faux ; 'FINS' ; * 'SI' interact ; 'SINO' ; 'FINS' ; * * Paramètres globaux * * lsyntax = 2 : passage de la densité constante à l'opérateur sous forme * d'un réel * lsyntax = 3 : passage de la densité constante à l'opérateur sous forme * d'un chpoint à une composante (inverse du tenseur * métrique proportionnel à I diagonal) * lsyntax = 4 : passage de la densité constante à l'opérateur sous forme * d'un chpoint à d(d+1)/2 composantes (tenseur * anisotrope en x y z) * lsyntax = 4 ; * *'REPE' bclbas 2 ; nsoucbas = 0 ; ibas = &bclbas ; tibas = tbas . ibas ; nombase = tibas . 'nombase' ; nomdate = tibas . 'nomdate' ; * mmdat = mydate ; 'SI' ('NON' interact) ; 'SI' lsauv ; '.ps' ; 'OPTI' 'FTRA' nomfic ; '.txt' ; * 'SINO' ; * nomfic = 'CHAI' nombase '_' mmdat '.ps' ; * 'MESS' ('CHAI' 'Fichier image ' nomfic) ; * 'OPTI' 'FTRA' nomfic ; 'FINS' ; 'FINSI' ; * ************************************************************************** * Début JDD * * DESCRIPTION : IJOB=0 * Minimise le volume d'une topologie de maillage * en le maintenant supérieur à 0 * IJOB=1 * Minimise le volume, mais on a le droit d'ajouter des * noeuds internes * IJOB=2 * La topologie de maillage est supposée être un maillage * On essaie de l'améliorer en conservant son volume * mais en augmentant sa qualité grace a l'adjonction * de noeuds internes * tikas = GENTEST nombase ; * * Boucle de test * 'MESS' ' ' nombase ' :' ' ' nkas ' cas' ; nsouckas = 0 ; *nkas = 1; 'REPE' bkas nkas ; * Récupération des données du test ikas = &bkas ; * ikas = 41 ; tloc = tikas . ikas ; topoini = tloc . 'topoini' ; lcar = tloc . 'lcar' ; ijob = tloc . 'ijob' ; idk = tloc . 'idk' ; *RESUPAR ; * 'SI' ('EGA' ijob 2) ; 'SI' ('EGA' lsyntax 2) ; metmo = 'CSTE' ; metva = lcar ; 'FINS' ; 'SI' ('EGA' lsyntax 3) ; metmo = 'ISOT' ; coef = lcar '**' -2 ; 'FINS' ; 'SI' ('EGA' lsyntax 4) ; coef = lcar '**' -2 ; 'G31' 0. 'G32' 0. 'G33' coef 'NATURE' 'DIFFUSE' ; 'FINS' ; 'FINS' ; * * Comme les tests sont un peu coûteux, on ne verifie que la base 1 'SI' ('EGA' ibas 1) ; iseqm = 1 ; vseqm = 1 ; iopto = 0 ; vopto = 2 ; isegadj = 0 ; 'SINO' ; iseqm = 0 ; vseqm = 0 ; iopto = 0 ; vopto = 0 ; isegadj = 0 ; 'FINS' ; * Optionnel tparam . 'impr' = impr ; tparam . 'graph' = graph ; tparam . 'id_cas' = idk ; tparam . 'max_iter' = 100 ; tparam . 'sort_seqm' = iseqm ; tparam . 'veri_seqm' = vseqm ; tparam . 'veri_opto' = vopto ; tparam . 'impr_opto' = iopto ; tparam . 'impr_segadj_opto' = isegadj ; tparam . 'strat_fast' = faux ; * * 'SI' ('EGA' ijob 0) ; 'FINS' ; 'SI' ('EGA' ijob 1) ; 'FINS' ; 'SI' ('EGA' ijob 2) ; 'FINS' ; * * 'SI' sc ; nsouckas = nsouckas '+' 1 ; nsoucbas = nsoucbas '+' 1 ; lcaserr = lcaserr 'ET' ikas ; 'FINS' ; tloc . 'souci' = sc ; tloc . 'tstelem' = nctelem ; tloc . 'tstnoeu' = nctno ; tloc . 'tstparcou' = tparam . 'nparcou' ; tloc . 'tstexplor' = tparam . 'nexplor' ; tloc . 'tstchange' = tparam . 'nchange' ; * tloc . 'tstdvol' = tparam . 'dvol' ; tloc . 'tstnnul' = tparam . 'nnul' ; tloc . 'tstmiq' = tparam . 'miq' ; tloc . 'tstmaq' = tparam . 'maq' ; tloc . 'tstmeq' = tparam . 'meq' ; * tibas . 'lcaserr' = lcaserr ; * Fin de la boucle sur les cas 'FIN' bkas ; 'SI' ('>' nsouckas 0) ; 'SINO' ; 'FINS' ; * * Sauvegarde éventuelle * *'OPTI' echo 1 ; * *'SI' lsauv ; 'SAUTER' 1 'LIGNE' ; 'SAUTER' 1 'LIGNE' ; *'FINS' ; * 'SI' lgentest ; 'SI' lsauv ; lgg1 = lgentest ; lgg2 = lsauv ; lgg3 = nombase ; lgg4 = nomdate ; lgg5 = nomfic ; 'SAUV' tikas ; lgentest = lgg1 ; lsauv = lgg2 ; nombase = lgg3 ; nomdate = lgg4 ; nomfic = lgg5 ; 'FINS' ; * * Etape de test * 'SINO' ; tikasn = tikas ; lgg6 = debug ; lgg7 = test ; 'REST' ; debug = lgg6 ; test = lgg7 ; * *tst nkasn = 1 ; nkas = 1 ; 'SI' ('NEG' nkas nkasn) ; 'ERRE' cherr ; 'FINS' ; lidglob = vrai ; lokglob = vrai ; 'REPE' bkas nkas ; ikas = &bkas ; *tst ikas = 3 ; * 'MESS' ('CHAI' 'Numero du cas : ' ikas ' / ' nkas) ; tlocn = tikasn . ikas ; tloc = tikas . ikas ; idkn = tlocn . 'idk' ; idk = tloc . 'idk' ; 'SI' ('NEG' idkn idk) ; cherr = 'CHAI' chcas ' ' 'Les cas a comparer sont differents ? : ' idk ' ' idkn ; 'ERRE' cherr ; 'FINS' ; vsouci = tloc . 'souci' ; vnctelem = tloc . 'tstelem' ; vnctno = tloc . 'tstnoeu' ; vnparcou = tloc . 'tstparcou' ; vnexplor = tloc . 'tstexplor' ; vnchange = tloc . 'tstchange' ; souci = tlocn . 'souci' ; nctelem = tlocn . 'tstelem' ; nctno = tlocn . 'tstnoeu' ; nparcou = tlocn . 'tstparcou' ; nexplor = tlocn . 'tstexplor' ; nchange = tlocn . 'tstchange' ; * * 2017/12/04 Petite tolérance sur les nombres de configuration * ntol=1 ; lid = vrai ; lid = lid 'ET' ('EGA' vsouci souci) ; lid = lid 'ET' ('EGA' vnctelem nctelem) ; lid = lid 'ET' ('EGA' vnctno nctno) ; lid = lid 'ET' ('EGA' vnparcou nparcou) ; lid = lid 'ET' ('EGA' vnexplor nexplor) ; lid = lid 'ET' ('EGA' vnchange nchange) ; lok = vrai ; lok = lok 'ET' ('OU' ('EGA' vsouci souci) vsouci) ; lok = lok 'ET' ('EGA' vnctelem nctelem) ; lok = lok 'ET' ('EGA' vnctno nctno) ; lok = lok 'ET' ('>EG' vnparcou ('-' nparcou ntol)) ; lok = lok 'ET' ('>EG' vnexplor ('-' nexplor ntol)) ; * lok = lok 'ET' ('EGA' vnchange nchange) ; lok = lok 'ET' ('>EG' vnchange ('-' nchange ntol)) ; * 2eme partie des tests ajoutés après le 28/08/2017 'SI' ltest2 ; * 'MESS' '2eme partie des tests effectuee' ; vdvol = tloc . 'tstdvol' ; vnnul = tloc . 'tstnnul' ; vmiq = tloc . 'tstmiq' ; vmaq = tloc . 'tstmaq' ; vmeq = tloc . 'tstmeq' ; dvol = tlocn . 'tstdvol' ; nnul = tlocn . 'tstnnul' ; miq = tlocn . 'tstmiq' ; maq = tlocn . 'tstmaq' ; meq = tlocn . 'tstmeq' ; *2017/12/04 On n'essaie pas de faire mieux que la tolérance par défaut * sur la qualité et le volume votol = 1.D-11 ; qutol = 1.D-2 ; *tst vmiq = vmiq '+' 1.D-10 ; lid = lid 'ET' ('EGA' vdvol dvol votol) ; lid = lid 'ET' ('EGA' vnnul nnul) ; lid = lid 'ET' ('EGA' vmiq miq qutol) ; lid = lid 'ET' ('EGA' vmaq maq qutol) ; lid = lid 'ET' ('EGA' vmeq meq qutol) ; * lok = lok 'ET' ('EGA' vdvol dvol votol) ; lok = lok 'ET' ('EGA' vnnul nnul) ; lok = lok 'ET' ('<EG' ('-' vmiq qutol) miq) ; lok = lok 'ET' ('<EG' ('-' vmaq qutol) maq) ; lok = lok 'ET' ('<EG' ('-' vmeq qutol) meq) ; 'SINO' ; 'MESS' '!! ' chcas ' Attention, on na pas fait la 2eme partie des tests'; 'FINS' ; lidglob = lidglob 'ET' lid ; lokglob = lokglob 'ET' lok ; 'SI' ('OU' ('NON' lid) ('NON' lok)) ; 'SI' ('NON' lok) ; 'SINO' ; 'FINS' ; 'MESS' chcas ' ' ch ; 'MESS' tit ; titt = 'CHAINE' 'Topologie: parcourues=' nparcou ' examinees=' nexplor ' changees=' nchange ; 'MESSAGE' titt ; 'SI' ltest2 ; titq = 'CHAINE' 'FORMAT' '(E9.2)' ' Dvol=' dvol ' NelV0=' nnul ' Qmin=' miq ' Qmax=' maq ' Qmed=' meq ; 'MESS' titq ; 'FINS' ; 'MESS' ch ; 'MESS' tit ; titt = 'CHAINE' 'Topologie: parcourues=' vnparcou ' examinees=' vnexplor ' changees=' vnchange ; 'MESSAGE' titt ; 'SI' ltest2 ; titq = 'CHAINE' 'FORMAT' '(E9.2)' ' Dvol=' vdvol ' NelV0=' vnnul ' Qmin=' vmiq ' Qmax=' vmaq ' Qmed=' vmeq ; 'MESS' titq ; 'FINS' ; 'MESS' ch ; tit = 'CHAINE' 'dnbe=' ('-' nctelem vnctelem) ' ; dnbn=' ('-' nctno vnctno) ; 'MESS' tit ; titt = 'CHAINE' 'Topologie: parcourues=' ('-' nparcou vnparcou) ' examinees=' ('-' nexplor vnexplor) ' changees=' ('-' nchange vnchange) ; 'MESSAGE' titt ; 'SI' ltest2 ; titdq = 'CHAINE' 'FORMAT' '(E9.2)' ' DDvo=' ('-' dvol vdvol) ' DQmi=' ('-' miq vmiq) ' DQma=' ('-' maq vmaq) ' DQme=' ('-' meq vmeq) ; 'MESS' titdq ; 'FINS' ; * 'ERRE' 'stop' ; 'SI' ('NON' lok) ; 'MESS' '!!!!! CHECKME' ; 'SINO' ; 'MESS' '!!!!! Nouvelle reference' ; 'FINS' ; 'SINO' ; 'MESS' chcas ' Ok' ; 'FINS' ; * 'SAUT' 1 'LIGNE' ; 'FIN' bkas ; * 'SI' lokglob ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe...') ; 'SI' ('NON' lidglob) ; 'MESSAGE' ('CHAINE' '...avec des ameliorations.') ; 'SINO' ; 'MESSAGE' ('CHAINE' '...resultats identiques a la ref.') ; 'FINS' ; 'SINO' ; 'SI' lidglob ; 'MESS' '!!!!! Ce cas est impossible, verifiez le programme' ; 'FINS' ; 'ERRE' 'Il y a eu des regressions !!' ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; 'FINS' ; * 'FIN' bclbas ; 'SI' ('>' nsoucbas 0) ; 'SINO' ; 'FINS' ; * * Test au 2025/11/10 * lok = vrai ; lokb = vrai ; ibas = &bclbas ; tibas = tbas . ibas ; nombase = tibas . 'nombase' ; lkerrref = tibas . 'lkerrref' ; lcaserr = tibas . 'lcaserr' ; 'SI' ('NEG' dlk dlkr) ; lokb = lokb 'ET' faux ; 'SINO' ; 'SI' ('NEG' ddlk 0) ; lokb = lokb 'ET' faux ; 'FINS' ; 'FINS' ; 'SI' ('NON' lokb) ; 'FINS' ; lok = lok 'ET' lokb ; 'FIN' bclbas ; * 'SI' ('NON' lok) ; 'MESSAGE' ('CHAINE' '!!! Il y a eu des erreurs') ; 'SINON' ; 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ; 'FINSI' ; * 'SI' interact ; 'FINS' ; 'SI' ('NON' lok) ; 'FINS' ; * * End of dgibi file MAILTOPO * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales