mmg3d
isosiz_3d.c File Reference

Fonctions for isotropic size map computation. More...

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

Macros

#define MAXLEN   1.0e9
 
#define A64TH   0.015625
 
#define A16TH   0.0625
 
#define A32TH   0.03125
 

Functions

double MMG5_lenedgCoor_iso (double *ca, double *cb, double *ma, double *mb)
 Compute edge length from edge's coordinates. More...
 
static double MMG5_defsizreg (MMG5_pMesh mesh, MMG5_pSol met, int nump, int *lists, int ilists, double hmin, double hmax, double hausd)
 
double MMG5_meansizreg_iso (MMG5_pMesh mesh, MMG5_pSol met, int nump, int *lists, int ilists, double hmin, double hmax)
 
static int MMG3D_sum_reqEdgeLengthsAtPoint (MMG5_pMesh mesh, MMG5_pSol met, MMG5_Hash *hash, MMG5_pTetra pt, char i)
 
int MMG3D_set_metricAtPointsOnReqEdges (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG3D_defsiz_iso (MMG5_pMesh mesh, MMG5_pSol met)
 
void MMG3D_mark_pointsOnReqEdge_fromTetra (MMG5_pMesh mesh)
 
int MMG3D_gradsiz_iso (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG3D_gradsizreq_iso (MMG5_pMesh mesh, MMG5_pSol met)
 

Variables

char ddb
 

Detailed Description

Fonctions for isotropic size map computation.

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

Macro Definition Documentation

◆ A16TH

#define A16TH   0.0625

◆ A32TH

#define A32TH   0.03125

◆ A64TH

#define A64TH   0.015625

◆ MAXLEN

#define MAXLEN   1.0e9

Function Documentation

◆ MMG3D_defsiz_iso()

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

Define isotropic size map at all boundary vertices of the mesh, associated with geometric approx, and prescribe hmax at the internal vertices Field h of Point is used, to store the prescribed size (not inverse, squared,...)

1) Size at internal points

Step 1: Set metric at points belonging to a required edge: compute the metric as the mean of the length of the required eges passing through the point

Step 2: size at non required internal points

First step: search for local parameters

Second step: set the metric

Set size at points that cannot be reached from the tetra

First step: search for local parameters

Second step: set the metric

Set size at points that cannot be reached from the tetra

Step 3: size at regular surface points

First step: search for local parameters

Second step: set the metric

3) Travel all boundary faces to update size prescription for points on ridges/edges

First step: search for local parameters

Second step: set metric

Here is the call graph for this function:

◆ MMG3D_gradsiz_iso()

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

Enforce mesh gradation by truncating size map.

Here is the call graph for this function:

◆ MMG3D_gradsizreq_iso()

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

Enforce mesh gradation by truncating size map.

Mark the edges belonging to a required entity

Update the sizes and mark the treated points

Here is the call graph for this function:

◆ MMG3D_mark_pointsOnReqEdge_fromTetra()

void MMG3D_mark_pointsOnReqEdge_fromTetra ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.

Set the s field of the points that belongs to a required edge to 1, set it to 0 otherwise.

◆ MMG3D_set_metricAtPointsOnReqEdges()

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

Compute the metric at points on trequired adges as the mean of the lengths of the required eges to which belongs the point. The processeed points are marked with flag 3.

Here is the call graph for this function:

◆ MMG3D_sum_reqEdgeLengthsAtPoint()

static int MMG3D_sum_reqEdgeLengthsAtPoint ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_Hash hash,
MMG5_pTetra  pt,
char  i 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
hashedge hashtable.
pttetra to process.
iindex of the edge of the tetra pt that we process.
Returns
1 if success, 0 if fail.

If the edge i of the tetra pt is seen for the first time, compute its euclidean length, add this length to the metric of the edge extremities and increment the count of times we have processed this extremities.

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

◆ MMG5_defsizreg()

static double MMG5_defsizreg ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  nump,
int *  lists,
int  ilists,
double  hmin,
double  hmax,
double  hausd 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
numpindex of point in which the size must be computed.
listspointer toward the surfacic ball of nump.
ilistssize of surfacic ball of nump.
hminminimal edge size.
hmaxmaximal edge size.
hausdhausdorff value.
Returns
the isotropic size at the point if success, FLT_MAX if fail.

Define isotropic size at regular point nump, whose surfacic ball is provided.

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

◆ MMG5_lenedgCoor_iso()

double MMG5_lenedgCoor_iso ( double *  ca,
double *  cb,
double *  ma,
double *  mb 
)
inline

Compute edge length from edge's coordinates.

Parameters
*capointer toward the coordinates of the first edge's extremity.
*cbpointer toward the coordinates of the second edge's extremity.
*mapointer toward the metric associated to the first edge's extremity.
*mbpointer toward the metric associated to the second edge's extremity.
Returns
edge length.

Compute length of edge $[ca,cb]$ (with ca and cb coordinates of edge extremities) according to the isotropic size prescription.

◆ MMG5_meansizreg_iso()

double MMG5_meansizreg_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  nump,
int *  lists,
int  ilists,
double  hmin,
double  hmax 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
numpindex of point in which the size must be computed.
listspointer toward the surfacic ball of nump.
ilistssize of surfacic ball of nump.
hminminimal edge size.
hmaxmaximal edge size.
Returns
the isotropic size at the point.

For -nosurf option : define isotropic size at regular point nump, whose surfacic ball is provided. The size is computed as the mean of the length of the surface edges passing through nump.

Variable Documentation

◆ ddb

char ddb