mmg2d
mmg2d.h File Reference
#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"
Include dependency graph for mmg2d.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 MMG2D_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 MMG2D_LONMAX   1024
 
#define MMG2D_BADKAL   0.2
 
#define MMG2D_NULKAL   1.e-6
 
#define MMG2D_ANGCORN   -1.e-6
 
#define MMG2D_SHORTMAX   0x7fff
 
#define MMG2D_LPARMAX   200
 
#define MMG2D_LLONG   2.0
 
#define MMG2D_LSHRT   0.3
 
#define MMG2D_LOPTL   1.4
 
#define MMG2D_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)
 
#define MMG2D_TRIA_REALLOC(mesh, jel, wantedGap, law)
 

Typedefs

typedef struct squeue Queue
 
typedef QueuepQueue
 
typedef BucketpBucket
 
typedef HashTablepHashTable
 

Functions

static void MMG2D_excfun (int sigid)
 
int MMG2D_newPt (MMG5_pMesh mesh, double c[2], int16_t tag)
 
void MMG2D_delPt (MMG5_pMesh mesh, int ip)
 
void MMG5_delEdge (MMG5_pMesh mesh, int iel)
 
int MMG2D_newElt (MMG5_pMesh mesh)
 
int MMG2D_delElt (MMG5_pMesh mesh, int iel)
 
int MMG5_getnElt (MMG5_pMesh mesh, int n)
 
int MMG2D_zaldy (MMG5_pMesh mesh)
 
size_t MMG5_memSize (void)
 
int MMG2D_memOption (MMG5_pMesh mesh)
 
int MMG2D_setMeshSize_alloc (MMG5_pMesh)
 
int MMG2D_scaleMesh (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_unscaleMesh (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_pack (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_outqua (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_mmg2d1 (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_Init_mesh_var (va_list argptr)
 
int MMG2D_Free_all_var (va_list argptr)
 
int MMG2D_Free_structures_var (va_list argptr)
 
int MMG2D_Free_names_var (va_list argptr)
 
void MMG2D_solTruncatureForOptim (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG2D_mmg2d2 (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_mmg2d6 (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_mmg2d9 (MMG5_pMesh, MMG5_pSol, MMG5_pSol)
 
int MMG2D_swapdelone (MMG5_pMesh, MMG5_pSol, int, char, double, int *)
 
int MMG5_mmg2dChkmsh (MMG5_pMesh, int, int)
 
int MMG2D_boulep (MMG5_pMesh, int, int, int *)
 
int MMG2D_prilen (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_coorbary (MMG5_pMesh, MMG5_pTria, double c[2], double *, double *, double *)
 
int MMG2D_isInTriangle (MMG5_pMesh, int, double c[2])
 
int MMG2D_cutEdge (MMG5_pMesh, MMG5_pTria, MMG5_pPoint, MMG5_pPoint)
 
int MMG2D_cutEdgeTriangle (MMG5_pMesh, int, int, int)
 
int MMG2D_findTria (MMG5_pMesh, int)
 
int MMG2D_locateEdge (MMG5_pMesh, int, int, int *, int *)
 
int MMG2D_bdryenforcement (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_settagtriangles (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_findtrianglestate (MMG5_pMesh, int, int, int, int, int, int)
 
pQueue MMG2D_kiuini (MMG5_pMesh mesh, int nbel, double declic, int base)
 
void MMG2D_kiufree (pQueue q)
 
int MMG2D_kiudel (pQueue q, int iel)
 
int MMG2D_kiuput (pQueue q, int iel)
 
int MMG2D_kiupop (pQueue q)
 
int MMG2D_hashEdge (pHashTable edgeTable, int iel, int ia, int ib)
 
int MMG2D_hashNew (HashTable *hash, int hsize, int hmax)
 
int MMG2D_baseBdry (MMG5_pMesh mesh)
 
int simred (double *m1, double *m2, double *m)
 
int MMG2D_cavity (MMG5_pMesh, MMG5_pSol, int, int *)
 
int MMG2D_delone (MMG5_pMesh, MMG5_pSol, int, int *, int)
 
int MMG2D_cenrad_iso (MMG5_pMesh, double *, double *, double *)
 
int MMG2D_getIniRef (MMG5_pMesh, int)
 
int MMG2D_isSplit (MMG5_pMesh, int, int *, int *)
 
int MMG2D_parsop (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_ismaniball (MMG5_pMesh, MMG5_pSol, int, char)
 
int MMG2D_snapval (MMG5_pMesh, MMG5_pSol, double *)
 
int MMG2D_chkmanimesh (MMG5_pMesh)
 
int MMG2D_hashTria (MMG5_pMesh)
 
int MMG2D_resetRef (MMG5_pMesh)
 
int MMG2D_cuttri_ls (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_setref_ls (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_split1_sim (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_split2_sim (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_split3_sim (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_split1 (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_split2 (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_split3 (MMG5_pMesh, MMG5_pSol, int, int vx[3])
 
int MMG2D_splitbar (MMG5_pMesh, int, int)
 
int MMG2D_assignEdge (MMG5_pMesh)
 
int MMG2D_bdryEdge (MMG5_pMesh)
 
int MMG2D_setadj (MMG5_pMesh)
 
int MMG2D_singul (MMG5_pMesh, int)
 
int MMG2D_analys (MMG5_pMesh)
 
int MMG2D_norver (MMG5_pMesh, int)
 
int MMG2D_regnor (MMG5_pMesh)
 
int MMG2D_boulen (MMG5_pMesh, int, char, int *, int *, double *)
 
int MMG2D_mmg2d1n (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_anatri (MMG5_pMesh, MMG5_pSol, char)
 
int MMG2D_adptri (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_defsiz_iso (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_defsiz_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_defmetbdy_2d (MMG5_pMesh, MMG5_pSol, int, char)
 
int MMG2D_defaultmet_2d (MMG5_pMesh, MMG5_pSol, int, char)
 
int MMG2D_grad2met_ani (MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
 
int MMG2D_grad2metreq_ani (MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
 
int MMG2D_gradsiz_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_gradsizreq_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_anaelt (MMG5_pMesh, MMG5_pSol, int)
 
int MMG2D_colelt (MMG5_pMesh, MMG5_pSol, int)
 
int MMG2D_swpmsh (MMG5_pMesh, MMG5_pSol, int)
 
double MMG2D_lencurv_iso (MMG5_pMesh, MMG5_pSol, int, int)
 
double MMG2D_lencurv_ani (MMG5_pMesh, MMG5_pSol, int, int)
 
int MMG2D_chkedg (MMG5_pMesh, int)
 
int MMG2D_bezierCurv (MMG5_pMesh, int, char, double, double *, double *)
 
int MMG2D_dichoto (MMG5_pMesh, MMG5_pSol, int, int *)
 
double MMG2D_quickcal (MMG5_pMesh, MMG5_pTria)
 
int MMG2D_chkcol (MMG5_pMesh, MMG5_pSol, int, char, int *, char)
 
int MMG2D_colver (MMG5_pMesh, int, int *)
 
int MMG2D_colver3 (MMG5_pMesh, int *)
 
int MMG2D_colver2 (MMG5_pMesh, int *)
 
int MMG2D_boulet (MMG5_pMesh, int, char, int *)
 
int MMG2D_bouleendp (MMG5_pMesh, int, char, int *, int *)
 
int MMG2D_savemesh_db (MMG5_pMesh, char *, char)
 
int MMG2D_savemet_db (MMG5_pMesh, MMG5_pSol, char *, char)
 
int MMG2D_chkswp (MMG5_pMesh, MMG5_pSol, int, char, char)
 
int MMG2D_swapar (MMG5_pMesh, int, char)
 
int MMG5_interpmet22 (MMG5_pMesh, double *, double *, double, double *)
 
int MMG2D_intmet_iso (MMG5_pMesh, MMG5_pSol, int, char, int, double)
 
int MMG2D_intmet_ani (MMG5_pMesh, MMG5_pSol, int, char, int, double)
 
int MMG2D_adpspl (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_adpcol (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_movtri (MMG5_pMesh, MMG5_pSol, int, char)
 
int MMG2D_chkspl (MMG5_pMesh, MMG5_pSol, int, char)
 
int MMG2D_split1b (MMG5_pMesh, int, char, int)
 
int MMG2D_movedgpt (MMG5_pMesh, MMG5_pSol, int, int *, char)
 
int MMG2D_movintpt (MMG5_pMesh, MMG5_pSol, int, int *, char)
 
int MMG2D_movintpt_ani (MMG5_pMesh, MMG5_pSol, int, int *, char)
 
int MMG2D_chkmsh (MMG5_pMesh)
 
int MMG2D_chkor (MMG5_pMesh)
 
int MMG2D_savenor_db (MMG5_pMesh, char *, char)
 
int MMG2D_savedisp_db (MMG5_pMesh mesh, MMG5_pSol, char *, char)
 
int MMG2D_velextLS (MMG5_pMesh, MMG5_pSol)
 
int MMG2D_indElt (MMG5_pMesh mesh, int kel)
 
int MMG2D_indPt (MMG5_pMesh mesh, int kp)
 
int MMG2D_freeLocalPar (MMG5_pMesh)
 
double long_ani (double *ca, double *cb, double *ma, double *mb)
 
double long_iso (double *ca, double *cb, double *ma, double *mb)
 
double MMG2D_caltri_ani (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
 
double MMG2D_caltri_iso (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
 
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 interp_ani (double *, double *, double *, double)
 
int interp_iso (double *, double *, double *, double)
 
int lissmet_iso (MMG5_pMesh mesh, MMG5_pSol sol)
 
int lissmet_ani (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG2D_sum_reqEdgeLengthsAtPoint (MMG5_pMesh, MMG5_pSol, MMG5_pTria, char)
 
int MMG2D_set_metricAtPointsOnReqEdges (MMG5_pMesh, MMG5_pSol)
 
void MMG2D_Init_parameters (MMG5_pMesh mesh)
 
static void MMG2D_Set_commonFunc ()
 

Variables

static const int MMG2D_iare [3][2] = {{1,2},{2,0},{0,1}}
 
static const int MMG2D_iopp [3][2] = {{1,2},{0,2},{0,1}}
 
static const unsigned int MMG2D_idir [5] = {0,1,2,0,1}
 
static const unsigned int MMG2D_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(* MMG2D_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_gradsizreq )(MMG5_pMesh, MMG5_pSol)
 
int(* MMG2D_defsiz )(MMG5_pMesh, MMG5_pSol)
 

Macro Definition Documentation

◆ M_LAMBDA

#define M_LAMBDA   0.34

◆ M_MAX

#define M_MAX (   a,
  b 
)    (((a) > (b)) ? (a) : (b))

◆ M_MIN

#define M_MIN (   a,
  b 
)    (((a) < (b)) ? (a) : (b))

◆ M_MU

#define M_MU   0.33

◆ MMG2D_ALPHA

#define MMG2D_ALPHA   0.28867513459

◆ MMG2D_ALPHAD

#define MMG2D_ALPHAD   3.464101615137755 /* 6.0 / sqrt(3.0) */

◆ MMG2D_ANGCORN

#define MMG2D_ANGCORN   -1.e-6

◆ MMG2D_BADKAL

#define MMG2D_BADKAL   0.2

◆ MMG2D_EPSA

#define MMG2D_EPSA   1.e-12

◆ MMG2D_EPSD

#define MMG2D_EPSD   1.e-10

◆ MMG2D_LLONG

#define MMG2D_LLONG   2.0

◆ MMG2D_LONMAX

#define MMG2D_LONMAX   1024

◆ MMG2D_LOPTL

#define MMG2D_LOPTL   1.4

◆ MMG2D_LOPTS

#define MMG2D_LOPTS   0.71

◆ MMG2D_LPARMAX

#define MMG2D_LPARMAX   200

◆ MMG2D_LSHRT

#define MMG2D_LSHRT   0.3

◆ MMG2D_NEDMAX

#define MMG2D_NEDMAX   100000

◆ MMG2D_NEMAX

#define MMG2D_NEMAX   100000

◆ MMG2D_NPMAX

#define MMG2D_NPMAX   50000

◆ MMG2D_NULKAL

#define MMG2D_NULKAL   1.e-6

◆ MMG2D_POINT_REALLOC

#define MMG2D_POINT_REALLOC (   mesh,
  sol,
  ip,
  wantedGap,
  law,
  o,
  tag 
)
Value:
do \
{ \
int klink; \
"larger point table",law); \
\
mesh->npnil = mesh->np+1; \
for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
mesh->point[klink].tmp = klink+1; \
\
/* solution */ \
if ( sol->m ) { \
MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
"larger solution",law); \
MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \
sol->size*(mesh->npmax+1), \
double,"larger solution",law); \
} \
sol->npmax = mesh->npmax; \
\
/* We try again to add the point */ \
ip = MMG2D_newPt(mesh,o,tag); \
if ( !ip ) {law;} \
}while(0)
MMG5_pPoint point
Definition: libmmgtypes.h:542
int npmax
Definition: libmmgtypes.h:516
#define MMG5_TAB_RECALLOC(mesh, ptr, initSize, wantedGap, type, message, law)
Definition: mmgcommon.h:348
int npnil
Definition: libmmgtypes.h:526
! int npmax
Definition: libmmgtypesf.h:571
int np
Definition: libmmgtypes.h:516
MMG5_pMesh MMG5_pSol * sol
Definition: API_functionsf_2d.c:63
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
! int16_t tag
Definition: libmmgtypesf.h:263
int MMG2D_newPt(MMG5_pMesh mesh, double c[2], int16_t tag)
Definition: zaldy_2d.c:38

Reallocation of point table and sol table and creation of point ip with coordinates o and tag tag

◆ MMG2D_PRECI

#define MMG2D_PRECI   1.

◆ MMG2D_RETURN_AND_FREE

#define MMG2D_RETURN_AND_FREE (   mesh,
  met,
  disp,
  val 
)
Value:
do \
{ \
MMG5_ARG_end) ) { \
return MMG5_LOWFAILURE; \
} \
return val; \
}while(0)
#define MMG5_ARG_start
Definition: libmmgtypes.h:73
int MMG2D_Free_all(const int starter,...)
Definition: API_functions_2d.c:1451
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
#define MMG5_LOWFAILURE
Definition: libmmgtypes.h:48
#define MMG5_ARG_end
Definition: libmmgtypes.h:159
double val
Definition: mmgcommon.h:503
#define MMG5_ARG_ppMet
Definition: libmmgtypes.h:102
#define MMG5_ARG_ppMesh
Definition: libmmgtypes.h:82

Free allocated pointers of mesh and sol structure and return value val

◆ MMG2D_SHORTMAX

#define MMG2D_SHORTMAX   0x7fff

◆ MMG2D_SIZE

#define MMG2D_SIZE   0.75

◆ MMG2D_TRIA_REALLOC

#define MMG2D_TRIA_REALLOC (   mesh,
  jel,
  wantedGap,
  law 
)
Value:
do \
{ \
int klink,oldSiz; \
\
oldSiz = mesh->ntmax; \
MMG5_TAB_RECALLOC(mesh,mesh->tria,mesh->ntmax,wantedGap,MMG5_Tria, \
"larger tria table",law); \
\
mesh->nenil = mesh->nt+1; \
for (klink=mesh->nenil; klink<mesh->ntmax-1; klink++) \
mesh->tria[klink].v[2] = klink+1; \
if ( mesh->adja ) { \
/* adja table */ \
MMG5_ADD_MEM(mesh,3*(mesh->ntmax-oldSiz)*sizeof(int), \
"larger adja table",law); \
MMG5_SAFE_RECALLOC(mesh->adja,3*oldSiz+5,3*mesh->ntmax+5,int \
,"larger adja table",law); \
} \
\
/* We try again to add the point */ \
jel = MMG2D_newElt(mesh); \
if ( !jel ) {law;} \
}while(0)
int ntmax
Definition: libmmgtypes.h:516
if(!ier) exit(EXIT_FAILURE)
! int ntmax
Definition: libmmgtypesf.h:571
int nt
Definition: libmmgtypes.h:516
int MMG2D_newElt(MMG5_pMesh mesh)
Definition: zaldy_2d.c:85
int nenil
Definition: libmmgtypes.h:527
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
int * adja
Definition: libmmgtypes.h:529
MMG5_pTria tria
Definition: libmmgtypes.h:548
Definition: libmmgtypes.h:270

Reallocation of tria table and creation of tria jel

Typedef Documentation

◆ pBucket

typedef Bucket* pBucket

◆ pHashTable

◆ pQueue

typedef Queue* pQueue

◆ Queue

typedef struct squeue Queue

Function Documentation

◆ interp_ani()

int interp_ani ( double *  ,
double *  ,
double *  ,
double   
)

◆ interp_iso()

int interp_iso ( double *  ,
double *  ,
double *  ,
double   
)

◆ lissmet_ani()

int lissmet_ani ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
Returns
0 if fail, 1 if success

Anisotropic gradation (h-gradation procedure). See: http://www.ljll.math.upmc.fr/frey/publications/ijnme4398.pdf Skip edges with a required extremity (treated in lissmetreq_ani).

Here is the call graph for this function:

◆ lissmet_iso()

int lissmet_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)

◆ long_ani()

double long_ani ( double *  ca,
double *  cb,
double *  ma,
double *  mb 
)

◆ long_iso()

double long_iso ( double *  ca,
double *  cb,
double *  ma,
double *  mb 
)

◆ MMG2D_adpcol()

int MMG2D_adpcol ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_adpspl()

int MMG2D_adpspl ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
Returns
-1 if failed or number of new points.

Analysis and splitting routine for edges in the final step of the algorithm; edges are only splitted on a one-by-one basis

Here is the call graph for this function:

◆ MMG2D_adptri()

int MMG2D_adptri ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_anaelt()

int MMG2D_anaelt ( MMG5_pMesh  ,
MMG5_pSol  ,
int   
)
Here is the call graph for this function:

◆ MMG2D_analys()

int MMG2D_analys ( MMG5_pMesh  mesh)

preprocessing stage: mesh analysis

Here is the call graph for this function:

◆ MMG2D_anatri()

int MMG2D_anatri ( MMG5_pMesh  ,
MMG5_pSol  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_assignEdge()

int MMG2D_assignEdge ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh
Returns
0 if fail, 1 otherwise

Transfer some input edge data to the corresponding triangles fields

Here is the call graph for this function:

◆ MMG2D_baseBdry()

int MMG2D_baseBdry ( MMG5_pMesh  mesh)

◆ MMG2D_bdryEdge()

int MMG2D_bdryEdge ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh
Returns
1 if success, 0 if fail

Create the edges in the mesh from the information stored in the triangles, or by identifying the different components of the mesh.

Remarks
Possible extension needed to take into account constrained edges

◆ MMG2D_bdryenforcement()

int MMG2D_bdryenforcement ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the sol structure.
Returns
0 if fail, 1 otherwise.

Check if all edges exist in the mesh and if not force them.

Now treat the missing edges

Here is the call graph for this function:

◆ MMG2D_bezierCurv()

int MMG2D_bezierCurv ( MMG5_pMesh  ,
int  ,
char  ,
double  ,
double *  ,
double *   
)

◆ MMG2D_bouleendp()

int MMG2D_bouleendp ( MMG5_pMesh  mesh,
int  start,
char  ip,
int *  ip1,
int *  ip2 
)
Parameters
meshpointer toward the mesh structure.
startindex of triangle to start.
ipindex of point for wich we compute the ball.
Returns
1 if success, 0 if fail.

Find the two endpoints of the boundary curves joining ip and fill ip1 and ip2 with their indices.

◆ MMG2D_boulen()

int MMG2D_boulen ( MMG5_pMesh  ,
int  ,
char  ,
int *  ,
int *  ,
double *   
)

◆ MMG2D_boulep()

int MMG2D_boulep ( MMG5_pMesh  ,
int  ,
int  ,
int *   
)

◆ MMG2D_boulet()

int MMG2D_boulet ( MMG5_pMesh  mesh,
int  start,
char  ip,
int *  list 
)
Parameters
meshpointer toward the mesh structure.
startindex of triangle to start.
ipindex of point for wich we compute the ball.
listpointer toward the computed ball of ip.
Returns
the size of the computed ball or 0 if fail.

Find all triangles sharing ip, $list[0] =$ start do not stop when crossing ridge.

◆ MMG2D_caltri_ani()

double MMG2D_caltri_ani ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pTria   
)

◆ MMG2D_caltri_iso()

double MMG2D_caltri_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pTria   
)

◆ MMG2D_cavity()

int MMG2D_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

Here is the call graph for this function:

◆ MMG2D_cenrad_iso()

int MMG2D_cenrad_iso ( MMG5_pMesh  mesh,
double *  ct,
double *  c,
double *  rad 
)
Parameters
meshPointer toward the mesh structure.
*ctcoordinates of vertices of the element.
*ccenter of circumscribing circle to the element.
*radradius of circumscribing circle to the element.
Returns
0 if failed, 1 otherwise.

Compute radius and center of circumscribing circle to the element.

◆ MMG2D_chkcol()

int MMG2D_chkcol ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
char  i,
int *  list,
char  typchk 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
ktriangle index
ilocal index of the edge that we want to test in the triangle k
listedge's shell (to fill)
typchktype eof check to perform.
Returns
1 if we must collapse, 0 otherwise

Check whether the validity and the geometry of the mesh are preserved when collapsing edge i (p1->p2)

Here is the call graph for this function:

◆ MMG2D_chkedg()

int MMG2D_chkedg ( MMG5_pMesh  ,
int   
)

◆ MMG2D_chkmanimesh()

int MMG2D_chkmanimesh ( MMG5_pMesh  )
Here is the call graph for this function:

◆ MMG2D_chkmsh()

int MMG2D_chkmsh ( MMG5_pMesh  )
Here is the call graph for this function:

◆ MMG2D_chkor()

int MMG2D_chkor ( MMG5_pMesh  )

◆ MMG2D_chkspl()

int MMG2D_chkspl ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
char  i 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
ktriangle index
ilocal index of the edge to split
Returns
1 if we can split, 0 if not, -1 if fail.

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.

Here is the call graph for this function:

◆ MMG2D_chkswp()

int MMG2D_chkswp ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_colelt()

int MMG2D_colelt ( MMG5_pMesh  ,
MMG5_pSol  ,
int   
)
Here is the call graph for this function:

◆ MMG2D_colver()

int MMG2D_colver ( MMG5_pMesh  ,
int  ,
int *   
)
Here is the call graph for this function:

◆ MMG2D_colver2()

int MMG2D_colver2 ( MMG5_pMesh  ,
int *   
)
Here is the call graph for this function:

◆ MMG2D_colver3()

int MMG2D_colver3 ( MMG5_pMesh  ,
int *   
)
Here is the call graph for this function:

◆ MMG2D_coorbary()

int MMG2D_coorbary ( MMG5_pMesh  ,
MMG5_pTria  ,
double  c[2],
double *  ,
double *  ,
double *   
)

◆ MMG2D_cutEdge()

int MMG2D_cutEdge ( MMG5_pMesh  ,
MMG5_pTria  ,
MMG5_pPoint  ,
MMG5_pPoint   
)
Here is the call graph for this function:

◆ MMG2D_cutEdgeTriangle()

int MMG2D_cutEdgeTriangle ( MMG5_pMesh  ,
int  ,
int  ,
int   
)
Here is the call graph for this function:

◆ MMG2D_cuttri_ls()

int MMG2D_cuttri_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh
solpointer toward the level-set
Returns
1 if success, 0 otherwise

Effective discretization of the 0 level set encoded in sol in the mesh

Here is the call graph for this function:

◆ MMG2D_defaultmet_2d()

int MMG2D_defaultmet_2d ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
char  i 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
kelt index
ivertex index in triangle k
Returns
0 if fail, 1 if success

Impose default metric (isotropic, with size hmax) at vertex i in triangle k (don't take into account the local parameters). Set the point flag to 1 to be able to truncate it with the local params later.

◆ MMG2D_defmetbdy_2d()

int MMG2D_defmetbdy_2d ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
char  i 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
kindex of the tria in which we work
iindex of the point on which we want to compute the metric
Returns
1 if success, 0 if fail

Calculate anisotropic metric tensor at (boundary) vertex i in triangle k on account of geometric approximation of the corresponding curve (taking into account the local parameters). Set the point flag to 2 to ignore it whem imposing the local parameters later.

Here is the call graph for this function:

◆ MMG2D_defsiz_ani()

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

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

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

For points with flag 1 (metrec computed by defaultmet_2d), truncation by the local parameters

Here is the call graph for this function:

◆ MMG2D_defsiz_iso()

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

New version for the definition of a size map; takes into account the curvature of the external and internal curves present in the mesh

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

Step 3: Minimum size feature imposed by the boundary edges

If local parameters are provided: size truncation on the entire mesh

Here is the call graph for this function:

◆ MMG2D_delElt()

int MMG2D_delElt ( MMG5_pMesh  mesh,
int  iel 
)

◆ MMG2D_delone()

int MMG2D_delone ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
int *  ,
int   
)
Here is the call graph for this function:

◆ MMG2D_delPt()

void MMG2D_delPt ( MMG5_pMesh  mesh,
int  ip 
)

◆ MMG2D_dichoto()

int MMG2D_dichoto ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  k,
int *  vx 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelement index.
vxpointer toward table of edges to split.
Returns
1.

Find acceptable position for splitting.

Here is the call graph for this function:

◆ MMG2D_excfun()

static void MMG2D_excfun ( int  sigid)
inlinestatic
Parameters
sigidsignal number.

Signal handling: specify error messages depending from catched signal.

Here is the caller graph for this function:

◆ MMG2D_findTria()

int MMG2D_findTria ( MMG5_pMesh  mesh,
int  ip 
)

Return the index of one triangle containing ip

Here is the call graph for this function:

◆ MMG2D_findtrianglestate()

int MMG2D_findtrianglestate ( MMG5_pMesh  ,
int  ,
int  ,
int  ,
int  ,
int  ,
int   
)

◆ MMG2D_Free_all_var()

int MMG2D_Free_all_var ( va_list  argptr)
Parameters
argptrlist 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).

Returns
0 if fail, 1 if success

Internal function for deallocations before return (taking a va_list as argument).

Remarks
we pass the structures by reference in order to have argument compatibility between the library call from a Fortran code and a C code.
Here is the call graph for this function:

◆ MMG2D_Free_names_var()

int MMG2D_Free_names_var ( va_list  argptr)
Parameters
argptrlist 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).

Returns
0 if fail, 1 if success
Remarks
we pass the structures by reference in order to have argument compatibility between the library call from a Fortran code and a C code.
Here is the call graph for this function:

◆ MMG2D_Free_structures_var()

int MMG2D_Free_structures_var ( va_list  argptr)
Parameters
argptrlist 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).

Returns
1 if success, 0 if fail

Internal function for structures deallocations before return (taking a va_list as argument).

Remarks
we pass the structures by reference in order to have argument compatibility between the library call from a Fortran code and a C code.
Here is the call graph for this function:

◆ MMG2D_freeLocalPar()

int MMG2D_freeLocalPar ( MMG5_pMesh  )

◆ MMG2D_getIniRef()

int MMG2D_getIniRef ( MMG5_pMesh  ,
int   
)

◆ MMG2D_grad2met_ani()

int MMG2D_grad2met_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTria  pt,
int  np1,
int  np2 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
ptpointer toward the processed triangle.
np1first edge extremity (global index)
np2second edge extremity (global index)
Returns
0 if fail or we don't need to modify the sizes. ier, where (ier & 1) if metric of ip1 is altered, and (ier & 2) if metric of ip2 is altered.

Perform simultaneous reduction of metrics at ip1 points and ip2, and truncate characteristic sizes so that the difference between two corresponding sizes respect the maximal gradation.

Ref : https://www.rocq.inria.fr/gamma/Frederic.Alauzet/cours/cea2010_V2.pdf

Here is the call graph for this function:

◆ MMG2D_grad2metreq_ani()

int MMG2D_grad2metreq_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTria  pt,
int  npmaster,
int  npslave 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
ptpointer toward the processed tria.
npmasteredge extremity that cannot be modified
npslaveedge extremity to modify to respect the gradation.
Returns
0 if fail or we don't need to update the size of ipslave, 1 if its size has been updated.

Perform simultaneous reduction of metrics at npmaster points and npslave, and modify the characteristic size of npslave so that the difference between the two sizes respect the maximal gradation

Ref : https://www.rocq.inria.fr/gamma/Frederic.Alauzet/cours/cea2010_V2.pdf

Here is the call graph for this function:

◆ MMG2D_gradsiz_ani()

int MMG2D_gradsiz_ani ( MMG5_pMesh  ,
MMG5_pSol   
)

◆ MMG2D_gradsizreq_ani()

int MMG2D_gradsizreq_ani ( MMG5_pMesh  ,
MMG5_pSol   
)

◆ MMG2D_hashEdge()

int MMG2D_hashEdge ( pHashTable  edgeTable,
int  iel,
int  ia,
int  ib 
)

◆ MMG2D_hashNew()

int MMG2D_hashNew ( HashTable hash,
int  hsize,
int  hmax 
)

◆ MMG2D_hashTria()

int MMG2D_hashTria ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh
Returns
1 if success, 0 if fail

Create adjacency relations between the triangles in the mesh

Here is the call graph for this function:

◆ MMG2D_indElt()

int MMG2D_indElt ( MMG5_pMesh  mesh,
int  kel 
)
Parameters
meshpointer toward the mesh structure.
kelindex of the element in the unpacked mesh
Returns
0 if fail, index of the element in packed numerotation otherwise.

find the element index in packed numerotation

◆ MMG2D_indPt()

int MMG2D_indPt ( MMG5_pMesh  mesh,
int  kp 
)
Parameters
meshpointer toward the mesh structure.
kpindex of the point in the unpacked mesh
Returns
0 if fail, index of the point in packed numerotation otherwise.

find the point index in packed numerotation

◆ MMG2D_Init_mesh_var()

int MMG2D_Init_mesh_var ( va_list  argptr)
Parameters
argptrlist 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).

Returns
0 if fail, 1 otherwise

Internal function for structure allocations (taking a va_list argument).

Here is the call graph for this function:

◆ MMG2D_Init_parameters()

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

Initialization of the input parameters (stored in the Info structure).

Remarks
Fortran interface:

SUBROUTINE MMG2D_INIT_PARAMETERS(mesh)
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
END SUBROUTINE

Here is the call graph for this function:

◆ MMG2D_intmet_ani()

int MMG2D_intmet_ani ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char  ,
int  ,
double   
)
Here is the call graph for this function:

◆ MMG2D_intmet_iso()

int MMG2D_intmet_iso ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char  ,
int  ,
double   
)

◆ MMG2D_isInTriangle()

int MMG2D_isInTriangle ( MMG5_pMesh  mesh,
int  k,
double  c[2] 
)

Check whether c lies in triangle k; return k if so, 0 otherwise

Here is the call graph for this function:

◆ MMG2D_ismaniball()

int MMG2D_ismaniball ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_isSplit()

int MMG2D_isSplit ( MMG5_pMesh  mesh,
int  ref,
int *  refint,
int *  refext 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the sol structure.
Returns
1 if success.

Isosurface discretization

◆ MMG2D_kiudel()

int MMG2D_kiudel ( pQueue  q,
int  iel 
)

◆ MMG2D_kiufree()

void MMG2D_kiufree ( pQueue  q)

◆ MMG2D_kiuini()

pQueue MMG2D_kiuini ( MMG5_pMesh  mesh,
int  nbel,
double  declic,
int  base 
)

◆ MMG2D_kiupop()

int MMG2D_kiupop ( pQueue  q)

◆ MMG2D_kiuput()

int MMG2D_kiuput ( pQueue  q,
int  iel 
)

◆ MMG2D_lencurv_ani()

double MMG2D_lencurv_ani ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
int   
)

◆ MMG2D_lencurv_iso()

double MMG2D_lencurv_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  ip1,
int  ip2 
)

Calculate length of a curve in the considered isotropic metric

◆ MMG2D_locateEdge()

int MMG2D_locateEdge ( MMG5_pMesh  mesh,
int  ia,
int  ib,
int *  kdep,
int *  list 
)
Parameters
meshpointer toward the mesh
iaindex of first extremity of the edge
ibindex of second extremity of the edge
kdeppointer toward the index of the first element intersecting the edge
listpointer toward the list of elts intersected by the edge
Returns
4 if the edge exist in the mesh, 0 if fail, ??? otherwise

Calculate the list of all the triangles intersected by edge (ia,ib), starting from kdep = one triangle in the ball of ia; list starts at index 0 (and ends at index lon-1). It stores 3*k + iare, where k is an intersected tria and iare is an intersected edge.

prod1, prod2 and prod3 allow to localize the edge regarding the tria:

  • if all are >0, the edge doesn't cross the tria (same sign for all areas)
  • if 2 are negative and 1 is positive, the edge intersect 2 triangle edges
  • if 2 are 0, the edge pass through 1 of the tria vertices
  • if 3 are 0, the edge coincide with 1 of the tria edges

ia-ib intersect 2 triangle edges => 2 products are <0, 1 is >0

Here is the call graph for this function:

◆ MMG2D_memOption()

int MMG2D_memOption ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure
Returns
0 if fail, 1 otherwise

memory repartition for the -m option

Here is the call graph for this function:

◆ MMG2D_mmg2d1()

int MMG2D_mmg2d1 ( MMG5_pMesh  ,
MMG5_pSol   
)

◆ MMG2D_mmg2d1n()

int MMG2D_mmg2d1n ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the sol structure.
Returns
1 if success, 0 if strongly fail.

Mesh adaptation – new version of mmg2d1.c

Here is the call graph for this function:

◆ MMG2D_mmg2d2()

int MMG2D_mmg2d2 ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the sol structure.
Returns
0 if fail, 1 if success.

Mesh triangulation.

Here is the call graph for this function:

◆ MMG2D_mmg2d6()

int MMG2D_mmg2d6 ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_mmg2d9()

int MMG2D_mmg2d9 ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
MMG5_pSol  met 
)
Parameters
meshmesh structure
dispdisplacement structure
metmetric structure
Returns
0 if fail, 1 if success

Lagrangian node displacement and meshing. Code for options: info.lag >= 0 -> displacement, info.lag > 0 -> displacement+remeshing with swap and moves info.lag > 1 -> displacement+remeshing with split+collapse+swap+move

Here is the call graph for this function:

◆ MMG2D_movedgpt()

int MMG2D_movedgpt ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  ilist,
int *  list,
char  improve 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric structure.
listpointer toward the ball of the point.
ilistsize of the ball.
improveforce the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality.
Returns
0 if we can't move the point (or if we fail), 1 if we can.

Relocate boundary vertex whose ball is passed; routine works both in the isotropic and anisotropic case

Here is the call graph for this function:

◆ MMG2D_movintpt()

int MMG2D_movintpt ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  ilist,
int *  list,
char  improve 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric structure.
listpointer toward the ball of the point.
ilistsize of the ball.
improveforce the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality.
Returns
0 if we can't move the point (or if we fail), 1 if we can.

Relocate internal vertex whose ball is passed.

Here is the call graph for this function:

◆ MMG2D_movintpt_ani()

int MMG2D_movintpt_ani ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
int *  ,
char   
)

◆ MMG2D_movtri()

int MMG2D_movtri ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_newElt()

int MMG2D_newElt ( MMG5_pMesh  mesh)

◆ MMG2D_newPt()

int MMG2D_newPt ( MMG5_pMesh  mesh,
double  c[2],
int16_t  tag 
)

◆ MMG2D_norver()

int MMG2D_norver ( MMG5_pMesh  mesh,
int  ref 
)
Parameters
meshpointer toward the mesh structure
refreference of the boundary to analyze (analyze all the boundaries if MMG5_UNSET)
Returns
1 if success, 0 if fail.

Calculate normal vectors at vertices of the mesh.

Mark the points that we don't want to analyze

Here is the call graph for this function:

◆ MMG2D_outqua()

int MMG2D_outqua ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
Returns
0 if the worst element has a nul quality, 1 otherwise.

Print histogram of mesh qualities.

Here is the call graph for this function:

◆ MMG2D_pack()

int MMG2D_pack ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the solution structure.
Returns
0 if memory problem (uncomplete mesh), 1 otherwise.

Pack the mesh and metric and create explicitly all the mesh structures (edges).

Here is the call graph for this function:

◆ MMG2D_parsop()

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

Read parameter file DEFAULT.mmg2d

◆ MMG2D_prilen()

int MMG2D_prilen ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_quickcal()

double MMG2D_quickcal ( MMG5_pMesh  mesh,
MMG5_pTria  pt 
)
Parameters
meshpointer toward the mesh
ptpointer toward the tria
Returns
the oriented area of the triangle.

Compute oriented area of tria pt

Here is the call graph for this function:

◆ MMG2D_regnor()

int MMG2D_regnor ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh
Returns
0 if fail, 1 if success

Regularize normal vectors at boundary non singular edges with a Laplacian / antilaplacian smoothing

Here is the call graph for this function:

◆ MMG2D_resetRef()

int MMG2D_resetRef ( MMG5_pMesh  )
Here is the call graph for this function:

◆ MMG2D_savedisp_db()

int MMG2D_savedisp_db ( MMG5_pMesh  mesh,
MMG5_pSol  ,
char *  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_savemesh_db()

int MMG2D_savemesh_db ( MMG5_pMesh  ,
char *  ,
char   
)

◆ MMG2D_savemet_db()

int MMG2D_savemet_db ( MMG5_pMesh  ,
MMG5_pSol  ,
char *  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_savenor_db()

int MMG2D_savenor_db ( MMG5_pMesh  ,
char *  ,
char   
)
Here is the call graph for this function:

◆ MMG2D_scaleMesh()

int MMG2D_scaleMesh ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the metric or solution structure.
Returns
1 if success, 0 if fail (computed bounding box too small or one af the anisotropic input metric is not valid).

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

Here is the call graph for this function:

◆ MMG2D_Set_commonFunc()

static void MMG2D_Set_commonFunc ( )
inlinestatic

Set common pointer functions between mmgs and mmg2d to the matching mmg2d functions.

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

◆ MMG2D_set_metricAtPointsOnReqEdges()

int MMG2D_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:

◆ MMG2D_setadj()

int MMG2D_setadj ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh
Returns
1 if success, 0 if fail

Set tags GEO and REF to triangles and points by traveling the mesh; count number of subdomains or connected components

Here is the call graph for this function:

◆ MMG2D_setMeshSize_alloc()

int MMG2D_setMeshSize_alloc ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.
Returns
0 if failed, 1 otherwise.

Allocation of the array fields of the mesh.

◆ MMG2D_setref_ls()

int MMG2D_setref_ls ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_settagtriangles()

int MMG2D_settagtriangles ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the call graph for this function:

◆ MMG2D_singul()

int MMG2D_singul ( MMG5_pMesh  mesh,
int  ref 
)
Parameters
meshpointer toward the mesh structure
refreference of the boundary to analyze (analyze all the boundaries if MMG5_UNSET)
Returns
1 if success, 0 if fail.

Identify singularities in the mesh.

Mark the points that we don't want to analyze

Singularity identification

Here is the call graph for this function:

◆ MMG2D_snapval()

int MMG2D_snapval ( MMG5_pMesh  ,
MMG5_pSol  ,
double *   
)
Here is the call graph for this function:

◆ MMG2D_solTruncatureForOptim()

void MMG2D_solTruncatureForOptim ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer 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.

◆ MMG2D_split1()

int MMG2D_split1 ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Split 1 edge of triangle k

Here is the call graph for this function:

◆ MMG2D_split1_sim()

int MMG2D_split1_sim ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Simulate the split of one edge in triangle k

Here is the call graph for this function:

◆ MMG2D_split1b()

int MMG2D_split1b ( MMG5_pMesh  mesh,
int  k,
char  i,
int  ip 
)

\parma mesh pointer toward the mesh

Parameters
kindex of the tria to split
ilocal index of the edge to split
ipglobal index of the new point
Returns
1 if success, 0 if fail

Effective splitting of edge i in tria k: point ip is introduced and the adjacency structure in the mesh is preserved

Here is the call graph for this function:

◆ MMG2D_split2()

int MMG2D_split2 ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Split 2 edges of triangle k

Here is the call graph for this function:

◆ MMG2D_split2_sim()

int MMG2D_split2_sim ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Simulate the split of two edges in triangle k

Here is the call graph for this function:

◆ MMG2D_split3()

int MMG2D_split3 ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Split the three edges of triangle k

Here is the call graph for this function:

◆ MMG2D_split3_sim()

int MMG2D_split3_sim ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
int  k,
int  vx[3] 
)
Parameters
meshpointer toward the mesh
solpointer toward the metric
ktriangle index
vxlist of new point indices for each edge
Returns
0 if fail, 1 if success

Simulate the split of three edges in triangle k

Here is the call graph for this function:

◆ MMG2D_splitbar()

int MMG2D_splitbar ( MMG5_pMesh  mesh,
int  k,
int  ip 
)
Parameters
meshpointer toward the mesh
kindex of the tria to split
ipglobal index of the new point
Returns
1 if success, 0 if fail

Insert the point ip inside the tria k

Here is the call graph for this function:

◆ MMG2D_sum_reqEdgeLengthsAtPoint()

int MMG2D_sum_reqEdgeLengthsAtPoint ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTria  pt,
char  i 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
pttetra to process.
iindex of the edge of the tetra pt that we process.
Returns
1 if success, 0 if fail.

Compute the euclidean length of the edge i of the tria pt, 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:

◆ MMG2D_swapar()

int MMG2D_swapar ( MMG5_pMesh  ,
int  ,
char   
)

◆ MMG2D_swapdelone()

int MMG2D_swapdelone ( MMG5_pMesh  ,
MMG5_pSol  ,
int  ,
char  ,
double  ,
int *   
)
Here is the call graph for this function:

◆ MMG2D_swpmsh()

int MMG2D_swpmsh ( MMG5_pMesh  ,
MMG5_pSol  ,
int   
)
Here is the call graph for this function:

◆ MMG2D_unscaleMesh()

int MMG2D_unscaleMesh ( MMG5_pMesh  ,
MMG5_pSol   
)

◆ MMG2D_velextLS()

int MMG2D_velextLS ( MMG5_pMesh  ,
MMG5_pSol   
)
Here is the caller graph for this function:

◆ MMG2D_zaldy()

int MMG2D_zaldy ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure
Returns
0 if fail, 1 otherwise

allocate main structure

Here is the call graph for this function:

◆ MMG5_delEdge()

void MMG5_delEdge ( MMG5_pMesh  mesh,
int  iel 
)

◆ MMG5_getnElt()

int MMG5_getnElt ( MMG5_pMesh  mesh,
int  n 
)

◆ MMG5_interpmet22()

int MMG5_interpmet22 ( MMG5_pMesh  ,
double *  ,
double *  ,
double  ,
double *   
)

◆ MMG5_memSize()

size_t MMG5_memSize ( void  )
Returns
the available memory size of the computer.

Compute the available memory size of the computer.

◆ MMG5_mmg2dChkmsh()

int MMG5_mmg2dChkmsh ( MMG5_pMesh  mesh,
int  severe,
int  base 
)
Parameters
meshpointer toward the mesh structure.
severelevel of performed check
baseunused argument.
Returns
0 if fail, 1 if success.

Check the mesh validity

Here is the call graph for this function:

◆ optlen_ani()

int optlen_ani ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
double  declic,
int  base 
)

◆ optlen_iso()

int optlen_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
double  declic,
int  base 
)

◆ optlen_iso_bar()

int optlen_iso_bar ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
double  declic,
int  base 
)

◆ simred()

int simred ( double *  m1,
double *  m2,
double *  m 
)

Variable Documentation

◆ MMG2D_caltri

double(* MMG2D_caltri) (MMG5_pMesh,MMG5_pSol,MMG5_pTria)

◆ MMG2D_defsiz

int(* MMG2D_defsiz) (MMG5_pMesh,MMG5_pSol)

◆ MMG2D_gradsiz

int(* MMG2D_gradsiz) (MMG5_pMesh,MMG5_pSol)

◆ MMG2D_gradsizreq

int(* MMG2D_gradsizreq) (MMG5_pMesh,MMG5_pSol)

◆ MMG2D_iare

const int MMG2D_iare[3][2] = {{1,2},{2,0},{0,1}}
static

◆ MMG2D_idir

const unsigned int MMG2D_idir[5] = {0,1,2,0,1}
static

◆ MMG2D_intmet

int(* MMG2D_intmet) (MMG5_pMesh,MMG5_pSol,int,char,int,double)

◆ MMG2D_inxt

const unsigned int MMG2D_inxt[5] = {1,2,0,1,2}
static

◆ MMG2D_iopp

const int MMG2D_iopp[3][2] = {{1,2},{0,2},{0,1}}
static

◆ MMG2D_lencurv

double(* MMG2D_lencurv) (MMG5_pMesh,MMG5_pSol,int,int)

◆ MMG2D_optlen

int(* MMG2D_optlen) (MMG5_pMesh,MMG5_pSol,double,int)