Download tria.dgibi

Back to the list

* 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