mmg3d
libmmgtypes.h
Go to the documentation of this file.
1 /* =============================================================================
2 ** This file is part of the mmg software package for the tetrahedral
3 ** mesh modification.
4 ** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
5 **
6 ** mmg is free software: you can redistribute it and/or modify it
7 ** under the terms of the GNU Lesser General Public License as published
8 ** by the Free Software Foundation, either version 3 of the License, or
9 ** (at your option) any later version.
10 **
11 ** mmg is distributed in the hope that it will be useful, but WITHOUT
12 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 ** License for more details.
15 **
16 ** You should have received a copy of the GNU Lesser General Public
17 ** License and of the GNU General Public License along with mmg (in
18 ** files COPYING.LESSER and COPYING). If not, see
19 ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
20 ** use this copy of the mmg distribution only if you accept them.
21 ** =============================================================================
22 */
23 
27 #include <stdint.h>
28 #include <stdarg.h>
29 #include <stddef.h>
30 
31 #ifndef _LIBMMGTYPES_H
32 #define _LIBMMGTYPES_H
33 
40 #define MMG5_SUCCESS 0
41 
48 #define MMG5_LOWFAILURE 1
49 
56 #define MMG5_STRONGFAILURE 2
57 
62 #define MG_ISO 10
63 
73 #define MMG5_ARG_start 1
74 
82 #define MMG5_ARG_ppMesh 2
83 
92 #define MMG5_ARG_ppLs 3
93 
102 #define MMG5_ARG_ppMet 4
103 
112 #define MMG5_ARG_ppDisp 5
113 
122 #define MMG5_ARG_ppSols 6
123 
131 #define MMG5_ARG_pMesh 7
132 
140 #define MMG5_ARG_pMet 8
141 
149 #define MMG5_ARG_pDisp 9
150 
159 #define MMG5_ARG_end 10
160 
167 #define MMG5_NSOLS_MAX 100
168 
173 enum MMG5_type {
178 };
179 
190 };
191 
201 typedef struct {
202  double hmin;
203  double hmax;
204  double hausd;
205  int ref;
206  char elt;
208 
214 typedef struct {
215  double c[3];
216  double n[3];
217  int ref;
218  int xp;
219  int tmp;
221  int flag;
222  int s;
223  int16_t tag;
225  char tagdel;
226 } MMG5_Point;
228 
233 typedef struct {
234  double n1[3],n2[3];
236 } MMG5_xPoint;
238 
243 typedef struct {
244  int a,b;
245  int ref;
246  int base;
248  int16_t tag;
249 } MMG5_Edge;
251 
270 typedef struct {
271  double qual; /*Quality of the triangle*/
272  int v[3];
273  int ref;
274  int base;
275  int cc;
277  int edg[3];
279  int flag;
280  int16_t tag[3];
282  } MMG5_Tria;
284 
285 
304 typedef struct {
305  int v[4];
306  int ref;
307  int base;
308  int edg[4];
310  int16_t tag[4];
312 } MMG5_Quad;
314 
315 
339 typedef struct {
340  double qual;
341  int v[4];
342  int ref;
343  int base;
344  int mark;
345  int xt;
347  int flag;
348  int16_t tag;
349 } MMG5_Tetra;
351 
356 typedef struct {
357  int ref[4];
359  int edg[6];
361  int16_t ftag[4];
363  int16_t tag[6];
365  char ori;
368 } MMG5_xTetra;
370 
400 typedef struct {
401  int v[6];
402  int ref;
403  int base;
404  int flag;
405  int xpr;
407  char tag;
408 } MMG5_Prism;
410 
415 typedef struct {
416  int ref[5];
418  int edg[9];
422  int16_t ftag[5];
424  int16_t tag[9];
426 } MMG5_xPrism;
428 
433 typedef struct {
434  char dospl;
435  int ref,rin,rex;
436 } MMG5_Mat;
437 typedef MMG5_Mat * MMG5_pMat;
438 
443 typedef struct {
446  double min[3],max[3],delta,ls;
448  int opnbdy;
449  int renum;
450  int PROctree;
451  int nmat;
452  char nreg;
454  char parTyp;
458  unsigned char inputMet;
460 } MMG5_Info;
461 
466 typedef struct {
467  int a;
468  int b;
469  int ref;
470  int nxt;
471  int16_t tag;
472 } MMG5_hgeom;
473 
478 typedef struct {
480  int siz,max,nxt;
481 } MMG5_HGeom;
482 
483 
488 typedef struct {
489  int a,b,nxt;
490  int k;
491  int s;
492 } MMG5_hedge;
493 
499 typedef struct {
500  int siz,max,nxt;
502 } MMG5_Hash;
503 
509 typedef struct {
510  size_t memMax;
511  size_t memCur;
512  double gap;
513  int ver;
514  int dim;
515  int type;
517  int nquad,nprism; /* number of quadrangles and prisms */
518  int nsols; /* number of solutions (metric excluded) in the solution file */
519  int nc1;
520 
521  int base;
523  int mark;
525  int xp,xt,xpr;
526  int npnil;
527  int nenil;
528  int nanil;
529  int *adja;
533  int *adjt;
537  int *adjapr;
541  int *ipar;
553  char *namein;
554  char *nameout;
556 } MMG5_Mesh;
558 
563 typedef struct {
564  int ver; /* Version of the solution file */
565  int dim; /* Dimension of the solution file*/
566  int np; /* Number of points of the solution */
567  int npmax; /* Maximum number of points */
568  int npi; /* Temporary number of points (internal use only) */
569  int size; /* Number of solutions per entity */
570  int type; /* Type of the solution (scalar, vectorial of tensorial) */
571  double *m;
572  double umin,umax;
573  char *namein;
574  char *nameout;
575 } MMG5_Sol;
576 typedef MMG5_Sol * MMG5_pSol;
577 
578 #endif
MMG5_type
Type of solutions.
Definition: libmmgtypes.h:173
double hausd
Definition: libmmgtypes.h:204
! typedef struct @15 MMG5_Hash
Definition: libmmgtypes.h:185
int base
Definition: libmmgtypes.h:521
! int xpmax
Definition: libmmgtypesf.h:571
int npi
Definition: libmmgtypes.h:568
! typedef struct @14 MMG5_hedge
Definition: libmmgtypes.h:175
! int a
Definition: libmmgtypesf.h:286
MMG5_pPrism prism
Definition: libmmgtypes.h:546
int PROctree
Definition: libmmgtypes.h:450
! double max[3]
Definition: libmmgtypesf.h:496
MMG5_pPoint point
Definition: libmmgtypes.h:542
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:545
! double dhd
Definition: libmmgtypesf.h:495
! typedef struct @1 MMG5_Point
Definition: libmmgtypes.h:339
! typedef struct @7 MMG5_xTetra
int np
Definition: libmmgtypes.h:566
int type
Definition: libmmgtypes.h:570
Definition: libmmgtypes.h:189
! typedef struct @6 MMG5_Tetra
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:543
int ref
Definition: libmmgtypes.h:205
char parTyp
Definition: libmmgtypes.h:454
! int nt
Definition: libmmgtypesf.h:571
! unsigned char optim
Definition: libmmgtypesf.h:507
! double c[3]
Definition: libmmgtypesf.h:255
double hsiz
Definition: libmmgtypes.h:445
MMG5_hedge * item
Definition: libmmgtypes.h:501
int flag
Definition: libmmgtypes.h:221
! int ntmax
Definition: libmmgtypesf.h:571
Definition: libmmgtypes.h:176
double * m
Definition: libmmgtypes.h:571
MMG5_pTetra tetra
Definition: libmmgtypes.h:544
! char badkal
Definition: libmmgtypesf.h:503
Definition: libmmgtypes.h:563
int renum
Definition: libmmgtypes.h:449
int16_t tag
Definition: libmmgtypes.h:348
int siz
Definition: libmmgtypes.h:480
char * nameout
Definition: libmmgtypes.h:554
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:283
! typedef struct @11 MMG5_Info
! typedef struct @8 MMG5_Prism
char ori
Definition: libmmgtypes.h:365
int b
Definition: libmmgtypes.h:244
! unsigned char noswap
Definition: libmmgtypesf.h:507
int nanil
Definition: libmmgtypes.h:528
char nreg
Definition: libmmgtypes.h:452
int nsols
Definition: libmmgtypes.h:518
int s
Definition: libmmgtypes.h:222
! int16_t ftag[4]
Definition: libmmgtypesf.h:407
! int xpr
Definition: libmmgtypesf.h:452
! typedef struct @9 MMG5_xPrism
! int rex
Definition: libmmgtypesf.h:484
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:576
int ver
Definition: libmmgtypes.h:564
int type
Definition: libmmgtypes.h:515
int16_t tag
Definition: libmmgtypes.h:223
int flag
Definition: libmmgtypes.h:279
MMG5_Mat * MMG5_pMat
Definition: libmmgtypes.h:437
int xt
Definition: libmmgtypes.h:345
int * ipar
Definition: libmmgtypes.h:541
! int npi
Definition: libmmgtypesf.h:571
! double hgrad
Definition: libmmgtypesf.h:495
Store input parameters of the run.
Definition: libmmgtypes.h:443
double gap
Definition: libmmgtypes.h:512
int xtmax
Definition: libmmgtypes.h:516
int nenil
Definition: libmmgtypes.h:527
int npnil
Definition: libmmgtypes.h:526
int opnbdy
Definition: libmmgtypes.h:448
! unsigned char noinsert
Definition: libmmgtypesf.h:507
! int npmax
Definition: libmmgtypesf.h:571
int rin
Definition: libmmgtypes.h:435
MMG5_xTetra * MMG5_pxTetra
Definition: libmmgtypes.h:369
! double delta
Definition: libmmgtypesf.h:496
int ref
Definition: libmmgtypes.h:469
! int nai
Definition: libmmgtypesf.h:571
! double hgradreq
Definition: libmmgtypesf.h:495
Definition: libmmgtypes.h:177
double qual
Definition: libmmgtypes.h:340
Definition: libmmgtypes.h:174
int mark
Definition: libmmgtypes.h:523
double hmin
Definition: libmmgtypes.h:202
MMG5_pxPrism xprism
Definition: libmmgtypes.h:547
Definition: libmmgtypes.h:304
! char fem
Definition: libmmgtypesf.h:503
! double hausd
Definition: libmmgtypesf.h:243
int flag
Definition: libmmgtypes.h:347
int ref
Definition: libmmgtypes.h:273
int nxt
Definition: libmmgtypes.h:470
! typedef struct @2 MMG5_xPoint
int ref
Definition: libmmgtypes.h:402
int flag
Definition: libmmgtypes.h:404
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
MMG5_Edge * MMG5_pEdge
Definition: libmmgtypes.h:250
char * nameout
Definition: libmmgtypes.h:574
char lag
Definition: libmmgtypes.h:453
! double hmin
Definition: libmmgtypesf.h:241
! int xp
Definition: libmmgtypesf.h:258
! int nxt
Definition: libmmgtypesf.h:521
! char iso
Definition: libmmgtypesf.h:503
int16_t tag
Definition: libmmgtypes.h:248
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:243
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:557
int dim
Definition: libmmgtypes.h:565
! char ddebug
Definition: libmmgtypesf.h:503
MMG5_entities
Type of mesh entities.
Definition: libmmgtypes.h:184
int * adja
Definition: libmmgtypes.h:529
int base
Definition: libmmgtypes.h:307
Definition: libmmgtypes.h:187
To store user-defined references in the mesh (useful in LS mode)
Definition: libmmgtypes.h:433
! int16_t tag
Definition: libmmgtypesf.h:263
MMG5_pPar par
Definition: libmmgtypes.h:444
int xp
Definition: libmmgtypes.h:218
Structure to store the surface prism of a MMG mesh.
Definition: libmmgtypes.h:415
! int npar
Definition: libmmgtypesf.h:497
char * namein
Definition: libmmgtypes.h:553
MMG5_Quad * MMG5_pQuad
Definition: libmmgtypes.h:313
! double min[3]
Definition: libmmgtypesf.h:496
MMG5_pMat mat
Definition: libmmgtypes.h:459
MMG5_hgeom * geom
Definition: libmmgtypes.h:479
int nmat
Definition: libmmgtypes.h:451
! int ref
Definition: libmmgtypesf.h:244
int dim
Definition: libmmgtypes.h:514
MMG5_pEdge edge
Definition: libmmgtypes.h:550
int mark
Definition: libmmgtypes.h:344
MMG5_xPoint * MMG5_pxPoint
Definition: libmmgtypes.h:237
int base
Definition: libmmgtypes.h:403
int xt
Definition: libmmgtypes.h:525
MMG5_Prism * MMG5_pPrism
Definition: libmmgtypes.h:409
int cc
Definition: libmmgtypes.h:275
char * namein
Definition: libmmgtypes.h:573
double qual
Definition: libmmgtypes.h:271
MMG mesh structure.
Definition: libmmgtypes.h:509
int npari
Definition: libmmgtypes.h:447
Structure to store surface points of a MMG mesh.
Definition: libmmgtypes.h:233
int base
Definition: libmmgtypes.h:343
int base
Definition: libmmgtypes.h:246
int size
Definition: libmmgtypes.h:569
! typedef struct @17 MMG5_Sol
! typedef struct @13 MMG5_HGeom
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:356
! double n2[3]
Definition: libmmgtypesf.h:275
! int nti
Definition: libmmgtypesf.h:571
int siz
Definition: libmmgtypes.h:500
char tagdel
Definition: libmmgtypes.h:225
MMG5_pTria tria
Definition: libmmgtypes.h:548
! typedef struct @10 MMG5_Mat
To store user-defined references in the mesh (useful in LS mode) !
! double hmax
Definition: libmmgtypesf.h:242
! int np
Definition: libmmgtypesf.h:571
int16_t tag
Definition: libmmgtypes.h:471
int ref
Definition: libmmgtypes.h:245
char dospl
Definition: libmmgtypes.h:434
int * adjt
Definition: libmmgtypes.h:533
MMG5_HGeom htab
Definition: libmmgtypes.h:551
! typedef struct @12 MMG5_hgeom
int nc1
Definition: libmmgtypes.h:519
double hmax
Definition: libmmgtypes.h:203
MMG5_pQuad quadra
Definition: libmmgtypes.h:549
! int ne
Definition: libmmgtypesf.h:571
int xpr
Definition: libmmgtypes.h:405
MMG5_Par * MMG5_pPar
Definition: libmmgtypes.h:207
MMG5_Point * MMG5_pPoint
Definition: libmmgtypes.h:227
size_t memMax
Definition: libmmgtypes.h:510
! double n[3]
Definition: libmmgtypesf.h:256
int b
Definition: libmmgtypes.h:468
! typedef struct @0 MMG5_Par
! unsigned char nomove
Definition: libmmgtypesf.h:507
Definition: libmmgtypes.h:186
! int b
Definition: libmmgtypesf.h:286
int ref
Definition: libmmgtypes.h:217
! double n1[3]
Definition: libmmgtypesf.h:275
MMG5_xPrism * MMG5_pxPrism
Definition: libmmgtypes.h:427
! double umax
Definition: libmmgtypesf.h:628
! int namax
Definition: libmmgtypesf.h:571
! int na
Definition: libmmgtypesf.h:571
Definition: libmmgtypes.h:400
! double ls
Definition: libmmgtypesf.h:496
int a
Definition: libmmgtypes.h:467
int * adjapr
Definition: libmmgtypes.h:537
Definition: libmmgtypes.h:201
char elt
Definition: libmmgtypes.h:206
! int v[3]
Definition: libmmgtypesf.h:315
! int nei
Definition: libmmgtypesf.h:571
int nquad
Definition: libmmgtypes.h:517
int npmax
Definition: libmmgtypes.h:567
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:350
! int nprism
Definition: libmmgtypesf.h:572
Cell of the hash table of geom edges.
Definition: libmmgtypes.h:466
Definition: libmmgtypes.h:270
! int nemax
Definition: libmmgtypesf.h:571
Definition: libmmgtypes.h:188
int nxt
Definition: libmmgtypes.h:489
int ref
Definition: libmmgtypes.h:342
int ver
Definition: libmmgtypes.h:513
! typedef struct @4 MMG5_Tria
! char imprim
Definition: libmmgtypesf.h:503
! unsigned char nosurf
Definition: libmmgtypesf.h:507
size_t memCur
Definition: libmmgtypes.h:511
char tag
Definition: libmmgtypes.h:407
! int mem
Definition: libmmgtypesf.h:497
int k
Definition: libmmgtypes.h:490
int ref
Definition: libmmgtypes.h:306
MMG5_Info info
Definition: libmmgtypes.h:552
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:488
int tmp
Definition: libmmgtypes.h:219
! typedef struct @16 MMG5_Mesh
unsigned char optimLES
Definition: libmmgtypes.h:457
! typedef struct @3 MMG5_Edge
! typedef struct @5 MMG5_Quad
double umin
Definition: libmmgtypes.h:572
! int edg[3]
Definition: libmmgtypesf.h:320
int base
Definition: libmmgtypes.h:274
unsigned char inputMet
Definition: libmmgtypes.h:458
Hash table to store geometric edges.
Definition: libmmgtypes.h:478
int s
Definition: libmmgtypes.h:491