mmg3d
|
Functions for ball of points computation. More...
#include "mmg3d.h"
Functions | |
int | MMG5_boulevolp (MMG5_pMesh mesh, int start, int ip, int *list) |
int | MMG3D_findEdge (MMG5_pMesh mesh, MMG5_pTetra pt, int k, int na, 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, int start, int ip, int iface, double n[3], double t[3]) |
int | MMG5_boulenmInt (MMG5_pMesh mesh, int start, int ip, double t[3]) |
int | MMG5_boulernm (MMG5_pMesh mesh, MMG5_Hash *hash, int start, int ip, int *ng, int *nr) |
int | MMG5_boulesurfvolp (MMG5_pMesh mesh, int start, int ip, int iface, int *listv, int *ilistv, int *lists, int *ilists, int isnm) |
int | MMG5_boulesurfvolpNom (MMG5_pMesh mesh, int start, int ip, int iface, int *listv, int *ilistv, int *lists, int *ilists, int *refmin, int *refplus, int isnm) |
int | MMG5_bouletrid (MMG5_pMesh mesh, int start, int iface, int ip, int *il1, int *l1, int *il2, int *l2, int *ip0, int *ip1) |
static int | MMG3D_settag_oneDir (MMG5_pMesh mesh, int start, int na, int nb, int16_t tag, int edg, int piv, int adj) |
int | MMG5_settag (MMG5_pMesh mesh, int start, int ia, int16_t tag, int edg) |
static int | MMG3D_deltag_oneDir (MMG5_pMesh mesh, int start, int na, int nb, int16_t tag, int piv, int adj) |
int | MMG5_deltag (MMG5_pMesh mesh, int start, int ia, int16_t tag) |
int | MMG5_coquil (MMG5_pMesh mesh, int start, int ia, int *list) |
int | MMG5_srcbdy (MMG5_pMesh mesh, int start, int ia) |
void | MMG5_coquilFaceErrorMessage (MMG5_pMesh mesh, int k1, int k2) |
int | MMG3D_coquilFaceFirstLoop (MMG5_pMesh mesh, int start, int na, int nb, int8_t iface, int8_t ia, int *list, int *ilist, int *it1, int *it2, int *piv, int *adj, int8_t *hasadja, int *nbdy, int silent) |
void | MMG3D_coquilFaceSecondLoopInit (MMG5_pMesh mesh, int piv, int8_t *iface, int8_t *ia, int *list, int *ilist, int *it1, int *pradj, int *adj) |
int | MMG5_coquilface (MMG5_pMesh mesh, int start, int8_t iface, int ia, int *list, int *it1, int *it2, int silent) |
int16_t | MMG5_coquilTravel (MMG5_pMesh mesh, int na, int nb, int *adj, int *piv, int8_t *iface, int8_t *i) |
int16_t | MMG5_openCoquilTravel (MMG5_pMesh mesh, int na, int nb, int *adj, int *piv, int8_t *iface, int8_t *i) |
Variables | |
MMG5_Info | info |
Functions for ball of points computation.
|
inlinestatic |
int MMG3D_coquilFaceFirstLoop | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | na, | ||
int | nb, | ||
int8_t | iface, | ||
int8_t | ia, | ||
int * | list, | ||
int * | ilist, | ||
int * | it1, | ||
int * | it2, | ||
int * | piv, | ||
int * | adj, | ||
int8_t * | hasadja, | ||
int * | nbdy, | ||
int | silent | ||
) |
mesh | pointer toward 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 toward the list of tetra in the shell (to fill). |
ilist | pointer toward the number of tetra in the shell (to fill). |
it1 | pointer toward the index of the 1st boundary face sharing ia |
it2 | pointer toward the index of the 2d boundary face sharing ia (to fill). |
adj | pointer toward the adjacent to treat in the shell (to update) |
hasadja | pointer toward 0 if we don't have adja through iface, 1 otherwise (to fill) |
nbdy | pointer toward 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.
void MMG3D_coquilFaceSecondLoopInit | ( | MMG5_pMesh | mesh, |
int | piv, | ||
int8_t * | iface, | ||
int8_t * | ia, | ||
int * | list, | ||
int * | ilist, | ||
int * | it1, | ||
int * | pradj, | ||
int * | adj | ||
) |
mesh | pointer toward 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 toward the list of tetra in the shell (to fill). |
ilist | pointer toward the number of tetra in the shell (to fill). |
it1 | pointer toward the index of the 1st boundary face sharing ia |
pradj | pointer toward the first tetra of the shell (to fill). |
adj | pointer toward 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.
|
inlinestatic |
mesh | pointer toward 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).
int MMG3D_findEdge | ( | MMG5_pMesh | mesh, |
MMG5_pTetra | pt, | ||
int | k, | ||
int | na, | ||
int | nb, | ||
int | error, | ||
int8_t * | mmgWarn, | ||
int8_t * | ia | ||
) |
mesh | pointer toward the mesh structure. |
pt | pointer toward 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 toward the edge index (to fill). |
Find the local index of the edge ia in the tetra pt of index k;
|
inlinestatic |
mesh | pointer toward 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).
int MMG5_boulenm | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ip, | ||
int | iface, | ||
double | n[3], | ||
double | t[3] | ||
) |
mesh | pointer toward 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.
int MMG5_boulenmInt | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ip, | ||
double | t[3] | ||
) |
mesh | pointer toward 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.
int MMG5_boulernm | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash, | ||
int | start, | ||
int | ip, | ||
int * | ng, | ||
int * | nr | ||
) |
mesh | pointer toward the mesh structure. |
hash | pointer toward an allocated hash table. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
ng | pointer toward the number of ridges. |
nr | pointer toward the number of reference edges. |
Count the numer of ridges and reference edges incident to the vertex ip when ip is non-manifold.
int MMG5_boulesurfvolp | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ip, | ||
int | iface, | ||
int * | listv, | ||
int * | ilistv, | ||
int * | lists, | ||
int * | ilists, | ||
int | isnm | ||
) |
mesh | pointer toward 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 toward the computed volumic ball. |
ilistv | pointer toward the computed volumic ball size. |
lists | pointer toward the computed surfacic ball. |
ilists | pointer toward the computed surfacic ball size. |
isnm | is the looked point ip 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 tetra volumic ball. listv[k] = 4*number of tet + index of point surfacic ball. lists[k] = 4*number of tet + index of face.
int MMG5_boulesurfvolpNom | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ip, | ||
int | iface, | ||
int * | listv, | ||
int * | ilistv, | ||
int * | lists, | ||
int * | ilists, | ||
int * | refmin, | ||
int * | refplus, | ||
int | isnm | ||
) |
mesh | pointer toward 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 toward the computed volumic ball. |
ilistv | pointer toward the computed volumic ball size. |
lists | pointer toward the computed surfacic ball. |
ilists | pointer toward 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 looked point ip 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 tetra volumic ball. listv[k] = 4*number of tet + index of point surfacic ball. lists[k] = 4*number of tet + index of face.
int MMG5_bouletrid | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | iface, | ||
int | ip, | ||
int * | il1, | ||
int * | l1, | ||
int * | il2, | ||
int * | l2, | ||
int * | ip0, | ||
int * | ip1 | ||
) |
mesh | pointer toward 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 toward the first ball size. |
l1 | pointer toward the first computed ball (associated to n_1's side). |
il2 | pointer toward the second ball size. |
l2 | pointer toward 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.
int MMG5_boulevolp | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ip, | ||
int * | list | ||
) |
mesh | pointer toward the mesh structure. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
list | pointer toward 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 under the form
int MMG5_coquil | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ia, | ||
int * | list | ||
) |
mesh | pointer toward the mesh structure |
start | index of the starting tetra |
ia | index of the edge |
list | list of tetra sharing the edge ia |
Find all tets sharing edge ia of tetra start.
int MMG5_coquilface | ( | MMG5_pMesh | mesh, |
int | start, | ||
int8_t | iface, | ||
int | ia, | ||
int * | list, | ||
int * | it1, | ||
int * | it2, | ||
int | silent | ||
) |
mesh | pointer toward 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 toward the list of tetra in the shell (to fill). |
it1 | pointer toward the index of the first boundary face sharing ia (to fill). |
it2 | pointer toward 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.
void MMG5_coquilFaceErrorMessage | ( | MMG5_pMesh | mesh, |
int | k1, | ||
int | k2 | ||
) |
mesh | pointer toward 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.
int16_t MMG5_coquilTravel | ( | MMG5_pMesh | mesh, |
int | na, | ||
int | nb, | ||
int * | adj, | ||
int * | piv, | ||
int8_t * | iface, | ||
int8_t * | i | ||
) |
mesh | pointer toward 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 ![]() |
Travel around the edge
int MMG5_deltag | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ia, | ||
int16_t | tag | ||
) |
mesh | pointer toward 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.
int16_t MMG5_openCoquilTravel | ( | MMG5_pMesh | mesh, |
int | na, | ||
int | nb, | ||
int * | adj, | ||
int * | piv, | ||
int8_t * | iface, | ||
int8_t * | i | ||
) |
mesh | pointer toward 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 ![]() |
Travel around the edge
int MMG5_settag | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ia, | ||
int16_t | tag, | ||
int | edg | ||
) |
mesh | pointer toward 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.
int MMG5_srcbdy | ( | MMG5_pMesh | mesh, |
int | start, | ||
int | ia | ||
) |
mesh | pointer toward 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.
|
extern |