|
mmg2d
|
Fonctions for anisotropic size map computation. More...
#include "mmgcommon.h"
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, int8_t 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 np1, int np2) |
| int | MMG5_simred (MMG5_pMesh mesh, double *m, double *n, double dm[2], double dn[2], double vp[2][2]) |
| void | MMG5_gradEigenvreq (double *dm, double *dn, double difsiz, int8_t dir, int8_t *ier) |
| int | MMG5_updatemetreq_ani (double *n, double dn[2], double vp[2][2]) |
| int | MMG5_grad2metSurfreq (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int npmaster, int npslave) |
| int | MMG5_compute_meanMetricAtMarkedPoints_ani (MMG5_pMesh mesh, MMG5_pSol met) |
| int | MMG5_gradsiz_ani (MMG5_pMesh mesh, MMG5_pSol met, int *it) |
| int | MMG5_gradsizreq_ani (MMG5_pMesh mesh, MMG5_pSol met) |
Fonctions for anisotropic size map computation.
| int MMG5_compute_meanMetricAtMarkedPoints_ani | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met | ||
| ) |
| mesh | pointer toward the mesh structure. |
| met | pointer toward the metric structure. |
Compute the mean metric at mesh points with a non-nul s field. At the beginning, for a given point ip,
contains the sum of n metrics and the s field of ip contains the number of metrics summed in the point. Set the flag of the processed points to 3.

| void MMG5_defUninitSize | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met, | ||
| int8_t | ismet | ||
| ) |
| mesh | pointer toward the mesh structure. |
| met | pointer toward the metric structure. |
| ismet | 1 if user provided metric. |
Search for points with unintialized metric and define anisotropic size at this points.

| 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] | ||
| ) |
| k | index of the tetrahedra from which we come. |
| p0 | pointer toward the point on which we want to def the metric. |
| i0 | pointer toward the local index of the point in tria. |
| b | control polygon of triangle. |
| r | rotation matrix. |
| c | physical coordinates of the curve edge mid-point. |
| lispoi | list of incident vertices to p0 |
| tAA | matrix to fill |
| tAb | second member |
Fill matrice \sum tAA and second member \sum tAb with
and
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.
| int MMG5_grad2metSurf | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met, | ||
| MMG5_pTria | pt, | ||
| int | np1, | ||
| int | np2 | ||
| ) |
| mesh | pointer toward the mesh. |
| met | pointer toward the metric structure. |
| pt | pointer toward a triangle. |
| np1 | global index of the first extremity of the edge. |
| np2 | global index of the second extremity of the edge. |
Enforces gradation of metric in one extremity of edge $f[ np1; np2]$f in tria pt with respect to the other, along the direction of the associated support curve first, then along the normal direction.

| int MMG5_grad2metSurfreq | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met, | ||
| MMG5_pTria | pt, | ||
| int | npmaster, | ||
| int | npslave | ||
| ) |
| mesh | pointer toward the mesh. |
| met | pointer toward the metric structure. |
| pt | pointer toward the processed triangle. |
| npmaster | edge extremity that cannot be modified |
| npslave | edge extremity to modify to respect the gradation. |
Enforces gradation of metric of the extremity ±a npslave of edge $f[ npmaster; npslave]$f in tria pt with respect to the other, along the direction of the associated support curve first, then along the normal direction.

| void MMG5_gradEigenvreq | ( | double * | dm, |
| double * | dn, | ||
| double | difsiz, | ||
| int8_t | dir, | ||
| int8_t * | ier | ||
| ) |
| dm | eigenvalues of the first matrix (not modified) |
| dn | eigenvalues of the second matrix (modified) |
| difsiz | maximal size gap authorized by the gradation. |
| dir | direction in which the sizes are graded. |
| ier | 2 if dn has been updated, 0 otherwise. |
Gradation of size dn = 1/sqrt(eigenv of the tensor) for required points in the idir direction.

| int MMG5_gradsiz_ani | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met, | ||
| int * | it | ||
| ) |
| mesh | pointer toward the mesh structure. |
| met | pointer toward the metric structure. |
| it | number of performed iteration (to fill) |
Standard gradation procedure.
Mark the edges belonging to a required entity

| int MMG5_gradsizreq_ani | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met | ||
| ) |
| mesh | pointer toward the mesh structure. |
| met | pointer toward the metric structure. |
Enforces mesh gradation (on required entities) by truncating metric field.
Mark the edges belonging to a required entity (already done if the classic gradation is enabled)


| double MMG5_ridSizeInNormalDir | ( | MMG5_pMesh | mesh, |
| int | i0, | ||
| double * | bcu, | ||
| MMG5_Bezier * | b, | ||
| double | isqhmin, | ||
| double | isqhmax | ||
| ) |
| mesh | pointer toward the mesh structure. |
| i0 | local index in the face of the point on which we want to compute the metric |
| bcu | pointer toward the barycentric coordinates of vector u in the looked face. |
| b | bezier control polygon for the looked face. |
| isqhmin | minimum edge size. |
| isqhmax | maximum edge size. |
Compute the specific size of a ridge in the direction of the normal of the looked face.
| double MMG5_ridSizeInTangentDir | ( | MMG5_pMesh | mesh, |
| MMG5_pPoint | p0, | ||
| int | idp, | ||
| int * | iprid, | ||
| double | isqhmin, | ||
| double | isqhmax | ||
| ) |
| mesh | pointer toward the mesh structure. |
| p0 | pointer toward the point at which we define the metric. |
| idp | global index of the point at which we define the metric. |
| iprid | pointer toward the two extremities of the ridge. |
| isqhmin | minimum edge size. |
| isqhmax | maximum edge size. |
Compute the specific size of a ridge in the direction of the tangent of the ridge.

| int MMG5_simred | ( | MMG5_pMesh | mesh, |
| double * | m, | ||
| double * | n, | ||
| double | dm[2], | ||
| double | dn[2], | ||
| double | vp[2][2] | ||
| ) |
| mesh | pointer toward the mesh |
| m | first matrix |
| n | second matrix |
| dm | eigenvalues of m in the coreduction basis (to fill) |
| dn | eigenvalues of n in the coreduction basis (to fill) |
| vp | coreduction basis (to fill) |
Perform simultaneous reduction of matrices m and n.


| 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 | ||
| ) |
| mesh | pointer toward the mesh structure. |
| p0 | pointer toward the point on which we want to define the metric. |
| ipref | table containing the indices of the edge extremities. |
| r | pointer toward the rotation matrix. |
| c | physical coordinates of the curve edge mid-point. |
| tAA | matrix of the system to solve. |
| tAb | second member. |
| m | pointer toward the metric. |
| isqhmax | maximum size for edge. |
| isqhmin | minimum size for edge. |
| hausd | hausdorff value at point. |
Solve tAA * tmp_m = tAb and fill m with tmp_m (after rotation) for a ref point.

| 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 | ||
| ) |
| mesh | pointer toward the mesh structure. |
| r | pointer toward the rotation matrix. |
| c | physical coordinates of the curve edge mid-point. |
| tAA | matrix of the system to solve. |
| tAb | second member. |
| m | pointer toward the metric. |
| isqhmax | maximum size for edge. |
| isqhmin | minimum size for edge. |
| hausd | hausdorff value at point. |
Solve tAA * tmp_m = tAb and fill m with tmp_m (after rotation) for a regular point.

|
inlinestatic |
| mesh | pointer toward the mesh structure. |
| m | pointer toward the metric at triangle vertices. |
| ptt | pointer toward the triangle structure. |
Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric m.

| double MMG5_surftri33_ani | ( | MMG5_pMesh | mesh, |
| MMG5_pTria | ptt, | ||
| double | ma[6], | ||
| double | mb[6], | ||
| double | mc[6] | ||
| ) |
| mesh | pointer toward the mesh structure. |
| ptt | pointer toward the triangle structure. |
| ma | metric at triangle vertex. |
| mb | metric at triangle vertex. |
| mc | metric at triangle vertex. |
Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric met (for classic storage of ridges metrics).

| double MMG5_surftri_ani | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | met, | ||
| MMG5_pTria | ptt | ||
| ) |
| mesh | pointer toward the mesh structure. |
| met | pointer toward the metric structure. |
| ptt | pointer toward the triangle structure. |
Compute the double of the area of the surface triangle ptt with respect to the anisotropic metric met (for special storage of ridges metrics).

| int MMG5_updatemetreq_ani | ( | double * | n, |
| double | dn[2], | ||
| double | vp[2][2] | ||
| ) |
| n | matrix to update |
| dn | eigenvalues of n in the coreduction basis |
| vp | coreduction basis |
Update of the metric n = tP^-1 diag(dn0,dn1)P^-1, P = (vp[0], vp[1]) stored in columns
