mmg3d
mmg3d1.c File Reference

Perform volume and surface mesh adaptation with pattern splitting. More...

Include dependency graph for mmg3d1.c:

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_pOctree octree, int typchk)
 
int _MMG5_swptet (MMG5_pMesh mesh, MMG5_pSol met, double crit, double declic, _MMG3D_pOctree octree, int typchk)
 
int _MMG5_movtet (MMG5_pMesh mesh, MMG5_pSol met, _MMG3D_pOctree octree, double clickSurf, double clickVol, int moveVol, int improveSurf, int improveVolSurf, int improveVol, int maxit)
 
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])
 
static int _MMG5_anatets (MMG5_pMesh mesh, MMG5_pSol met, char typchk)
 
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
 

Detailed Description

Perform volume and surface mesh adaptation with pattern splitting.

Author
Charles Dapogny (UPMC)
Cécile Dobrzynski (Bx INP/Inria/UBordeaux)
Pascal Frey (UPMC)
Algiane Froehly (Inria/UBordeaux)
Version
5

Perform volume and surface mesh adaptation with pattern splitting (PATTERN preprocessor flag set to ON).

Function Documentation

◆ _MMG3D_delPatternPts()

static int _MMG3D_delPatternPts ( MMG5_pMesh  mesh,
_MMG5_Hash  hash 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
hashpointer toward the hash table of edges.
Returns
0 if failed, 1 if success

Delete the points inserted by pattern if the pattern step fail.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG3D_dichoto()

int _MMG3D_dichoto ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
int *  vx 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ktetrahedron index.
vxpointer toward table of edges to split.
Returns
1 if success, 0 if fail.

Find acceptable position for splitting.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG3D_dichoto1b()

int _MMG3D_dichoto1b ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int *  list,
int  ret,
int  ip 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
listpointer toward the shell of edge.
retdouble of the number of tetrahedra in the shell.
ipnew point index.
Returns
1 if success, 0 if fail

Find acceptable position for _MMG5_split1b, passing the shell of considered edge, starting from o point.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG3D_storeGeom()

static int _MMG3D_storeGeom ( MMG5_pPoint  ppt,
MMG5_pxPoint  pxp,
double  no[3] 
)
inlinestatic
Parameters
pptpointer toward the point that we update
pxppoint toward the oot xpoint
nonormal at ppt
Returns
0 if failed, 1 if success.

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.

Here is the caller graph for this function:

◆ _MMG5_anatet()

int _MMG5_anatet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
char  typchk,
int  patternMode 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
typchktype of checking for edges length.
patternModeflag to say if we perform vertex insertion by patterns or by delaunay kernel.
Returns
0 if fail, number of new points otherwise.

Analyze tetrahedra and split if needed.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_anatet4()

static int _MMG5_anatet4 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int *  nf,
char  typchk 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
nfnumber of swap performed.
typchktype of checking permformed.
Returns
-1 if failed, number of new points otherwise.

Split tetra into 4 when more than 1 boundary faceor with 4 boundary vertices.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_anatet4rid()

static int _MMG5_anatet4rid ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int *  nf,
char  typchk 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
nfnumber of swap performed.
typchktype of checking permformed.
Returns
-1 if failed, number of new points otherwise.

Split tetra into 4 when more than 1 boundary faceor with 4 boundary vertices.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_anatets()

static int _MMG5_anatets ( MMG5_pMesh  mesh,
MMG5_pSol  met,
char  typchk 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
typchktype of checking permformed for edge length (hmax or _MMG3D_LLONG criterion).
Returns
-1 if failed.
number of new points.

Analyze tetra and split on geometric criterion.

  1. analysis of boundary elements


  2. check if split by adjacent; besides, a triangle may have been splitted and not its adjacent (thus, the associated n2 may not exist) : update this normal if need be

  3. Simulate splitting and delete points leading to invalid configurations
  4. splitting
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_anatetv()

static int _MMG5_anatetv ( MMG5_pMesh  mesh,
MMG5_pSol  met,
char  typchk 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
typchktype of checking permformed for edge length (hmax or _MMG3D_LLONG criterion).
Returns
-1 if failed.
number of new points.

Analyze volume tetra and split if needed.

  1. analysis

  2. Set flags and split internal edges
  3. check and split
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_chkedg()

char _MMG5_chkedg ( MMG5_pMesh  mesh,
MMG5_Tria pt,
char  ori,
double  hmax,
double  hausd,
int  locPar 
)
Parameters
meshpointer toward the mesh structure.
ptpointer toward the triangle.
oriorientation of the triangle (1 for direct orientation, 0 otherwise).
hmaxmaximal edge length.
hausdmaximal hausdorff distance.
locPar1 if hmax and hausd are locals parameters.
Returns
0 if error.
edges of the triangle pt that need to be split.

Find edges of (virtual) triangle pt that need to be split with respect to the Hausdorff criterion.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_coltet()

static int _MMG5_coltet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
char  typchk 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if failed, number of collapsed points otherwise.

Attempt to collapse small edges.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_movtet()

int _MMG5_movtet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
_MMG3D_pOctree  octree,
double  clickSurf,
double  clickVol,
int  moveVol,
int  improveSurf,
int  improveVolSurf,
int  improveVol,
int  maxit 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
octreepointer toward the octree structure.
clickSurftriangle quality threshold under which we want to move
clickVoltetra quality threshold under which we want to move
moveVolinternal move
improveSurfforbid surface degradation during the move
improveVolSurfforbid volume degradation during the surfacic move
improveVolforbid volume degradation during the move
maxitmaximum number of iteration.
Returns
-1 if failed, number of moved points otherwise.

Analyze tetrahedra and move points so as to make mesh more uniform.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_swpmsh()

int _MMG5_swpmsh ( MMG5_pMesh  mesh,
MMG5_pSol  met,
_MMG3D_pOctree  octree,
int  typchk 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
octreepointer toward the octree structure (only for delaunay).
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if failed and swap number otherwise.

Search for boundary edges that could be swapped for geometric approximation.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_swptet()

int _MMG5_swptet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
double  crit,
double  declic,
_MMG3D_pOctree  octree,
int  typchk 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
critcoefficient of quality improvment.
octreepointer toward the octree structure in delaunay mode and toward the NULL pointer otherwise
typchktype of checking permformed for edge length (hmin or LSHORT criterion).

Internal edge flipping.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_tet2tri()

void _MMG5_tet2tri ( MMG5_pMesh  mesh,
int  k,
char  ie,
MMG5_Tria ptt 
)
Parameters
meshpointer toward the mesh structure.
ktetrahedron index.
ieface index of tetrahedron.
pttpointer toward the output triangle.

Set triangle corresponding to face ie of tetra k.

Here is the caller graph for this function:

Variable Documentation

◆ ddb

char ddb