$$$$ @INCLUSI * @INCLUSI PROCEDUR SP204843 24/03/15 21:15:05 11871 'DEBP' @INCLUSI THO7U*'TABLE' DPAR1*'FLOTTANT' DREP1*'FLOTTANT' ; * * *----------------------------------------------------------------------* * * * Pre-traitement Maillage Particules-Matrice * * * *----------------------------------------------------------------------* * * *------------------------ Lecture des entrees -------------------------* * * * Entrees : * * --------- * * THO7U : Table maillage cube Voronoi ; * * DPAR1 : Diametre des particules ; * * DREP1 : Distance de repulsion ; * * DENS1 : Densite de reference ; * * ITRA1 : Indicateur traces ; * 'ARGU' DENS1/'FLOTTANT' ; 'SI' ('NON' ('EXIS' DENS1)) ; DENS1 = 0.25 * (('FLOT' ('NBNO' THO7U . 'MPT')) ** (-1. / 3.)) ; 'FINS' ; 'ARGU' ITRA1/'LOGIQUE' ; 'SI' ('NON' ('EXIS' ITRA1)) ; ITRA1 = FAUX ; 'FINS' ; * * * Variables locales : * * ------------------- * * VOR1 : Maillage aretes cellules de Voronoi ; * * MPOI1 : Points centre des cellules ; * * RPAR1 : Rayon des particules ; * * ELIGM1 : Epaisseur Minimale des ligaments de matrice ; * * FTET1 : Facteur de forme des tetraedres (rapport Cote/Hauteur * * tetraedre regulier) ; * * DENSM1 : Densite minimale du maillage ~ demi-distance entre + petit * * ligament de matrice possible (au facteur de forme Pres) ; * * XELIM1 : Facteur d'elimination noeuds des polyedres ; * * RELIM1 : Rayon d'elimination des noeuds sommets des cellules de * * Voronoi ; * * TOL1 : Tolerance ~ precision de la geometrie ; * * * MVOR1 = THO7U . 'MAV' ; MPOI1 = THO7U . 'MPT' ; RPAR1 = 0.5 * DPAR1 ; ELIGM1 = (0.5 * DREP1) - RPAR1 ; FTET1 = 1.5 ** 0.5 ; DENSM1 = FTET1 * ELIGM1 ; XELIM1 = 0.2 ; RELIM1 = XELIM1 * DENS1 ; TOL1 = 1.E-3 * ELIGM1 ; * * *------ Elimination Sommets "Tres Proches" Cellules de Voronoi --------* * * * Elimination des petites aretes de la partition de Voronoi : * 'ELIM' MVOR1 RELIM1 ; * * * Recollement des faces de la partition sur celle du cube unite : * PM1 = 0. 0. 0. ; PM2 = 1. 0. 0. ; PM3 = 1. 1. 0. ; PM4 = 0. 1. 0. ; PM5 = 0. 0. 1. ; PM6 = 1. 0. 1. ; PM7 = 1. 1. 1. ; PM8 = 0. 1. 1. ; 'DEPL' (THO7U . 'FACE1') 'PROJ' 'DIRE' (-1. * PM5) 'PLAN' PM1 PM2 PM3 ; 'DEPL' (THO7U . 'FACE2') 'PROJ' 'DIRE' (-1. * PM4) 'PLAN' PM1 PM2 PM5 ; 'DEPL' (THO7U . 'FACE3') 'PROJ' 'DIRE' (-1. * PM2) 'PLAN' PM1 PM4 PM5 ; 'DEPL' (THO7U . 'FACE4') 'PROJ' 'DIRE' PM2 'PLAN' PM2 PM3 PM6 ; 'DEPL' (THO7U . 'FACE5') 'PROJ' 'DIRE' PM4 'PLAN' PM3 PM4 PM7 ; 'DEPL' (THO7U . 'FACE6') 'PROJ' 'DIRE' PM5 'PLAN' PM5 PM6 PM7 ; * * VELE1 = 'VALE' 'ELEM' ; 'OPTI' 'ELEM' 'CUB8' ; MVCB1 = ((PM1 'DROI' 1 PM2) 'TRAN' 1 PM4) 'VOLU' 'TRAN' 1 PM5 ; 'OPTI' 'ELEM' VELE1 ; MSCB1 = 'ENVE' MVCB1 ; MACB1 = 'ARET' MVCB1 ; MPCB1 = 'CHAN' 'POI1' MVCB1 ; * * *----------------------- Travail Preparatoire -------------------------* * * * 1. "Nettoyer" les contours des faces + Reperage Faces Bord Cube ; * * 2. Reperer les aretes ; * * * * 1. Nettoyages des Faces + Reperage Faces Bord Cube : * NBI1 = 'NBEL' MPOI1 ; TIP8V = 'TABL' ; IPREMI1 = VRAI ; 'REPE' BI1 NBI1 ; PCI1 = MPOI1 'POIN' &BI1 ; TIP8V . PCI1 = 'TABL' ; MPTI1 = THO7U . PCI1 . 'MPT' ; NBJ1 = NBNO MPTI1 ; IPREMJ1 = VRAI ; * * * Boucle sur les faces des polyedres : * 'REPE' BJ1 NBJ1 ; PCJ1 = MPTI1 'POIN' &BJ1 ; CNTIJ1 = THO7U . PCI1 . PCJ1 . 'MAV' ; NBPCIJ1 = NBNO CNTIJ1 ; 'SI' (NBPCIJ1 '<' 3) ; 'ITER' BJ1 ; 'FINS' ; * * * Si cette Face a deja ete traitee, on recopie puis on itere : * 'SI' ('EXIS' TIP8V PCJ1) ; TIP8V . PCI1 . PCJ1 = 'TABL' ; TIP8V . PCI1 . PCJ1 . 'MAV' = TIP8V . PCJ1 . PCI1 . 'MAV' ; TIP8V . PCI1 . PCJ1 . 'EXT' = TIP8V . PCJ1 . PCI1 . 'EXT' ; 'SI' IPREMJ1 ; IPREMJ1 = FAUX ; TIP8V . PCI1 . 'MPT' = PCJ1 ; TIP8V . PCI1 . 'MAV' = TIP8V . PCJ1 . PCI1 . 'MAV' ; 'SINO' ; TIP8V . PCI1 . 'MPT' = TIP8V . PCI1 . 'MPT' 'ET' PCJ1 ; TIP8V . PCI1 . 'MAV' = TIP8V . PCI1 . 'MAV' 'ET' TIP8V . PCJ1 . PCI1 . 'MAV' ; 'FINS' ; 'ITER' BJ1 ; 'FINS' ; * * * Sinon, on teste NBNO-NBEL pour det. presence aretes degenerees : * * CNTIJ2 sera le contour valide de la Face. * 'SI' (NBPCIJ1 'EGA' ('NBEL' CNTIJ1)) ; CNTIJ2 = CNTIJ1 ; 'SINO' ; * Si aretes degenerees => reconstruction du contour : * NBK1 = 'NBEL' CNTIJ1 ; IPREMK1 = VRAI ; 'REPE' BK1 NBK1 ; ELK1 = CNTIJ1 'ELEM' &BK1 ; PSK1 = ELK1 'POIN' 1 ; PSK2 = ELK1 'POIN' 2 ; 'SI' (PSK1 'NEG' PSK2) ; 'SI' IPREMK1 ; IPREMK1 = FAUX ; CNTIJ2 = ELK1 ; 'SINO' ; CNTIJ2 = CNTIJ2 'ET' ELK1 ; 'FINS' ; 'FINS' ; 'FIN' BK1 ; 'FINS' ; * On ordonne CNTIJ2 ; * CNTIJ2 = CNTIJ2 'ELEM' 'COMP' (CNTIJ2 'POIN' 1) (CNTIJ2 'POIN' 1) ; * * * Construction d'un point ref. pour la Face Si Face situee sur les * * Bords du Cube (PCJ2) : * IEXT1 = 'NON' ('EXIS' THO7U PCJ1) ; 'SI' IEXT1 ; NX0 = 0 ; NY0 = 0 ; NZ0 = 0 ; NX1 = 0 ; NY1 = 0 ; NZ1 = 0 ; NBK1 = NBNO CNTIJ2 ; 'REPE' BK1 NBK1 ; PSK1 = CNTIJ2 'POIN' &BK1 ; XK1 YK1 ZK1 = PSK1 'COOR' ; 'SI' (XK1 'EGA' 0.) ; NX0 = NX0 + 1 ; 'FINS' ; 'SI' (YK1 'EGA' 0.) ; NY0 = NY0 + 1 ; 'FINS' ; 'SI' (ZK1 'EGA' 0.) ; NZ0 = NZ0 + 1 ; 'FINS' ; 'SI' (XK1 'EGA' 1.) ; NX1 = NX1 + 1 ; 'FINS' ; 'SI' (YK1 'EGA' 1.) ; NY1 = NY1 + 1 ; 'FINS' ; 'SI' (ZK1 'EGA' 1.) ; NZ1 = NZ1 + 1 ; 'FINS' ; 'FIN' BK1 ; NMAX1 = 'MAXI' ('LECT' NX0 NY0 NZ0 NX1 NY1 NZ1) ; 'SI' (NMAX1 'EGA' NX0) ; PRCIJ1 = PM1 ; PNCIJ1 = -1. 0. 0. ; 'FINS' ; 'SI' (NMAX1 'EGA' NX1) ; PRCIJ1 = PM2 ; PNCIJ1 = 1. 0. 0. ; 'FINS' ; 'SI' (NMAX1 'EGA' NY0) ; PRCIJ1 = PM1 ; PNCIJ1 = 0. -1. 0. ; 'FINS' ; 'SI' (NMAX1 'EGA' NY1) ; PRCIJ1 = PM4 ; PNCIJ1 = 0. 1. 0. ; 'FINS' ; 'SI' (NMAX1 'EGA' NZ0) ; PRCIJ1 = PM1 ; PNCIJ1 = 0. 0. -1. ; 'FINS' ; 'SI' (NMAX1 'EGA' NZ1) ; PRCIJ1 = PM5 ; PNCIJ1 = 0. 0. 1. ; 'FINS' ; *List NMAX1 ; List PRCIJ1 ; List PNCIJ1 ; *Trac ((CNTIJ2 Coul Roug) Et A1) ; XR1 YR1 ZR1 = PNCIJ1 'COOR' ; PTCIJ1 = ZR1 XR1 YR1 ; PTCIJ2 = YR1 ZR1 XR1 ; PPCIJ1 = PRCIJ1 'PLUS' PTCIJ1 ; PPCIJ2 = PRCIJ1 'PLUS' PTCIJ2 ; PCJ2 = PCI1 'SYME' 'PLAN' PRCIJ1 PPCIJ1 PPCIJ2 ; *Trac Qual ((CNTIJ2 Coul Rose) Et THO7U . PCI1 . Mav Et PCI1 Et PCJ2) ; 'SINO' ; PCJ2 = PCJ1 ; 'FINS' ; TIP8V . PCI1 . PCJ2 = 'TABL' ; TIP8V . PCI1 . PCJ2 . 'MAV' = CNTIJ2 ; TIP8V . PCI1 . PCJ2 . 'EXT' = IEXT1 ; 'SI' IPREMJ1 ; IPREMJ1 = FAUX ; TIP8V . PCI1 . 'MPT' = 'MANU' 'POI1' PCJ2 ; TIP8V . PCI1 . 'MAV' = CNTIJ2 ; 'SINO' ; TIP8V . PCI1 . 'MPT' = TIP8V . PCI1 . 'MPT' 'ET' PCJ2 ; TIP8V . PCI1 . 'MAV' = TIP8V . PCI1 . 'MAV' 'ET' CNTIJ2 ; 'FINS' ; 'FIN' BJ1 ; 'SI' (('DIME' TIP8V . PCI1) '>' 0) ; 'SI' IPREMI1 ; IPREMI1 = FAUX ; TIP8V . 'MPT' = 'MANU' 'POI1' PCI1 ; TIP8V . 'MAV' = TIP8V . PCI1 . 'MAV' ; 'SINO' ; TIP8V . 'MPT' = TIP8V . 'MPT' 'ET' PCI1 ; TIP8V . 'MAV' = TIP8V . 'MAV' 'ET' TIP8V . PCI1 . 'MAV' ; 'FINS' ; 'FINS' ; 'FIN' BI1 ; MPOI1 = TIP8V . 'MPT' ; * * * 2. Reperer les aretes par les 3 polyedres qui les definissent : * * * NBI1 = NBNO MPOI1 ; THO7U = 'TABL' ; IPREMI1 = VRAI ; 'REPE' BI1 NBI1 ; PCI1 = MPOI1 'POIN' &BI1 ; THO7U . PCI1 = 'TABL' ; MPTI1 = TIP8V . PCI1 . 'MPT' ; NBJ1 = NBNO MPTI1 ; IPREMJ1 = VRAI ; 'REPE' BJ1 NBJ1 ; PCJ1 = MPTI1 'POIN' &BJ1 ; THO7U . PCI1 . PCJ1 = 'TABL' ; CNTIJ1 = TIP8V . PCI1 . PCJ1 . 'MAV' ; 'SI' ('EXIS' THO7U PCJ1) ; MPTIJ2 = THO7U . PCJ1 . PCI1 . 'MPT' ; CNTIJ2 = THO7U . PCJ1 . PCI1 . 'MAV' ; THO7U . PCI1 . PCJ1 = THO7U . PCJ1 . PCI1 ; 'SINO' ; MPTIJ1 = MPTI1 'DIFF' ('MANU' 'POI1' PCJ1) ; NBK1 = 'NBEL' CNTIJ1 ; IPREMK1 = VRAI ; 'REPE' BK1 NBK1 ; ELK1 = CNTIJ1 'ELEM' &BK1 ; NBL1 = NBNO MPTIJ1 ; 'REPE' BL1 NBL1 ; PCL1 = MPTIJ1 'POIN' &BL1 ; CNTIL1 = TIP8V . PCI1 . PCL1 . 'MAV' ; ELL1 = CNTIJ1 'INTE' CNTIL1 'NOVE' ; NBM1 = 'NBEL' ELL1 ; 'SI' (NBM1 'NEG' 0) ; 'REPE' BM1 NBM1 ; ELM1 = ELL1 'ELEM' &BM1 ; 'SI' ((NBNO (ELK1 'DIFF' ELM1)) 'EGA' 0) ; 'SI' ('EXIS' THO7U . PCI1 . PCJ1 PCL1) ; THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' = THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' 'ET' ELK1 ; 'SINO' ; THO7U . PCI1 . PCJ1 . PCL1 = 'TABL' ; THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' = ELK1 ; 'FINS' ; 'SI' IPREMK1 ; IPREMK1 = FAUX ; MPTIJ2 = 'MANU' 'POI1' PCL1 ; CNTIJ2 = ELM1 ; 'SINO' ; 'SI' ('NON' ('DANS' PCL1 MPTIJ2)) ; MPTIJ2 = MPTIJ2 'ET' PCL1 ; 'FINS' ; CNTIJ2 = CNTIJ2 'ET' ELM1 ; 'FINS' ; 'ITER' BK1 ; 'FINS' ; 'FIN' BM1 ; 'FINS' ; 'FIN' BL1 ; 'FIN' BK1 ; THO7U . PCI1 . PCJ1 . 'MPT' = MPTIJ2 ; THO7U . PCI1 . PCJ1 . 'MAV' = CNTIJ2 ; 'FINS' ; 'SI' IPREMJ1 ; IPREMJ1 = FAUX ; MPTI2 = 'MANU' 'POI1' PCJ1 ; MAVI2 = CNTIJ2 ; 'SINO' ; MPTI2 = MPTI2 'ET' PCJ1 ; MAVI2 = MAVI2 'ET' CNTIJ2 ; 'FINS' ; * Petit Test : * MTEST1 = CNTIJ2 'DIFF' CNTIJ1 ; 'SI' (((NBNO MTEST1) + ('NBEL' MTEST1)) 'NEG' 0) ; 'SAUT' 1 'LIGN' ; 'TITR' ' ***** Probleme Reperage Aretes ' ; 'TRAC' (CNTIJ1 'ET' (CNTIJ2 'COUL' 'ORAN')) ; 'QUIT' BI1 ; 'FINS' ; * Re-petit test : on verifie qu'en parcourant les points de MPTIJ2, * * on parcourt de facon ordonnee le contour : * * 'REPE' BX1 (NBNO MPTIJ2) ; * PX1 = MPTIJ2 'POIN' &BX1 ; * Trac Elem (CNTIJ1 Et (THO7U . PCI1 . PCJ1 . PX1 . Mav Coul Vert)) ; * 'FIN' BX1 ; 'FIN' BJ1 ; * Stockage resultats boucle BI1 : * THO7U . PCI1 . 'MPT' = MPTI2 ; THO7U . PCI1 . 'MAV' = MAVI2 ; 'SI' IPREMI1 ; IPREMI1 = FAUX ; MPT2 = 'MANU' 'POI1' PCI1 ; MAV2 = MAVI2 ; 'SINO' ; MPT2 = MPT2 'ET' PCI1 ; MAV2 = MAV2 'ET' MAVI2 ; 'FINS' ; 'FIN' BI1 ; THO7U . 'MPT' = MPT2 ; THO7U . 'MAV' = MAV2 ; * * *----------------------------------------------------------------------* * * * Maillage Particules-Matrice * * * *----------------------------------------------------------------------* * * * NBI1 : Nombre de particules du tirage : * NBI1 = NBNO MPOI1 ; * * * FDENS1 : Facteur densite locale d'elements = Nbr. moyen d'elements * * Dans un ligament de matrice (1 Si Echec maillage, on recommence en pertubant position PCI1 : * NBPOSI1 = 11 ; 'REPE' BPOSI1 NBPOSI1 ; PPARI1 = PCI1 'PLUS' (RPAR1 * PM2) ; * * * Boucle interne sur densite : * * => Si Echec maillage, on recommence en pertubant densite : * NBDENS1 = 15 ; FDENSI1 = FDENS1 ; FPLUSI1 = 1.1 ; FMOINI1 = 0.9 ; 'REPE' BDENS1 NBDENS1 ; * Parametres Maillage : * 'SI' (&BDENS1 'MULT' 2) ; FDENSI1 = (FPLUSI1 ** (&BDENS1 / 2)) * FDENSI1 ; 'SINO' ; FDENSI1 = (FMOINI1 ** ((&BDENS1 - 1) / 2)) * FDENSI1 ; 'FINS' ; DENSI1 = DENS1 / FDENSI1 ; DENSMI1 = 0.5 * DENSM1 * (1. / FDENSI1 + 1.) ; ELIGMI1 = DENSMI1 / FTET1 ; DPROXI1 = RPAR1 + (0.9 * ELIGMI1) ; DPROXI1 = 'MINI' ('PROG' DPROXI1 (0.5 * DREP1)) ; RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ; DFHORI1 = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ; RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ; DAHORI1 = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ; RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ; DSHORI1 = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ; * * * On indente plus -/- BDENS1... * * * * Indice Stockage maillage : * TMPARMAT . PCI1 = 'TABL' ; * Indicateurs Cas Intersection : * * IFACI1 : Partciule PCI1 intersecte une Face ; * * IAREI1 : Partciule PCI1 intersecte une Arete ; * * ISOMI1 : Partciule PCI1 intersecte un Sommet ; * IFACI1 = FAUX ; IAREI1 = FAUX ; ISOMI1 = FAUX ; * Indicateur Position Centre Particule : * * IDANI1 : PCI1 est Dans le Cube Unite ; * * IHORI1 : Particule Hors du Cube Unite Et n'intersecte pas Cube ; * * Attention, un critere d'intersection permet de ne considerer que * * les intersections "franches" du Cube ; * XCI1 YCI1 ZCI1 = PCI1 'COOR' ; LCI1 = 'PROG' XCI1 YCI1 ZCI1 ; IDANI1 = (('MINI' LCI1) '>EG' 0.) 'ET' (('MAXI' LCI1) 'EG' 0.) 'ET' (PSCAI1 ' aplanissement particule pour avoir dist. min. avec interface ; * * IJUSI1 : la particule tangente une interface ; * IPROXI1 = FAUX ; IJUSI1 = FAUX ; * Indicateurs Realisation Maillage : * * IPARI1 : Maillage de la particule ; * * Si Faux => pas d'intersection => pas de particule a mailler ; * * IPROJFI1: Projection conique enveloppe Cellule sur Surface Particule * * suivant Projection de PCI1 sur une des surfaces intersectees ; * IPARI1 = VRAI ; IPROJFI1 = FAUX ; IPROJAI1 = FAUX ; * Boucle sur les faces : * MPTI1 = THO7U . PCI1 . 'MPT' ; NBJ1 = NBNO MPTI1 ; IPREMJ1 = VRAI ; 'REPE' BJ1 NBJ1 ; IFACJ1 = FAUX ; IAREJ1 = FAUX ; IDANJ1 = FAUX ; IPROXJ1 = FAUX ; IPROJAJ1 = FAUX ; PCJ1 = MPTI1 'POIN' &BJ1 ; TMPARMAT . PCI1 . PCJ1 = 'TABL' ; * * * Test intersection Face IJ : * CNTIJ1 = THO7U . PCI1 . PCJ1 . 'MAV' ; 'SI' (&BPOSI1 'NEG' 1) ; PCI0 = PCI1 'MOIN' VDEPI1 ; PPCFIJX = 0.5 * (PCI0 'PLUS' PCJ1) ; PNFIJ1 = PPCFIJX 'MOIN' PCI0 ; DCIFIJX = 'NORM' PNFIJ1 ; PNFIJ1 = PNFIJ1 / DCIFIJX ; DVDEPI1 = VDEPI1 'PSCA' PNFIJ1 ; DCIFIJ1 = DCIFIJX - DVDEPI1 ; PPCFIJ1 = PPCFIJX 'PLUS' (VDEPI1 'MOIN' (DVDEPI1 * PNFIJ1)) ; 'SINO' ; PPCFIJ1 = 0.5 * (PCI1 'PLUS' PCJ1) ; PNFIJ1 = PPCFIJ1 'MOIN' PCI1 ; DCIFIJ1 = 'NORM' PNFIJ1 ; PNFIJ1 = PNFIJ1 / DCIFIJ1 ; 'FINS' ; IDANJ1 = (NBNO (('MANU' 'POI1' PPCFIJ1) 'INCL' CNTIJ1 'LARG' 'NOID')) 'EGA' 1 ; 'SI' ((DCIFIJ1 '<' RPAR1) 'ET' ('NON' IHORI1)) ; IFACJ1 = VRAI ; RPARJ1 = (RPAR1 * RPAR1 - (DCIFIJ1 * DCIFIJ1)) ** 0.5 ; RLIMJ1 = FLIM1 * RPARJ1 ; 'SI' ((DCIFIJ1 '>EG' DFHORI1) 'ET' IDANJ1) ; IJUSI1 = VRAI ; VDEPI1 = 1.05 * (DCIFIJ1 - DFHORI1) * PNFIJ1 ; 'TITR' ('CHAI' 'Particule ' &BI1 ' coupe Juste une Face') ; 'QUIT' BDENS1 ; 'FINS' ; 'SINO' ; 'SI' (DCIFIJ1 '<' DPROXI1) ; 'SI' ('NON' IPROXI1) ; IPROXI1 = VRAI 'ET' IDANJ1 ; 'FINS' ; 'FINS' ; 'FINS' ; * Densite relative a la distance a la Face : * LCNTIJ1 = 'MESU' CNTIJ1 ; 'SI' (IFACJ1 'ET' IDANJ1) ; DENSJ1 = DENSI1 ; 'SINO' ; DENSJ1 = FTET1 * (DCIFIJ1 - RPAR1) / FDENSI1 ; DENSJ1 = 'MAXI' ('PROG' DENSJ1 DENSMI1) ; DENSJ1 = 'MINI' ('PROG' DENSJ1 DENSI1) ; 'FINS' ; * * * Face deja maillee ? * 'SI' ('EXIS' TMPARMAT PCJ1) ; MMATIJ1 = TMPARMAT . PCJ1 . PCI1 . 'MATR' ; IFACJ1 = 'EXIS' TMPARMAT . PCJ1 . PCI1 'PART' ; 'SI' IFACJ1 ; MPARIJ1 = TMPARMAT . PCJ1 . PCI1 . 'PART' ; Titr ' Face Particule deja Maillee !!!' ; Trac MPARIJ1 ; 'FINS' ; TMPARMAT . PCI1 . PCJ1 = TMPARMAT . PCJ1 . PCI1 ; 'SINO' ; * Maillage Face IJ => on parcourt les aretes : * MPTIJ1 = THO7U . PCI1 . PCJ1 . 'MPT' ; * * * Maillage Aretes Matrice : * * ------------------------- * * * * Boucle sur les aretes : * NBK1 = NBNO MPTIJ1 ; IPREMK1 = VRAI ; 'REPE' BK1 NBK1 ; IAREK1 = FAUX ; IPROJAK1 = FAUX ; PCK1 = MPTIJ1 'POIN' &BK1 ; TMPARMAT . PCI1 . PCJ1 . PCK1 = 'TABL' ; * * * Tests pour determiner Si l'arete est deja maillee : * * IIK1 : Face IK maillee => arete IJK maillee ; * * IKI1 : Face KI maillee => idem ; * * IKJ1 : Face KJ maillee => idem ; * * Note : arete IJK pas forcement associee a IKJ Ou KIJ * * du fait du Elim & peut etre constituee de + de * * 1 elt. => tests sur mesure aretes ; * * Iij11 : test Si mesure arete recuperee test Iij1 egale * * arete IJK ; * * Iij10 : test Si mesure arete recuperee test Iij1 >egal * * arete IJK ; * ELIJK1 = THO7U . PCI1 . PCJ1 . PCK1 . 'MAV' ; MESK1 = 'MESU' ELIJK1 ; TOLK1 = TOL1 * MESK1 ; * Face IK deja maillee ? * IIK11 = FAUX ; IIK10 = FAUX ; IIK1 = 'EXIS' TMPARMAT . PCI1 PCK1 ; 'SI' IIK1 ; IIK1 = 'EXIS' TMPARMAT . PCI1 . PCK1 PCJ1 ; 'SI' IIK1 ; MMATIJK1 = TMPARMAT . PCI1 . PCK1 . PCJ1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCI1 . PCK1 . PCJ1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCI1 . PCK1 . PCJ1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IIK11 = MESKX1 'EGA' MESK1 TOLK1 ; IIK10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IIK11 'OU' IIK10)) ; ELIJK0 = THO7U . PCI1 . PCK1 . PCJ1 . 'MAV' ; 'FINS' ; 'SINO' ; MPTIK1 = TMPARMAT . PCI1 . PCK1 .'MPT' ; NBL1 = NBNO MPTIK1 ; 'REPE' BL1 NBL1 ; PCL1 = MPTIK1 'POIN' &BL1 ; ELIKL1 = THO7U . PCI1 . PCK1 . PCL1 . 'MAV' ; MTEST1 = ELIKL1 'INTE' ELIJK1 'NOVE' ; IIK1 = ('NBEL' MTEST1) 'NEG' 0 ; 'SI' IIK1 ; MMATIJK1 = TMPARMAT . PCI1 . PCK1 . PCL1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCI1 . PCK1 . PCL1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCI1 . PCK1 . PCL1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IIK11 = MESKX1 'EGA' MESK1 TOLK1 ; IIK10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IIK11 'OU' IIK10)) ; ELIJK0 = THO7U . PCI1 . PCK1 . PCL1 . 'MAV' ; 'FINS' ; 'QUIT' BL1 ; 'FINS' ; 'FIN' BL1 ; 'FINS' ; 'FINS' ; * Face KI deja maillee ? * IKI11 = FAUX ; IKI10 = FAUX ; IKI1 = ('EXIS' TMPARMAT PCK1) 'ET' ('NON' IIK11) ; IKJ1 = IKI1 ; 'SI' IKI1 ; IKI1 = 'EXIS' TMPARMAT . PCK1 PCI1 ; 'FINS' ; 'SI' IKI1 ; IKI1 = 'EXIS' TMPARMAT . PCK1 . PCI1 PCJ1 ; 'SI' IKI1 ; MMATIJK1 = TMPARMAT . PCK1 . PCI1 . PCJ1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCK1 . PCI1 . PCJ1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCK1 . PCI1 . PCJ1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IKI11 = MESKX1 'EGA' MESK1 TOLK1 ; IKI10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IKI11 'OU' IKI10)) ; ELIJK0 = THO7U . PCK1 . PCI1 . PCJ1 . 'MAV' ; 'FINS' ; 'SINO' ; MPTKI1 = TMPARMAT . PCK1 . PCI1 .'MPT' ; NBL1 = NBNO MPTKI1 ; 'REPE' BL1 NBL1 ; PCL1 = MPTKI1 'POIN' &BL1 ; ELKIL1 = THO7U . PCK1 . PCI1 . PCL1 . 'MAV' ; MTEST1 = ELKIL1 'INTE' ELIJK1 'NOVE' ; IKI1 = ('NBEL' MTEST1) 'NEG' 0 ; 'SI' IKI1 ; MMATIJK1 = TMPARMAT . PCK1 . PCI1 . PCL1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCK1 . PCI1 . PCL1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCK1 . PCI1 . PCL1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IKI11 = MESKX1 'EGA' MESK1 TOLK1 ; IKI10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IKI11 'OU' IKI10)) ; ELIJK0 = THO7U . PCK1 . PCI1 . PCL1 . 'MAV' ; 'FINS' ; 'QUIT' BL1 ; 'FINS' ; 'FIN' BL1 ; 'FINS' ; 'FINS' ; * Face KJ deja maillee ? * IKJ11 = FAUX ; IKJ10 = FAUX ; 'SI' IKJ1 ; IKJ1 = ('EXIS' TMPARMAT . PCK1 PCJ1) 'ET' ('NON' IKI11) ; 'FINS' ; 'SI' IKJ1 ; IKJ1 = 'EXIS' TMPARMAT . PCK1 . PCJ1 PCI1 ; 'SI' IKJ1 ; MMATIJK1 = TMPARMAT . PCK1 . PCJ1 . PCI1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCK1 . PCJ1 . PCI1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCK1 . PCJ1 . PCI1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IKJ11 = MESKX1 'EGA' MESK1 TOLK1 ; IKJ10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IKJ11 'OU' IKJ10)) ; ELIJK0 = THO7U . PCK1 . PCJ1 . PCI1 . 'MAV' ; 'FINS' ; 'SINO' ; MPTKJ1 = TMPARMAT . PCK1 . PCJ1 . 'MPT' ; NBL1 = NBNO MPTKJ1 ; 'REPE' BL1 NBL1 ; PCL1 = MPTKJ1 'POIN' &BL1 ; ELKJL1 = THO7U . PCK1 . PCJ1 . PCL1 . 'MAV' ; MTEST1 = ELKJL1 'INTE' ELIJK1 'NOVE' ; IKJ1 = ('NBEL' MTEST1) 'NEG' 0 ; 'SI' IKJ1 ; MMATIJK1 = TMPARMAT . PCK1 . PCJ1 . PCL1 . 'MATR' ; 'SI' ('EXIS' TMPARMAT . PCK1 . PCJ1 . PCL1 'PART') ; IAREK1 = VRAI ; MPARIJK1 = TMPARMAT . PCK1 . PCJ1 . PCL1 . 'PART' ; MESKX1 = 'MESU' (MMATIJK1 'ET' MPARIJK1) ; 'SINO' ; MESKX1 = 'MESU' MMATIJK1 ; 'FINS' ; IKJ11 = MESKX1 'EGA' MESK1 TOLK1 ; IKJ10 = MESKX1 '>EG' MESK1 ; 'SI' ('NON' (IKJ11 'OU' IKJ10)) ; ELIJK0 = THO7U . PCK1 . PCJ1 . PCL1 . 'MAV' ; 'FINS' ; 'QUIT' BL1 ; 'FINS' ; 'FIN' BL1 ; 'FINS' ; 'FINS' ; * Traitement des cas : * IXX10 = IIK10 'OU' IKI10 'OU' IKJ10 ; IIJK1 = VRAI ; 'SI' IIK11 ; IXX10 = FAUX ; IIJK1 = FAUX ; 'FINS' ; 'SI' IKI11 ; IXX10 = FAUX ; IIJK1 = FAUX ; 'FINS' ; 'SI' IKJ11 ; IXX10 = FAUX ; IIJK1 = FAUX ; 'FINS' ; 'SI' IXX10 ; PSK1 = (ELIJK1 'ELEM' 1) 'POIN' 1 ; PSK2 = (ELIJK1 'ELEM' ('NBEL' ELIJK1)) 'POIN' 2 ; MMATIJK1 = MMATIJK1 'ELEM' 'COMP' PSK1 PSK2 ; IIJK1 = FAUX ; 'FINS' ; * Une partie de l'arete est-elle deja maillee ? * 'SI' IIJK1 ; IPREME1 = VRAI ; 'SI' (IIK1 'OU' IKI1 'OU' IKJ1) ; * Une partie de l'arete est maillee : * ELIJK1 = ELIJK1 'DIFF' ELIJK0 ; IPREME1 = FAUX ; 'FINS' ; * * * Maillage Arete : * * Iterations sur elts. arete du fait du Elim ; * NBELK1 = 'NBEL' ELIJK1 ; 'REPE' BELK1 NBELK1 ; IAREE1 = FAUX ; IDANK1 = FAUX ; AIJK1 = ELIJK1 'ELEM' &BELK1 ; MESE1 = 'MESU' AIJK1 ; PSK1 = AIJK1 'POIN' 1 ; PSK2 = AIJK1 'POIN' 2 ; * PSK12N : vecteur norme PSK1-SK2 ; * PSK12N = PSK2 'MOIN' PSK1 ; PSK12N = PSK12N / ('NORM' PSK12N) ; * PSK1CI1 : vecteur PSK1-PCI1 ; * PSK1CI1 = PCI1 'MOIN' PSK1 ; * PNAKCI1 : normale a l'arete passant par PCI1 ; * PNAKCI1 = PSK1CI1 'MOIN' ((PSK1CI1 'PSCA' PSK12N) * PSK12N) ; * PPCIAK1 : projete de PCI1 sur l'arete ; * PPCIAK1 = PCI1 'MOIN' PNAKCI1 ; * DCIAK1 : distance PCI1-arete ; * DCIAK1 = 'NORM' PNAKCI1 ; * DCISKi : distance PCI1-PSKi ; * DCISK1 = 'NORM' PSK1CI1 ; DCISK2 = 'NORM' (PCI1 'MOIN' PSK2) ; * DENSK0-DENSK1-DENSK2 : densites centre-extrem. arete ; * DENSK0 = FTET1 * (DCIAK1 - RPAR1) / FDENSI1 ; DENSK1 = FTET1 * (DCISK1 - RPAR1) / FDENSI1 ; DENSK2 = FTET1 * (DCISK2 - RPAR1) / FDENSI1 ; DENSK0 = 'MAXI' ('PROG' DENSK0 DENSMI1) ; DENSK1 = 'MAXI' ('PROG' DENSK1 DENSMI1) ; DENSK2 = 'MAXI' ('PROG' DENSK2 DENSMI1) ; DENSK0 = 'MINI' ('PROG' DENSK0 DENSI1 (10. * DENSJ1)) ; DENSK1 = 'MINI' ('PROG' DENSK1 DENSI1 (10. * DENSJ1)) ; DENSK2 = 'MINI' ('PROG' DENSK2 DENSI1 (10. * DENSJ1)) ; * PSK1PPK1, PSK2PPK1 : vecteur pour test sur arete ; * PSK1PPK1 = PPCIAK1 'MOIN' PSK1 ; PSK2PPK1 = PPCIAK1 'MOIN' PSK2 ; DSK1PPK1 = 'NORM' PSK1PPK1 ; DSK2PPK1 = 'NORM' PSK2PPK1 ; * IDANK1=VRAI, PPCIAK1 appartient au segment [PSK1,PSK2] : * IDANK1 = (('PSCA' PSK1PPK1 PSK12N) '>EG' 0.) 'ET' (('PSCA' PSK2PPK1 PSK12N) 'EG' DAHORI1) ; IJUSI1 = VRAI ; 'SI' IDANI1 ; VDEPI1 = -1.05 * (DCIAK1 - DAHORI1) * PNAKCI1 / DCIAK1 ; 'SINO' ; 'SI' IDANJ1 ; B1 = DCIFIJ1 ; 'SI' (DCIAK1 '<' B1) ; B2 = 0. ; 'SINO' ; B2 = ((DCIAK1 ** 2) - (B1 ** 2)) ** 0.5 ; 'FINS' ; VDEPI1 = PNAKCI1 'PLUS' (DCIFIJ1 * PNFIJ1) ; VDEPI1 = -1. * VDEPI1 / ('NORM' VDEPI1) ; 'SINO' ; B2 = DCIFIJ1 ; 'SI' (DCIAK1 '<' B2) ; B1 = 0. ; 'SINO' ; B1 = ((DCIAK1 ** 2) - (B2 ** 2)) ** 0.5 ; 'FINS' ; VDEPI1 = PNFIJ1 ; 'FINS' ; ADEPI1 = ((DAHORI1 ** 2) - (B1 ** 2)) ** 0.5 ; ADEPI1 = B2 - ADEPI1 ; VDEPI1 = 1.05 * ADEPI1 * VDEPI1 ; 'FINS' ; 'TITR' ('CHAI' 'Particule ' &BI1 ' coupe Juste Arete') ; 'QUIT' BDENS1 ; 'FINS' ; * Elements pour calcul densites : * DCJAK1 = ((DCIAK1 ** 2) - (DCIFIJ1 ** 2)) ** 0.5 ; XNECNTK1 = (LCNTIJ1 - MESK1) / (1.0 * DENSI1) ; THETK1 = 'ATG' (DPPKPKP0 / DCJAK1) ; THETK1 = THETK1 * PI / 180. ; * Determination du Cas projection contour : * IPROJAK1 = (DCJAK1 '<' RLIMJ1) 'OU' ('NON' IDANJ1) ; 'SI' ISOMI1 ; * Intersection sommets : * * Calcul densite caracteristique : * DENSKP0 = (1. * RPARJ1 * THETK1) / XNECNTK1 ; DENSKP0 = 'MAXI' ('PROG' DENSKP0 DENSMI1) ; DENSKP0 = 'MINI' ('PROG' DENSKP0 DENSK1) ; * Maillage : * 'SI' (IISK1 'ET' IISK2) ; 'MESS' ' Intersection 2 sommets : pas encore... !' ; 'ERRE' 26 ; 'SINO' ; 'SI' IISK1 ; PSKX PSKPX = PSK2 PSKP2 ; PSK2 PSKP2 = PSK1 PSKP1 ; PSK1 PSKP1 = PSKX PSKPX ; DENSKX = DENSK2 ; DENSK2 = DENSK1 ; DENSK1 = DENSKX ; 'FINS' ; DENSKP1 = 1. / (0.5 / DENSKP0 + (0.5 / DENSK1)) ; * DENSKP1 = 1. * (0.5 * DENSKP0 + (0.5 * DENSK1)) ; PSOMI1 = PSK2 ; * MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSK1 * 'DFIN' DENSKP0 ; * MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ; * MPARIJK0 = PSKP1 'DROI' PSK2 'DINI' DENSKP0 * 'DFIN' DENSKP1 ; DENSKPX = 'NORM' (PSKP1 'MOIN' PSK1) ; DENSKPX = 'MAXI' ('PROG' DENSKPX DENSMI1) ; DENSKPX = 'MINI' ('PROG' DENSKPX DENSI1 ) ; MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSKPX 'DFIN' DENSKPX ; MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ; MPARIJK0 = PSKP1 'DROI' PSK2 'DINI' DENSKPX 'DFIN' DENSI1 ; 'FINS' ; 'SINO' ; * Intersection uniquement Arete : * 'SI' IDANJ1 ; DENSKP0 = (2. * RPARJ1 * (PI - THETK1)) / XNECNTK1 ; DENSKP0 = 'MAXI' ('PROG' DENSKP0 DENSMI1) ; DENSKP0 = 'MINI' ('PROG' DENSKP0 DENSI1) ; DENSKP1 = DENSK1 ; DENSKP2 = DENSK2 ; 'SINO' ; DENSKP0 = (2. * RPARJ1 * THETK1) / XNECNTK1 ; DENSKP0 = 'MAXI' ('PROG' DENSKP0 DENSMI1) ; DENSKP0 = 'MINI' ('PROG' DENSKP0 DENSI1) ; DCJSK1 = (DCISK1 ** 2 - (DCIFIJ1 ** 2)) ** 0.5 ; DCJSK2 = (DCISK2 ** 2 - (DCIFIJ1 ** 2)) ** 0.5 ; DENSKP1 = DENSK1 * DCJAK1 * RPARJ1 / (DCJSK1 ** 2) ; DENSKP2 = DENSK2 * DCJAK1 * RPARJ1 / (DCJSK2 ** 2) ; DENSKP1 = 'MAXI' ('PROG' DENSKP1 DENSMI1 DENSKP0) ; DENSKP2 = 'MAXI' ('PROG' DENSKP2 DENSMI1 DENSKP0) ; DENSKP1 = 'MINI' ('PROG' DENSK1 DENSKP1 DENSKP0) ; DENSKP2 = 'MINI' ('PROG' DENSK2 DENSKP2 DENSKP0) ; 'FINS' ; DENSKP1 = 1. / (0.5 / DENSKP0 + (0.5 / DENSKP1)) ; DENSKP2 = 1. / (0.5 / DENSKP0 + (0.5 / DENSKP2)) ; * Maillage Aretes Matrice-Particule : * DENSKX1 = 'NORM' (PSKP1 'MOIN' PSK1) ; DENSKX1 = 'MAXI' ('PROG' DENSKX1 DENSMI1) ; DENSKX1 = 'MINI' ('PROG' DENSKX1 DENSI1) ; DENSKX2 = 'NORM' (PSKP2 'MOIN' PSK2) ; DENSKX2 = 'MAXI' ('PROG' DENSKX2 DENSMI1) ; DENSKX2 = 'MINI' ('PROG' DENSKX2 DENSI1) ; DENSKPX1 = 'MINI' ('PROG' DENSKX1 DENSKP0) ; DENSKPX2 = 'MINI' ('PROG' DENSKX2 DENSKP0) ; DENSKPX0 = 'MINI' ('PROG' DENSI1 (2. * DENSKP0)) ; MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSKX1 'DFIN' DENSKPX1 ; MMATIJK0 = MMATIJK0 'ET' (PSKP2 'DROI' PSK2 'DINI' DENSKPX2 'DFIN' DENSKX2) ; 'SI' IPROJAK1 ; MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ; 'FINS' ; MPARIJK0 = PSKP1 'DROI' PPCIAK1 'DINI' DENSKPX1 'DFIN' DENSKPX0 ; MPARIJK0 = MPARIJK0 'ET' (PPCIAK1 'DROI' PSKP2 'DINI' DENSKPX0 'DFIN' DENSKPX2) ; 'FINS' ; 'SINO' ; * Pas Intersection Arete : * * Si Distance Sommet-PPCIAK1 > Densite calcule * Et Si PPCIAK1 sur l'arete => on maille en 2 parties : * * 'SI' IHORI1 ; * MMATIJK0 = PSK1 'DROI' PSK2 'DINI' DENSK1 * 'DFIN' DENSK2 ; * 'SINO' ; 'SI' ((DSK1PPK1 '>EG' DENSK1) 'ET' (DSK2PPK1 '>EG' DENSK2) 'ET' IDANK1) ; MMATIJK0 = PSK1 'DROI' PPCIAK1 'DINI' DENSK1 'DFIN' DENSK0 ; MMATIJK0 = MMATIJK0 'ET' (PPCIAK1 'DROI' PSK2 'DINI' DENSK0 'DFIN' DENSK2) ; 'SINO' ; MMATIJK0 = PSK1 'DROI' PSK2 'DINI' DENSK1 'DFIN' DENSK2 ; 'FINS' ; 'SI' (DCIAK1 '<' DPROXI1) ; IPROXI1 = VRAI 'ET' IDANK1 ; 'FINS' ; * 'FINS' ; 'FINS' ; 'SI' IPREME1 ; IPREME1 = FAUX ; MMATIJK1 = MMATIJK0 ; 'SINO' ; MMATIJK1 = MMATIJK1 'ET' MMATIJK0 ; 'FINS' ; 'SI' IAREE1 ; PPCIAE0 = PPCIAK1 ; 'SI' IAREK1 ; MPARIJK1 = MPARIJK1 'ET' MPARIJK0 ; 'SINO' ; IAREK1 = VRAI ; MPARIJK1 = MPARIJK0 ; 'FINS' ; 'FINS' ; 'FIN' BELK1 ; 'SINO' ; 'SI' IAREK1 ; * 'MESS' ' Arete intersectee Et deja maillee' ; AIJK1 = ELIJK1 ; MESE1 = 'MESU' AIJK1 ; PSK1 = AIJK1 'POIN' 1 ; PSK2 = AIJK1 'POIN' 2 ; * PSK12N : vecteur norme PSK1-SK2 ; * PSK12N = PSK2 'MOIN' PSK1 ; PSK12N = PSK12N / ('NORM' PSK12N) ; * PSK1CI1 : vecteur PSK1-PCI1 ; * PSK1CI1 = PCI1 'MOIN' PSK1 ; * PNAKCI1 : normale a l'arete passant par PCI1 ; * PNAKCI1 = PSK1CI1 'MOIN' ((PSK1CI1 'PSCA' PSK12N) * PSK12N) ; * PPCIAK1 : projete de PCI1 sur l'arete ; * PPCIAK1 = PCI1 'MOIN' PNAKCI1 ; * DCIAK1 : distance PCI1-arete ; * DCIAK1 = 'NORM' PNAKCI1 ; DCJAK1 = ((DCIAK1 ** 2) - (DCIFIJ1 ** 2)) ** 0.5 ; IPROJAK1 = (DCJAK1 '<' RLIMJ1) 'OU' ('NON' IDANJ1) ; 'SI' IPROJAK1 ; PPCIAE0 = PPCIAK1 ; MMATIJK1 = MMATIJK1 'COUL' 'JAUN' ; 'FINS' ; 'FINS' ; 'FINS' ; * Stockage Arete Dans la table : * TMPARMAT . PCI1 . PCJ1 . PCK1 . 'MATR' = MMATIJK1 ; 'SI' IPREMK1 ; IPREMK1 = FAUX ; CNTMATJ1 = MMATIJK1 ; TMPARMAT . PCI1 . PCJ1 . 'MPT' = 'MANU' 'POI1' PCK1 ; 'SINO' ; CNTMATJ1 = CNTMATJ1 'ET' MMATIJK1 ; TMPARMAT . PCI1 . PCJ1 . 'MPT' = TMPARMAT . PCI1 . PCJ1 . 'MPT' 'ET' PCK1 ; 'FINS' ; 'SI' IAREK1 ; TMPARMAT . PCI1 . PCJ1 . PCK1 . 'PART' = MPARIJK1 ; 'SI' IAREJ1 ; CNTPARJ1 = CNTPARJ1 'ET' MPARIJK1 ; 'SINO' ; IAREJ1 = VRAI ; CNTPARJ1 = MPARIJK1 ; 'FINS' ; 'SI' IPROJAK1 ; 'SI' IPROJAJ1 ; 'SI' ISOMI1 ; PPCIAK0 = PSOMI1 ; 'SINO' ; 'MESS' ' ####" 2x Projection selon point sur aretes pour 1 meme contour ?' ; 'ERRE' 26 ; 'FINS' ; 'SINO' ; IPROJAJ1 = VRAI ; PPCIAK0 = PPCIAE0 ; 'FINS' ; 'FINS' ; 'FINS' ; 'FIN' BK1 ; * * * Maillage Surfaces Matrice/Particules : * * -------------------------------------- * * * * Maillage surface IJ : * IFACJ1 = IFACJ1 'ET' (IDANJ1 'OU' IAREJ1) ; 'SI' IFACJ1 ; 'SI' IAREJ1 ; * Construction Contour(s) Si intersection Arete-Sommet : * 'SI' ISOMI1 ; CNTMATJ2 = CNTMATJ1 'DIFF' (CNTMATJ1 'ELEM' 'JAUN') ; CNTPARJ2 = CNTMATJ2 'PROJ' 'CONI' PSOMI1 'SPHE' PCI1 PPARI1 ; 'SINO' ; 'SI' IPROJAJ1 ; CNTMATJ2 = CNTMATJ1 'DIFF' (CNTMATJ1 'ELEM' 'JAUN') ; CNTPARJ2 = CNTMATJ2 'PROJ' 'CONI' PPCIAK0 'SPHE' PCI1 PPARI1 ; 'SINO' ; CNTPARJ2 = CNTMATJ1 'PROJ' 'CONI' PPCFIJ1 'SPHE' PCI1 PPARI1 ; 'FINS' ; 'FINS' ; CNTPARJ1 = CNTPARJ1 'ET' CNTPARJ2 ; 'ELIM' CNTPARJ1 TOL1 ; CNTPARJ1 = CNTPARJ1 'ELEM' 'COMP' (CNTPARJ1 'POIN' 1) (CNTPARJ1 'POIN' 1) ; CNTMATJ1 = CNTMATJ1 'ET' CNTPARJ2 ; * Appel a Surf pour intersection Arete(s)-Sommet : * 'OPTI' 'ERRE' 'CONT' ; TCCONJ1 = 'CCON' CNTMATJ1 ; 'REPE' BCCONJ1 ('DIME' TCCONJ1) ; CNTMATJ0 = TCCONJ1 . &BCCONJ1 ; CNTMATJ0 = CNTMATJ0 'ELEM' 'COMP' (CNTMATJ0 'POIN' 1) (CNTMATJ0 'POIN' 1) ; 'SI' IPROJAJ1 ; MMATIJ0 = 'SURF' CNTMATJ0 'PLAN' 0.9 ; 'SINO' ; MMATIJ0 = 'SURF' CNTMATJ0 'PLAN' 0.9 ; 'FINS' ; 'SI' (&BCCONJ1 'EGA' 1) ; MMATIJ1 = MMATIJ0 ; 'SINO' ; MMATIJ1 = MMATIJ1 'ET' MMATIJ0 ; 'FINS' ; 'FIN' BCCONJ1 ; MPARIJ1 = 'SURF' CNTPARJ1 'PLAN' 0.9 ; 'OPTI' 'ERRE' 'NORM' ; IANNULS1 = ('EGA' ('TYPE' MMATIJ1) 'ANNULE') 'OU' ('EGA' ('TYPE' MPARIJ1) 'ANNULE') ; 'SI' IANNULS1 ; 'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ; 'ITER' BDENS1 ; 'SINO' ; MTOTIJ1 = MMATIJ1 'ET' MPARIJ1 ; SCNTIJ1 = 'MESU' 'SURF' (THO7U . PCI1 . PCJ1 . 'MAV') ; STOTIJ1 = 'MESU' MTOTIJ1 ; 'SI' ((SCNTIJ1 - STOTIJ1) '>' (1.E-5 * SCNTIJ1)) ; 'MESS' ' ##### Echec maillage surface ! '; 'ITER' BDENS1 ; 'FINS' ; 'FINS' ; 'SINO' ; * Construction Contour(s) Si intersection Face : * CNTMATJ1 = CNTMATJ1 'ELEM' 'COMP' (CNTMATJ1 'POIN' 1) (CNTMATJ1 'POIN' 1) ; CNTPARJ1 = CNTMATJ1 'PROJ' 'CONI' PPCFIJ1 'SPHE' PCI1 PPARI1 ; CNTMATJ1 = CNTMATJ1 'ET' ('INVE' CNTPARJ1) ; * Maillage Surface intersection Face : * 'OPTI' 'ERRE' 'CONT' ; MMATIJ1 = 'SURF' CNTMATJ1 'PLAN' 0.9 ; MPARIJ1 = 'SURF' CNTPARJ1 'PLAN' 0.9 ; 'OPTI' 'ERRE' 'NORM' ; IANNULS1 = ('EGA' ('TYPE' MMATIJ1) 'ANNULE') 'OU' ('EGA' ('TYPE' MPARIJ1) 'ANNULE') ; 'SI' IANNULS1 ; 'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ; 'ITER' BDENS1 ; 'SINO' ; MTOTIJ1 = MMATIJ1 'ET' MPARIJ1 ; SCNTIJ1 = 'MESU' 'SURF' (THO7U . PCI1 . PCJ1 . 'MAV') ; STOTIJ1 = 'MESU' MTOTIJ1 ; 'SI' ((SCNTIJ1 - STOTIJ1) '>' (1.E-5 * SCNTIJ1)) ; 'MESS' ' ##### Echec maillage surface ! '; 'ITER' BDENS1 ; 'FINS' ; 'FINS' ; 'FINS' ; 'SINO' ; * Construction Contour(s) aucune intersection : * CNTMATJ1 = CNTMATJ1 'ELEM' 'COMP' (CNTMATJ1 'POIN' 1) (CNTMATJ1 'POIN' 1) ; * Maillage Surface : * 'SI' IHORI1 ; CHDIJ1 = 'MANU' 'CHPO' CNTMATJ1 1 'DENS' DENSI1 ; 'SINO' ; CHDIJ1 = 'MANU' 'CHPO' CNTMATJ1 1 'DENS' DENSJ1 ; 'FINS' ; 'OPTI' 'ERRE' 'CONT' ; MMATIJ1 = 'SURF' CHDIJ1 CNTMATJ1 'PLAN' 0.9 ; 'OPTI' 'ERRE' 'NORM' ; IANNULS1 = 'EGA' ('TYPE' MMATIJ1) 'ANNULE' ; 'SI' IANNULS1 ; 'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ; 'ITER' BDENS1 ; 'SINO' ; SCNTIJ1 = 'MESU' 'SURF' CNTMATJ1 ; SMATIJ1 = 'MESU' MMATIJ1 ; 'SI' ((SCNTIJ1 - SMATIJ1) '>' (1.E-5 * SCNTIJ1)) ; 'MESS' ' ##### Echec maillage surface ! '; 'ITER' BDENS1 ; 'FINS' ; 'FINS' ; 'FINS' ; 'SI' IFACJ1 ; MMATIJ1 = MMATIJ1 'COUL' 'OLIV' ; 'FINS' ; TMPARMAT . PCI1 . PCJ1 . 'MATR' = MMATIJ1 ; 'FINS' ; * Analyse du cas traite : * 'SI' IFACJ1 ; MPARIJ1 = MPARIJ1 'COUL' 'ORAN' ; TMPARMAT . PCI1 . PCJ1 . 'PART' = MPARIJ1 ; 'SI' IFACI1 ; ENVPARI1 = ENVPARI1 'ET' MPARIJ1 ; 'SINO' ; IFACI1 = VRAI ; ENVPARI1 = MPARIJ1 ; 'FINS' ; 'SI' IAREJ1 ; 'SI' ('NON' IAREI1) ; IAREI1 = VRAI ; 'FINS' ; 'SI' ((DCIFIJ1 '<' RLIM1) 'OU' ('NON' IDANI1)) ; 'SI' IPROJAJ1 ; MMATIJ1 = MMATIJ1 'COUL' 'ROSE' ; 'SI' IPROJAI1 ; * PPCIAJ0 = PPCIAJ0 'PLUS' (PPCIAK0 'MOIN' PCI1) ; 'SINO' ; IPROJAI1 = VRAI ; PPCIAJ0 = PPCIAK0 ; 'FINS' ; 'SINO' ; MMATIJ1 = MMATIJ1 'COUL' 'TURQ' ; 'SI' IPROJFI1 ; IJUSI1 = VRAI ; PPCFIJ0 = PPCFIJ0 'PLUS' (PPCFIJ1 'MOIN' PCI1) ; 'SINO' ; IPROJFI1 = VRAI ; PPCFIJ0 = PPCFIJ1 ; 'FINS' ; 'FINS' ; 'FINS' ; 'SINO' ; 'SI' ((DCIFIJ1 '<' RLIM1) 'OU' ('NON' IDANI1)) ; MMATIJ1 = MMATIJ1 'COUL' 'TURQ' ; 'SI' IPROJFI1 ; IJUSI1 = VRAI ; PPCFIJ0 = PPCFIJ0 'PLUS' (PPCFIJ1 'MOIN' PCI1) ; 'SINO' ; IPROJFI1 = VRAI ; PPCFIJ0 = PPCFIJ1 ; 'FINS' ; 'FINS' ; 'FINS' ; 'FINS' ; * Stockage Surfaces Dans la table : * 'SI' IPREMJ1 ; IPREMJ1 = FAUX ; ENVMATI1 = MMATIJ1 ; TMPARMAT . PCI1 . 'MPT' = 'MANU' 'POI1' PCJ1 ; 'SINO' ; ENVMATI1 = ENVMATI1 'ET' MMATIJ1 ; TMPARMAT . PCI1 . 'MPT' = TMPARMAT . PCI1 . 'MPT' 'ET' PCJ1 ; 'FINS' ; 'FIN' BJ1 ; * * * Maillage Volumes Matrice-Particules : * * ------------------------------------- * * * * Enveloppes Connexes Volumes a mailler : * 'SI' IFACI1 ; 'SI' ISOMI1 ; 'MESS' ' - Intersections : Sommet' ; ENVMATI2 = ENVMATI1 'ELEM' 'DEFA' ; ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PSOMI1 'SPHE' PCI1 PPARI1 ; 'SINO' ; 'SI' IAREI1 ; 'MESS' ' - Intersections : Arete(s)' ; 'SINO' ; 'MESS' ' - Intersections : Face(s)' ; 'FINS' ; 'SI' IPROJFI1 ; 'SI' IJUSI1 ; IJUSI1 = FAUX ; VDEPI1 = PPCFIJ0 'MOIN' PCI1 ; ADEPI1 = 'NORM' VDEPI1 ; VDEPI1 = VDEPI1 / ADEPI1 ; VDEPI1 = 1.05 * (ADEPI1 - DAHORI1) * VDEPI1 ; 'TITR' ' 2x IPROJFI1 => IJUSI1' ; 'QUIT' BDENS1 ; 'SINO' ; ENVMATI2 = ENVMATI1 'DIFF' (ENVMATI1 'ELEM' 'TURQ') ; ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PPCFIJ0 'SPHE' PCI1 PPARI1 ; 'FINS' ; 'SINO' ; 'SI' IPROJAI1 ; ENVMATI2 = ENVMATI1 'DIFF' (ENVMATI1 'ELEM' 'ROSE') ; ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PPCIAJ0 'SPHE' PCI1 PPARI1 ; 'SINO' ; ENVPARI2 = ENVMATI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ; 'FINS' ; 'FINS' ; 'FINS' ; ENVPARI1 = ENVPARI1 'ET' ENVPARI2 ; 'ELIM' (ENVPARI1 'ET' ENVMATI1) TOL1 ; 'SI' IPROXI1 ; 'MESS' ' - ATTENTION : PROXIMITE particule-enveloppe cellule detectee' ; 'MESS' ' => Aplanissement zone surface particule trop proche cellule' ; ENVMATI3 = ENVMATI1 'ELEM' 'DEFA' ; ENVPARI3 = ENVPARI2 'ELEM' 'DEFA' ; MPASSI1 = ENVMATI3 'VOLU' 1 ENVPARI3 ; MPASSI1 = ('CHAN' 'LIGN' MPASSI1) 'DIFF' ('CHAN' 'LIGN' (ENVPARI3 'ET' ENVMATI3)) ; XM1 YM1 ZM1 = ENVMATI3 'COOR' ; XM1 = 'KPRO' XM1 MPASSI1 ; YM1 = 'KPRO' YM1 MPASSI1 ; ZM1 = 'KPRO' ZM1 MPASSI1 ; DX1 DY1 DZ1 = (XM1 - XCI1) (YM1 - YCI1) (ZM1 - ZCI1) ; DMPI1 = ((DX1 ** 2) + (DY1 ** 2) + (DZ1 ** 2)) ** 0.5 ; MASQI1 = DMPI1 'MASQ' 'INFE' DPROXI1 ; XP1 YP1 ZP1 = ENVPARI3 'COOR' ; XN1 YN1 ZN1 = (XP1 - XM1) (YP1 - YM1) (ZP1 - ZM1) ; XNXN1 = ((XN1 ** 2) + (YN1 ** 2) + (ZN1 ** 2)) ** 0.5 ; XN1 YN1 ZN1 = (XN1 / XNXN1) (YN1 / XNXN1) (ZN1 / XNXN1) ; DUI1 = (DPROXI1 - DMPI1) ; CHUXI1 = ((DUI1 * XN1) 'NOMC' 'UX') ; CHUYI1 = ((DUI1 * YN1) 'NOMC' 'UY') ; CHUZI1 = ((DUI1 * ZN1) 'NOMC' 'UZ') ; CHUXI1 = 'CHAN' 'ATTRIBUT' CHUXI1 'NATURE' 'DISCRET' ; CHUYI1 = 'CHAN' 'ATTRIBUT' CHUYI1 'NATURE' 'DISCRET' ; CHUZI1 = 'CHAN' 'ATTRIBUT' CHUZI1 'NATURE' 'DISCRET' ; CHUI1 = (CHUXI1 'ET' CHUYI1 'ET' CHUZI1) * MASQI1 ; 'DEPL' ENVPARI1 'PLUS' CHUI1 ; 'FINS' ; ENVMATI1 = ENVMATI1 'ET' ENVPARI2 ; * 'ELIM' ENVMATI1 TOL1 ; 'SINO' ; 'MESS' ' - Intersections : AUCUNE' ; 'SI' IDANI1 ; ENVPARI1 = ENVMATI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ; PSK0 = THO7U . PCI1 . 'MAV' 'POIN' 1 ; ELMI1 = (ENVMATI1 'ELEM' 'APPU' 'LARG' PSK0) 'ELEM' 1 ; ELPI1 = ELMI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ; 'ELIM' (ELPI1 'ET' ENVPARI1) TOL1 ; * Si Particule proche Face Cellule (d Aplanissement zone surface particule trop proche cellule' ; ENVPARI3 = ENVPARI1 'DIFF' ELPI1 ; ENVMATI3 = ENVMATI1 'DIFF' ELMI1 ; MPASSI1 = ENVMATI3 'VOLU' 1 ENVPARI3 ; MPASSI1 = ('CHAN' 'LIGN' MPASSI1) 'DIFF' ('CHAN' 'LIGN' (ENVPARI3 'ET' ENVMATI3)) ; XM1 YM1 ZM1 = ENVMATI3 'COOR' ; XM1 = 'KPRO' XM1 MPASSI1 ; YM1 = 'KPRO' YM1 MPASSI1 ; ZM1 = 'KPRO' ZM1 MPASSI1 ; DX1 DY1 DZ1 = (XM1 - XCI1) (YM1 - YCI1) (ZM1 - ZCI1) ; DMPI1 = ((DX1 ** 2) + (DY1 ** 2) + (DZ1 ** 2)) ** 0.5 ; MASQI1 = DMPI1 'MASQ' 'INFE' DPROXI1 ; XP1 YP1 ZP1 = ENVPARI3 'COOR' ; XN1 YN1 ZN1 = (XP1 - XM1) (YP1 - YM1) (ZP1 - ZM1) ; XNXN1 = ((XN1 ** 2) + (YN1 ** 2) + (ZN1 ** 2)) ** 0.5 ; XN1 YN1 ZN1 = (XN1 / XNXN1) (YN1 / XNXN1) (ZN1 / XNXN1) ; DUI1 = (DPROXI1 - DMPI1) ; CHUXI1 = ((DUI1 * XN1) 'NOMC' 'UX') ; CHUYI1 = ((DUI1 * YN1) 'NOMC' 'UY') ; CHUZI1 = ((DUI1 * ZN1) 'NOMC' 'UZ') ; CHUXI1 = 'CHAN' 'ATTRIBUT' CHUXI1 'NATURE' 'DISCRET' ; CHUYI1 = 'CHAN' 'ATTRIBUT' CHUYI1 'NATURE' 'DISCRET' ; CHUZI1 = 'CHAN' 'ATTRIBUT' CHUZI1 'NATURE' 'DISCRET' ; CHUI1 = (CHUXI1 'ET' CHUYI1 'ET' CHUZI1) * MASQI1 ; 'DEPL' ENVPARI3 'PLUS' CHUI1 ; 'FINS' ; DENSX1 = ('MESU' ('CONT' ELMI1)) / 3. ; DENSX1 = 'MAXI' ('PROG' DENSX1 DENSMI1) ; DENSX1 = 'MINI' ('PROG' DENSX1 DENSI1) ; VXI1 = ELMI1 'VOLU' ELPI1 'DINI' DENSX1 'DFIN' DENSX1 ; VXI1 = VXI1 'CHAN' 'TET4' ; ENVMATI2 = (ENVMATI1 'ET' ENVPARI1) 'DIFF' ('ENVE' VXI1) ; ENVMATI1 = ENVMATI1 'ET' ENVPARI1 ; 'ELIM' ENVMATI1 TOL1 ; 'SINO' ; IPARI1 = FAUX ; 'FINS' ; 'FINS' ; * * * Maillage Volume Matrice : * 'OPTI' 'ERRE' 'CONT' ; 'SI' (IFACI1 'OU' ('NON' IPARI1)) ; MMATI1 = ('VOLU' ENVMATI1) 'COUL' 'OLIV' ; 'SINO' ; MMATI1 = (('VOLU' ENVMATI2) 'ET' VXI1) 'COUL' 'OLIV' ; 'FINS' ; 'OPTI' 'ERRE' 'NORM' ; * Test Resultat Volu : * IANNULV1 = 'EGA' ('TYPE' MMATI1) 'ANNULE' ; 'SI' IANNULV1 ; 'MESS' ' ##### ECHEC Maillage Volume Matrice (ANNULE) !' ; 'SINO' ; * Test sur Enveloppes Resultat : * MTESTI1 = ('ENVE' MMATI1) 'DIFF' ENVMATI1 ; 'SI' ((NBNO MTESTI1) 'NEG' 0) ; 'MESS' ' ##### ECHEC Maillage Volume Matrice !' ; 'SINO' ; TMPARMAT . PCI1 . 'MATR' = MMATI1 ; IAFAIR1 = FAUX ; 'FINS' ; 'FINS' ; * * * Maillage Volume Particule : * 'SI' IPARI1 ; 'OPTI' 'ERRE' 'CONT' ; MPARI1 = ('VOLU' ENVPARI1) 'COUL' 'ORAN' ; 'OPTI' 'ERRE' 'NORM' ; * Test Resultat Volu : * IANNULV2 = 'EGA' ('TYPE' MPARI1) 'ANNULE' ; 'SI' IANNULV2 ; 'MESS' ' ##### ECHEC Maillage Volume particule (ANNULE) ' ; 'SINO' ; * Test sur Enveloppes Resultat : * MTESTI1 = ('ENVE' MPARI1) 'DIFF' ENVPARI1 ; 'SI' ((NBNO MTESTI1) 'NEG' 0) ; 'MESS' ' ##### ECHEC Maillage Volume particule ' ; IAFAIR1 = VRAI ; 'SINO' ; TMPARMAT . PCI1 . 'PART' = MPARI1 ; IAFAIR1 = IAFAIR1 'OU' FAUX ; 'FINS' ; 'FINS' ; IANNULV1 = IANNULV1 'OU' IANNULV2 ; 'FINS' ; * * 'SI' ('NON' IAFAIR1) ; MOT1 = 'CHAI' ' ***** Particule No ' &BI1 ' / ' NBI1 ' : maillage REUSSI !' ; 'MESS' MOT1 ; 'QUIT' BDENS1 ; 'SINO' ; MOT1 = 'CHAI' ' ##### Particule No ' &BI1 ' / ' NBI1 ' : maillage ECHOUE !' ; 'MESS' MOT1 ; 'SAUT' 1 'LIGN' ; 'FINS' ; * * 'FIN' BDENS1 ; * * 'SI' IAFAIR1 ; 'SI' (&BPOSI1 '>' 1) ; 'DEPL' PCI1 'MOIN' VDEPI0 ; 'FINS' ; 'SI' (&BPOSI1 'EGA' NBPOSI1) ; 'QUIT' BPOSI1 ; 'FINS' ; IPERI1 = VRAI ; 'SI' IJUSI1 ; 'MESS' ' - ATTENTION : Intersection PAS ASSEZ FRANCHE detectee' ; 'MESS' ' => Deplacement position particule' ; VDEPI1 = ('FLOT' &BPOSI1) * VDEPI1 ; PCI0 = PCI1 'PLUS' VDEPI1 ; IOKAY1 = VRAI ; 'REPE' BJ1 NBJ1 ; PCJ0 = MPTI1 'POIN' &BJ1 ; 'SI' (PCJ0 'DANS' MPOI1) ; 'SI' (('NORM' (PCJ0 'MOIN' PCI0)) ' Perturbation aleatoire position particule' ; NBPERT1 = NBI1 - NPERTI1 ; 'SI' (NBPERT1 '' 5) ; AMPI1 = ('FLOT' &BPOSI1) * AMPI1 ; 'FINS' ; VDEPI1 = AMPI1 * VDEPI1 ; PCI0 = PCI1 'PLUS' VDEPI1 ; IOKAY1 = VRAI ; 'REPE' BJ1 NBJ1 ; PCJ0 = MPTI1 'POIN' &BJ1 ; 'SI' (PCJ0 'DANS' MPOI1) ; 'SI' (('NORM' (PCJ0 'MOIN' PCI0)) ' Re-initialisation du schema ' ; MPOI0 = MPOI1 'DIFF' ('MANU' 'POI1' PCI1) ; MPOI1 = PCI1 'ET' MPOI0 ; 'ITER' BESSA1 ; 'SINO' ; 'ITER' BI1 ; 'FINS' ; 'FINS' ; 'SINO' ; 'SI' IPARI1 ; MTOTI1 = MMATI1 'ET' MPARI1 ; 'SINO' ; MTOTI1 = MMATI1 ; 'FINS' ; TMPARMAT . PCI1 . 'MAIL' = MTOTI1 ; 'SI' IPREMI1 ; IPREMI1 = FAUX ; TMPARMAT . 'MPCP' = 'MANU' 'POI1' PCI1 ; TMPARMAT . 'MATR' = MMATI1 ; 'SI' IPARI1 ; TMPARMAT . 'PART' = MPARI1 ; 'FINS' ; TMPARMAT . 'MAIL' = MTOTI1 ; 'SINO' ; TMPARMAT . 'MPCP' = TMPARMAT . 'MPCP' 'ET' PCI1 ; TMPARMAT . 'MATR' = TMPARMAT . 'MATR' 'ET' MMATI1 ; 'SI' IPARI1 ; 'SI' ('EXIS' TMPARMAT 'PART') ; TMPARMAT . 'PART' = TMPARMAT . 'PART' 'ET' MPARI1 ; 'SINO' ; TMPARMAT . 'PART' = MPARI1 ; 'FINS' ; 'FINS' ; TMPARMAT . 'MAIL' = TMPARMAT . 'MAIL' 'ET' MTOTI1 ; 'FINS' ; 'SI' (&BI1 'EGA' NBI1) ; 'QUIT' BESSA1 ; 'FINS' ; 'FINS' ; * * 'FIN' BI1 ; 'FIN' BESSA1 ; MPAR1 = TMPARMAT . 'PART' ; MMAT1 = TMPARMAT . 'MATR' ; MTOT1 = TMPARMAT . 'MAIL' ; 'ELIM' MTOT1 TOL1 ; * * * Test Conformite Maillage Total : * X1 Y1 Z1 = MTOT1 'COOR' ; MPFCB1 = (X1 'POIN' 'INFE' TOL1) 'ET' (X1 'POIN' 'SUPE' (1. - TOL1)) 'ET' (Y1 'POIN' 'INFE' TOL1) 'ET' (Y1 'POIN' 'SUPE' (1. - TOL1)) 'ET' (Z1 'POIN' 'INFE' TOL1) 'ET' (Z1 'POIN' 'SUPE' (1. - TOL1)) ; ENVTOT1 = 'ENVE' MTOT1 ; MSTOT1 = ENVTOT1 'ELEM' 'APPU' 'STRI' MPFCB1 ; MTEST1 = ENVTOT1 'DIFF' MSTOT1 ; * * 'SI' (((NBNO MTEST1) + ('NBEL' MTEST1)) 'EGA' 0) ; 'SAUT' 1 'LIGN' ; 'MESS' '-------------------------- MAILLAGE REUSSI --------------------------' ; 'SAUT' 1 'LIGN' ; 'SI' ITRA1 ; FVOL = 100. * ('MESU' MPAR1) / ('MESU' MTOT1) ; 'TITR' ('CHAI' ' Maillage (Fvol = ' 'FORMAT' '(F5.1)' FVOL ' %) : ' (NBNO TMPARMAT . 'MPCP') ' Particules / ' (NBNO MTOT1) ' Noeuds / ' ('NBEL' MTOT1) ' Elements') ; 'TRAC' 'FACE' (MACB1 'ET' MMAT1) ; 'TRAC' 'FACE' (MACB1 'ET' MPAR1) ; 'TRAC' 'FACE' (MACB1 'ET' MTOT1) ; 'FINS' ; 'SINO' ; 'SAUT' 1 'LIGN' ; 'MESS' '########################## MAILLAGE ECHOUE ##########################' ; 'SAUT' 1 'LIGN' ; 'SI' ITRA1 ; 'TRAC' (MSTOT1 'ET' (MTEST1 'COUL' 'ROSE')) ; 'FINS' ; 'FINS' ; * * 'FINP' TMPARMAT ; *-------------------- FIN DE LA PROCEDURE INCLUSIO --------------------*