Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
|
Functions for hash tables management and tetrahedra packing. More...
Go to the source code of this file.
Macros | |
#define | MMG5_KC 13 |
Functions | |
int | MMG5_paktet (MMG5_pMesh mesh) |
MMG5_int | MMG5_hashGetFace (MMG5_Hash *hash, MMG5_int ia, MMG5_int ib, MMG5_int ic) |
int | MMG3D_hashTetra (MMG5_pMesh mesh, int pack) |
Create array of adjacency. | |
int | MMG3D_hashPrism (MMG5_pMesh mesh) |
static int | MMG5_setEdgeNmTag (MMG5_pMesh mesh, MMG5_Hash *hash) |
static uint16_t | MMG5_skip_ParBdy (uint16_t tag) |
int | MMG5_setVertexNmTag (MMG5_pMesh mesh, uint16_t func(uint16_t)) |
int | MMG5_setNmTag (MMG5_pMesh mesh, MMG5_Hash *hash) |
int | MMG3D_hashTria (MMG5_pMesh mesh, MMG5_Hash *hash) |
int | MMG5_hashPop (MMG5_Hash *hash, MMG5_int a, MMG5_int b) |
int | MMG5_hTag (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, uint16_t tag) |
int | MMG5_hPop (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int *ref, uint16_t *tag) |
int | MMG5_hGet (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int *ref, uint16_t *tag) |
int | MMG5_hEdge (MMG5_pMesh mesh, MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, uint16_t tag) |
int | MMG5_hNew (MMG5_pMesh mesh, MMG5_HGeom *hash, MMG5_int hsiz, MMG5_int hmax) |
int | MMG5_hGeom (MMG5_pMesh mesh) |
static int | MMG5_bdryTria (MMG5_pMesh mesh, MMG5_int ntmesh) |
int | MMG5_chkBdryTria (MMG5_pMesh mesh) |
int | MMG5_chkBdryTria_countBoundaries (MMG5_pMesh mesh, MMG5_int *ntmesh, MMG5_int *ntpres) |
int | MMG5_chkBdryTria_hashBoundaries (MMG5_pMesh mesh, MMG5_int ntmesh, MMG5_Hash *hashElt) |
int | MMG5_chkBdryTria_flagExtraTriangles (MMG5_pMesh mesh, MMG5_int *ntpres, MMG5_Hash *hashElt) |
int | MMG5_chkBdryTria_deleteExtraTriangles (MMG5_pMesh mesh, MMG5_int *permtria) |
int | MMG5_chkBdryTria_addMissingTriangles (MMG5_pMesh mesh, MMG5_int ntmesh, MMG5_int ntpres) |
int | MMG5_bdrySet (MMG5_pMesh mesh) |
int | MMG5_bdryUpdate (MMG5_pMesh mesh) |
int | MMG5_bdryPerm (MMG5_pMesh mesh) |
Variables | |
int8_t | ddb |
Functions for hash tables management and tetrahedra packing.
Definition in file hash_3d.c.
int MMG3D_hashPrism | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Create partial table of adjacency for prisms (prism \( <-> \) prism).
Definition at line 240 of file hash_3d.c.
int MMG3D_hashTetra | ( | MMG5_pMesh | mesh, |
int | pack | ||
) |
Create array of adjacency.
mesh | pointer to the mesh structure. |
pack | we pack the mesh at function begining if \(pack=1\). |
Create table of adjacency. Set pack variable to 0 for a compact mesh and to 1 for a mesh that need to be packed.
Definition at line 122 of file hash_3d.c.
int MMG3D_hashTria | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash | ||
) |
mesh | pointer to the mesh structure. |
hash | Edges hash table. |
Create surface adjacency table. Allocate the edge hash table hash but don't free it.
Definition at line 838 of file hash_3d.c.
int MMG5_bdryPerm | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Make orientation of triangles compatible with tetra faces for external tria and with domain of max ref for interface tria.
Definition at line 2385 of file hash_3d.c.
int MMG5_bdrySet | ( | MMG5_pMesh | mesh | ) |
|
inlinestatic |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary tria found in the mesh. |
Fill tria array with missing triangles:
Definition at line 1266 of file hash_3d.c.
int MMG5_bdryUpdate | ( | MMG5_pMesh | mesh | ) |
mesh |
Update tag and refs of tetra edges. If tetra is required, set the faces/edges to required.
Definition at line 2294 of file hash_3d.c.
int MMG5_chkBdryTria | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Step 1: scan the mesh and count the boundaries
Step 2: detect the extra boundaries (that will be ignored) provided by the user
Step 3: add the missing boundary triangles or, if the mesh contains prisms, set to required the triangles at interface betwen prisms and tet
Definition at line 1559 of file hash_3d.c.
int MMG5_chkBdryTria_addMissingTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int | ntmesh, | ||
MMG5_int | ntpres | ||
) |
mesh | pointer to the mesh structure. |
Step 3 of MMG5_chkBdryTria : add the missing boundary triangles or, if the mesh contains prisms, set to required the triangles at interface betwen prisms and tet
Definition at line 1910 of file hash_3d.c.
int MMG5_chkBdryTria_countBoundaries | ( | MMG5_pMesh | mesh, |
MMG5_int * | ntmesh, | ||
MMG5_int * | ntpres | ||
) |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary triangles in the mesh. |
ntpres | number of preserved boundaries in the mesh. |
Step 1 of MMG5_chkBdryTria : scan the mesh and count the boundaries
Definition at line 1595 of file hash_3d.c.
int MMG5_chkBdryTria_deleteExtraTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int * | permtria | ||
) |
int MMG5_chkBdryTria_flagExtraTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int * | ntpres, | ||
MMG5_Hash * | hashElt | ||
) |
mesh | pointer to the mesh structure. |
Step 2.5 of MMG5_chkBdryTria : Travel through the tria, delete those that are not in the hash tab or that are stored more that once.
Definition at line 1813 of file hash_3d.c.
int MMG5_chkBdryTria_hashBoundaries | ( | MMG5_pMesh | mesh, |
MMG5_int | ntmesh, | ||
MMG5_Hash * | hashElt | ||
) |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary triangles in the mesh. |
hashElt | pointer towards face hash table. |
Step 2 of MMG5_chkBdryTria : create hash tables of boundaries in the mesh
Definition at line 1729 of file hash_3d.c.
MMG5_int MMG5_hashGetFace | ( | MMG5_Hash * | hash, |
MMG5_int | ia, | ||
MMG5_int | ib, | ||
MMG5_int | ic | ||
) |
int MMG5_hashPop | ( | MMG5_Hash * | hash, |
MMG5_int | a, | ||
MMG5_int | b | ||
) |
int MMG5_hEdge | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int | ref, | ||
uint16_t | tag | ||
) |
int MMG5_hGeom | ( | MMG5_pMesh | mesh | ) |
int MMG5_hGet | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int * | ref, | ||
uint16_t * | tag | ||
) |
int MMG5_hNew | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
MMG5_int | hsiz, | ||
MMG5_int | hmax | ||
) |
int MMG5_hPop | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int * | ref, | ||
uint16_t * | tag | ||
) |
int MMG5_hTag | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int | ref, | ||
uint16_t | tag | ||
) |
hash | pointer to the hash table in which edges are stored |
a | first edge extremity |
b | second edge extremity |
ref | reference to assign to the edge |
tag | tag to assign |
set tag to edge on geometry
Definition at line 914 of file hash_3d.c.
int MMG5_paktet | ( | MMG5_pMesh | mesh | ) |
|
inlinestatic |
mesh | pointer towar the mesh structure. |
hash | edges hash table. |
Set non-manifold tag at extremities of a non-manifold edge. Check if a non-manifold edge is at the interface of several distinct domains (thus we can't travel from a domain through another one by adjacency) and in this case, mark the edge and its extremities as required. Free the edge hash table hash if success.
Definition at line 460 of file hash_3d.c.
int MMG5_setNmTag | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash | ||
) |
mesh | pointer towar the mesh structure. |
hash | edges hash table. |
Set tags to non-manifold edges and vertices. Not done before because we need the MMG5_xTetra table.
Definition at line 816 of file hash_3d.c.
int MMG5_setVertexNmTag | ( | MMG5_pMesh | mesh, |
uint16_t | funcuint16_t | ||
) |
mesh | pointer to the mesh structure. |
Seek the non-required non-manifold points and try to analyse whether they are corner or required.
Step 1: count the number or feature edges passing through each points
Step 2: add suitable point tags depending on the counted feature edges
Definition at line 637 of file hash_3d.c.
|
inlinestatic |
|
extern |
Definition at line 42 of file mmg3d1_delone.c.