mmgs
libmmgtypesf.h File Reference

Go to the source code of this file.

Macros

#define MMG5_DATA_PTR_T   INTEGER(kind=4)
 
#define MMG5_SUCCESS   0
 
#define MMG5_LOWFAILURE   1
 
#define MMG5_STRONGFAILURE   2
 
#define MG_ISO   10
 
#define MMG5_ARG_start   %val(1)
 
#define MMG5_ARG_ppMesh   %val(2)
 
#define MMG5_ARG_ppLs   %val(3)
 
#define MMG5_ARG_ppMet   %val(4)
 
#define MMG5_ARG_ppDisp   %val(5)
 
#define MMG5_ARG_ppSols   %val(6)
 
#define MMG5_ARG_pMesh   %val(7)
 
#define MMG5_ARG_pMet   %val(8)
 
#define MMG5_ARG_pDisp   %val(9)
 
#define MMG5_ARG_end   %val(10)
 
#define MMG5_NSOLS_MAX   100
 
#define MMG5_Notype   0
 
#define MMG5_Scalar   1
 
#define MMG5_Vector   2
 
#define MMG5_Tensor   3
 
#define MMG5_Noentity   0
 
#define MMG5_Vertex   1
 
#define MMG5_Edg   2
 
#define MMG5_Triangle   3
 
#define MMG5_Tetrahedron   4
 

Typedefs

typedef MMG5_ParMMG5_pPar
 

Variables

struct {
   ! double   hmin
 
   ! double   hmax
 
   ! double   hausd
 
   ! int   ref
 
   ! char   elt
 
MMG5_Par
 
struct {
   ! double   c [3]
 
   ! double   n [3]
 
   ! int   ref
 
   ! int   xp
 
   ! int   tmp
 
   ! int   flag
 
   ! int   s
 
   ! int16_t   tag
 
   ! char   tagdel
 
MMG5_Point
 
! typedef MMG5_PointMMG5_pPoint
 
struct {
   ! double   n1 [3]
 
   ! double   n2 [3]
 
MMG5_xPoint
 
! typedef MMG5_xPointMMG5_pxPoint
 
struct {
   ! int   a
 
   ! int   b
 
   ! int   ref
 
   ! int   base
 
   ! int16_t   tag
 
MMG5_Edge
 
! typedef MMG5_EdgeMMG5_pEdge
 
struct {
   ! double   qual
 
   ! int   v [3]
 
   ! int   ref
 
   ! int   base
 
   ! int   cc
 
   ! int   edg [3]
 
   ! int   flag
 
   ! int16_t   tag [3]
 
MMG5_Tria
 
! typedef MMG5_TriaMMG5_pTria
 
struct {
   ! int   v [4]
 
   ! int   ref
 
   ! int   base
 
   ! int   edg [4]
 
   ! int16_t   tag [4]
 
MMG5_Quad
 
! typedef MMG5_QuadMMG5_pQuad
 
struct {
   ! double   qual
 
   ! int   v [4]
 
   ! int   ref
 
   ! int   base
 
   ! int   mark
 
   ! int   xt
 
   ! int   flag
 
   ! int16_t   tag
 
MMG5_Tetra
 
! typedef MMG5_TetraMMG5_pTetra
 
struct {
   ! int   ref [4]
 
   ! int   edg [6]
 
   ! int16_t   ftag [4]
 
   ! int16_t   tag [6]
 
   ! char   ori
 
MMG5_xTetra
 
! typedef MMG5_xTetraMMG5_pxTetra
 
struct {
   ! int   v [6]
 
   ! int   ref
 
   ! int   base
 
   ! int   flag
 
   ! int   xpr
 
   ! char   tag
 
MMG5_Prism
 
! typedef MMG5_PrismMMG5_pPrism
 
struct {
   ! int   ref [5]
 
   ! int   edg [9]
 
   ! int16_t   ftag [5]
 
   ! int16_t   tag [9]
 
MMG5_xPrism
 
! typedef MMG5_xPrismMMG5_pxPrism
 
struct {
   ! char   dospl
 
   ! int   ref
 
   ! int   rin
 
   ! int   rex
 
MMG5_Mat
 To store user-defined references in the mesh (useful in LS mode) !
More...
 
! typedef MMG5_MatMMG5_pMat
 
struct {
   ! MMG5_pPar   par
 
   ! double   dhd
 
   ! double   hmin
 
   ! double   hmax
 
   ! double   hsiz
 
   ! double   hgrad
 
   ! double   hgradreq
 
   ! double   hausd
 
   ! double   min [3]
 
   ! double   max [3]
 
   ! double   delta
 
   ! double   ls
 
   ! int   mem
 
   ! int   npar
 
   ! int   npari
 
   ! int   opnbdy
 
   ! int   renum
 
   ! int   PROctree
 
   ! int   nmat
 
   ! char   nreg
 
   ! char   imprim
 
   ! char   ddebug
 
   ! char   badkal
 
   ! char   iso
 
   ! char   fem
 
   ! char   lag
 
   ! char   parTyp
 
   ! unsigned char   optim
 
   ! unsigned char   optimLES
 
   ! unsigned char   noinsert
 
   ! unsigned char   noswap
 
   ! unsigned char   nomove
 
   ! unsigned char   nosurf
 
   ! unsigned char   inputMet
 
   ! MMG5_pMat   mat
 
MMG5_Info
 
struct {
   ! int   a
 
   ! int   b
 
   ! int   ref
 
   ! int   nxt
 
   ! int16_t   tag
 
MMG5_hgeom
 
struct {
   ! MMG5_hgeom *   geom
 
   ! int   siz
 
   ! int   max
 
   ! int   nxt
 
MMG5_HGeom
 
struct {
   ! int   a
 
   ! int   b
 
   ! int   nxt
 
   ! int   k
 
   ! int   s
 
MMG5_hedge
 
struct {
   ! int   siz
 
   ! int   max
 
   ! int   nxt
 
   ! MMG5_hedge *   item
 
MMG5_Hash
 
struct {
   ! size_t   memMax
 
   ! size_t   memCur
 
   ! double   gap
 
   ! int   ver
 
   ! int   dim
 
   ! int   type
 
   ! int   npi
 
   ! int   nti
 
   ! int   nai
 
   ! int   nei
 
   ! int   np
 
   ! int   na
 
   ! int   nt
 
   ! int   ne
 
   ! int   npmax
 
   ! int   namax
 
   ! int   ntmax
 
   ! int   nemax
 
   ! int   xpmax
 
   ! int   xtmax
 
   ! int   nquad
 
   ! int   nprism
 
   ! int   nsols
 
   ! int   nc1
 
   ! int   base
 
   ! int   mark
 
   ! int   xp
 
   ! int   xt
 
   ! int   xpr
 
   ! int   npnil
 
   ! int   nenil
 
   ! int   nanil
 
   ! int *   adja
 
   ! int *   adjt
 
   ! int *   adjapr
 
   ! int *   ipar
 
   ! MMG5_pPoint   point
 
   ! MMG5_pxPoint   xpoint
 
   ! MMG5_pTetra   tetra
 
   ! MMG5_pxTetra   xtetra
 
   ! MMG5_pPrism   prism
 
   ! MMG5_pxPrism   xprism
 
   ! MMG5_pTria   tria
 
   ! MMG5_pQuad   quadra
 
   ! MMG5_pEdge   edge
 
   ! MMG5_HGeom   htab
 
   ! MMG5_Info   info
 
   ! char *   namein
 
   ! char *   nameout
 
MMG5_Mesh
 
! typedef MMG5_MeshMMG5_pMesh
 
struct {
   ! int   ver
 
   ! int   dim
 
   ! int   np
 
   ! int   npmax
 
   ! int   npi
 
   ! int   size
 
   ! int   type
 
   ! double *   m
 
   ! double   umin
 
   ! double   umax
 
   ! char *   namein
 
   ! char *   nameout
 
MMG5_Sol
 
! typedef MMG5_SolMMG5_pSol
 

Macro Definition Documentation

◆ MG_ISO

#define MG_ISO   10

! * Implicite domain ref in iso mode ! * !

◆ MMG5_ARG_end

#define MMG5_ARG_end   %val(10)

! * ! * ! * To end a list of variadic argument (mandatory last argument for all our ! * variadic functions) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_pDisp

#define MMG5_ARG_pDisp   %val(9)

! * ! * ! * MMG5_pSol structure storing a displacement field ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_pMesh

#define MMG5_ARG_pMesh   %val(7)

! * ! * ! * MMG5_pMesh structure ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_pMet

#define MMG5_ARG_pMet   %val(8)

! * ! * ! * MMG5_pSol structure storing a metric field ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_ppDisp

#define MMG5_ARG_ppDisp   %val(5)

! * ! * ! * Pointer toward a MMG5_pSol structure storing a displacement (for structure ! * allocations purposes) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_ppLs

#define MMG5_ARG_ppLs   %val(3)

! * ! * ! * Pointer toward a MMG5_pSol structure storing a level-set (for structure ! * allocations purposes) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_ppMesh

#define MMG5_ARG_ppMesh   %val(2)

! * ! * ! * Pointer toward a MMG5_pMesh structure (for structure allocations purposes) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_ppMet

#define MMG5_ARG_ppMet   %val(4)

! * ! * ! * Pointer toward a MMG5_pSol structure storing a metric (for structure ! * allocations purposes) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_ppSols

#define MMG5_ARG_ppSols   %val(6)

! * ! * ! * Pointer toward an array of MMG5_Sol structures storing a list of solutions ! * allocations purposes) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_ARG_start

#define MMG5_ARG_start   %val(1)

! * ! * ! * To begin a list of variadic arguments (mandatory first arg for all our ! * variadic functions) ! * ! *

Remarks
we cannot use an enum because used in ! * variadic functions). !

◆ MMG5_DATA_PTR_T

#define MMG5_DATA_PTR_T   INTEGER(kind=4)

◆ MMG5_Edg

#define MMG5_Edg   2

< Edge entity

◆ MMG5_LOWFAILURE

#define MMG5_LOWFAILURE   1

! * ! * ! * Return value if the remesh process failed but we can save a conform ! * mesh. ! * !

◆ MMG5_Noentity

#define MMG5_Noentity   0

< Undefined type (unusable)

◆ MMG5_Notype

#define MMG5_Notype   0

< Undefined type (unusable)

◆ MMG5_NSOLS_MAX

#define MMG5_NSOLS_MAX   100

! * ! * ! * Maximal number of solutions per entity ! * !

◆ MMG5_Scalar

#define MMG5_Scalar   1

< Scalar solution

◆ MMG5_STRONGFAILURE

#define MMG5_STRONGFAILURE   2

! * ! * ! * Return value if the remesh process failed and the mesh is ! * non-conform. ! * !

◆ MMG5_SUCCESS

#define MMG5_SUCCESS   0

! * Types !
! * ! * ! * Return value for success. ! * !

◆ MMG5_Tensor

#define MMG5_Tensor   3

< Tensorial solution

◆ MMG5_Tetrahedron

#define MMG5_Tetrahedron   4

< Tetra entity

◆ MMG5_Triangle

#define MMG5_Triangle   3

< Triangle entity

◆ MMG5_Vector

#define MMG5_Vector   2

< Vectorial solution

◆ MMG5_Vertex

#define MMG5_Vertex   1

< Vertex entity

Typedef Documentation

◆ MMG5_pPar

typedef MMG5_Par* MMG5_pPar

Variable Documentation

◆ a

! int a

First extremity of edge

◆ adja

! int* adja

Table of tetrahedron adjacency: if ! $adja[4*(i-1)+1+j]=4*k+l$ then the $i^{th}$ and ! $k^th$ tetrahedra are adjacent and share their ! faces j and l (resp.)

◆ adjapr

! int* adjapr

Table of prisms adjacency: if ! $adjapr[5*(i-1)+1+j]=5*k+l$ then the $i^{th}$ and ! $k^th$ prism are adjacent and share their ! faces j and l (resp.)

◆ adjt

! int* adjt

Table of triangles adjacency: if ! $adjt[3*(i-1)+1+j]=3*k+l$ then the $i^{th}$ and ! $k^th$ triangles are adjacent and share their ! edges j and l (resp.)

◆ b

! int b

Extremities of the edge

Second extremity of edge

◆ badkal

! char badkal

◆ base

! int base

2Donly: used to store the tria+ tria edge indices ! that allow to access to the edge

Used with flag to know if an entity has been ! treated

◆ c

! double c[3]

Coordinates of point

◆ cc

! int cc

used to store the tetra + tetra face indices ! that allow to access to the tria

◆ ddebug

! char ddebug

◆ delta

! double delta

◆ dhd

! double dhd

◆ dim

! int dim

Dimension of the mesh

◆ dospl

! char dospl

◆ edg

! int edg[9]

edg[i] contains the ref of the $i^{th}$ edge ! of triangle

edg[i] contains the ref of the $i^{th}$ edge ! of quadrangle

edg[i] contains the reference of the ! $i^{th}$ edge of the tetrahedron

edges references: ! * edg[0]={0,1},edg[1]={0,2},edg[2]={0,3},edg[3]={1,2}, ! * edg[4]={1,4},edg[5]={2,5},edg[6]={3,4},edg[7]={3,5}, ! * edg[8]={4,5}

◆ edge

! MMG5_pEdge edge

Pointer toward the MMG5_Edge structure

◆ elt

! char elt

Element type

◆ fem

! char fem

◆ flag

! int flag

Flag to know if we have already treated the point

◆ ftag

! int16_t ftag[5]

ftag[i] contains the tag associated to the ! $i^{th}$ face of the tetrahedron

ftag[i] contains the tag associated to the ! $i^{th}$ face of the prism

◆ gap

! double gap

Gap for table reallocation

◆ geom

! MMG5_hgeom* geom

◆ hausd

! double hausd

Hausdorff value

◆ hgrad

! double hgrad

◆ hgradreq

! double hgradreq

◆ hmax

! double hmax

maximal size for edges

◆ hmin

! double hmin

minimal size for edges

◆ hsiz

! double hsiz

◆ htab

! MMG5_HGeom htab

MMG5_HGeom structure

◆ imprim

! char imprim

◆ info

! MMG5_Info info

MMG5_Info structure

◆ inputMet

! unsigned char inputMet

1 if we don't have a metric when we enter in mmg3d1, 0 otherwise

◆ ipar

! int* ipar

Store indices of the local parameters

◆ iso

! char iso

◆ item

! MMG5_hedge* item

◆ k

! int k

k = point along edge a b or triangle index

◆ lag

! char lag

◆ ls

! double ls

◆ m

! double* m

Solution values

◆ mark

! int mark

Used for delaunay

Flag for delaunay (to know if an entity has ! been treated)

◆ mat

! MMG5_pMat mat

◆ max

! int max

◆ mem

! int mem

◆ memCur

! size_t memCur

Current memory used

◆ memMax

! size_t memMax

Maximum memory available

◆ min

! double min[3]

◆ MMG5_Edge

! { ... } MMG5_Edge

◆ MMG5_Hash

! { ... } MMG5_Hash

◆ MMG5_hedge

! { ... } MMG5_hedge

◆ MMG5_hgeom

! { ... } MMG5_hgeom

◆ MMG5_HGeom

! { ... } MMG5_HGeom

◆ MMG5_Info

! { ... } MMG5_Info

◆ MMG5_Mat

! { ... } MMG5_Mat

To store user-defined references in the mesh (useful in LS mode) !

! * \struc MMG5_Mat ! *

◆ MMG5_Mesh

! { ... } MMG5_Mesh

◆ MMG5_Par

! { ... } MMG5_Par

◆ MMG5_pEdge

! typedef MMG5_Edge* MMG5_pEdge

◆ MMG5_pMat

! typedef MMG5_Mat* MMG5_pMat

◆ MMG5_pMesh

! typedef MMG5_Mesh* MMG5_pMesh

◆ MMG5_Point

! { ... } MMG5_Point

◆ MMG5_pPoint

! typedef MMG5_Point* MMG5_pPoint

◆ MMG5_pPrism

! typedef MMG5_Prism* MMG5_pPrism

◆ MMG5_pQuad

! typedef MMG5_Quad* MMG5_pQuad

◆ MMG5_Prism

! { ... } MMG5_Prism

◆ MMG5_pSol

! typedef MMG5_Sol* MMG5_pSol

◆ MMG5_pTetra

! typedef MMG5_Tetra* MMG5_pTetra

◆ MMG5_pTria

! typedef MMG5_Tria* MMG5_pTria

◆ MMG5_pxPoint

◆ MMG5_pxPrism

◆ MMG5_pxTetra

◆ MMG5_Quad

! { ... } MMG5_Quad

◆ MMG5_Sol

! { ... } MMG5_Sol

◆ MMG5_Tetra

! { ... } MMG5_Tetra

◆ MMG5_Tria

! { ... } MMG5_Tria

◆ MMG5_xPoint

! { ... } MMG5_xPoint

◆ MMG5_xPrism

! { ... } MMG5_xPrism

◆ MMG5_xTetra

! { ... } MMG5_xTetra

◆ n

! double n[3]

Normal or Tangent for mmgs and Tangent (if needed) for mmg3d

◆ n1

! double n1[3]

◆ n2

! double n2[3]

Normals at boundary vertex; ! n1!=n2 if the vertex belong to a ridge

◆ na

! int na

◆ nai

! int nai

◆ namax

! int namax

◆ namein

! char* namein

Input mesh name

Input solution file name

◆ nameout

! char* nameout

Output mesh name

Output solution file name

◆ nanil

! int nanil

Index of first unused edge (2d only)

◆ nc1

! int nc1

◆ ne

! int ne

◆ nei

! int nei

◆ nemax

! int nemax

◆ nenil

! int nenil

Index of first unused element

◆ nmat

! int nmat

◆ noinsert

! unsigned char noinsert

◆ nomove

! unsigned char nomove

◆ nosurf

! unsigned char nosurf

◆ noswap

! unsigned char noswap

◆ np

! int np

◆ npar

! int npar

◆ npari

! int npari

◆ npi

! int npi

◆ npmax

! int npmax

◆ npnil

! int npnil

Index of first unused point

◆ nprism

! int nprism

◆ nquad

! int nquad

◆ nreg

! char nreg

◆ nsols

! int nsols

◆ nt

! int nt

◆ nti

! int nti

◆ ntmax

! int ntmax

◆ nxt

! int nxt

Next element of hash table

◆ opnbdy

! int opnbdy

◆ optim

! unsigned char optim

◆ optimLES

! unsigned char optimLES

◆ ori

! char ori

Orientation of the triangles of the tetrahedron: ! the $ $i^{th}$ bit of ori is set to 0 when the ! $i^{th}$ face is bad orientated

◆ par

! MMG5_pPar par

◆ parTyp

! char parTyp

Contains binary flags to say which kind of local ! param are setted: if $tag = 1+2+4$ then the point ! is MG_Vert, MG_Tria and MG_Tetra

◆ point

! MMG5_pPoint point

Pointer toward the MMG5_Point structure

◆ prism

! MMG5_pPrism prism

Pointer toward the MMG5_Prism structure

◆ PROctree

! int PROctree

◆ quadra

! MMG5_pQuad quadra

Pointer toward the MMG5_Quad structure

◆ qual

! double qual

Quality of the element

◆ ref

! int ref

Reference value

Reference of point

Reference of the edge

Reference of the triangle

Reference of the quadrangle

Reference of the tetrahedron

ref[i] is the reference of the opposite triangle to the ! $i^{th}$ vertex of the tetrahedron;

Reference of the prism

face references: ref[0]={0,1,2}, ref[1]={3,4,5}, ! * ref[2]={0,3,4,1}, ref[3]={0,2,5,1}

Reference of edge

◆ renum

! int renum

◆ rex

! int rex

◆ rin

! int rin

◆ s

! int s

◆ siz

! int siz

◆ size

! int size

◆ tag

! int16_t tag

Contains binary flags : if $tag=23=16+4+2+1$, then ! the point is MG_REF, MG_GEO, MG_REQ and MG_BDY

Binary flags

tag[i] contains the tag associated to the ! $i^{th}$ edge of triangle

tag[i] contains the tag associated to the ! $i^{th}$ edge of quadrangle

tag[i] contains the tag associated to the ! $i^{th}$ edge of the tetrahedron

tag[i] contains the tag associated to the ! $i^{th}$ edge of the prism

tag of edge

◆ tagdel

! char tagdel

Tag for delaunay

◆ tetra

! MMG5_pTetra tetra

Pointer toward the MMG5_Tetra structure

◆ tmp

! int tmp

Index of point in the saved mesh (we don't count ! the unused points)

◆ tria

! MMG5_pTria tria

Pointer toward the MMG5_Tria structure

◆ type

! int type

Type of the mesh

◆ umax

! double umax

Min/max values for the solution

◆ umin

! double umin

◆ v

! int v[6]

Vertices of the triangle

Vertices of the quadrangle

Vertices of the tetrahedron

Vertices of the prism

◆ ver

! int ver

Version of the mesh file

◆ xp

! int xp

Surface point number

◆ xpmax

! int xpmax

◆ xpoint

! MMG5_pxPoint xpoint

Pointer toward the MMG5_xPoint structure

◆ xpr

! int xpr

Index of the surface MMG5_xPrism associated to ! the prism

Number of surfaces points, triangles/tetrahedra and prisms

◆ xprism

! MMG5_pxPrism xprism

Pointer toward the MMG5_pxPrism structure

◆ xt

! int xt

Index of the surface MMG5_xTetra associated to ! the tetrahedron

◆ xtetra

! MMG5_pxTetra xtetra

Pointer toward the MMG5_xTetra structure

◆ xtmax

! int xtmax