mmg2d
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 {
445  double dhd,hmin,hmax,hsiz,hgrad,hgradreq,hausd;
446  double min[3],max[3],delta,ls;
447  int mem,npar,npari;
448  int opnbdy;
449  int renum;
450  int PROctree;
451  int nmat;
452  char nreg;
453  char imprim,ddebug,badkal,iso,fem,lag;
454  char parTyp;
457  unsigned char optim, optimLES, noinsert, noswap, nomove, nosurf;
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;
516  int npi,nti,nai,nei,np,na,nt,ne,npmax,namax,ntmax,nemax,xpmax,xtmax;
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_Edge
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:243
MMG5_Vector
@ MMG5_Vector
Definition: libmmgtypes.h:176
MMG5_Par::hmax
double hmax
Definition: libmmgtypes.h:203
MMG5_Mesh::prism
MMG5_pPrism prism
Definition: libmmgtypes.h:546
MMG5_Info::nmat
int nmat
Definition: libmmgtypes.h:451
MMG5_Mesh::xtmax
int xtmax
Definition: libmmgtypes.h:516
MMG5_Mesh::nenil
int nenil
Definition: libmmgtypes.h:527
MMG5_Sol::np
int np
Definition: libmmgtypes.h:566
MMG5_hgeom
Cell of the hash table of geom edges.
Definition: libmmgtypes.h:466
MMG5_HGeom::siz
int siz
Definition: libmmgtypes.h:480
MMG5_Tetra
Definition: libmmgtypes.h:339
MMG5_Sol
Definition: libmmgtypes.h:563
MMG5_pPar
MMG5_Par * MMG5_pPar
Definition: libmmgtypes.h:207
MMG5_pPoint
MMG5_Point * MMG5_pPoint
Definition: libmmgtypes.h:227
MMG5_Mesh::memCur
size_t memCur
Definition: libmmgtypes.h:511
MMG5_Mesh::nc1
int nc1
Definition: libmmgtypes.h:519
MMG5_Point::s
int s
Definition: libmmgtypes.h:222
MMG5_Edge::ref
int ref
Definition: libmmgtypes.h:245
MMG5_Triangle
@ MMG5_Triangle
Definition: libmmgtypes.h:188
MMG5_Tria::cc
int cc
Definition: libmmgtypes.h:275
MMG5_hgeom::tag
int16_t tag
Definition: libmmgtypes.h:471
MMG5_Mesh::ipar
int * ipar
Definition: libmmgtypes.h:541
MMG5_Mesh::xt
int xt
Definition: libmmgtypes.h:525
MMG5_Sol::namein
char * namein
Definition: libmmgtypes.h:573
MMG5_hedge::nxt
int nxt
Definition: libmmgtypes.h:489
MMG5_Sol::size
int size
Definition: libmmgtypes.h:569
MMG5_HGeom
Hash table to store geometric edges.
Definition: libmmgtypes.h:478
MMG5_Mat::rin
int rin
Definition: libmmgtypes.h:435
MMG5_Hash
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:499
MMG5_Noentity
@ MMG5_Noentity
Definition: libmmgtypes.h:185
MMG5_pEdge
MMG5_Edge * MMG5_pEdge
Definition: libmmgtypes.h:250
MMG5_Par::hmin
double hmin
Definition: libmmgtypes.h:202
MMG5_Info::nreg
char nreg
Definition: libmmgtypes.h:452
MMG5_Mesh::point
MMG5_pPoint point
Definition: libmmgtypes.h:542
MMG5_pMat
MMG5_Mat * MMG5_pMat
Definition: libmmgtypes.h:437
MMG5_Info::opnbdy
int opnbdy
Definition: libmmgtypes.h:448
MMG5_entities
MMG5_entities
Type of mesh entities.
Definition: libmmgtypes.h:184
MMG5_Mesh::memMax
size_t memMax
Definition: libmmgtypes.h:510
MMG5_Mesh::base
int base
Definition: libmmgtypes.h:521
MMG5_Mesh::nsols
int nsols
Definition: libmmgtypes.h:518
MMG5_Point::ref
int ref
Definition: libmmgtypes.h:217
MMG5_pxTetra
MMG5_xTetra * MMG5_pxTetra
Definition: libmmgtypes.h:369
MMG5_Par::ref
int ref
Definition: libmmgtypes.h:205
MMG5_hedge::k
int k
Definition: libmmgtypes.h:490
MMG5_Mesh::xtetra
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:545
MMG5_Mat
To store user-defined references in the mesh (useful in LS mode)
Definition: libmmgtypes.h:433
MMG5_Point::tagdel
char tagdel
Definition: libmmgtypes.h:225
MMG5_hedge::s
int s
Definition: libmmgtypes.h:491
MMG5_Tetrahedron
@ MMG5_Tetrahedron
Definition: libmmgtypes.h:189
MMG5_Mesh::adja
int * adja
Definition: libmmgtypes.h:529
MMG5_Mesh::tria
MMG5_pTria tria
Definition: libmmgtypes.h:548
MMG5_Tetra::qual
double qual
Definition: libmmgtypes.h:340
MMG5_Info::inputMet
unsigned char inputMet
Definition: libmmgtypes.h:458
MMG5_Mesh::mark
int mark
Definition: libmmgtypes.h:523
MMG5_Mesh::quadra
MMG5_pQuad quadra
Definition: libmmgtypes.h:549
MMG5_Mat::dospl
char dospl
Definition: libmmgtypes.h:434
MMG5_Tetra::flag
int flag
Definition: libmmgtypes.h:347
MMG5_Mesh::htab
MMG5_HGeom htab
Definition: libmmgtypes.h:551
MMG5_Tria::ref
int ref
Definition: libmmgtypes.h:273
MMG5_Point
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
MMG5_Sol::nameout
char * nameout
Definition: libmmgtypes.h:574
MMG5_Prism::xpr
int xpr
Definition: libmmgtypes.h:405
MMG5_xPrism
Structure to store the surface prism of a MMG mesh.
Definition: libmmgtypes.h:415
MMG5_Edge::b
int b
Definition: libmmgtypes.h:244
MMG5_Sol::m
double * m
Definition: libmmgtypes.h:571
MMG5_Sol::umin
double umin
Definition: libmmgtypes.h:572
MMG5_Par::elt
char elt
Definition: libmmgtypes.h:206
MMG5_pxPrism
MMG5_xPrism * MMG5_pxPrism
Definition: libmmgtypes.h:427
MMG5_hgeom::nxt
int nxt
Definition: libmmgtypes.h:470
MMG5_HGeom::geom
MMG5_hgeom * geom
Definition: libmmgtypes.h:479
MMG5_Info::npari
int npari
Definition: libmmgtypes.h:447
MMG5_pxPoint
MMG5_xPoint * MMG5_pxPoint
Definition: libmmgtypes.h:237
MMG5_pTria
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:283
MMG5_Edge::tag
int16_t tag
Definition: libmmgtypes.h:248
MMG5_Point::tag
int16_t tag
Definition: libmmgtypes.h:223
MMG5_Tria
Definition: libmmgtypes.h:270
MMG5_Mesh::nanil
int nanil
Definition: libmmgtypes.h:528
MMG5_hedge
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:488
MMG5_Sol::ver
int ver
Definition: libmmgtypes.h:564
MMG5_Mesh::nquad
int nquad
Definition: libmmgtypes.h:517
MMG5_Quad::ref
int ref
Definition: libmmgtypes.h:306
MMG5_Info::mat
MMG5_pMat mat
Definition: libmmgtypes.h:459
MMG5_Sol::type
int type
Definition: libmmgtypes.h:570
MMG5_Prism::flag
int flag
Definition: libmmgtypes.h:404
MMG5_Tria::base
int base
Definition: libmmgtypes.h:274
MMG5_Notype
@ MMG5_Notype
Definition: libmmgtypes.h:174
MMG5_Mesh::xprism
MMG5_pxPrism xprism
Definition: libmmgtypes.h:547
MMG5_Mesh::xpoint
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:543
MMG5_Mesh::npnil
int npnil
Definition: libmmgtypes.h:526
MMG5_Tria::qual
double qual
Definition: libmmgtypes.h:271
MMG5_pSol
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:576
MMG5_Point::xp
int xp
Definition: libmmgtypes.h:218
MMG5_Mesh::tetra
MMG5_pTetra tetra
Definition: libmmgtypes.h:544
MMG5_xTetra
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:356
MMG5_Tensor
@ MMG5_Tensor
Definition: libmmgtypes.h:177
MMG5_Prism::base
int base
Definition: libmmgtypes.h:403
MMG5_Info::renum
int renum
Definition: libmmgtypes.h:449
MMG5_xTetra::ori
char ori
Definition: libmmgtypes.h:365
MMG5_pMesh
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:557
MMG5_Edge::base
int base
Definition: libmmgtypes.h:246
MMG5_Sol::dim
int dim
Definition: libmmgtypes.h:565
MMG5_Quad
Definition: libmmgtypes.h:304
MMG5_Quad::base
int base
Definition: libmmgtypes.h:307
MMG5_Hash::item
MMG5_hedge * item
Definition: libmmgtypes.h:501
MMG5_Par::hausd
double hausd
Definition: libmmgtypes.h:204
MMG5_Mesh
MMG mesh structure.
Definition: libmmgtypes.h:509
MMG5_Hash::siz
int siz
Definition: libmmgtypes.h:500
MMG5_Info::par
MMG5_pPar par
Definition: libmmgtypes.h:444
MMG5_hgeom::a
int a
Definition: libmmgtypes.h:467
MMG5_xPoint
Structure to store surface points of a MMG mesh.
Definition: libmmgtypes.h:233
MMG5_Sol::npmax
int npmax
Definition: libmmgtypes.h:567
MMG5_Edg
@ MMG5_Edg
Definition: libmmgtypes.h:187
MMG5_Tria::flag
int flag
Definition: libmmgtypes.h:279
MMG5_Mesh::ver
int ver
Definition: libmmgtypes.h:513
MMG5_pQuad
MMG5_Quad * MMG5_pQuad
Definition: libmmgtypes.h:313
MMG5_Tetra::base
int base
Definition: libmmgtypes.h:343
MMG5_Mesh::type
int type
Definition: libmmgtypes.h:515
MMG5_Prism::ref
int ref
Definition: libmmgtypes.h:402
MMG5_Par
Definition: libmmgtypes.h:201
MMG5_Mesh::namein
char * namein
Definition: libmmgtypes.h:553
MMG5_Info::PROctree
int PROctree
Definition: libmmgtypes.h:450
MMG5_Mesh::info
MMG5_Info info
Definition: libmmgtypes.h:552
MMG5_Point::flag
int flag
Definition: libmmgtypes.h:221
MMG5_Mesh::adjapr
int * adjapr
Definition: libmmgtypes.h:537
MMG5_Info::parTyp
char parTyp
Definition: libmmgtypes.h:454
MMG5_Prism::tag
char tag
Definition: libmmgtypes.h:407
MMG5_hgeom::ref
int ref
Definition: libmmgtypes.h:469
MMG5_Tetra::ref
int ref
Definition: libmmgtypes.h:342
MMG5_Info
Store input parameters of the run.
Definition: libmmgtypes.h:443
MMG5_Tetra::tag
int16_t tag
Definition: libmmgtypes.h:348
MMG5_Mesh::nameout
char * nameout
Definition: libmmgtypes.h:554
MMG5_Scalar
@ MMG5_Scalar
Definition: libmmgtypes.h:175
MMG5_Mesh::edge
MMG5_pEdge edge
Definition: libmmgtypes.h:550
MMG5_Info::lag
char lag
Definition: libmmgtypes.h:453
MMG5_Mesh::gap
double gap
Definition: libmmgtypes.h:512
MMG5_Prism
Definition: libmmgtypes.h:400
MMG5_Tetra::mark
int mark
Definition: libmmgtypes.h:344
MMG5_type
MMG5_type
Type of solutions.
Definition: libmmgtypes.h:173
MMG5_Mesh::adjt
int * adjt
Definition: libmmgtypes.h:533
MMG5_Info::optimLES
unsigned char optimLES
Definition: libmmgtypes.h:457
MMG5_Info::hsiz
double hsiz
Definition: libmmgtypes.h:445
MMG5_Point::tmp
int tmp
Definition: libmmgtypes.h:219
MMG5_hgeom::b
int b
Definition: libmmgtypes.h:468
MMG5_Mesh::dim
int dim
Definition: libmmgtypes.h:514
MMG5_Tetra::xt
int xt
Definition: libmmgtypes.h:345
MMG5_Vertex
@ MMG5_Vertex
Definition: libmmgtypes.h:186
MMG5_pPrism
MMG5_Prism * MMG5_pPrism
Definition: libmmgtypes.h:409
MMG5_Sol::npi
int npi
Definition: libmmgtypes.h:568
MMG5_pTetra
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:350