2 // Incl : Common definitions for HEXA-BLOCK
10 // Conventions C Ansi compatibles
12 typedef const char* cpchar;
16 #define Cestegal(c1,c2) !strcmp(c1,c2)
17 #define Cestdifferent(c1,c2) strcmp(c1,c2)
18 #define Cestvide(c1) !c1[0]
19 #define Cestnonvide(c1) c1[0]
21 // Pour rendre les operateurs plus visibles
29 #define DeuxPuissance(n) (1 << (n))
31 // Codes retour d'une fonction
32 #define HOK 0 // Code retour=0 : deroulement correct
33 #define HERR 1 // Code retour>0 = numero d'erreur, 1 par defaut
34 #define NOTHING -1 // Code retour fonction de recherche d'un index
39 // Calculs reels en 3D
46 // enum EnumCoord { dir_x, dir_y, dir_z, DIM3 };
49 #define PI 3.1415926535898
54 // Impressions de mise au point
58 #define Display(x) cout << " ... " #x " = " << x << endl
59 #define Echo(m) cout << " _______________ " << m << endl
61 // #define Libere(obj) { if (obj!=NULL) free (obj) ; obj=NULL; }
62 // #define Destroy(obj) { delete obj ; obj=NULL ; }
63 // #define Deltable(table) { delete [] table ; table=NULL ; }
65 // ---------------------------------- Definitions propres a HEXA
67 #define BEGIN_NAMESPACE_HEXA namespace Hex {
68 #define END_NAMESPACE_HEXA }
70 /* -----------------------------------------------------
72 // ---- Numerotation des faces (%x)
86 +----ae-----+ +-----> x
88 * ----------------------------------------------------- */
89 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
92 pchar get_temp_name (cpchar format, pchar nomfic);
94 enum EnumCoord { dir_x, dir_y, dir_z, DIM3 };
95 enum EnumElt { EL_NONE, EL_VERTEX, EL_EDGE, EL_QUAD, EL_HEXA,
96 EL_REMOVED, EL_MAXI };
98 enum EnumGroup { HexaCell, QuadCell, EdgeCell,
99 HexaNode, QuadNode, EdgeNode, Vertex_Node};
101 // Modes de remplissage des grilles cylindriques
102 enum EnumCyl { CYL_NOFILL, CYL_CL4, CYL_CL6, CYL_CLOSED, CYL_PEER, CYL_ODD};
103 enum EnumGrid { GR_NONE, GR_CARTESIAN, GR_CYLINDRIC, GR_SPHERIC, GR_JOINT,
104 GR_BICYL, GR_BIPIPE };
105 // Sommets de la decomposition canonique du bicylindre
107 enum EnumVCyl { S_E, S_NE, S_N, S_NW, S_W, S_SW, S_S, S_SE, S_MAXI };
109 enum KindLaw { Uniform, Arithmetic, Geometric };
111 enum EnumOrient { OR_FRONT, OR_LEFT, OR_RIGHT, OR_BACK }; // respecter l'ordre
112 enum EnumMark { IS_NONE=-1, IS_MARRIED=-2 };
113 enum EnumCount { NO_COUNTED=-3, NO_USED=-2, IS_USED=-1};
115 enum EnumVertex { V_AMONT, V_AVAL, V_TWO };
116 enum EnumQuad { E_A, E_B, E_C, E_D, QUAD4 };
118 // z=0 z=1 y=0 y=1 x=0 x=1
119 enum EnumHQuad {Q_A, Q_B, Q_C, Q_D, Q_E, Q_F, HQ_MAXI};
121 enum EnumHEdge {E_AC, E_AD, E_BC, E_BD,
122 E_AE, E_AF, E_BE, E_BF,
123 E_CE, E_CF, E_DE, E_DF, HE_MAXI };
125 enum EnumHVertex {V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF,
150 typedef std::vector <Quad*> Quads;
151 typedef std::vector <Edge*> Edges;