mmg3d
|
Perform volume and surface mesh adaptation with pattern splitting. More...
#include "inlined_functions_3d.h"
Functions | |
void | MMG5_tet2tri (MMG5_pMesh mesh, int k, char ie, MMG5_Tria *ptt) |
int | MMG3D_dichoto (MMG5_pMesh mesh, MMG5_pSol met, int k, int *vx) |
int | MMG3D_dichoto1b (MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int ip) |
char | MMG5_chkedg (MMG5_pMesh mesh, MMG5_Tria *pt, char ori, double hmax, double hausd, int locPar) |
int | MMG5_swpmsh (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int typchk) |
int | MMG5_swptet (MMG5_pMesh mesh, MMG5_pSol met, double crit, double declic, MMG3D_pPROctree PROctree, int typchk, int testmark) |
int | MMG5_movtet (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, double clickSurf, double clickVol, int moveVol, int improveSurf, int improveVolSurf, int improveVol, int maxit, int testmark) |
static int | MMG5_coltet (MMG5_pMesh mesh, MMG5_pSol met, char typchk) |
static int | MMG3D_delPatternPts (MMG5_pMesh mesh, MMG5_Hash hash) |
static int | MMG5_anatetv (MMG5_pMesh mesh, MMG5_pSol met, char typchk) |
static int | MMG3D_storeGeom (MMG5_pPoint ppt, MMG5_pxPoint pxp, double no[3]) |
int | MMG3D_splsurfedge (MMG5_pMesh mesh, MMG5_pSol met, int k, MMG5_pTetra pt, MMG5_pxTetra pxt, char imax, char typchk, char chkRidTet, int *warn) |
static int | MMG3D_chkbdyface (MMG5_pMesh mesh, MMG5_pSol met, int k, MMG5_pTetra pt, MMG5_pxTetra pxt, char i, MMG5_pTria ptt, char typchk) |
static int | MMG3D_anatets_ani (MMG5_pMesh mesh, MMG5_pSol met, char typchk) |
static int | MMG3D_anatets_iso (MMG5_pMesh mesh, MMG5_pSol met, char typchk) |
static int | MMG3D_anatet4_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, char metRidTyp, int *ifac, int *conf0, int *adj, int *conf1) |
static int | MMG5_anatet4 (MMG5_pMesh mesh, MMG5_pSol met, int *nf, char typchk) |
static int | MMG5_anatet4rid (MMG5_pMesh mesh, MMG5_pSol met, int *nf, char typchk) |
int | MMG5_anatet (MMG5_pMesh mesh, MMG5_pSol met, char typchk, int patternMode) |
Variables | |
char | ddb |
static int(* | MMG3D_anatets )(MMG5_pMesh mesh, MMG5_pSol met, char typchk) |
Perform volume and surface mesh adaptation with pattern splitting.
Perform volume and surface mesh adaptation with pattern splitting (PATTERN preprocessor flag set to ON).
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of the tetrahedron with multiple boundary faces (to be swapped) |
metRidTyp | metric storage (classic or special) |
ifac | face of the tetra k that give the best results for the swap23 |
conf0 | detected configuration for the swap23 of the tetra k |
adj | neighbour of the tetra k through the face ifac (4*k1+ifac1) |
conf1 | detected configuration for the swap23 of the tetra adj/4 |
Simulation of the swap23 and of the split at its barycenter of a tetra when more than 1 boundary face. The quality of the worst created element is computed for both operators and we return the identifier of the operator that give the best results. If the swap23 is choosen, we fill the needed info to perform it (index of the face and tetra that are choosen to swap) and configuration of both tetra.
Step 1: test the split4bar
Step 2: test the swap23
Neighbouring element with which we will try to swap
Do not choose a config that creates a tetra with more than 2 bdries
Test volume of the 3 created tets
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
typchk | type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
Split surface edges on geometric criterion.
Split only the longest edge
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
typchk | type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
Analyze tetra and split on geometric criterion.
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of tetra thath we check |
pt | pointer toward the tetra that we check |
pxt | pointer toward the xtetra that we check |
i | index of the face in k that we check |
ptt | pointer toward the virtual triangle build from the face \i of k. |
typchk | type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
Mark edges to split on geometric criterion (mark stored in pt->flag)
|
inlinestatic |
mesh | pointer toward the mesh structure. |
hash | pointer toward the hash table of edges. |
Delete the points inserted by pattern if the pattern step fail.
int MMG3D_dichoto | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int * | vx | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | tetrahedron index. |
vx | pointer toward table of edges to split. |
Find acceptable position for splitting.
int MMG3D_dichoto1b | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int * | list, | ||
int | ret, | ||
int | ip | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
list | pointer toward the shell of edge. |
ret | double of the number of tetrahedra in the shell. |
ip | new point index. |
Find acceptable position for MMG5_split1b, passing the shell of considered edge, starting from o point.
int MMG3D_splsurfedge | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
MMG5_pTetra | pt, | ||
MMG5_pxTetra | pxt, | ||
char | imax, | ||
char | typchk, | ||
char | chkRidTet, | ||
int * | warn | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of the tetra to split. |
pt | tetra to split |
pxt | associated xtetra |
imax | index of the edge to split to split |
typchk | type of check |
chkRidTet | check for ridge metric |
*warn | warn is set to 1 if we don't have enough memory to complete mesh. |
Split a surface edge using split1b
|
inlinestatic |
ppt | pointer toward the point that we update |
pxp | point toward the oot xpoint |
no | normal at ppt |
Starting from a point for which the normal pxp->n1 is already stored, store no in pxp->n2, compute the tangent with respect to this two normals and store it in ppt->n.
int MMG5_anatet | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
char | typchk, | ||
int | patternMode | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
typchk | type of checking for edges length. |
patternMode | flag to say if we perform vertex insertion by patterns or by delaunay kernel. |
Analyze tetrahedra and split if needed.
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
nf | number of swap performed. |
typchk | type of checking permformed. |
Split tetra into 4 when more than 1 boundary face or if 4 boundary vertices.
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
nf | number of swap performed. |
typchk | type of checking permformed. |
Split tetra into 4 when more than 1 boundary face or if 4 boundary vertices.
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
typchk | type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
Analyze volume tetra and split if needed.
char MMG5_chkedg | ( | MMG5_pMesh | mesh, |
MMG5_Tria * | pt, | ||
char | ori, | ||
double | hmax, | ||
double | hausd, | ||
int | locPar | ||
) |
mesh | pointer toward the mesh structure. |
pt | pointer toward the triangle. |
ori | orientation of the triangle (1 for direct orientation, 0 otherwise). |
hmax | maximal edge length. |
hausd | maximal hausdorff distance. |
locPar | 1 if hmax and hausd are locals parameters. |
Find edges of (virtual) triangle pt that need to be split with respect to the Hausdorff criterion.
|
static |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
Attempt to collapse small edges.
int MMG5_movtet | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
double | clickSurf, | ||
double | clickVol, | ||
int | moveVol, | ||
int | improveSurf, | ||
int | improveVolSurf, | ||
int | improveVol, | ||
int | maxit, | ||
int | testmark | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
clickSurf | triangle quality threshold under which we want to move |
clickVol | tetra quality threshold under which we want to move |
moveVol | internal move |
improveSurf | forbid surface degradation during the move |
improveVolSurf | forbid volume degradation during the surfacic move |
improveVol | forbid volume degradation during the move |
maxit | maximum number of iteration |
testmark | all the tets with a mark less than testmark will not be treated. |
Analyze tetrahedra and move points so as to make mesh more uniform.
int MMG5_swpmsh | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int | typchk | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure (only for delaunay). |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
Search for boundary edges that could be swapped for geometric approximation.
int MMG5_swptet | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
double | crit, | ||
double | declic, | ||
MMG3D_pPROctree | PROctree, | ||
int | typchk, | ||
int | testmark | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
crit | coefficient of quality improvment. |
PROctree | pointer toward the PROctree structure in delaunay mode and toward the NULL pointer otherwise |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion) |
testmark | all the tets with a mark less than testmark will not be treated. |
Internal edge flipping.
void MMG5_tet2tri | ( | MMG5_pMesh | mesh, |
int | k, | ||
char | ie, | ||
MMG5_Tria * | ptt | ||
) |
mesh | pointer toward the mesh structure. |
k | tetrahedron index. |
ie | face index of tetrahedron. |
ptt | pointer toward the output triangle. |
Set triangle corresponding to face ie of tetra k.
char ddb |
|
static |