Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
Macros | Functions | Variables
libmmg3d_private.h File Reference
#include "libmmgcommon_private.h"
#include "PRoctree_3d_private.h"
Include dependency graph for libmmg3d_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define MMG5_RETURN_AND_FREE(mesh, met, ls, disp, val)
 
#define MMG3D_POINT_REALLOC(mesh, sol, ip, wantedGap, law, o, tag, src)
 
#define MMG3D_TETRA_REALLOC(mesh, jel, wantedGap, law)
 
#define MMG3D_ALPHAD   20.7846096908265 /* 12*sqrt(3) */
 
#define MMG3D_LLONG   2.5
 
#define MMG3D_LSHRT   0.3
 
#define MMG3D_LOPTL   1.3
 
#define MMG3D_LOPTS   0.6
 
#define MMG3D_SWAP06   0.0288675 /* 0.6/MMG3D_ALPHAD */
 
#define MMG3D_SSWAPIMPROVE   1.053
 
#define MMG3D_LSWAPIMPROVE   1.1
 
#define MMG3D_DET2VOL   0.1666666666666667 /* 1/6 */
 
#define MMG3D_BADKAL   0.2
 
#define MMG3D_MAXKAL   1.
 
#define MMG3D_NPMAX   1000000
 
#define MMG3D_NAMAX   200000
 
#define MMG3D_NTMAX   2000000
 
#define MMG3D_NEMAX   6000000
 
#define MMG3D_SHORTMAX   0x7fff
 
#define MMG3D_VOLFRAC   1.e-5
 
#define MMG3D_MOVSTEP   0.1
 

Functions

int MMG3D_tetraQual (MMG5_pMesh mesh, MMG5_pSol met, int8_t metRidTyp)
 
int MMG5_directsurfball (MMG5_pMesh mesh, MMG5_int ip, MMG5_int *list, int ilist, double n[3])
 
int MMG3D_Init_mesh_var (va_list argptr)
 
int MMG3D_Free_all_var (va_list argptr)
 
int MMG3D_Free_structures_var (va_list argptr)
 
int MMG3D_Free_names_var (va_list argptr)
 
void MMG3D_Free_arrays (MMG5_pMesh *, MMG5_pSol *, MMG5_pSol *, MMG5_pSol *, MMG5_pSol *)
 
MMG5_int MMG3D_newPt (MMG5_pMesh mesh, double c[3], int16_t tag, MMG5_int src)
 
MMG5_int MMG3D_newElt (MMG5_pMesh mesh)
 
int MMG3D_delElt (MMG5_pMesh mesh, MMG5_int iel)
 
void MMG3D_delPt (MMG5_pMesh mesh, MMG5_int ip)
 
int MMG3D_zaldy (MMG5_pMesh mesh)
 
void MMG5_freeXTets (MMG5_pMesh mesh)
 
void MMG5_freeXPrisms (MMG5_pMesh mesh)
 
void MMG3D_Free_topoTables (MMG5_pMesh mesh)
 
int MMG5_chkBdryTria (MMG5_pMesh mesh)
 
int MMG5_mmg3dBezierCP (MMG5_pMesh mesh, MMG5_Tria *pt, MMG5_pBezier pb, int8_t ori)
 
int MMG5_BezierTgt (double c1[3], double c2[3], double n1[3], double n2[3], double t1[3], double t2[3])
 
double MMG5_BezierGeod (double c1[3], double c2[3], double t1[3], double t2[3])
 
int MMG3D_bezierInt (MMG5_pBezier pb, double uv[2], double o[3], double no[3], double to[3])
 
int MMG5_BezierReg (MMG5_pMesh mesh, MMG5_int ip0, MMG5_int ip1, double s, double v[3], double *o, double *no)
 
int MMG5_BezierRef (MMG5_pMesh mesh, MMG5_int ip0, MMG5_int ip1, double s, double *o, double *no, double *to)
 
int MMG5_BezierEdge (MMG5_pMesh mesh, MMG5_int ip0, MMG5_int ip1, double b0[3], double b1[3], int8_t isrid, double v[3])
 
int MMG5_BezierRidge (MMG5_pMesh mesh, MMG5_int ip0, MMG5_int ip1, double s, double *o, double *no1, double *no2, double *to)
 
int MMG5_BezierNom (MMG5_pMesh mesh, MMG5_int ip0, MMG5_int ip1, double s, double *o, double *no, double *to)
 
int MMG5_norface (MMG5_pMesh mesh, MMG5_int k, int iface, double v[3])
 
int MMG3D_findEdge (MMG5_pMesh, MMG5_pTetra, MMG5_int, MMG5_int, MMG5_int, int, int8_t *, int8_t *)
 
int MMG5_boulernm (MMG5_pMesh mesh, MMG5_Hash *hash, MMG5_int start, int ip, MMG5_int *ng, MMG5_int *nr, MMG5_int *nm)
 
int MMG5_boulenm (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, double n[3], double t[3])
 
int MMG5_boulenmInt (MMG5_pMesh mesh, MMG5_int start, int ip, double t[3])
 
int MMG5_boulevolp (MMG5_pMesh mesh, MMG5_int start, int ip, int64_t *list)
 
int MMG5_boulesurfvolpNom (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, int64_t *listv, int *ilistv, MMG5_int *lists, int *ilists, MMG5_int *refmin, MMG5_int *refplus, int isnm)
 
int MMG5_boulesurfvolp (MMG5_pMesh mesh, MMG5_int start, int ip, int iface, int64_t *listv, int *ilistv, MMG5_int *lists, int *ilists, int isnm)
 
int MMG5_bouletrid (MMG5_pMesh, MMG5_int, int, int, int *, MMG5_int *, int *, MMG5_int *, MMG5_int *, MMG5_int *)
 
int MMG5_startedgsurfball (MMG5_pMesh mesh, MMG5_int nump, MMG5_int numq, MMG5_int *list, int ilist)
 
int MMG5_srcbdy (MMG5_pMesh mesh, MMG5_int start, int ia)
 
int MMG5_coquil (MMG5_pMesh mesh, MMG5_int start, int ia, int64_t *list, int8_t *)
 
int MMG5_coquilface (MMG5_pMesh mesh, MMG5_int start, int8_t iface, int, int64_t *, MMG5_int *, MMG5_int *, int)
 
int MMG3D_coquilFaceFirstLoop (MMG5_pMesh mesh, MMG5_int start, MMG5_int na, MMG5_int nb, int8_t iface, int8_t ia, int64_t *list, int *ilist, MMG5_int *it1, MMG5_int *it2, MMG5_int *piv, MMG5_int *adj, int8_t *hasadja, int *nbdy, int silent)
 
void MMG3D_coquilFaceSecondLoopInit (MMG5_pMesh mesh, MMG5_int piv, int8_t *iface, int8_t *i, int64_t *list, int *ilist, MMG5_int *it1, MMG5_int *pradj, MMG5_int *adj)
 
void MMG5_coquilFaceErrorMessage (MMG5_pMesh mesh, MMG5_int k1, MMG5_int k2)
 
int16_t MMG5_coquilTravel (MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int *, MMG5_int *, int8_t *, int8_t *)
 
int16_t MMG5_openCoquilTravel (MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int *, MMG5_int *, int8_t *, int8_t *)
 
int MMG5_settag (MMG5_pMesh, MMG5_int, int, int16_t, int)
 
int MMG5_deltag (MMG5_pMesh, MMG5_int, int, int16_t)
 
int MMG5_setNmTag (MMG5_pMesh mesh, MMG5_Hash *hash)
 
int MMG5_chkcol_int (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, int8_t, int64_t *, int, int8_t)
 
int MMG5_chkcol_bdy (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, int8_t, int64_t *, int, MMG5_int *, int, MMG5_int, MMG5_int, int8_t, int, int8_t)
 
int MMG3D_chkmanicoll (MMG5_pMesh, MMG5_int, int, int, MMG5_int, MMG5_int, MMG5_int, MMG5_int, int8_t, int8_t)
 
int MMG3D_chkmani (MMG5_pMesh mesh)
 
MMG5_int MMG5_colver (MMG5_pMesh, MMG5_pSol, int64_t *, int, int8_t, int8_t)
 
int MMG3D_analys (MMG5_pMesh mesh)
 
void MMG3D_set_reqBoundaries (MMG5_pMesh mesh)
 
int MMG5_chkVertexConnectedDomains (MMG5_pMesh mesh)
 
int MMG5_norver (MMG5_pMesh mesh)
 
int MMG3D_regver (MMG5_pMesh mesh)
 
int MMG5_setadj (MMG5_pMesh mesh)
 
int MMG5_setdhd (MMG5_pMesh mesh)
 
int MMG5_singul (MMG5_pMesh mesh)
 
int MMG3D_nmgeom (MMG5_pMesh mesh)
 
int MMG5_paktet (MMG5_pMesh mesh)
 
MMG5_int MMG5_hashGetFace (MMG5_Hash *, MMG5_int, MMG5_int, MMG5_int)
 
int MMG3D_hashTria (MMG5_pMesh mesh, MMG5_Hash *)
 
int MMG3D_hashPrism (MMG5_pMesh mesh)
 
int MMG5_hashPop (MMG5_Hash *hash, MMG5_int a, MMG5_int b)
 
int MMG5_hPop (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int *ref, int16_t *tag)
 
int MMG5_hTag (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, int16_t tag)
 
int MMG5_hGet (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int *ref, int16_t *tag)
 
int MMG5_hEdge (MMG5_pMesh mesh, MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, int16_t tag)
 
int MMG5_hNew (MMG5_pMesh mesh, MMG5_HGeom *hash, MMG5_int hsiz, MMG5_int hmax)
 
int MMG5_hGeom (MMG5_pMesh mesh)
 
int MMG5_bdryIso (MMG5_pMesh)
 
int MMG5_bdrySet (MMG5_pMesh)
 
int MMG5_bdryUpdate (MMG5_pMesh)
 
int MMG5_bdryPerm (MMG5_pMesh)
 
int MMG5_chkfemtopo (MMG5_pMesh mesh)
 
int MMG5_cntbdypt (MMG5_pMesh mesh, MMG5_int nump)
 
size_t MMG5_memSize (void)
 
int MMG3D_memOption (MMG5_pMesh mesh)
 
int MMG3D_memOption_memSet (MMG5_pMesh mesh)
 
int MMG3D_memOption_memRepartition (MMG5_pMesh mesh)
 
int MMG5_mmg3d1_pattern (MMG5_pMesh, MMG5_pSol, MMG5_int *)
 
int MMG5_mmg3d1_delone (MMG5_pMesh, MMG5_pSol, MMG5_int *)
 
int MMG3D_mmg3d2 (MMG5_pMesh, MMG5_pSol, MMG5_pSol)
 
int MMG3D_resetRef_ls (MMG5_pMesh mesh)
 
int MMG3D_resetRef_lssurf (MMG5_pMesh mesh)
 
int MMG3D_setref_ls (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG3D_setref_lssurf (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG3D_snpval_ls (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG3D_snpval_lssurf (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG3D_cuttet_ls (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met)
 
int MMG3D_cuttet_lssurf (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met)
 
int MMG3D_update_xtetra (MMG5_pMesh mesh)
 
int MMG5_mmg3dChkmsh (MMG5_pMesh, int, MMG5_int)
 
int MMG3D_setMeshSize_initData (MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int, MMG5_int, MMG5_int, MMG5_int)
 
int MMG3D_setMeshSize_alloc (MMG5_pMesh)
 
int MMG3D_split1_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split1 (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t metRidTyp)
 
int MMG5_split1b (MMG5_pMesh, MMG5_pSol, int64_t *, int, MMG5_int, int, int8_t, int8_t)
 
MMG5_int MMG5_splitedg (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int iel, int iar, double crit)
 
int MMG3D_split2sf_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split2sf (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split2_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split2 (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split3_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split3 (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split3cone_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split3cone (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split3op_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split3op (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split4sf_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split4sf (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split4op_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split4op (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split5_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split5 (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
int MMG3D_split6_sim (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6])
 
int MMG5_split6 (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], int8_t)
 
MMG5_int MMG5_split4bar (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, int8_t)
 
int MMG3D_simbulgept (MMG5_pMesh mesh, MMG5_pSol met, int64_t *list, int ilist, MMG5_int)
 
int MMG3D_optlap (MMG5_pMesh, MMG5_pSol)
 
int MMG5_movintpt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, int)
 
int MMG3D_movnormal_iso (MMG5_pMesh, MMG5_pSol, MMG5_int, int)
 
int MMG5_movintptLES_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree, MMG5_int *, int, int)
 
int MMG5_movintpt_ani (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, int)
 
int MMG3D_rotate_surfacicBall (MMG5_pMesh, MMG5_int *, int, MMG5_int, double r[3][3], double *)
 
int MMG3D_movbdyregpt_geom (MMG5_pMesh, MMG5_int *, const MMG5_int, const MMG5_int, double[3], double[3], double[3], double[3])
 
int MMG5_movbdyregpt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int, int)
 
int MMG5_movbdyregpt_ani (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int, int)
 
int MMG3D_curveEndingPts (MMG5_pMesh, MMG5_int *, int, const int16_t, MMG5_int, MMG5_int *, MMG5_int *)
 
int MMG3D_movbdycurvept_chckAndUpdate (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, int improve, MMG5_pPoint p0, MMG5_int ip0, uint8_t isrid, double o[3], double no[3], double no2[3], double to[3])
 
int MMG3D_movbdycurvept_newPosForSimu (MMG5_pMesh, MMG5_pPoint, MMG5_int, MMG5_int, MMG5_int, double, double, uint8_t, const double, double[3], double[3], double[3], double[3], const int16_t)
 
int MMG5_movbdyrefpt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG5_movbdyrefpt_ani (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG5_movbdynompt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG5_movbdynomintpt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, int)
 
int MMG5_movbdynompt_ani (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG5_movbdyridpt_iso (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG5_movbdyridpt_ani (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int64_t *, int, MMG5_int *, int, int)
 
int MMG3D_movv_ani (MMG5_pMesh, MMG5_pSol, MMG5_int, int)
 
int MMG3D_movv_iso (MMG5_pMesh, MMG5_pSol, MMG5_int, int)
 
int MMG3D_normalAdjaTri (MMG5_pMesh, MMG5_int, int8_t, int, double n[3])
 
int MMG3D_normalAndTangent_at_sinRidge (MMG5_pMesh, MMG5_int, int, int, double[3], double[3], double[3])
 
int MMG5_chkswpbdy (MMG5_pMesh, MMG5_pSol, int64_t *, int, MMG5_int, MMG5_int, int8_t)
 
int MMG5_swpbdy (MMG5_pMesh, MMG5_pSol, int64_t *, int, MMG5_int, MMG3D_pPROctree, int8_t)
 
int MMG5_swpgen (MMG5_pMesh, MMG5_pSol, MMG5_int, int, int64_t *, MMG3D_pPROctree, int8_t)
 
MMG5_int MMG5_chkswpgen (MMG5_pMesh, MMG5_pSol, MMG5_int, int, int *, int64_t *, double, int8_t)
 
int MMG3D_swap23 (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, int, int, MMG5_int, int)
 
int MMG5_srcface (MMG5_pMesh mesh, int n0, int n1, int n2)
 
int MMG5_chkptonbdy (MMG5_pMesh, MMG5_int)
 
double MMG5_orcal_poi (double a[3], double b[3], double c[3], double d[3])
 
int MMG5_countelt (MMG5_pMesh mesh, MMG5_pSol sol, double *weightelt, long *npcible)
 
MMG5_int MMG3D_opttyp (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, MMG5_int)
 
int MMG3D_swpItem (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, MMG5_int, int)
 
int MMG3D_splitItem (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, MMG5_int, int, double)
 
int MMG3D_optbdry (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, MMG5_int)
 
int MMG3D_movetetrapoints (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, MMG5_int)
 
int MMG5_trydisp (MMG5_pMesh, double *, short)
 
int MMG5_dichodisp (MMG5_pMesh, double *)
 
int MMG5_lapantilap (MMG5_pMesh, double *)
 
int MMG5_ppgdisp (MMG5_pMesh, double *)
 
int MMG5_denoisbdy (MMG5_pMesh)
 
int MMG3D_displayQualHisto (MMG5_int, double, double, double, MMG5_int, MMG5_int, MMG5_int, MMG5_int his[5], MMG5_int, int, int)
 
int MMG3D_displayQualHisto_internal (MMG5_int, double, double, double, MMG5_int, MMG5_int, MMG5_int, MMG5_int his[5], MMG5_int, int, int)
 
void MMG3D_computeInqua (MMG5_pMesh, MMG5_pSol, MMG5_int *, double *, double *, double *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int his[5], int)
 
int MMG3D_inqua (MMG5_pMesh mesh, MMG5_pSol met)
 
void MMG3D_computeOutqua (MMG5_pMesh, MMG5_pSol, MMG5_int *, double *, double *, double *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int his[5], MMG5_int *, int)
 
int MMG3D_outqua (MMG5_pMesh mesh, MMG5_pSol met)
 
void MMG3D_computeLESqua (MMG5_pMesh, MMG5_pSol, MMG5_int *, double *, double *, double *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int his[5], int)
 
int MMG3D_computePrilen (MMG5_pMesh, MMG5_pSol, double *, double *, double *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int *, MMG5_int *, int8_t, double **, MMG5_int[9])
 
int MMG3D_prilen (MMG5_pMesh mesh, MMG5_pSol met, int8_t)
 
int MMG5_intridmet (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int, double, double *, double *)
 
int MMG5_intregmet (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, double, double *)
 
int MMG5_intvolmet (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, double, double *)
 
int MMG3D_localParamReg (MMG5_pMesh, MMG5_int, int64_t *, int, MMG5_int *, int, double *, double *, double *)
 
int MMG3D_localParamNm (MMG5_pMesh, MMG5_int, int, int, double *, double *, double *)
 
int MMG3D_mark_packedPoints (MMG5_pMesh mesh, MMG5_int *np, MMG5_int *nc)
 
int MMG3D_pack_tetraAndAdja (MMG5_pMesh mesh)
 
int MMG3D_pack_tetra (MMG5_pMesh mesh)
 
int MMG3D_pack_prismsAndQuads (MMG5_pMesh mesh)
 
int MMG3D_pack_sol (MMG5_pMesh mesh, MMG5_pSol sol)
 
int MMG3D_update_eltsVertices (MMG5_pMesh mesh)
 
int MMG3D_pack_pointArray (MMG5_pMesh mesh)
 
MMG5_int MMG3D_pack_points (MMG5_pMesh mesh)
 
void MMG3D_unset_reqBoundaries (MMG5_pMesh mesh)
 
int MMG3D_packMesh (MMG5_pMesh, MMG5_pSol, MMG5_pSol)
 
MMG5_int MMG3D_bdryBuild (MMG5_pMesh)
 
int MMG3D_printErrorMat (int8_t symmat, double *m, double *mr)
 
int MMG3D_printEigenv (double dm[3], double vp[3][3])
 
double MMG3D_vfrac (MMG5_pMesh, MMG5_pSol, MMG5_int, int)
 
int MMG3D_rmc (MMG5_pMesh, MMG5_pSol)
 
int MMG5_isbr (MMG5_pMesh, MMG5_int)
 
void MMG3D_keep_only1Subdomain (MMG5_pMesh mesh, int nsd)
 
MMG5_int MMG3D_indElt (MMG5_pMesh mesh, MMG5_int kel)
 
MMG5_int MMG3D_indPt (MMG5_pMesh mesh, MMG5_int kp)
 
void MMG5_printTetra (MMG5_pMesh mesh, char *fileName)
 
void MMG3D_chkpointtag (MMG5_pMesh mesh)
 
void MMG3D_chkmeshedgestags (MMG5_pMesh mesh)
 
int MMG3D_chk_shellEdgeTag (MMG5_pMesh mesh, MMG5_int start, int8_t ia, int16_t tag, MMG5_int ref)
 
int MMG5_mmg3dRenumbering (int, MMG5_pMesh, MMG5_pSol, MMG5_pSol, MMG5_int *)
 
int MMG5_meancur (MMG5_pMesh mesh, MMG5_int np, double c[3], int ilist, MMG5_int *list, double h[3])
 
double MMG5_surftri (MMG5_pMesh, int, int)
 
double MMG5_timestepMCF (MMG5_pMesh, double)
 
int MMG5_bdyMCF (MMG5_pMesh)
 
double MMG5_volint (MMG5_pMesh)
 
double MMG5_estavglen (MMG5_pMesh)
 
int MMG5_stiffelt (MMG5_pMesh, int, double *, double *)
 
int MMG5_mmg3d3 (MMG5_pMesh, MMG5_pSol, MMG5_pSol, MMG5_int **)
 
int MMG5_velextLS (MMG5_pMesh, MMG5_pSol)
 
int MMG5_delone (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ip, int64_t *list, int ilist)
 
int MMG5_cavity_iso (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int iel, int ip, int64_t *list, int lon, double volmin)
 
int MMG5_cavity_ani (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int iel, int ip, int64_t *list, int lon, double volmin)
 
int MMG5_cenrad_iso (MMG5_pMesh mesh, double *ct, double *c, double *rad)
 
int MMG5_cenrad_ani (MMG5_pMesh mesh, double *ct, double *m, double *c, double *rad)
 
void MMG3D_set_geom (MMG5_pMesh, MMG5_pPoint, int16_t, MMG5_int, MMG5_int, double[3], double[3], double[3])
 
void MMG5_tet2tri (MMG5_pMesh mesh, MMG5_int k, int8_t ie, MMG5_Tria *ptt)
 
int MMG3D_dichoto (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int *vx)
 
int MMG3D_dichoto1b (MMG5_pMesh mesh, MMG5_pSol met, int64_t *list, int ret, MMG5_int)
 
int8_t MMG5_chkedg (MMG5_pMesh mesh, MMG5_Tria *pt, int8_t ori, double, double, int)
 
void MMG3D_find_bdyface_from_edge (MMG5_pMesh, MMG5_pTetra, int8_t, int8_t *, int8_t *, int8_t *, int8_t *, MMG5_int *, MMG5_int *, MMG5_pPoint *, MMG5_pPoint *)
 
int8_t MMG3D_build_bezierEdge (MMG5_pMesh, MMG5_int, int8_t, int8_t, int8_t, MMG5_pxTetra, MMG5_int, MMG5_int, MMG5_pPoint, MMG5_pPoint, MMG5_int *, int16_t *, double[3], double[3], double[3], double[3], int64_t *, int *)
 
int MMG3D_adpcoledg (MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree *, MMG5_int, int8_t, double, MMG5_int *)
 
int MMG3D_splsurfedge (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_pTetra, MMG5_pxTetra, int8_t, int8_t, int8_t, int *)
 
int MMG5_anatet (MMG5_pMesh mesh, MMG5_pSol met, int8_t typchk, int patternMode)
 
MMG5_int MMG5_movtet (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, double clickSurf, double clickVol, int moveVol, int improveSurf, int improveVolSurf, int improveVol, int maxit, MMG5_int testmark)
 
MMG5_int MMG5_swpmsh (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int)
 
MMG5_int MMG5_swptet (MMG5_pMesh mesh, MMG5_pSol met, double, double, MMG3D_pPROctree, int, MMG5_int)
 
void MMG5_Init_parameters (MMG5_pMesh mesh)
 
double MMG5_caltet33_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
 
double MMG5_lenedgCoor_iso (double *, double *, double *, double *)
 Compute edge length from edge's coordinates. More...
 
int MMG3D_doSol_iso (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_doSol_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG5_intmet_iso (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int, double)
 
int MMG5_intmet_ani (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int, double)
 
int MMG3D_intmet33_ani (MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int, double)
 
int MMG5_interp4bar_ani (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int, double *)
 
int MMG5_interp4bar33_ani (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int, double *)
 
int MMG5_interp4bar_iso (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int, double *)
 
int MMG3D_defsiz_iso (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_defsiz_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_gradsiz_iso (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_gradsiz_ani (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_gradsizreq_iso (MMG5_pMesh, MMG5_pSol)
 
int MMG3D_gradsizreq_ani (MMG5_pMesh, MMG5_pSol)
 
double MMG5_meansizreg_iso (MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int *, int, double, double)
 
int MMG3D_chk4ridVertices (MMG5_pMesh mesh, MMG5_pTetra pt)
 
int MMG5_moymet (MMG5_pMesh, MMG5_pSol, MMG5_pTetra, double *)
 
int MMG3D_set_metricAtPointsOnReqEdges (MMG5_pMesh, MMG5_pSol, int8_t)
 
void MMG3D_mark_pointsOnReqEdge_fromTetra (MMG5_pMesh mesh)
 
int MMG3D_openMesh (int imprim, const char *filename, FILE **inm, int *bin, char *, char *)
 
int MMG3D_loadMesh_opened (MMG5_pMesh mesh, FILE *inm, int bin)
 
static void MMG5_warnOrientation (MMG5_pMesh mesh)
 

Variables

static const uint8_t MMG5_inxt3 [7] = { 1,2,3,0,1,2,3 }
 next vertex of tetra: {1,2,3,0,1,2,3} More...
 
static const uint8_t MMG5_iprv3 [7] = { 3,0,1,2,3,0,1 }
 previous vertex of tetra: {3,0,1,2,3,0,1} More...
 
static const uint8_t MMG5_idir [4][3] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} }
 idir[i]: vertices of face opposite to vertex i More...
 
static const int8_t MMG5_idirinv [4][4] = {{-1,0,1,2},{0,-1,2,1},{0,1,-1,2},{0,2,1,-1}}
 
static const int8_t MMG5_iarf [4][3] = { {5,4,3}, {5,1,2}, {4,2,0}, {3,0,1} }
 iarf[i]: edges of face opposite to vertex i More...
 
static const int8_t MMG5_iarfinv [4][6] = { {-1,-1,-1,2,1,0}, {-1,1,2,-1,-1,0},{2,-1,1,-1,0,-1},{1,2,-1,0,-1,-1}}
 num of the j^th edge in the i^th face More...
 
static const uint8_t MMG5_iare [6][2] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} }
 vertices of extremities of the edges of the tetra More...
 
static const uint8_t MMG5_ifar [6][2] = { {2,3}, {1,3}, {1,2}, {0,3}, {0,2}, {0,1} }
 ifar[i][]: faces sharing the ith edge of the tetra More...
 
static const uint8_t MMG5_isar [6][2] = { {2,3}, {3,1}, {1,2}, {0,3}, {2,0}, {0,1} }
 isar[i][]: vertices of extremities of the edge opposite to the ith edge More...
 
static const uint8_t MMG5_arpt [4][3] = { {0,1,2}, {0,4,3}, {1,3,5}, {2,5,4} }
 arpt[i]: edges passing through vertex i More...
 
static const uint8_t MMG5_idir_pr [5][4] = { {0,1,2,0},{3,5,4,3},{1,4,5,2},{0,2,5,3},{0,3,4,1} }
 idir[i]: vertices of face i for a prism More...
 
static const uint8_t MMG5_iarf_pr [5][5] = { {0,1,3,0}, {6,8,7,6}, {3,5,8,4}, {5,1,2,7},{0,4,6,2} }
 iarf[i]: edges of face i for a prism More...
 
static const uint8_t MMG5_permedge [12][6]
 

Macro Definition Documentation

◆ MMG3D_ALPHAD

#define MMG3D_ALPHAD   20.7846096908265 /* 12*sqrt(3) */

Definition at line 131 of file libmmg3d_private.h.

◆ MMG3D_BADKAL

#define MMG3D_BADKAL   0.2

Definition at line 142 of file libmmg3d_private.h.

◆ MMG3D_DET2VOL

#define MMG3D_DET2VOL   0.1666666666666667 /* 1/6 */

Definition at line 140 of file libmmg3d_private.h.

◆ MMG3D_LLONG

#define MMG3D_LLONG   2.5

Definition at line 132 of file libmmg3d_private.h.

◆ MMG3D_LOPTL

#define MMG3D_LOPTL   1.3

Definition at line 134 of file libmmg3d_private.h.

◆ MMG3D_LOPTS

#define MMG3D_LOPTS   0.6

Definition at line 135 of file libmmg3d_private.h.

◆ MMG3D_LSHRT

#define MMG3D_LSHRT   0.3

Definition at line 133 of file libmmg3d_private.h.

◆ MMG3D_LSWAPIMPROVE

#define MMG3D_LSWAPIMPROVE   1.1

Definition at line 139 of file libmmg3d_private.h.

◆ MMG3D_MAXKAL

#define MMG3D_MAXKAL   1.

Definition at line 143 of file libmmg3d_private.h.

◆ MMG3D_MOVSTEP

#define MMG3D_MOVSTEP   0.1

Definition at line 154 of file libmmg3d_private.h.

◆ MMG3D_NAMAX

#define MMG3D_NAMAX   200000

Definition at line 147 of file libmmg3d_private.h.

◆ MMG3D_NEMAX

#define MMG3D_NEMAX   6000000

Definition at line 149 of file libmmg3d_private.h.

◆ MMG3D_NPMAX

#define MMG3D_NPMAX   1000000

Definition at line 146 of file libmmg3d_private.h.

◆ MMG3D_NTMAX

#define MMG3D_NTMAX   2000000

Definition at line 148 of file libmmg3d_private.h.

◆ MMG3D_POINT_REALLOC

#define MMG3D_POINT_REALLOC (   mesh,
  sol,
  ip,
  wantedGap,
  law,
  o,
  tag,
  src 
)

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

Definition at line 48 of file libmmg3d_private.h.

◆ MMG3D_SHORTMAX

#define MMG3D_SHORTMAX   0x7fff

Definition at line 151 of file libmmg3d_private.h.

◆ MMG3D_SSWAPIMPROVE

#define MMG3D_SSWAPIMPROVE   1.053

Definition at line 138 of file libmmg3d_private.h.

◆ MMG3D_SWAP06

#define MMG3D_SWAP06   0.0288675 /* 0.6/MMG3D_ALPHAD */

Definition at line 137 of file libmmg3d_private.h.

◆ MMG3D_TETRA_REALLOC

#define MMG3D_TETRA_REALLOC (   mesh,
  jel,
  wantedGap,
  law 
)

Reallocation of tetra table and creation of tetra jel

Definition at line 93 of file libmmg3d_private.h.

◆ MMG3D_VOLFRAC

#define MMG3D_VOLFRAC   1.e-5

Definition at line 153 of file libmmg3d_private.h.

◆ MMG5_RETURN_AND_FREE

#define MMG5_RETURN_AND_FREE (   mesh,
  met,
  ls,
  disp,
  val 
)
Value:
do \
{ \
MMG5_ARG_end) ) { \
return MMG5_LOWFAILURE; \
} \
return val; \
}while(0)
int MMG3D_Free_all(const int starter,...)
MMG5_pMesh * mesh
#define MMG5_ARG_ppMesh
Definition: libmmgtypes.h:96
#define MMG5_ARG_end
Definition: libmmgtypes.h:173
#define MMG5_ARG_ppLs
Definition: libmmgtypes.h:106
#define MMG5_LOWFAILURE
Definition: libmmgtypes.h:51
#define MMG5_ARG_ppDisp
Definition: libmmgtypes.h:126
#define MMG5_ARG_start
Definition: libmmgtypes.h:87
#define MMG5_ARG_ppMet
Definition: libmmgtypes.h:116

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

Definition at line 35 of file libmmg3d_private.h.

Function Documentation

◆ MMG3D_adpcoledg()

int MMG3D_adpcoledg ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree PROctree,
MMG5_int  k,
int8_t  imin,
double  lmin,
MMG5_int *  nc 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
kindex of tetra in which we work.
iminindex in k of edge that we consider for collapse.
lminlength of edge imin.
ncpointer toward count of collapses (has to be updated)
Returns
-1 for strong failure.
0 if edge cannot be collapsed and if we want to pass to next loop step (next element or next tetra edge)
2 if edge has been collapsed.
3 if nothing has been done (no error but no collapse either).

Try to collapse edge imin it too small.

Compute edge shell

Collapse

Definition at line 1180 of file mmg3d1.c.

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

◆ MMG3D_analys()

int MMG3D_analys ( MMG5_pMesh  mesh)
Parameters
meshpointer toward mesh
Returns
1 if successful, 0 if fail

preprocessing stage: mesh analysis.

At the end of this function:

  1. triangles have been deleted and stored in xtetra;
  2. Boundary point have been analyzed and associated to xpoints (if needed). If computed tangent is stored in ppt->n and normals in pxp->n1 and pxp->n2. Following list summerizes computed (and not computed) data depending on point type:
    • Corner point (MG_CRN): no computation (and no xpoint);
    • Required points have different treatment depending if they are along a 'regular' surf point, along an internal or external non-manifold edge, along a non connex mesh part(so they may have a xpoint, a tangent and a normal or not) but their normal is not used during remeshing. See comments in MMG3D_nmgeom
    • Reference point (MG_REF): xpoint, tangent, 1 normal;
    • Ridge point (MG_GEO): xp, tangent,2 normals;
    • Non-manifold point (MG_NOM): xp, tangent, no normal if internal, 1 normal if external
    • Open boundary points (MG_OPNBDY) are treated as nm points.

— stage 1: data structures for surface

— stage 2: surface analysis

Definition at line 1324 of file analys_3d.c.

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

◆ MMG3D_bdryBuild()

MMG5_int MMG3D_bdryBuild ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure (unused).
Returns
-1 if fail, the number of detected ridges otherwise

Create the boundary entities of the mesh (triangles and edges).

Warning
mesh must be packed and hashed

Definition at line 99 of file libmmg3d.c.

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

◆ MMG3D_bezierInt()

int MMG3D_bezierInt ( MMG5_pBezier  pb,
double  uv[2],
double  o[3],
double  no[3],
double  to[3] 
)
Parameters
pbpointer toward the Bezier structure.
uvcoordinates of the point in the parametric space.
ocomputed coordinates of the point in the real space.
nocomputed normal.
tocomputed tangent.
Returns
1.

Compute o, no and to at $(u,v)$ in Bezier patch.

Definition at line 608 of file bezier_3d.c.

Here is the caller graph for this function:

◆ MMG3D_build_bezierEdge()

int8_t MMG3D_build_bezierEdge ( MMG5_pMesh  mesh,
MMG5_int  k,
int8_t  imax,
int8_t  i,
int8_t  j,
MMG5_pxTetra  pxt,
MMG5_int  ip1,
MMG5_int  ip2,
MMG5_pPoint  p0,
MMG5_pPoint  p1,
MMG5_int *  ref,
int16_t *  tag,
double  o[3],
double  to[3],
double  no1[3],
double  no2[3],
int64_t *  list,
int *  ilist 
)
Parameters
meshpointer toward mesh
kindex of input tetra
imaxindex of edge in tetra k
iindex of boundary face of tetra from which we will work
jindex of edge in face i
pxtboundary tetra associated to k
ip1first vertex of edge i
ip2second vertex of edge i
p0point ip1
p1point ip2
refedge ref (to fill)
tagedge tag (to fill)
ocoordinates of new point along bezier edge (to fill)
totangent at new point o (to fill if needed)
no1first normal at new point o (to fill if needed)
no2second normal at new point (to fill if needed)
listpointer toward edge shell (to fill)
ilist2x edge shell size (+1 for a bdy edge)
Returns
-1 for strong failure.
0 edge shell contains a required tet or non manifold edge or ridge reconstruction has failed.
1 ref or regular edge reconstruction has failed.
2 if successful (we can compute new point).

Build Bezier edge from the boundary face of a boundary tetra and compute position and feature of new point along this edge.

a/ computation of bezier edge

Definition at line 1750 of file mmg3d1.c.

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

◆ MMG3D_chk4ridVertices()

int MMG3D_chk4ridVertices ( MMG5_pMesh  mesh,
MMG5_pTetra  pt 
)

Definition at line 113 of file anisosiz_3d.c.

Here is the caller graph for this function:

◆ MMG3D_chk_shellEdgeTag()

int MMG3D_chk_shellEdgeTag ( MMG5_pMesh  mesh,
MMG5_int  start,
int8_t  ia,
int16_t  tag,
MMG5_int  ref 
)
Parameters
meshpointer toward the mesh
starttetra from which we start to travel
ialocal index of edge that must be updated
tagedge tag
refedge ref
Returns
1 if success, 0 if fail.

Test consistency of tag and ref of the boundary edge \ia of tetra start by traveling its shell.

Definition at line 142 of file chkmsh_3d.c.

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

◆ MMG3D_chkmani()

int MMG3D_chkmani ( MMG5_pMesh  mesh)

Check whether implicit surface enclosed in volume is orientable

First test : check whether a tetra has 4 boundary faces

Second test : Check whether configuration is manifold in each ball

Definition at line 1527 of file mmg3d2.c.

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

◆ MMG3D_chkmanicoll()

int MMG3D_chkmanicoll ( MMG5_pMesh  mesh,
MMG5_int  k,
int  iface,
int  iedg,
MMG5_int  ndepmin,
MMG5_int  ndepplus,
MMG5_int  refmin,
MMG5_int  refplus,
int8_t  isminp,
int8_t  isplp 
)
Parameters
meshpointer toward the mesh structure.
kindex of element in which we collapse.
ifaceface through wich we perform the collapse
iedgedge to collapse
ndepminindex of an elt with ref refmin and outside the shell of edge.
ndepplusndex of an elt with ref refplus and outside the shell of edge.
refminreference of one of the two subdomains in presence
refplusreference of the other subdomain in presence
isminp1 if we have found a tetra with ref refmin
isplp1 if we have found a tetra with ref refplus
Returns
0 if we create a non manifold situation, 1 otherwise

Check whether collapse of point np to nq does not create a non manifold situation at nq ndepmin, ndepplus = tetra of ref minus, plus in ball of np, not in shell of (np,nq).

First step : pile up tetras of future ball of nq, crossing through the shell of (np,nq), as long as they have same ref as ndepmin list[l] <= 0 if element of ball of np, >= 0, if element of ball of nq

Second step : same process, starting with a tetra of different reference, in the ball of np

Definition at line 1672 of file mmg3d2.c.

Here is the caller graph for this function:

◆ MMG3D_chkmeshedgestags()

void MMG3D_chkmeshedgestags ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh

Test consistency between the tags in the xtetra of all mesh edges marked as boundaries.

Warning
Not used.

Definition at line 201 of file chkmsh_3d.c.

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

◆ MMG3D_chkpointtag()

void MMG3D_chkpointtag ( MMG5_pMesh  mesh)
Parameters
mesh

Test consistency between points and edges tags. If an error is detected, hash mesh edges to check the consistency between the tags of tetra edges.

Warning
Not used.

Check consistency between edge tags and point tags

Definition at line 329 of file chkmsh_3d.c.

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

◆ MMG3D_computeInqua()

void MMG3D_computeInqua ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int *  ne,
double *  max,
double *  avg,
double *  min,
MMG5_int *  iel,
MMG5_int *  good,
MMG5_int *  med,
MMG5_int  his[5],
int  imprim 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
nepointer toward the number of used tetra (to fill).
maxpointer toward the maximal quality (normalized) to fill.
avgpointer toward the average quality (normalized) to fill.
minpointer toward the minimal quality (normalized) to fill.
ielpointer toward the index of the worst tetra (to fill).
goodnumber of good elements (to fill).
mednumber of elements with a quality greather than 0.5 (to fill).
hispointer toward the mesh histogram (to fill).
imprimverbosity level

Compute the needed quality information in order to print the quality histogram (for a classic storage of the metric at ridges).

Definition at line 559 of file quality_3d.c.

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

◆ MMG3D_computeLESqua()

void MMG3D_computeLESqua ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int *  ne,
double *  max,
double *  avg,
double *  min,
MMG5_int *  iel,
MMG5_int *  good,
MMG5_int *  med,
MMG5_int  his[5],
int  imprim 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
nepointer toward the number of used tetra (to fill).
maxpointer toward the maximal quality (normalized) to fill.
avgpointer toward the average quality (normalized) to fill.
minpointer toward the minimal quality (normalized) to fill.
ielpointer toward the index of the worst tetra (to fill).
goodnumber of good elements (to fill).
mednumber of elements with a quality greather than 0.5 (to fill).
hispointer toward the mesh histogram (to fill).
imprimverbosity level

Compute the needed quality information in order to print the quality histogram in optimLES mode.

Definition at line 376 of file quality_3d.c.

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

◆ MMG3D_computeOutqua()

void MMG3D_computeOutqua ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int *  ne,
double *  max,
double *  avg,
double *  min,
MMG5_int *  iel,
MMG5_int *  good,
MMG5_int *  med,
MMG5_int  his[5],
MMG5_int *  nrid,
int  imprim 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
nepointer toward the number of used tetra (to fill).
maxpointer toward the maximal quality (normalized) to fill.
avgpointer toward the average quality (normalized) to fill.
minpointer toward the minimal quality (normalized) to fill.
ielpointer toward the index of the worst tetra (to fill).
goodnumber of good elements (to fill).
mednumber of elements with a quality greather than 0.5 (to fill).
hispointer toward the mesh histogram (to fill).
nridnumber of tetra with 4 ridge points if we want to warn the user to fill.
imprimverbosity level

Compute the needed quality information in order to print the quality histogram (for special storage of the metric at ridges).

Definition at line 680 of file quality_3d.c.

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

◆ MMG3D_computePrilen()

int MMG3D_computePrilen ( MMG5_pMesh  mesh,
MMG5_pSol  met,
double *  avlen,
double *  lmin,
double *  lmax,
MMG5_int *  ned,
MMG5_int *  amin,
MMG5_int *  bmin,
MMG5_int *  amax,
MMG5_int *  bmax,
MMG5_int *  nullEdge,
int8_t  metRidTyp,
double **  bd_in,
MMG5_int  hl[9] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
avlenaverage length (to fill).
lminminimal length (to fill).
lmaxmax length (to fill).
nednumber of edges (to fill).
amin(to fill).
bmin(to fill).
amax(to fill).
bmax(to fill).
nullEdge(to fill).
metRidTyp(to fill).
bd_in(to fill).
hl(to fill).
Returns
0 if fail, 1 otherwise.

Compute the required information to print the length histogram

Definition at line 221 of file quality_3d.c.

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

◆ MMG3D_coquilFaceFirstLoop()

int MMG3D_coquilFaceFirstLoop ( MMG5_pMesh  mesh,
MMG5_int  start,
MMG5_int  na,
MMG5_int  nb,
int8_t  iface,
int8_t  ia,
int64_t *  list,
int *  ilist,
MMG5_int *  it1,
MMG5_int *  it2,
MMG5_int *  piv,
MMG5_int *  adj,
int8_t *  hasadja,
int *  nbdy,
int  silent 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetrahedron.
naglobal index of the 1st extremity of the edge whose shell is computed
nbglobal index of the 2d extremity of the edge whose shell is computed
ifaceindex of the face from which we come.
iaindex of edge whose shell is computed (in tetra).
listpointer toward the list of tetra in the shell (to fill).
ilistpointer toward the number of tetra in the shell (to fill).
it1pointer toward the index of the 1st boundary face sharing ia
it2pointer toward the index of the 2d boundary face sharing ia (to fill).
adjpointer toward the adjacent to treat in the shell (to update)
hasadjapointer toward 0 if we don't have adja through iface, 1 otherwise (to fill)
nbdypointer toward the number of boundaries found minus 1 (to update)
silentif 1, print error message for more than 2 boundary triangles in the shell
Returns
-1 if fail, 1 otherwise

Travel in the shell of the edge until meeting the first tetra or reaching a tetra without adjacent. Fill it2 and list.

Definition at line 1686 of file boulep_3d.c.

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

◆ MMG3D_coquilFaceSecondLoopInit()

void MMG3D_coquilFaceSecondLoopInit ( MMG5_pMesh  mesh,
MMG5_int  piv,
int8_t *  iface,
int8_t *  ia,
int64_t *  list,
int *  ilist,
MMG5_int *  it1,
MMG5_int *  pradj,
MMG5_int *  adj 
)
Parameters
meshpointer toward the mesh structure.
pivglobal index of the pivot.
ifaceindex of the face from which we come.
iindex of edge whose shell is computed (in tetra).
listpointer toward the list of tetra in the shell (to fill).
ilistpointer toward the number of tetra in the shell (to fill).
it1pointer toward the index of the 1st boundary face sharing ia
pradjpointer toward the first tetra of the shell (to fill).
adjpointer toward the adjacent to treat in the shell (to update)

Initialize the travel in the shell of the edge in reverse direction than in the coquilFaceFirstLoop function.

Definition at line 1787 of file boulep_3d.c.

Here is the caller graph for this function:

◆ MMG3D_curveEndingPts()

int MMG3D_curveEndingPts ( MMG5_pMesh  mesh,
MMG5_int *  lists,
int  ilists,
const int16_t  edgTag,
MMG5_int  ip0,
MMG5_int *  ip1,
MMG5_int *  ip2 
)
Parameters
meshpointer toward the mesh structure.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
edgTagType of edge on which we move (MG_REF, MG_NOM or MG_GEO).
ip0point that we want to move along curve.
ip1first ending point of curve (in current surfacic ball).
ip2second ending point of curve (in current surfacic ball).
Returns
0 if fail (one of curve extremity is not found), 1 if success.

Search the two ending points of curve passing through ip0 in the surfacic ball of ip0.

Travel surfacic ball and recover the two ending points of curve (that will be stored in ip1 and ip2): ball is travelled from beginning in one direction until meeting the curve edge, then, starting from the end, in the other direction until meeting the second curve edge.

a. Travel surface edges in one sense to get the first featured edge. Triangles of the surface are successively processed and the tag of the edge between current tria and previous one is tested (so each edge is checked only once). Ball processing stops at first featured edge crossed.

b. Now travel surface edges in the reverse sense so as to get the second curve. Again, we test the tag of the edge at interface of current triangle and previous one and we stop ball pocessing when the second featured edge has been found. This edge is necessarly different from the one previously found.

Definition at line 936 of file movpt_3d.c.

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

◆ MMG3D_cuttet_ls()

int MMG3D_cuttet_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
metpointer toward a metric (non-mandatory).
Returns
1 if success, 0 otherwise.

Proceed to discretization of the implicit function carried by sol into mesh, once values of sol have been snapped/checked

Definition at line 1025 of file mmg3d2.c.

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

◆ MMG3D_cuttet_lssurf()

int MMG3D_cuttet_lssurf ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
metpointer toward a metric (non-mandatory).
Returns
1 if success, 0 otherwise.

Proceed to discretization of the trace of the implicit function carried by sol into the surface part of mesh, once values of sol have been snapped/checked

Definition at line 160 of file mmg3d2s.c.

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

◆ MMG3D_defsiz_ani()

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

Define size at points by intersecting the surfacic metric and the physical metric.

  1. On singular (CRN, REQ, NOM) points, the metric on P is made isotropic.
  2. On non-singular ridge points, the metric is forced to be aligned with the ridge directions and surface normals.
  3. On regular boundary points, the metric can be anisotropic on the tangent plane, but it is forced to be aligned to the normal direction.

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

Definition at line 1310 of file anisosiz_3d.c.

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

◆ MMG3D_defsiz_iso()

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

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

1) Size at internal points

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

Step 2: size at non required internal points

First step: search for local parameters

Second step: set the metric

Set size at points that cannot be reached from the tetra

First step: search for local parameters

Second step: set the metric

Set size at points that cannot be reached from the tetra

Step 3: size at regular surface points

First step: search for local parameters

Second step: set the metric

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

First step: search for local parameters

Second step: set metric

Definition at line 662 of file isosiz_3d.c.

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

◆ MMG3D_delElt()

int MMG3D_delElt ( MMG5_pMesh  mesh,
MMG5_int  iel 
)
Parameters
meshpointer toward the mesh
ielindex of the element to delete
Returns
1 if success, 0 if fail

Delete the element iel

Definition at line 122 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_delPt()

void MMG3D_delPt ( MMG5_pMesh  mesh,
MMG5_int  ip 
)

Definition at line 80 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_dichoto()

int MMG3D_dichoto ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int *  vx 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ktetrahedron index.
vxpointer toward table of edges to split.
Returns
1 if success, 0 if fail.

Find acceptable position for splitting.

Definition at line 140 of file mmg3d1.c.

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

◆ MMG3D_dichoto1b()

int MMG3D_dichoto1b ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ret,
MMG5_int  ip 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
listpointer toward the shell of edge.
retdouble of the number of tetrahedra in the shell.
ipnew point index.
Returns
1 if success
0 if fail due to a very bad quality
2 if fail due to a sharp angle creation

Find acceptable position for MMG5_split1b, passing the shell of considered edge, starting from o point.

Definition at line 293 of file mmg3d1.c.

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

◆ MMG3D_displayQualHisto()

int MMG3D_displayQualHisto ( MMG5_int  ne,
double  max,
double  avg,
double  min,
MMG5_int  iel,
MMG5_int  good,
MMG5_int  med,
MMG5_int  his[5],
MMG5_int  nrid,
int  optimLES,
int  imprim 
)
Parameters
nenumber of used tetra.
maxmaximal quality (normalized).
avgaverage quality (normalized).
minminimal quality (normalized).
ielindex of the worst tetra.
goodnumber of good elements.
mednumber of elements with a quality greather than 0.5
hispointer toward the mesh histogram.
nridnumber of tetra with 4 ridge points if we want to warn the user.
optimLES1 if we work in optimLES mode, 0 otherwise
imprimverbosity level
Returns
0 if the worst element has a nul quality, 1 otherwise.

Print the header of the histogram of mesh qualities then call the function that print the histogram for special metric at ridges.

Definition at line 460 of file quality_3d.c.

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

◆ MMG3D_displayQualHisto_internal()

int MMG3D_displayQualHisto_internal ( MMG5_int  ne,
double  max,
double  avg,
double  min,
MMG5_int  iel,
MMG5_int  good,
MMG5_int  med,
MMG5_int  his[5],
MMG5_int  nrid,
int  optimLES,
int  imprim 
)
Parameters
nenumber of used tetra.
maxmaximal quality (normalized).
avgaverage quality (normalized).
minminimal quality (normalized).
ielindex of the worst tetra.
goodnumber of good elements.
mednumber of elements with a quality greather than 0.5
hispointer toward the mesh histogram.
nridnumber of tetra with 4 ridge points if we want to warn the user.
optimLES1 if we work in optimLES mode, 0 otherwise
imprimverbosity level
Returns
0 if the worst element has a nul quality, 1 otherwise.

Print histogram of mesh qualities for special storage of metric at ridges.

Definition at line 494 of file quality_3d.c.

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

◆ MMG3D_doSol_ani()

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

Compute anisotropic size map according to the mean of the length of the edges passing through a point.

Definition at line 1385 of file libmmg3d_tools.c.

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

◆ MMG3D_doSol_iso()

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

Compute isotropic size map according to the mean of the length of the edges passing through a point.

Definition at line 1310 of file libmmg3d_tools.c.

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

◆ MMG3D_find_bdyface_from_edge()

void MMG3D_find_bdyface_from_edge ( MMG5_pMesh  mesh,
MMG5_pTetra  pt,
int8_t  ied,
int8_t *  i,
int8_t *  j,
int8_t *  i1,
int8_t *  i2,
MMG5_int *  ip1,
MMG5_int *  ip2,
MMG5_pPoint p0,
MMG5_pPoint p1 
)
Parameters
meshpointer toward mesh
ptpointer toward tetra on which we work
iedindex in tetra pt of edge on which we work
iindex of a face of pt that contains ied. If possible we choose a boundary face with suitable orientation (to fill)
jlocal index of edge ied in face i (to fill)
i1local index in tetra pt of first extremity of edge ied (to fill)
i2local index in tetra pt of second extremity of edge ied (to fill)
ip1global index first extremity of edge ied (to fill)
ip2global index in tetra pt of second extremity of edge ied (to fill)
p0pointer toward first extremity of edge ied (to fill)
p1pointer toward second extremity of edge ied (to fill)

Search a face from wich we car reach edge ied. If a boundary face with good orientation exists it is choosed prior to another face, otherwise, if possible, we choose a boundary face. Fill data needed to work on edge.

An edge can be at the interface of a boundary face with good orientation and of another one with bad orientation: ensure to treat the edge from the suitable face

Definition at line 1868 of file mmg3d1.c.

Here is the caller graph for this function:

◆ MMG3D_findEdge()

int MMG3D_findEdge ( MMG5_pMesh  mesh,
MMG5_pTetra  pt,
MMG5_int  k,
MMG5_int  na,
MMG5_int  nb,
int  error,
int8_t *  mmgWarn,
int8_t *  ia 
)
Parameters
meshpointer toward the mesh structure.
ptpointer toward the working tetra
kindex of the tetra pt.
naindex of the first extermity of the seeking edge.
nbindex of the second extermity of the seeking edge.
error1 if we want to print an error message, 0 for a warning.
mmgWarnstatic variable to print warning only once (not used if error==1)
iapointer toward the edge index (to fill).
Returns
0 if fail, 1 if success.

Find the local index of the edge ia in the tetra pt of index k;

Definition at line 113 of file boulep_3d.c.

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

◆ MMG3D_Free_all_var()

int MMG3D_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 MMG3D_mmg3dlib 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 MMG3D_mmg3dls 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 MMG3D_mmg3dmov 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.

Definition at line 261 of file variadic_3d.c.

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

◆ MMG3D_Free_arrays()

void MMG3D_Free_arrays ( MMG5_pMesh mesh,
MMG5_pSol sol,
MMG5_pSol ls,
MMG5_pSol disp,
MMG5_pSol field 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward a solution / level-set.
solpointer toward a displacement.

Free mesh arrays.

Definition at line 359 of file variadic_3d.c.

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

◆ MMG3D_Free_names_var()

int MMG3D_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)

To call the MMG3D_mmg3dlib 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 MMG3D_mmg3dls 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 MMG3D_mmg3dmov 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 name 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.

Definition at line 547 of file variadic_3d.c.

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

◆ MMG3D_Free_structures_var()

int MMG3D_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)

To call the MMG3D_mmg3dlib 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 MMG3D_mmg3dls 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 MMG3D_mmg3dmov 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 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.

Definition at line 449 of file variadic_3d.c.

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

◆ MMG3D_Free_topoTables()

void MMG3D_Free_topoTables ( MMG5_pMesh  mesh)

Free adja, xtetra and xpoint tables

Definition at line 67 of file libmmg3d.c.

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

◆ MMG3D_gradsiz_ani()

int MMG3D_gradsiz_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
Returns
1

Enforces mesh gradation by truncating metric field.

  1. On singular (CRN, REQ, NOM) points, the metric on P is isotropic (as in MMG5_defmetsin) and should remain isotropic.
  2. On non-singular ridge points, the metric on P should remain aligned with the ridge directions (thus it is not possible to apply metric intersection, sizes are truncated instead).
  3. On regular boundary points, the metric can be anisotropic on the tangent plane, but it should remain aligned to the normal direction (thus, intersection is used only in the tangent plane and sizes are truncated in the normal direction).
  4. On interior volume points, 3D metric intersection can be used.

Mark the edges belonging to a required entity

Definition at line 2073 of file anisosiz_3d.c.

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

◆ MMG3D_gradsiz_iso()

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

Enforce mesh gradation by truncating size map.

Definition at line 1083 of file isosiz_3d.c.

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

◆ MMG3D_gradsizreq_ani()

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

Enforce mesh gradation by truncating size map.

Mark the edges belonging to a required entity (already done if the classic gradation is enabled)

Definition at line 2210 of file anisosiz_3d.c.

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

◆ MMG3D_gradsizreq_iso()

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

Enforce mesh gradation by truncating size map.

Mark the edges belonging to a required entity

Update the sizes and mark the treated points

Definition at line 1168 of file isosiz_3d.c.

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

◆ MMG3D_hashPrism()

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

Create partial table of adjacency for prisms (prism $ <-> $ prism).

Remarks
Adjacencies between prisms and tetra are not filled here.
Warning
check the hashtable efficiency

Definition at line 238 of file hash_3d.c.

Here is the caller graph for this function:

◆ MMG3D_hashTria()

int MMG3D_hashTria ( MMG5_pMesh  mesh,
MMG5_Hash hash 
)
Parameters
meshpointer toward the mesh structure.
hashEdges hash table.
Returns
1 if success, 0 if failed.

Create surface adjacency table. Allocate the edge hash table hash but don't free it.

Definition at line 749 of file hash_3d.c.

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

◆ MMG3D_indElt()

MMG5_int MMG3D_indElt ( MMG5_pMesh  mesh,
MMG5_int  kel 
)

find the element number in packed numerotation

Definition at line 860 of file tools_3d.c.

Here is the caller graph for this function:

◆ MMG3D_indPt()

MMG5_int MMG3D_indPt ( MMG5_pMesh  mesh,
MMG5_int  kp 
)

find the point number in packed numerotation

Definition at line 916 of file tools_3d.c.

Here is the caller graph for this function:

◆ MMG3D_Init_mesh_var()

int MMG3D_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 MMG3D_mmg3dlib 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 MMG3D_mmg3dls 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 MMG3D_mmg3dmov 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 structure allocations (taking a va_list argument).

Definition at line 177 of file variadic_3d.c.

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

◆ MMG3D_inqua()

int MMG3D_inqua ( 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 for classic storage of metric at ridges.

Definition at line 631 of file quality_3d.c.

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

◆ MMG3D_intmet33_ani()

int MMG3D_intmet33_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  i,
MMG5_int  ip,
double  s 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelement index.
ilocal index of edge in k.
ipglobal index of the new point in which we want to compute the metric.
sinterpolation parameter (between 0 and 1).
Returns
0 if fail, 1 otherwise.

Interpolation of anisotropic sizemap at parameter s along edge i of elt k for a classic storage of ridges metrics (before defsiz call).

Definition at line 101 of file intmet_3d.c.

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

◆ MMG3D_keep_only1Subdomain()

void MMG3D_keep_only1Subdomain ( MMG5_pMesh  mesh,
int  nsd 
)
Parameters
meshpointer toward the mesh structure.
nsdindex of subdomain to keep.

Keep only subdomain of index nsd and remove other subdomains.

Definition at line 1391 of file tools_3d.c.

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

◆ MMG3D_loadMesh_opened()

int MMG3D_loadMesh_opened ( MMG5_pMesh  mesh,
FILE *  inm,
int  bin 
)

Definition at line 113 of file inout_3d.c.

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

◆ MMG3D_localParamNm()

int MMG3D_localParamNm ( MMG5_pMesh  mesh,
MMG5_int  iel,
int  iface,
int  ia,
double *  hausd_ip,
double *  hmin_ip,
double *  hmax_ip 
)
Parameters
meshpointer toward the mesh structure.
ielindex of tetra in which we work
ifaceindex of face in iel
iaindex of edge in iel along which we want to compute the local parameters
hausd_ippointer toward the local hausdorff parameter to compute
hmin_ippointer toward the local minimal edge size to compute
hmax_ippointer toward the local maximal edge size to compute
Returns
1 if success, 0 if fail

Compute the local parameters at non manifold point ip.

Definition at line 1143 of file tools_3d.c.

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

◆ MMG3D_localParamReg()

int MMG3D_localParamReg ( MMG5_pMesh  mesh,
MMG5_int  ip,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
double *  hausd_ip,
double *  hmin_ip,
double *  hmax_ip 
)
Parameters
meshpointer toward the mesh structure.
ipglobal index of point in which we want to compute the local parameters
listvpointer toward the ball of ip
ilistvnumber of tetra in the ball of ip
listspointer toward the surface ball of ip
ilistsnumber of tetra in the surface ball of ip
hausd_ippointer toward the local hausdorff parameter to compute
hmin_ippointer toward the local minimal edge size to compute
hmax_ippointer toward the local maximal edge size to compute
Returns
1 if success, 0 if fail

Compute the local parameters at point ip (the volume and surface ball of point must be provided).

Definition at line 1023 of file tools_3d.c.

Here is the caller graph for this function:

◆ MMG3D_mark_packedPoints()

int MMG3D_mark_packedPoints ( MMG5_pMesh  mesh,
MMG5_int *  np,
MMG5_int *  nc 
)
Parameters
meshpointer toward the mesh structure (unused).
nppointer toward the number of packed points
ncpointer toward the number of packed corners
Returns
1 if success, 0 if fail.

Count the number of packed points and store the packed point index in tmp. Preserve numbering order.

Definition at line 541 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_mark_pointsOnReqEdge_fromTetra()

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

Set the s field of the points that belongs to a required edge to 4*ne+3, set it to 0 otherwise.

Definition at line 1048 of file isosiz_3d.c.

Here is the caller graph for this function:

◆ MMG3D_memOption()

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

memory repartition for the -m option.

Definition at line 271 of file zaldy_3d.c.

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

◆ MMG3D_memOption_memRepartition()

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

memory repartition for the memMax amout of memory available.

Check that we will not overflow int32_max when allocating adja array

Definition at line 173 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_memOption_memSet()

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

Set the memMax value to its "true" value (50% of the RAM or memory asked by user) and perform memory repartition for the -m option. If -m is not given, memMax is the detected RAM. If -m is provided, check the user option and set memMax to the available RAM if the user ask for too much memory. Last, perform the memory repartition between the mmg arrays with respect to the memMax value.

Remarks
Here, mesh->npmax/nemax/ntmax must be setted.

Definition at line 158 of file zaldy_3d.c.

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

◆ MMG3D_mmg3d2()

int MMG3D_mmg3d2 ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set.
metpointer toward a metric (optionnal).
Returns
0 if fail, 1 otherwise.

Create implicit surface in mesh.

Definition at line 2208 of file mmg3d2.c.

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

◆ MMG3D_movbdycurvept_chckAndUpdate()

int MMG3D_movbdycurvept_chckAndUpdate ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
int  improve,
MMG5_pPoint  p0,
MMG5_int  ip0,
uint8_t  isrid,
double  o[3],
double  no[3],
double  no2[3],
double  to[3] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
p0point that we want to move.
ip0global index of point p0.
isrid1 if point is a ridge manifold point
opoint coordinates at new position
nonormal at point at new position
no2second normal at point at new pos (for ridge manifold point)
totangent at point at new pos.
Returns
0 if we don't want to move, 1 if we want to move point

Check volumes of the tetra in the ball of point with new position of point. Update coordinates, normals, tangents and qualities if point displacement is accepted.

Check wether all volumes remain positive with new position of the point

Update coordinates, normals, for new point

Definition at line 1048 of file movpt_3d.c.

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

◆ MMG3D_movbdycurvept_newPosForSimu()

int MMG3D_movbdycurvept_newPosForSimu ( MMG5_pMesh  mesh,
MMG5_pPoint  p0,
MMG5_int  ip0,
MMG5_int  ip1,
MMG5_int  ip2,
double  ll1old,
double  ll2old,
uint8_t  isrid,
const double  step,
double  o[3],
double  no[3],
double  no2[3],
double  to[3],
const int16_t  edgTag 
)
Parameters
meshpointer toward the mesh structure.
p0point that we want to move.
ip0global index of point p0.
ip1First ending point of curve.
ip2Second ending point of curve.
ll1oldlength of edge ip0-ip1.
ll2oldlength of edge ip0-ip2.
isrid1 if point is a ridge manifold point.
stepstep of displacement.
opoint coordinates at new position
nonormal at point at new position
no2second normal at point at new pos (for ridge manifold point)
totangent at point at new pos.
edgTagMG_NOM, MG_REF or MG_GEO depending on type of curve along which we move.
Returns
0 if we don't want to move, global index ip if we want to move toward point ip.

Check volumes of the tetra in the ball of point with new position of point. Update coordinates, normals, tangents and qualities if point displacement is accepted.

Choose direction of displacement depending on edge lengths

Build support of the edge ip-ip0 and features of new position

Store computed values for simulations purposes

Definition at line 1142 of file movpt_3d.c.

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

◆ MMG3D_movbdyregpt_geom()

int MMG3D_movbdyregpt_geom ( MMG5_pMesh  mesh,
MMG5_int *  lists,
const MMG5_int  kel,
const MMG5_int  ip0,
double  n[3],
double  lambda[3],
double  o[3],
double  no[3] 
)
Parameters
meshpointer toward the mesh
listspointer toward the surface ball of ip0
kelindex of the current element in the ball
ip0global index of the point to move
nnormal at ip0
lambdabarycentric coor of the new point in triangle
ocoordinates of the new point (to compute)
nonormal at new point (to compute)
Returns
-1 if fail, 0 if we can't move the point, nxp the index of the new xpoint at ip0 if success.

Compute the Bezier patch at element lists[kel], compute the new point coordinates, normal and tangent and check the geometric approximation.

Definition at line 482 of file movpt_3d.c.

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

◆ MMG3D_movetetrapoints()

int MMG3D_movetetrapoints ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int  k 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of a tetra
Returns
1 if we move one of the vertices, 0 otherwise.

Try to move the vertices of the tetra k to improve its quality.

Definition at line 47 of file optbdry_3d.c.

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

◆ MMG3D_movnormal_iso()

int MMG3D_movnormal_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  k,
int  ib 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the metric structure.
ktetra index.
iblocal index of the point inside the tetra k.
Returns
0 if fail, 1 if success.

Move internal point according to the normal at the opposite face Try to increase the volume of the tetra. Called when processing very bad elts in opttyp.

Remarks
the metric is not interpolated at the new position.
Todo:
to factorize with movv_iso (and movv_ani)?

Definition at line 1746 of file movpt_3d.c.

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

◆ MMG3D_movv_ani()

int MMG3D_movv_ani ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  k,
int  ib 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the metric structure.
kelement index
iplocal index of point
Returns
0 if fail, 1 if success.

Move internal point according to the normal at the opposite face Try to increase the volume of the tetra. Called when processing very bad elts in opttyp.

Remarks
the metric is not interpolated at the new position.

Definition at line 1626 of file movpt_3d.c.

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

◆ MMG3D_movv_iso()

int MMG3D_movv_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  k,
int  ib 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the metric structure.
kelement index
iplocal index of point
Returns
0 if fail, 1 if success.

Move internal point according to the normal at the opposite face Try to increase the volume of the tetra. Called when processing very bad elts in opttyp.

Remarks
the metric is not interpolated at the new position.
Todo:
to factorize with movnormal_iso (and movv_ani)?

Definition at line 1875 of file movpt_3d.c.

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

◆ MMG3D_newElt()

MMG5_int MMG3D_newElt ( MMG5_pMesh  mesh)

get new elt address

Definition at line 99 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_newPt()

MMG5_int MMG3D_newPt ( MMG5_pMesh  mesh,
double  c[3],
int16_t  tag,
MMG5_int  src 
)

get new point address

Definition at line 39 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_nmgeom()

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

Define continuous geometric support at non manifold vertices, using volume information.

Following list summerizes computed data depending on point type:

  • Non-manifold external point along connex mesh part (MG_NOM): xp, tangent, normal n1, nnor=0
  • Non-manifold external point along edge or point connected mesh part (MG_NOM): no xp,no tangent,no normal,nnor=0
  • Non-manifold not required internal point (MG_NOM+MG_REQ): xp, tangent, no normal, nnor=1.
  • Non-manifold required internal point (MG_NOM+MG_REQ): no xp, no tangent, no normal, nnor=1.
  • Non-manifold open-boundary (MG_OPNBDY) edges are treated like others:
    • if we are along a "truly" open boundary, it is an internal nm edge so we don't have any normal;
    • if the edge is marked as open while being only non-manifold, we may compute a normal (along an external boundary) or not (along an internal one).
  • We don't compute anything along corner points.

Definition at line 1198 of file analys_3d.c.

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

◆ MMG3D_normalAdjaTri()

int MMG3D_normalAdjaTri ( MMG5_pMesh  mesh,
MMG5_int  start,
int8_t  iface,
int  ia,
double  n[3] 
)
Parameters
meshpointer toward the mesh structure
startindex of the working tetra
ifacelocal index of the boundary face of the tetra start
ialocal index on face iface of the edge through which we seek the adjacent triangle of the triangle iface of start.
nnormal of the new boundary face in the tetra idx.
Returns
1 if success, 0 if we want to refuse the collapse, -1 if fail.

Compute the normal of the adjacent triangle of the triangle iface of the tetra start through the edge ia (in local numbering of the face).

Store the adjacent boundary triangle (triangle adjacent to iface through the edge ia

Compute the normal of the second triangle

Definition at line 466 of file split_3d.c.

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

◆ MMG3D_normalAndTangent_at_sinRidge()

int MMG3D_normalAndTangent_at_sinRidge ( MMG5_pMesh  mesh,
MMG5_int  k,
int  i,
int  j,
double  no1[3],
double  no2[3],
double  to[3] 
)
Parameters
meshpointer toward the mesh structure.
kindex of the tetra to split.
iindex of (boundary) face in which we work.
jlocal index in face i of the ridge.
pttetra to split
no1first normal at new ridge point (to fill)
no2second normal at new ridge point (to fill)
totangent ar new ridge point (to fill)
Returns
0 if fail, 1 if succeed.

Compute normals and tangent at new ridge point.

Remarks
has to be called from a bdy face with suitable orientation (normal orientation is not checked along edges with 2 singular extremities)

Definition at line 1654 of file mmg3d1.c.

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

◆ MMG3D_openMesh()

int MMG3D_openMesh ( int  imprim,
const char *  filename,
FILE **  inm,
int *  bin,
char *  modeASCII,
char *  modeBIN 
)
Parameters
imprimverbosity level (muted for stdout if -1)
filenamefile to open
inmpointer toward the file unit
bin1 if file will be at binary format
modeASCIImode in which to open an ascii file ("r","r+","w","w+",...)
modeASCIImode in which to open an ascii file ("r","r+","w","w+",...)
Returns
0 if fail to open file, -1 for other errors, 1 if success.

Try to open a Medit file at asked mode (read only, write, etc) and store if file is binary (depending on the extension).

Definition at line 53 of file inout_3d.c.

Here is the caller graph for this function:

◆ MMG3D_optbdry()

int MMG3D_optbdry ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int  k 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
kindex of a tetra
Returns
1 if success, 0 if fail.

Try to optimize the tetra k. This tetra has a face on the boundary.

Definition at line 259 of file optbdry_3d.c.

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

◆ MMG3D_optlap()

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

Laplacian/anti-laplacian over the mesh to improve its mean quality

Definition at line 46 of file optlap_3d.c.

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

◆ MMG3D_opttyp()

MMG5_int MMG3D_opttyp ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int  testmark 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
testmarkall the tets with a mark less than testmark will not be treated.
Returns
0 if fail, number of improved elts otherwise.

Travel across the mesh to detect element with very bad quality (less than 0.2) and try to improve them by every means.

Definition at line 472 of file opttyp_3d.c.

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

◆ MMG3D_outqua()

int MMG3D_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 for special storage of metric at ridges.

Definition at line 764 of file quality_3d.c.

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

◆ MMG3D_pack_pointArray()

int MMG3D_pack_pointArray ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure (unused).
Returns
the number of corners if success, -1 otherwise

Pack a sparse point array. Preserve numbering order.

Definition at line 749 of file libmmg3d.c.

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

◆ MMG3D_pack_points()

MMG5_int MMG3D_pack_points ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure (unused).
Returns
the number of corners if success, -1 otherwise

Pack a sparse point array and update the element vertices according to their new indices.

Store in tmp the pack index of each point and count the corner

Update the element vertices indices

Pack the point array

Definition at line 853 of file libmmg3d.c.

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

◆ MMG3D_pack_prismsAndQuads()

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

Pack prisms and quads. Preserve numbering order.

Definition at line 667 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_pack_sol()

int MMG3D_pack_sol ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure (unused).
metpointer toward the solution (metric or level-set) structure.
Returns
1 if success, 0 if fail.

Pack a sparse solution structure. Preserve numbering order.

Definition at line 713 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_pack_tetra()

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

Pack the sparse tetra. Doesn't pack the adjacency array. Preserve numbering order.

Definition at line 627 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_pack_tetraAndAdja()

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

Pack the sparse tetra and the associated adja array. Preserve numbering order.

Definition at line 572 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_packMesh()

int MMG3D_packMesh ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure (unused).
solpointer toward a solution structure.
metpointer toward a solution structure.
Returns
1 if success, 0 if fail or if we are unable to build triangles.

Pack the sparse mesh and create triangles and edges before getting out of library

Definition at line 905 of file libmmg3d.c.

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

◆ MMG3D_prilen()

int MMG3D_prilen ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
metRidTypType of storage of ridges metrics: 0 for classic storage, 1 for special storage.
Returns
0 if fail, 1 otherwise.

Compute sizes of edges of the mesh, and displays histo.

Definition at line 341 of file quality_3d.c.

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

◆ MMG3D_printEigenv()

int MMG3D_printEigenv ( double  dm[3],
double  vp[3][3] 
)
Parameters
dmmatrix eigenvalues (1x3 array).
vpeigenvectors matrix (3x3 array, eigenvectors stored by lines).
Returns
1 if success, 0 if fail.

Print eigendecomposition.

Definition at line 48 of file anisosiz_3d.c.

◆ MMG3D_printErrorMat()

int MMG3D_printErrorMat ( int8_t  symmat,
double *  m,
double *  mr 
)
Parameters
symmatflag for symmetric(1) or non-symmetric(0) matrix..
mfirst matrix (1x6 or 1x9 array).
mrsecond matrix (1x6 or 1x9 array).
Returns
1 if success, 0 if fail.

Print relative error between two matrices, for each matrix entry.

Definition at line 90 of file anisosiz_3d.c.

Here is the call graph for this function:

◆ MMG3D_regver()

int MMG3D_regver ( MMG5_pMesh  mesh)
Parameters
meshpointer toward a MMG5 mesh structure.
Returns
0 if fail, 1 otherwise.

Regularization procedure for vertices coordinates, dual Laplacian in 3D

Definition at line 956 of file analys_3d.c.

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

◆ MMG3D_resetRef_ls()

int MMG3D_resetRef_ls ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh.

Reset mesh->info.isoref vertex and tetra references to 0.

Warning
to improve: for now, entities linked to the old ls (corners,required points, normals/tangents, triangles and edges) are deleted in loadMesh. It would be better to analyze wich entities must be keeped and which one must be deleted depending on the split/nosplit infos.

Definition at line 313 of file mmg3d2.c.

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

◆ MMG3D_resetRef_lssurf()

int MMG3D_resetRef_lssurf ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh.

Reset mesh->info.isoref vertex and tetra references to 0.

Warning
to improve: for now, entities linked to the old ls (corners,required points, normals/tangents, triangles and edges) are deleted in loadMesh. It would be better to analyze wich entities must be keeped and which one must be deleted depending on the split/nosplit infos.

Definition at line 51 of file mmg3d2s.c.

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

◆ MMG3D_rmc()

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

Removal of small parasitic components (bubbles of material, etc) with volume less than mesh->info.rmc (default VOLFRAC) * volume of the mesh.

Definition at line 777 of file mmg3d2.c.

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

◆ MMG3D_rotate_surfacicBall()

int MMG3D_rotate_surfacicBall ( MMG5_pMesh  mesh,
MMG5_int *  lists,
int  ilists,
MMG5_int  ip0,
double  r[3][3],
double *  lispoi 
)
Parameters
meshpointer toward the mesh structure.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
ip0global index of the point that we move
rrotation matrix that sends the normal at ip0 to z-axis
lispoirotated surfacic ball (lispoi[k] is the common edge between faces lists[k-1] and lists[k])
Returns
1 if success, 0 if the projection along the tangent plane are invalid.

Rotation of the oriented surfacic ball of ip0.

At this point, lispoi contains the oriented surface ball of point p0, that has been rotated through r, with the convention that triangle l has edges lispoi[l]; lispoi[l+1]

Definition at line 350 of file movpt_3d.c.

Here is the caller graph for this function:

◆ MMG3D_set_geom()

void MMG3D_set_geom ( MMG5_pMesh  mesh,
MMG5_pPoint  ppt,
int16_t  tag,
MMG5_int  nmref,
MMG5_int  edgref,
double  no1[3],
double  no2[3],
double  to[3] 
)
Parameters
meshpointer toward mesh
pptpointer toward point whose geom data have to be updated
tagpoint tag
nmrefref that has to be setted at point ppt if point is non-manifold
edgrefref that has to be setted at point ppt if point is manifold (edg ref)
no1normal that has to be setted at point ppt (if needed)
no2normal that has to be setted at point ppt (if needed)
totangent that has to be setted at point ppt (if needed)

Set geometric info (ref, tag, normals and tangent) at point ppt.

Definition at line 59 of file mmg3d1.c.

Here is the caller graph for this function:

◆ MMG3D_set_metricAtPointsOnReqEdges()

int MMG3D_set_metricAtPointsOnReqEdges ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int8_t  ismet 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
ismet1 if user provided 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.

Definition at line 564 of file isosiz_3d.c.

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

◆ MMG3D_set_reqBoundaries()

void MMG3D_set_reqBoundaries ( MMG5_pMesh  mesh)
Parameters
meshpointer towarad the mesh structure.

Set all boundary triangles to required and add a tag to detect that they are not realy required.

Definition at line 46 of file analys_3d.c.

Here is the caller graph for this function:

◆ MMG3D_setMeshSize_alloc()

int MMG3D_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.

Definition at line 288 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG3D_setMeshSize_initData()

int MMG3D_setMeshSize_initData ( MMG5_pMesh  mesh,
MMG5_int  np,
MMG5_int  ne,
MMG5_int  nprism,
MMG5_int  nt,
MMG5_int  nquad,
MMG5_int  na 
)
Parameters
meshpointer toward the mesh structure.
npnumber of vertices.
nenumber of tetrahedra.
nprismnumber of prisms.
ntnumber of triangles.
nquadnumber of quads.
nanumber of edges.
Returns
0 if failed, 1 otherwise.

Check the input mesh size and assign their values to the mesh.

Definition at line 216 of file API_functions_3d.c.

Here is the caller graph for this function:

◆ MMG3D_setref_ls()

int MMG3D_setref_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
Returns
1.

Set references to tets according to the sign of the level set function.

Definition at line 1256 of file mmg3d2.c.

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

◆ MMG3D_setref_lssurf()

int MMG3D_setref_lssurf ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set values.
Returns
1.

Set references to surface triangles according to the sign of the level set function.

Definition at line 419 of file mmg3d2s.c.

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

◆ MMG3D_simbulgept()

int MMG3D_simbulgept ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ret,
MMG5_int  ip 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric.
listpointer toward the edge shell.
retsize of the edge shell.
ipnew point index.
Returns
1 if all checks are ok
0 if fail due to a very bad quality elt
2 if fail due to a ridge angle creation

Simulate at the same time creation and bulging of one point, with new position o and tag tag, to be inserted at an edge, whose shell is passed.

Check the deviation for new triangles

Definition at line 324 of file split_3d.c.

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

◆ MMG3D_snpval_ls()

int MMG3D_snpval_ls ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set function.
Returns
1 if success, 0 if fail.

Snap values of the level set function very close to 0 to exactly 0, and prevent nonmanifold patterns from being generated.

Definition at line 669 of file mmg3d2.c.

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

◆ MMG3D_snpval_lssurf()

int MMG3D_snpval_lssurf ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the level-set function.
Returns
1 if success, 0 if fail.

Snap values of the level set function very close to 0 to exactly 0, and prevent nonmanifold patterns from being generated.

Definition at line 107 of file mmg3d2s.c.

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

◆ MMG3D_split1_sim()

int MMG3D_split1_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if split leads to invalid situation, else 1.

Simulate the splitting of 1 edge of element

Definition at line 94 of file split_3d.c.

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

◆ MMG3D_split2_sim()

int MMG3D_split2_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of two opposite edges.

Definition at line 1368 of file split_3d.c.

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

◆ MMG3D_split2sf_sim()

int MMG3D_split2sf_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of two edges that belong to a common face

Definition at line 1075 of file split_3d.c.

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

◆ MMG3D_split3_sim()

int MMG3D_split3_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)

Simulate split of 1 face (3 edges)

Definition at line 1571 of file split_3d.c.

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

◆ MMG3D_split3cone_sim()

int MMG3D_split3cone_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 3 edges in cone configuration.

Definition at line 1790 of file split_3d.c.

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

◆ MMG3D_split3op_sim()

int MMG3D_split3op_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 3 edges in opposite configuration.

Definition at line 2442 of file split_3d.c.

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

◆ MMG3D_split4op_sim()

int MMG3D_split4op_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 4 edges in opposite configuration.

Definition at line 3555 of file split_3d.c.

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

◆ MMG3D_split4sf_sim()

int MMG3D_split4sf_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 4 edges in a configuration when 3 lie on the same face.

Definition at line 3251 of file split_3d.c.

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

◆ MMG3D_split5_sim()

int MMG3D_split5_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 5 edges.

Definition at line 3962 of file split_3d.c.

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

◆ MMG3D_split6_sim()

int MMG3D_split6_sim ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6] 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
Returns
0 if the split fail, 1 otherwise

Simulate split of 6 edges.

Definition at line 4258 of file split_3d.c.

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

◆ MMG3D_splitItem()

int MMG3D_splitItem ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int  k,
int  iar,
double  OCRIT 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
kelt index.
iarindex of edge to split.
OCRITquality threshold.
Returns
1 if success, 0 otherwise

Try to split edge number iar of tetra k

Definition at line 394 of file opttyp_3d.c.

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

◆ MMG3D_splsurfedge()

int MMG3D_splsurfedge ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_pTetra  pt,
MMG5_pxTetra  pxt,
int8_t  imax,
int8_t  typchk,
int8_t  chkRidTet,
int *  warn 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of the tetra to split.
pttetra to split
pxtassociated xtetra
imaxindex of the edge to split to split
typchktype of check
chkRidTetcheck for ridge metric
*warnwarn is set to 1 if we don't have enough memory to complete mesh.
Returns
-1 if fail, 0 if we can't split but the upper loop may continue, 1 if the edge is splitted, 2 if we can't split due to lack of memory

Split a surface edge using split1b

Definition at line 1927 of file mmg3d1.c.

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

◆ MMG3D_swap23()

int MMG3D_swap23 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  metRidTyp,
int  ifac,
int  conf0,
MMG5_int  adj,
int  conf1 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the sol structure.
kindex of the tetrahedron with multiple boundary faces (to be swapped).
metRidTypmetric storage (classic or special)
ifacface of the tetra k that give the best results for the swap23
conf0detected configuration for the swap23 of the tetra k
adjneighbour of the tetra k through the face ifac (4*k1+ifac1)
conf1detected configuration for the swap23 of the tetra adj/4
Returns
-1 if lack of memory, 0 if fail to swap, 1 otherwise.

Search an adjacent to the tetra k and perform swap 2->3 (the common face of the 2 tetra is destroyed and replaced by a common edge used by the three new elts).

Remarks
used in anatet4 to remove the tetra with multiple boundary faces.

Neighbouring element with which we will try to swap

Swap

Quality Update

Definition at line 603 of file swap_3d.c.

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

◆ MMG3D_swpItem()

int MMG3D_swpItem ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int  k,
int  iar 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
kelt index.
iarindex of edge to not try to swap.
Returns
-1 if fail, 0 if we don't swap anything, 1 otherwise.

Try to swap edge iar of tetra k.

Definition at line 328 of file opttyp_3d.c.

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

◆ MMG3D_tetraQual()

int MMG3D_tetraQual ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the meric structure.
metRidTypmetric storage (classic or special)
Returns
1 if success, 0 if fail.

Compute the quality of the tetras over the mesh.

Definition at line 50 of file quality_3d.c.

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

◆ MMG3D_unset_reqBoundaries()

void MMG3D_unset_reqBoundaries ( MMG5_pMesh  mesh)
Parameters
meshpointer towarad the mesh structure.

Set all boundary triangles to required and add a tag to detect that they are not realy required.

Definition at line 875 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_update_eltsVertices()

int MMG3D_update_eltsVertices ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure (unused).
Returns
1 if success, 0 otherwise

Update the element vertices indices with the pack point index stored in the tmp field of the points.

Definition at line 807 of file libmmg3d.c.

Here is the caller graph for this function:

◆ MMG3D_update_xtetra()

int MMG3D_update_xtetra ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.
Returns
1 if success, 0 if the xtetra array can't be reallocated.

Update the xtetra array to store the new bdy faces created by the isosurface discretization.

Definition at line 1309 of file mmg3d2.c.

Here is the caller graph for this function:

◆ MMG3D_vfrac()

double MMG3D_vfrac ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  k,
int  pm 
)
Parameters
meshpointer toward the mesh structure
solpointer toward the ls function
kindex of the triangle
Returns
volfrac

Calculate the area of the positive (if pm == 1) or negative (if pm == -1) subdomain inside tetra k defined by the ls function in sol

Checks for debug mode

Definition at line 107 of file mmg3d2.c.

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

◆ MMG3D_zaldy()

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

allocate main structure

Definition at line 346 of file zaldy_3d.c.

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

◆ MMG5_anatet()

int MMG5_anatet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int8_t  typchk,
int  patternMode 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
typchktype of checking for edges length.
patternModeflag to say if we perform vertex insertion by patterns or by delaunay kernel.
Returns
0 if fail, number of new points otherwise.

Analyze tetrahedra and split if needed.

Definition at line 3116 of file mmg3d1.c.

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

◆ MMG5_bdryIso()

int MMG5_bdryIso ( MMG5_pMesh  )

◆ MMG5_bdryPerm()

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

Make orientation of triangles compatible with tetra faces for external tria and with domain of max ref for interface tria.

Definition at line 2135 of file hash_3d.c.

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

◆ MMG5_bdrySet()

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

Set the triangles references to the tetrahedra faces and edges.

Definition at line 1744 of file hash_3d.c.

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

◆ MMG5_bdryUpdate()

int MMG5_bdryUpdate ( MMG5_pMesh  mesh)
Parameters
mesh
Returns
1 if successful, 0 if not.

Update tag and refs of tetra edges. If tetra is required, set the faces/edges to required.

Remarks
While remeshing:
  • A tetra with a boundary face has a xtetra:
    • a boundary edge has consistent tags as soon as it has a non 0 tag; #warning check this case
    • some boundary edges may have a 0 tag
  • a tetra with a boundary edge but no bdy faces may or may not have a xtetra and boundary edges may have or may not have tags so we can't guess nothing with such xtetra.

Definition at line 2044 of file hash_3d.c.

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

◆ MMG5_bdyMCF()

int MMG5_bdyMCF ( MMG5_pMesh  )

◆ MMG5_BezierEdge()

int MMG5_BezierEdge ( MMG5_pMesh  mesh,
MMG5_int  ip0,
MMG5_int  ip1,
double  b0[3],
double  b1[3],
int8_t  ised,
double  v[3] 
)
inline
Parameters
meshpointer toward the mesh structure.
ip0index of the first point of the curve.
ip1index of the second point of the curve.
b0the first computed extrapolated control point.
b1the second computed extrapolated control point.
isedflag for special edge.
vdirection for normal vectors.

Compute control points associated to the underlying curve to $[p0;p1]$. ised = 1 if $[p0;p1]$ must be considered as a special edge. Provide a direction v which will be considered as reference when dealing with choice of normal vectors.

Definition at line 152 of file bezier_3d.c.

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

◆ MMG5_BezierGeod()

double MMG5_BezierGeod ( double  c1[3],
double  c2[3],
double  t1[3],
double  t2[3] 
)
inline
Parameters
c1coordinates of the first point of the curve.
c2coordinates of the second point of the curve.
t1normal at the first point of the curve.
t2normal at the second point of the curve.
Returns
The parameter value.

Compute value of the parameter that makes the underlying Bezier curve with 'constant speed'

Definition at line 111 of file bezier_3d.c.

Here is the caller graph for this function:

◆ MMG5_BezierNom()

int MMG5_BezierNom ( MMG5_pMesh  mesh,
MMG5_int  ip0,
MMG5_int  ip1,
double  s,
double *  o,
double *  no,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
nonormal at point o (to fill)
totangent at point o along edge ip0 ip1 (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value s from point ip0, as well as interpolate of normals, tangent for a NOM edge

Definition at line 527 of file tools_3d.c.

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

◆ MMG5_BezierRef()

int MMG5_BezierRef ( MMG5_pMesh  mesh,
MMG5_int  ip0,
MMG5_int  ip1,
double  s,
double *  o,
double *  no,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
nonormal at point o (to fill)
totangent at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a REF edge.

Definition at line 352 of file tools_3d.c.

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

◆ MMG5_BezierReg()

int MMG5_BezierReg ( MMG5_pMesh  mesh,
MMG5_int  ip0,
MMG5_int  ip1,
double  s,
double  v[3],
double *  o,
double *  no 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
vreference normal
opoint coordinates
nonormal at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a regular edge ; v = ref vector (normal) for choice of normals if need be

Definition at line 694 of file tools_3d.c.

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

◆ MMG5_BezierRidge()

int MMG5_BezierRidge ( MMG5_pMesh  mesh,
MMG5_int  ip0,
MMG5_int  ip1,
double  s,
double *  o,
double *  no1,
double *  no2,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
no1normal at point o (to fill)
no2normal at point o (to fill)
totangent at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no1 and no2 if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a RIDGE edge

Definition at line 145 of file tools_3d.c.

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

◆ MMG5_BezierTgt()

int MMG5_BezierTgt ( double  c1[3],
double  c2[3],
double  n1[3],
double  n2[3],
double  t1[3],
double  t2[3] 
)
inline
Parameters
c1coordinates of the first point of the curve.
c2coordinates of the second point of the curve.
n1normal at the first point of the curve.
n2normal at the second point of the curve.
t1computed normal at the first point of the curve.
t2computed normal at the second point of the curve.
Returns
0 if failed, 1 otherwise.

Compute tangent to geometric support curve passing through c1,c2, with normals n1,n2

Definition at line 53 of file bezier_3d.c.

Here is the caller graph for this function:

◆ MMG5_boulenm()

int MMG5_boulenm ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ip,
int  iface,
double  n[3],
double  t[3] 
)
Parameters
meshpointer toward the mesh structure.
starttetra index.
ippoint index.
ifaceface index.
ncomputed normal vector.
tcomputed tangent vector.
Returns
0 if point is singular, 1 otherwise.

Define normal and tangent vectors at a non manifold point (ip in start, supported by face iface), enumerating its (outer)surfacic ball.

Definition at line 196 of file boulep_3d.c.

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

◆ MMG5_boulenmInt()

int MMG5_boulenmInt ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ip,
double  t[3] 
)
Parameters
meshpointer toward the mesh structure.
starttetra index.
ippoint index.
tcomputed tangent vector.
Returns
0 when more than two NOM points are attached to ip, 1 if sucess.

Travel the ball of the internal non manifold point ip in tetra start and calculate the tangent vector to the underlying curve.

Remarks
we are not able to compute tangent along non-manifold points for edge-connected meshes. In this case the point doesn't have xpoint nor tangent or normal.

Definition at line 342 of file boulep_3d.c.

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

◆ MMG5_boulernm()

int MMG5_boulernm ( MMG5_pMesh  mesh,
MMG5_Hash hash,
MMG5_int  start,
int  ip,
MMG5_int *  ng,
MMG5_int *  nr,
MMG5_int *  nm 
)
Parameters
meshpointer toward the mesh structure.
hashpointer toward an allocated hash table.
startindex of the starting tetrahedra.
iplocal index of the point in the tetrahedra start.
ngpointer toward the number of ridges.
nrpointer toward the number of reference edges.
nmpointer toward the number of non-manifold edges.
Returns
ns the number of special edges passing through ip, -1 if fail.

Count the numer of ridges and reference edges incident to the vertex ip when ip is non-manifold.

Definition at line 455 of file boulep_3d.c.

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

◆ MMG5_boulesurfvolp()

int MMG5_boulesurfvolp ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ip,
int  iface,
int64_t *  listv,
int *  ilistv,
MMG5_int *  lists,
int *  ilists,
int  isnm 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetra.
ipindex in start of the looked point.
ifaceindex in start of the starting face.
listvpointer toward the computed volumic ball.
ilistvpointer toward the computed volumic ball size.
listspointer toward the computed surfacic ball.
ilistspointer toward the computed surfacic ball size.
isnm1 if ip is non-manifold, 0 otherwise.
Returns
-1 if fail, 1 otherwise.

Compute the volumic ball of a SURFACE point p, as well as its surfacic ball, starting from tetra start, with point ip, and face if in tetra volumic ball:

  • listv[k] = 4* tet index + index of point surfacic ball.
  • lists[k] = 4* tet index + index of boundary face.
Warning
Don't work for a non-manifold point if start has an adjacent through iface (for example : a non-manifold subdomain). Thus, if ip is non-manifold, must be called only if start has no adjacent through iface.

Definition at line 607 of file boulep_3d.c.

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

◆ MMG5_boulesurfvolpNom()

int MMG5_boulesurfvolpNom ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ip,
int  iface,
int64_t *  listv,
int *  ilistv,
MMG5_int *  lists,
int *  ilists,
MMG5_int *  refmin,
MMG5_int *  refplus,
int  isnm 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetra.
ipindex in start of the looked point.
ifaceindex in start of the starting face.
listvpointer toward the computed volumic ball.
ilistvpointer toward the computed volumic ball size.
listspointer toward the computed surfacic ball.
ilistspointer toward the computed surfacic ball size.
refminreturn the reference of one of the two subdomains in presence
refplusreturn the reference of the other subdomain in presence
isnmis the looked point ip non-manifold?
Returns
-1 if fail, 1 otherwise.

Compute the volumic ball of a SURFACE point p, as well as its surfacic ball, starting from tetra start, with point ip, and face if in tetra volumic ball. listv[k] = 4*number of tet + index of point surfacic ball. lists[k] = 4*number of tet + index of face.

Warning
Don't work for a non-manifold point if start has an adjacent through iface (for example : a non-manifold subdomain). Thus, if ip is non-manifold, must be called only if start has no adjacent through iface.

Definition at line 771 of file boulep_3d.c.

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

◆ MMG5_bouletrid()

int MMG5_bouletrid ( MMG5_pMesh  mesh,
MMG5_int  start,
int  iface,
int  ip,
int *  il1,
MMG5_int *  l1,
int *  il2,
MMG5_int *  l2,
MMG5_int *  ip0,
MMG5_int *  ip1 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetrahedron.
ipindex of the looked ridge point.
ifaceindex in start of the starting face.
il1pointer toward the first ball size.
l1pointer toward the first computed ball (associated to n_1's side).
il2pointer toward the second ball size.
l2pointer toward the second computed ball (associated to n_2's side).
ip0index of the first extremity of the ridge.
ip1index of the second extremity of the ridge.
Returns
0 if fail, 1 otherwise.

Computation of the two surface balls of a ridge point: the list l1 is associated to the normal of face iface. ip0 and ip1 are the indices of the 2 ending point of the ridge. Both lists are returned enumerated in direct order.

Definition at line 952 of file boulep_3d.c.

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

◆ MMG5_boulevolp()

int MMG5_boulevolp ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ip,
int64_t *  list 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetrahedra.
iplocal index of the point in the tetrahedra start.
listpointer toward the list of the tetra in the volumic ball of ip.
Returns
0 if fail and the number of the tetra in the ball otherwise.

Fill the volumic ball (i.e. filled with tetrahedra) of point ip in tetra start. Results are stored under the form $4*kel + jel$, kel = number of the tetra, jel = local index of p within kel.

Definition at line 54 of file boulep_3d.c.

Here is the caller graph for this function:

◆ MMG5_caltet33_ani()

double MMG5_caltet33_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTetra  pt 
)
inline
Parameters
meshpointer toward the mesh structure.
metpointer toward the meric structure.
ptpointer toward a tetrahedra.
Returns
The anisotropic quality of the tet or 0.0 if fail.

Compute the quality of the tet pt with respect to the anisotropic metric met. $ Q = V_met(K) / (sum(len(edge_K)^2)^(3/2) $ and for a calssic storage of metrics at ridges.

Todo:
test with the square of this measure

Definition at line 109 of file quality_3d.c.

Here is the caller graph for this function:

◆ MMG5_cavity_ani()

int MMG5_cavity_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  iel,
int  ip,
int64_t *  list,
int  lon,
double  volmin 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the sol structure.
ieltetra index.
ippoint local index in iel.
listpointer toward the list of tetra in the shell of edge where ip will be inserted.
lonnumber of tetra in the list.
Returns
ilist number of tetra inside the cavity or -ilist if one of the tet of the cavity is required.

Mark elements in cavity and update the list of tetra in the cavity.

Definition at line 581 of file delaunay_3d.c.

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

◆ MMG5_cavity_iso()

int MMG5_cavity_iso ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  iel,
int  ip,
int64_t *  list,
int  lon,
double  volmin 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the sol structure.
ieltetra index.
ippoint local index in iel.
listpointer toward the list of tetra in the shell of edge where ip will be inserted.
lonnumber of tetra in the list.
Returns
ilist number of tetra inside the cavity or -ilist if one of the tet of the cavity is required.

Mark elements in cavity and update the list of tetra in the cavity.

Definition at line 741 of file delaunay_3d.c.

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

◆ MMG5_cenrad_ani()

int MMG5_cenrad_ani ( MMG5_pMesh  mesh,
double *  ct,
double *  m,
double *  c,
double *  rad 
)
Parameters
meshpointer toward the mesh structure.
ctcoordinates of vertices of the element.
mmetric at the point for which we compute the cavity.
ccenter of circumscribing circle to the element.
radsquared radius of circumscribing circle to the element.
Returns
0 if failed, 1 otherwise.

Compute radius (squared) and center of circumscribing circle to the element for an anisotropic metric m.

Definition at line 142 of file cenrad_3d.c.

Here is the caller graph for this function:

◆ MMG5_cenrad_iso()

int MMG5_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.
radsquared radius of circumscribing circle to the element.
Returns
0 if failed, 1 otherwise.

Compute radius (squared) and center of circumscribing circle to the element.

Definition at line 45 of file cenrad_3d.c.

Here is the caller graph for this function:

◆ MMG5_chkBdryTria()

int MMG5_chkBdryTria ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.
Returns
1 if success, 0 otherwise.
  • Remove double triangles from tria array.
  • Remove triangles that do not belong to a boundary (non opnbdy mode) from tria array.
  • Check the matching between actual and given number of faces in the mesh: Count the number of faces in mesh and compare this number to the number of given triangles.
  • If the founded number exceed the given one, add the missing boundary triangles (call to MMG5_bdryTria). Do nothing otherwise.
  • Fill the adjacency relationship between prisms and tetra (fill adjapr with a negative value to mark this special faces).
  • Set to required the triangles at interface betwen prisms and tet.

Step 1: scan the mesh and count the boundaries

Step 2: detect the extra boundaries (that will be ignored) provided by the user

Step 3: add the missing boundary triangles or, if the mesh contains prisms, set to required the triangles at interface betwen prisms and tet

Definition at line 1439 of file hash_3d.c.

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

◆ MMG5_chkcol_bdy()

int MMG5_chkcol_bdy ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  iface,
int8_t  iedg,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
MMG5_int  refmin,
MMG5_int  refplus,
int8_t  typchk,
int  isnm,
int8_t  isnmint 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element in which we collapse.
ifaceface through wich we perform the collapse
iedgedge to collapse (in local face num)
listvpointer toward the list of the tetra in the ball of p0.
ilistvnumber of tetra in the ball of p0.
listspointer toward the surfacic ball of p0.
ilistsnumber of tetra in the surfacic ball of p0.
refminreference of one of the two subdomains in presence
refplusreference of the other subdomain in presence
typchktypchk type of checking permformed for edge length (hmax or MMG3D_LLONG criterion).
isnm1 if edge is non-manifold
isnmint1 if ip is an internal non manifold point;
Returns
ilistv if success, 0 if the point cannot be collapsed, -1 if fail.

Check whether collapse ip -> iq could be performed, ip boundary point; 'mechanical' tests (positive jacobian) are not performed here ; iface = boundary face on which lie edge iedg - in local face num. (pq, or ia in local tet notation). If isnm is 1, the collapse occurs along an external MG_NOM edge. If isnmint is 1, ip is an internal non manifold point and dont have normals. In this last case, lists, ilists refmin, refplus and isnm variables aren't used (we neither have a surfacic ball nor "positive" and "negative" volumes)

Remarks
we don't check edge lengths.

Definition at line 515 of file colver_3d.c.

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

◆ MMG5_chkcol_int()

int MMG5_chkcol_int ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  iface,
int8_t  iedg,
int64_t *  list,
int  ilist,
int8_t  typchk 
)

Check whether collapse ip -> iq could be performed, ip internal ; 'mechanical' tests (positive jacobian) are not performed here

Definition at line 43 of file colver_3d.c.

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

◆ MMG5_chkedg()

int8_t MMG5_chkedg ( MMG5_pMesh  mesh,
MMG5_Tria pt,
int8_t  ori,
double  hmax,
double  hausd,
int  locPar 
)
Parameters
meshpointer toward the mesh structure.
ptpointer toward the triangle.
oriorientation of the triangle (1 for direct orientation, 0 otherwise).
hmaxmaximal edge length.
hausdmaximal hausdorff distance.
locPar1 if hmax and hausd are locals parameters.
Returns
-1 if error
edges of the triangle pt that need to be split.

Find edges of (virtual) triangle pt that need to be split with respect to the Hausdorff criterion.

Definition at line 363 of file mmg3d1.c.

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

◆ MMG5_chkfemtopo()

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

Count the number of tetras that have several boundary faces, as well as the number of internal edges connecting points of the boundary.

Definition at line 767 of file chkmsh_3d.c.

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

◆ MMG5_chkptonbdy()

int MMG5_chkptonbdy ( MMG5_pMesh  mesh,
MMG5_int  np 
)

Search boundary faces containing point np.

Returns
0 if fail, 1 otherwise
Warning
Not used.

Definition at line 656 of file chkmsh_3d.c.

Here is the call graph for this function:

◆ MMG5_chkswpbdy()

int MMG5_chkswpbdy ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ilist,
MMG5_int  it1,
MMG5_int  it2,
int8_t  typchk 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
listpointer toward the shell of the edge.
ilistpointer toward the size of the shell of the edge.
it1first element of the open shell.
it2last element of the open shell.
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if fail, 0 if we can not swap the edge, 1 otherwise.

Check whether edge whose shell is provided should be swapped for geometric approximation purposes (the 2 surface triangles are also provided).

Definition at line 57 of file swap_3d.c.

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

◆ MMG5_chkswpgen()

MMG5_int MMG5_chkswpgen ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  start,
int  ia,
int *  ilist,
int64_t *  list,
double  crit,
int8_t  typchk 
)
Parameters
meshpointer toward the mesh structure
metpointer toward the metric structure.
starttetrahedra in which the swap should be performed
iaedge that we want to swap
ilistpointer to store the size of the shell of the edge
listpointer to store the shell of the edge
critimprovment coefficient
Returns
-1 if fail, 0 if we cannot swap, the index of point corresponding to the swapped configuration otherwise ( $4*k+i$).
Parameters
typchktype of checking permformed for edge length (hmin or LSHORT criterion).

Check whether swap of edge ia in start should be performed, and return $4*k+i$ the index of point corresponding to the swapped configuration. The shell of edge is built during the process.

Definition at line 57 of file swapgen_3d.c.

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

◆ MMG5_chkVertexConnectedDomains()

int MMG5_chkVertexConnectedDomains ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.
Returns
1.

check subdomains connected by a vertex and mark these vertex as CRN and REQ.

Definition at line 471 of file analys_3d.c.

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

◆ MMG5_cntbdypt()

int MMG5_cntbdypt ( MMG5_pMesh  mesh,
MMG5_int  nump 
)

Count how many boundary faces share point nump.

Warning
Not used.

Definition at line 718 of file chkmsh_3d.c.

Here is the call graph for this function:

◆ MMG5_colver()

MMG5_int MMG5_colver ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ilist,
int8_t  indq,
int8_t  typchk 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
listpointer toward the ball of the point
ilistnumber of elements in the ball of the point
indqlocal index of the point on which we collapse
typchktype of check performed depending on the remeshing step
Returns
np the index of the collpased point if success, 0 if we cannot collapse, -1 if we fail.

Collapse vertex p = list[0]%4 of tetra list[0]/4 over vertex indq of tetra list[0]/4. Only physical tests (positive jacobian) are done (i.e. approximation of the surface, etc... must be performed outside).

Merge tags and references of edges that will merge due to the collapse (the shell of each edge is travelled so each xtetra of the shell is updated). Note that it can't be done in the previous loop because the mesh would be corrupted if we stop the collapse. It can't neither be done in the next loop because we start to delete the elements of the shell.

Definition at line 1144 of file colver_3d.c.

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

◆ MMG5_coquil()

int MMG5_coquil ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ia,
int64_t *  list,
int8_t *  isbdy 
)
Parameters
meshpointer toward the mesh structure
startindex of the starting tetra
iaindex of the edge
listlist of tetra sharing the edge ia
isbdy1 if edge is bdy, 0 otherwise (note that at interface of 2 domains the edge shell of a bdy edge can be closed)
Returns
2*ilist if shell is closed, 2*ilist +1 otherwise, 0 if one of the tet of the shell is required, -1 if fail.

Find all tets sharing edge ia of tetra start.

Definition at line 1403 of file boulep_3d.c.

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

◆ MMG5_coquilface()

int MMG5_coquilface ( MMG5_pMesh  mesh,
MMG5_int  start,
int8_t  iface,
int  ia,
int64_t *  list,
MMG5_int *  it1,
MMG5_int *  it2,
int  silent 
)
Parameters
meshpointer toward the mesh structure.
startindex of the starting tetrahedron.
ifaceindex of the boundary face from which we come.
iaindex of edge whose shell is computed (in tetra).
listpointer toward the list of tetra in the shell (to fill).
it1pointer toward the index of the first boundary face sharing ia (to fill).
it2pointer toward the index of the second boundary face sharing ia (to fill).
silentif 1, print error message for more than 2 boundary triangles in the shell
Returns
-1 if fail, $2*ilist$ if shell is closed, $2*ilist+1$ otherwise.

Find all tets sharing edge ia of tetra start, and stores boundary faces when met. $ it1 $ and $ it2 = 6*iel + iface$, iel = index of tetra, iface = index of face in tetra.

Warning
Don't work if ia has only one boundary face in its shell.

Definition at line 1843 of file boulep_3d.c.

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

◆ MMG5_coquilFaceErrorMessage()

void MMG5_coquilFaceErrorMessage ( MMG5_pMesh  mesh,
MMG5_int  k1,
MMG5_int  k2 
)
Parameters
meshpointer toward the mesh structure.
k1should contain a tetra index.
k2should contain a tetra index different from k2.

Print an error message if MMG5_coquilFace detect a boundary topology problem.

Definition at line 1613 of file boulep_3d.c.

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

◆ MMG5_coquilTravel()

int16_t MMG5_coquilTravel ( MMG5_pMesh  mesh,
MMG5_int  na,
MMG5_int  nb,
MMG5_int *  adj,
MMG5_int *  piv,
int8_t *  iface,
int8_t *  i 
)
Parameters
meshpointer toward the mesh structure.
naglobal index of edge extremity.
nbglobal index of edge extremity.
adjstarting tetrahedron at the begining and finish tet at the end.
pivglobal index of the vertex opposite to the travelling face (updated for the finish tet at the end).
ifaceprevious traveling face of the tet (suspected to be boundary), updated.
ilocal index of the edge $[na,nb]$ in tet adj.
Returns
the tag of the face iface of the tetra adj, 0 if the tetra is not boundary, -1 if fail.

Travel around the edge $[na,nb]$ from tetra adj and through the face piv.

Definition at line 1959 of file boulep_3d.c.

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

◆ MMG5_countelt()

int MMG5_countelt ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
double *  weightelt,
long *  npcible 
)
Parameters
meshpointer toward the mesh.
sol,pointertoward the sol structure.
weighteltput weight on elts.
npcibleestimation of the final number of nodes/
Returns
0 if fail, 1 if success

Approximation of the final number of vertex.

Warning
call MMG3D_hashTetra(mesh,1) or analysis before using

Definition at line 808 of file quality_3d.c.

Here is the call graph for this function:

◆ MMG5_delone()

int MMG5_delone ( MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_int  ip,
int64_t *  list,
int  ilist 
)
Parameters
meshpointer toward the mesh structure.
solpointer toward the solution structure.
ipindex of the point to insert.
listpointer toward the list of the tetra in the cavity (computed by MMG5_cavity).
ilistnumber of tetra inside the cavity.
Returns
1 if sucess, 0 or -1 if fail.

Insertion of the vertex ip. The cavity of ip become its ball.

Definition at line 140 of file delaunay_3d.c.

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

◆ MMG5_deltag()

int MMG5_deltag ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ia,
int16_t  tag 
)
Parameters
meshpointer toward the mesh structure
startindex of the starting tetra
iaindex of the edge in tetra start that we want to modify
tagtag to remove
Returns
1 if success, 0 otherwise.

Remove the tag tag of edge ia in tetra start by travelling its shell.

Definition at line 1344 of file boulep_3d.c.

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

◆ MMG5_denoisbdy()

int MMG5_denoisbdy ( MMG5_pMesh  )

◆ MMG5_dichodisp()

int MMG5_dichodisp ( MMG5_pMesh  ,
double *   
)

◆ MMG5_directsurfball()

int MMG5_directsurfball ( MMG5_pMesh  mesh,
MMG5_int  ip,
MMG5_int *  list,
int  ilist,
double  n[3] 
)
inline

If need be, invert the travelling sense of surfacic ball so that it is travelled in the direct sense with respect to direction n anchored at point ip (ip = global num.): return 2 = orientation reversed, 1 otherwise

Definition at line 66 of file tools_3d.c.

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

◆ MMG5_estavglen()

double MMG5_estavglen ( MMG5_pMesh  mesh)

Calculate an estimate of the average (isotropic) length of edges in the mesh

Definition at line 46 of file mmg3d3.c.

Here is the caller graph for this function:

◆ MMG5_freeXPrisms()

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

Free xprism structure.

Definition at line 378 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG5_freeXTets()

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

Free xtetra structure.

Definition at line 359 of file zaldy_3d.c.

Here is the caller graph for this function:

◆ MMG5_hashGetFace()

MMG5_int MMG5_hashGetFace ( MMG5_Hash hash,
MMG5_int  ia,
MMG5_int  ib,
MMG5_int  ic 
)

return index of triangle ia ib ic

Definition at line 84 of file hash_3d.c.

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

◆ MMG5_hashPop()

int MMG5_hashPop ( MMG5_Hash hash,
MMG5_int  a,
MMG5_int  b 
)

remove edge from hash table

Definition at line 761 of file hash_3d.c.

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

◆ MMG5_hEdge()

int MMG5_hEdge ( MMG5_pMesh  mesh,
MMG5_HGeom hash,
MMG5_int  a,
MMG5_int  b,
MMG5_int  ref,
int16_t  tag 
)

store edge on geometry

Definition at line 951 of file hash_3d.c.

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

◆ MMG5_hGeom()

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

Build hashtable for initial mesh edges.

Definition at line 1022 of file hash_3d.c.

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

◆ MMG5_hGet()

int MMG5_hGet ( MMG5_HGeom hash,
MMG5_int  a,
MMG5_int  b,
MMG5_int *  ref,
int16_t *  tag 
)

get ref and tag to edge on geometry

Definition at line 918 of file hash_3d.c.

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

◆ MMG5_hNew()

int MMG5_hNew ( MMG5_pMesh  mesh,
MMG5_HGeom hash,
MMG5_int  hsiz,
MMG5_int  hmax 
)

to store edge on geometry

Definition at line 994 of file hash_3d.c.

Here is the caller graph for this function:

◆ MMG5_hPop()

int MMG5_hPop ( MMG5_HGeom hash,
MMG5_int  a,
MMG5_int  b,
MMG5_int *  ref,
int16_t *  tag 
)

remove edge from hash table

Definition at line 858 of file hash_3d.c.

Here is the call graph for this function:

◆ MMG5_hTag()

int MMG5_hTag ( MMG5_HGeom hash,
MMG5_int  a,
MMG5_int  b,
MMG5_int  ref,
int16_t  tag 
)
Parameters
hashpointer toward the hash table in which edges are stored
afirst edge extremity
bsecond edge extremity
refreference to assign to the edge
tagtag to assign
Returns
0 if the edge is not in the hash table, 1 otherwise

set tag to edge on geometry

Definition at line 825 of file hash_3d.c.

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

◆ MMG5_Init_parameters()

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

Initialization of the input parameters.

MMG3D_IPARAM_lag is used by mmg3d only but need to be negative in the scaleMesh function

Definition at line 51 of file API_functions.c.

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

◆ MMG5_interp4bar33_ani()

int MMG5_interp4bar33_ani ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
MMG5_int  ,
double *   
)

◆ MMG5_interp4bar_ani()

int MMG5_interp4bar_ani ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
MMG5_int  ,
double *   
)

◆ MMG5_interp4bar_iso()

int MMG5_interp4bar_iso ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
MMG5_int  ,
double *   
)

◆ MMG5_intmet_ani()

int MMG5_intmet_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  i,
MMG5_int  ip,
double  s 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelement index.
ilocal index of edge in k.
ipglobal index of the new point in which we want to compute the metric.
sinterpolation parameter (between 0 and 1).
Returns
0 if fail, 1 otherwise.

Interpolation of anisotropic sizemap at parameter s along edge i of elt k for a special storage of ridges metric (after defsiz call).

Definition at line 51 of file intmet_3d.c.

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

◆ MMG5_intmet_iso()

int MMG5_intmet_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  i,
MMG5_int  ip,
double  s 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kelement index.
ilocal index of edge in k.
ipglobal index of the new point in which we want to compute the metric.
sinterpolation parameter (between 0 and 1).
Returns
0 if fail, 1 otherwise.

Interpolation of anisotropic sizemap at parameter s along edge i of elt k.

Definition at line 131 of file intmet_3d.c.

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

◆ MMG5_intregmet()

int MMG5_intregmet ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
int8_t  ,
double  ,
double *   
)

◆ MMG5_intridmet()

int MMG5_intridmet ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
MMG5_int  ,
double  ,
double *  ,
double *   
)

◆ MMG5_intvolmet()

int MMG5_intvolmet ( MMG5_pMesh  ,
MMG5_pSol  ,
MMG5_int  ,
int8_t  ,
double  ,
double *   
)

◆ MMG5_isbr()

int MMG5_isbr ( MMG5_pMesh  mesh,
MMG5_int  ref 
)

Return 1 if reference ref is in the br table, 0 otherwise

Definition at line 42 of file tools_3d.c.

◆ MMG5_lapantilap()

int MMG5_lapantilap ( MMG5_pMesh  ,
double *   
)

◆ MMG5_lenedgCoor_iso()

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

Compute edge length from edge's coordinates.

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

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

Definition at line 61 of file isosiz_3d.c.

Here is the caller graph for this function:

◆ MMG5_meancur()

int MMG5_meancur ( MMG5_pMesh  mesh,
MMG5_int  np,
double  c[3],
int  ilist,
MMG5_int *  list,
double  h[3] 
)

◆ MMG5_meansizreg_iso()

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

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

Definition at line 482 of file isosiz_3d.c.

◆ MMG5_memSize()

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

Compute the available memory size of the computer.

Definition at line 852 of file tools.c.

◆ MMG5_mmg3d1_delone()

int MMG5_mmg3d1_delone ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int *  permNodGlob 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
permNodGlobif provided, strore the global permutation of nodes
Returns
0 if failed, 1 if success.

Main adaptation routine.

— stage 1: geometric mesh

— stage 2: computational mesh

Definition at line 1028 of file mmg3d1_delone.c.

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

◆ MMG5_mmg3d1_pattern()

int MMG5_mmg3d1_pattern ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int *  permNodGlob 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
permNodGlobif provided, strore the global permutation of nodes.
Returns
0 if failed, 1 if success.

Main adaptation routine.

— stage 1: geometric mesh

— Stage 2: computational mesh

Definition at line 428 of file mmg3d1_pattern.c.

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

◆ MMG5_mmg3d3()

int MMG5_mmg3d3 ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
MMG5_pSol  met,
MMG5_int **  invalidTets 
)
Parameters
meshmesh structure
dispdisplacement structure
metmetric structure
invalidTetsarray to store the list of invalid tetra if we are unable to move.
Returns
0 if fail, 1 if success to move, the opposite of the number of non valid tets if we can't move (- ninvalidTets).

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

Definition at line 583 of file mmg3d3.c.

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

◆ MMG5_mmg3dBezierCP()

int MMG5_mmg3dBezierCP ( MMG5_pMesh  mesh,
MMG5_Tria pt,
MMG5_pBezier  pb,
int8_t  ori 
)
Parameters
meshpointer toward the mesh structure.
ptpointer toward the triangle structure.
pbpointer toward the computed Bezier structure.
oritriangle orientation.
Returns
1.

Compute Bezier control points on triangle pt (cf. [4])

Todo:
merge with the MMG5_mmgsBezierCP function and remove the pointer toward this functions.
Remarks
  • prior to commit f57b861966: we were comparing absolute values of normals projection (guessing that normals can be bad oriented). In this case, we can choose the wrong normal (normal at point related to other portion of surface) when the ridge angle is almost closed (smallest than 90°) because projection of normal at first triangle and normal at second triangle (or normal at point related to second surface) tends to -1;
  • the following assert on the positivity of at least one of the projections may fail but I think that it is not a normal behaviour: it means that the surface approximation has degenerated. See issue #167

Orientation of the normals at non-manifold points

Definition at line 326 of file bezier_3d.c.

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

◆ MMG5_mmg3dChkmsh()

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

Check the mesh validity

Definition at line 454 of file chkmsh_3d.c.

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

◆ MMG5_mmg3dRenumbering()

int MMG5_mmg3dRenumbering ( int  boxVertNbr,
MMG5_pMesh  mesh,
MMG5_pSol  sol,
MMG5_pSol  fields,
MMG5_int *  permNodGlob 
)
Parameters
boxVertNbrnumber of vertices by box.
meshpointer toward the mesh structure.
solpointer toward the solution structure
fieldspointer toward an array of solution fields
permNodGlobarray to store the global permutation of nodes (non mandatory)
Returns
0 if the renumbering fail and we can't rebuild tetrahedra hashtable, 1 if the renumbering fail but we can rebuild tetrahedra hashtable or if the renumbering success.

Modifies the node indicies to prevent from cache missing.

Definition at line 114 of file librnbg_3d.c.

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

◆ MMG5_movbdynomintpt_iso()

int MMG5_movbdynomintpt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move internal non manifold point, whose volumic ball is passed

Remarks
the metric is not interpolated at the new position.

Definition at line 1482 of file movpt_3d.c.

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

◆ MMG5_movbdynompt_ani()

int MMG5_movbdynompt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move boundary non manifold point, whose volumic and (exterior) surfacic balls are passed

Remarks
we don't check if we break the hausdorff criterion.

Definition at line 727 of file anisomovpt_3d.c.

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

◆ MMG5_movbdynompt_iso()

int MMG5_movbdynompt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move boundary non-manifold point, whose volumic and surfacic balls are passed.

Remarks
the metric is not interpolated at the new position.

Definition at line 1462 of file movpt_3d.c.

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

◆ MMG5_movbdyrefpt_ani()

int MMG5_movbdyrefpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.
Remarks
we don't check if we break the hausdorff criterion.

Move boundary reference point, whose volumic and surfacic balls are passed.

Definition at line 703 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyrefpt_iso()

int MMG5_movbdyrefpt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move boundary reference point, whose volumic and surfacic balls are passed.

Remarks
the metric is not interpolated at the new position.

Definition at line 1438 of file movpt_3d.c.

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

◆ MMG5_movbdyregpt_ani()

int MMG5_movbdyregpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improveSurf,
int  improveVol 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if we can't move the point, 1 if we can, -1 if we fail.
Remarks
we don't check if we break the hausdorff criterion.
the metric is not interpolated at the new position.

Move boundary regular point, whose volumic and surfacic balls are passed.

Step 1 : rotation matrix that sends normal n to the third coordinate vector of R^3

Step 2 : rotation of the oriented surfacic ball with r : lispoi[k] is the common edge between faces lists[k-1] and lists[k]

Step 3 : Compute gradient towards optimal position = centre of mass of the ball, projected to tangent plane

Step 4 : locate new point in the ball, and compute its barycentric coordinates

Step 5 : come back to original problem, compute patch in triangle iel and check that geometric approx has not been degraded too much

Definition at line 191 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyregpt_iso()

int MMG5_movbdyregpt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improveSurf,
int  improveVol 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if we can not move, 1 if success, -1 if fail.

Move boundary regular point, whose volumic and surfacic balls are passed.

Remarks
the metric is not interpolated at the new position.

Step 1 : rotation matrix that sends normal n to the third coordinate vector of R^3

Step 2 : rotation of the oriented surfacic ball with r : lispoi[k] is the common edge between faces lists[k-1] and lists[k]

Step 3 : Compute optimal position to make current triangle equilateral, and average of these positions

Step 4 : locate new point in the ball, and compute its barycentric coordinates

Step 5 : come back to original problem, and compute patch in triangle iel

Definition at line 625 of file movpt_3d.c.

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

◆ MMG5_movbdyridpt_ani()

int MMG5_movbdyridpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal
Returns
0 if fail, 1 if success.
Remarks
we don't check if we break the hausdorff criterion.

Move boundary ridge point, whose volumic and surfacic balls are passed.

Definition at line 751 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyridpt_iso()

int MMG5_movbdyridpt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move boundary ridge point, whose volumic and surfacic balls are passed.

Definition at line 1606 of file movpt_3d.c.

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

◆ MMG5_movintpt_ani()

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

Move internal point whose volumic is passed.

Remarks
the metric is not interpolated at the new position.
we don't check if we break the hausdorff criterion.

Definition at line 58 of file anisomovpt_3d.c.

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

◆ MMG5_movintpt_iso()

int MMG5_movintpt_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  list,
int  ilist,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listpointer toward the volumic ball of the point.
ilistsize of the volumic 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, 1 if we can.

Move internal point whose volumic is passed.

Remarks
the metric is not interpolated at the new position.
we don't check if we break the hausdorff criterion.

Definition at line 58 of file movpt_3d.c.

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

◆ MMG5_movintptLES_iso()

int MMG5_movintptLES_iso ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
MMG5_int *  list,
int  ilist,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listpointer toward the volumic ball of the point.
ilistsize of the volumic 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, 1 if we can.

Move internal point whose volumic ball is passed (for LES optimization). The optimal point position is computed as the barycenter of the optimal point position for each tetra. The optimal point position for a tetra is the point located over the normal of the face at the face barycenter and at the distance 1 of the face.

Remarks
the metric is not interpolated at the new position.
we don't check if we break the hausdorff criterion.
not used.

Definition at line 185 of file movpt_3d.c.

Here is the call graph for this function:

◆ MMG5_movtet()

MMG5_int MMG5_movtet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
double  clickSurf,
double  clickVol,
int  moveVol,
int  improveSurf,
int  improveVolSurf,
int  improveVol,
int  maxit,
MMG5_int  testmark 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
clickSurftriangle quality threshold under which we want to move
clickVoltetra quality threshold under which we want to move
moveVolinternal move
improveSurfforbid surface degradation during the move
improveVolSurfforbid volume degradation during the surfacic move
improveVolforbid volume degradation during the move
maxitmaximum number of iteration
testmarkall the tets with a mark less than testmark will not be treated.
Returns
-1 if failed, number of moved points otherwise.

Analyze tetrahedra and move points so as to make mesh more uniform.

Definition at line 732 of file mmg3d1.c.

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

◆ MMG5_moymet()

int MMG5_moymet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pTetra  pt,
double *  m1 
)
inline
Parameters
meshpointer toward the mesh structure.
metpointer toward the sol structure.
ptpointer toward a tetra.
m1computed metric.
Returns
the number of vertices used for the mean computation, 0 if fail.

Compute mean metric over the internal tetra pt. Do not take into account the metric values at ridges points (because we don't know how to build it).

Definition at line 144 of file anisosiz_3d.c.

Here is the caller graph for this function:

◆ MMG5_norface()

int MMG5_norface ( MMG5_pMesh  mesh,
MMG5_int  k,
int  iface,
double  n[3] 
)

Compute normal to face iface of tetra k, exterior to tetra k

Definition at line 52 of file tools_3d.c.

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

◆ MMG5_norver()

int MMG5_norver ( MMG5_pMesh  mesh)
Parameters
meshpointer toward mesh
Returns
1 if successful, 0 if failed

Compute normals at C1 vertices, for C0: tangents.

Following list summerizes computed (and not computed) data depending on point type:

  • Corner point (MG_CRN): nothing (and no xpoint);
  • Reference point (MG_REF): xp, tangent (ppt->n), 1 normal (pxp->n1);
  • Ridge point (MG_GEO): xp, tangent,2 normals (pxp->n1 and n2);
  • Non-manifold point (MG_NOM) are not filled here but in nmgeom function
  • Open boundary points (MG_OPNBDY) are non-manifold so they are filled in nmgeom too.
  • Required points are analyzed using their other flags (so they may have an xpoint and a normal) but their normal is not used during remeshing.

Normals at regular boundary points can be provided by users but are ignored along featured edges.

recomputation of normals only if mesh->xpoint has been freed

Step 1: identify boundary points

input normals are ignored along all type of featured edges (ref, geo, nom) but it is possible to implement their taking into account along non-ridges reference edges and external non-manifold ones.

Step 2: Allocate memory to store normals for boundary points

Step 3: compute normals + tangents

At C1 point

along ridge-curve

Along ridge: compute tangent as intersection of n1 + n2

Definition at line 638 of file analys_3d.c.

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

◆ MMG5_openCoquilTravel()

int16_t MMG5_openCoquilTravel ( MMG5_pMesh  mesh,
MMG5_int  na,
MMG5_int  nb,
MMG5_int *  adj,
MMG5_int *  piv,
int8_t *  iface,
int8_t *  i 
)
Parameters
meshpointer toward the mesh structure.
naglobal index of edge extremity.
nbglobal index of edge extremity.
adjstarting tetrahedron at the begining and finish tet at the end.
pivglobal index of the vertex opposite to the travelling face (updated for the finish tet at the end).
ifacetraveling face of the tet (suspected to be boundary), updated.
ilocal index of the edge $[na,nb]$ in tet adj.
Returns
1 if success, 0 if fail.

Travel around the edge $[na,nb]$ from tetra adj and through the face piv. The shell of the edge is open and the tetra adj has no neighbour through the face iface.

Definition at line 2011 of file boulep_3d.c.

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

◆ MMG5_orcal_poi()

double MMG5_orcal_poi ( double  a[3],
double  b[3],
double  c[3],
double  d[3] 
)

◆ MMG5_paktet()

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

tetra packing.

Definition at line 50 of file hash_3d.c.

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

◆ MMG5_ppgdisp()

int MMG5_ppgdisp ( MMG5_pMesh  ,
double *   
)

◆ MMG5_printTetra()

void MMG5_printTetra ( MMG5_pMesh  mesh,
char *  fileName 
)

Debug function (not use in clean code): print mesh->tetra structure

Definition at line 973 of file tools_3d.c.

◆ MMG5_setadj()

int MMG5_setadj ( MMG5_pMesh  mesh)
Parameters
meshpointer towarad the mesh structure.
Returns
0 if fail, 1 otherwise.

topology: set tria adjacency, detect Moebius, flip faces, count connected comp.

Remarks
: as all triangles are mesh boundaries, we do not need to mark their adges as MG_BDY so the MG_BDY tag may be used inside geometrical triangles (external non-parallel, or internal parallel) to tag edges on the intersection with purely parallel (non-geometrical) triangles. The MG_PARBDYBDY tag is also added, as it does not have a supporting triangle to inherit this tag from.
REQ, NOSURF, etc... tags are added only inside xtetra.
In openbdy mode, all non-manifold edges are marked as opnbdy.

Definition at line 108 of file analys_3d.c.

Here is the caller graph for this function:

◆ MMG5_setdhd()

int MMG5_setdhd ( MMG5_pMesh  mesh)

check for ridges: dihedral angle

Step 1: check input ridges provided by the user to remove those ones between triangles belonging to the same plane. This step has to be done prior the next one because we want to remove the MG_GEO tag transfered from ridges that we delete toward vertices by MMG5_setadj but we want to preserve the MG_GEO tags at vertices of ridges that will be added by the next step.

Step 2: check ref and angle with neighbour to update ref tags and ridge ones

Definition at line 310 of file analys_3d.c.

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

◆ MMG5_setNmTag()

int MMG5_setNmTag ( MMG5_pMesh  mesh,
MMG5_Hash hash 
)
Parameters
meshpointer towar the mesh structure.
hashedges hash table.
Returns
1 if success, 0 if failed.

Set tags to non-manifold edges and vertices. Not done before because we need the MMG5_xTetra table.

Warning
if fail, the edge hash table hash is not freed.

Definition at line 727 of file hash_3d.c.

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

◆ MMG5_settag()

int MMG5_settag ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ia,
int16_t  tag,
int  edg 
)
Parameters
meshpointer toward the mesh structure
starttetra from which we start
ialocal index of the edge in start
tagtag to set
edgedge reference to set
Returns
1 if success, 0 if fail.

Set tag tag and ref edg of edge ia (if need be) in tetra start by travelling its shell.

Definition at line 1228 of file boulep_3d.c.

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

◆ MMG5_singul()

int MMG5_singul ( MMG5_pMesh  mesh)

check for singularities

Definition at line 544 of file analys_3d.c.

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

◆ MMG5_split1()

int MMG5_split1 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 1 edge of tetra k.

Definition at line 136 of file split_3d.c.

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

◆ MMG5_split1b()

int MMG5_split1b ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ret,
MMG5_int  ip,
int  cas,
int8_t  metRidTyp,
int8_t  chkRidTet 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
listpointer toward the shell of edge.
retsize of the shell of edge.
ipidex of new point.
casflag to watch the length of the new edges.
metRidTypType of storage of ridges metrics: 0 for classic storage, 1 for special storage.
chkRidTetif 1, avoid the creation of a tet with 4 ridge vertices
Returns
-1 if we fail, 0 if we don't split the edge, 1 if success.

Split edge $list[0]\%6$, whose shell list is passed, introducing point ip Beware : shell has to be enumerated in ONLY ONE TRAVEL (always same sense).

2 different checks : 1) are we creating a too small edge (BUG_Split1b_SpereIso_0.125h_met) 2) in aniso and from the last wave of anatet(typchk=1): avoid the creation of a tetra with 4 ridge vertices.

Definition at line 617 of file split_3d.c.

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

◆ MMG5_split2()

int MMG5_split2 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split of two OPPOSITE edges

Definition at line 1430 of file split_3d.c.

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

◆ MMG5_split2sf()

int MMG5_split2sf ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split of two edges that belong to a common face : 1 tetra becomes 3

Definition at line 1228 of file split_3d.c.

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

◆ MMG5_split3()

int MMG5_split3 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

1 face (3 edges) subdivided

Definition at line 1642 of file split_3d.c.

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

◆ MMG5_split3cone()

int MMG5_split3cone ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 3 edge in cone configuration

Definition at line 1971 of file split_3d.c.

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

◆ MMG5_split3op()

int MMG5_split3op ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 3 opposite edges in a tetra

Definition at line 2574 of file split_3d.c.

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

◆ MMG5_split4bar()

MMG5_int MMG5_split4bar ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ktetra index.
metRidTypmetric storage (classic or special)
Returns
0 if fail, index of created point otherwise (ib)

Split a tetra in 4 tetras by introducing its barycenter. FOR NOW : flags, that tell which edge should be split, are not updated (erased) : UPDATE NEEDED ?

Definition at line 2964 of file split_3d.c.

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

◆ MMG5_split4op()

int MMG5_split4op ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 4 edges in a configuration when no 3 edges lie on the same face

Definition at line 3676 of file split_3d.c.

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

◆ MMG5_split4sf()

int MMG5_split4sf ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 4 edges in a configuration when 3 lie on the same face

Definition at line 3354 of file split_3d.c.

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

◆ MMG5_split5()

int MMG5_split5 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

Split 5 edges

Definition at line 4053 of file split_3d.c.

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

◆ MMG5_split6()

int MMG5_split6 ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  k,
MMG5_int  vx[6],
int8_t  metRidTyp 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
kindex of element to split.
vx$vx[i]$ is the index of the point to add on the edge i.
metRidTypmetric storage (classic or special)
Returns
0 if fail, 1 otherwise

split all faces (6 edges)

Definition at line 4327 of file split_3d.c.

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

◆ MMG5_splitedg()

MMG5_int MMG5_splitedg ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  iel,
int  iar,
double  crit 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
ieltetra index
iaredge index of iel
critquality threshold.
Returns
-1 if lack of memory, 0 if we don't split the edge, ip if success.

Split edge iar of iel and verify that every new tet have a better quality than crit

Definition at line 4753 of file split_3d.c.

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

◆ MMG5_srcbdy()

int MMG5_srcbdy ( MMG5_pMesh  mesh,
MMG5_int  start,
int  ia 
)
Parameters
meshpointer toward the mesh structure.
startstarting tetra.
ialocal edge index in tetra start.
Returns
1 if the edge ia in start is boundary, 0 otherwise, -1 if fail.

Identify whether edge ia in start is a boundary edge by unfolding its shell.

Definition at line 1554 of file boulep_3d.c.

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

◆ MMG5_srcface()

int MMG5_srcface ( MMG5_pMesh  mesh,
int  n0,
int  n1,
int  n2 
)

◆ MMG5_startedgsurfball()

int MMG5_startedgsurfball ( MMG5_pMesh  mesh,
MMG5_int  nump,
MMG5_int  numq,
MMG5_int *  list,
int  ilist 
)

If need be, reorder the surfacic ball of point ip, so that its first element has edge (p,q) (nump,q = global num) as edge MMG5_iprv2[ip] of face iface. return 2 = orientation reversed, 1 otherwise

Definition at line 91 of file tools_3d.c.

Here is the caller graph for this function:

◆ MMG5_stiffelt()

int MMG5_stiffelt ( MMG5_pMesh  ,
int  ,
double *  ,
double *   
)

◆ MMG5_surftri()

double MMG5_surftri ( MMG5_pMesh  ,
int  ,
int   
)

◆ MMG5_swpbdy()

int MMG5_swpbdy ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int64_t *  list,
int  ret,
MMG5_int  it1,
MMG3D_pPROctree  PROctree,
int8_t  typchk 
)
Parameters
meshpointer toward the mesh structure
metpointer toward the solution structure
listpointer toward the shell of the edge
retdobble of the number of tetrahedra in the shell
it1boundary face carrying the beforehand tested terminal point for collapse
PROctreepointer toward the PROctree structure in Delaunay mode, NULL pointer in pattern mode.
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if lack of memory, 0 if fail to swap, 1 otherwise

Swap boundary edge whose shell is provided.

Definition at line 467 of file swap_3d.c.

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

◆ MMG5_swpgen()

int MMG5_swpgen ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_int  nconf,
int  ilist,
int64_t *  list,
MMG3D_pPROctree  PROctree,
int8_t  typchk 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the sol structure.
nconfconfiguration.
ilistnumber of tetrahedra in the shell of the edge that we want to swap.
listpointer toward the shell of the edge that we want to swap.
PROctreepointer toward the PROctree structure in Delaunay mode, NULL pointer in pattern mode.
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if lack of memory, 0 if fail to swap, 1 otherwise.

Perform swap of edge whose shell is passed according to configuration nconf.

First step : split of edge (na,nb)

Second step : collapse of np towards enhancing configuration

Definition at line 271 of file swapgen_3d.c.

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

◆ MMG5_swpmsh()

MMG5_int MMG5_swpmsh ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int  typchk 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure (only for delaunay).
typchktype of checking permformed for edge length (hmin or LSHORT criterion).
Returns
-1 if failed and swap number otherwise.

Search for boundary edges that could be swapped for geometric approximation.

Definition at line 598 of file mmg3d1.c.

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

◆ MMG5_swptet()

MMG5_int MMG5_swptet ( MMG5_pMesh  mesh,
MMG5_pSol  met,
double  crit,
double  declic,
MMG3D_pPROctree  PROctree,
int  typchk,
MMG5_int  testmark 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
critcoefficient of quality improvment.
PROctreepointer toward the PROctree structure in delaunay mode and toward the NULL pointer otherwise
typchktype of checking permformed for edge length (hmin or LSHORT criterion)
testmarkall the tets with a mark less than testmark will not be treated.
Returns
-1 if fail, the number of swap otherwise.

Internal edge flipping.

Definition at line 668 of file mmg3d1.c.

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

◆ MMG5_tet2tri()

void MMG5_tet2tri ( MMG5_pMesh  mesh,
MMG5_int  k,
int8_t  ie,
MMG5_Tria ptt 
)
Parameters
meshpointer toward the mesh structure.
ktetrahedron index.
ieface index of tetrahedron.
pttpointer toward the output triangle.

Set triangle corresponding to face ie of tetra k.

Definition at line 102 of file mmg3d1.c.

Here is the caller graph for this function:

◆ MMG5_timestepMCF()

double MMG5_timestepMCF ( MMG5_pMesh  ,
double   
)

◆ MMG5_trydisp()

int MMG5_trydisp ( MMG5_pMesh  ,
double *  ,
short   
)

◆ MMG5_velextLS()

int MMG5_velextLS ( MMG5_pMesh  mesh,
MMG5_pSol  disp 
)
Parameters
meshpointer toward the mesh.
disppointer toward the displacement.
Returns
0 if fail, 1 if success.

Extension of the displacement at the nodes of triangles tagged MMG5_DISPREF

Definition at line 400 of file velextls_3d.c.

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

◆ MMG5_volint()

double MMG5_volint ( MMG5_pMesh  )

◆ MMG5_warnOrientation()

static void MMG5_warnOrientation ( MMG5_pMesh  mesh)
inlinestatic
Parameters
meshpointer toward the mesh structure.

Warn user that some tetrahedra of the mesh have been reoriented.

Definition at line 524 of file libmmg3d_private.h.

Here is the caller graph for this function:

Variable Documentation

◆ MMG5_arpt

const uint8_t MMG5_arpt[4][3] = { {0,1,2}, {0,4,3}, {1,3,5}, {2,5,4} }
static

arpt[i]: edges passing through vertex i

Definition at line 175 of file libmmg3d_private.h.

◆ MMG5_iare

const uint8_t MMG5_iare[6][2] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} }
static

vertices of extremities of the edges of the tetra

Definition at line 169 of file libmmg3d_private.h.

◆ MMG5_iarf

const int8_t MMG5_iarf[4][3] = { {5,4,3}, {5,1,2}, {4,2,0}, {3,0,1} }
static

iarf[i]: edges of face opposite to vertex i

Definition at line 165 of file libmmg3d_private.h.

◆ MMG5_iarf_pr

const uint8_t MMG5_iarf_pr[5][5] = { {0,1,3,0}, {6,8,7,6}, {3,5,8,4}, {5,1,2,7},{0,4,6,2} }
static

iarf[i]: edges of face i for a prism

Definition at line 180 of file libmmg3d_private.h.

◆ MMG5_iarfinv

const int8_t MMG5_iarfinv[4][6] = { {-1,-1,-1,2,1,0}, {-1,1,2,-1,-1,0},{2,-1,1,-1,0,-1},{1,2,-1,0,-1,-1}}
static

num of the j^th edge in the i^th face

Definition at line 167 of file libmmg3d_private.h.

◆ MMG5_idir

const uint8_t MMG5_idir[4][3] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} }
static

idir[i]: vertices of face opposite to vertex i

Definition at line 161 of file libmmg3d_private.h.

◆ MMG5_idir_pr

const uint8_t MMG5_idir_pr[5][4] = { {0,1,2,0},{3,5,4,3},{1,4,5,2},{0,2,5,3},{0,3,4,1} }
static

idir[i]: vertices of face i for a prism

Definition at line 178 of file libmmg3d_private.h.

◆ MMG5_idirinv

const int8_t MMG5_idirinv[4][4] = {{-1,0,1,2},{0,-1,2,1},{0,1,-1,2},{0,2,1,-1}}
static

Definition at line 163 of file libmmg3d_private.h.

◆ MMG5_ifar

const uint8_t MMG5_ifar[6][2] = { {2,3}, {1,3}, {1,2}, {0,3}, {0,2}, {0,1} }
static

ifar[i][]: faces sharing the ith edge of the tetra

Definition at line 171 of file libmmg3d_private.h.

◆ MMG5_inxt3

const uint8_t MMG5_inxt3[7] = { 1,2,3,0,1,2,3 }
static

next vertex of tetra: {1,2,3,0,1,2,3}

Definition at line 157 of file libmmg3d_private.h.

◆ MMG5_iprv3

const uint8_t MMG5_iprv3[7] = { 3,0,1,2,3,0,1 }
static

previous vertex of tetra: {3,0,1,2,3,0,1}

Definition at line 159 of file libmmg3d_private.h.

◆ MMG5_isar

const uint8_t MMG5_isar[6][2] = { {2,3}, {3,1}, {1,2}, {0,3}, {2,0}, {0,1} }
static

isar[i][]: vertices of extremities of the edge opposite to the ith edge

Definition at line 173 of file libmmg3d_private.h.

◆ MMG5_permedge

const uint8_t MMG5_permedge[12][6]
static
Initial value:
= {
{0,1,2,3,4,5}, {1,2,0,5,3,4}, {2,0,1,4,5,3}, {0,4,3,2,1,5},
{3,0,4,1,5,2}, {4,3,0,5,2,1}, {1,3,5,0,2,4}, {3,5,1,4,0,2},
{5,1,3,2,4,0}, {2,5,4,1,0,3}, {4,2,5,0,3,1}, {5,4,2,3,1,0} }

Table that associates to each (even) permutation of the 4 vertices of a tetrahedron the corresponding permutation of its edges.
Labels : 0 : [0,1,2,3] 1 : [0,2,3,1] 2 : [0,3,1,2] 3 : [1,0,3,2] 4 : [1,2,0,3] 5 : [1,3,2,0] 6 : [2,0,1,3] 7 : [2,1,3,0] 8 : [2,3,0,1] 9 : [3,0,2,1] 10 : [3,1,0,2] 11 : [3,2,1,0] The edge 0 of the config 1 become the edge 1 of the reference config so permedge[1][0]=1 ...

Definition at line 198 of file libmmg3d_private.h.