mmg3d
mmg3d.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/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 
24 #ifndef _MMG3D_H
25 #define _MMG3D_H
26 
27 #include "libmmg3d.h"
28 #include "libmmgcommon.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
35 #define _MMG5_RETURN_AND_FREE(mesh,met,disp,val)do \
36  { \
37  if ( !MMG3D_Free_all(MMG5_ARG_start, \
38  MMG5_ARG_ppMesh,&mesh,MMG5_ARG_ppMet,&met, \
39  MMG5_ARG_ppDisp,&disp, \
40  MMG5_ARG_end) ) { \
41  return(MMG5_LOWFAILURE); \
42  } \
43  return(val); \
44  }while(0)
45 
48 #define _MMG5_POINT_REALLOC(mesh,sol,ip,wantedGap,law,o,tag,retval ) do \
49  { \
50  int klink; \
51  \
52  _MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \
53  "larger point table",law,retval); \
54  \
55  mesh->npnil = mesh->np+1; \
56  for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
57  mesh->point[klink].tmp = klink+1; \
58  \
59  /* solution */ \
60  if ( sol->m ) { \
61  _MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
62  "larger solution",law); \
63  _MMG5_SAFE_REALLOC(sol->m,sol->size*(mesh->npmax+1), \
64  double,"larger solution",retval); \
65  } \
66  sol->npmax = mesh->npmax; \
67  \
68  /* We try again to add the point */ \
69  ip = _MMG3D_newPt(mesh,o,tag); \
70  if ( !ip ) {law;} \
71  }while(0)
72 
73 
76 #define _MMG5_TETRA_REALLOC(mesh,jel,wantedGap,law,retval) do \
77  { \
78  int klink,oldSiz; \
79  \
80  oldSiz = mesh->nemax; \
81  _MMG5_TAB_RECALLOC(mesh,mesh->tetra,mesh->nemax,wantedGap,MMG5_Tetra, \
82  "larger tetra table",law,retval); \
83  \
84  mesh->nenil = mesh->ne+1; \
85  for (klink=mesh->nenil; klink<mesh->nemax-1; klink++) \
86  mesh->tetra[klink].v[3] = klink+1; \
87  \
88  if ( mesh->adja ) { \
89  /* adja table */ \
90  _MMG5_ADD_MEM(mesh,4*(mesh->nemax-oldSiz)*sizeof(int), \
91  "larger adja table",law); \
92  _MMG5_SAFE_RECALLOC(mesh->adja,4*mesh->ne+5,4*mesh->nemax+5,int \
93  ,"larger adja table",retval); \
94  } \
95  \
96  /* We try again to add the point */ \
97  jel = _MMG3D_newElt(mesh); \
98  if ( !jel ) {law;} \
99  }while(0)
100 
101 /* numerical accuracy */
102 #define _MMG3D_ALPHAD 20.7846096908265 //0.04811252243247 /* 12*sqrt(3) */
103 #define _MMG3D_LLONG 2.5//2.0 // 1.414213562373
104 #define _MMG3D_LSHRT 0.3 // 0.707106781186
105 #define _MMG3D_LOPTL 1.3
106 #define _MMG3D_LOPTS 0.6
107 
108 #define _MMG3D_BADKAL 0.2
109 
110 #define _MMG3D_NPMAX 1000000 //200000
111 #define _MMG3D_NAMAX 200000 //40000
112 #define _MMG3D_NTMAX 2000000 //400000
113 #define _MMG3D_NEMAX 6000000 //1200000
114 
115 #define _MMG3D_SHORTMAX 0x7fff
116 
117 
119 static const unsigned char _MMG5_inxt3[7] = { 1,2,3,0,1,2,3 };
121 static const unsigned char _MMG5_iprv3[7] = { 3,0,1,2,3,0,1 };
123 static const unsigned char _MMG5_idir[4][3] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };
124 /* \var idirinv[i][j]: num of the jth point in the ith face */
125 static const char _MMG5_idirinv[4][4] = {{-1,0,1,2},{0,-1,2,1},{0,1,-1,2},{0,2,1,-1}};
127 static const unsigned char _MMG5_iarf[4][3] = { {5,4,3}, {5,1,2}, {4,2,0}, {3,0,1} };
129 static const unsigned char _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}};
131 static const unsigned char _MMG5_iare[6][2] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} };
133 static const unsigned char _MMG5_ifar[6][2] = { {2,3}, {1,3}, {1,2}, {0,3}, {0,2}, {0,1} };
135 static const unsigned char _MMG5_isar[6][2] = { {2,3}, {3,1}, {1,2}, {0,3}, {2,0}, {0,1} };
137 static const unsigned char _MMG5_arpt[4][3] = { {0,1,2}, {0,4,3}, {1,3,5}, {2,5,4} };
138 
140 static const unsigned char _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} };
142 static const unsigned char _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} };
143 
160 static const unsigned char MMG5_permedge[12][6] = {
161  {0,1,2,3,4,5}, {1,2,0,5,3,4}, {2,0,1,4,5,3}, {0,4,3,2,1,5},
162  {3,0,4,1,5,2}, {4,3,0,5,2,1}, {1,3,5,0,2,4}, {3,5,1,4,0,2},
163  {5,1,3,2,4,0}, {2,5,4,1,0,3}, {4,2,5,0,3,1}, {5,4,2,3,1,0} };
164 
168 typedef struct _MMG3D_octree_s
169 {
171  int* v;
172  int nbVer;
173  int depth;
175 
179 typedef struct
180 {
181  int nv;
182  int nc;
184 } _MMG3D_octree;
186 
187 
188 /* octree */
193 int _MMG3D_isCellIncluded(double* cellCenter, double l, double* zoneCenter, double l0);
194 void _MMG3D_placeInListDouble(double*, double, int, int);
196 int _MMG3D_seekIndex (double* distList, double dist, int indexMin, int indexMax);
197 int _MMG3D_intersectRect(double *rectin, double *rectinout);
198 int _MMG3D_getListSquareRec(_MMG3D_octree_s*,double*,double*,
199  _MMG3D_octree_s***,double*,double*,double, int, int, int*);
201 int _MMG3D_addOctreeRec(MMG5_pMesh,_MMG3D_octree_s*,double*, const int, int);
202 int _MMG3D_addOctree(MMG5_pMesh mesh, _MMG3D_octree* q, const int no);
204 int _MMG3D_moveOctree(MMG5_pMesh, _MMG3D_pOctree,int, double*, double*);
207 int _MMG3D_delOctreeRec(MMG5_pMesh,_MMG3D_octree_s*,double*, const int,const int);
208 int _MMG3D_delOctree(MMG5_pMesh mesh, _MMG3D_pOctree q, const int no);
209 void _MMG3D_printArbreDepth(_MMG3D_octree_s* q, int depth, int nv, int dim);
211 void _MMG3D_sizeArbreRec(_MMG3D_octree_s* q, int nv, int dim, int*,int*);
212 int* _MMG3D_sizeArbre(_MMG3D_octree* q, int dim);
215 
216 /* prototypes */
217 int _MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met,char metRidTyp);
219 extern int _MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3]);
220 
221 int _MMG3D_Init_mesh_var( va_list argptr );
222 int _MMG3D_Free_all_var( va_list argptr );
223 int _MMG3D_Free_structures_var( va_list argptr );
224 int _MMG3D_Free_names_var( va_list argptr );
225 int _MMG3D_newPt(MMG5_pMesh mesh,double c[3],int16_t tag);
227 int _MMG3D_delElt(MMG5_pMesh mesh,int iel);
228 void _MMG3D_delPt(MMG5_pMesh mesh,int ip);
233  char _MMG5_chkedg(MMG5_pMesh mesh,MMG5_pTria pt,char ori,double,double,int);
235 void _MMG5_tet2tri(MMG5_pMesh mesh,int k,char ie,MMG5_Tria *ptt);
237 extern int _MMG5_BezierTgt(double c1[3],double c2[3],double n1[3],double n2[3],double t1[3],double t2[3]);
238 extern double _MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3]);
239 int _MMG3D_bezierInt(_MMG5_pBezier pb,double uv[2],double o[3],double no[3],double to[3]);
240 extern int _MMG5_BezierReg(MMG5_pMesh mesh,int ip0, int ip1, double s, double v[3], double *o, double *no);
241 extern int _MMG5_BezierRef(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no, double *to);
242 extern int _MMG5_BezierEdge(MMG5_pMesh mesh,int ip0, int ip1, double b0[3], double b1[3],char isrid, double v[3]);
243 extern int _MMG5_BezierRidge(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to);
244 extern int _MMG5_BezierNom(MMG5_pMesh mesh,int ip0,int ip1,double s,double *o,double *no,double *to);
245 extern int _MMG5_norface(MMG5_pMesh mesh ,int k, int iface, double v[3]);
246 int _MMG5_boulernm (MMG5_pMesh mesh, int start, int ip, int *ng, int *nr);
247 int _MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3],double t[3]);
248 int _MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int * list);
249 int _MMG5_boulesurfvolp(MMG5_pMesh mesh,int start,int ip,int iface,int *listv,
250  int *ilistv,int *lists,int*ilists, int isnm);
251 int _MMG5_bouletrid(MMG5_pMesh,int,int,int,int *,int *,int *,int *,int *,int *);
252 int _MMG5_startedgsurfball(MMG5_pMesh mesh,int nump,int numq,int *list,int ilist);
253 int _MMG5_srcbdy(MMG5_pMesh mesh,int start,int ia);
254 int _MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int * list);
255 int _MMG5_coquilface(MMG5_pMesh mesh, int start,char iface,int,int*,int*,int*,int);
256 int _MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh,int start,int na,int nb,char iface,
257  char ia,int *list,int *ilist,int *it1,int *it2,
258  int *piv,int *adj,char *hasadja,int *nbdy,int silent);
259 void _MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh,int piv,char *iface,int *i,
260  int *list,int *ilist,int *it1,int *pradj,
261  int *adj);
262 void _MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2);
263 int16_t _MMG5_coquilTravel(MMG5_pMesh, int, int, int*, int*, char*, int*);
264 void _MMG5_openCoquilTravel(MMG5_pMesh, int, int, int*, int*, char*, int*);
265 extern int _MMG5_settag(MMG5_pMesh,int,int,int16_t,int);
266 extern int _MMG5_deltag(MMG5_pMesh,int,int,int16_t);
268  int _MMG5_chkcol_int(MMG5_pMesh,MMG5_pSol,int,char,char,int*,int,char);
269  int _MMG5_chkcol_bdy(MMG5_pMesh,MMG5_pSol,int,char,char,int*,int,int*,int,char);
270 int _MMG5_chkmanicoll(MMG5_pMesh,int,int,int,int,int,char,char);
272 int _MMG5_colver(MMG5_pMesh,MMG5_pSol,int *,int,char,char);
276 int _MMG5_hashPop(_MMG5_Hash *hash,int a,int b);
277 int _MMG5_hPop(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
278 int _MMG5_hTag(MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
279 int _MMG5_hGet(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
280 int _MMG5_hEdge(MMG5_pMesh mesh,MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
281 int _MMG5_hNew(MMG5_pMesh mesh,MMG5_HGeom *hash,int hsiz,int hmax);
288 int _MMG5_cntbdypt(MMG5_pMesh mesh, int nump);
289 long long _MMG5_memSize(void);
294 int _MMG5_mmg3dChkmsh(MMG5_pMesh,int,int);
295 int _MMG3D_split1_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
296 int _MMG5_split1(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char metRidTyp);
297 int _MMG5_split1b(MMG5_pMesh,MMG5_pSol,int*,int,int,int,char,char);
298 int _MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met,int iel, int iar, double crit);
299 int _MMG3D_split2sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
300 int _MMG5_split2sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
301 int _MMG3D_split2_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
302 int _MMG5_split2(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
303 int _MMG3D_split3_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
304 int _MMG5_split3(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
305 int _MMG3D_split3cone_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
306 int _MMG5_split3cone(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
307 int _MMG3D_split3op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
308 int _MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6],char);
309 int _MMG3D_split4sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
310 int _MMG5_split4sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
311 int _MMG3D_split4op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
312 int _MMG5_split4op(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
313 int _MMG3D_split5_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
314 int _MMG5_split5(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
315 int _MMG3D_split6_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
316 int _MMG5_split6(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
317 int _MMG5_split4bar(MMG5_pMesh mesh,MMG5_pSol met,int k,char);
318 int _MMG3D_simbulgept(MMG5_pMesh mesh,MMG5_pSol met, int *list, int ilist,int);
319 void _MMG5_nsort(int ,double *,char *);
321 int _MMG5_movintpt_iso(MMG5_pMesh ,MMG5_pSol,_MMG3D_pOctree, int *, int , int);
322 int _MMG3D_movnormal_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
326  int*, int, int*, int, int ,int);
328  int*, int, int*, int, int ,int);
330  int*, int ,int);
332  int*, int ,int);
334  int*, int ,int);
336  int*, int ,int);
338  int*, int ,int);
340  int*, int ,int);
341 int _MMG3D_movv_ani(MMG5_pMesh ,MMG5_pSol ,int ,int );
342 int _MMG3D_movv_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
343 int _MMG3D_normalAdjaTri(MMG5_pMesh,int,char,int,double n[3]);
344 int _MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol,int*, int, int, int,char);
345 int _MMG5_swpbdy(MMG5_pMesh,MMG5_pSol,int*,int,int,_MMG3D_pOctree,char);
346 int _MMG5_swpgen(MMG5_pMesh,MMG5_pSol,int, int, int*,_MMG3D_pOctree,char);
347 int _MMG5_chkswpgen(MMG5_pMesh,MMG5_pSol,int,int,int*,int*,double,char);
348 int MMG3D_swap23(MMG5_pMesh mesh,MMG5_pSol met,int k,char metRidTyp);
349 int _MMG5_srcface(MMG5_pMesh mesh,int n0,int n1,int n2);
351 double _MMG5_orcal_poi(double a[3],double b[3],double c[3],double d[3]);
352 int _MMG5_countelt(MMG5_pMesh mesh,MMG5_pSol sol, double *weightelt, long *npcible);
353 /*function for agressive optimization*/
356 int _MMG3D_splitItem(MMG5_pMesh , MMG5_pSol ,_MMG3D_pOctree ,int ,int ,double );
359 
360 int _MMG5_trydisp(MMG5_pMesh,double *,short);
361 int _MMG5_dichodisp(MMG5_pMesh,double *);
362 int _MMG5_lapantilap(MMG5_pMesh,double *);
363 int _MMG5_ppgdisp(MMG5_pMesh,double *);
367 int _MMG3D_prilen(MMG5_pMesh mesh,MMG5_pSol met,char);
370 int _MMG5_intridmet(MMG5_pMesh,MMG5_pSol,int,int,double,double*,double*);
371 int _MMG5_intregmet(MMG5_pMesh,MMG5_pSol,int,char,double, double*);
372 int _MMG5_intvolmet(MMG5_pMesh,MMG5_pSol,int,char,double, double*);
373 int _MMG3D_localParamReg(MMG5_pMesh,int,int*,int,int*,int,double*,double*,double*);
374 int _MMG3D_localParamNm(MMG5_pMesh,int,int,int,double*,double*,double*);
377 
378 /* useful functions to debug */
379 int _MMG3D_indElt(MMG5_pMesh mesh,int kel);
380 int _MMG3D_indPt(MMG5_pMesh mesh,int kp);
381 void _MMG5_printTetra(MMG5_pMesh mesh,char* fileName);
382 
383 
384 #ifdef USE_SCOTCH
385 int _MMG5_mmg3dRenumbering(int vertBoxNbr, MMG5_pMesh mesh, MMG5_pSol sol);
386 #endif
387 
388 int _MMG5_meancur(MMG5_pMesh mesh,int np,double c[3],int ilist,int *list,double h[3]);
389 double _MMG5_surftri(MMG5_pMesh,int,int);
390 double _MMG5_timestepMCF(MMG5_pMesh,double);
392 double _MMG5_volint(MMG5_pMesh);
393 
394 /* Lagrangian mode functions */
396 int _MMG5_stiffelt(MMG5_pMesh,int,double*,double*);
400 
401 /* Delaunay functions*/
402 int _MMG5_delone(MMG5_pMesh mesh,MMG5_pSol sol,int ip,int *list,int ilist);
403  int _MMG5_cavity_iso(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
404  int _MMG5_cavity_ani(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
405 int _MMG5_cenrad_iso(MMG5_pMesh mesh,double *ct,double *c,double *rad);
406 int _MMG5_cenrad_ani(MMG5_pMesh mesh,double *ct,double *m,double *c,double *rad);
407 
408 /* mmg3d1.c */
409 void _MMG5_tet2tri(MMG5_pMesh mesh,int k,char ie,MMG5_Tria *ptt);
410 int _MMG3D_dichoto(MMG5_pMesh mesh,MMG5_pSol met,int k,int *vx);
411 int _MMG3D_dichoto1b(MMG5_pMesh mesh,MMG5_pSol met,int *list,int ret,int);
412 char _MMG5_chkedg(MMG5_pMesh mesh,MMG5_Tria *pt,char ori,double,double,int);
413 int _MMG5_anatet(MMG5_pMesh mesh,MMG5_pSol met, char typchk, int patternMode) ;
415  double clickSurf,double clickVol,int moveVol,int improveSurf,int improveVolSurf,
416  int improveVol,int maxit);
418  int _MMG5_swptet(MMG5_pMesh mesh,MMG5_pSol met,double,double,_MMG3D_pOctree, int);
419 
420 /* pointers */
421 /* init structures */
423 /* iso/aniso computations */
425 extern double _MMG5_lenedgCoor_iso(double*, double*, double*, double*);
426 int _MMG5_intmet_iso(MMG5_pMesh,MMG5_pSol,int,char,int, double);
427 int _MMG5_intmet_ani(MMG5_pMesh,MMG5_pSol,int,char,int, double);
428 int _MMG3D_intmet33_ani(MMG5_pMesh,MMG5_pSol,int,char,int, double);
429 int _MMG5_interp4bar_ani(MMG5_pMesh,MMG5_pSol,int,int,double *);
430 int _MMG5_interp4bar33_ani(MMG5_pMesh,MMG5_pSol,int,int,double *);
431 int _MMG5_interp4bar_iso(MMG5_pMesh,MMG5_pSol,int,int,double *);
436 double _MMG5_meansizreg_iso(MMG5_pMesh,MMG5_pSol,int,int*,int,double,double);
438 extern int _MMG5_moymet(MMG5_pMesh ,MMG5_pSol ,MMG5_pTetra ,double *);
439 
440 
447 int (*_MMG5_intmet)(MMG5_pMesh,MMG5_pSol,int,char,int, double);
448 int (*_MMG5_interp4bar)(MMG5_pMesh,MMG5_pSol,int,int,double *);
449 int (*_MMG5_movintpt)(MMG5_pMesh ,MMG5_pSol, _MMG3D_pOctree ,int *, int , int );
450 int (*_MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree ,int*, int, int*, int, int ,int);
451 int (*_MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree ,int*, int, int*, int ,int);
452 int (*_MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree ,int*, int, int*, int ,int);
453 int (*_MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree ,int*, int, int*, int ,int);
454  int (*_MMG5_cavity)(MMG5_pMesh ,MMG5_pSol ,int ,int ,int *,int ,double);
456 
463 static inline
465  if ( mesh->xt ) {
466  if ( mesh->xt != mesh->ne ) {
467  fprintf(stderr,"\n ## Warning: %s: %d tetra on %d reoriented.\n",
468  __func__,mesh->xt,mesh->ne);
469  fprintf(stderr," Your mesh may be non-conform.\n");
470  }
471  else {
472  fprintf(stderr,"\n ## Warning: %s: all tetra reoriented.\n",__func__);
473  }
474  }
475  mesh->xt = 0;
476 }
477 
482 static inline
488 
489 #ifdef USE_SCOTCH
490  _MMG5_renumbering = _MMG5_mmg3dRenumbering;
491 #endif
492 }
493 
494 #ifdef __cplusplus
495 }
496 #endif
497 
498 #endif
int _MMG3D_newElt(MMG5_pMesh mesh)
Definition: zaldy_3d.c:94
int _MMG3D_split4op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:3937
int _MMG5_movbdyridpt_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:1382
void _MMG3D_mergeBranches(MMG5_pMesh mesh, _MMG3D_octree_s *q, int dim, int nv)
Definition: octree_3d.c:868
int nbVer
Definition: mmg3d.h:172
int _MMG5_ppgdisp(MMG5_pMesh, double *)
int _MMG3D_newPt(MMG5_pMesh mesh, double c[3], int16_t tag)
Definition: zaldy_3d.c:39
int(* _MMG5_movintpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int)
Definition: mmg3d.h:449
int MMG3D_hashPrism(MMG5_pMesh mesh)
Definition: hash_3d.c:295
int _MMG5_meancur(MMG5_pMesh mesh, int np, double c[3], int ilist, int *list, double h[3])
int _MMG5_swpmsh(MMG5_pMesh mesh, MMG5_pSol met, _MMG3D_pOctree octree, int)
Definition: mmg3d1.c:534
int _MMG5_intridmet(MMG5_pMesh, MMG5_pSol, int, int, double, double *, double *)
double _MMG5_timestepMCF(MMG5_pMesh, double)
void _MMG3D_freeOctree_s(MMG5_pMesh, _MMG3D_octree_s *q, int nv)
Definition: octree_3d.c:116
int _MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, int, char)
Definition: swap_3d.c:55
int _MMG5_split3cone(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:2175
struct _MMG3D_octree_s * branches
Definition: mmg3d.h:170
int(* _MMG5_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d.h:446
! int a
Definition: libmmgtypesf.h:275
int _MMG3D_bdryBuild(MMG5_pMesh)
Definition: libmmg3d.c:220
int * _MMG3D_sizeArbre(_MMG3D_octree *q, int dim)
int _MMG5_chkcol_int(MMG5_pMesh, MMG5_pSol, int, char, char, int *, int, char)
Definition: colver_3d.c:42
! double * m
Definition: libmmgtypesf.h:585
int _MMG5_interp4bar_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
int _MMG3D_Free_all_var(va_list argptr)
Definition: variadic_3d.c:241
int(* _MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: mmg3d.h:453
int _MMG5_chkswpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, int *, double, char)
Definition: swapgen_3d.c:55
int _MMG5_hNew(MMG5_pMesh mesh, MMG5_HGeom *hash, int hsiz, int hmax)
Definition: hash_3d.c:990
int(* _MMG5_bezierCP)(MMG5_pMesh, MMG5_Tria *, _MMG5_pBezier, char)
Definition: mmgcommon.h:532
int _MMG3D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_3d.c:790
Definition: libmmgtypes.h:330
int(* _MMG3D_octreein)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int, double)
Definition: mmg3d.h:455
int(* _MMG5_indPt)(MMG5_pMesh mesh, int kp)
Definition: mmgcommon.h:537
int _MMG5_intvolmet(MMG5_pMesh, MMG5_pSol, int, char, double, double *)
int _MMG3D_split1_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:50
int _MMG5_interp4bar33_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
int _MMG5_intregmet(MMG5_pMesh, MMG5_pSol, int, char, double, double *)
int(* _MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgcommon.h:531
int _MMG5_gradsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:906
int _MMG5_movbdyregpt_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int, int)
Definition: anisomovpt_3d.c:190
int _MMG5_mmg3dBezierCP(MMG5_pMesh mesh, MMG5_Tria *pt, _MMG5_pBezier pb, char ori)
Definition: bezier_3d.c:323
void _MMG5_freeXTets(MMG5_pMesh mesh)
Definition: zaldy_3d.c:299
int _MMG3D_bezierInt(_MMG5_pBezier pb, double uv[2], double o[3], double no[3], double to[3])
Definition: bezier_3d.c:547
! double c[3]
Definition: libmmgtypesf.h:244
void _MMG3D_printArbre(_MMG3D_octree *q)
int _MMG5_cenrad_ani(MMG5_pMesh mesh, double *ct, double *m, double *c, double *rad)
Definition: cenrad_3d.c:130
int _MMG5_swpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, _MMG3D_pOctree, char)
Definition: swap_3d.c:430
double _MMG5_surftri(MMG5_pMesh, int, int)
static const unsigned char _MMG5_ifar[6][2]
ifar[i][]: faces sharing the ith edge of the tetra
Definition: mmg3d.h:133
int _MMG3D_swpItem(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int, int)
Definition: opttyp_3d.c:325
void _MMG5_printTetra(MMG5_pMesh mesh, char *fileName)
Definition: tools_3d.c:806
int MMG3D_opttyp(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree)
Definition: opttyp_3d.c:463
int _MMG3D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1485
int _MMG5_norface(MMG5_pMesh mesh, int k, int iface, double v[3])
Definition: tools_3d.c:59
Definition: libmmgtypes.h:526
void _MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2)
Definition: boulep_3d.c:1293
int _MMG3D_delOctreeVertex(MMG5_pMesh, _MMG3D_octree_s *q, int no)
Definition: octree_3d.c:804
! int octree
Definition: libmmgtypesf.h:488
void _MMG5_defaultValues(MMG5_pMesh)
int(* _MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int, int)
Definition: mmg3d.h:450
int _MMG5_split6(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4776
int _MMG5_chkmanicoll(MMG5_pMesh, int, int, int, int, int, char, char)
Definition: mmg3d2.c:971
int _MMG5_chkcol_bdy(MMG5_pMesh, MMG5_pSol, int, char, char, int *, int, int *, int, char)
Definition: colver_3d.c:357
int _MMG5_intmet_ani(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:51
void _MMG3D_placeInListOctree(_MMG3D_octree_s **, _MMG3D_octree_s *, int, int)
Definition: octree_3d.c:327
static const unsigned char _MMG5_iprv3[7]
previous vertex of tetra: {3,0,1,2,3,0,1}
Definition: mmg3d.h:121
static void _MMG3D_Set_commonFunc()
Definition: mmg3d.h:483
int _MMG5_hashPop(_MMG5_Hash *hash, int a, int b)
Definition: hash_3d.c:777
int _MMG3D_simbulgept(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ilist, int)
Definition: split_3d.c:316
int _MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3])
Definition: tools_3d.c:73
int _MMG3D_intmet33_ani(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:101
void _MMG5_openCoquilTravel(MMG5_pMesh, int, int, int *, int *, char *, int *)
Definition: boulep_3d.c:1677
static const unsigned char _MMG5_iarfinv[4][6]
num of the j^th edge in the i^th face
Definition: mmg3d.h:129
void _MMG3D_solTruncatureForOptim(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:94
int _MMG5_swpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, _MMG3D_pOctree, char)
Definition: swapgen_3d.c:250
int _MMG5_hEdge(MMG5_pMesh mesh, MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:948
int _MMG5_bdryPerm(MMG5_pMesh)
Definition: hash_3d.c:2049
int(* _MMG5_interp4bar)(MMG5_pMesh, MMG5_pSol, int, int, double *)
Definition: mmg3d.h:448
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:539
int _MMG3D_splitItem(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int, int, double)
Definition: opttyp_3d.c:389
int _MMG5_movbdynompt_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:1038
void _MMG5_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions.c:51
static const unsigned char MMG5_permedge[12][6]
Definition: mmg3d.h:160
int _MMG5_interp4bar_iso(MMG5_pMesh, MMG5_pSol, int, int, double *)
int _MMG5_chkmani(MMG5_pMesh mesh)
Definition: mmg3d2.c:828
int _MMG5_startedgsurfball(MMG5_pMesh mesh, int nump, int numq, int *list, int ilist)
Definition: tools_3d.c:97
int _MMG3D_split5_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4378
void _MMG3D_printArbreDepth(_MMG3D_octree_s *q, int depth, int nv, int dim)
Definition: octree_3d.c:1010
int _MMG3D_moveOctree(MMG5_pMesh, _MMG3D_pOctree, int, double *, double *)
Definition: octree_3d.c:236
int _MMG5_bdyMCF(MMG5_pMesh)
double(* _MMG5_caltet)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: mmg3d.h:443
int _MMG5_chkBdryTria(MMG5_pMesh mesh)
Definition: hash_3d.c:1380
int _MMG5_srcface(MMG5_pMesh mesh, int n0, int n1, int n2)
int _MMG3D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:507
int _MMG5_hGeom(MMG5_pMesh mesh)
Definition: hash_3d.c:1018
! int dim
Definition: libmmgtypesf.h:528
int _MMG5_delone(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list, int ilist)
Definition: delaunay_3d.c:140
int _MMG3D_memOption(MMG5_pMesh mesh)
Definition: zaldy_3d.c:139
double _MMG5_orcal_poi(double a[3], double b[3], double c[3], double d[3])
int _MMG3D_seekIndex(double *distList, double dist, int indexMin, int indexMax)
Definition: octree_3d.c:348
int _MMG5_bdrySet(MMG5_pMesh)
Definition: hash_3d.c:1680
int _MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met, char metRidTyp)
Definition: quality_3d.c:48
int _MMG3D_Free_names_var(va_list argptr)
Definition: variadic_3d.c:493
int _MMG5_BezierTgt(double c1[3], double c2[3], double n1[3], double n2[3], double t1[3], double t2[3])
Definition: bezier_3d.c:53
int _MMG3D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_3d.c:774
int _MMG3D_addOctree(MMG5_pMesh mesh, _MMG3D_octree *q, const int no)
int(* _MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: mmg3d.h:451
int _MMG5_BezierEdge(MMG5_pMesh mesh, int ip0, int ip1, double b0[3], double b1[3], char isrid, double v[3])
Definition: bezier_3d.c:152
int _MMG5_movtet(MMG5_pMesh mesh, MMG5_pSol met, _MMG3D_pOctree octree, double clickSurf, double clickVol, int moveVol, int improveSurf, int improveVolSurf, int improveVol, int maxit)
Definition: mmg3d1.c:660
int _MMG3D_movv_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:2038
int _MMG5_velextLS(MMG5_pMesh, MMG5_pSol)
int _MMG3D_split3cone_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1994
int _MMG5_BezierRef(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:315
double(* _MMG5_caltri)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: mmg3d.h:444
int _MMG5_bdryUpdate(MMG5_pMesh)
Definition: hash_3d.c:1962
int _MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int *list)
Definition: boulep_3d.c:53
const int va_list argptr
Definition: API_functionsf_3d.c:737
int _MMG5_movintpt_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int)
Definition: movpt_3d.c:55
int _MMG5_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1828
struct _MMG3D_octree_s _MMG3D_octree_s
int _MMG5_split4sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:3700
int _MMG5_moymet(MMG5_pMesh, MMG5_pSol, MMG5_pTetra, double *)
Definition: anisosiz_3d.c:69
int MMG3D_optbdry(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int)
Definition: optbdry_3d.c:238
int nv
Definition: mmg3d.h:181
int _MMG3D_movv_ani(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1820
int nc
Definition: mmg3d.h:182
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:66
int _MMG5_split5(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4469
long long _MMG5_memSize(void)
Definition: tools.c:418
int _MMG3D_localParamNm(MMG5_pMesh, int, int, int, double *, double *, double *)
Definition: tools_3d.c:991
double _MMG5_estavglen(MMG5_pMesh)
void _MMG3D_mergeBranchesRec(_MMG3D_octree_s *, _MMG3D_octree_s *, int, int, int *)
Definition: octree_3d.c:839
void _MMG3D_Free_topoTables(MMG5_pMesh mesh)
Definition: libmmg3d.c:62
int _MMG5_split1(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char metRidTyp)
Definition: split_3d.c:116
int _MMG3D_split6_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4707
int * v
Definition: mmg3d.h:171
int _MMG5_chkptonbdy(MMG5_pMesh, int)
Definition: chkmsh_3d.c:301
int _MMG5_cavity_ani(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:577
int _MMG5_BezierReg(MMG5_pMesh mesh, int ip0, int ip1, double s, double v[3], double *o, double *no)
Definition: tools_3d.c:612
int _MMG5_stiffelt(MMG5_pMesh, int, double *, double *)
int _MMG5_hGet(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:916
int _MMG5_colver(MMG5_pMesh, MMG5_pSol, int *, int, char, char)
Definition: colver_3d.c:702
int _MMG5_anatet(MMG5_pMesh mesh, MMG5_pSol met, char typchk, int patternMode)
Definition: mmg3d1.c:1946
double _MMG5_volint(MMG5_pMesh)
int _MMG3D_prilen(MMG5_pMesh mesh, MMG5_pSol met, char)
Definition: quality_3d.c:189
int _MMG5_mmg3d3(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:520
int _MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3], double t[3])
Definition: boulep_3d.c:108
double _MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3])
Definition: bezier_3d.c:111
int _MMG5_split3(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1782
int _MMG5_srcbdy(MMG5_pMesh mesh, int start, int ia)
Definition: boulep_3d.c:1226
_MMG3D_octree * _MMG3D_pOctree
Definition: mmg3d.h:185
int _MMG3D_movnormal_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1931
int _MMG3D_optlap(MMG5_pMesh, MMG5_pSol)
Definition: optlap_3d.c:42
! int16_t tag
Definition: libmmgtypesf.h:252
int _MMG5_deltag(MMG5_pMesh, int, int, int16_t)
Definition: boulep_3d.c:984
int _MMG5_saveDisp(MMG5_pMesh, MMG5_pSol)
void _MMG5_nsort(int, double *, char *)
Definition: tools_3d.c:41
void _MMG3D_sizeArbreRec(_MMG3D_octree_s *q, int nv, int dim, int *, int *)
Definition: octree_3d.c:1082
int(* _MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: mmg3d.h:452
int _MMG5_mmg3dChkmsh(MMG5_pMesh, int, int)
Definition: chkmsh_3d.c:111
double _MMG5_caltet33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: quality_3d.c:87
int _MMG5_movbdyregpt_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int, int)
Definition: movpt_3d.c:368
int _MMG5_movbdyrefpt_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: movpt_3d.c:782
int _MMG3D_getListSquareRec(_MMG3D_octree_s *, double *, double *, _MMG3D_octree_s ***, double *, double *, double, int, int, int *)
Definition: octree_3d.c:454
int _MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:2841
int _MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh, int start, int na, int nb, char iface, char ia, int *list, int *ilist, int *it1, int *it2, int *piv, int *adj, char *hasadja, int *nbdy, int silent)
Definition: boulep_3d.c:1371
int _MMG5_split2(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1508
int _MMG5_split2sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1214
int _MMG5_intmet_iso(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:131
int _MMG5_movbdyrefpt_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:691
! int ref
Definition: libmmgtypesf.h:233
int _MMG5_setNmTag(MMG5_pMesh mesh, _MMG5_Hash *hash)
Definition: hash_3d.c:745
int _MMG3D_outqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:502
int _MMG5_bouletrid(MMG5_pMesh, int, int, int, int *, int *, int *, int *, int *, int *)
Definition: boulep_3d.c:591
int _MMG3D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_3d.c:117
double(* _MMG5_lenedgspl)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3d.h:442
int _MMG5_lapantilap(MMG5_pMesh, double *)
int xt
Definition: libmmgtypes.h:489
int(* _MMG5_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d.h:445
int _MMG5_split1b(MMG5_pMesh, MMG5_pSol, int *, int, int, int, char, char)
Definition: split_3d.c:501
int _MMG3D_hashTria(MMG5_pMesh mesh, _MMG5_Hash *)
Definition: hash_3d.c:767
API headers for the mmg3d library.
int _MMG3D_analys(MMG5_pMesh mesh)
Definition: analys_3d.c:650
int _MMG5_cntbdypt(MMG5_pMesh mesh, int nump)
Definition: chkmsh_3d.c:363
double _MMG5_meansizreg_iso(MMG5_pMesh, MMG5_pSol, int, int *, int, double, double)
Definition: isosiz_3d.c:461
MMG mesh structure.
Definition: libmmgtypes.h:473
int(* _MMG5_cavity)(MMG5_pMesh, MMG5_pSol, int, int, int *, int, double)
Definition: mmg3d.h:454
int _MMG5_hPop(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:857
int _MMG3D_chk4ridVertices(MMG5_pMesh mesh, MMG5_pTetra pt)
Definition: anisosiz_3d.c:38
int MMG3D_movetetrapoints(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int)
Definition: optbdry_3d.c:45
Definition: mmg3d.h:168
! double n2[3]
Definition: libmmgtypesf.h:264
char _MMG5_chkedg(MMG5_pMesh mesh, MMG5_pTria pt, char ori, double, double, int)
API header for the common part of the MMG libraries.
Identic as MMG5_HGeom but use _MMG5_hedge to store edges instead of MMG5_hgeom (memory economy)...
Definition: mmgcommon.h:407
void _MMG3D_placeInListDouble(double *, double, int, int)
Definition: octree_3d.c:309
int _MMG3D_intersectRect(double *rectin, double *rectinout)
Definition: octree_3d.c:396
int _MMG3D_split4sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:3597
int _MMG3D_addOctreeRec(MMG5_pMesh, _MMG3D_octree_s *, double *, const int, int)
Definition: octree_3d.c:654
int ne
Definition: libmmgtypes.h:480
int _MMG5_BezierRidge(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to)
Definition: tools_3d.c:133
int _MMG3D_dichoto1b(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int)
Definition: mmg3d1.c:235
int _MMG5_movbdyridpt_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1481
! double hmax
Definition: libmmgtypesf.h:231
int16_t _MMG5_coquilTravel(MMG5_pMesh, int, int, int *, int *, char *, int *)
Definition: boulep_3d.c:1618
! int np
Definition: libmmgtypesf.h:530
int(* _MMG5_intmet)(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: mmg3d.h:447
static void _MMG5_warnOrientation(MMG5_pMesh mesh)
Definition: mmg3d.h:464
int _MMG3D_delOctreeRec(MMG5_pMesh, _MMG3D_octree_s *, double *, const int, const int)
Definition: octree_3d.c:901
int _MMG3D_delOctree(MMG5_pMesh mesh, _MMG3D_pOctree q, const int no)
Definition: octree_3d.c:982
_MMG3D_octree_s * q0
Definition: mmg3d.h:183
Definition: mmgcommon.h:384
int _MMG5_cavity_iso(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:736
int _MMG5_trydisp(MMG5_pMesh, double *, short)
void _MMG3D_initOctree_s(_MMG3D_octree_s *q)
Definition: octree_3d.c:51
! char ori
Definition: libmmgtypesf.h:400
int _MMG5_hTag(MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:829
static const unsigned char _MMG5_arpt[4][3]
arpt[i]: edges passing through vertex i
Definition: mmg3d.h:137
void _MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh, int piv, char *iface, int *i, int *list, int *ilist, int *it1, int *pradj, int *adj)
Definition: boulep_3d.c:1459
int _MMG3D_isCellIncluded(double *cellCenter, double l, double *zoneCenter, double l0)
Definition: octree_3d.c:276
int _MMG3D_dichoto(MMG5_pMesh mesh, MMG5_pSol met, int k, int *vx)
Definition: mmg3d1.c:88
int _MMG3D_split3op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:2709
static const unsigned char _MMG5_isar[6][2]
isar[i][]: vertices of extremities of the edge opposite to the ith edge
Definition: mmg3d.h:135
int _MMG3D_split2sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1104
! double n[3]
Definition: libmmgtypesf.h:245
static const unsigned char _MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:131
static const unsigned char _MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:127
void _MMG3D_freeOctree(MMG5_pMesh, _MMG3D_octree **q)
double _MMG5_lenedgCoor_iso(double *, double *, double *, double *)
Compute edge length from edge&#39;s coordinates.
Definition: isosiz_3d.c:59
int _MMG3D_normalAdjaTri(MMG5_pMesh, int, char, int, double n[3])
Definition: split_3d.c:452
! int b
Definition: libmmgtypesf.h:275
int _MMG5_bdryIso(MMG5_pMesh)
! double n1[3]
Definition: libmmgtypesf.h:264
int _MMG3D_inqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:405
void _MMG5_tet2tri(MMG5_pMesh mesh, int k, char ie, MMG5_Tria *ptt)
Definition: mmg3d1.c:52
int _MMG3D_Init_mesh_var(va_list argptr)
Definition: variadic_3d.c:148
int _MMG3D_Free_structures_var(va_list argptr)
Definition: variadic_3d.c:360
int _MMG5_BezierNom(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:470
int _MMG5_swptet(MMG5_pMesh mesh, MMG5_pSol met, double, double, _MMG3D_pOctree, int)
Definition: mmg3d1.c:600
int _MMG5_dichodisp(MMG5_pMesh, double *)
! int na
Definition: libmmgtypesf.h:530
int _MMG5_settag(MMG5_pMesh, int, int, int16_t, int)
Definition: boulep_3d.c:857
Definition: mmg3d.h:179
int _MMG5_movbdynompt_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1134
int _MMG3D_localParamReg(MMG5_pMesh, int, int *, int, int *, int, double *, double *, double *)
Definition: tools_3d.c:856
int _MMG3D_split3_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1711
int _MMG5_mmg3d1_delone(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_delone.c:1201
int _MMG5_cenrad_iso(MMG5_pMesh mesh, double *ct, double *c, double *rad)
Definition: cenrad_3d.c:45
int _MMG3D_octreein_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int, double)
Definition: octree_3d.c:1341
int _MMG3D_getListSquare(MMG5_pMesh, double *, _MMG3D_octree *, double *, _MMG3D_octree_s ***)
! int v[3]
Definition: libmmgtypesf.h:304
int _MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met, int iel, int iar, double crit)
Definition: split_3d.c:5207
int MMG3D_swap23(MMG5_pMesh mesh, MMG5_pSol met, int k, char metRidTyp)
Definition: swapgen_3d.c:345
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:341
static const unsigned char _MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:123
void _MMG5_freeXPrisms(MMG5_pMesh mesh)
Definition: zaldy_3d.c:318
int _MMG5_movintpt_ani(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int *, int, int)
Definition: anisomovpt_3d.c:55
void _MMG3D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_3d.c:75
Definition: libmmgtypes.h:261
int _MMG5_split4bar(MMG5_pMesh mesh, MMG5_pSol met, int k, char)
Definition: split_3d.c:3291
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:428
static const unsigned char _MMG5_idir_pr[5][4]
idir[i]: vertices of face i for a prism
Definition: mmg3d.h:140
int _MMG5_split4op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4058
int(* _MMG5_indElt)(MMG5_pMesh mesh, int kel)
Definition: mmgcommon.h:536
int _MMG3D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_3d.c:240
int _MMG5_coquilface(MMG5_pMesh mesh, int start, char iface, int, int *, int *, int *, int)
Definition: boulep_3d.c:1511
! int s
Definition: libmmgtypesf.h:251
int _MMG3D_octreein_iso(MMG5_pMesh, MMG5_pSol, _MMG3D_pOctree, int, double)
Definition: octree_3d.c:1262
double(* _MMG5_lenedg)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3d.h:441
int _MMG5_boulernm(MMG5_pMesh mesh, int start, int ip, int *ng, int *nr)
Definition: boulep_3d.c:282
void _MMG3D_solTruncature(MMG5_pMesh mesh, MMG5_pSol met)
! double hsiz
Definition: libmmgtypesf.h:484
int _MMG5_chkfemtopo(MMG5_pMesh mesh)
Definition: chkmsh_3d.c:404
static const char _MMG5_idirinv[4][4]
Definition: mmg3d.h:125
int _MMG3D_packMesh(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: libmmg3d.c:309
static const unsigned char _MMG5_inxt3[7]
next vertex of tetra: {1,2,3,0,1,2,3}
Definition: mmg3d.h:119
int _MMG3D_split2_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1446
int _MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int *list)
Definition: boulep_3d.c:1089
int _MMG3D_initOctree(MMG5_pMesh, _MMG3D_pOctree *q, int nv)
Definition: octree_3d.c:68
int _MMG5_movintptLES_iso(MMG5_pMesh mesh, MMG5_pSol met, _MMG3D_pOctree, int *, int, int)
Definition: movpt_3d.c:191
int _MMG5_mmg3d1_pattern(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_pattern.c:556
static const unsigned char _MMG5_iarf_pr[5][5]
iarf[i]: edges of face i for a prism
Definition: mmg3d.h:142
int _MMG3D_mmg3d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d2.c:1500
int _MMG5_denoisbdy(MMG5_pMesh)
int depth
Definition: mmg3d.h:173
Definition: libmmgtypes.h:463
int _MMG5_countelt(MMG5_pMesh mesh, MMG5_pSol sol, double *weightelt, long *npcible)
Definition: quality_3d.c:604