mmgs
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/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 
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 
165 enum MMG5_type {
170 };
171 
181 };
182 
192 typedef struct {
193  double hmin;
194  double hmax;
195  double hausd;
196  int ref;
197  char elt;
199 
205 typedef struct {
206  double c[3];
207  double n[3];
208  int ref;
209  int xp;
210  int tmp;
212  int flag;
213  int s;
214  int16_t tag;
216  char tagdel;
217 } MMG5_Point;
219 
224 typedef struct {
225  double n1[3],n2[3];
227 } MMG5_xPoint;
229 
234 typedef struct {
235  int a,b;
236  int ref;
237  int base;
239  int16_t tag;
240 } MMG5_Edge;
242 
261 typedef struct {
262  double qual; /*Quality of the triangle*/
263  int v[3];
264  int ref;
265  int base;
266  int cc;
268  int edg[3];
270  int flag;
271  int16_t tag[3];
273  } MMG5_Tria;
275 
276 
295 typedef struct {
296  int v[4];
297  int ref;
298  int base;
299  int edg[4];
301  int16_t tag[4];
303 } MMG5_Quad;
305 
306 
330 typedef struct {
331  double qual;
332  int v[4];
333  int ref;
334  int base;
335  int mark;
336  int xt;
338  int flag;
339  int16_t tag;
340 } MMG5_Tetra;
342 
347 typedef struct {
348  int ref[4];
350  int edg[6];
352  int16_t ftag[4];
354  int16_t tag[6];
356  char ori;
359 } MMG5_xTetra;
361 
391 typedef struct {
392  int v[6];
393  int ref;
394  int base;
395  int flag;
396  int xpr;
398  char tag;
399 } MMG5_Prism;
401 
406 typedef struct {
407  int ref[5];
409  int edg[9];
413  int16_t ftag[5];
415  int16_t tag[9];
417 } MMG5_xPrism;
419 
424 typedef struct {
425  char dospl;
426  int ref,rin,rex;
427 } MMG5_Mat;
428 typedef MMG5_Mat * MMG5_pMat;
429 
434 typedef struct {
438  int opnbdy;
439  int renum;
440  int octree;
441  int nmat;
442  char nreg;
444  char parTyp;
449 } MMG5_Info;
450 
455 typedef struct {
456  int a;
457  int b;
458  int ref;
459  int nxt;
460  int16_t tag;
461 } MMG5_hgeom;
462 
463 typedef struct {
465  int siz,max,nxt;
466 } MMG5_HGeom;
467 
473 typedef struct {
474  long long memMax;
475  long long memCur;
476  double gap;
477  int ver;
478  int dim;
479  int type;
481  int nquad,nprism; /* number of quadrangles and prisms */
482  int nsols; /* number of solutions in the solution file (mshmet/int) */
483  int nc1;
484 
485  int base;
487  int mark;
489  int xp,xt,xpr;
490  int npnil;
491  int nenil;
492  int nanil;
493  int *adja;
497  int *adjt;
501  int *adjapr;
516  char *namein;
517  char *nameout;
519 } MMG5_Mesh;
521 
526 typedef struct {
527  int ver; /* Version of the solution file */
528  int dim; /* Dimension of the solution file*/
529  int np; /* Number of points of the solution */
530  int npmax; /* Maximum number of points */
531  int npi; /* Temporary number of points (internal use only) */
532  int size; /* Number of solutions per entity */
533  int type; /* Type of the solution (scalar, vectorial of tensorial) */
534  double *m;
535  double umin,umax;
536  char *namein;
537  char *nameout;
538 } MMG5_Sol;
539 typedef MMG5_Sol * MMG5_pSol;
540 
541 #endif
MMG5_type
Type of solutions.
Definition: libmmgtypes.h:165
double hausd
Definition: libmmgtypes.h:195
int octree
Definition: libmmgtypes.h:440
Definition: libmmgtypes.h:177
int base
Definition: libmmgtypes.h:485
! int xpmax
Definition: libmmgtypesf.h:530
int npi
Definition: libmmgtypes.h:531
Definition: libmmgtypes.h:167
! int a
Definition: libmmgtypesf.h:275
MMG5_pPrism prism
Definition: libmmgtypes.h:509
! double max[3]
Definition: libmmgtypesf.h:484
MMG5_pPoint point
Definition: libmmgtypes.h:505
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:508
! double dhd
Definition: libmmgtypesf.h:484
! typedef struct @1 MMG5_Point
Definition: libmmgtypes.h:330
! typedef struct @7 MMG5_xTetra
int np
Definition: libmmgtypes.h:529
int type
Definition: libmmgtypes.h:533
Definition: libmmgtypes.h:180
! typedef struct @6 MMG5_Tetra
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:506
int ref
Definition: libmmgtypes.h:196
char parTyp
Definition: libmmgtypes.h:444
! int nt
Definition: libmmgtypesf.h:530
! unsigned char optim
Definition: libmmgtypesf.h:495
! double c[3]
Definition: libmmgtypesf.h:244
int flag
Definition: libmmgtypes.h:212
! int ntmax
Definition: libmmgtypesf.h:530
! typedef struct @15 MMG5_Sol
Definition: libmmgtypes.h:168
double * m
Definition: libmmgtypes.h:534
MMG5_pTetra tetra
Definition: libmmgtypes.h:507
! char badkal
Definition: libmmgtypesf.h:491
Definition: libmmgtypes.h:526
int renum
Definition: libmmgtypes.h:439
int16_t tag
Definition: libmmgtypes.h:339
int siz
Definition: libmmgtypes.h:465
char * nameout
Definition: libmmgtypes.h:517
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:274
long long memCur
Definition: libmmgtypes.h:475
! typedef struct @11 MMG5_Info
! typedef struct @8 MMG5_Prism
char ori
Definition: libmmgtypes.h:356
int b
Definition: libmmgtypes.h:235
! unsigned char noswap
Definition: libmmgtypesf.h:495
int nanil
Definition: libmmgtypes.h:492
char nreg
Definition: libmmgtypes.h:442
int nsols
Definition: libmmgtypes.h:482
int s
Definition: libmmgtypes.h:213
! int16_t ftag[4]
Definition: libmmgtypesf.h:396
! int xpr
Definition: libmmgtypesf.h:441
! typedef struct @9 MMG5_xPrism
! int rex
Definition: libmmgtypesf.h:473
! typedef struct @14 MMG5_Mesh
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:539
int ver
Definition: libmmgtypes.h:527
int type
Definition: libmmgtypes.h:479
int16_t tag
Definition: libmmgtypes.h:214
int flag
Definition: libmmgtypes.h:270
MMG5_Mat * MMG5_pMat
Definition: libmmgtypes.h:428
int xt
Definition: libmmgtypes.h:336
! int npi
Definition: libmmgtypesf.h:530
! double hgrad
Definition: libmmgtypesf.h:484
Store input parameters of the run.
Definition: libmmgtypes.h:434
double gap
Definition: libmmgtypes.h:476
int xtmax
Definition: libmmgtypes.h:480
int nenil
Definition: libmmgtypes.h:491
int npnil
Definition: libmmgtypes.h:490
int opnbdy
Definition: libmmgtypes.h:438
! unsigned char noinsert
Definition: libmmgtypesf.h:495
! int npmax
Definition: libmmgtypesf.h:530
int rin
Definition: libmmgtypes.h:426
MMG5_xTetra * MMG5_pxTetra
Definition: libmmgtypes.h:360
! double delta
Definition: libmmgtypesf.h:484
int ref
Definition: libmmgtypes.h:458
! int nai
Definition: libmmgtypesf.h:530
Definition: libmmgtypes.h:169
double qual
Definition: libmmgtypes.h:331
Definition: libmmgtypes.h:166
int mark
Definition: libmmgtypes.h:487
double hmin
Definition: libmmgtypes.h:193
MMG5_pxPrism xprism
Definition: libmmgtypes.h:510
Definition: libmmgtypes.h:295
! char fem
Definition: libmmgtypesf.h:491
! double hausd
Definition: libmmgtypesf.h:232
int flag
Definition: libmmgtypes.h:338
int ref
Definition: libmmgtypes.h:264
int nxt
Definition: libmmgtypes.h:459
! typedef struct @2 MMG5_xPoint
int ref
Definition: libmmgtypes.h:393
int flag
Definition: libmmgtypes.h:395
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:205
MMG5_Edge * MMG5_pEdge
Definition: libmmgtypes.h:241
char * nameout
Definition: libmmgtypes.h:537
char lag
Definition: libmmgtypes.h:443
! double hmin
Definition: libmmgtypesf.h:230
! int xp
Definition: libmmgtypesf.h:247
! int nxt
Definition: libmmgtypesf.h:508
! char iso
Definition: libmmgtypesf.h:491
int16_t tag
Definition: libmmgtypes.h:239
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:234
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:520
int dim
Definition: libmmgtypes.h:528
! char ddebug
Definition: libmmgtypesf.h:491
MMG5_entities
Type of mesh entities.
Definition: libmmgtypes.h:176
int * adja
Definition: libmmgtypes.h:493
int base
Definition: libmmgtypes.h:298
To store user-defined references in the mesh (useful in LS mode)
Definition: libmmgtypes.h:424
! int16_t tag
Definition: libmmgtypesf.h:252
MMG5_pPar par
Definition: libmmgtypes.h:435
int xp
Definition: libmmgtypes.h:209
Structure to store the surface prism of a MMG mesh.
Definition: libmmgtypes.h:406
! int npar
Definition: libmmgtypesf.h:485
char * namein
Definition: libmmgtypes.h:516
MMG5_Quad * MMG5_pQuad
Definition: libmmgtypes.h:304
! double min[3]
Definition: libmmgtypesf.h:484
MMG5_pMat mat
Definition: libmmgtypes.h:448
MMG5_hgeom * geom
Definition: libmmgtypes.h:464
int nmat
Definition: libmmgtypes.h:441
! int ref
Definition: libmmgtypesf.h:233
int dim
Definition: libmmgtypes.h:478
MMG5_pEdge edge
Definition: libmmgtypes.h:513
int mark
Definition: libmmgtypes.h:335
MMG5_xPoint * MMG5_pxPoint
Definition: libmmgtypes.h:228
int base
Definition: libmmgtypes.h:394
int xt
Definition: libmmgtypes.h:489
MMG5_Prism * MMG5_pPrism
Definition: libmmgtypes.h:400
int cc
Definition: libmmgtypes.h:266
char * namein
Definition: libmmgtypes.h:536
double qual
Definition: libmmgtypes.h:262
MMG mesh structure.
Definition: libmmgtypes.h:473
long long memMax
Definition: libmmgtypes.h:474
int npari
Definition: libmmgtypes.h:437
Structure to store surface points of a MMG mesh.
Definition: libmmgtypes.h:224
int base
Definition: libmmgtypes.h:334
int base
Definition: libmmgtypes.h:237
int size
Definition: libmmgtypes.h:532
! typedef struct @13 MMG5_HGeom
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:347
! double n2[3]
Definition: libmmgtypesf.h:264
! int nti
Definition: libmmgtypesf.h:530
char tagdel
Definition: libmmgtypes.h:216
MMG5_pTria tria
Definition: libmmgtypes.h:511
! typedef struct @10 MMG5_Mat
To store user-defined references in the mesh (useful in LS mode) !
! double hmax
Definition: libmmgtypesf.h:231
! int np
Definition: libmmgtypesf.h:530
int16_t tag
Definition: libmmgtypes.h:460
int ref
Definition: libmmgtypes.h:236
char dospl
Definition: libmmgtypes.h:425
int * adjt
Definition: libmmgtypes.h:497
MMG5_HGeom htab
Definition: libmmgtypes.h:514
! typedef struct @12 MMG5_hgeom
int nc1
Definition: libmmgtypes.h:483
double hmax
Definition: libmmgtypes.h:194
MMG5_pQuad quadra
Definition: libmmgtypes.h:512
! int ne
Definition: libmmgtypesf.h:530
int xpr
Definition: libmmgtypes.h:396
MMG5_Par * MMG5_pPar
Definition: libmmgtypes.h:198
MMG5_Point * MMG5_pPoint
Definition: libmmgtypes.h:218
! double n[3]
Definition: libmmgtypesf.h:245
int b
Definition: libmmgtypes.h:457
! typedef struct @0 MMG5_Par
! unsigned char nomove
Definition: libmmgtypesf.h:495
Definition: libmmgtypes.h:178
int ref
Definition: libmmgtypes.h:208
! double n1[3]
Definition: libmmgtypesf.h:264
MMG5_xPrism * MMG5_pxPrism
Definition: libmmgtypes.h:418
! double umax
Definition: libmmgtypesf.h:586
! int namax
Definition: libmmgtypesf.h:530
! int na
Definition: libmmgtypesf.h:530
Definition: libmmgtypes.h:391
! double ls
Definition: libmmgtypesf.h:484
int a
Definition: libmmgtypes.h:456
int * adjapr
Definition: libmmgtypes.h:501
Definition: libmmgtypes.h:192
char elt
Definition: libmmgtypes.h:197
! int v[3]
Definition: libmmgtypesf.h:304
! int nei
Definition: libmmgtypesf.h:530
int nquad
Definition: libmmgtypes.h:481
int npmax
Definition: libmmgtypes.h:530
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:341
! int nprism
Definition: libmmgtypesf.h:531
To store geometric edges.
Definition: libmmgtypes.h:455
Definition: libmmgtypes.h:261
! int nemax
Definition: libmmgtypesf.h:530
Definition: libmmgtypes.h:179
int ref
Definition: libmmgtypes.h:333
int ver
Definition: libmmgtypes.h:477
! typedef struct @4 MMG5_Tria
! char imprim
Definition: libmmgtypesf.h:491
! unsigned char nosurf
Definition: libmmgtypesf.h:495
char tag
Definition: libmmgtypes.h:398
! int mem
Definition: libmmgtypesf.h:485
int ref
Definition: libmmgtypes.h:297
MMG5_Info info
Definition: libmmgtypes.h:515
int tmp
Definition: libmmgtypes.h:210
! double hsiz
Definition: libmmgtypesf.h:484
unsigned char optimLES
Definition: libmmgtypes.h:447
! typedef struct @3 MMG5_Edge
! typedef struct @5 MMG5_Quad
double umin
Definition: libmmgtypes.h:535
! int edg[3]
Definition: libmmgtypesf.h:309
int base
Definition: libmmgtypes.h:265
Definition: libmmgtypes.h:463