* fichier : tria.dgib
************************************************************************
* tria.dgibi : CAS TEST de l'operateur TRIA *
* Triangulation de Delaunay d'un maillage de points (type POI1). *
* On teste plusieurs cas : en 1D, 2D et 3D, avec, a chaque fois : *
* - un nuage de points distribues aleatoirement ; *
* - un reseau regulier (test de robustesse de l'algorithme). *
************************************************************************
** INDICATEUR DE TRACE
ITRAC = FAUX ;
OPTI 'ECHO' 1 'TRAC' 'X' ;
************************************************************************
* EN DIMENSION 1 *
************************************************************************
OPTI 'DIME' 1 'ELEM' 'SEG2' ;
** POINTS ALEATOIRES
N1 = 10 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 N1 ;
SI (&B1 EGA 1) ;
MAIL1 = POIN (EXTR LX &B1) ;
SINO ;
MAIL1 = MAIL1 ET (POIN (EXTR LX &B1)) ;
FINS ;
FIN B1 ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1) 'TITR' 'Points aleatoires (1D)' ;
FINS ;
************************************************************************
* EN DIMENSION 2 *
************************************************************************
OPTI 'DIME' 2 'ELEM' 'TRI3' ;
** POINTS ALEATOIRES DANS LE PLAN
N1 = 8 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 N1 ;
SI (&B1 EGA 1) ;
MAIL1 = ((EXTR LX &B1) (EXTR LY &B1)) ;
SINO ;
MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1)) ;
FINS ;
FIN B1 ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.2 ;
MAIL23 = TRIA MAIL1 0.2 'CONV' ;
MAIL3 = CONT MAIL2 ;
MES2 = MESU MAIL2 ;
MES3 = MESU MAIL3 'SURF' ;
SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
MESS ' ****** Erreur dans TRIA :'
MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
ERRE 5 ;
FINS ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1) 'TITR' 'Points aleatoires (2D)' ;
TRAC (MAIL21 ET MAIL1) 'TITR' 'Points aleatoires (2D) + CONV' ;
TRAC (MAIL22 ET MAIL1) 'TITR' 'Points aleatoires (2D) + 0.2' ;
TRAC (MAIL23 ET MAIL1) 'TITR' 'Points aleatoires (2D) + 0.2 + CONV' ;
FINS ;
** POINTS REPARTIS SUR UN RESEAU CARRE REGULIER
N1 = 3 ;
L1 = D N1 (0. 0.) (1. 0.) ;
MAIL1 = (CHAN 'POI1' (L1 TRAN N1 (0. 1.))) COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.2 ;
MAIL23 = TRIA MAIL1 0.2 'CONV' ;
MAIL3 = CONT MAIL2 ;
MES2 = MESU MAIL2 ;
MES3 = MESU MAIL3 'SURF' ;
SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
MESS ' ****** Erreur dans TRIA :'
MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
ERRE 5 ;
FINS ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1) 'TITR' 'Points reguliers (2D)' ;
TRAC (MAIL21 ET MAIL1) 'TITR' 'Points reguliers (2D) + CONV' ;
TRAC (MAIL22 ET MAIL1) 'TITR' 'Points reguliers (2D) + 0.2' ;
TRAC (MAIL23 ET MAIL1) 'TITR' 'Points reguliers (2D) + 0.2 + CONV' ;
FINS ;
** POINTS ALEATOIRES MAIS ALIGNES
N1 = 5 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 (DIME LX) ;
SI (&B1 EGA 1) ;
MAIL1 = ((EXTR LX &B1) 0.) ;
SINO ;
MAIL1 = MAIL1 ET ((EXTR LX &B1) 0.) ;
FINS ;
FIN B1 ;
DEPL MAIL1 'PROJ' 'CYLI' (0. 1.) 'DROI' (0. 2.) (2. 3.) ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.05 ;
MAIL23 = TRIA MAIL1 0.05 'CONV' ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1) 'ELEM' 'TITR' 'Points aleatoires alignes (2D)' ;
TRAC (MAIL21 ET MAIL1) 'ELEM' 'TITR'
'Points aleatoires alignes (2D) + CONV' ;
TRAC (MAIL22 ET MAIL1) 'ELEM' 'TITR'
'Points aleatoires alignes (2D) + 0.05' ;
TRAC (MAIL23 ET MAIL1) 'ELEM' 'TITR'
'Points aleatoires alignes (2D) + 0.05 + CONV' ;
FINS ;
************************************************************************
* EN DIMENSION 3 *
************************************************************************
OPTI 'DIME' 3 'ELEM' 'TET4' ;
R1 = @REPERE (-0.5 -0.5 -0.5) (PROG 1. 1. 1.) VRAI 'VERT' ;
** POINTS ALEATOIRES DANS L'ESPACE
N1 = 30 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
LZ = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 N1 ;
SI (&B1 EGA 1) ;
MAIL1 = ((EXTR LX &B1) (EXTR LY &B1) (EXTR LZ &B1)) ;
SINO ;
MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1) (EXTR LZ &B1)) ;
FINS ;
FIN B1 ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.4 ;
MAIL23 = TRIA MAIL1 0.4 'CONV' ;
MAIL3 = ENVE MAIL2 ;
MES2 = MESU MAIL2 ;
MES3 = MESU MAIL3 'VOLU' ;
SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
MESS ' **** Erreur dans TRIA:' ;
MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
ERRE 5 ;
FINS ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D)' ;
TRAC (MAIL21 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D) + CONV' ;
TRAC (MAIL22 ET MAIL1 ET R1) 'TITR' 'Points aleatoires (3D) + 0.4' ;
TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
'Points aleatoires (3D) + 0.4 + CONV' ;
FINS ;
** POINTS REPARTIS SUR UN RESEAU CUBIQUE REGULIER
N1 = 3 ;
L1 = D N1 (0. 0. 0.) (1. 0. 0.) ;
S1 = L1 TRAN N1 (0. 1. 0.) ;
MAIL1 = (CHAN 'POI1' (S1 VOLU 'TRAN' N1 (0. 0. 1.))) COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.2 ;
MAIL23 = TRIA MAIL1 0.2 'CONV' ;
MAIL3 = ENVE MAIL2 ;
MES2 = MESU MAIL2 ;
MES3 = MESU MAIL3 'VOLU' ;
SI (('ABS' (MES2 - MES3)) '>' 1.E-13) ;
MESS ' ****** Erreur dans TRIA :'
MESS ' Les mesures des deux triangulations ne sont pas identiques' ;
ERRE 5 ;
FINS ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D)' ;
TRAC (MAIL21 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D) + CONV' ;
TRAC (MAIL22 ET MAIL1 ET R1) 'TITR' 'Points reguliers (3D) + 0.2' ;
TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
'Points reguliers (3D) + 0.2 + CONV' ;
FINS ;
** POINTS ALEATOIRES MAIS COPLANAIRES
N1 = 20 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
LY = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 N1 ;
SI (&B1 EGA 1) ;
MAIL1 = ((EXTR LX &B1) (EXTR LY &B1) 0.) ;
SINO ;
MAIL1 = MAIL1 ET ((EXTR LX &B1) (EXTR LY &B1) 0.) ;
FINS ;
FIN B1 ;
DEPL MAIL1 'PROJ' 'CYLI' (0. 0. 1.) 'PLAN'
(0. 0. 1.) (0. 1. 1.5) (1. 0. 0.) ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.2 ;
MAIL23 = TRIA MAIL1 0.2 'CONV' ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1 ET R1) 'TITR'
'Points aleatoires coplanaires (3D)' ;
TRAC (MAIL21 ET MAIL1 ET R1) 'TITR'
'Points aleatoires coplanaires (3D) + CONV' ;
TRAC (MAIL22 ET MAIL1 ET R1) 'TITR'
'Points aleatoires coplanaires (3D) + 0.2' ;
TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
'Points aleatoires coplanaires (3D) + 0.2 + CONV' ;
FINS ;
** POINTS REPARTIS SUR UN RESEAU CARRE COPLANAIRES
N1 = 4 ;
L1 = D N1 (0. 0. 0.) (1. 0. 0.) ;
MAIL1 = L1 TRAN N1 (0. 1. 0.) ;
DEPL MAIL1 'PROJ' 'CYLI' (0. 0. 1.) 'PLAN'
(0. 0. 0.3) (0. 1. 0.5) (1. 0. 0.) ;
MAIL1 = (CHAN 'POI1' MAIL1) COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.1 ;
MAIL23 = TRIA MAIL1 0.1 'CONV' ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1 ET R1) 'TITR'
'Points reguliers coplanaires (3D)' ;
TRAC (MAIL21 ET MAIL1 ET R1) 'TITR'
'Points reguliers coplanaires (3D) + CONV' ;
TRAC (MAIL22 ET MAIL1 ET R1) 'TITR'
'Points reguliers coplanaires (3D) + 0.1' ;
TRAC (MAIL23 ET MAIL1 ET R1) 'TITR'
'Points reguliers coplanaires (3D) + 0.1 + CONV' ;
FINS ;
** POINTS ALEATOIRES MAIS ALIGNES
N1 = 4 ;
LX = BRUI 'BLAN' 'UNIF' 0.5 0.5 N1 ;
REPE B1 N1 ;
SI (&B1 EGA 1) ;
MAIL1 = ((EXTR LX &B1) 0. 0.) ;
SINO ;
MAIL1 = MAIL1 ET ((EXTR LX &B1) 0. 0.) ;
FINS ;
FIN B1 ;
DEPL MAIL1 'PROJ' 'CYLI' (0. 1. 0.) 'PLAN'
(0. 0. 0.) (0. 0. 1.) (1. 2. 0.) ;
DEPL MAIL1 'PROJ' 'CYLI' (0. 0. 1.) 'PLAN'
(0. 0. 0.5) (1. 0. 1.) (0. 1. 1.) ;
MAIL1 = MAIL1 COUL 'ROUG' ;
MAIL2 = TRIA MAIL1 ;
MAIL21 = TRIA MAIL1 'CONV' ;
MAIL22 = TRIA MAIL1 0.2 ;
MAIL23 = TRIA MAIL1 0.2 'CONV' ;
SI ITRAC ;
TRAC (MAIL2 ET MAIL1 ET R1) 'ELEM' 'TITR'
'Points aleatoires coplanaires (3D)' ;
TRAC (MAIL21 ET MAIL1 ET R1) 'ELEM' 'TITR'
'Points aleatoires coplanaires (3D) + CONV' ;
TRAC (MAIL22 ET MAIL1 ET R1) 'ELEM' 'TITR'
'Points aleatoires coplanaires (3D) + 0.2' ;
TRAC (MAIL23 ET MAIL1 ET R1) 'ELEM' 'TITR'
'Points aleatoires coplanaires (3D) + 0.2 + CONV' ;
FINS ;
************************************************************************
* MAILLAGE A PARTIR D'UN CONTOUR/SURFACE (EN DIMENSION 2) *
* ENVELOPPE/VOLUME (EN DIMENSION 3) *
************************************************************************
OPTI 'DIME' 2 'ELEM' 'TRI3' ;
** TRIANGULATION A PARTIR D'UN CONTOUR FERME EN U
X1 = 0.05 ;
N1 = 15 ;
N2 = 4 ;
L1 = D N1 (0. 0.) (1. 0.) ;
L2 = D N1 L1 (1. 1.) ;
L3 = D N2 L2 ((0.5+X1) 1.) ;
L4 = D N1 L3 ((0.5+X1) 0.1) ;
L5 = D N2 L4 ((0.5-X1) 0.1) ;
L6 = D N1 L5 ((0.5-X1) 1.) ;
L7 = D N2 L6 (0. 1.) ;
L8 = D N1 L7 (0. 0.) ;
ELIM L8 1.E-9 ;
MAIL1 = TRIA L8 0.2 ;
SI ITRAC ;
TRAC MAIL1 'TITR' 'Remplissage a partir du contour' ;
FINS ;
S8 = SURF L8 ;
MAIL1 = TRIA S8 0.2 ;
SI ITRAC ;
TRAC MAIL1 'TITR' 'Re-maillage a partir d une surface' ;
FINS ;
OPTI 'DIME' 3 'ELEM' 'TET4' ;
V8 = CHAN 'TET4' (MAIL1 VOLU 'TRAN' 4 (0. 0. 0.5)) ;
ENV8 = ENVE V8 ;
MAIL1 = TRIA ENV8 0.2 ;
SI ITRAC ;
TRAC 'FACE' MAIL1 'TITR' 'Maillage a partir de l enveloppe' ;
FINS ;
MAIL1 = TRIA V8 0.2 ;
SI ITRAC ;
TRAC 'FACE' MAIL1 'TITR' 'Re-maillage a partir d un volume' ;
FINS ;
FIN ;
© Cast3M 2003 - All rights reserved.
Disclaimer