mmg3d
mmg3d2.c File Reference

Create implicit surface in mesh. More...

#include "mmg3d.h"
Include dependency graph for mmg3d2.c:

Functions

static int _MMG5_invsl (double A[3][3], double b[3], double r[3])
 
static int _MMG5_ismaniball (MMG5_pMesh mesh, MMG5_pSol sol, int k, int indp)
 
static int _MMG3D_snpval_ls (MMG5_pMesh mesh, MMG5_pSol sol, double *tmp)
 
static int _MMG3D_cuttet_ls (MMG5_pMesh mesh, MMG5_pSol sol)
 
static int _MMG3D_setref_ls (MMG5_pMesh mesh, MMG5_pSol sol)
 
int _MMG5_chkmaniball (MMG5_pMesh mesh, int start, char ip)
 
int _MMG5_chkmani (MMG5_pMesh mesh)
 
int _MMG5_chkmani2 (MMG5_pMesh mesh, MMG5_pSol sol)
 
int _MMG5_chkmanicoll (MMG5_pMesh mesh, int k, int iface, int iedg, int ndepmin, int ndepplus, char isminp, char isplp)
 
int _MMG3D_mmg3d2 (MMG5_pMesh mesh, MMG5_pSol sol)
 

Variables

char ddb
 

Detailed Description

Create implicit surface in mesh.

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

Function Documentation

◆ _MMG3D_cuttet_ls()

static int _MMG3D_cuttet_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
static
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
Returns
1 if success, 0 otherwise.

Proceed to discretization of the implicit function carried by sol into mesh, once values of sol have been snapped/checked

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

◆ _MMG3D_mmg3d2()

int _MMG3D_mmg3d2 ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the solution structure
Returns
0 if fail, 1 otherwise.

Create implicit surface in mesh.

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

◆ _MMG3D_setref_ls()

static int _MMG3D_setref_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
static
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
Returns
1.

Set references to tets according to the sign of the level set function.

Here is the caller graph for this function:

◆ _MMG3D_snpval_ls()

static int _MMG3D_snpval_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
double *  tmp 
)
static
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set function.
tmpsaving of the level-set values before the snap.
Returns
1 if success, 0 if fail.

Snap values of the level set function very close to 0 to exactly 0, and prevent nonmanifold patterns from being generated.

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

◆ _MMG5_chkmani()

int _MMG5_chkmani ( MMG5_pMesh  mesh)

Check whether implicit surface enclosed in volume is orientable

First test : check whether a tetra has 4 boundary faces
Second test : Check whether configuration is manifold in each ball

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

◆ _MMG5_chkmani2()

int _MMG5_chkmani2 ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure
solpointer toward the metric
Returns
1 if success, 0 otherwise.

Check whether implicit surface enclosed in volume is orientable (perform an additionnal test w.r.t. _MMG5_chkmani)

First test : assure no tetra has its 4 vertices on implicit boundary
Second test : check whether configuration is manifold in each ball

Here is the call graph for this function:

◆ _MMG5_chkmaniball()

int _MMG5_chkmaniball ( MMG5_pMesh  mesh,
int  start,
char  ip 
)
Parameters
meshpointer toward the mesh
startindex of the starting tetra
ippoint index
Returns
1 if success, 0 if fail

Check whether implicit surface is orientable in ball of point ip in tet iel ; Beware : may return 0 when implicit boundary is tangent to outer boundary

Here is the caller graph for this function:

◆ _MMG5_chkmanicoll()

int _MMG5_chkmanicoll ( MMG5_pMesh  mesh,
int  k,
int  iface,
int  iedg,
int  ndepmin,
int  ndepplus,
char  isminp,
char  isplp 
)
Parameters
meshpointer toward the mesh structure.
kindex of element in which we collapse.
ifaceface through wich we perform the collapse
iedgedge to collapse
ndepminindex of an elt with ref MG_MINUS and outside the shell of edge.
ndepplusndex of an elt with ref MG_PLUS and outside the shell of edge.
isminp1 if we have found a tetra with ref MG_MINUS
isplp1 if we have found a tetra with ref MG_PLUS
Returns
0 if we create a non manifold situation, 1 otherwise

Check whether collapse of point np to nq does not create a non manifold situation at nq ndepmin, ndepplus = tetra of ref minus, plus in ball of np, not in shell of (np,nq).

First step : pile up tetras of future ball of nq, crossing through the shell of (np,nq), as long as they have same ref as ndepmin list[l] <= 0 if element of ball of np, >= 0, if element of ball of nq
Second step : same process, starting with a tetra of different reference, in the ball of np

Here is the caller graph for this function:

◆ _MMG5_invsl()

static int _MMG5_invsl ( double  A[3][3],
double  b[3],
double  r[3] 
)
inlinestatic
Remarks
Not used.

solve 3*3 non symmetric system Ar = b

◆ _MMG5_ismaniball()

static int _MMG5_ismaniball ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  indp 
)
static
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
kindex of the starting tetra.
indplocal index (inside the tria k) of the vertex that we check.
Returns
1 if success, 0 if fail

Check whether snapping the value of vertex indp to 0 exactly leads to a non manifold situation.

Warning
: we assume that the triangle start has vertex istart with value 0 and the other two with changing values.
Here is the caller graph for this function:

Variable Documentation

◆ ddb

char ddb