mmg3d
|
Functions for hash tables management and tetrahedra packing. More...
#include "mmg3d.h"
Macros | |
#define | MMG5_KC 13 |
Variables | |
char | ddb |
Functions for hash tables management and tetrahedra packing.
#define MMG5_KC 13 |
int MMG3D_hashPrism | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh structure. |
Create table of adjacency for prisms.
int MMG3D_hashTetra | ( | MMG5_pMesh | mesh, |
int | pack | ||
) |
mesh | pointer toward the mesh structure. |
pack | we pack the mesh at function begining if ![]() |
Create table of adjacency. Set pack variable to 0 for a compact mesh and to 1 for a mesh that need to be packed.
int MMG3D_hashTria | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash | ||
) |
mesh | pointer toward the mesh structure. |
hash | Edges hash table. |
Create surface adjacency table. Allocate the edge hash table hash but don't free it.
int MMG5_bdryPerm | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh structure. |
Make orientation of triangles compatible with tetra faces.
int MMG5_bdrySet | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh structure. |
Set the triangles references to the tetrahedra faces and edges.
|
inlinestatic |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary tria found in the mesh. |
Identify boundary triangles.
int MMG5_bdryUpdate | ( | MMG5_pMesh | mesh | ) |
Update tag and refs of tetra edges. If tetra is required, set the faces/edges to required
int MMG5_chkBdryTria | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh structure. |
Check the matching between actual and given number of faces in the mesh: Count the number of faces in mesh and compare this number to the number of given triangles. If the founded number exceed the given one, add the missing boundary triangles. Do nothing otherwise.
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
int MMG5_hashFace | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash, | ||
int | ia, | ||
int | ib, | ||
int | ic, | ||
int | k | ||
) |
mesh | pointer toward the mesh. |
hash | pointer toward the hash table to fill. |
ia | first vertex of face to hash. |
ib | second vertex of face to hash. |
ic | third vertex of face to hash. |
k | index of face to hash. |
int MMG5_hashGetFace | ( | MMG5_Hash * | hash, |
int | ia, | ||
int | ib, | ||
int | ic | ||
) |
return index of triangle ia ib ic
int MMG5_hashPop | ( | MMG5_Hash * | hash, |
int | a, | ||
int | b | ||
) |
remove edge from hash table
int MMG5_hEdge | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
int | a, | ||
int | b, | ||
int | ref, | ||
int16_t | tag | ||
) |
store edge on geometry
int MMG5_hGeom | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward he mesh structure. |
Build hashtable for initial mesh edges.
int MMG5_hGet | ( | MMG5_HGeom * | hash, |
int | a, | ||
int | b, | ||
int * | ref, | ||
int16_t * | tag | ||
) |
get ref and tag to edge on geometry
int MMG5_hNew | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
int | hsiz, | ||
int | hmax | ||
) |
to store edge on geometry
int MMG5_hPop | ( | MMG5_HGeom * | hash, |
int | a, | ||
int | b, | ||
int * | ref, | ||
int16_t * | tag | ||
) |
remove edge from hash table
int MMG5_hTag | ( | MMG5_HGeom * | hash, |
int | a, | ||
int | b, | ||
int | ref, | ||
int16_t | tag | ||
) |
hash | pointer toward 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
int MMG5_paktet | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh structure. |
tetra packing.
|
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.
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.
|
inlinestatic |
mesh | pointer toward the mesh structure. |
char ddb |