mmg2d
anisosiz.c File Reference

Fonctions for anisotropic size map computation. More...

#include "mmgcommon.h"
Include dependency graph for anisosiz.c:

Functions

static double _MMG5_surf (MMG5_pMesh mesh, double m[3][6], MMG5_pTria ptt)
 
double _MMG5_surftri_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
 
double _MMG5_surftri33_ani (MMG5_pMesh mesh, MMG5_pTria ptt, double ma[6], double mb[6], double mc[6])
 
void _MMG5_defUninitSize (MMG5_pMesh mesh, MMG5_pSol met, char ismet)
 
void _MMG5_fillDefmetregSys (int k, MMG5_pPoint p0, int i0, _MMG5_Bezier b, double r[3][3], double c[3], double *lispoi, double tAA[6], double tAb[3])
 
int _MMG5_solveDefmetregSys (MMG5_pMesh mesh, double r[3][3], double c[3], double tAA[6], double tAb[3], double *m, double isqhmin, double isqhmax, double hausd)
 
int _MMG5_solveDefmetrefSys (MMG5_pMesh mesh, MMG5_pPoint p0, int ipref[2], double r[3][3], double c[3], double tAA[6], double tAb[3], double *m, double isqhmin, double isqhmax, double hausd)
 
double _MMG5_ridSizeInTangentDir (MMG5_pMesh mesh, MMG5_pPoint p0, int idp, int *iprid, double isqhmin, double isqhmax)
 
double _MMG5_ridSizeInNormalDir (MMG5_pMesh mesh, int i0, double *bcu, _MMG5_Bezier *b, double isqhmin, double isqhmax)
 
int _MMG5_grad2metSurf (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int i)
 

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

Function Documentation

◆ _MMG5_defUninitSize()

void _MMG5_defUninitSize ( MMG5_pMesh  mesh,
MMG5_pSol  met,
char  ismet 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ismethas the user provided a metric?

Search for points with unintialized metric and define anisotropic size at this points.

Here is the call graph for this function:

◆ _MMG5_fillDefmetregSys()

void _MMG5_fillDefmetregSys ( int  k,
MMG5_pPoint  p0,
int  i0,
_MMG5_Bezier  b,
double  r[3][3],
double  c[3],
double *  lispoi,
double  tAA[6],
double  tAb[3] 
)
Parameters
kindex of the tetrahedra from which we come.
p0pointer toward the point on which we want to def the metric.
i0pointer toward the local index of the point in tria.
bcontrol polygon of triangle.
rrotation matrix.
cphysical coordinates of the curve edge mid-point.
lispoilist of incident vertices to p0
tAAmatrix to fill
tAbsecond member

Fill matrice tAA and second member tAb with $ A=( X_{P_i}^2 Y_{P_i}^2 X_{P_i}Y_{P_i}) $ and $ b= Z_{P_i}$ with P_i the physical points at edge [i0;i1] extremities and middle. Compute the physical coor c of the curve edge's mid-point for a regular or reference point.

◆ _MMG5_grad2metSurf()

int _MMG5_grad2metSurf ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTria  pt,
int  i 
)
Parameters
meshpointer toward the mesh.
metpointer toward the metric structure.
ptpointer toward a triangle.
iedge index in triangle pt.
Returns
-1 if no gradation is needed, else index of graded point.

Enforces gradation of metric in one extremity of edge i in tria pt with respect to the other, along the direction of the associated support curve first, then along the normal direction.

Warning
The gradation along the direction normal to the surface is made in an "isotropic way".
Here is the call graph for this function:

◆ _MMG5_ridSizeInNormalDir()

double _MMG5_ridSizeInNormalDir ( MMG5_pMesh  mesh,
int  i0,
double *  bcu,
_MMG5_Bezier b,
double  isqhmin,
double  isqhmax 
)
Parameters
meshpointer toward the mesh structure.
i0local index in the face of the point on which we want to compute the metric
bcupointer toward the barycentric coordinates of vector u in the looked face.
bbezier control polygon for the looked face.
isqhminminimum edge size.
isqhmaxmaximum edge size.
Returns
the computed ridge size in first or second normal direction (depending of i0).

Compute the specific size of a ridge in the direction of the normal of the looked face.

◆ _MMG5_ridSizeInTangentDir()

double _MMG5_ridSizeInTangentDir ( MMG5_pMesh  mesh,
MMG5_pPoint  p0,
int  idp,
int *  iprid,
double  isqhmin,
double  isqhmax 
)
Parameters
meshpointer toward the mesh structure.
p0pointer toward the point at which we define the metric.
idpglobal index of the point at which we define the metric.
ipridpointer toward the two extremities of the ridge.
isqhminminimum edge size.
isqhmaxmaximum edge size.
Returns
the computed ridge size in the tangent direction.

Compute the specific size of a ridge in the direction of the tangent of the ridge.

Here is the call graph for this function:

◆ _MMG5_solveDefmetrefSys()

int _MMG5_solveDefmetrefSys ( MMG5_pMesh  mesh,
MMG5_pPoint  p0,
int  ipref[2],
double  r[3][3],
double  c[3],
double  tAA[6],
double  tAb[3],
double *  m,
double  isqhmin,
double  isqhmax,
double  hausd 
)
Parameters
meshpointer toward the mesh structure.
p0pointer toward the point on which we want to define the metric.
ipreftable containing the indices of the edge extremities.
rpointer toward the rotation matrix.
cphysical coordinates of the curve edge mid-point.
tAAmatrix of the system to solve.
tAbsecond member.
mpointer toward the metric.
isqhmaxmaximum size for edge.
isqhminminimum size for edge.
hausdhausdorff value at point.
Returns
1 if success, 0 if fail.

Solve tAA * tmp_m = tAb and fill m with tmp_m (after rotation) for a ref point.

Here is the call graph for this function:

◆ _MMG5_solveDefmetregSys()

int _MMG5_solveDefmetregSys ( MMG5_pMesh  mesh,
double  r[3][3],
double  c[3],
double  tAA[6],
double  tAb[3],
double *  m,
double  isqhmin,
double  isqhmax,
double  hausd 
)
Parameters
meshpointer toward the mesh structure.
rpointer toward the rotation matrix.
cphysical coordinates of the curve edge mid-point.
tAAmatrix of the system to solve.
tAbsecond member.
mpointer toward the metric.
isqhmaxmaximum size for edge.
isqhminminimum size for edge.
hausdhausdorff value at point.
Returns
1 if success, 0 if fail.

Solve tAA * tmp_m = tAb and fill m with tmp_m (after rotation) for a regular point.

Here is the call graph for this function:

◆ _MMG5_surf()

static double _MMG5_surf ( MMG5_pMesh  mesh,
double  m[3][6],
MMG5_pTria  ptt 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
mpointer toward the metric at triangle vertices.
pttpointer toward the triangle structure.
Returns
The double of the triangle area.

Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric m.

Here is the caller graph for this function:

◆ _MMG5_surftri33_ani()

double _MMG5_surftri33_ani ( MMG5_pMesh  mesh,
MMG5_pTria  ptt,
double  ma[6],
double  mb[6],
double  mc[6] 
)
Parameters
meshpointer toward the mesh structure.
pttpointer toward the triangle structure.
mametric at triangle vertex.
mbmetric at triangle vertex.
mcmetric at triangle vertex.
Returns
The double of the triangle area.

Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric met (for classic storage of ridges metrics).

Here is the caller graph for this function:

◆ _MMG5_surftri_ani()

double _MMG5_surftri_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTria  ptt 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
pttpointer toward the triangle structure.
Returns
The double of the triangle area.

Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric met (for special storage of ridges metrics).

Here is the call graph for this function: