mmg2d
|
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
#include <math.h>
#include <string.h>
#include <signal.h>
#include <ctype.h>
#include <float.h>
#include "libmmg2d.h"
#include "mmgcommon.h"
Go to the source code of this file.
Data Structures | |
struct | squeue |
struct | Bucket |
struct | Hedge |
struct | HashTable |
Macros | |
#define | M_MAX(a, b) (((a) > (b)) ? (a) : (b)) |
#define | M_MIN(a, b) (((a) < (b)) ? (a) : (b)) |
#define | M_LAMBDA 0.34 |
#define | M_MU 0.33 |
#define | _MMG2_EPSD 1.e-10 |
#define | _MMG2D_EPSA 1.e-12 |
#define | _MMG2D_PRECI 1. |
#define | _MMG2D_SIZE 0.75 |
#define | _MMG2D_ALPHA 0.28867513459 |
#define | _MMG2D_ALPHAD 3.464101615137755 /* 6.0 / sqrt(3.0) */ |
#define | MMG2_LONMAX 1024 |
#define | _MMG2D_BADKAL 0.2 |
#define | _MMG2_NULKAL 1.e-6 |
#define | _MMG2_ANGCORN -1.e-6 |
#define | _MMG2_SHORTMAX 0x7fff |
#define | MMG2_LLONG 2.0 |
#define | MMG2_LSHRT 0.3 |
#define | MMG2_LOPTL 1.4 |
#define | MMG2_LOPTS 0.71 |
#define | _MMG2D_NPMAX 50000 |
#define | _MMG2D_NEDMAX 100000 |
#define | _MMG2D_NEMAX 100000 |
#define | _MMG2D_RETURN_AND_FREE(mesh, met, disp, val) |
#define | _MMG2D_POINT_REALLOC(mesh, sol, ip, wantedGap, law, o, tag, retval) |
#define | _MMG2D_TRIA_REALLOC(mesh, jel, wantedGap, law, retval) |
#define | _MMG2D_EDGE_REALLOC(mesh, jel, wantedGap, law, retval) |
Typedefs | |
typedef struct squeue | Queue |
typedef Queue * | pQueue |
typedef Bucket * | pBucket |
typedef HashTable * | pHashTable |
Variables | |
static const int | MMG2_iare [3][2] = {{1,2},{2,0},{0,1}} |
static const int | MMG2_iopp [3][2] = {{1,2},{0,2},{0,1}} |
static const unsigned int | MMG2_idir [5] = {0,1,2,0,1} |
static const unsigned int | MMG2_inxt [5] = {1,2,0,1,2} |
double(* | MMG2D_lencurv )(MMG5_pMesh, MMG5_pSol, int, int) |
double(* | MMG2D_caltri )(MMG5_pMesh, MMG5_pSol, MMG5_pTria) |
int(* | MMG2_optlen )(MMG5_pMesh, MMG5_pSol, double, int) |
int(* | MMG2D_intmet )(MMG5_pMesh, MMG5_pSol, int, char, int, double) |
int(* | MMG2D_gradsiz )(MMG5_pMesh, MMG5_pSol) |
int(* | MMG2D_defsiz )(MMG5_pMesh, MMG5_pSol) |
#define _MMG2_ANGCORN -1.e-6 |
#define _MMG2_EPSD 1.e-10 |
#define _MMG2_NULKAL 1.e-6 |
#define _MMG2_SHORTMAX 0x7fff |
#define _MMG2D_ALPHA 0.28867513459 |
#define _MMG2D_ALPHAD 3.464101615137755 /* 6.0 / sqrt(3.0) */ |
#define _MMG2D_BADKAL 0.2 |
Reallocation of edge table and creation of edge jel
#define _MMG2D_EPSA 1.e-12 |
#define _MMG2D_NEDMAX 100000 |
#define _MMG2D_NEMAX 100000 |
#define _MMG2D_NPMAX 50000 |
Reallocation of point table and sol table and creation of point ip with coordinates o and tag tag
#define _MMG2D_PRECI 1. |
#define _MMG2D_RETURN_AND_FREE | ( | mesh, | |
met, | |||
disp, | |||
val | |||
) |
Free allocated pointers of mesh and sol structure and return value val
#define _MMG2D_SIZE 0.75 |
Reallocation of tria table and creation of tria jel
#define M_LAMBDA 0.34 |
#define M_MU 0.33 |
#define MMG2_LLONG 2.0 |
#define MMG2_LONMAX 1024 |
#define MMG2_LOPTL 1.4 |
#define MMG2_LOPTS 0.71 |
#define MMG2_LSHRT 0.3 |
typedef HashTable* pHashTable |
int _MMG2_adpcol | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int _MMG2_adpspl | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
Analysis and splitting routine for edges in the final step of the algorithm; edges are only splitted on a one-by-one basis
int _MMG2_adptri | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int _MMG2_anaelt | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | |||
) |
int _MMG2_analys | ( | MMG5_pMesh | mesh | ) |
preprocessing stage: mesh analysis
int _MMG2_anatri | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
char | |||
) |
int _MMG2_bezierCurv | ( | MMG5_pMesh | , |
int | , | ||
char | , | ||
double | , | ||
double * | , | ||
double * | |||
) |
int _MMG2_bouleendp | ( | MMG5_pMesh | mesh, |
int | start, | ||
char | ip, | ||
int * | ip1, | ||
int * | ip2 | ||
) |
mesh | pointer toward the mesh structure. |
start | index of triangle to start. |
ip | index of point for wich we compute the ball. |
Find the two endpoints of the boundary curves joining ip and fill ip1 and ip2 with their indices.
int _MMG2_boulen | ( | MMG5_pMesh | , |
int | , | ||
char | , | ||
int * | , | ||
int * | , | ||
double * | |||
) |
int _MMG2_boulet | ( | MMG5_pMesh | mesh, |
int | start, | ||
char | ip, | ||
int * | list | ||
) |
mesh | pointer toward the mesh structure. |
start | index of triangle to start. |
ip | index of point for wich we compute the ball. |
list | pointer toward the computed ball of ip. |
Find all triangles sharing ip, start do not stop when crossing ridge.
double _MMG2_caltri_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pTria | |||
) |
double _MMG2_caltri_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pTria | |||
) |
int _MMG2_cavity | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | ip, | ||
int * | list | ||
) |
Create the cavity point ip, starting from triangle list[0]; Return a negative value for ilist if one of the triangles of the cavity is required
int _MMG2_cenrad_iso | ( | MMG5_pMesh | mesh, |
double * | ct, | ||
double * | c, | ||
double * | rad | ||
) |
mesh | Pointer toward the mesh structure. |
*ct | coordinates of vertices of the element. |
*c | center of circumscribing circle to the element. |
*rad | radius of circumscribing circle to the element. |
Compute radius and center of circumscribing circle to the element.
int _MMG2_chkcol | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | , | ||
int * | , | ||
char | |||
) |
int _MMG2_chkedg | ( | MMG5_pMesh | , |
int | |||
) |
int _MMG2_chkmanimesh | ( | MMG5_pMesh | ) |
int _MMG2_chkmsh | ( | MMG5_pMesh | ) |
int _MMG2_chkor | ( | MMG5_pMesh | ) |
int _MMG2_chkspl | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
char | i | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
k | triangle index |
i | local index of the edge to split |
Check whether splitting of edge i in tria k is possible and return the newly created point; possibly perform a dichotomy to find the latest valid position for the point.
int _MMG2_chkswp | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | , | ||
char | |||
) |
int _MMG2_colelt | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | |||
) |
int _MMG2_colver | ( | MMG5_pMesh | , |
int | , | ||
int * | |||
) |
int _MMG2_colver2 | ( | MMG5_pMesh | , |
int * | |||
) |
int _MMG2_colver3 | ( | MMG5_pMesh | , |
int * | |||
) |
int _MMG2_cuttri_ls | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the level-set |
Effective discretization of the 0 level set encoded in sol in the mesh
int _MMG2_defaultmet_2d | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
char | i | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
k | elt index |
i | vertex index in triangle k |
Impose default metric (isotropic, with size hmax) at vertex i in triangle k.
int _MMG2_defmetbdy_2d | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
char | i | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
k | index of the tria in which we work |
i | index of the point on which we want to compute the metric |
Calculate anisotropic metric tensor at (boundary) vertex i in triangle k on account of geometric approximation of the corresponding curve
int _MMG2_defsiz_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
Definition of an anisotropic metric tensor field based on the geometry of the domain; this tensor field is intersected by a user-defined tensor field
int _MMG2_defsiz_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
New version for the definition of a size map; takes into account the curvature of the external and internal curves present in the mesh
int _MMG2_delone | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
int * | , | ||
int | |||
) |
int _MMG2_dichoto | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int * | vx | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | element index. |
vx | pointer toward table of edges to split. |
Find acceptable position for splitting.
|
inlinestatic |
sigid | signal number. |
Signal handling: specify error messages depending from catched signal.
int _MMG2_getIniRef | ( | MMG5_pMesh | , |
int | |||
) |
int _MMG2_grad2met_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
double * | m, | ||
double * | n, | ||
double | difsiz | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
m | frist metric |
n | second metric |
difsiz | maximal size gap authorized by the gradation. |
Perform simultaneous reduction of matrices m1 and m2, and truncate characteristic sizes so that the difference between two corresponding sizes is less than difsiz.
Ref : https://www.rocq.inria.fr/gamma/Frederic.Alauzet/cours/cea2010_V2.pdf
int _MMG2_gradsiz_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
Anisotropic mesh gradation routine
int _MMG2_gradsiz_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
Isotropic mesh gradation routine
void _MMG2_Init_parameters | ( | MMG5_pMesh | mesh | ) |
int _MMG2_intmet_ani | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | , | ||
int | , | ||
double | |||
) |
int _MMG2_intmet_iso | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | , | ||
int | , | ||
double | |||
) |
int _MMG2_ismaniball | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | |||
) |
int _MMG2_isSplit | ( | MMG5_pMesh | mesh, |
int | ref, | ||
int * | refint, | ||
int * | refext | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the sol structure. |
Isosurface discretization
double _MMG2_lencurv_ani | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
int | |||
) |
double _MMG2_lencurv_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | ip1, | ||
int | ip2 | ||
) |
Calculate length of a curve in the considered isotropic metric
int _MMG2_movedgpt | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | ilist, | ||
int * | list, | ||
char | improve | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric structure. |
list | pointer toward the ball of the point. |
ilist | size of the ball. |
improve | force the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality. |
Relocate boundary vertex whose ball is passed; routine works both in the isotropic and anisotropic case
int _MMG2_movintpt | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | ilist, | ||
int * | list, | ||
char | improve | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric structure. |
list | pointer toward the ball of the point. |
ilist | size of the ball. |
improve | force the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality. |
Relocate internal vertex whose ball is passed.
int _MMG2_movintpt_ani | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
int * | , | ||
char | |||
) |
int _MMG2_movtri | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | |||
) |
int _MMG2_norver | ( | MMG5_pMesh | ) |
double _MMG2_quickcal | ( | MMG5_pMesh | mesh, |
MMG5_pTria | pt | ||
) |
mesh | pointer toward the mesh |
pt | pointer toward the tria |
Compute oriented area of tria pt
int _MMG2_regnor | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh |
Regularize normal vectors at boundary non singular edges with a Laplacian / antilaplacian smoothing
int _MMG2_resetRef | ( | MMG5_pMesh | ) |
int _MMG2_savedisp_db | ( | MMG5_pMesh | mesh, |
MMG5_pSol | , | ||
char * | , | ||
char | |||
) |
int _MMG2_savemesh_db | ( | MMG5_pMesh | , |
char * | , | ||
char | |||
) |
int _MMG2_savemet_db | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
char * | , | ||
char | |||
) |
int _MMG2_savenor_db | ( | MMG5_pMesh | , |
char * | , | ||
char | |||
) |
int _MMG2_setadj | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh |
Set tags GEO and REF to triangles and points by traveling the mesh; count number of subdomains or connected components
int _MMG2_setref_ls | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int _MMG2_singul | ( | MMG5_pMesh | ) |
int _MMG2_snapval | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
double * | |||
) |
int _MMG2_split1 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Split 1 edge of triangle k
int _MMG2_split1_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Simulate the split of one edge in triangle k
int _MMG2_split1b | ( | MMG5_pMesh | mesh, |
int | k, | ||
char | i, | ||
int | ip | ||
) |
mesh pointer toward the mesh
k | index of the tria to split |
i | local index of the edge to split |
ip | global index of the new point |
Effective splitting of edge i in tria k: point ip is introduced and the adjacency structure in the mesh is preserved
int _MMG2_split2 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Split 2 edges of triangle k
int _MMG2_split2_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Simulate the split of two edges in triangle k
int _MMG2_split3 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Split the three edges of triangle k
int _MMG2_split3_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | vx[3] | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
k | triangle index |
vx | list of new point indices for each edge |
Simulate the split of three edges in triangle k
int _MMG2_splitbar | ( | MMG5_pMesh | mesh, |
int | k, | ||
int | ip | ||
) |
mesh | pointer toward the mesh |
k | index of the tria to split |
ip | global index of the new point |
Insert the point ip inside the tria k
int _MMG2_swapar | ( | MMG5_pMesh | , |
int | , | ||
char | |||
) |
int _MMG2_swapdelone | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | , | ||
char | , | ||
double | , | ||
int * | |||
) |
int _MMG2_swpmsh | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
int | |||
) |
int _MMG2_velextLS | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int _MMG2D_delElt | ( | MMG5_pMesh | mesh, |
int | iel | ||
) |
void _MMG2D_delPt | ( | MMG5_pMesh | mesh, |
int | ip | ||
) |
int _MMG2D_Free_all_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be deallocated. Each structure must follow one of the MMG5_ARG preprocessor variable that allow to identify it. |
argptr contains at least a pointer toward a MMG5_pMesh structure (that will contain the mesh and identified by the MMG5_ARG_ppMesh keyword)
To call the MMG2D_mmg2dlib function, you must also provide a pointer toward a MMG5_pSol structure (that will contain the ouput metric (and the input one, if provided) and identified by the MMG5_ARG_ppMet keyword).
To call the MMG2D_mmg2dls function, you must also provide a pointer toward a MMG5_pSol structure (that will contain the level-set function and identified by the MMG5_ARG_ppLs keyword).
To call the MMG2D_mmg2dmov library, you must also provide a pointer toward a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for deallocations before return (taking a va_list as argument).
int _MMG2D_Free_names_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures for whose we want to deallocate the name. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. argptr contains at least a pointer toward a MMG5_pMesh structure (that will contain the mesh and identified by the MMG5_ARG_ppMesh keyword) and a pointer toward a MMG5_pSol structure (that will contain the ouput metric (and the input one, if provided) and identified by the MMG5_ARG_ppMet keyword). |
Internal function for name deallocations before return (taking a va_list as argument).
int _MMG2D_Free_structures_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be deallocated. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. argptr contains at least a pointer toward a MMG5_pMesh structure (that will contain the mesh and identified by the MMG5_ARG_ppMesh keyword) and a pointer toward a MMG5_pSol structure (that will contain the ouput metric (and the input one, if provided) and identified by the MMG5_ARG_ppMet keyword). |
To call the MMG2D_mmg2dls function, you must also provide a pointer toward a MMG5_pSol structure (that will contain the level-set function and identified by the MMG5_ARG_ppLs keyword).
To call the MMG2D_mmg2dmov library, you must also provide a pointer toward a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for structures deallocations before return (taking a va_list as argument).
int _MMG2D_indElt | ( | MMG5_pMesh | mesh, |
int | kel | ||
) |
mesh | pointer toward the mesh structure. |
kel | index of the element in the unpacked mesh |
find the element index in packed numerotation
int _MMG2D_indPt | ( | MMG5_pMesh | mesh, |
int | kp | ||
) |
mesh | pointer toward the mesh structure. |
kp | index of the point in the unpacked mesh |
find the point index in packed numerotation
int _MMG2D_Init_mesh_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be initialized. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. |
argptr contains at least a pointer toward a MMG5_pMesh structure (that will contain the mesh and identified by the MMG5_ARG_ppMesh keyword)
To call the MMG2D_mmg2dlib function, you must also provide a pointer toward a MMG5_pSol structure (that will contain the ouput metric (and the input one, if provided) and identified by the MMG5_ARG_ppMet keyword).
To call the MMG2D_mmg2dls function, you must also provide a pointer toward a MMG5_pSol structure (that will contain the level-set function and identified by the MMG5_ARG_ppLs keyword).
To call the MMG2D_mmg2dmov library, you must also provide a pointer toward a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for structure allocations (taking a va_list argument).
int _MMG2D_memOption | ( | MMG5_pMesh | mesh | ) |
memory repartition for the -m option
int _MMG2D_newElt | ( | MMG5_pMesh | mesh | ) |
int _MMG2D_newPt | ( | MMG5_pMesh | mesh, |
double | c[2], | ||
int16_t | tag | ||
) |
|
inlinestatic |
Set common pointer functions between mmgs and mmg2d to the matching mmg2d functions.
void _MMG5_delEdge | ( | MMG5_pMesh | mesh, |
int | iel | ||
) |
int _MMG5_getnElt | ( | MMG5_pMesh | mesh, |
int | n | ||
) |
int _MMG5_interpmet22 | ( | MMG5_pMesh | , |
double * | , | ||
double * | , | ||
double | , | ||
double * | |||
) |
long long _MMG5_memSize | ( | void | ) |
Compute the available memory size of the computer.
int _MMG5_mmg2dChkmsh | ( | MMG5_pMesh | mesh, |
int | severe, | ||
int | base | ||
) |
mesh | pointer toward the mesh structure. |
severe | level of performed check |
base | unused argument. |
Check the mesh validity
int _MMG5_newEdge | ( | MMG5_pMesh | mesh | ) |
int interp_ani | ( | double * | , |
double * | , | ||
double * | , | ||
double | |||
) |
int interp_iso | ( | double * | , |
double * | , | ||
double * | , | ||
double | |||
) |
int lissmet_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh |
sol | pointer toward the metric |
Anisotropic gradation (h-gradation procedure). See: http://www.ann.jussieu.fr/frey/publications/ijnme4398.pdf
int lissmet_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
double long_ani | ( | double * | ca, |
double * | cb, | ||
double * | ma, | ||
double * | mb | ||
) |
double long_iso | ( | double * | ca, |
double * | cb, | ||
double * | ma, | ||
double * | mb | ||
) |
int MMG2_assignEdge | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh |
Transfer some input edge data to the corresponding triangles fields
int MMG2_baseBdry | ( | MMG5_pMesh | mesh | ) |
int MMG2_bdryEdge | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh |
Create the edges in the mesh from the information stored in the triangles, or by identifying the different components of the mesh.
int MMG2_bdryenforcement | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the sol structure. |
Check if all edges exist in the mesh and if not force them.
int MMG2_boulep | ( | MMG5_pMesh | , |
int | , | ||
int | , | ||
int * | |||
) |
int MMG2_coorbary | ( | MMG5_pMesh | , |
MMG5_pTria | , | ||
double | c[2], | ||
double * | , | ||
double * | , | ||
double * | |||
) |
int MMG2_cutEdge | ( | MMG5_pMesh | , |
MMG5_pTria | , | ||
MMG5_pPoint | , | ||
MMG5_pPoint | |||
) |
int MMG2_cutEdgeTriangle | ( | MMG5_pMesh | , |
int | , | ||
int | , | ||
int | |||
) |
int MMG2_findTria | ( | MMG5_pMesh | mesh, |
int | ip | ||
) |
Return the index of one triangle containing ip
int MMG2_findtrianglestate | ( | MMG5_pMesh | , |
int | , | ||
int | , | ||
int | , | ||
int | , | ||
int | , | ||
int | |||
) |
int MMG2_hashEdge | ( | pHashTable | edgeTable, |
int | iel, | ||
int | ia, | ||
int | ib | ||
) |
int MMG2_hashNew | ( | HashTable * | hash, |
int | hsize, | ||
int | hmax | ||
) |
int MMG2_hashTria | ( | MMG5_pMesh | mesh | ) |
mesh | pointer toward the mesh |
Create adjacency relations between the triangles in the mesh
int MMG2_invmat | ( | double * | m, |
double * | minv | ||
) |
int MMG2_isInTriangle | ( | MMG5_pMesh | mesh, |
int | k, | ||
double | c[2] | ||
) |
Check whether c lies in triangle k; return k if so, 0 otherwise
int MMG2_kiudel | ( | pQueue | q, |
int | iel | ||
) |
void MMG2_kiufree | ( | pQueue | q | ) |
pQueue MMG2_kiuini | ( | MMG5_pMesh | mesh, |
int | nbel, | ||
double | declic, | ||
int | base | ||
) |
int MMG2_kiupop | ( | pQueue | q | ) |
int MMG2_kiuput | ( | pQueue | q, |
int | iel | ||
) |
int MMG2_locateEdge | ( | MMG5_pMesh | mesh, |
int | ia, | ||
int | ib, | ||
int * | kdep, | ||
int * | list | ||
) |
mesh | pointer toward the mesh |
ia | index of first extremity of the edge |
ib | index of second extremity of the edge |
kdep | pointer toward the index of the first element intersecting the edge |
list | pointer toward the list of elts intersected by the edge |
Calculate the list of all the triangles intersected by edge (ia,ib), starting from kdep = one triangle in the ball of ia; List lon starts at index 0 and goes to lon-1 and stores 3*k + iare, where iare is one intersected edge; return 4 if edge exists in the mesh
int MMG2_mmg2d1 | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int MMG2_mmg2d1n | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the sol structure. |
Mesh adaptation – new version of mmg2d1.c
int MMG2_mmg2d2 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the sol structure. |
Mesh triangulation.
int MMG2_mmg2d6 | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int MMG2_mmg2d9 | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_pSol | |||
) |
int MMG2_outqua | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
Print histogram of mesh qualities.
int MMG2_pack | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the solution structure. |
Pack the mesh and metric and create explicitly all the mesh structures (edges).
int MMG2_parsop | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh |
met | pointer toward the metric |
Read parameter file DEFAULT.mmg2d
int MMG2_prilen | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int MMG2_scaleMesh | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the metric or solution structure. |
Scale the mesh and the size informations between 0 and 1. Compute a default value for the hmin/hmax parameters if needed. Truncate the metric sizes between hmin/hmax
int MMG2_settagtriangles | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
int MMG2_unscaleMesh | ( | MMG5_pMesh | , |
MMG5_pSol | |||
) |
void MMG2D_solTruncatureForOptim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the solution structure. |
Truncate the metric computed by the DoSol function by hmax and hmin values (if setted by the user). Set hmin and hmax if they are not setted.
int MMG2D_zaldy | ( | MMG5_pMesh | mesh | ) |
int optlen_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
double | declic, | ||
int | base | ||
) |
int optlen_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
double | declic, | ||
int | base | ||
) |
int optlen_iso_bar | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
double | declic, | ||
int | base | ||
) |
int simred | ( | double * | m1, |
double * | m2, | ||
double * | m | ||
) |
|
static |
|
static |
|
static |
|
static |
int(* MMG2_optlen) (MMG5_pMesh,MMG5_pSol,double,int) |
double(* MMG2D_caltri) (MMG5_pMesh,MMG5_pSol,MMG5_pTria) |
int(* MMG2D_defsiz) (MMG5_pMesh,MMG5_pSol) |
int(* MMG2D_gradsiz) (MMG5_pMesh,MMG5_pSol) |
int(* MMG2D_intmet) (MMG5_pMesh,MMG5_pSol,int,char,int,double) |
double(* MMG2D_lencurv) (MMG5_pMesh,MMG5_pSol,int,int) |