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/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#include "mmgcmakedefines.h"
32#include "mmgversion.h"
33
34#ifndef _LIBMMGTYPES_H
35#define _LIBMMGTYPES_H
36
43#define MMG5_SUCCESS 0
51#define MMG5_LOWFAILURE 1
59#define MMG5_STRONGFAILURE 2
60
65#define MG_ISO 10
66
76#define MMG5_ARG_start 1
85#define MMG5_ARG_ppMesh 2
95#define MMG5_ARG_ppLs 3
105#define MMG5_ARG_ppMet 4
115#define MMG5_ARG_ppDisp 5
125#define MMG5_ARG_ppSols 6
134#define MMG5_ARG_pMesh 7
143#define MMG5_ARG_pMet 8
152#define MMG5_ARG_pDisp 9
162#define MMG5_ARG_end 10
163
170#define MMG5_NSOLS_MAX 100
171
178#define MMG5_FILENAME_LEN_MAX 255
179
186#define MMG5_MMAT_NoSplit 0
187
194#define MMG5_MMAT_Split 1
195
206
217};
218
228typedef struct {
229 double hmin;
230 double hmax;
231 double hausd;
232 int ref;
233 int8_t elt;
235
241typedef struct {
242 double c[3];
243 double n[3];
244#ifdef USE_POINTMAP
245 int src;
246#endif
247 int ref;
248 int xp;
249 int tmp;
251 int flag;
252 int s;
253 int16_t tag;
255 int8_t tagdel;
256} MMG5_Point;
258
263typedef struct {
264 double n1[3],n2[3];
266 int8_t nnor; /* By default 0; 1 if no normal available (internal NOM point) */
269
274typedef struct {
275 int a,b;
276 int ref;
277 int base;
279 int16_t tag;
280} MMG5_Edge;
282
301typedef struct {
302 double qual; /*Quality of the triangle*/
303 int v[3];
304 int ref;
305 int base;
306 int cc;
308 int edg[3];
310 int flag;
311 int16_t tag[3];
313 } MMG5_Tria;
315
316
335typedef struct {
336 int v[4];
337 int ref;
338 int base;
339 int edg[4];
341 int16_t tag[4];
343} MMG5_Quad;
345
346
370typedef struct {
371 double qual;
372 int v[4];
373 int ref;
374 int base;
375 int mark;
376 int xt;
378 int flag;
379 int16_t tag;
380} MMG5_Tetra;
382
387typedef struct {
388 int ref[4];
390 int edg[6];
392 int16_t ftag[4];
394 int16_t tag[6];
396 int8_t ori;
401
431typedef struct {
432 int v[6];
433 int ref;
434 int base;
435 int flag;
436 int xpr;
438 int8_t tag;
439} MMG5_Prism;
441
446typedef struct {
447 int ref[5];
449 int edg[9];
453 int16_t ftag[5];
455 int16_t tag[9];
459
464typedef struct {
465 int8_t dospl;
466 int ref,rin,rex;
467} MMG5_Mat;
469
474typedef struct {
476 double dhd,hmin,hmax,hsiz,hgrad,hgradreq,hausd;
477 double min[3],max[3],delta,ls,rmc;
478 int mem,npar,npari;
479 int nbr,*br;
480 int opnbdy;
481 int renum;
483 int nmati,nmat;
484 int imprim;
485 int nsd;
486 int8_t nreg;
487 int8_t ddebug;
488 int8_t badkal;
489 int8_t iso;
490 int8_t setfem;
493 int8_t fem;
494 int8_t lag;
495 int8_t parTyp;
498 int8_t sethmin;
499 int8_t sethmax;
500 uint8_t optim, optimLES, noinsert, noswap, nomove, nosurf, nosizreq;
501 uint8_t metRidTyp;
503} MMG5_Info;
504
509typedef struct {
510 int a;
511 int b;
512 int ref;
513 int nxt;
514 int16_t tag;
515} MMG5_hgeom;
516
521typedef struct {
523 int siz,max,nxt;
524} MMG5_HGeom;
525
526
531typedef struct {
532 int a,b,nxt;
533 int k;
534 int s;
535} MMG5_hedge;
536
542typedef struct {
543 int siz,max,nxt;
545} MMG5_Hash;
546
552typedef struct {
553 size_t memMax;
554 size_t memCur;
555 double gap;
556 int ver;
557 int dim;
558 int type;
559 int npi,nti,nai,nei,np,na,nt,ne,npmax,namax,ntmax,nemax,xpmax,xtmax;
560 int nquad,nprism; /* number of quadrangles and prisms */
561 int nsols; /* number of solutions (metric excluded) in the solution file */
562 int nc1;
563
564 int base;
566 int mark;
568 int xp,xt,xpr;
569 int npnil;
570 int nenil;
571 int nanil;
572 int *adja;
576 int *adjt;
580 int *adjapr;
584 int *adjq;
588 int *ipar;
600 char *namein;
601 char *nameout;
603} MMG5_Mesh;
605
610typedef struct {
611 int ver; /* Version of the solution file */
612 int dim; /* Dimension of the solution file*/
613 int np; /* Number of points of the solution */
614 int npmax; /* Maximum number of points */
615 int npi; /* Temporary number of points (internal use only) */
616 int size; /* Number of solutions per entity */
617 int type; /* Type of the solution (scalar, vectorial of tensorial) */
618 double *m;
619 double umin,umax;
620 char *namein;
621 char *nameout;
622} MMG5_Sol;
624
625#endif
MMG5_Par * MMG5_pPar
Definition: libmmgtypes.h:234
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:314
MMG5_Edge * MMG5_pEdge
Definition: libmmgtypes.h:281
MMG5_Quad * MMG5_pQuad
Definition: libmmgtypes.h:344
MMG5_type
Type of solutions.
Definition: libmmgtypes.h:200
@ MMG5_Vector
Definition: libmmgtypes.h:203
@ MMG5_Tensor
Definition: libmmgtypes.h:204
@ MMG5_Scalar
Definition: libmmgtypes.h:202
@ MMG5_Notype
Definition: libmmgtypes.h:201
MMG5_xPrism * MMG5_pxPrism
Definition: libmmgtypes.h:458
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:623
MMG5_Point * MMG5_pPoint
Definition: libmmgtypes.h:257
MMG5_Mat * MMG5_pMat
Definition: libmmgtypes.h:468
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:604
MMG5_xTetra * MMG5_pxTetra
Definition: libmmgtypes.h:400
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:381
MMG5_entities
Type of mesh entities.
Definition: libmmgtypes.h:211
@ MMG5_Noentity
Definition: libmmgtypes.h:212
@ MMG5_Vertex
Definition: libmmgtypes.h:213
@ MMG5_Tetrahedron
Definition: libmmgtypes.h:216
@ MMG5_Edg
Definition: libmmgtypes.h:214
@ MMG5_Triangle
Definition: libmmgtypes.h:215
MMG5_Prism * MMG5_pPrism
Definition: libmmgtypes.h:440
MMG5_xPoint * MMG5_pxPoint
Definition: libmmgtypes.h:268
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:274
int a
Definition: libmmgtypes.h:275
int ref
Definition: libmmgtypes.h:276
int16_t tag
Definition: libmmgtypes.h:279
int base
Definition: libmmgtypes.h:277
Hash table to store geometric edges.
Definition: libmmgtypes.h:521
int max
Definition: libmmgtypes.h:523
MMG5_hgeom * geom
Definition: libmmgtypes.h:522
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:542
MMG5_hedge * item
Definition: libmmgtypes.h:544
int max
Definition: libmmgtypes.h:543
Store input parameters of the run.
Definition: libmmgtypes.h:474
int8_t iso
Definition: libmmgtypes.h:489
int8_t parTyp
Definition: libmmgtypes.h:495
int8_t ddebug
Definition: libmmgtypes.h:487
int renum
Definition: libmmgtypes.h:481
double delta
Definition: libmmgtypes.h:477
int8_t sethmin
Definition: libmmgtypes.h:498
int8_t setfem
Definition: libmmgtypes.h:490
MMG5_pMat mat
Definition: libmmgtypes.h:502
int opnbdy
Definition: libmmgtypes.h:480
uint8_t noinsert
Definition: libmmgtypes.h:500
int8_t badkal
Definition: libmmgtypes.h:488
uint8_t metRidTyp
Definition: libmmgtypes.h:501
int PROctree
Definition: libmmgtypes.h:482
int8_t lag
Definition: libmmgtypes.h:494
int nmat
Definition: libmmgtypes.h:483
int8_t sethmax
Definition: libmmgtypes.h:499
MMG5_pPar par
Definition: libmmgtypes.h:475
int mem
Definition: libmmgtypes.h:478
double dhd
Definition: libmmgtypes.h:476
int * br
Definition: libmmgtypes.h:479
int imprim
Definition: libmmgtypes.h:484
int8_t nreg
Definition: libmmgtypes.h:486
int8_t fem
Definition: libmmgtypes.h:493
int nsd
Definition: libmmgtypes.h:485
To store user-defined references in the mesh (useful in LS mode)
Definition: libmmgtypes.h:464
int8_t dospl
Definition: libmmgtypes.h:465
int ref
Definition: libmmgtypes.h:466
MMG mesh structure.
Definition: libmmgtypes.h:552
int mark
Definition: libmmgtypes.h:566
int nenil
Definition: libmmgtypes.h:570
size_t memCur
Definition: libmmgtypes.h:554
int * adjapr
Definition: libmmgtypes.h:580
MMG5_pQuad quadra
Definition: libmmgtypes.h:596
int nsols
Definition: libmmgtypes.h:561
int nprism
Definition: libmmgtypes.h:560
MMG5_Info info
Definition: libmmgtypes.h:599
int nc1
Definition: libmmgtypes.h:562
MMG5_pPoint point
Definition: libmmgtypes.h:589
char * nameout
Definition: libmmgtypes.h:601
int * ipar
Definition: libmmgtypes.h:588
int * adjt
Definition: libmmgtypes.h:576
int ver
Definition: libmmgtypes.h:556
MMG5_pPrism prism
Definition: libmmgtypes.h:593
int npnil
Definition: libmmgtypes.h:569
size_t memMax
Definition: libmmgtypes.h:553
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:590
MMG5_HGeom htab
Definition: libmmgtypes.h:598
double gap
Definition: libmmgtypes.h:555
int base
Definition: libmmgtypes.h:564
MMG5_pTetra tetra
Definition: libmmgtypes.h:591
MMG5_pxPrism xprism
Definition: libmmgtypes.h:594
int * adjq
Definition: libmmgtypes.h:584
int nanil
Definition: libmmgtypes.h:571
MMG5_pTria tria
Definition: libmmgtypes.h:595
MMG5_pEdge edge
Definition: libmmgtypes.h:597
int type
Definition: libmmgtypes.h:558
int dim
Definition: libmmgtypes.h:557
int xp
Definition: libmmgtypes.h:568
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:592
int na
Definition: libmmgtypes.h:559
int * adja
Definition: libmmgtypes.h:572
char * namein
Definition: libmmgtypes.h:600
Definition: libmmgtypes.h:228
double hmin
Definition: libmmgtypes.h:229
double hmax
Definition: libmmgtypes.h:230
int ref
Definition: libmmgtypes.h:232
double hausd
Definition: libmmgtypes.h:231
int8_t elt
Definition: libmmgtypes.h:233
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:241
int16_t tag
Definition: libmmgtypes.h:253
int ref
Definition: libmmgtypes.h:247
int8_t tagdel
Definition: libmmgtypes.h:255
int tmp
Definition: libmmgtypes.h:249
int xp
Definition: libmmgtypes.h:248
int s
Definition: libmmgtypes.h:252
int flag
Definition: libmmgtypes.h:251
Definition: libmmgtypes.h:431
int8_t tag
Definition: libmmgtypes.h:438
int base
Definition: libmmgtypes.h:434
int ref
Definition: libmmgtypes.h:433
int xpr
Definition: libmmgtypes.h:436
int flag
Definition: libmmgtypes.h:435
Definition: libmmgtypes.h:335
int ref
Definition: libmmgtypes.h:337
int base
Definition: libmmgtypes.h:338
Definition: libmmgtypes.h:610
int size
Definition: libmmgtypes.h:616
int ver
Definition: libmmgtypes.h:611
char * nameout
Definition: libmmgtypes.h:621
int np
Definition: libmmgtypes.h:613
char * namein
Definition: libmmgtypes.h:620
int type
Definition: libmmgtypes.h:617
double * m
Definition: libmmgtypes.h:618
int npi
Definition: libmmgtypes.h:615
double umax
Definition: libmmgtypes.h:619
int dim
Definition: libmmgtypes.h:612
int npmax
Definition: libmmgtypes.h:614
Definition: libmmgtypes.h:370
int base
Definition: libmmgtypes.h:374
int flag
Definition: libmmgtypes.h:378
int mark
Definition: libmmgtypes.h:375
int xt
Definition: libmmgtypes.h:376
int ref
Definition: libmmgtypes.h:373
double qual
Definition: libmmgtypes.h:371
int16_t tag
Definition: libmmgtypes.h:379
Definition: libmmgtypes.h:301
int ref
Definition: libmmgtypes.h:304
int base
Definition: libmmgtypes.h:305
int cc
Definition: libmmgtypes.h:306
double qual
Definition: libmmgtypes.h:302
int flag
Definition: libmmgtypes.h:310
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:531
int k
Definition: libmmgtypes.h:533
int a
Definition: libmmgtypes.h:532
int s
Definition: libmmgtypes.h:534
Cell of the hash table of geom edges.
Definition: libmmgtypes.h:509
int nxt
Definition: libmmgtypes.h:513
int ref
Definition: libmmgtypes.h:512
int b
Definition: libmmgtypes.h:511
int16_t tag
Definition: libmmgtypes.h:514
int a
Definition: libmmgtypes.h:510
Structure to store surface points of a MMG mesh.
Definition: libmmgtypes.h:263
int8_t nnor
Definition: libmmgtypes.h:266
Structure to store the surface prism of a MMG mesh.
Definition: libmmgtypes.h:446
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:387
int8_t ori
Definition: libmmgtypes.h:396