mmg3d
libmmg3d.h
Go to the documentation of this file.
1 /* ===========================================================================
2 ** This file is part of the mmg software package for the tetrahedral
3 ** mesh modification.
4 ** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
5 **
6 ** mmg is free software: you can redistribute it and/or modify it
7 ** under the terms of the GNU Lesser General Public License as published
8 ** by the Free Software Foundation, either version 3 of the License, or
9 ** (at your option) any later version.
10 **
11 ** mmg is distributed in the hope that it will be useful, but WITHOUT
12 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 ** License for more details.
15 **
16 ** You should have received a copy of the GNU Lesser General Public
17 ** License and of the GNU General Public License along with mmg (in
18 ** files COPYING.LESSER and COPYING). If not, see
19 ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
20 ** use this copy of the mmg distribution only if you accept them.
21 ** ===========================================================================
22 */
23 
45 #ifndef MMG3DLIB_H
46 #define MMG3DLIB_H
47 
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51 
52 #include "mmg/mmg3d/libmmgtypes.h"
53 
57 #define MMG3D_LMAX 10240
58 
96 };
97 
98 /*--------------------------- functions header ---------------------------*/
99 /* Initialization functions */
100 /* init structures */
132  int MMG3D_Init_mesh(const int starter,...);
158 
159 /* init file names */
176  int MMG3D_Set_inputMeshName(MMG5_pMesh mesh,const char* meshin);
193  int MMG3D_Set_outputMeshName(MMG5_pMesh mesh, const char* meshout);
212  const char* solin);
231  const char* solout);
232 
233 /* init structure sizes */
252  int MMG3D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity,
253  int np, int typSol);
254 
276  int nentities, int *typSol);
277 
300  int MMG3D_Set_meshSize(MMG5_pMesh mesh,int np,int ne,int nprism,
301  int nt,int nquad,int na);
302 
303 /* init structure datas */
325  int MMG3D_Set_vertex(MMG5_pMesh mesh, double c0, double c1,
326  double c2, int ref,int pos);
349  int MMG3D_Set_vertices(MMG5_pMesh mesh, double *vertices,int *refs);
371  int MMG3D_Set_tetrahedron(MMG5_pMesh mesh, int v0, int v1,
372  int v2, int v3, int ref, int pos);
394  int *refs);
418  int MMG3D_Set_prism(MMG5_pMesh mesh, int v0, int v1,
419  int v2, int v3, int v4, int v5, int ref, int pos);
440  int MMG3D_Set_prisms(MMG5_pMesh mesh, int *prisms,
441  int *refs);
442 
463  int MMG3D_Set_triangle(MMG5_pMesh mesh, int v0, int v1,
464  int v2, int ref,int pos);
485  int MMG3D_Set_triangles(MMG5_pMesh mesh, int *tria, int *refs);
507  int MMG3D_Set_quadrilateral(MMG5_pMesh mesh, int v0, int v1,
508  int v2, int v3, int ref,int pos);
529  int MMG3D_Set_quadrilaterals(MMG5_pMesh mesh, int *quads, int *refs);
549  int MMG3D_Set_edge(MMG5_pMesh mesh, int v0, int v1, int ref,int pos);
565  int MMG3D_Set_corner(MMG5_pMesh mesh, int k);
615  int MMG3D_Set_requiredTetrahedra(MMG5_pMesh mesh, int *reqIdx, int nreq);
649  int MMG3D_Set_requiredTriangles(MMG5_pMesh mesh, int *reqIdx, int nreq);
650 
686  int MMG3D_Set_parallelTriangles(MMG5_pMesh mesh, int *parIdx, int npar);
687 
703  int MMG3D_Set_ridge(MMG5_pMesh mesh, int k);
740  int MMG3D_Set_normalAtVertex(MMG5_pMesh mesh, int k, double n0, double n1,
741  double n2) ;
742 
760  int MMG3D_Set_scalarSol(MMG5_pSol met, double s,int pos);
777  int MMG3D_Set_scalarSols(MMG5_pSol met, double *s);
798  int MMG3D_Set_vectorSol(MMG5_pSol met, double vx,double vy, double vz,
799  int pos);
816  int MMG3D_Set_vectorSols(MMG5_pSol met, double *sols);
840  int MMG3D_Set_tensorSol(MMG5_pSol met, double m11,double m12, double m13,
841  double m22,double m23, double m33, int pos);
859  int MMG3D_Set_tensorSols(MMG5_pSol met, double *sols);
879  int MMG3D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,int pos);
900  int MMG3D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
901 
915 
916 /* check init */
933 
952  int MMG3D_Set_iparameter(MMG5_pMesh mesh,MMG5_pSol sol, int iparam,
953  int val);
972  int MMG3D_Set_dparameter(MMG5_pMesh mesh,MMG5_pSol sol, int dparam,
973  double val);
998  int ref,double hmin,double hmax,double hausd);
999 
1022  int MMG3D_Get_meshSize(MMG5_pMesh mesh, int* np, int* ne,int *nprism, int* nt,
1023  int* nquad, int* na);
1044  int MMG3D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int* typEntity,
1045  int* np,int* typSol);
1068  int* nentities,int* typSol);
1095  int MMG3D_Get_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2,
1096  int* ref,int* isCorner, int* isRequired);
1097 
1126  int MMG3D_Get_vertices(MMG5_pMesh mesh, double* vertices, int* refs,
1127  int* areCorners, int* areRequired);
1152  int MMG3D_Get_tetrahedron(MMG5_pMesh mesh, int* v0, int* v1, int* v2,
1153  int* v3,int* ref, int* isRequired);
1179  int MMG3D_Get_tetrahedra(MMG5_pMesh mesh, int* tetra,int* refs,
1180  int* areRequired);
1207  int MMG3D_Get_prism(MMG5_pMesh mesh, int* v0, int* v1, int* v2,
1208  int* v3,int* v4,int* v5,int* ref, int* isRequired);
1234  int MMG3D_Get_prisms(MMG5_pMesh mesh, int* prisms,int* refs,
1235  int* areRequired);
1257  int MMG3D_Get_triangle(MMG5_pMesh mesh, int* v0, int* v1, int* v2, int* ref,
1258  int* isRequired);
1283  int MMG3D_Get_triangles(MMG5_pMesh mesh, int* tria, int* refs,
1284  int* areRequired);
1307  int MMG3D_Get_quadrilateral(MMG5_pMesh mesh, int* v0, int* v1, int* v2,int* v3,
1308  int* ref, int* isRequired);
1333  int MMG3D_Get_quadrilaterals(MMG5_pMesh mesh, int* quads, int* refs,
1334  int* areRequired);
1355  int MMG3D_Get_edge(MMG5_pMesh mesh, int* e0, int* e1, int* ref,
1356  int* isRidge, int* isRequired);
1374  int MMG3D_Set_edges(MMG5_pMesh mesh, int *edges, int* refs);
1395  int MMG3D_Get_edges(MMG5_pMesh mesh,int *edges,int* refs,
1396  int *areRidges,int *areRequired);
1417  int MMG3D_Get_normalAtVertex(MMG5_pMesh mesh, int k, double *n0, double *n1,
1418  double *n2) ;
1419 
1435  int MMG3D_Get_scalarSol(MMG5_pSol met, double* s);
1452  int MMG3D_Get_scalarSols(MMG5_pSol met, double* s);
1470  int MMG3D_Get_vectorSol(MMG5_pSol met, double* vx, double* vy, double* vz);
1487  int MMG3D_Get_vectorSols(MMG5_pSol met, double* sols);
1508  int MMG3D_Get_tensorSol(MMG5_pSol met, double *m11,double *m12, double *m13,
1509  double *m22,double *m23, double *m33);
1526  int MMG3D_Get_tensorSols(MMG5_pSol met, double *sols);
1546  int MMG3D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,int pos);
1567  int MMG3D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
1568 
1584  int MMG3D_Get_iparameter(MMG5_pMesh mesh, int iparam);
1585 
1609  int MMG3D_Add_tetrahedron(MMG5_pMesh mesh, int v0, int v1,
1610  int v2, int v3, int ref);
1611 
1634  int MMG3D_Add_vertex(MMG5_pMesh mesh, double c0, double c1,
1635  double c2, int ref);
1636 
1637 /* input/output functions */
1654  int MMG3D_loadMesh(MMG5_pMesh mesh,const char *filename);
1673  int MMG3D_loadMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
1710  int MMG3D_saveMesh(MMG5_pMesh mesh, const char *filename);
1729  int MMG3D_saveMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
1769  int MMG3D_loadSol(MMG5_pMesh mesh,MMG5_pSol met, const char *filename);
1787  int MMG3D_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char* filename);
1788 
1806  int MMG3D_saveSol(MMG5_pMesh mesh,MMG5_pSol met, const char *filename);
1824  int MMG3D_saveAllSols(MMG5_pMesh mesh,MMG5_pSol *sol ,const char *filename);
1825 
1826 /* deallocations */
1858  int MMG3D_Free_all(const int starter,...);
1859 
1893  int MMG3D_Free_structures(const int starter,...);
1894 
1928  int MMG3D_Free_names(const int starter,...);
1929 
1930 /* library */
1948 
1966 
1986 
2002 
2015  int MMG3D_parsar(int argc,char *argv[],MMG5_pMesh mesh,MMG5_pSol met);
2016 
2048  int MMG3D_usage(char *prog);
2077 
2102  int MMG3D_mmg3dcheck(MMG5_pMesh mesh,MMG5_pSol met,double critmin,
2103  double lmin, double lmax, int *eltab,char metRidTyp);
2124  void MMG3D_searchqua(MMG5_pMesh mesh, MMG5_pSol met, double critmin,
2125  int *eltab,char metRidTyp);
2152  int MMG3D_searchlen(MMG5_pMesh mesh, MMG5_pSol met, double lmin,
2153  double lmax,int *eltab,char metRidTyp);
2154 
2177  int MMG3D_Get_adjaTet(MMG5_pMesh mesh,int kel, int listet[4]);
2198  extern double (*MMG3D_lenedgCoor)(double *ca,double *cb,double *sa,double *sb);
2199 
2216  int MMG3D_hashTetra(MMG5_pMesh mesh, int pack);
2217 
2234 
2251 
2268 
2269 
2285 
2308  int MMG3D_Get_tetFromTria(MMG5_pMesh mesh, int ktri, int *ktet, int *iface);
2309 
2334  int MMG3D_Get_tetsFromTria(MMG5_pMesh mesh, int ktri, int ktet[2], int iface[2]);
2335 #ifdef __cplusplus
2336 }
2337 #endif
2338 
2339 #endif
MMG5_Mesh::nprism
int nprism
Definition: libmmgtypes.h:517
MMG5_defsiz_startingMessage
int MMG5_defsiz_startingMessage(MMG5_pMesh mesh, MMG5_pSol met, const char *funcname)
Definition: isosiz.c:77
MMG5_Edge
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:243
MMG3D_IPARAM_noinsert
@ MMG3D_IPARAM_noinsert
Definition: libmmg3d.h:79
m
! double * m
Definition: libmmgtypesf.h:627
MG_Vert
#define MG_Vert
Definition: mmgcommon.h:155
MMG5_Par::hmax
double hmax
Definition: libmmgtypes.h:203
MMG3D_pack_tetraAndAdja
int MMG3D_pack_tetraAndAdja(MMG5_pMesh mesh)
Definition: libmmg3d.c:347
MMG3D_Set_normalAtVertex
int MMG3D_Set_normalAtVertex(MMG5_pMesh mesh, int k, double n0, double n1, double n2)
Definition: API_functions_3d.c:1267
MMG5_Mesh::prism
MMG5_pPrism prism
Definition: libmmgtypes.h:546
MMG3D_Init_fileNames
void MMG3D_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: API_functions_3d.c:55
MMG5_Info::npar
int npar
Definition: libmmgtypes.h:447
MMG3D_intmet33_ani
int MMG3D_intmet33_ani(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, int ip, double s)
Definition: intmet_3d.c:101
MG_BDY
#define MG_BDY
Definition: mmgcommon.h:145
MMG3D_Param
MMG3D_Param
Input parameters for mmg library.
Definition: libmmg3d.h:68
MMG5_Mesh::nenil
int nenil
Definition: libmmgtypes.h:527
MMG3D_IPARAM_optimLES
@ MMG3D_IPARAM_optimLES
Definition: libmmg3d.h:78
nsols
! int nsols
Definition: libmmgtypesf.h:573
MMG3D_switch_metricStorage
int MMG3D_switch_metricStorage(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:967
MMG5_Sol::np
int np
Definition: libmmgtypes.h:566
MMG3D_Set_quadrilateral
int MMG3D_Set_quadrilateral(MMG5_pMesh mesh, int v0, int v1, int v2, int v3, int ref, int pos)
Definition: API_functions_3d.c:947
MMG5_Point::c
double c[3]
Definition: libmmgtypes.h:215
MMG3D_analys
int MMG3D_analys(MMG5_pMesh mesh)
Definition: analys_3d.c:731
MMG3D_IPARAM_mem
@ MMG3D_IPARAM_mem
Definition: libmmg3d.h:70
MMG5_warnOrientation
static void MMG5_warnOrientation(MMG5_pMesh mesh)
Definition: mmg3d.h:530
MG_EDG
#define MG_EDG(tag)
Definition: mmgcommon.h:162
MMG3D_Set_vertices
int MMG3D_Set_vertices(MMG5_pMesh mesh, double *vertices, int *refs)
Definition: API_functions_3d.c:426
MMG3D_mark_packedPoints
int MMG3D_mark_packedPoints(MMG5_pMesh mesh, int *np, int *nc)
Definition: libmmg3d.c:317
MMG5_hgeom
Cell of the hash table of geom edges.
Definition: libmmgtypes.h:466
MMG3D_Set_requiredTriangles
int MMG3D_Set_requiredTriangles(MMG5_pMesh mesh, int *reqIdx, int nreq)
Definition: API_functions_3d.c:1225
MMG3D_parsar
int MMG3D_parsar(int argc, char *argv[], MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:170
MMG3D_stockOptions
int MMG3D_stockOptions(MMG5_pMesh mesh, MMG5_Info *info)
Definition: libmmg3d_tools.c:557
MMG5_moymet
int MMG5_moymet(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt, double *m1)
Definition: anisosiz_3d.c:69
MG_MAX
#define MG_MAX(a, b)
Definition: mmgcommon.h:136
MMG5_orvol
double MMG5_orvol(MMG5_pPoint point, int *v)
Definition: tools.c:836
MMG5_Info::hmin
double hmin
Definition: libmmgtypes.h:445
MMG5_Tria::v
int v[3]
Definition: libmmgtypes.h:272
MMG5_Tetra
Definition: libmmgtypes.h:339
MMG3D_Set_tetrahedron
int MMG3D_Set_tetrahedron(MMG5_pMesh mesh, int v0, int v1, int v2, int v3, int ref, int pos)
Definition: API_functions_3d.c:489
MMG3D_zaldy
int MMG3D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_3d.c:316
MMG5_Sol
Definition: libmmgtypes.h:563
MMG3D_defsiz_iso
int MMG3D_defsiz_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz_3d.c:642
MMG5_hashEdge
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:216
MG_SIN
#define MG_SIN(tag)
Definition: mmgcommon.h:163
MMG5_gradsiz_iso
int MMG5_gradsiz_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:268
type
! int type
Definition: libmmgtypesf.h:570
MMG5_Mesh::memCur
size_t memCur
Definition: libmmgtypes.h:511
MMG5_Mesh::nc1
int nc1
Definition: libmmgtypes.h:519
adja
! int * adja
Definition: libmmgtypesf.h:584
MMG5_Point::s
int s
Definition: libmmgtypes.h:222
MMG3D_Set_vectorSols
int MMG3D_Set_vectorSols(MMG5_pSol met, double *sols)
Definition: API_functions_3d.c:1448
MMG3D_hashTetra
int MMG3D_hashTetra(MMG5_pMesh mesh, int pack)
Definition: hash_3d.c:180
MMG5_Edge::ref
int ref
Definition: libmmgtypes.h:245
MMG3D_Get_tensorSols
int MMG3D_Get_tensorSols(MMG5_pSol met, double *sols)
Definition: API_functions_3d.c:1590
MMG3D_lenedgCoor
double(* MMG3D_lenedgCoor)(double *ca, double *cb, double *sa, double *sb)
Definition: libmmg3d.c:45
MG_REL
#define MG_REL
Definition: mmgcommon.h:62
MMG3D_Get_tetsFromTria
int MMG3D_Get_tetsFromTria(MMG5_pMesh mesh, int ktri, int ktet[2], int iface[2])
Definition: libmmg3d_tools.c:704
MMG3D_Set_outputSolName
int MMG3D_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
Definition: API_functions_3d.c:76
MMG5_freeXTets
void MMG5_freeXTets(MMG5_pMesh mesh)
Definition: zaldy_3d.c:329
MMG3D_Set_scalarSol
int MMG3D_Set_scalarSol(MMG5_pSol met, double s, int pos)
Definition: API_functions_3d.c:1289
MMG3D_Get_edge
int MMG3D_Get_edge(MMG5_pMesh mesh, int *e0, int *e1, int *ref, int *isRidge, int *isRequired)
Definition: API_functions_3d.c:1096
MG_REF
#define MG_REF
Definition: mmgcommon.h:141
MMG3D_Get_quadrilateral
int MMG3D_Get_quadrilateral(MMG5_pMesh mesh, int *v0, int *v1, int *v2, int *v3, int *ref, int *isRequired)
Definition: API_functions_3d.c:975
MG_EOK
#define MG_EOK(pt)
Definition: mmgcommon.h:160
MMG5_hgeom::tag
int16_t tag
Definition: libmmgtypes.h:471
nemax
! int nemax
Definition: libmmgtypesf.h:571
MMG5_excfun
static void MMG5_excfun(int sigid)
Definition: mmgcommon.h:404
MG_NOM
#define MG_NOM
Definition: mmgcommon.h:144
MMG3D_Set_outputMeshName
int MMG3D_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
Definition: API_functions_3d.c:71
MMG5_HGeom::max
int max
Definition: libmmgtypes.h:480
MMG5_Mesh::xt
int xt
Definition: libmmgtypes.h:525
MMG5_sys33sym
int MMG5_sys33sym(double a[6], double b[3], double r[3])
Definition: tools.c:463
MMG5_Sol::namein
char * namein
Definition: libmmgtypes.h:573
MMG5_NSOLS_MAX
#define MMG5_NSOLS_MAX
Definition: libmmgtypes.h:167
MMG5_Info::iso
char iso
Definition: libmmgtypes.h:453
MMG5_swapf
static float MMG5_swapf(float sbin)
Definition: inout.c:64
MMG5_Mesh::xp
int xp
Definition: libmmgtypes.h:525
MMG5_Sol::size
int size
Definition: libmmgtypes.h:569
MMG5_hashGet
int MMG5_hashGet(MMG5_Hash *hash, int a, int b)
Definition: hash.c:303
MMG3D_IPARAM_numberOfLocalParam
@ MMG3D_IPARAM_numberOfLocalParam
Definition: libmmg3d.h:83
MMG3D_saveAllSols
int MMG3D_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:2007
MMG3D_Set_inputMeshName
int MMG3D_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
Definition: API_functions_3d.c:62
MMG5_scaleMesh
int MMG5_scaleMesh(MMG5_pMesh mesh, MMG5_pSol met)
Definition: scalem.c:89
MG_STR
#define MG_STR
Definition: mmgcommon.h:64
MMG3D_Set_triangles
int MMG3D_Set_triangles(MMG5_pMesh mesh, int *tria, int *refs)
Definition: API_functions_3d.c:904
MMG3D_Get_tensorSol
int MMG3D_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m13, double *m22, double *m23, double *m33)
Definition: API_functions_3d.c:1528
MMG3D_mmg3dmov
int MMG3D_mmg3dmov(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol disp)
Definition: libmmg3d.c:1134
MMG5_Hash
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:499
MMG3D_mark_pointsOnReqEdge_fromTetra
void MMG3D_mark_pointsOnReqEdge_fromTetra(MMG5_pMesh mesh)
Definition: isosiz_3d.c:1018
tmp
! int tmp
Definition: libmmgtypesf.h:259
MMG5_xTetra::tag
int16_t tag[6]
Definition: libmmgtypes.h:363
MMG3D_loadMesh
int MMG3D_loadMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_3d.c:102
MMG5_boulesurfvolp
int MMG5_boulesurfvolp(MMG5_pMesh mesh, int start, int ip, int iface, int *listv, int *ilistv, int *lists, int *ilists, int isnm)
Definition: boulep_3d.c:469
MMG3D_Get_prism
int MMG3D_Get_prism(MMG5_pMesh mesh, int *v0, int *v1, int *v2, int *v3, int *v4, int *v5, int *ref, int *isRequired)
Definition: API_functions_3d.c:723
MMG3D_Set_ithSols_inSolsAtVertices
int MMG3D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Definition: API_functions_3d.c:1666
MMG5_printSolStats
void MMG5_printSolStats(MMG5_pMesh mesh, MMG5_pSol *sol)
Definition: inout.c:2428
tetra
! MMG5_pTetra tetra
Definition: libmmgtypesf.h:599
MMG5_Par::hmin
double hmin
Definition: libmmgtypes.h:202
nt
! int nt
Definition: libmmgtypesf.h:571
MMG5_Mesh::point
MMG5_pPoint point
Definition: libmmgtypes.h:542
info
MMG5_Info info
Definition: libmmgtypesf.h:607
MMG5_xTetra::ftag
int16_t ftag[4]
Definition: libmmgtypes.h:361
MG_VER
#define MG_VER
Definition: mmgcommon.h:61
k
! int k
Definition: libmmgtypesf.h:543
MG_GET
#define MG_GET(flag, bit)
Definition: mmgcommon.h:169
MMG5_Tria::edg
int edg[3]
Definition: libmmgtypes.h:277
MMG5_Tria::tag
int16_t tag[3]
Definition: libmmgtypes.h:280
inlined_functions.h
inlined Functions
MMG5_invmatg
int MMG5_invmatg(double m[9], double mi[9])
Definition: tools.c:329
MMG3D_Set_edges
int MMG3D_Set_edges(MMG5_pMesh mesh, int *edges, int *refs)
Definition: API_functions_3d.c:1142
MMG5_swapd
static double MMG5_swapd(double sbin)
Definition: inout.c:76
MMG3D_Set_requiredTetrahedra
int MMG3D_Set_requiredTetrahedra(MMG5_pMesh mesh, int *reqIdx, int nreq)
Definition: API_functions_3d.c:1207
MMG3D_DPARAM_angleDetection
@ MMG3D_DPARAM_angleDetection
Definition: libmmg3d.h:87
MMG3D_Set_tensorSol
int MMG3D_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m13, double m22, double m23, double m33, int pos)
Definition: API_functions_3d.c:1486
MMG5_intmet_iso
int MMG5_intmet_iso(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, int ip, double s)
Definition: intmet_3d.c:131
MMG3D_Set_inputSolName
int MMG3D_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Definition: API_functions_3d.c:67
MG_PARBDY
#define MG_PARBDY
Definition: mmgcommon.h:151
MMG3D_prilen
int MMG3D_prilen(MMG5_pMesh mesh, MMG5_pSol met, char)
Definition: quality_3d.c:319
MMG5_interp4barintern
static int MMG5_interp4barintern(MMG5_pSol met, int ip, double cb[4], double dm0[6], double dm1[6], double dm2[6], double dm3[6])
Definition: intmet_3d.c:336
MMG3D_localParamNm
int MMG3D_localParamNm(MMG5_pMesh, int, int, int, double *, double *, double *)
Definition: tools_3d.c:1052
MMG5_Info::hgradreq
double hgradreq
Definition: libmmgtypes.h:445
tria
! MMG5_pTria tria
Definition: libmmgtypesf.h:603
MMG5_Mesh::base
int base
Definition: libmmgtypes.h:521
MMG3D_Get_prisms
int MMG3D_Get_prisms(MMG5_pMesh mesh, int *prisms, int *refs, int *areRequired)
Definition: API_functions_3d.c:799
n1
! double n1[3]
Definition: libmmgtypesf.h:275
MMG3D_sum_reqEdgeLengthsAtPoint
static int MMG3D_sum_reqEdgeLengthsAtPoint(MMG5_pMesh mesh, MMG5_pSol met, MMG5_Hash *hash, MMG5_pTetra pt, char i)
Definition: isosiz_3d.c:512
MMG5_idir
static const unsigned char MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:145
nquad
! int nquad
Definition: libmmgtypesf.h:572
MG_VOK
#define MG_VOK(ppt)
Definition: mmgcommon.h:159
inlined_functions_3d.h
inlined Functions
MMG5_Mesh::np
int np
Definition: libmmgtypes.h:516
MMG5_Mesh::nsols
int nsols
Definition: libmmgtypes.h:518
MMG3D_Add_tetrahedron
int MMG3D_Add_tetrahedron(MMG5_pMesh mesh, int v0, int v1, int v2, int v3, int ref)
Definition: API_functions_3d.c:1862
imprim
! char imprim
Definition: libmmgtypesf.h:503
MMG3D_IPARAM_optim
@ MMG3D_IPARAM_optim
Definition: libmmg3d.h:77
MMG5_Point::ref
int ref
Definition: libmmgtypes.h:217
MMG3D_Set_prisms
int MMG3D_Set_prisms(MMG5_pMesh mesh, int *prisms, int *refs)
Definition: API_functions_3d.c:769
MMG3D_bdryBuild
int MMG3D_bdryBuild(MMG5_pMesh mesh)
Definition: libmmg3d.c:222
MMG3D_solTruncatureForOptim
void MMG3D_solTruncatureForOptim(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:96
MMG5_Par::ref
int ref
Definition: libmmgtypes.h:205
MMG5_sum_reqEdgeLengthsAtPoint
int MMG5_sum_reqEdgeLengthsAtPoint(MMG5_pMesh mesh, MMG5_pSol met, int ip0, int ip1)
Definition: isosiz.c:129
MMG5_Info::optim
unsigned char optim
Definition: libmmgtypes.h:457
MMG3D_inqua
int MMG3D_inqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:587
MMG5_Mesh::xtetra
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:545
MMG5_saveMshMesh
int MMG5_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename, int metricData)
Definition: inout.c:1504
MMG3D_Set_requiredVertex
int MMG3D_Set_requiredVertex(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1195
MMG5_swapbin
static int MMG5_swapbin(int sbin)
Definition: inout_3d.c:42
MMG3D_Get_triangle
int MMG3D_Get_triangle(MMG5_pMesh mesh, int *v0, int *v1, int *v2, int *ref, int *isRequired)
Definition: API_functions_3d.c:862
MMG3D_IPARAM_nosurf
@ MMG3D_IPARAM_nosurf
Definition: libmmg3d.h:82
MMG3D_Get_vertex
int MMG3D_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, int *ref, int *isCorner, int *isRequired)
Definition: API_functions_3d.c:379
MMG5_Tetrahedron
@ MMG5_Tetrahedron
Definition: libmmgtypes.h:189
MMG3D_Set_inputSolName
int MMG3D_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Definition: API_functions_3d.c:67
MMG5_Mesh::ne
int ne
Definition: libmmgtypes.h:516
MMG3D_mmg3dcheck
int MMG3D_mmg3dcheck(MMG5_pMesh mesh, MMG5_pSol met, double critmin, double lmin, double lmax, int *eltab, char metRidTyp)
Definition: libmmg3d_tools.c:576
MMG3D_Set_solSize
int MMG3D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, int np, int typSol)
Definition: API_functions_3d.c:109
MMG3D_saveSol
int MMG3D_saveSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_3d.c:1965
MMG5_Mesh::adja
int * adja
Definition: libmmgtypes.h:529
MMG5_Mesh::nai
int nai
Definition: libmmgtypes.h:516
hmin
! double hmin
Definition: libmmgtypesf.h:241
MMG3D_saveMshMesh
int MMG3D_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_3d.c:1763
MMG5_iprv2
static const unsigned char MMG5_iprv2[3]
Definition: mmgcommon.h:471
MMG5_Info::hausd
double hausd
Definition: libmmgtypes.h:445
MMG5_Prism::v
int v[6]
Definition: libmmgtypes.h:401
MMG5_Mesh::tria
MMG5_pTria tria
Definition: libmmgtypes.h:548
MMG5_interp4bar_iso
int MMG5_interp4bar_iso(MMG5_pMesh mesh, MMG5_pSol met, int k, int ip, double cb[4])
Definition: intmet_3d.c:308
MMG3D_pack_pointArray
int MMG3D_pack_pointArray(MMG5_pMesh mesh)
Definition: libmmg3d.c:569
MMG3D_Get_ithSols_inSolsAtVertices
int MMG3D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Definition: API_functions_3d.c:1694
MMG3D_Get_iparameter
int MMG3D_Get_iparameter(MMG5_pMesh mesh, int iparam)
Definition: API_functions_3d.c:2100
MMG3D_loadAllSols
int MMG3D_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1859
MG_CRN
#define MG_CRN
Definition: mmgcommon.h:146
MMG5_Info::inputMet
unsigned char inputMet
Definition: libmmgtypes.h:458
MG_REQ
#define MG_REQ
Definition: mmgcommon.h:143
MMG3D_Set_solsAtVerticesSize
int MMG3D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, int nentities, int *typSol)
Definition: API_functions_3d.c:154
MMG3D_Set_constantSize
int MMG3D_Set_constantSize(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:942
MMG5_intmet_ani
int MMG5_intmet_ani(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, int ip, double s)
Definition: intmet_3d.c:51
mesh
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
MMG5_ADD_MEM
#define MMG5_ADD_MEM(mesh, size, message, law)
Definition: mmgcommon.h:275
MMG5_Mesh::quadra
MMG5_pQuad quadra
Definition: libmmgtypes.h:549
MMG5_iarfinv
static const unsigned char MMG5_iarfinv[4][6]
num of the j^th edge in the i^th face
Definition: mmg3d.h:151
_LIBMMG5_RETURN
#define _LIBMMG5_RETURN(mesh, met, val)
Definition: mmgcommon.h:177
MMG5_loadMshMesh_part2
int MMG5_loadMshMesh_part2(MMG5_pMesh mesh, MMG5_pSol *sol, FILE **inm, const long posNodes, const long posElts, const long *posNodeData, const int bin, const int iswp, const int nelts, const int nsols)
Definition: inout.c:489
MMG3D_setfunc
void MMG3D_setfunc(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:35
MMG3D_destockOptions
void MMG3D_destockOptions(MMG5_pMesh mesh, MMG5_Info *info)
Definition: libmmg3d_tools.c:570
MG_GEO
#define MG_GEO
Definition: mmgcommon.h:142
MMG5_eigenv
int MMG5_eigenv(int symmat, double *mat, double lambda[3], double v[3][3])
Find eigenvalues and vectors of a 3x3 matrix.
Definition: eigenv.c:356
MMG5_gradation_info
void MMG5_gradation_info(MMG5_pMesh mesh)
Definition: isosiz.c:96
MMG3D_pack_prismsAndQuads
int MMG3D_pack_prismsAndQuads(MMG5_pMesh mesh)
Definition: libmmg3d.c:441
MMG3D_Set_ridge
int MMG3D_Set_ridge(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1255
chrono
void chrono(int cmode, mytime *ptt)
Function to measure time.
Definition: chrono.c:49
sw
#define sw
Definition: inout_3d.c:39
MMG5_swapf
static float MMG5_swapf(float sbin)
Definition: inout_3d.c:65
MMG3D_Free_topoTables
void MMG3D_Free_topoTables(MMG5_pMesh mesh)
Definition: libmmg3d.c:64
MMG5_SAFE_RECALLOC
#define MMG5_SAFE_RECALLOC(ptr, prevSize, newSize, type, message, law)
Definition: mmgcommon.h:326
MMG3D_mmg3dmov
int MMG3D_mmg3dmov(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol disp)
Definition: libmmg3d.c:1134
MMG3D_saveSol
int MMG3D_saveSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_3d.c:1965
v
! int v[3]
Definition: libmmgtypesf.h:315
MMG5_Mesh::npi
int npi
Definition: libmmgtypes.h:516
MMG3D_DPARAM_hmin
@ MMG3D_DPARAM_hmin
Definition: libmmg3d.h:88
MMG3D_Get_solSize
int MMG3D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, int *np, int *typSol)
Definition: API_functions_3d.c:271
MMG3D_Set_ithSol_inSolsAtVertices
int MMG3D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, int pos)
Definition: API_functions_3d.c:1609
MMG3D_DPARAM_hgradreq
@ MMG3D_DPARAM_hgradreq
Definition: libmmg3d.h:93
MMG3D_set_metricAtPointsOnReqEdges
int MMG3D_set_metricAtPointsOnReqEdges(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz_3d.c:542
MMG3D_DPARAM_hgrad
@ MMG3D_DPARAM_hgrad
Definition: libmmg3d.h:92
MMG5_Mesh::htab
MMG5_HGeom htab
Definition: libmmgtypes.h:551
MMG5_Tria::ref
int ref
Definition: libmmgtypes.h:273
MMG5_Point
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
MMG5_RETURN_AND_PACK
#define MMG5_RETURN_AND_PACK(mesh, met, disp, val)
Definition: libmmg3d.c:50
MMG5_nortri
int MMG5_nortri(MMG5_pMesh mesh, MMG5_pTria pt, double *n)
Definition: tools.c:155
A16TH
#define A16TH
Definition: isosiz_3d.c:42
MMG3D_unset_reqBoundaries
void MMG3D_unset_reqBoundaries(MMG5_pMesh mesh)
Definition: libmmg3d.c:645
hgrad
! double hgrad
Definition: libmmgtypesf.h:495
MMG5_hNew
int MMG5_hNew(MMG5_pMesh mesh, MMG5_HGeom *hash, int hsiz, int hmax)
Definition: hash_3d.c:1006
MMG5_chkBdryTria
int MMG5_chkBdryTria(MMG5_pMesh mesh)
Definition: hash_3d.c:1402
MMG3D_Set_handGivenMesh
void MMG3D_Set_handGivenMesh(MMG5_pMesh mesh)
Definition: API_functions_3d.c:1722
MMG3D_Set_requiredTetrahedron
int MMG3D_Set_requiredTetrahedron(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1201
mytime
Chrono object.
Definition: chrono.h:58
MMG5_mmg3d1_pattern
int MMG5_mmg3d1_pattern(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_pattern.c:445
MMG5_BezierEdge
int MMG5_BezierEdge(MMG5_pMesh mesh, int ip0, int ip1, double b0[3], double b1[3], char ised, double v[3])
Definition: bezier_3d.c:152
MMG5_Edge::b
int b
Definition: libmmgtypes.h:244
MMG3D_Set_requiredEdge
int MMG3D_Set_requiredEdge(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1261
MMG5_hashNew
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:333
s
! int s
Definition: libmmgtypesf.h:262
MMG5_Sol::m
double * m
Definition: libmmgtypes.h:571
MMG3D_saveMshMesh_and_allData
int MMG3D_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1768
MMG5_unscaleMesh
int MMG5_unscaleMesh(MMG5_pMesh mesh, MMG5_pSol met)
Definition: scalem.c:260
MMG3D_Get_quadrilaterals
int MMG3D_Get_quadrilaterals(MMG5_pMesh mesh, int *quads, int *refs, int *areRequired)
Definition: API_functions_3d.c:1038
MMG3D_saveMesh
int MMG3D_saveMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_3d.c:1104
MMG5_loadSolHeader
int MMG5_loadSolHeader(const char *filename, int meshDim, FILE **inm, int *ver, int *bin, int *iswp, int *np, int *dim, int *nsols, int **type, long *posnp, int imprim)
Definition: inout.c:1968
MMG5_freeXPrisms
void MMG5_freeXPrisms(MMG5_pMesh mesh)
Definition: zaldy_3d.c:348
MMG5_rotmatrix
int MMG5_rotmatrix(double n[3], double r[3][3])
Definition: tools.c:232
npmax
! int npmax
Definition: libmmgtypesf.h:571
MMG5_STRONGFAILURE
#define MMG5_STRONGFAILURE
Definition: libmmgtypes.h:56
MMG5_Par::elt
char elt
Definition: libmmgtypes.h:206
MMG5_mark_pointsOnReqEdge_fromTria
void MMG5_mark_pointsOnReqEdge_fromTria(MMG5_pMesh mesh)
Definition: isosiz.c:233
MMG3D_Set_parallelTriangle
int MMG3D_Set_parallelTriangle(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1236
MMG5_interp4bar_ani
int MMG5_interp4bar_ani(MMG5_pMesh mesh, MMG5_pSol met, int k, int ip, double cb[4])
Definition: intmet_3d.c:378
MMG3D_doSol
int MMG3D_doSol(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:810
ver
! int ver
Definition: libmmgtypesf.h:568
MMG3D_usage
int MMG3D_usage(char *prog)
Definition: libmmg3d_tools.c:117
MMG5_tet2tri
void MMG5_tet2tri(MMG5_pMesh mesh, int k, char ie, MMG5_Tria *ptt)
Definition: mmg3d1.c:52
A32TH
#define A32TH
Definition: isosiz_3d.c:43
MMG3D_Set_edge
int MMG3D_Set_edge(MMG5_pMesh mesh, int v0, int v1, int ref, int pos)
Definition: API_functions_3d.c:1064
MMG5_HGeom::geom
MMG5_hgeom * geom
Definition: libmmgtypes.h:479
MMG5_Quad::v
int v[4]
Definition: libmmgtypes.h:305
MMG5_invmat
int MMG5_invmat(double *m, double *mi)
Definition: tools.c:278
MG_MIN
#define MG_MIN(a, b)
Definition: mmgcommon.h:137
dim
! int dim
Definition: libmmgtypesf.h:569
MMG5_Mesh::na
int na
Definition: libmmgtypes.h:516
MMG5_readFloatSol3D
void MMG5_readFloatSol3D(MMG5_pSol sol, FILE *inm, int bin, int iswp, int pos)
Definition: inout.c:2106
MMG3D_DPARAM_hmax
@ MMG3D_DPARAM_hmax
Definition: libmmg3d.h:89
MMG5_Info::imprim
char imprim
Definition: libmmgtypes.h:453
ne
! int ne
Definition: libmmgtypesf.h:571
MMG5_Info::hgrad
double hgrad
Definition: libmmgtypes.h:445
MMG5_Edge::tag
int16_t tag
Definition: libmmgtypes.h:248
MMG5_EPS
#define MMG5_EPS
Definition: eigenv.h:32
MMG3D_Init_parameters
void MMG3D_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions_3d.c:80
MMG5_Point::tag
int16_t tag
Definition: libmmgtypes.h:223
hausd
! double hausd
Definition: libmmgtypesf.h:243
MMG5_xPoint::n1
double n1[3]
Definition: libmmgtypes.h:234
MMG3D_Get_tetrahedron
int MMG3D_Get_tetrahedron(MMG5_pMesh mesh, int *v0, int *v1, int *v2, int *v3, int *ref, int *isRequired)
Definition: API_functions_3d.c:560
MMG5_Tria
Definition: libmmgtypes.h:270
MMG3D_Chk_meshData
int MMG3D_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
Definition: API_functions_3d.c:1738
MMG3D_loadMesh
int MMG3D_loadMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_3d.c:102
MMG3D_loadSol
int MMG3D_loadSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_3d.c:1782
MMG3D_Add_vertex
int MMG3D_Add_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, int ref)
Definition: API_functions_3d.c:1935
MMG3D_Set_corner
int MMG3D_Set_corner(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1189
MMG5_SUCCESS
#define MMG5_SUCCESS
Definition: libmmgtypes.h:40
MG_NOSURF
#define MG_NOSURF
Definition: mmgcommon.h:147
MMG5_Bezier
Definition: mmgcommon.h:480
MAXLEN
#define MAXLEN
Definition: isosiz_3d.c:40
MMG3D_PARAM_size
@ MMG3D_PARAM_size
Definition: libmmg3d.h:95
MMG5_eigensym
int MMG5_eigensym(double m[3], double lambda[2], double vp[2][2])
Definition: eigenv.c:746
MMG3D_Set_triangle
int MMG3D_Set_triangle(MMG5_pMesh mesh, int v0, int v1, int v2, int ref, int pos)
Definition: API_functions_3d.c:828
MMG3D_Set_parallelTriangles
int MMG3D_Set_parallelTriangles(MMG5_pMesh mesh, int *parIdx, int npar)
Definition: API_functions_3d.c:1244
MMG3D_outqua
int MMG3D_outqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:712
MMG5_Sol::ver
int ver
Definition: libmmgtypes.h:564
MMG2D_quickarea
double MMG2D_quickarea(double a[2], double b[2], double c[2])
Definition: tools.c:856
MMG5_LOWFAILURE
#define MMG5_LOWFAILURE
Definition: libmmgtypes.h:48
MMG5_Mesh::nquad
int nquad
Definition: libmmgtypes.h:517
MMG3D_loadMshMesh_and_allData
int MMG3D_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1037
MMG5_hgeom
! typedef struct @12 MMG5_hgeom
MMG3D_Get_meshSize
int MMG3D_Get_meshSize(MMG5_pMesh mesh, int *np, int *ne, int *nprism, int *nt, int *nquad, int *na)
Definition: API_functions_3d.c:324
MG_NUL
#define MG_NUL
Definition: mmgcommon.h:152
MMG5_Quad::ref
int ref
Definition: libmmgtypes.h:306
MMG5_interp4bar33_ani
int MMG5_interp4bar33_ani(MMG5_pMesh mesh, MMG5_pSol met, int k, int ip, double cb[4])
Definition: intmet_3d.c:450
MMG5_Sol::type
int type
Definition: libmmgtypes.h:570
MMG3D_IPARAM_octree
@ MMG3D_IPARAM_octree
Definition: libmmg3d.h:86
b
! int b
Definition: libmmgtypesf.h:286
MMG3D_Get_edges
int MMG3D_Get_edges(MMG5_pMesh mesh, int *edges, int *refs, int *areRidges, int *areRequired)
Definition: API_functions_3d.c:1159
MMG5_chkmsh
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgexterns.c:27
c
! double c[3]
Definition: libmmgtypesf.h:255
MMG3D_saveMshMesh
int MMG3D_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_3d.c:1763
MMG3D_Set_dparameter
int MMG3D_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
Definition: API_functions_3d.c:2158
MMG5_Mesh::xpoint
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:543
np
! int np
Definition: libmmgtypesf.h:571
MMG5_ATHIRD
#define MMG5_ATHIRD
Definition: mmgcommon.h:93
MMG5_swapbin
static int MMG5_swapbin(int sbin)
Definition: inout.c:41
MMG5_Mesh::npnil
int npnil
Definition: libmmgtypes.h:526
MMG5_interpreg_ani
int MMG5_interpreg_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, char i, double s, double mr[6])
Definition: intmet.c:627
MMG3D_Get_solsAtVerticesSize
int MMG3D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, int *nentities, int *typSol)
Definition: API_functions_3d.c:295
printim
void printim(double elps, char *stim)
Print real time.
Definition: chrono.c:149
MMG3D_pack_tetra
int MMG3D_pack_tetra(MMG5_pMesh mesh)
Definition: libmmg3d.c:401
MMG5_Point::xp
int xp
Definition: libmmgtypes.h:218
MMG3D_pack_sol
int MMG3D_pack_sol(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: libmmg3d.c:487
MMG5_Mesh::tetra
MMG5_pTetra tetra
Definition: libmmgtypes.h:544
n2
! double n2[3]
Definition: libmmgtypesf.h:275
MMG5_xTetra
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:356
MMG5_ifar
static const unsigned char MMG5_ifar[6][2]
ifar[i][]: faces sharing the ith edge of the tetra
Definition: mmg3d.h:155
MMG5_EPSD2
#define MMG5_EPSD2
Definition: mmgcommon.h:96
MMG5_paratmet
int MMG5_paratmet(double c0[3], double n0[3], double m[6], double c1[3], double n1[3], double mt[6])
Definition: mettools.c:652
MMG5_readDoubleSol3D
void MMG5_readDoubleSol3D(MMG5_pSol sol, FILE *inm, int bin, int iswp, int pos)
Definition: inout.c:2152
MMG5_meansizreg_iso
double MMG5_meansizreg_iso(MMG5_pMesh mesh, MMG5_pSol met, int nump, int *lists, int ilists, double hmin, double hmax)
Definition: isosiz_3d.c:461
MMG3D_packMesh
int MMG3D_packMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol disp)
Definition: libmmg3d.c:674
mmgcommon.h
MMG3D_mmg3dls
int MMG3D_mmg3dls(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:951
ref
! int ref
Definition: libmmgtypesf.h:244
MMG5_xTetra::ori
char ori
Definition: libmmgtypes.h:365
MMG5_intregvolmet
static int MMG5_intregvolmet(double *ma, double *mb, double *mp, double t)
Definition: intmet_3d.c:204
sd
#define sd
Definition: inout.c:39
MMG5_Set_inputSolName
int MMG5_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Definition: API_functions.c:177
MMG3D_Set_prism
int MMG3D_Set_prism(MMG5_pMesh mesh, int v0, int v1, int v2, int v3, int v4, int v5, int ref, int pos)
Definition: API_functions_3d.c:683
na
! int na
Definition: libmmgtypesf.h:571
tminit
void tminit(mytime *t, int maxtim)
Initialize mytime object.
Definition: chrono.c:120
par
! MMG5_pPar par
Definition: libmmgtypesf.h:494
hmax
! double hmax
Definition: libmmgtypesf.h:242
MMG3D_Free_names
int MMG3D_Free_names(const int starter,...)
Definition: API_functions_3d.c:2309
MMG5_Sol::dim
int dim
Definition: libmmgtypes.h:565
MMG5_Quad::tag
int16_t tag[4]
Definition: libmmgtypes.h:310
MMG5_buildridmetnor
int MMG5_buildridmetnor(MMG5_pMesh mesh, MMG5_pSol met, int np0, double nt[3], double mr[6], double r[3][3])
Definition: mettools.c:191
MMG3D_Get_tetFromTria
int MMG3D_Get_tetFromTria(MMG5_pMesh mesh, int ktri, int *ktet, int *iface)
Definition: libmmg3d_tools.c:685
MMG5_lenedgCoor_iso
double MMG5_lenedgCoor_iso(double *ca, double *cb, double *ma, double *mb)
Compute edge length from edge's coordinates.
Definition: isosiz_3d.c:59
MMG5_Quad
Definition: libmmgtypes.h:304
npar
! int npar
Definition: libmmgtypesf.h:497
MMG5_Mesh::nt
int nt
Definition: libmmgtypes.h:516
MMG5_swapd
static double MMG5_swapd(double sbin)
Definition: inout_3d.c:77
MG_Tetra
#define MG_Tetra
Definition: mmgcommon.h:157
MMG5_Hash::item
MMG5_hedge * item
Definition: libmmgtypes.h:501
MMG5_countBinaryElts
static int MMG5_countBinaryElts(FILE **inm, const int nelts, const int iswp, int *np, int *na, int *nt, int *nq, int *ne, int *npr)
Definition: inout.c:92
MMG3D_Set_solSize
int MMG3D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, int np, int typSol)
Definition: API_functions_3d.c:109
MMG3D_Get_ithSol_inSolsAtVertices
int MMG3D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, int pos)
Definition: API_functions_3d.c:1636
MMG5_build3DMetric
static void MMG5_build3DMetric(MMG5_pMesh mesh, MMG5_pSol sol, int ip, double dbuf[6])
Definition: inout.c:1447
MMG3D_saveMshMesh_and_allData
int MMG3D_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1768
MMG5_Mesh
MMG mesh structure.
Definition: libmmgtypes.h:509
MMG3D_searchqua
void MMG3D_searchqua(MMG5_pMesh mesh, MMG5_pSol met, double critmin, int *eltab, char metRidTyp)
Definition: libmmg3d_tools.c:659
MMG3D_hashPrism
int MMG3D_hashPrism(MMG5_pMesh mesh)
Definition: hash_3d.c:295
MMG5_Info::par
MMG5_pPar par
Definition: libmmgtypes.h:444
MMG3D_IPARAM_debug
@ MMG3D_IPARAM_debug
Definition: libmmg3d.h:71
MMG5_xPoint::n2
double n2[3]
Definition: libmmgtypes.h:234
MMG5_writeDoubleSol3D
void MMG5_writeDoubleSol3D(MMG5_pMesh mesh, MMG5_pSol sol, FILE *inm, int bin, int pos, int metricData)
Definition: inout.c:2200
MMG5_hgeom::a
int a
Definition: libmmgtypes.h:467
MMG5_xPoint
Structure to store surface points of a MMG mesh.
Definition: libmmgtypes.h:233
MMG5_Sol::npmax
int npmax
Definition: libmmgtypes.h:567
MMG5_Mesh::ver
int ver
Definition: libmmgtypes.h:513
MMG3D_loadMshMesh_and_allData
int MMG3D_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1037
MMG5_interp_iso
int MMG5_interp_iso(double *ma, double *mb, double *mp, double t)
Definition: intmet.c:607
MMG5_mmgIntmet33_ani
int MMG5_mmgIntmet33_ani(double *m, double *n, double *mr, double s)
Definition: intmet.c:178
MMG5_iarf
static const unsigned char MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:149
MMG3D_Set_commonFunc
static void MMG3D_Set_commonFunc()
Definition: mmg3d.h:549
MMG5_Info::hmax
double hmax
Definition: libmmgtypes.h:445
MMG5_Prism::ref
int ref
Definition: libmmgtypes.h:402
MMG5_hEdge
int MMG5_hEdge(MMG5_pMesh mesh, MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:964
MMG5_Par
Definition: libmmgtypes.h:201
sd
#define sd
Definition: inout_3d.c:40
MMG5_Mesh::nei
int nei
Definition: libmmgtypes.h:516
MMG3D_loadSol
int MMG3D_loadSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_3d.c:1782
MMG3D_IPARAM_iso
@ MMG3D_IPARAM_iso
Definition: libmmg3d.h:73
MMG3D_Get_tetrahedra
int MMG3D_Get_tetrahedra(MMG5_pMesh mesh, int *tetra, int *refs, int *areRequired)
Definition: API_functions_3d.c:659
MMG3D_Set_quadrilaterals
int MMG3D_Set_quadrilaterals(MMG5_pMesh mesh, int *quads, int *refs)
Definition: API_functions_3d.c:1020
MMG5_Mesh::info
MMG5_Info info
Definition: libmmgtypes.h:552
MMG3D_IPARAM_nomove
@ MMG3D_IPARAM_nomove
Definition: libmmg3d.h:81
MMG3D_Set_tensorSols
int MMG3D_Set_tensorSols(MMG5_pSol met, double *sols)
Definition: API_functions_3d.c:1564
MMG3D_DPARAM_hausd
@ MMG3D_DPARAM_hausd
Definition: libmmg3d.h:91
MMG3D_mmg3dlib
int MMG3D_mmg3dlib(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:742
MMG5_Point::flag
int flag
Definition: libmmgtypes.h:221
MMG5_Mesh::adjapr
int * adjapr
Definition: libmmgtypes.h:537
MMG3D_defaultValues
int MMG3D_defaultValues(MMG5_pMesh mesh)
Definition: libmmg3d_tools.c:152
MMG5_Edge::a
int a
Definition: libmmgtypes.h:244
MMG3D_tetraQual
int MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met, char metRidTyp)
Definition: quality_3d.c:48
MMG5_Mesh::npmax
int npmax
Definition: libmmgtypes.h:516
MMG3D_Set_requiredTriangle
int MMG3D_Set_requiredTriangle(MMG5_pMesh mesh, int k)
Definition: API_functions_3d.c:1217
MMG5_Info::parTyp
char parTyp
Definition: libmmgtypes.h:454
MMG5_defsizreg
static double MMG5_defsizreg(MMG5_pMesh mesh, MMG5_pSol met, int nump, int *lists, int ilists, double hmin, double hmax, double hausd)
Definition: isosiz_3d.c:88
MMG3D_DPARAM_hsiz
@ MMG3D_DPARAM_hsiz
Definition: libmmg3d.h:90
MMG3D_Get_vectorSol
int MMG3D_Get_vectorSol(MMG5_pSol met, double *vx, double *vy, double *vz)
Definition: API_functions_3d.c:1416
MMG5_iare
static const unsigned char MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:153
MMG5_rmtr
int MMG5_rmtr(double r[3][3], double m[6], double mr[6])
Definition: tools.c:198
MMG3D_parsop
int MMG3D_parsop(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d_tools.c:476
MMG5_Prism::tag
char tag
Definition: libmmgtypes.h:407
MMG3D_loadMshMesh
int MMG3D_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_3d.c:980
MMG5_hgeom::ref
int ref
Definition: libmmgtypes.h:469
MG_ISO
#define MG_ISO
Definition: libmmgtypes.h:62
MMG5_Tetra::ref
int ref
Definition: libmmgtypes.h:342
MMG3D_Set_iparameter
int MMG3D_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, int val)
Definition: API_functions_3d.c:1967
MMG3D_IPARAM_verbose
@ MMG3D_IPARAM_verbose
Definition: libmmg3d.h:69
MMG5_printMetStats
void MMG5_printMetStats(MMG5_pMesh mesh, MMG5_pSol met)
Definition: inout.c:2410
MMG3D_gradsizreq_iso
int MMG3D_gradsizreq_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz_3d.c:1137
MMG5_Mesh::nti
int nti
Definition: libmmgtypes.h:516
n
! double n[3]
Definition: libmmgtypesf.h:256
MMG5_chkMetricType
int MMG5_chkMetricType(MMG5_pMesh mesh, int *type, FILE *inm)
Definition: inout.c:2378
MMG5_scotchCall
int MMG5_scotchCall(MMG5_pMesh mesh, MMG5_pSol met)
Definition: librnbg.c:192
MMG3D_localParamReg
int MMG3D_localParamReg(MMG5_pMesh, int, int *, int, int *, int, double *, double *, double *)
Definition: tools_3d.c:932
MMG5_Info
Store input parameters of the run.
Definition: libmmgtypes.h:443
MMG3D_IPARAM_anisosize
@ MMG3D_IPARAM_anisosize
Definition: libmmg3d.h:85
MMG3D_mmg3dlib
int MMG3D_mmg3dlib(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:742
MMG5_Tetra::tag
int16_t tag
Definition: libmmgtypes.h:348
MMG3D_update_eltsVertices
int MMG3D_update_eltsVertices(MMG5_pMesh mesh)
Definition: libmmg3d.c:524
MMG3D_IPARAM_noswap
@ MMG3D_IPARAM_noswap
Definition: libmmg3d.h:80
MMG5_intridmet
int MMG5_intridmet(MMG5_pMesh mesh, MMG5_pSol met, int ip1, int ip2, double s, double v[3], double mr[6])
Definition: intmet.c:291
MMG3D_Get_vectorSols
int MMG3D_Get_vectorSols(MMG5_pSol met, double *sols)
Definition: API_functions_3d.c:1471
mmg3d.h
MMG5_xTetra::edg
int edg[6]
Definition: libmmgtypes.h:359
MMG5_inxt2
static const unsigned char MMG5_inxt2[6]
Definition: mmgcommon.h:470
MMG3D_Set_tetrahedra
int MMG3D_Set_tetrahedra(MMG5_pMesh mesh, int *tetra, int *refs)
Definition: API_functions_3d.c:602
MMG5_SAFE_CALLOC
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
Definition: mmgcommon.h:289
MMG5_boulevolp
int MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int *list)
Definition: boulep_3d.c:53
MMG3D_Set_localParameter
int MMG3D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, int ref, double hmin, double hmax, double hausd)
Definition: API_functions_3d.c:2209
MMG5_saveSolHeader
int MMG5_saveSolHeader(MMG5_pMesh mesh, const char *filename, FILE **inm, int ver, int *bin, int np, int dim, int nsols, int *type, int *size)
Definition: inout.c:2266
MMG5_gradsizreq_iso
int MMG5_gradsizreq_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:359
MMG5_mmg3d1_delone
int MMG5_mmg3d1_delone(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_delone.c:1273
MMG3D_saveMesh
int MMG3D_saveMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_3d.c:1104
MMG3D_Get_normalAtVertex
int MMG3D_Get_normalAtVertex(MMG5_pMesh mesh, int k, double *n0, double *n1, double *n2)
Definition: API_functions_3d.c:1279
MMG3D_pack_points
int MMG3D_pack_points(MMG5_pMesh mesh)
Definition: libmmg3d.c:623
MMG5_DEL_MEM
#define MMG5_DEL_MEM(mesh, ptr)
Definition: mmgcommon.h:266
MMG3D_Free_structures
int MMG3D_Free_structures(const int starter,...)
Definition: API_functions_3d.c:2295
MMG3D_loadMshMesh
int MMG3D_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_3d.c:980
MMG5_Mesh::edge
MMG5_pEdge edge
Definition: libmmgtypes.h:550
ier
int ier
Definition: API_functionsf_3d.c:839
MMG3D_Set_vertex
int MMG3D_Set_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, int ref, int pos)
Definition: API_functions_3d.c:343
ddb
char ddb
Definition: mmg3d1_delone.c:41
MMG5_reset_metricAtReqEdges_surf
int MMG5_reset_metricAtReqEdges_surf(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:194
MMG3D_mmg3d2
int MMG3D_mmg3d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d2.c:1428
MMG3D_Get_scalarSol
int MMG3D_Get_scalarSol(MMG5_pSol met, double *s)
Definition: API_functions_3d.c:1323
MMG5_Info::ddebug
char ddebug
Definition: libmmgtypes.h:453
size
! int size
Definition: libmmgtypesf.h:625
MMG3D_Free_all
int MMG3D_Free_all(const int starter,...)
Definition: API_functions_3d.c:2281
MMG3D_Set_scalarSols
int MMG3D_Set_scalarSols(MMG5_pSol met, double *s)
Definition: API_functions_3d.c:1353
MMG3D_Get_vertices
int MMG3D_Get_vertices(MMG5_pMesh mesh, double *vertices, int *refs, int *areCorners, int *areRequired)
Definition: API_functions_3d.c:453
MMG3D_mmg3dls
int MMG3D_mmg3dls(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:951
sw
#define sw
Definition: inout.c:38
MMG5_Info::lag
char lag
Definition: libmmgtypes.h:453
MMG3D_IPARAM_lag
@ MMG3D_IPARAM_lag
Definition: libmmg3d.h:76
MMG5_intregmet
int MMG5_intregmet(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, double s, double mr[6])
Definition: intmet_3d.c:162
MMG3D_Get_adjaTet
int MMG3D_Get_adjaTet(MMG5_pMesh mesh, int kel, int listet[4])
Return adjacent elements of a tetrahedron.
Definition: libmmg3d_tools.c:100
MMG5_loadMshMesh_part1
int MMG5_loadMshMesh_part1(MMG5_pMesh mesh, const char *filename, FILE **inm, long *posNodes, long *posElts, long **posNodeData, int *bin, int *iswp, int *nelts, int *nsols)
Definition: inout.c:241
MMG5_Prism
Definition: libmmgtypes.h:400
A64TH
#define A64TH
Definition: isosiz_3d.c:41
MMG5_bezierCP
int(* MMG5_bezierCP)(MMG5_pMesh, MMG5_Tria *, MMG5_pBezier, char)
Definition: mmgexterns.c:28
MMG5_compute_meanMetricAtMarkedPoints_iso
int MMG5_compute_meanMetricAtMarkedPoints_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:167
MMG5_mmg3d3
int MMG5_mmg3d3(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
MMG3D_IPARAM_opnbdy
@ MMG3D_IPARAM_opnbdy
Definition: libmmg3d.h:75
MMG3D_hashTetra
int MMG3D_hashTetra(MMG5_pMesh mesh, int pack)
Definition: hash_3d.c:180
MMG3D_Get_triangles
int MMG3D_Get_triangles(MMG5_pMesh mesh, int *tria, int *refs, int *areRequired)
Definition: API_functions_3d.c:922
MMG5_Info::optimLES
unsigned char optimLES
Definition: libmmgtypes.h:457
MMG3D_IPARAM_angle
@ MMG3D_IPARAM_angle
Definition: libmmg3d.h:72
MMG5_Info::hsiz
double hsiz
Definition: libmmgtypes.h:445
MMG5_surftri_iso
double MMG5_surftri_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: isosiz.c:42
MMG3D_Set_vectorSol
int MMG3D_Set_vectorSol(MMG5_pSol met, double vx, double vy, double vz, int pos)
Definition: API_functions_3d.c:1379
if
if(!ier) exit(EXIT_FAILURE)
MMG5_Mesh::ntmax
int ntmax
Definition: libmmgtypes.h:516
MMG5_Point::tmp
int tmp
Definition: libmmgtypes.h:219
filename
MMG5_pMesh char * filename
Definition: API_functionsf_3d.c:875
MMG5_norface
int MMG5_norface(MMG5_pMesh mesh, int k, int iface, double v[3])
Definition: tools_3d.c:59
MMG3D_Init_mesh
int MMG3D_Init_mesh(const int starter,...)
Definition: API_functions_3d.c:43
MMG3D_IPARAM_nofem
@ MMG3D_IPARAM_nofem
Definition: libmmg3d.h:74
TIMEMAX
#define TIMEMAX
Definition: chrono.h:49
MMG5_Mesh::nemax
int nemax
Definition: libmmgtypes.h:516
starter
const int starter
Definition: API_functionsf_3d.c:837
MMG5_hgeom::b
int b
Definition: libmmgtypes.h:468
MMG3D_searchlen
int MMG3D_searchlen(MMG5_pMesh mesh, MMG5_pSol met, double lmin, double lmax, int *eltab, char metRidTyp)
Definition: libmmg3d_tools.c:749
MMG5_EPSD
#define MMG5_EPSD
Definition: eigenv.h:31
MMG5_Mesh::dim
int dim
Definition: libmmgtypes.h:514
MMG5_Tetra::xt
int xt
Definition: libmmgtypes.h:345
nprism
! int nprism
Definition: libmmgtypesf.h:572
MMG5_Vertex
@ MMG5_Vertex
Definition: libmmgtypes.h:186
MMG3D_DPARAM_ls
@ MMG3D_DPARAM_ls
Definition: libmmg3d.h:94
MMG5_compute_meanMetricAtMarkedPoints
int(* MMG5_compute_meanMetricAtMarkedPoints)(MMG5_pMesh, MMG5_pSol)
Definition: mmgexterns.c:34
MMG3D_lenedgCoor
double(* MMG3D_lenedgCoor)(double *ca, double *cb, double *sa, double *sb)
Definition: libmmg3d.c:45
MMG5_SAFE_FREE
MMG5_SAFE_FREE(tmp)
MMG3D_saveAllSols
int MMG3D_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:2007
MMG5_Sol::npi
int npi
Definition: libmmgtypes.h:568
MMG3D_loadAllSols
int MMG3D_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_3d.c:1859
MMG3D_Set_meshSize
int MMG3D_Set_meshSize(MMG5_pMesh mesh, int np, int ne, int nprism, int nt, int nquad, int na)
Definition: API_functions_3d.c:245
MMG3D_Get_scalarSols
int MMG3D_Get_scalarSols(MMG5_pSol met, double *s)
Definition: API_functions_3d.c:1370
MMG3D_LMAX
#define MMG3D_LMAX
Definition: libmmg3d.h:57
MMG3D_IPARAM_renum
@ MMG3D_IPARAM_renum
Definition: libmmg3d.h:84
a
! int a
Definition: libmmgtypesf.h:286
MMG3D_gradsiz_iso
int MMG3D_gradsiz_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz_3d.c:1053
MMG5_Tetra::v
int v[4]
Definition: libmmgtypes.h:341
MMG5_intvolmet
int MMG5_intvolmet(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, double s, double mr[6])
Definition: intmet_3d.c:249
MMG5_Point::n
double n[3]
Definition: libmmgtypes.h:216