Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
|
Functions for ball of points computation. More...
Go to the source code of this file.
Functions | |
int | MMG5_boulevolp (MMG5_pMesh mesh, MMG5_int start, int ip, int64_t *list) |
Given a vertex and a tetrahedron, find all tetrahedra in the ball of this vertex. | |
int | MMG3D_findEdge (MMG5_pMesh mesh, MMG5_pTetra pt, MMG5_int k, MMG5_int na, MMG5_int nb, int error, int8_t *mmgWarn, int8_t *ia) |
static void | MMG3D_compute_tangent (MMG5_pMesh mesh, int nump, int ip0, int ip1, double t[3]) |
int | MMG5_boulenm (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, double n[3], double t[3]) |
int | MMG5_boulenmInt (MMG5_pMesh mesh, MMG5_int start, int ip, double t[3]) |
int | MMG5_boulernm (MMG5_pMesh mesh, MMG5_Hash *hash, MMG5_int start, int ip, MMG5_int *ng, MMG5_int *nr, MMG5_int *nm) |
int | MMG5_boulesurfvolp (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, int64_t *listv, int *ilistv, MMG5_int *lists, int *ilists, int isnm) |
int | MMG5_boulesurfvolpNom (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, int64_t *listv, int *ilistv, MMG5_int *lists, int *ilists, MMG5_int *refmin, MMG5_int *refplus, int isnm) |
int | MMG5_bouletrid (MMG5_pMesh mesh, MMG5_int start, int iface, int ip, int *il1, MMG5_int *l1, int *il2, MMG5_int *l2, MMG5_int *ip0, MMG5_int *ip1) |
static int | MMG3D_settag_oneDir (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, uint16_t tag, int edg, MMG5_int piv, MMG5_int adj) |
int | MMG5_settag (MMG5_pMesh mesh, MMG5_int start, int ia, uint16_t tag, int edg) |
static int | MMG3D_deltag_oneDir (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, uint16_t tag, MMG5_int piv, MMG5_int adj) |
int | MMG5_deltag (MMG5_pMesh mesh, MMG5_int start, int ia, uint16_t tag) |
int | MMG5_coquil (MMG5_pMesh mesh, MMG5_int start, int ia, int64_t *list, int8_t *isbdy) |
int | MMG5_srcbdy (MMG5_pMesh mesh, MMG5_int start, int ia) |
void | MMG5_coquilFaceErrorMessage (MMG5_pMesh mesh, MMG5_int k1, MMG5_int k2) |
int | MMG3D_coquilFaceFirstLoop (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, int8_t iface, int8_t ia, int64_t *list, int *ilist, MMG5_int *it1, MMG5_int *it2, MMG5_int *piv, MMG5_int *adj, int8_t *hasadja, int *nbdy, int silent) |
void | MMG3D_coquilFaceSecondLoopInit (MMG5_pMesh mesh, MMG5_int piv, int8_t *iface, int8_t *ia, int64_t *list, int *ilist, MMG5_int *it1, MMG5_int *pradj, MMG5_int *adj) |
int | MMG5_coquilface (MMG5_pMesh mesh, MMG5_int start, int8_t iface, int ia, int64_t *list, MMG5_int *it1, MMG5_int *it2, int silent) |
int16_t | MMG5_coquilTravel (MMG5_pMesh mesh, MMG5_int na, MMG5_int nb, MMG5_int *adj, MMG5_int *piv, int8_t *iface, int8_t *i) |
int16_t | MMG5_openCoquilTravel (MMG5_pMesh mesh, MMG5_int na, MMG5_int nb, MMG5_int *adj, MMG5_int *piv, int8_t *iface, int8_t *i) |
Variables | |
MMG5_Info | info |
Functions for ball of points computation.
Definition in file boulep_3d.c.
|
inlinestatic |
int MMG3D_coquilFaceFirstLoop | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
MMG5_int | na, | ||
MMG5_int | nb, | ||
int8_t | iface, | ||
int8_t | ia, | ||
int64_t * | list, | ||
int * | ilist, | ||
MMG5_int * | it1, | ||
MMG5_int * | it2, | ||
MMG5_int * | piv, | ||
MMG5_int * | adj, | ||
int8_t * | hasadja, | ||
int * | nbdy, | ||
int | silent | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
na | global index of the 1st extremity of the edge whose shell is computed |
nb | global index of the 2d extremity of the edge whose shell is computed |
iface | index of the face from which we come. |
ia | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
ilist | pointer to the number of tetra in the shell (to fill). |
it1 | pointer to the index of the 1st boundary face sharing ia |
it2 | pointer to the index of the 2d boundary face sharing ia (to fill). |
adj | pointer to the adjacent to treat in the shell (to update) |
hasadja | pointer to 0 if we don't have adja through iface, 1 otherwise (to fill) |
nbdy | pointer to the number of boundaries found minus 1 (to update) |
silent | if 1, print error message for more than 2 boundary triangles in the shell |
Travel in the shell of the edge until meeting the first tetra or reaching a tetra without adjacent. Fill it2 and list.
Definition at line 1689 of file boulep_3d.c.
void MMG3D_coquilFaceSecondLoopInit | ( | MMG5_pMesh | mesh, |
MMG5_int | piv, | ||
int8_t * | iface, | ||
int8_t * | ia, | ||
int64_t * | list, | ||
int * | ilist, | ||
MMG5_int * | it1, | ||
MMG5_int * | pradj, | ||
MMG5_int * | adj | ||
) |
mesh | pointer to the mesh structure. |
piv | global index of the pivot. |
iface | index of the face from which we come. |
i | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
ilist | pointer to the number of tetra in the shell (to fill). |
it1 | pointer to the index of the 1st boundary face sharing ia |
pradj | pointer to the first tetra of the shell (to fill). |
adj | pointer to the adjacent to treat in the shell (to update) |
Initialize the travel in the shell of the edge in reverse direction than in the coquilFaceFirstLoop function.
Definition at line 1790 of file boulep_3d.c.
|
inlinestatic |
mesh | pointer to the mesh |
start | tetra from which we start to travel |
na | edge vertex |
nb | edge vertex |
tag | new edge tag |
piv | global index of the pivot to set the sense of travel |
adj | index of adjacent tetra for the travel |
Remove the tag tag of edge ia in tetra start by travelling its shell in one direction (given by the pivot piv).
Definition at line 1300 of file boulep_3d.c.
int MMG3D_findEdge | ( | MMG5_pMesh | mesh, |
MMG5_pTetra | pt, | ||
MMG5_int | k, | ||
MMG5_int | na, | ||
MMG5_int | nb, | ||
int | error, | ||
int8_t * | mmgWarn, | ||
int8_t * | ia | ||
) |
mesh | pointer to the mesh structure. |
pt | pointer to the working tetra |
k | index of the tetra pt. |
na | index of the first extermity of the seeking edge. |
nb | index of the second extermity of the seeking edge. |
error | 1 if we want to print an error message, 0 for a warning. |
mmgWarn | static variable to print warning only once (not used if error==1) |
ia | pointer to the edge index (to fill). |
Find the local index of the edge ia in the tetra pt of index k;
Definition at line 116 of file boulep_3d.c.
|
inlinestatic |
mesh | pointer to the mesh |
start | tetra from which we start to travel |
na | edge vertex |
nb | edge vertex |
tag | new edge tag |
edg | new edge ref |
piv | global index of the pivot to set the sense of travel |
adj | index of adjacent tetra for the travel |
Set tag and ref of the edge na nb from tetra start by traveling its shell in one direction (given by the pivot piv).
Definition at line 1178 of file boulep_3d.c.
int MMG5_boulenm | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int | iface, | ||
double | n[3], | ||
double | t[3] | ||
) |
mesh | pointer to the mesh structure. |
start | tetra index. |
ip | point index. |
iface | face index. |
n | computed normal vector. |
t | computed tangent vector. |
Define normal and tangent vectors at a non manifold point (ip in start, supported by face iface), enumerating its (outer)surfacic ball.
Definition at line 199 of file boulep_3d.c.
int MMG5_boulenmInt | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
double | t[3] | ||
) |
mesh | pointer to the mesh structure. |
start | tetra index. |
ip | point index. |
t | computed tangent vector. |
Travel the ball of the internal non manifold point ip in tetra start and calculate the tangent vector to the underlying curve.
Definition at line 345 of file boulep_3d.c.
int MMG5_boulernm | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash, | ||
MMG5_int | start, | ||
int | ip, | ||
MMG5_int * | ng, | ||
MMG5_int * | nr, | ||
MMG5_int * | nm | ||
) |
mesh | pointer to the mesh structure. |
hash | pointer to an allocated hash table. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
ng | pointer to the number of ridges. |
nr | pointer to the number of reference edges. |
nm | pointer to the number of non-manifold edges. |
Count the numer of ridges and reference edges incident to the vertex ip when ip is non-manifold.
Definition at line 458 of file boulep_3d.c.
int MMG5_boulesurfvolp | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int | iface, | ||
int64_t * | listv, | ||
int * | ilistv, | ||
MMG5_int * | lists, | ||
int * | ilists, | ||
int | isnm | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetra. |
ip | index in start of the looked point. |
iface | index in start of the starting face. |
listv | pointer to the computed volumic ball. |
ilistv | pointer to the computed volumic ball size. |
lists | pointer to the computed surfacic ball. |
ilists | pointer to the computed surfacic ball size. |
isnm | 1 if ip is non-manifold, 0 otherwise. |
Compute the volumic ball of a SURFACE point p, as well as its surfacic ball, starting from tetra start, with point ip, and face if in tetra volumic ball:
Definition at line 610 of file boulep_3d.c.
int MMG5_boulesurfvolpNom | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int | iface, | ||
int64_t * | listv, | ||
int * | ilistv, | ||
MMG5_int * | lists, | ||
int * | ilists, | ||
MMG5_int * | refmin, | ||
MMG5_int * | refplus, | ||
int | isnm | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
ip | index in start of the desired vertex. |
iface | index in start of the starting face. |
listv | pointer to the computed volumic ball. |
ilistv | pointer to the computed volumic ball size. |
lists | pointer to the computed surfacic ball. |
ilists | pointer to the computed surfacic ball size. |
refmin | return the reference of one of the two subdomains in presence |
refplus | return the reference of the other subdomain in presence |
isnm | is the vertex non-manifold? |
Compute the volumic ball of a SURFACE point p, as well as its surfacic ball, starting from tetra start, with point ip, and face if in the volumic ball. listv[k] = 4*number of tet + index of point surfacic ball. lists[k] = 4*number of tet + index of face.
Definition at line 780 of file boulep_3d.c.
int MMG5_bouletrid | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | iface, | ||
int | ip, | ||
int * | il1, | ||
MMG5_int * | l1, | ||
int * | il2, | ||
MMG5_int * | l2, | ||
MMG5_int * | ip0, | ||
MMG5_int * | ip1 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
ip | index of the looked ridge point. |
iface | index in start of the starting face. |
il1 | pointer to the first ball size. |
l1 | pointer to the first computed ball (associated to n_1's side). |
il2 | pointer to the second ball size. |
l2 | pointer to the second computed ball (associated to n_2's side). |
ip0 | index of the first extremity of the ridge. |
ip1 | index of the second extremity of the ridge. |
Computation of the two surface balls of a ridge point: the list l1 is associated to the normal of face iface. ip0 and ip1 are the indices of the 2 ending point of the ridge. Both lists are returned enumerated in direct order.
Definition at line 960 of file boulep_3d.c.
int MMG5_boulevolp | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int64_t * | list | ||
) |
Given a vertex and a tetrahedron, find all tetrahedra in the ball of this vertex.
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
list | pointer to the list of the tetra in the volumic ball of ip. |
Fill the volumic ball (i.e. filled with tetrahedra) of point ip in tetra start. Results are stored in the form \(4*kel + jel\), kel = number of tetrahedra, jel = local index of p within kel.
Definition at line 57 of file boulep_3d.c.
int MMG5_coquil | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
int64_t * | list, | ||
int8_t * | isbdy | ||
) |
mesh | pointer to the mesh structure |
start | index of the starting tetra |
ia | index of the edge |
list | list of tetra sharing the edge ia |
isbdy | 1 if edge is bdy, 0 otherwise (note that at interface of 2 domains the edge shell of a bdy edge can be closed) |
Find all tets sharing edge ia of tetra start.
Definition at line 1406 of file boulep_3d.c.
int MMG5_coquilface | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int8_t | iface, | ||
int | ia, | ||
int64_t * | list, | ||
MMG5_int * | it1, | ||
MMG5_int * | it2, | ||
int | silent | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
iface | index of the boundary face from which we come. |
ia | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
it1 | pointer to the index of the first boundary face sharing ia (to fill). |
it2 | pointer to the index of the second boundary face sharing ia (to fill). |
silent | if 1, print error message for more than 2 boundary triangles in the shell |
Find all tets sharing edge ia of tetra start, and stores boundary faces when met. \( it1 \) and \( it2 = 6*iel + iface\), iel = index of tetra, iface = index of face in tetra.
Definition at line 1846 of file boulep_3d.c.
void MMG5_coquilFaceErrorMessage | ( | MMG5_pMesh | mesh, |
MMG5_int | k1, | ||
MMG5_int | k2 | ||
) |
mesh | pointer to the mesh structure. |
k1 | should contain a tetra index. |
k2 | should contain a tetra index different from k2. |
Print an error message if MMG5_coquilFace detect a boundary topology problem.
Definition at line 1616 of file boulep_3d.c.
int16_t MMG5_coquilTravel | ( | MMG5_pMesh | mesh, |
MMG5_int | na, | ||
MMG5_int | nb, | ||
MMG5_int * | adj, | ||
MMG5_int * | piv, | ||
int8_t * | iface, | ||
int8_t * | i | ||
) |
mesh | pointer to the mesh structure. |
na | global index of edge extremity. |
nb | global index of edge extremity. |
adj | starting tetrahedron at the begining and finish tet at the end. |
piv | global index of the vertex opposite to the travelling face (updated for the finish tet at the end). |
iface | previous traveling face of the tet (suspected to be boundary), updated. |
i | local index of the edge \([na,nb]\) in tet adj. |
Travel around the edge \([na,nb]\) from tetra adj and through the face piv.
Definition at line 1962 of file boulep_3d.c.
int MMG5_deltag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
uint16_t | tag | ||
) |
mesh | pointer to the mesh structure |
start | index of the starting tetra |
ia | index of the edge in tetra start that we want to modify |
tag | tag to remove |
Remove the tag tag of edge ia in tetra start by travelling its shell.
Definition at line 1347 of file boulep_3d.c.
int16_t MMG5_openCoquilTravel | ( | MMG5_pMesh | mesh, |
MMG5_int | na, | ||
MMG5_int | nb, | ||
MMG5_int * | adj, | ||
MMG5_int * | piv, | ||
int8_t * | iface, | ||
int8_t * | i | ||
) |
mesh | pointer to the mesh structure. |
na | global index of edge extremity. |
nb | global index of edge extremity. |
adj | starting tetrahedron at the begining and finish tet at the end. |
piv | global index of the vertex opposite to the travelling face (updated for the finish tet at the end). |
iface | traveling face of the tet (suspected to be boundary), updated. |
i | local index of the edge \([na,nb]\) in tet adj. |
Travel around the edge \([na,nb]\) from tetra adj and through the face piv. The shell of the edge is open and the tetra adj has no neighbour through the face iface.
Definition at line 2014 of file boulep_3d.c.
int MMG5_settag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
uint16_t | tag, | ||
int | edg | ||
) |
mesh | pointer to the mesh structure |
start | tetra from which we start |
ia | local index of the edge in start |
tag | tag to set |
edg | edge reference to set |
Set tag tag and ref edg of edge ia (if need be) in tetra start by travelling its shell.
Definition at line 1234 of file boulep_3d.c.
int MMG5_srcbdy | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia | ||
) |
mesh | pointer to the mesh structure. |
start | starting tetra. |
ia | local edge index in tetra start. |
Identify whether edge ia in start is a boundary edge by unfolding its shell.
Definition at line 1557 of file boulep_3d.c.
|
extern |