Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
|
Go to the source code of this file.
Macros | |
#define | __STDC_FORMAT_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 |
#define | MMG_ARGV_APPEND(fromV, toV, fromC, toC, on_failure) |
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], uint16_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_chkBdryTria_countBoundaries (MMG5_pMesh mesh, MMG5_int *ntmesh, MMG5_int *ntpres) |
int | MMG5_chkBdryTria_hashBoundaries (MMG5_pMesh mesh, MMG5_int ntmesh, MMG5_Hash *hashElt) |
int | MMG5_chkBdryTria_flagExtraTriangles (MMG5_pMesh mesh, MMG5_int *ntpres, MMG5_Hash *hashElt) |
int | MMG5_chkBdryTria_addMissingTriangles (MMG5_pMesh mesh, MMG5_int ntmesh, MMG5_int ntpres) |
int | MMG5_chkBdryTria_deleteExtraTriangles (MMG5_pMesh mesh, MMG5_int *permtria) |
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) |
Given a vertex and a tetrahedron, find all tetrahedra in the ball of this vertex. | |
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 | MMG3D_get_shellEdgeTag (MMG5_pMesh, MMG5_int, int8_t, uint16_t *, MMG5_int *) |
int | MMG5_settag (MMG5_pMesh, MMG5_int, int, uint16_t, int) |
int | MMG5_deltag (MMG5_pMesh, MMG5_int, int, uint16_t) |
int | MMG5_setNmTag (MMG5_pMesh mesh, MMG5_Hash *hash) |
int | MMG5_setVertexNmTag (MMG5_pMesh mesh, uint16_t func(uint16_t)) |
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, uint16_t *tag) |
int | MMG5_hTag (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, uint16_t tag) |
int | MMG5_hGet (MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int *ref, uint16_t *tag) |
int | MMG5_hEdge (MMG5_pMesh mesh, MMG5_HGeom *hash, MMG5_int a, MMG5_int b, MMG5_int ref, uint16_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_ismaniball (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int k, int indp) |
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) |
void | MMG3D_split1_cfg (MMG5_int flag, uint8_t *tau, const uint8_t **taued) |
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) |
void | MMG3D_split2sf_cfg (MMG5_int flag, MMG5_int v[4], uint8_t *tau, const uint8_t **taued, uint8_t *imin) |
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 | MMG5_split2sf_globNum (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], MMG5_int vGlobNum[4], int8_t metRidTyp) |
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) |
void | MMG3D_split3cone_cfg (MMG5_int flag, MMG5_int v[4], uint8_t tau[4], const uint8_t **taued, uint8_t *ia, uint8_t *ib) |
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 | MMG5_split3cone_globNum (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], MMG5_int vGlobNum[4], int8_t metRidTyp) |
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) |
void | MMG3D_split4op_cfg (MMG5_int flag, MMG5_int v[4], uint8_t tau[4], const uint8_t **taued, uint8_t *imin01, uint8_t *imin23) |
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 | MMG5_split4op_globNum (MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k, MMG5_int vx[6], MMG5_int vGlobNum[4], int8_t metRidTyp) |
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 uint16_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 uint16_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) |
void | MMG3D_chkfacetags (MMG5_pMesh mesh) |
int | MMG3D_chk_shellEdgeTag (MMG5_pMesh mesh, MMG5_int start, int8_t ia, uint16_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, uint16_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 *, uint16_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_argv_cleanup (char **mmgArgv, int mmgArgc) |
int | MMG3D_storeknownar (int, char *[], MMG5_pMesh, MMG5_pSol, MMG5_pSol, int *, char *[]) |
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. | |
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_iso_edge (MMG5_pSol, MMG5_int, MMG5_int, 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 | MMG3D_intmet33_ani_edge (MMG5_pSol, MMG5_int, MMG5_int, 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} | |
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} | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
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 | |
static const uint8_t | MMG5_permedge [12][6] |
#define __STDC_FORMAT_MACROS |
Definition at line 28 of file libmmg3d_private.h.
#define MMG3D_ALPHAD 20.7846096908265 /* 12*sqrt(3) */ |
Definition at line 137 of file libmmg3d_private.h.
#define MMG3D_BADKAL 0.2 |
Definition at line 148 of file libmmg3d_private.h.
#define MMG3D_DET2VOL 0.1666666666666667 /* 1/6 */ |
Definition at line 146 of file libmmg3d_private.h.
#define MMG3D_LLONG 2.5 |
Definition at line 138 of file libmmg3d_private.h.
#define MMG3D_LOPTL 1.3 |
Definition at line 140 of file libmmg3d_private.h.
#define MMG3D_LOPTS 0.6 |
Definition at line 141 of file libmmg3d_private.h.
#define MMG3D_LSHRT 0.3 |
Definition at line 139 of file libmmg3d_private.h.
#define MMG3D_LSWAPIMPROVE 1.1 |
Definition at line 145 of file libmmg3d_private.h.
#define MMG3D_MAXKAL 1. |
Definition at line 149 of file libmmg3d_private.h.
#define MMG3D_MOVSTEP 0.1 |
Definition at line 160 of file libmmg3d_private.h.
#define MMG3D_NAMAX 200000 |
Definition at line 153 of file libmmg3d_private.h.
#define MMG3D_NEMAX 6000000 |
Definition at line 155 of file libmmg3d_private.h.
#define MMG3D_NPMAX 1000000 |
Definition at line 152 of file libmmg3d_private.h.
#define MMG3D_NTMAX 2000000 |
Definition at line 154 of file libmmg3d_private.h.
Reallocation of point table and sol table and creation of point ip with coordinates o and tag tag
Definition at line 54 of file libmmg3d_private.h.
#define MMG3D_SHORTMAX 0x7fff |
Definition at line 157 of file libmmg3d_private.h.
#define MMG3D_SSWAPIMPROVE 1.053 |
Definition at line 144 of file libmmg3d_private.h.
#define MMG3D_SWAP06 0.0288675 /* 0.6/MMG3D_ALPHAD */ |
Definition at line 143 of file libmmg3d_private.h.
#define MMG3D_TETRA_REALLOC | ( | mesh, | |
jel, | |||
wantedGap, | |||
law | |||
) |
Reallocation of tetra table and creation of tetra jel
Definition at line 99 of file libmmg3d_private.h.
#define MMG3D_VOLFRAC 1.e-5 |
Definition at line 159 of file libmmg3d_private.h.
#define MMG5_RETURN_AND_FREE | ( | mesh, | |
met, | |||
ls, | |||
disp, | |||
val | |||
) |
Free allocated pointers of mesh and sol structure and return value val
Definition at line 41 of file libmmg3d_private.h.
#define MMG_ARGV_APPEND | ( | fromV, | |
toV, | |||
fromC, | |||
toC, | |||
on_failure | |||
) |
Copies the contents of fromV[fromC] to toV[toC] and updates toC
Definition at line 163 of file libmmg3d_private.h.
int MMG3D_adpcoledg | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree * | PROctree, | ||
MMG5_int | k, | ||
int8_t | imin, | ||
double | lmin, | ||
MMG5_int * | nc | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
k | index of tetra in which we work. |
imin | index in k of edge that we consider for collapse. |
lmin | length of edge imin. |
nc | pointer to count of collapses (has to be updated) |
Try to collapse edge imin it too small.
Compute edge shell
Collapse
Definition at line 1210 of file mmg3d1.c.
int MMG3D_analys | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to mesh |
preprocessing stage: mesh analysis.
At the end of this function:
— stage 1: data structures for surface
— stage 2: surface analysis
Definition at line 1324 of file analys_3d.c.
MMG5_int MMG3D_bdryBuild | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure (unused). |
Create the boundary entities of the mesh (triangles and edges).
Definition at line 99 of file libmmg3d.c.
int MMG3D_bezierInt | ( | MMG5_pBezier | pb, |
double | uv[2], | ||
double | o[3], | ||
double | no[3], | ||
double | to[3] | ||
) |
pb | pointer to the Bezier structure. |
uv | coordinates of the point in the parametric space. |
o | computed coordinates of the point in the real space. |
no | computed normal. |
to | computed tangent. |
Compute o, no and to at \((u,v)\) in Bezier patch.
Definition at line 608 of file bezier_3d.c.
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, | ||
uint16_t * | tag, | ||
double | o[3], | ||
double | to[3], | ||
double | no1[3], | ||
double | no2[3], | ||
int64_t * | list, | ||
int * | ilist | ||
) |
mesh | pointer to mesh |
k | index of input tetra |
imax | index of edge in tetra k |
i | index of boundary face of tetra from which we will work |
j | index of edge in face i |
pxt | boundary tetra associated to k |
ip1 | first vertex of edge i |
ip2 | second vertex of edge i |
p0 | point ip1 |
p1 | point ip2 |
ref | edge ref (to fill) |
tag | edge tag (to fill) |
o | coordinates of new point along bezier edge (to fill) |
to | tangent at new point o (to fill if needed) |
no1 | first normal at new point o (to fill if needed) |
no2 | second normal at new point (to fill if needed) |
list | pointer to edge shell (to fill) |
ilist | 2x edge shell size (+1 for a bdy edge) |
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 1780 of file mmg3d1.c.
int MMG3D_chk4ridVertices | ( | MMG5_pMesh | mesh, |
MMG5_pTetra | pt | ||
) |
int MMG3D_chk_shellEdgeTag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int8_t | ia, | ||
uint16_t | tag, | ||
MMG5_int | ref | ||
) |
mesh | pointer to the mesh |
start | tetra from which we start to travel |
ia | local index of edge that must be updated |
tag | edge tag |
ref | edge ref |
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.
void MMG3D_chkfacetags | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh |
Check that faces do not have nonsensical tags (MG_GEO, MG_NOM, MG_CRN).
Definition at line 323 of file chkmsh_3d.c.
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 1528 of file mmg3d2.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
k | index of element in which we collapse. |
iface | face through wich we perform the collapse |
iedg | edge to collapse |
ndepmin | index of an elt with ref refmin and outside the shell of edge. |
ndepplus | ndex of an elt with ref refplus and outside the shell of edge. |
refmin | reference of one of the two subdomains in presence |
refplus | reference of the other subdomain in presence |
isminp | 1 if we have found a tetra with ref refmin |
isplp | 1 if we have found a tetra with ref refplus |
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 1683 of file mmg3d2.c.
void MMG3D_chkmeshedgestags | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh |
Test consistency between the tags in the xtetra of all mesh edges marked as boundaries.
Definition at line 200 of file chkmsh_3d.c.
void MMG3D_chkpointtag | ( | MMG5_pMesh | mesh | ) |
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.
Check consistency between edge tags and point tags
Definition at line 383 of file chkmsh_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
ne | pointer to the number of used tetra (to fill). |
max | pointer to the maximal quality (normalized) to fill. |
avg | pointer to the average quality (normalized) to fill. |
min | pointer to the minimal quality (normalized) to fill. |
iel | pointer to the index of the worst tetra (to fill). |
good | number of good elements (to fill). |
med | number of elements with a quality greather than 0.5 (to fill). |
his | pointer to the mesh histogram (to fill). |
imprim | verbosity 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 575 of file quality_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
ne | pointer to the number of used tetra (to fill). |
max | pointer to the maximal quality (normalized) to fill. |
avg | pointer to the average quality (normalized) to fill. |
min | pointer to the minimal quality (normalized) to fill. |
iel | pointer to the index of the worst tetra (to fill). |
good | number of good elements (to fill). |
med | number of elements with a quality greather than 0.5 (to fill). |
his | pointer to the mesh histogram (to fill). |
imprim | verbosity level |
Compute the needed quality information in order to print the quality histogram in optimLES mode.
Definition at line 392 of file quality_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
ne | pointer to the number of used tetra (to fill). |
max | pointer to the maximal quality (normalized) to fill. |
avg | pointer to the average quality (normalized) to fill. |
min | pointer to the minimal quality (normalized) to fill. |
iel | pointer to the index of the worst tetra (to fill). |
good | number of good elements (to fill). |
med | number of elements with a quality greather than 0.5 (to fill). |
his | pointer to the mesh histogram (to fill). |
nrid | number of tetra with 4 ridge points if we want to warn the user to fill. |
imprim | verbosity level |
Compute the needed quality information in order to print the quality histogram (for special storage of the metric at ridges).
Definition at line 696 of file quality_3d.c.
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] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
avlen | average length (to fill). |
lmin | minimal length (to fill). |
lmax | max length (to fill). |
ned | number 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). |
Compute the required information to print the length histogram
Definition at line 221 of file quality_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
na | global index of the 1st extremity of the edge whose shell is computed |
nb | global index of the 2d extremity of the edge whose shell is computed |
iface | index of the face from which we come. |
ia | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
ilist | pointer to the number of tetra in the shell (to fill). |
it1 | pointer to the index of the 1st boundary face sharing ia |
it2 | pointer to the index of the 2d boundary face sharing ia (to fill). |
adj | pointer to the adjacent to treat in the shell (to update) |
hasadja | pointer to 0 if we don't have adja through iface, 1 otherwise (to fill) |
nbdy | pointer to the number of boundaries found minus 1 (to update) |
silent | if 1, print error message for more than 2 boundary triangles in the shell |
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 1689 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
piv | global index of the pivot. |
iface | index of the face from which we come. |
i | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
ilist | pointer to the number of tetra in the shell (to fill). |
it1 | pointer to the index of the 1st boundary face sharing ia |
pradj | pointer to the first tetra of the shell (to fill). |
adj | pointer to 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 1790 of file boulep_3d.c.
int MMG3D_curveEndingPts | ( | MMG5_pMesh | mesh, |
MMG5_int * | lists, | ||
int | ilists, | ||
const uint16_t | edgTag, | ||
MMG5_int | ip0, | ||
MMG5_int * | ip1, | ||
MMG5_int * | ip2 | ||
) |
mesh | pointer to the mesh structure. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
edgTag | Type of edge on which we move (MG_REF, MG_NOM or MG_GEO). |
ip0 | point that we want to move along curve. |
ip1 | first ending point of curve (in current surfacic ball). |
ip2 | second ending point of curve (in current surfacic ball). |
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 944 of file movpt_3d.c.
int MMG3D_cuttet_ls | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set values. |
met | pointer to a metric (non-mandatory). |
Proceed to discretization of the implicit function carried by sol into mesh, once values of sol have been snapped/checked
Definition at line 1026 of file mmg3d2.c.
int MMG3D_cuttet_lssurf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set values. |
met | pointer to a metric (non-mandatory). |
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.
int MMG3D_defsiz_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric stucture. |
Define size at points by intersecting the surfacic metric and the physical metric.
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.
int MMG3D_defsiz_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
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.
int MMG3D_delElt | ( | MMG5_pMesh | mesh, |
MMG5_int | iel | ||
) |
mesh | pointer to the mesh |
iel | index of the element to delete |
Delete the element iel
Definition at line 122 of file zaldy_3d.c.
void MMG3D_delPt | ( | MMG5_pMesh | mesh, |
MMG5_int | ip | ||
) |
int MMG3D_dichoto | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int * | vx | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | tetrahedron index. |
vx | pointer to table of edges to split. |
Find acceptable position for splitting.
Definition at line 140 of file mmg3d1.c.
int MMG3D_dichoto1b | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int64_t * | list, | ||
int | ret, | ||
MMG5_int | ip | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
list | pointer to the shell of edge. |
ret | double of the number of tetrahedra in the shell. |
ip | new point index. |
Find acceptable position for MMG5_split1b, passing the shell of considered edge, starting from o point.
Definition at line 293 of file mmg3d1.c.
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 | ||
) |
ne | number of used tetra. |
max | maximal quality (normalized). |
avg | average quality (normalized). |
min | minimal quality (normalized). |
iel | index of the worst tetra. |
good | number of good elements. |
med | number of elements with a quality greather than 0.5 |
his | pointer to the mesh histogram. |
nrid | number of tetra with 4 ridge points if we want to warn the user. |
optimLES | 1 if we work in optimLES mode, 0 otherwise |
imprim | verbosity level |
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 476 of file quality_3d.c.
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 | ||
) |
ne | number of used tetra. |
max | maximal quality (normalized). |
avg | average quality (normalized). |
min | minimal quality (normalized). |
iel | index of the worst tetra. |
good | number of good elements. |
med | number of elements with a quality greather than 0.5 |
his | pointer to the mesh histogram. |
nrid | number of tetra with 4 ridge points if we want to warn the user. |
optimLES | 1 if we work in optimLES mode, 0 otherwise |
imprim | verbosity level |
Print histogram of mesh qualities for special storage of metric at ridges.
Definition at line 510 of file quality_3d.c.
int MMG3D_doSol_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh |
met | pointer to the metric |
Compute anisotropic size map according to the mean of the length of the edges passing through a point.
Definition at line 1589 of file libmmg3d_tools.c.
int MMG3D_doSol_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh |
met | pointer to the metric |
Compute isotropic size map according to the mean of the length of the edges passing through a point.
Definition at line 1514 of file libmmg3d_tools.c.
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 | ||
) |
mesh | pointer to mesh |
pt | pointer to tetra on which we work |
ied | index in tetra pt of edge on which we work |
i | index of a face of pt that contains ied. If possible we choose a boundary face with suitable orientation (to fill) |
j | local index of edge ied in face i (to fill) |
i1 | local index in tetra pt of first extremity of edge ied (to fill) |
i2 | local index in tetra pt of second extremity of edge ied (to fill) |
ip1 | global index first extremity of edge ied (to fill) |
ip2 | global index in tetra pt of second extremity of edge ied (to fill) |
p0 | pointer to first extremity of edge ied (to fill) |
p1 | pointer to 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 1898 of file mmg3d1.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
pt | pointer to the working tetra |
k | index of the tetra pt. |
na | index of the first extermity of the seeking edge. |
nb | index of the second extermity of the seeking edge. |
error | 1 if we want to print an error message, 0 for a warning. |
mmgWarn | static variable to print warning only once (not used if error==1) |
ia | pointer to the edge index (to fill). |
Find the local index of the edge ia in the tetra pt of index k;
Definition at line 116 of file boulep_3d.c.
int MMG3D_Free_all_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be deallocated. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. |
argptr contains at least a pointer to 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 to 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 to a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for deallocations before return (taking a va_list as argument).
Definition at line 261 of file variadic_3d.c.
void MMG3D_Free_arrays | ( | MMG5_pMesh * | mesh, |
MMG5_pSol * | sol, | ||
MMG5_pSol * | ls, | ||
MMG5_pSol * | disp, | ||
MMG5_pSol * | field | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to a solution / level-set. |
sol | pointer to a displacement. |
Free mesh arrays.
Definition at line 359 of file variadic_3d.c.
int MMG3D_Free_names_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures for whose we want to deallocate the name. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. |
argptr contains at least a pointer to 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 to 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 to a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for name deallocations before return (taking a va_list as argument).
Definition at line 547 of file variadic_3d.c.
int MMG3D_Free_structures_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be deallocated. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. |
argptr contains at least a pointer to 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 to 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 to a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for structures deallocations before return (taking a va_list as argument).
Definition at line 449 of file variadic_3d.c.
void MMG3D_Free_topoTables | ( | MMG5_pMesh | mesh | ) |
Free adja, xtetra and xpoint tables
Definition at line 67 of file libmmg3d.c.
int MMG3D_get_shellEdgeTag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int8_t | ia, | ||
uint16_t * | tag, | ||
MMG5_int * | ref | ||
) |
mesh | pointer to the mesh |
start | tetra from which we start to travel |
ia | local index of edge that must be updated |
tag | new edge tag |
ref | new edge ref |
Get tag and ref of the edge \ia of tetra start by traveling its shell. Stop when meeting the first xtetra (it is sufficient if tags and refs are consistent through the edge shell);
Definition at line 439 of file colver_3d.c.
int MMG3D_gradsiz_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
Enforces mesh gradation by truncating metric field.
Mark the edges belonging to a required entity
Definition at line 2073 of file anisosiz_3d.c.
int MMG3D_gradsiz_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
Enforce mesh gradation by truncating size map.
Definition at line 1083 of file isosiz_3d.c.
int MMG3D_gradsizreq_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
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.
int MMG3D_gradsizreq_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
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.
int MMG3D_hashPrism | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Create partial table of adjacency for prisms (prism \( <-> \) prism).
Definition at line 240 of file hash_3d.c.
int MMG3D_hashTria | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash | ||
) |
mesh | pointer to the mesh structure. |
hash | Edges hash table. |
Create surface adjacency table. Allocate the edge hash table hash but don't free it.
Definition at line 838 of file hash_3d.c.
MMG5_int MMG3D_indElt | ( | MMG5_pMesh | mesh, |
MMG5_int | kel | ||
) |
find the element number in packed numerotation
Definition at line 862 of file tools_3d.c.
MMG5_int MMG3D_indPt | ( | MMG5_pMesh | mesh, |
MMG5_int | kp | ||
) |
find the point number in packed numerotation
Definition at line 918 of file tools_3d.c.
int MMG3D_Init_mesh_var | ( | va_list | argptr | ) |
argptr | list of the mmg structures that must be initialized. Each structure must follow one of the MMG5_ARG* preprocessor variable that allow to identify it. |
argptr contains at least a pointer to 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 to 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 to a MMG5_pSol structure storing the displacement (and identified by the MMG5_ARG_ppDisp keyword).
Internal function for structure allocations (taking a va_list argument).
Definition at line 177 of file variadic_3d.c.
int MMG3D_inqua | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
Print histogram of mesh qualities for classic storage of metric at ridges.
Definition at line 647 of file quality_3d.c.
int MMG3D_intmet33_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
int8_t | i, | ||
MMG5_int | ip, | ||
double | s | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | element index. |
i | local index of edge in k. |
ip | global index of the new point in which we want to compute the metric. |
s | interpolation parameter (between 0 and 1). |
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 126 of file intmet_3d.c.
int MMG3D_intmet33_ani_edge | ( | MMG5_pSol | met, |
MMG5_int | ip1, | ||
MMG5_int | ip2, | ||
MMG5_int | ip, | ||
double | s | ||
) |
met | pointer to the metric structure. |
ip1 | first global index of edge extremities. |
ip2 | second global index of edge extremities. |
ip | global index of the new point in which we want to compute the metric. |
s | interpolation parameter (between 0 and 1). |
Interpolation of anisotropic sizemap at parameter s along edge [ip1,ip2] for a classic storage of ridges metrics (before defsiz call).
Definition at line 150 of file intmet_3d.c.
int MMG3D_ismaniball | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | k, | ||
int | indp | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set values. |
k | index of the starting tetra. |
indp | local index (inside the tria k) of the vertex that we check. |
Check whether snapping the value of vertex indp to 0 exactly leads to a non manifold situation.
Definition at line 407 of file mmg3d2.c.
void MMG3D_keep_only1Subdomain | ( | MMG5_pMesh | mesh, |
int | nsd | ||
) |
mesh | pointer to the mesh structure. |
nsd | index of subdomain to keep. |
Keep only subdomain of index nsd and remove other subdomains.
Definition at line 1393 of file tools_3d.c.
int MMG3D_loadMesh_opened | ( | MMG5_pMesh | mesh, |
FILE * | inm, | ||
int | bin | ||
) |
Definition at line 113 of file inout_3d.c.
int MMG3D_localParamNm | ( | MMG5_pMesh | mesh, |
MMG5_int | iel, | ||
int | iface, | ||
int | ia, | ||
double * | hausd_ip, | ||
double * | hmin_ip, | ||
double * | hmax_ip | ||
) |
mesh | pointer to the mesh structure. |
iel | index of tetra in which we work |
iface | index of face in iel |
ia | index of edge in iel along which we want to compute the local parameters |
hausd_ip | pointer to the local hausdorff parameter to compute |
hmin_ip | pointer to the local minimal edge size to compute |
hmax_ip | pointer to the local maximal edge size to compute |
Compute the local parameters at non manifold point ip.
Definition at line 1145 of file tools_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
ip | global index of point in which we want to compute the local parameters |
listv | pointer to the ball of ip |
ilistv | number of tetra in the ball of ip |
lists | pointer to the surface ball of ip |
ilists | number of tetra in the surface ball of ip |
hausd_ip | pointer to the local hausdorff parameter to compute |
hmin_ip | pointer to the local minimal edge size to compute |
hmax_ip | pointer to the local maximal edge size to compute |
Compute the local parameters at point ip (the volume and surface ball of point must be provided).
Definition at line 1025 of file tools_3d.c.
int MMG3D_mark_packedPoints | ( | MMG5_pMesh | mesh, |
MMG5_int * | np, | ||
MMG5_int * | nc | ||
) |
mesh | pointer to the mesh structure (unused). |
np | pointer to the number of packed points |
nc | pointer to the number of packed corners |
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.
void MMG3D_mark_pointsOnReqEdge_fromTetra | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to 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.
int MMG3D_memOption | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
memory repartition for the -m option.
Definition at line 271 of file zaldy_3d.c.
int MMG3D_memOption_memRepartition | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
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.
int MMG3D_memOption_memSet | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
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.
Definition at line 158 of file zaldy_3d.c.
int MMG3D_mmg3d2 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set. |
met | pointer to a metric (optionnal). |
Create implicit surface in mesh.
Definition at line 2219 of file mmg3d2.c.
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] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
p0 | point that we want to move. |
ip0 | global index of point p0. |
isrid | 1 if point is a ridge manifold point |
o | point coordinates at new position |
no | normal at point at new position |
no2 | second normal at point at new pos (for ridge manifold point) |
to | tangent at point at new pos. |
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 1056 of file movpt_3d.c.
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 uint16_t | edgTag | ||
) |
mesh | pointer to the mesh structure. |
p0 | point that we want to move. |
ip0 | global index of point p0. |
ip1 | First ending point of curve. |
ip2 | Second ending point of curve. |
ll1old | length of edge ip0-ip1. |
ll2old | length of edge ip0-ip2. |
isrid | 1 if point is a ridge manifold point. |
step | step of displacement. |
o | point coordinates at new position |
no | normal at point at new position |
no2 | second normal at point at new pos (for ridge manifold point) |
to | tangent at point at new pos. |
edgTag | MG_NOM, MG_REF or MG_GEO depending on type of curve along which we move. |
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 1150 of file movpt_3d.c.
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] | ||
) |
mesh | pointer to the mesh |
lists | pointer to the surface ball of ip0 |
kel | index of the current element in the ball |
ip0 | global index of the point to move |
n | normal at ip0 |
lambda | barycentric coor of the new point in triangle |
o | coordinates of the new point (to compute) |
no | normal at new point (to compute) |
Compute the Bezier patch at element lists[kel], compute the new point coordinates, normal and tangent and check the geometric approximation.
Definition at line 483 of file movpt_3d.c.
int MMG3D_movetetrapoints | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int | k | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of a tetra |
Try to move the vertices of the tetra k to improve its quality.
Definition at line 47 of file optbdry_3d.c.
int MMG3D_movnormal_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | k, | ||
int | ib | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the metric structure. |
k | tetra index. |
ib | local index of the point inside the tetra k. |
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.
Definition at line 1754 of file movpt_3d.c.
int MMG3D_movv_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | k, | ||
int | ib | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the metric structure. |
k | element index |
ip | local index of point |
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.
Definition at line 1634 of file movpt_3d.c.
int MMG3D_movv_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | k, | ||
int | ib | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the metric structure. |
k | element index |
ip | local index of point |
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.
Definition at line 1883 of file movpt_3d.c.
MMG5_int MMG3D_newElt | ( | MMG5_pMesh | mesh | ) |
get new elt address
Definition at line 99 of file zaldy_3d.c.
MMG5_int MMG3D_newPt | ( | MMG5_pMesh | mesh, |
double | c[3], | ||
uint16_t | tag, | ||
MMG5_int | src | ||
) |
get new point address
Definition at line 39 of file zaldy_3d.c.
int MMG3D_nmgeom | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh |
Define continuous geometric support at non manifold vertices, using volume information.
Following list summerizes computed data depending on point type:
Definition at line 1198 of file analys_3d.c.
int MMG3D_normalAdjaTri | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int8_t | iface, | ||
int | ia, | ||
double | n[3] | ||
) |
mesh | pointer to the mesh structure |
start | index of the working tetra |
iface | local index of the boundary face of the tetra start |
ia | local index on face iface of the edge through which we seek the adjacent triangle of the triangle iface of start. |
n | normal of the new boundary face in the tetra idx. |
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 472 of file split_3d.c.
int MMG3D_normalAndTangent_at_sinRidge | ( | MMG5_pMesh | mesh, |
MMG5_int | k, | ||
int | i, | ||
int | j, | ||
double | no1[3], | ||
double | no2[3], | ||
double | to[3] | ||
) |
mesh | pointer to the mesh structure. |
k | index of the tetra to split. |
i | index of (boundary) face in which we work. |
j | local index in face i of the ridge. |
pt | tetra to split |
no1 | first normal at new ridge point (to fill) |
no2 | second normal at new ridge point (to fill) |
to | tangent ar new ridge point (to fill) |
Compute normals and tangent at new ridge point.
Definition at line 1684 of file mmg3d1.c.
int MMG3D_openMesh | ( | int | imprim, |
const char * | filename, | ||
FILE ** | inm, | ||
int * | bin, | ||
char * | modeASCII, | ||
char * | modeBIN | ||
) |
imprim | verbosity level (muted for stdout if -1) |
filename | file to open |
inm | pointer to the file unit |
bin | 1 if file will be at binary format |
modeASCII | mode in which to open an ascii file ("r","r+","w","w+",...) |
modeASCII | mode in which to open an ascii file ("r","r+","w","w+",...) |
Try to open a Medit file in the requested mode (read only, write, etc) and store if file is binary (depending on the extension).
Definition at line 53 of file inout_3d.c.
int MMG3D_optbdry | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int | k | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
k | index of a tetra |
Try to optimize the tetra k. This tetra has a face on the boundary.
Definition at line 259 of file optbdry_3d.c.
int MMG3D_optlap | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the sol structure |
Laplacian/anti-laplacian over the mesh to improve its mean quality
Definition at line 46 of file optlap_3d.c.
MMG5_int MMG3D_opttyp | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int | testmark | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
testmark | all the tets with a mark less than testmark will not be treated. |
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.
int MMG3D_outqua | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
Print histogram of mesh qualities for special storage of metric at ridges.
Definition at line 780 of file quality_3d.c.
int MMG3D_pack_pointArray | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure (unused). |
Pack a sparse point array. Preserve numbering order.
Definition at line 749 of file libmmg3d.c.
MMG5_int MMG3D_pack_points | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure (unused). |
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.
int MMG3D_pack_prismsAndQuads | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
Pack prisms and quads. Preserve numbering order.
Definition at line 667 of file libmmg3d.c.
int MMG3D_pack_sol | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh structure (unused). |
met | pointer to the solution (metric or level-set) structure. |
Pack a sparse solution structure. Preserve numbering order.
Definition at line 713 of file libmmg3d.c.
int MMG3D_pack_tetra | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
Pack the sparse tetra. Doesn't pack the adjacency array. Preserve numbering order.
Definition at line 627 of file libmmg3d.c.
int MMG3D_pack_tetraAndAdja | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure |
Pack the sparse tetra and the associated adja array. Preserve numbering order.
Definition at line 572 of file libmmg3d.c.
int MMG3D_packMesh | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_pSol | met | ||
) |
mesh | pointer to the mesh structure (unused). |
sol | pointer to a solution structure. |
met | pointer to a solution structure. |
Pack the sparse mesh and create triangles and edges before getting out of library
Definition at line 905 of file libmmg3d.c.
int MMG3D_prilen | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
metRidTyp | Type of storage of ridges metrics: 0 for classic storage, 1 for special storage. |
Compute sizes of edges of the mesh, and displays histo.
Definition at line 357 of file quality_3d.c.
int MMG3D_printEigenv | ( | double | dm[3], |
double | vp[3][3] | ||
) |
dm | matrix eigenvalues (1x3 array). |
vp | eigenvectors matrix (3x3 array, eigenvectors stored by lines). |
Print eigendecomposition.
Definition at line 48 of file anisosiz_3d.c.
int MMG3D_printErrorMat | ( | int8_t | symmat, |
double * | m, | ||
double * | mr | ||
) |
symmat | flag for symmetric(1) or non-symmetric(0) matrix.. |
m | first matrix (1x6 or 1x9 array). |
mr | second matrix (1x6 or 1x9 array). |
Print relative error between two matrices, for each matrix entry.
Definition at line 90 of file anisosiz_3d.c.
int MMG3D_regver | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to a MMG5 mesh structure. |
Regularization procedure for vertices coordinates, dual Laplacian in 3D
Definition at line 956 of file analys_3d.c.
int MMG3D_resetRef_ls | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh. |
Reset mesh->info.isoref vertex and tetra references to 0.
Definition at line 313 of file mmg3d2.c.
int MMG3D_resetRef_lssurf | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh. |
Reset mesh->info.isoref vertex and tetra references to 0.
Definition at line 51 of file mmg3d2s.c.
int MMG3D_rmc | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh |
sol | pointer to the level-set |
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 778 of file mmg3d2.c.
int MMG3D_rotate_surfacicBall | ( | MMG5_pMesh | mesh, |
MMG5_int * | lists, | ||
int | ilists, | ||
MMG5_int | ip0, | ||
double | r[3][3], | ||
double * | lispoi | ||
) |
mesh | pointer to the mesh structure. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
ip0 | global index of the point that we move |
r | rotation matrix that sends the normal at ip0 to z-axis |
lispoi | rotated surfacic ball (lispoi[k] is the common edge between faces lists[k-1] and lists[k]) |
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.
void MMG3D_set_geom | ( | MMG5_pMesh | mesh, |
MMG5_pPoint | ppt, | ||
uint16_t | tag, | ||
MMG5_int | nmref, | ||
MMG5_int | edgref, | ||
double | no1[3], | ||
double | no2[3], | ||
double | to[3] | ||
) |
mesh | pointer to mesh |
ppt | pointer to point whose geom data have to be updated |
tag | point tag |
nmref | ref that has to be setted at point ppt if point is non-manifold |
edgref | ref that has to be setted at point ppt if point is manifold (edg ref) |
no1 | normal that has to be setted at point ppt (if needed) |
no2 | normal that has to be setted at point ppt (if needed) |
to | tangent 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.
int MMG3D_set_metricAtPointsOnReqEdges | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int8_t | ismet | ||
) |
mesh | pointer to the mesh |
met | pointer to the metric |
ismet | 1 if user provided metric |
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.
void MMG3D_set_reqBoundaries | ( | MMG5_pMesh | mesh | ) |
mesh | pointer 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.
int MMG3D_setMeshSize_alloc | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Allocation of the array fields of the mesh.
Definition at line 288 of file zaldy_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
np | number of vertices. |
ne | number of tetrahedra. |
nprism | number of prisms. |
nt | number of triangles. |
nquad | number of quads. |
na | number of edges. |
Check the input mesh size and assign their values to the mesh.
Definition at line 220 of file API_functions_3d.c.
int MMG3D_setref_ls | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
int MMG3D_setref_lssurf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set values. |
Set references to surface triangles according to the sign of the level set function.
Definition at line 419 of file mmg3d2s.c.
int MMG3D_simbulgept | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int64_t * | list, | ||
int | ret, | ||
MMG5_int | ip | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric. |
list | pointer to the edge shell. |
ret | size of the edge shell. |
ip | new point index. |
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 330 of file split_3d.c.
int MMG3D_snpval_ls | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set function. |
Snap values of the level set function very close to 0 to exactly 0, and prevent nonmanifold patterns from being generated.
Definition at line 668 of file mmg3d2.c.
int MMG3D_snpval_lssurf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the level-set function. |
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.
|
inline |
flag | flag to detect the splitting configuration |
tau | vertices permutation |
taued | edges permutation |
Compute vertices and edges permutation for the split of 1 edge depending of the edge that is splitted (i^th bit of flag is 1 if the i^th edge is splitted).
Definition at line 53 of file split_3d.c.
int MMG3D_split1_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate the splitting of 1 edge of element
Definition at line 94 of file split_3d.c.
int MMG3D_split2_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of two opposite edges.
Definition at line 1427 of file split_3d.c.
|
inline |
flag | flag to detect the splitting configuration |
v | indices of the tetra nodes (global node indices if called from ParMmg in ls mode) |
tau | vertices permutation |
taued | edges permutation |
Compute vertices and edges permutation for the split of 2 edge along the same face. The configuration flag is computed such as the i^th bit of flag is 1 if the i^th edge is splitted).
Definition at line 1037 of file split_3d.c.
int MMG3D_split2sf_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of two edges that belong to a common face
Definition at line 1103 of file split_3d.c.
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 1636 of file split_3d.c.
|
inline |
flag | initial tetra |
v | indices of the tetra nodes (global node indices if called from ParMmg in ls mode) |
tau | vertices permutation |
taued | edges permutation |
ia | first condition to choose the split |
ib | second condition to choose the split |
Set permutation of vertices for the split of 3 edges in cone configuration. Reference configuration 7.
Definition at line 1863 of file split_3d.c.
int MMG3D_split3cone_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 3 edges in cone configuration.
Definition at line 1921 of file split_3d.c.
int MMG3D_split3op_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 3 edges in opposite configuration.
Definition at line 2522 of file split_3d.c.
|
inline |
flag | initial tetra |
v | indices of tetra nodes (global node indices if called from ParMmg in ls mode) |
tau | vertices permutation |
taued | edges permutation |
imin01 | minimal index of vertices ip0 and ip1 |
imin23 | minimal index of vertices ip2 and ip3 |
Set permutation of vertices for the split of 4 edges when on opposite edges. Reference configuration 30.
Definition at line 3649 of file split_3d.c.
int MMG3D_split4op_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 4 edges in opposite configuration.
Definition at line 3685 of file split_3d.c.
int MMG3D_split4sf_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 4 edges in a configuration when 3 lie on the same face.
Definition at line 3337 of file split_3d.c.
int MMG3D_split5_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 5 edges.
Definition at line 4111 of file split_3d.c.
int MMG3D_split6_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6] | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
Simulate split of 6 edges.
Definition at line 4414 of file split_3d.c.
int MMG3D_splitItem | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int | k, | ||
int | iar, | ||
double | OCRIT | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
k | elt index. |
iar | index of edge to split. |
OCRIT | quality threshold. |
Try to split edge number iar of tetra k
Definition at line 394 of file opttyp_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of the tetra to split. |
pt | tetra to split |
pxt | associated xtetra |
imax | index of the edge to split to split |
typchk | type of check |
chkRidTet | check for ridge metric |
*warn | warn is set to 1 if we don't have enough memory to complete mesh. |
Split a surface edge using split1b
Definition at line 1957 of file mmg3d1.c.
int MMG3D_storeknownar | ( | int | argc, |
char * | argv[], | ||
MMG5_pMesh | mesh, | ||
MMG5_pSol | met, | ||
MMG5_pSol | sol, | ||
int * | mmgArgc, | ||
char * | mmgArgv[] | ||
) |
argc | number of command line args |
argv | command line args |
mesh | pointer to the mesh |
met | pointer to the metric |
sol | pointer to the solution (level-set or displacement) |
mmgArgc | pointer to the number of appened unknown args (to fill) |
mmgArgv | pointer to the appened unknown args (to fill) |
Store the values of command line arguments known by Mmg in suitable data structure and append unknown args in mmgArgv/mmgArgc.
Definition at line 238 of file libmmg3d_tools.c.
int MMG3D_swap23 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
int8_t | metRidTyp, | ||
int | ifac, | ||
int | conf0, | ||
MMG5_int | adj, | ||
int | conf1 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the sol structure. |
k | index of the tetrahedron with multiple boundary faces (to be swapped). |
metRidTyp | metric storage (classic or special) |
ifac | face of the tetra k that give the best results for the swap23 |
conf0 | detected configuration for the swap23 of the tetra k |
adj | neighbour of the tetra k through the face ifac (4*k1+ifac1) |
conf1 | detected configuration for the swap23 of the tetra adj/4 |
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).
Neighbouring element with which we will try to swap
Swap
Quality Update
Definition at line 625 of file swap_3d.c.
int MMG3D_swpItem | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int | k, | ||
int | iar | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
k | elt index. |
iar | index of edge to not try to swap. |
Try to swap edge iar of tetra k.
Definition at line 328 of file opttyp_3d.c.
int MMG3D_tetraQual | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the meric structure. |
metRidTyp | metric storage (classic or special) |
Compute the quality of the tetras over the mesh.
Definition at line 50 of file quality_3d.c.
void MMG3D_unset_reqBoundaries | ( | MMG5_pMesh | mesh | ) |
mesh | pointer 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.
int MMG3D_update_eltsVertices | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure (unused). |
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.
int MMG3D_update_xtetra | ( | MMG5_pMesh | mesh | ) |
double MMG3D_vfrac | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | k, | ||
int | pm | ||
) |
mesh | pointer to the mesh structure |
sol | pointer to the ls function |
k | index of the triangle |
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.
int MMG3D_zaldy | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh |
allocate main structure
Definition at line 346 of file zaldy_3d.c.
int MMG5_anatet | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int8_t | typchk, | ||
int | patternMode | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
typchk | type of checking for edges length. |
patternMode | flag to say if we perform vertex insertion by patterns or by delaunay kernel. |
Analyze tetrahedra and split if needed.
Definition at line 3159 of file mmg3d1.c.
void MMG5_argv_cleanup | ( | char ** | mmgArgv, |
int | mmgArgc | ||
) |
int MMG5_bdryIso | ( | MMG5_pMesh | ) |
int MMG5_bdryPerm | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Make orientation of triangles compatible with tetra faces for external tria and with domain of max ref for interface tria.
Definition at line 2385 of file hash_3d.c.
int MMG5_bdrySet | ( | MMG5_pMesh | mesh | ) |
int MMG5_bdryUpdate | ( | MMG5_pMesh | mesh | ) |
mesh |
Update tag and refs of tetra edges. If tetra is required, set the faces/edges to required.
Definition at line 2294 of file hash_3d.c.
int MMG5_bdyMCF | ( | MMG5_pMesh | ) |
|
inline |
mesh | pointer to the mesh structure. |
ip0 | index of the first point of the curve. |
ip1 | index of the second point of the curve. |
b0 | the first computed extrapolated control point. |
b1 | the second computed extrapolated control point. |
ised | flag for special edge. |
v | direction 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.
|
inline |
c1 | coordinates of the first point of the curve. |
c2 | coordinates of the second point of the curve. |
t1 | normal at the first point of the curve. |
t2 | normal at the second point of the curve. |
Compute value of the parameter that makes the underlying Bezier curve with 'constant speed'
Definition at line 111 of file bezier_3d.c.
|
inline |
mesh | mesh |
ip0 | first edge extremity |
ip1 | second edge extremity |
s | parameter value |
o | point coordinates |
no | normal at point o (to fill) |
to | tangent at point o along edge ip0 ip1 (to fill) |
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.
|
inline |
mesh | mesh |
ip0 | first edge extremity |
ip1 | second edge extremity |
s | parameter value |
o | point coordinates |
no | normal at point o (to fill) |
to | tangent at point o (to fill) |
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.
|
inline |
mesh | mesh |
ip0 | first edge extremity |
ip1 | second edge extremity |
s | parameter value |
v | reference normal |
o | point coordinates |
no | normal at point o (to fill) |
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 696 of file tools_3d.c.
|
inline |
mesh | mesh |
ip0 | first edge extremity |
ip1 | second edge extremity |
s | parameter value |
o | point coordinates |
no1 | normal at point o (to fill) |
no2 | normal at point o (to fill) |
to | tangent at point o (to fill) |
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.
|
inline |
c1 | coordinates of the first point of the curve. |
c2 | coordinates of the second point of the curve. |
n1 | normal at the first point of the curve. |
n2 | normal at the second point of the curve. |
t1 | computed normal at the first point of the curve. |
t2 | computed normal at the second point of the curve. |
Compute tangent to geometric support curve passing through c1,c2, with normals n1,n2
Definition at line 53 of file bezier_3d.c.
int MMG5_boulenm | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int | iface, | ||
double | n[3], | ||
double | t[3] | ||
) |
mesh | pointer to the mesh structure. |
start | tetra index. |
ip | point index. |
iface | face index. |
n | computed normal vector. |
t | computed tangent vector. |
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 199 of file boulep_3d.c.
int MMG5_boulenmInt | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
double | t[3] | ||
) |
mesh | pointer to the mesh structure. |
start | tetra index. |
ip | point index. |
t | computed tangent vector. |
Travel the ball of the internal non manifold point ip in tetra start and calculate the tangent vector to the underlying curve.
Definition at line 345 of file boulep_3d.c.
int MMG5_boulernm | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash, | ||
MMG5_int | start, | ||
int | ip, | ||
MMG5_int * | ng, | ||
MMG5_int * | nr, | ||
MMG5_int * | nm | ||
) |
mesh | pointer to the mesh structure. |
hash | pointer to an allocated hash table. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
ng | pointer to the number of ridges. |
nr | pointer to the number of reference edges. |
nm | pointer to the number of non-manifold edges. |
Count the numer of ridges and reference edges incident to the vertex ip when ip is non-manifold.
Definition at line 458 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetra. |
ip | index in start of the looked point. |
iface | index in start of the starting face. |
listv | pointer to the computed volumic ball. |
ilistv | pointer to the computed volumic ball size. |
lists | pointer to the computed surfacic ball. |
ilists | pointer to the computed surfacic ball size. |
isnm | 1 if ip is non-manifold, 0 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:
Definition at line 610 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
ip | index in start of the desired vertex. |
iface | index in start of the starting face. |
listv | pointer to the computed volumic ball. |
ilistv | pointer to the computed volumic ball size. |
lists | pointer to the computed surfacic ball. |
ilists | pointer to the computed surfacic ball size. |
refmin | return the reference of one of the two subdomains in presence |
refplus | return the reference of the other subdomain in presence |
isnm | is the vertex non-manifold? |
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 the volumic ball. listv[k] = 4*number of tet + index of point surfacic ball. lists[k] = 4*number of tet + index of face.
Definition at line 780 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
ip | index of the looked ridge point. |
iface | index in start of the starting face. |
il1 | pointer to the first ball size. |
l1 | pointer to the first computed ball (associated to n_1's side). |
il2 | pointer to the second ball size. |
l2 | pointer to the second computed ball (associated to n_2's side). |
ip0 | index of the first extremity of the ridge. |
ip1 | index of the second extremity of the ridge. |
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 960 of file boulep_3d.c.
int MMG5_boulevolp | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ip, | ||
int64_t * | list | ||
) |
Given a vertex and a tetrahedron, find all tetrahedra in the ball of this vertex.
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedra. |
ip | local index of the point in the tetrahedra start. |
list | pointer to the list of the tetra in the volumic ball of ip. |
Fill the volumic ball (i.e. filled with tetrahedra) of point ip in tetra start. Results are stored in the form \(4*kel + jel\), kel = number of tetrahedra, jel = local index of p within kel.
Definition at line 57 of file boulep_3d.c.
|
inline |
mesh | pointer to the mesh structure. |
met | pointer to the meric structure. |
pt | pointer to a tetrahedra. |
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.
Definition at line 109 of file quality_3d.c.
int MMG5_cavity_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | iel, | ||
int | ip, | ||
int64_t * | list, | ||
int | lon, | ||
double | volmin | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the sol structure. |
iel | tetra index. |
ip | point local index in iel. |
list | pointer to the list of tetra in the shell of edge where ip will be inserted. |
lon | number of tetra in the list. |
Mark elements in cavity and update the list of tetra in the cavity.
Definition at line 581 of file delaunay_3d.c.
int MMG5_cavity_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | iel, | ||
int | ip, | ||
int64_t * | list, | ||
int | lon, | ||
double | volmin | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the sol structure. |
iel | tetra index. |
ip | point local index in iel. |
list | pointer to the list of tetra in the shell of edge where ip will be inserted. |
lon | number of tetra in the list. |
Mark elements in cavity and update the list of tetra in the cavity.
Definition at line 741 of file delaunay_3d.c.
int MMG5_cenrad_ani | ( | MMG5_pMesh | mesh, |
double * | ct, | ||
double * | m, | ||
double * | c, | ||
double * | rad | ||
) |
mesh | pointer to the mesh structure. |
ct | coordinates of vertices of the element. |
m | metric at the point for which we compute the cavity. |
c | center of circumscribing circle to the element. |
rad | squared radius of circumscribing circle to the element. |
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.
int MMG5_cenrad_iso | ( | MMG5_pMesh | mesh, |
double * | ct, | ||
double * | c, | ||
double * | rad | ||
) |
mesh | pointer to the mesh structure. |
ct | coordinates of vertices of the element. |
c | center of circumscribing circle to the element. |
rad | squared radius of circumscribing circle to the element. |
Compute radius (squared) and center of circumscribing circle to the element.
Definition at line 45 of file cenrad_3d.c.
int MMG5_chkBdryTria | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
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 1559 of file hash_3d.c.
int MMG5_chkBdryTria_addMissingTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int | ntmesh, | ||
MMG5_int | ntpres | ||
) |
mesh | pointer to the mesh structure. |
Step 3 of MMG5_chkBdryTria : 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 1910 of file hash_3d.c.
int MMG5_chkBdryTria_countBoundaries | ( | MMG5_pMesh | mesh, |
MMG5_int * | ntmesh, | ||
MMG5_int * | ntpres | ||
) |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary triangles in the mesh. |
ntpres | number of preserved boundaries in the mesh. |
Step 1 of MMG5_chkBdryTria : scan the mesh and count the boundaries
Definition at line 1595 of file hash_3d.c.
int MMG5_chkBdryTria_deleteExtraTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int * | permtria | ||
) |
int MMG5_chkBdryTria_flagExtraTriangles | ( | MMG5_pMesh | mesh, |
MMG5_int * | ntpres, | ||
MMG5_Hash * | hashElt | ||
) |
mesh | pointer to the mesh structure. |
Step 2.5 of MMG5_chkBdryTria : Travel through the tria, delete those that are not in the hash tab or that are stored more that once.
Definition at line 1813 of file hash_3d.c.
int MMG5_chkBdryTria_hashBoundaries | ( | MMG5_pMesh | mesh, |
MMG5_int | ntmesh, | ||
MMG5_Hash * | hashElt | ||
) |
mesh | pointer to the mesh structure. |
ntmesh | number of boundary triangles in the mesh. |
hashElt | pointer towards face hash table. |
Step 2 of MMG5_chkBdryTria : create hash tables of boundaries in the mesh
Definition at line 1729 of file hash_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element in which we collapse. |
iface | face through wich we perform the collapse |
iedg | edge to collapse (in local face num) |
listv | pointer to the list of the tetra in the ball of p0. |
ilistv | number of tetra in the ball of p0. |
lists | pointer to the surfacic ball of p0. |
ilists | number of tetra in the surfacic ball of p0. |
refmin | reference of one of the two subdomains in presence |
refplus | reference of the other subdomain in presence |
typchk | typchk type of checking permformed for edge length (hmax or MMG3D_LLONG criterion). |
isnm | 1 if edge is non-manifold |
isnmint | 1 if ip is an internal non manifold point; |
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)
Definition at line 527 of file colver_3d.c.
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.
int8_t MMG5_chkedg | ( | MMG5_pMesh | mesh, |
MMG5_Tria * | pt, | ||
int8_t | ori, | ||
double | hmax, | ||
double | hausd, | ||
int | locPar | ||
) |
mesh | pointer to the mesh structure. |
pt | pointer to the triangle. |
ori | orientation of the triangle (1 for direct orientation, 0 otherwise). |
hmax | maximal edge length. |
hausd | maximal hausdorff distance. |
locPar | 1 if hmax and hausd are locals parameters. |
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.
int MMG5_chkfemtopo | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
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 824 of file chkmsh_3d.c.
int MMG5_chkptonbdy | ( | MMG5_pMesh | mesh, |
MMG5_int | np | ||
) |
Search boundary faces containing point np.
Definition at line 713 of file chkmsh_3d.c.
int MMG5_chkswpbdy | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int64_t * | list, | ||
int | ilist, | ||
MMG5_int | it1, | ||
MMG5_int | it2, | ||
int8_t | typchk | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
list | pointer to the shell of the edge. |
ilist | pointer to the size of the shell of the edge. |
it1 | first element of the open shell. |
it2 | last element of the open shell. |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
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.
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 | ||
) |
mesh | pointer to the mesh structure |
met | pointer to the metric structure. |
start | tetrahedra in which the swap should be performed |
ia | edge that we want to swap |
ilist | pointer to store the size of the shell of the edge |
list | pointer to store the shell of the edge |
crit | improvment coefficient |
typchk | type 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.
int MMG5_chkVertexConnectedDomains | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
check subdomains connected by a vertex and mark these vertex as CRN and REQ.
Definition at line 471 of file analys_3d.c.
int MMG5_cntbdypt | ( | MMG5_pMesh | mesh, |
MMG5_int | nump | ||
) |
Count how many boundary faces share point nump.
Definition at line 775 of file chkmsh_3d.c.
MMG5_int MMG5_colver | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int64_t * | list, | ||
int | ilist, | ||
int8_t | indq, | ||
int8_t | typchk | ||
) |
mesh | pointer to the mesh |
met | pointer to the metric |
list | pointer to the ball of the point |
ilist | number of elements in the ball of the point |
indq | local index of the point on which we collapse |
typchk | type of check performed depending on the remeshing step |
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 1154 of file colver_3d.c.
int MMG5_coquil | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
int64_t * | list, | ||
int8_t * | isbdy | ||
) |
mesh | pointer to the mesh structure |
start | index of the starting tetra |
ia | index of the edge |
list | list of tetra sharing the edge ia |
isbdy | 1 if edge is bdy, 0 otherwise (note that at interface of 2 domains the edge shell of a bdy edge can be closed) |
Find all tets sharing edge ia of tetra start.
Definition at line 1406 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
start | index of the starting tetrahedron. |
iface | index of the boundary face from which we come. |
ia | index of edge whose shell is computed (in tetra). |
list | pointer to the list of tetra in the shell (to fill). |
it1 | pointer to the index of the first boundary face sharing ia (to fill). |
it2 | pointer to the index of the second boundary face sharing ia (to fill). |
silent | if 1, print error message for more than 2 boundary triangles in the shell |
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.
Definition at line 1846 of file boulep_3d.c.
void MMG5_coquilFaceErrorMessage | ( | MMG5_pMesh | mesh, |
MMG5_int | k1, | ||
MMG5_int | k2 | ||
) |
mesh | pointer to the mesh structure. |
k1 | should contain a tetra index. |
k2 | should contain a tetra index different from k2. |
Print an error message if MMG5_coquilFace detect a boundary topology problem.
Definition at line 1616 of file boulep_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
na | global index of edge extremity. |
nb | global index of edge extremity. |
adj | starting tetrahedron at the begining and finish tet at the end. |
piv | global index of the vertex opposite to the travelling face (updated for the finish tet at the end). |
iface | previous traveling face of the tet (suspected to be boundary), updated. |
i | local index of the edge \([na,nb]\) in tet adj. |
Travel around the edge \([na,nb]\) from tetra adj and through the face piv.
Definition at line 1962 of file boulep_3d.c.
int MMG5_countelt | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
double * | weightelt, | ||
long * | npcible | ||
) |
mesh | pointer to the mesh. |
sol,pointer | to the sol structure. |
weightelt | put weight on elts. |
npcible | estimation of the final number of nodes/ |
Approximation of the final number of vertex.
Definition at line 824 of file quality_3d.c.
int MMG5_delone | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
MMG5_int | ip, | ||
int64_t * | list, | ||
int | ilist | ||
) |
mesh | pointer to the mesh structure. |
sol | pointer to the solution structure. |
ip | index of the point to insert. |
list | pointer to the list of the tetra in the cavity (computed by MMG5_cavity). |
ilist | number of tetra inside the cavity. |
Insertion of the vertex ip. The cavity of ip become its ball.
Definition at line 140 of file delaunay_3d.c.
int MMG5_deltag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
uint16_t | tag | ||
) |
mesh | pointer to the mesh structure |
start | index of the starting tetra |
ia | index of the edge in tetra start that we want to modify |
tag | tag to remove |
Remove the tag tag of edge ia in tetra start by travelling its shell.
Definition at line 1347 of file boulep_3d.c.
int MMG5_denoisbdy | ( | MMG5_pMesh | ) |
int MMG5_dichodisp | ( | MMG5_pMesh | , |
double * | |||
) |
|
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.
double MMG5_estavglen | ( | MMG5_pMesh | mesh | ) |
void MMG5_freeXPrisms | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Free xprism structure.
Definition at line 378 of file zaldy_3d.c.
void MMG5_freeXTets | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to the mesh structure. |
Free xtetra structure.
Definition at line 359 of file zaldy_3d.c.
MMG5_int MMG5_hashGetFace | ( | MMG5_Hash * | hash, |
MMG5_int | ia, | ||
MMG5_int | ib, | ||
MMG5_int | ic | ||
) |
int MMG5_hashPop | ( | MMG5_Hash * | hash, |
MMG5_int | a, | ||
MMG5_int | b | ||
) |
int MMG5_hEdge | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int | ref, | ||
uint16_t | tag | ||
) |
int MMG5_hGeom | ( | MMG5_pMesh | mesh | ) |
int MMG5_hGet | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int * | ref, | ||
uint16_t * | tag | ||
) |
int MMG5_hNew | ( | MMG5_pMesh | mesh, |
MMG5_HGeom * | hash, | ||
MMG5_int | hsiz, | ||
MMG5_int | hmax | ||
) |
int MMG5_hPop | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int * | ref, | ||
uint16_t * | tag | ||
) |
int MMG5_hTag | ( | MMG5_HGeom * | hash, |
MMG5_int | a, | ||
MMG5_int | b, | ||
MMG5_int | ref, | ||
uint16_t | tag | ||
) |
hash | pointer to the hash table in which edges are stored |
a | first edge extremity |
b | second edge extremity |
ref | reference to assign to the edge |
tag | tag to assign |
set tag to edge on geometry
Definition at line 914 of file hash_3d.c.
void MMG5_Init_parameters | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to 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.
int MMG5_interp4bar33_ani | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
MMG5_int | , | ||
double * | |||
) |
int MMG5_interp4bar_ani | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
MMG5_int | , | ||
double * | |||
) |
int MMG5_interp4bar_iso | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
MMG5_int | , | ||
double * | |||
) |
int MMG5_intmet_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
int8_t | i, | ||
MMG5_int | ip, | ||
double | s | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | element index. |
i | local index of edge in k. |
ip | global index of the new point in which we want to compute the metric. |
s | interpolation parameter (between 0 and 1). |
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 57 of file intmet_3d.c.
int MMG5_intmet_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
int8_t | i, | ||
MMG5_int | ip, | ||
double | s | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | element index. |
i | local index of edge in k. |
ip | global index of the new point in which we want to compute the metric. |
s | interpolation parameter (between 0 and 1). |
Interpolation of isotropic sizemap at parameter s along edge i of elt k.
Definition at line 174 of file intmet_3d.c.
int MMG5_intmet_iso_edge | ( | MMG5_pSol | met, |
MMG5_int | ip1, | ||
MMG5_int | ip2, | ||
MMG5_int | ip, | ||
double | s | ||
) |
met | pointer to the metric structure. |
ip1 | first global index of edge extremities. |
ip2 | second global index of edge extremities. |
ip | global index of the new point in which we want to compute the metric. |
s | interpolation parameter (between 0 and 1). |
Interpolation of isotropic sizemap at parameter s along edge [ip1,ip2].
Definition at line 197 of file intmet_3d.c.
int MMG5_intregmet | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
int8_t | , | ||
double | , | ||
double * | |||
) |
int MMG5_intridmet | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
MMG5_int | , | ||
double | , | ||
double * | , | ||
double * | |||
) |
int MMG5_intvolmet | ( | MMG5_pMesh | , |
MMG5_pSol | , | ||
MMG5_int | , | ||
int8_t | , | ||
double | , | ||
double * | |||
) |
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.
int MMG5_lapantilap | ( | MMG5_pMesh | , |
double * | |||
) |
|
inline |
Compute edge length from edge's coordinates.
*ca | pointer to the coordinates of the first edge's extremity. |
*cb | pointer to the coordinates of the second edge's extremity. |
*ma | pointer to the metric associated to the first edge's extremity. |
*mb | pointer to the metric associated to the second edge's extremity. |
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.
int MMG5_meancur | ( | MMG5_pMesh | mesh, |
MMG5_int | np, | ||
double | c[3], | ||
int | ilist, | ||
MMG5_int * | list, | ||
double | h[3] | ||
) |
double MMG5_meansizreg_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | nump, | ||
MMG5_int * | lists, | ||
int | ilists, | ||
double | hmin, | ||
double | hmax | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
nump | index of point in which the size must be computed. |
lists | pointer to the surfacic ball of nump. |
ilists | size of surfacic ball of nump. |
hmin | minimal edge size. |
hmax | maximal edge size. |
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.
size_t MMG5_memSize | ( | void | ) |
int MMG5_mmg3d1_delone | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int * | permNodGlob | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
permNodGlob | if provided, strore the global permutation of nodes |
Main adaptation routine.
— stage 1: geometric mesh
— stage 2: computational mesh
Definition at line 1032 of file mmg3d1_delone.c.
int MMG5_mmg3d1_pattern | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int * | permNodGlob | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
permNodGlob | if provided, strore the global permutation of nodes. |
Main adaptation routine.
— stage 1: geometric mesh
— Stage 2: computational mesh
Definition at line 428 of file mmg3d1_pattern.c.
int MMG5_mmg3d3 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | disp, | ||
MMG5_pSol | met, | ||
MMG5_int ** | invalidTets | ||
) |
mesh | mesh structure |
disp | displacement structure |
met | metric structure |
invalidTets | array to store the list of invalid tetra if we are unable to move. |
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 602 of file mmg3d3.c.
int MMG5_mmg3dBezierCP | ( | MMG5_pMesh | mesh, |
MMG5_Tria * | pt, | ||
MMG5_pBezier | pb, | ||
int8_t | ori | ||
) |
mesh | pointer to the mesh structure. |
pt | pointer to the triangle structure. |
pb | pointer to the computed Bezier structure. |
ori | triangle orientation. |
Compute Bezier control points on triangle pt (cf. [4])
Orientation of the normals at non-manifold points
Definition at line 326 of file bezier_3d.c.
int MMG5_mmg3dChkmsh | ( | MMG5_pMesh | mesh, |
int | severe, | ||
MMG5_int | base | ||
) |
mesh | pointer to the mesh structure. |
severe | level of performed check (unused) |
base | unused argument. |
Check the mesh validity
Definition at line 508 of file chkmsh_3d.c.
int MMG5_mmg3dRenumbering | ( | int | boxVertNbr, |
MMG5_pMesh | mesh, | ||
MMG5_pSol | sol, | ||
MMG5_pSol | fields, | ||
MMG5_int * | permNodGlob | ||
) |
boxVertNbr | number of vertices by box. |
mesh | pointer to the mesh structure. |
sol | pointer to the solution structure |
fields | pointer to an array of solution fields |
permNodGlob | array to store the global permutation of nodes (non mandatory) |
Modifies the node indicies to prevent from cache missing.
Definition at line 114 of file librnbg_3d.c.
int MMG5_movbdynomintpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int64_t * | listv, | ||
int | ilistv, | ||
int | improve | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move internal non manifold point, whose volumic ball is passed
Definition at line 1490 of file movpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary non manifold point, whose volumic and (exterior) surfacic balls are passed
Definition at line 730 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary non-manifold point, whose volumic and surfacic balls are passed.
Definition at line 1470 of file movpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary reference point, whose volumic and surfacic balls are passed.
Definition at line 706 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary reference point, whose volumic and surfacic balls are passed.
Definition at line 1446 of file movpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
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.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
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 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 626 of file movpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal |
Move boundary ridge point, whose volumic and surfacic balls are passed.
Definition at line 754 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary ridge point, whose volumic and surfacic balls are passed.
Definition at line 1614 of file movpt_3d.c.
int MMG5_movintpt_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int64_t * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
list | pointer to the volumic ball of the point. |
ilist | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move internal point whose volumic is passed.
Definition at line 58 of file anisomovpt_3d.c.
int MMG5_movintpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int64_t * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
list | pointer to the volumic ball of the point. |
ilist | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality. |
Move internal point whose volumic is passed.
Definition at line 58 of file movpt_3d.c.
int MMG5_movintptLES_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
MMG5_int * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
list | pointer to the volumic ball of the point. |
ilist | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 0.9 of the old minimum element quality. |
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.
Definition at line 185 of file movpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
clickSurf | triangle quality threshold under which we want to move |
clickVol | tetra quality threshold under which we want to move |
moveVol | internal move |
improveSurf | forbid surface degradation during the move |
improveVolSurf | forbid volume degradation during the surfacic move |
improveVol | forbid volume degradation during the move |
maxit | maximum number of iteration |
testmark | all the tets with a mark less than testmark will not be treated. |
Analyze tetrahedra and move points so as to make mesh more uniform.
Definition at line 736 of file mmg3d1.c.
|
inline |
mesh | pointer to the mesh structure. |
met | pointer to the sol structure. |
pt | pointer to a tetra. |
m1 | computed metric. |
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.
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.
int MMG5_norver | ( | MMG5_pMesh | mesh | ) |
mesh | pointer to mesh |
Compute normals at C1 vertices, for C0: tangents.
Following list summerizes computed (and not computed) data depending on point type:
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.
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 | ||
) |
mesh | pointer to the mesh structure. |
na | global index of edge extremity. |
nb | global index of edge extremity. |
adj | starting tetrahedron at the begining and finish tet at the end. |
piv | global index of the vertex opposite to the travelling face (updated for the finish tet at the end). |
iface | traveling face of the tet (suspected to be boundary), updated. |
i | local index of the edge \([na,nb]\) in tet adj. |
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 2014 of file boulep_3d.c.
double MMG5_orcal_poi | ( | double | a[3], |
double | b[3], | ||
double | c[3], | ||
double | d[3] | ||
) |
int MMG5_paktet | ( | MMG5_pMesh | mesh | ) |
int MMG5_ppgdisp | ( | MMG5_pMesh | , |
double * | |||
) |
void MMG5_printTetra | ( | MMG5_pMesh | mesh, |
char * | fileName | ||
) |
Debug function (not use in clean code): print mesh->tetra structure
Definition at line 975 of file tools_3d.c.
int MMG5_setadj | ( | MMG5_pMesh | mesh | ) |
mesh | pointer towarad the mesh structure. |
topology: set tria adjacency, detect Moebius, flip faces, count connected comp.
Definition at line 108 of file analys_3d.c.
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.
int MMG5_setNmTag | ( | MMG5_pMesh | mesh, |
MMG5_Hash * | hash | ||
) |
mesh | pointer towar the mesh structure. |
hash | edges hash table. |
Set tags to non-manifold edges and vertices. Not done before because we need the MMG5_xTetra table.
Definition at line 816 of file hash_3d.c.
int MMG5_settag | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia, | ||
uint16_t | tag, | ||
int | edg | ||
) |
mesh | pointer to the mesh structure |
start | tetra from which we start |
ia | local index of the edge in start |
tag | tag to set |
edg | edge reference to set |
Set tag tag and ref edg of edge ia (if need be) in tetra start by travelling its shell.
Definition at line 1234 of file boulep_3d.c.
int MMG5_setVertexNmTag | ( | MMG5_pMesh | mesh, |
uint16_t | funcuint16_t | ||
) |
mesh | pointer to the mesh structure. |
Seek the non-required non-manifold points and try to analyse whether they are corner or required.
Step 1: count the number or feature edges passing through each points
Step 2: add suitable point tags depending on the counted feature edges
Definition at line 637 of file hash_3d.c.
int MMG5_singul | ( | MMG5_pMesh | mesh | ) |
check for singularities
Definition at line 544 of file analys_3d.c.
int MMG5_split1 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 1 edge of tetra k.
Definition at line 134 of file split_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
list | pointer to the shell of edge. |
ret | size of the shell of edge. |
ip | idex of new point. |
cas | flag to watch the length of the new edges. |
metRidTyp | Type of storage of ridges metrics: 0 for classic storage, 1 for special storage. |
chkRidTet | if 1, avoid the creation of a tet with 4 ridge vertices |
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 629 of file split_3d.c.
int MMG5_split2 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split of two OPPOSITE edges
Definition at line 1489 of file split_3d.c.
int MMG5_split2sf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split of two edges that belong to a common face : 1 tetra becomes 3
Definition at line 1254 of file split_3d.c.
int MMG5_split2sf_globNum | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
MMG5_int | vGlobNum[4], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
vGlobNum | vertices indices of the tetra k (global node indices if called from ParMmg in ls mode). |
metRidTyp | metric storage (classic or special) |
Split of two edges that belong to a common face : 1 tetra becomes 3
Definition at line 1276 of file split_3d.c.
int MMG5_split3 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
1 face (3 edges) subdivided
Definition at line 1707 of file split_3d.c.
int MMG5_split3cone | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 3 edge in cone configuration
Definition at line 2059 of file split_3d.c.
int MMG5_split3cone_globNum | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
MMG5_int | vGlobNum[4], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
vGlobNum | vertices indices of the tetra k (global node indices if called from ParMmg in ls mode). |
metRidTyp | metric storage (classic or special) |
Split 3 opposite edges in a tetra
Definition at line 2081 of file split_3d.c.
int MMG5_split3op | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 3 opposite edges in a tetra
Definition at line 2654 of file split_3d.c.
MMG5_int MMG5_split4bar | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | tetra index. |
metRidTyp | metric storage (classic or special) |
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 3050 of file split_3d.c.
int MMG5_split4op | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 4 edges in a configuration when no 3 edges lie on the same face
Definition at line 3804 of file split_3d.c.
int MMG5_split4op_globNum | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
MMG5_int | vGlobNum[4], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
vGlobNum | vertices indices of the tetra k (global node indices if called from ParMmg in ls mode). |
metRidTyp | metric storage (classic or special) |
Split 4 edges in a configuration when no 3 edges lie on the same face
Definition at line 3826 of file split_3d.c.
int MMG5_split4sf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 4 edges in a configuration when 3 lie on the same face
Definition at line 3440 of file split_3d.c.
int MMG5_split5 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
Split 5 edges
Definition at line 4203 of file split_3d.c.
int MMG5_split6 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | k, | ||
MMG5_int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
k | index of element to split. |
vx | \(vx[i]\) is the index of the point to add on the edge i. |
metRidTyp | metric storage (classic or special) |
split all faces (6 edges)
Definition at line 4483 of file split_3d.c.
MMG5_int MMG5_splitedg | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | iel, | ||
int | iar, | ||
double | crit | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
iel | tetra index |
iar | edge index of iel |
crit | quality threshold. |
Split edge iar of iel and verify that every new tet have a better quality than crit
Definition at line 4916 of file split_3d.c.
int MMG5_srcbdy | ( | MMG5_pMesh | mesh, |
MMG5_int | start, | ||
int | ia | ||
) |
mesh | pointer to the mesh structure. |
start | starting tetra. |
ia | local edge index in tetra start. |
Identify whether edge ia in start is a boundary edge by unfolding its shell.
Definition at line 1557 of file boulep_3d.c.
int MMG5_srcface | ( | MMG5_pMesh | mesh, |
int | n0, | ||
int | n1, | ||
int | n2 | ||
) |
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.
int MMG5_stiffelt | ( | MMG5_pMesh | , |
int | , | ||
double * | , | ||
double * | |||
) |
double MMG5_surftri | ( | MMG5_pMesh | , |
int | , | ||
int | |||
) |
int MMG5_swpbdy | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int64_t * | list, | ||
int | ret, | ||
MMG5_int | it1, | ||
MMG3D_pPROctree | PROctree, | ||
int8_t | typchk | ||
) |
mesh | pointer to the mesh structure |
met | pointer to the solution structure |
list | pointer to the shell of the edge |
ret | dobble of the number of tetrahedra in the shell |
it1 | boundary face carrying the beforehand tested terminal point for collapse |
PROctree | pointer to the PROctree structure in Delaunay mode, NULL pointer in pattern mode. |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
Swap boundary edge whose shell is provided.
Definition at line 489 of file swap_3d.c.
int MMG5_swpgen | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG5_int | nconf, | ||
int | ilist, | ||
int64_t * | list, | ||
MMG3D_pPROctree | PROctree, | ||
int8_t | typchk | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the sol structure. |
nconf | configuration. |
ilist | number of tetrahedra in the shell of the edge that we want to swap. |
list | pointer to the shell of the edge that we want to swap. |
PROctree | pointer to the PROctree structure in Delaunay mode, NULL pointer in pattern mode. |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
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.
MMG5_int MMG5_swpmsh | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int | typchk | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure (only for delaunay). |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion). |
Search for boundary edges that could be swapped for geometric approximation.
Definition at line 598 of file mmg3d1.c.
MMG5_int MMG5_swptet | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
double | crit, | ||
double | declic, | ||
MMG3D_pPROctree | PROctree, | ||
int | typchk, | ||
MMG5_int | testmark | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
crit | coefficient of quality improvment. |
PROctree | pointer to the PROctree structure in delaunay mode and toward the NULL pointer otherwise |
typchk | type of checking permformed for edge length (hmin or LSHORT criterion) |
testmark | all the tets with a mark less than testmark will not be treated. |
Internal edge flipping.
Definition at line 672 of file mmg3d1.c.
void MMG5_tet2tri | ( | MMG5_pMesh | mesh, |
MMG5_int | k, | ||
int8_t | ie, | ||
MMG5_Tria * | ptt | ||
) |
double MMG5_timestepMCF | ( | MMG5_pMesh | , |
double | |||
) |
int MMG5_trydisp | ( | MMG5_pMesh | , |
double * | , | ||
short | |||
) |
int MMG5_velextLS | ( | MMG5_pMesh | mesh, |
MMG5_pSol | disp | ||
) |
mesh | pointer to the mesh. |
disp | pointer to the displacement. |
Extension of the displacement at the nodes of triangles tagged MMG5_DISPREF
Definition at line 393 of file velextls_3d.c.
double MMG5_volint | ( | MMG5_pMesh | ) |
|
inlinestatic |
mesh | pointer to the mesh structure. |
Warn user that some tetrahedra of the mesh have been reoriented.
Definition at line 560 of file libmmg3d_private.h.
|
static |
arpt[i]: edges passing through vertex i
Definition at line 189 of file libmmg3d_private.h.
|
static |
vertices of extremities of the edges of the tetra
Definition at line 183 of file libmmg3d_private.h.
|
static |
iarf[i]: edges of face opposite to vertex i
Definition at line 179 of file libmmg3d_private.h.
|
static |
iarf[i]: edges of face i for a prism
Definition at line 194 of file libmmg3d_private.h.
|
static |
num of the j^th edge in the i^th face
Definition at line 181 of file libmmg3d_private.h.
|
static |
idir[i]: vertices of face opposite to vertex i
Definition at line 175 of file libmmg3d_private.h.
|
static |
idir[i]: vertices of face i for a prism
Definition at line 192 of file libmmg3d_private.h.
|
static |
Definition at line 177 of file libmmg3d_private.h.
|
static |
ifar[i][]: faces sharing the ith edge of the tetra
Definition at line 185 of file libmmg3d_private.h.
|
static |
next vertex of tetra: {1,2,3,0,1,2,3}
Definition at line 171 of file libmmg3d_private.h.
|
static |
previous vertex of tetra: {3,0,1,2,3,0,1}
Definition at line 173 of file libmmg3d_private.h.
|
static |
isar[i][]: vertices of extremities of the edge opposite to the ith edge
Definition at line 187 of file libmmg3d_private.h.
|
static |
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 212 of file libmmg3d_private.h.