mmg3d
anisosiz_3d.c File Reference

Fonctions for anisotropic size map computation. More...

Include dependency graph for anisosiz_3d.c:

Functions

int _MMG3D_chk4ridVertices (MMG5_pMesh mesh, MMG5_pTetra pt)
 
int _MMG5_moymet (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt, double *m1)
 
static int _MMG5_defmetsin (MMG5_pMesh mesh, MMG5_pSol met, int kel, int iface, int ip)
 
static int _MMG5_defmetrid (MMG5_pMesh mesh, MMG5_pSol met, int kel, int iface, int ip)
 
static int _MMG5_defmetref (MMG5_pMesh mesh, MMG5_pSol met, int kel, int iface, int ip)
 
static int _MMG5_defmetreg (MMG5_pMesh mesh, MMG5_pSol met, int kel, int iface, int ip)
 
static int _MMG5_defmetvol (MMG5_pMesh mesh, MMG5_pSol met)
 
static int _MMG3D_intextmet (MMG5_pMesh mesh, MMG5_pSol met, int np, double me[6])
 
static int _MMG3D_nosurfsiz_ani (MMG5_pMesh mesh, MMG5_pSol met, int iel, int iploc, int iface, int ismet)
 
int _MMG3D_defsiz_ani (MMG5_pMesh mesh, MMG5_pSol met)
 
static int _MMG5_grad2metVol (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt, int ia)
 
int _MMG5_gradsiz_ani (MMG5_pMesh mesh, MMG5_pSol met)
 

Detailed Description

Fonctions for anisotropic size map computation.

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_chk4ridVertices()

int _MMG3D_chk4ridVertices ( MMG5_pMesh  mesh,
MMG5_pTetra  pt 
)
Here is the caller graph for this function:

◆ _MMG3D_defsiz_ani()

int _MMG3D_defsiz_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric stucture.
Returns
0 if fail, 1 otherwise.

Define size at points by intersecting the surfacic metric and the physical metric.

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

◆ _MMG3D_intextmet()

static int _MMG3D_intextmet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  np,
double  me[6] 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
npglobal index of vertex in which we intersect the metrics.
mephysical metric at point np.
Returns
0 if fail, 1 otherwise.

Intersect the surface metric held in np (supported in tangent plane of np) with 3*3 physical metric in me. For ridge points, this function fill the $ p_0->m[3]$ and $ p_0->m[4]$ fields that contains respectively the specific sizes in the $n_1$ and $n_2$ directions.

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

◆ _MMG3D_nosurfsiz_ani()

static int _MMG3D_nosurfsiz_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  iel,
int  iploc,
int  iface,
int  ismet 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ieltetra in which we work
iploclocal index of point where metric must be defined
ifaceface to which belong iploc
Returns
0 if fail, 1 otherwise.

Define metric at point iploc of tetra iel for iploc a surface point marked by option nosurf.

If a metric is provided, preserve it except on ridges points where a metric with hmax size and directions normal to the ridges is intersected with the user metric.

Without initial metric, an isotropic metric is computed from the mean of the lengths of the edges passing through the point (except on ridges points).

A metric is provided: metric truncature


No metric is provided: Define size at regular surface point for the -nosurf option (ie a manifold point): the size is computed as the mean of the length of edges passing through the point

First step: search for local parameters
Second step: Very rough eval of the metric at non-manifold point: take the non-manifold edge length

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

◆ _MMG5_defmetref()

static int _MMG5_defmetref ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  kel,
int  iface,
int  ip 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelindex of the triangle in which we work.
ifaceface of the tetra on which we work.
ipindex of the point on which we want to compute the metric (in tetra kel).
Returns
1 if success, 0 otherwise.

Define metric map at a REF vertex of the mesh, associated to the geometric approx of the surface.

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

◆ _MMG5_defmetreg()

static int _MMG5_defmetreg ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  kel,
int  iface,
int  ip 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelindex of the triangle in which we work.
ifaceworking face.
ipindex of the point on which we want to compute the metric in (tetra kel).
Returns
1 if success, 0 otherwise.

Define metric map at a REGULAR vertex of the mesh, associated to the geometric approx of the surface.

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

◆ _MMG5_defmetrid()

static int _MMG5_defmetrid ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  kel,
int  iface,
int  ip 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelindex of the tetra in which we work.
ifaceface of the tetra on which we work.
ipindex of the point on which we want to compute the metric (in tetra kel).
Returns
1 if success, 0 otherwise.

Compute metric tensor associated to a ridge point : convention is a bit weird here : p->m[0] is the specific size in direction t, p->m[1] is the specific size in direction $ u_1 = n_1^t$ p->m[2] is the specific size in direction $ u_2 = n_2^t$, and at each time, metric tensor has to be recomputed, depending on the side.

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

◆ _MMG5_defmetsin()

static int _MMG5_defmetsin ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  kel,
int  iface,
int  ip 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelindex of the tetra in which we work.
ifaceface of the tetra on which we work.
ipindex of the point on which we want to compute the metric (in tetra kel).
Returns
1 if success, 0 otherwise.

Define metric map at a SINGULARITY of the geometry, associated to the geometric approx of the surface. metric $=\alpha*Id$, $\alpha =$ size.

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

◆ _MMG5_defmetvol()

static int _MMG5_defmetvol ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
Returns
1 if success, 0 otherwise.

Define metric map at a non-boundary vertex of the mesh. Allocate the metric if needed. Truncate the metric at the hmin/hmax values.

  1. no metric is provided: Set isotropic hmax size at the vertex




    First step: search for local parameters



    Second step: set metric


  2. A metric is provided: truncate it by hmax/hmin

    First step: search for local parameters
    Second step: set metric
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _MMG5_grad2metVol()

static int _MMG5_grad2metVol ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTetra  pt,
int  ia 
)
inlinestatic
Parameters
meshpointer toward the mesh.
metpointer toward the metric structure.
ptpointer toward a tetra.
iaedge index in tetra pt.
Returns
-1 if no gradation is needed, else index of graded point.

Enforces gradation of metric in one extremity of edge ia in tetra pt with respect to the other.

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

◆ _MMG5_gradsiz_ani()

int _MMG5_gradsiz_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
Returns
1

Enforces mesh gradation by truncating metric field.

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

◆ _MMG5_moymet()

int _MMG5_moymet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTetra  pt,
double *  m1 
)
inline
Parameters
meshpointer toward the mesh structure.
metpointer toward the sol structure.
ptpointer toward a tetra.
m1computed metric.
Returns
the number of vertices used for the mean computation, 0 if fail.

Compute mean metric over the internal tetra pt. Do not take into account the metric values at ridges points (because we don't know how to build it).

Here is the caller graph for this function: