|
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) |
| 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) |
| int | MMG5_settag (MMG5_pMesh mesh, int start, int ia, int16_t tag, int edg) |
| 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.
| 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, 0 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.

| 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;


| 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] | ||
| ) |
Travel the ball of the internal non manifold point ip in tetra start and calculate the tangent vector to the underlying curve. Return 1 when the procedure has completed successfully, 0 when more than two NOM points are attached to ip.

| 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
, kel = number of the tetra, jel = local index of p within kel.

| 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 |
if shell is closed,
otherwise.Find all tets sharing edge ia of tetra start, and stores boundary faces when met.
and
, iel = index of tetra, iface = index of face in tetra.


| 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 in tet adj. |
Travel around the edge
from tetra adj and through the face piv.


| 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 in tet adj. |
Travel around the edge
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.


| 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 |
| edge | 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.


| MMG5_Info info |