|
int | MMG5_chkcol_int (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, int8_t iface, int8_t iedg, int64_t *list, int ilist, int8_t typchk) |
|
static MMG5_int | MMG3D_unfold_shell (MMG5_pMesh mesh, MMG5_int start, MMG5_int end, MMG5_int na, MMG5_int nb, MMG5_int piv, MMG5_int *iel, int8_t *iopp) |
|
static int | MMG5_topchkcol_bdy (MMG5_pMesh mesh, MMG5_int k, int iface, int8_t iedg, MMG5_int *lists, int ilists) |
|
static int | MMG3D_get_shellEdgeTag_oneDir (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, uint16_t *tag, MMG5_int *ref, MMG5_int piv, MMG5_int adj, int8_t *filled) |
|
int | MMG3D_get_shellEdgeTag (MMG5_pMesh mesh, MMG5_int start, int8_t ia, uint16_t *tag, MMG5_int *ref) |
|
int | MMG5_chkcol_bdy (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, int8_t iface, int8_t iedg, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, MMG5_int refmin, MMG5_int refplus, int8_t typchk, int isnm, int8_t isnmint) |
|
static void | MMG3D_update_edgeTag (MMG5_pTetra pt, MMG5_pxTetra pxt, MMG5_int np, MMG5_int nq, uint8_t ip, MMG5_pTetra pt1, MMG5_pxTetra pxt1, uint8_t voyp) |
|
static MMG5_int | MMG3D_update_shellEdgeTag_oneDir (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, uint16_t tag, MMG5_int ref, MMG5_int piv, MMG5_int adj) |
|
static int | MMG3D_update_shellEdgeTag (MMG5_pMesh mesh, MMG5_int start, int8_t ia, uint16_t tag, MMG5_int ref) |
|
MMG5_int | MMG5_colver (MMG5_pMesh mesh, MMG5_pSol met, int64_t *list, int ilist, int8_t indq, int8_t typchk) |
|
Functions for vertices collapsing.
- Author
- Charles Dapogny (UPMC)
-
Cécile Dobrzynski (Bx INP/Inria/UBordeaux)
-
Pascal Frey (UPMC)
-
Algiane Froehly (Inria/UBordeaux)
- Version
- 5
- Copyright
- GNU Lesser General Public License.
- Todo:
- doxygen documentation.
Definition in file colver_3d.c.
int MMG5_chkcol_bdy |
( |
MMG5_pMesh |
mesh, |
|
|
MMG5_pSol |
met, |
|
|
MMG5_int |
k, |
|
|
int8_t |
iface, |
|
|
int8_t |
iedg, |
|
|
int64_t * |
listv, |
|
|
int |
ilistv, |
|
|
MMG5_int * |
lists, |
|
|
int |
ilists, |
|
|
MMG5_int |
refmin, |
|
|
MMG5_int |
refplus, |
|
|
int8_t |
typchk, |
|
|
int |
isnm, |
|
|
int8_t |
isnmint |
|
) |
| |
- Parameters
-
mesh | pointer to the mesh structure. |
met | pointer to 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 to the list of the tetra in the ball of p0. |
ilistv | number of tetra in the ball of p0. |
lists | pointer to 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; |
- Returns
- ilistv if success, 0 if the point cannot be collapsed, -1 if fail.
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)
Definition at line 527 of file colver_3d.c.
MMG5_int MMG5_colver |
( |
MMG5_pMesh |
mesh, |
|
|
MMG5_pSol |
met, |
|
|
int64_t * |
list, |
|
|
int |
ilist, |
|
|
int8_t |
indq, |
|
|
int8_t |
typchk |
|
) |
| |
- Parameters
-
mesh | pointer to the mesh |
met | pointer to the metric |
list | pointer to 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 |
- Returns
- np the index of the collpased point if success, 0 if we cannot collapse, -1 if we fail.
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.
Definition at line 1154 of file colver_3d.c.