mmg3d
|
Functions for vertices collapsing. More...
#include "inlined_functions_3d.h"
Functions | |
int | MMG5_chkcol_int (MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t iface, int8_t iedg, int *list, int ilist, int8_t typchk) |
static int | MMG3D_unfold_shell (MMG5_pMesh mesh, int start, int end, int na, int nb, int piv, int *iel, int8_t *iopp) |
static int | MMG5_topchkcol_bdy (MMG5_pMesh mesh, int k, int iface, int8_t iedg, int *lists, int ilists) |
int | MMG5_chkcol_bdy (MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t iface, int8_t iedg, int *listv, int ilistv, int *lists, int ilists, int refmin, int refplus, int8_t typchk, int isnm, int8_t isnmint) |
static void | MMG3D_update_edgeTag (MMG5_pTetra pt, MMG5_pxTetra pxt, int np, int nq, uint8_t ip, MMG5_pTetra pt1, MMG5_pxTetra pxt1, uint8_t voyp) |
static int | MMG3D_update_shellEdgeTag_oneDir (MMG5_pMesh mesh, int start, int na, int nb, int16_t tag, int ref, int piv, int adj) |
static int | MMG3D_update_shellEdgeTag (MMG5_pMesh mesh, int start, int8_t ia, int16_t tag, int ref) |
static int | MMG3D_get_shellEdgeTag_oneDir (MMG5_pMesh mesh, int start, int na, int nb, int16_t *tag, int *ref, int piv, int adj, int8_t *filled) |
static int | MMG3D_get_shellEdgeTag (MMG5_pMesh mesh, int start, int8_t ia, int16_t *tag, int *ref) |
int | MMG5_colver (MMG5_pMesh mesh, MMG5_pSol met, int *list, int ilist, int8_t indq, int8_t typchk) |
Variables | |
int8_t | ddb |
Functions for vertices collapsing.
|
inlinestatic |
mesh | pointer toward the mesh |
start | tetra from which we start to travel |
ia | local index of edge that must be updated |
tag | new edge tag |
ref | new edge ref |
Get tag and ref of the edge \ia of tetra start by traveling its shell. Stop when meeting the first xtetra (it is sufficient if tags and refs are consistent through the edge shell);
|
inlinestatic |
mesh | pointer toward the mesh |
start | tetra from which we start to travel |
na | edge vertex |
nb | edge vertex |
tag | new edge tag |
ref | new edge ref |
piv | global index of the pivot to set the sense of travel |
adj | index of adjacent tetra for the travel |
filled | 1 if an xtetra has been found (so tag and ref are filled) |
Get tag and ref of the edge na nb from tetra start by traveling its shell in one direction (given by the pivot piv). Stop when meeting the first xtetra with a non 0 tag (it is sufficient if tags and refs are consistent through the edge shell except for edges with null tags);
|
inlinestatic |
mesh | pointer toward the mesh |
start | tetra from which we start to travel |
end | tetra at which we stop the travel |
na | edge vertex |
nb | edge vertex |
piv | global index of the pivot to set the sense of travel |
iel | pointer toward the last element of the shell |
iopp | pointer toward the ending boundary face of the shell |
Unfold the shell of the edge na nb from tetra start in the direction given by the pivot piv).
|
inlinestatic |
pt | tetra of the shell of the edge to collapse |
pxt | xtetra associated to pt |
np | global index of point to collapse |
nq | global index of point on which we collapse |
ip | local index of np in pt |
pt1 | tetra neighbour to pt through nq |
pxt1 | xtetra associated to pt1 |
voyp | point facing tetra pt in pt1 |
Update tag and ref of the edges of pxt1 that belongs to the face sharing pt1 and pt (face ip in pt).
|
inlinestatic |
mesh | pointer toward the mesh |
start | tetra from which we start to travel |
ia | local index of edge that must be updated |
tag | new edge tag |
ref | new edge ref |
Update tag and ref of the edge \ia of tetra start by traveling its shell.
|
inlinestatic |
mesh | pointer toward the mesh |
start | tetra from which we start to travel |
na | edge vertex |
nb | edge vertex |
tag | new edge tag |
ref | new edge ref |
piv | global index of the pivot to set the sense of travel |
adj | index of adjacent tetra for the travel |
Update 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_chkcol_bdy | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int8_t | iface, | ||
int8_t | iedg, | ||
int * | listv, | ||
int | ilistv, | ||
int * | lists, | ||
int | ilists, | ||
int | refmin, | ||
int | refplus, | ||
int8_t | typchk, | ||
int | isnm, | ||
int8_t | isnmint | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element in which we collapse. |
iface | face through wich we perform the collapse |
iedg | edge to collapse (in local face num) |
listv | pointer toward the list of the tetra in the ball of p0. |
ilistv | number of tetra in the ball of p0. |
lists | pointer toward the surfacic ball of p0. |
ilists | number of tetra in the surfacic ball of p0. |
refmin | reference of one of the two subdomains in presence |
refplus | reference of the other subdomain in presence |
typchk | typchk type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
isnm | 1 if edge is non-manifold |
isnmint | 1 if ip is an internal non manifold point; |
Check whether collapse ip -> iq could be performed, ip boundary point; 'mechanical' tests (positive jacobian) are not performed here ; iface = boundary face on which lie edge iedg - in local face num. (pq, or ia in local tet notation). If isnm is 1, the collapse occurs along an external MG_NOM edge. If isnmint is 1, ip is an internal non manifold point and dont have normals. In this last case, lists, ilists refmin, refplus and isnm variables aren't used (we neither have a surfacic ball nor "positive" and "negative" volumes)
int MMG5_chkcol_int | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int8_t | iface, | ||
int8_t | iedg, | ||
int * | list, | ||
int | ilist, | ||
int8_t | typchk | ||
) |
Check whether collapse ip -> iq could be performed, ip internal ; 'mechanical' tests (positive jacobian) are not performed here
int MMG5_colver | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int * | list, | ||
int | ilist, | ||
int8_t | indq, | ||
int8_t | typchk | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
list | pointer toward the ball of the point |
ilist | number of elements in the ball of the point |
indq | local index of the point on which we collapse |
typchk | type of check performed depending on the remeshing step |
Collapse vertex p = list[0]%4 of tetra list[0]/4 over vertex indq of tetra list[0]/4. Only physical tests (positive jacobian) are done (i.e. approximation of the surface, etc... must be performed outside).
Merge tags and references of edges that will merge due to the collapse (the shell of each edge is travelled so each xtetra of the shell is updated). Note that it can't be done in the previous loop because the mesh would be corrupted if we stop the collapse. It can't neither be done in the next loop because we start to delete the elements of the shell.
|
static |
mesh | pointer toward the mesh structure. |
k | index of the starting tetra. |
iface | local index of the starting face in the tetra k. |
ideg | local index of the starting edge in the face iface. |
lists | surfacic ball of p. |
ilists | number of elements in the surfacic ball of p. |
Topological check on the surface ball of np and nq in collapsing np->nq ; iface = boundary face on which lie edge iedg - in local face num. (pq, or ia in local tet notation). See the Mmg Google Drive/Documentation/mmg3d/topchkcol_bdy3D.pdf for a picture of the configuration.
|
extern |