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/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 
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 MMG3D_POINT_REALLOC(mesh,sol,ip,wantedGap,law,o,tag ) do \
49  { \
50  int klink; \
51  int oldnpmax = mesh->npmax; \
52  \
53  MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \
54  "larger point table",law); \
55  \
56  mesh->npnil = mesh->np+1; \
57  for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
58  mesh->point[klink].tmp = klink+1; \
59  \
60  /* solution */ \
61  if ( sol ) { \
62  if ( sol->m ) { \
63  MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
64  "larger solution", \
65  MMG5_SAFE_RECALLOC(mesh->point,mesh->npmax+1,oldnpmax+1,MMG5_Point,,); \
66  mesh->memCur -= (mesh->npmax - oldnpmax)*sizeof(MMG5_Point); \
67  mesh->npmax = oldnpmax; \
68  mesh->np = mesh->npmax-1; \
69  mesh->npnil = 0; \
70  law); \
71  MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \
72  sol->size*(mesh->npmax+1), \
73  double,"larger solution", \
74  MMG5_SAFE_RECALLOC(mesh->point,mesh->npmax+1,oldnpmax+1,MMG5_Point,,); \
75  mesh->memCur -= (mesh->npmax - oldnpmax)*sizeof(MMG5_Point); \
76  mesh->npmax = oldnpmax; \
77  mesh->np = mesh->npmax-1; \
78  mesh->npnil = 0; \
79  law); \
80  } \
81  sol->npmax = mesh->npmax; \
82  } \
83  \
84  /* We try again to add the point */ \
85  ip = MMG3D_newPt(mesh,o,tag); \
86  if ( !ip ) { law; } \
87  }while(0)
88 
89 
92 #define MMG3D_TETRA_REALLOC(mesh,jel,wantedGap,law ) do \
93  { \
94  int klink,oldSiz; \
95  \
96  oldSiz = mesh->nemax; \
97  MMG5_TAB_RECALLOC(mesh,mesh->tetra,mesh->nemax,wantedGap,MMG5_Tetra, \
98  "larger tetra table",law); \
99  \
100  mesh->nenil = mesh->ne+1; \
101  for (klink=mesh->nenil; klink<mesh->nemax-1; klink++) \
102  mesh->tetra[klink].v[3] = klink+1; \
103  \
104  if ( mesh->adja ) { \
105  /* adja table */ \
106  MMG5_ADD_MEM(mesh,4*(mesh->nemax-oldSiz)*sizeof(int), \
107  "larger adja table",law); \
108  MMG5_SAFE_RECALLOC(mesh->adja,4*oldSiz+5,4*mesh->nemax+5,int \
109  ,"larger adja table",law); \
110  } \
111  \
112  /* We try again to add the point */ \
113  jel = MMG3D_newElt(mesh); \
114  if ( !jel ) {law;} \
115  }while(0)
116 
117 /* numerical accuracy */
118 #define MMG3D_ALPHAD 20.7846096908265 /* 12*sqrt(3) */
119 #define MMG3D_LLONG 2.5
120 #define MMG3D_LSHRT 0.3
121 #define MMG3D_LOPTL 1.3
122 #define MMG3D_LOPTS 0.6
123 
124 #define MMG3D_SWAP06 0.0288675 /* 0.6/MMG3D_ALPHAD */
125 #define MMG3D_SSWAPIMPROVE 1.053
126 #define MMG3D_LSWAPIMPROVE 1.1
127 
128 #define MMG3D_BADKAL 0.2
129 #define MMG3D_MAXKAL 1.
130 
131 
132 #define MMG3D_NPMAX 1000000 //200000
133 #define MMG3D_NAMAX 200000 //40000
134 #define MMG3D_NTMAX 2000000 //400000
135 #define MMG3D_NEMAX 6000000 //1200000
136 
137 #define MMG3D_SHORTMAX 0x7fff
138 
139 
141 static const unsigned char MMG5_inxt3[7] = { 1,2,3,0,1,2,3 };
143 static const unsigned char MMG5_iprv3[7] = { 3,0,1,2,3,0,1 };
145 static const unsigned char MMG5_idir[4][3] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };
146 /* \var idirinv[i][j]: num of the jth point in the ith face */
147 static const char MMG5_idirinv[4][4] = {{-1,0,1,2},{0,-1,2,1},{0,1,-1,2},{0,2,1,-1}};
149 static const unsigned char MMG5_iarf[4][3] = { {5,4,3}, {5,1,2}, {4,2,0}, {3,0,1} };
151 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}};
153 static const unsigned char MMG5_iare[6][2] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} };
155 static const unsigned char MMG5_ifar[6][2] = { {2,3}, {1,3}, {1,2}, {0,3}, {0,2}, {0,1} };
157 static const unsigned char MMG5_isar[6][2] = { {2,3}, {3,1}, {1,2}, {0,3}, {2,0}, {0,1} };
159 static const unsigned char MMG5_arpt[4][3] = { {0,1,2}, {0,4,3}, {1,3,5}, {2,5,4} };
160 
162 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} };
164 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} };
165 
182 static const unsigned char MMG5_permedge[12][6] = {
183  {0,1,2,3,4,5}, {1,2,0,5,3,4}, {2,0,1,4,5,3}, {0,4,3,2,1,5},
184  {3,0,4,1,5,2}, {4,3,0,5,2,1}, {1,3,5,0,2,4}, {3,5,1,4,0,2},
185  {5,1,3,2,4,0}, {2,5,4,1,0,3}, {4,2,5,0,3,1}, {5,4,2,3,1,0} };
186 
192 typedef struct MMG3D_PROctree_s
193 {
195  int* v;
196  int nbVer;
197  int depth;
199 
204 typedef struct
205 {
206  int nv;
207  int nc;
211 
212 
213 /* PROctree */
218 int MMG3D_isCellIncluded(double* cellCenter, double l, double* zoneCenter, double l0);
219 void MMG3D_placeInListDouble(double*, double, int, int);
221 int MMG3D_seekIndex (double* distList, double dist, int indexMin, int indexMax);
222 int MMG3D_intersectRect(double *rectin, double *rectinout);
223 int MMG3D_getListSquareRec(MMG3D_PROctree_s*,double*,double*,
224  MMG3D_PROctree_s***,double*,double*,double, int, int, int*);
226 int MMG3D_addPROctreeRec(MMG5_pMesh,MMG3D_PROctree_s*,double*, const int, int);
227 int MMG3D_addPROctree(MMG5_pMesh mesh, MMG3D_PROctree* q, const int no);
229 int MMG3D_movePROctree(MMG5_pMesh, MMG3D_pPROctree,int, double*, double*);
232 int MMG3D_delPROctreeRec(MMG5_pMesh,MMG3D_PROctree_s*,double*, const int,const int);
233 int MMG3D_delPROctree(MMG5_pMesh mesh, MMG3D_pPROctree q, const int no);
234 void MMG3D_printArbreDepth(MMG3D_PROctree_s* q, int depth, int nv, int dim);
236 void MMG3D_sizeArbreRec(MMG3D_PROctree_s* q, int nv, int dim, int*,int*);
237 int* MMG3D_sizeArbre(MMG3D_PROctree* q, int dim);
240 
241 /* prototypes */
242 int MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met,char metRidTyp);
244 extern int MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3]);
245 
246 int MMG3D_Init_mesh_var( va_list argptr );
247 int MMG3D_Free_all_var( va_list argptr );
248 int MMG3D_Free_structures_var( va_list argptr );
249 int MMG3D_Free_names_var( va_list argptr );
250 int MMG3D_newPt(MMG5_pMesh mesh,double c[3],int16_t tag);
252 int MMG3D_delElt(MMG5_pMesh mesh,int iel);
253 void MMG3D_delPt(MMG5_pMesh mesh,int ip);
258 char MMG5_chkedg(MMG5_pMesh mesh,MMG5_pTria pt,char ori,double,double,int);
261 extern int MMG5_BezierTgt(double c1[3],double c2[3],double n1[3],double n2[3],double t1[3],double t2[3]);
262 extern double MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3]);
263 int MMG3D_bezierInt(MMG5_pBezier pb,double uv[2],double o[3],double no[3],double to[3]);
264 extern int MMG5_BezierReg(MMG5_pMesh mesh,int ip0, int ip1, double s, double v[3], double *o, double *no);
265 extern int MMG5_BezierRef(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no, double *to);
266 extern int MMG5_BezierEdge(MMG5_pMesh mesh,int ip0, int ip1, double b0[3], double b1[3],char isrid, double v[3]);
267 extern int MMG5_BezierRidge(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to);
268 extern int MMG5_BezierNom(MMG5_pMesh mesh,int ip0,int ip1,double s,double *o,double *no,double *to);
269 int MMG5_norface(MMG5_pMesh mesh ,int k, int iface, double v[3]);
270 int MMG3D_findEdge(MMG5_pMesh,MMG5_pTetra,int,int,int,int,char*,char* );
271 int MMG5_boulernm (MMG5_pMesh mesh, int start, int ip, int *ng, int *nr);
272 int MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3],double t[3]);
273 int MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int * list);
274 int MMG5_boulesurfvolp(MMG5_pMesh mesh,int start,int ip,int iface,int *listv,
275  int *ilistv,int *lists,int*ilists, int isnm);
276 int MMG5_bouletrid(MMG5_pMesh,int,int,int,int *,int *,int *,int *,int *,int *);
277 int MMG5_startedgsurfball(MMG5_pMesh mesh,int nump,int numq,int *list,int ilist);
278 int MMG5_srcbdy(MMG5_pMesh mesh,int start,int ia);
279 int MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int * list);
280 int MMG5_coquilface(MMG5_pMesh mesh, int start,char iface,int,int*,int*,int*,int);
281 int MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh,int start,int na,int nb,char iface,
282  char ia,int *list,int *ilist,int *it1,int *it2,
283  int *piv,int *adj,char *hasadja,int *nbdy,int silent);
284 void MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh,int piv,char *iface,char *i,
285  int *list,int *ilist,int *it1,int *pradj,
286  int *adj);
287 void MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2);
288 int16_t MMG5_coquilTravel(MMG5_pMesh,int,int,int*,int*,char*,char*);
289 int16_t MMG5_openCoquilTravel(MMG5_pMesh,int,int,int*,int*,char*,char*);
290 int MMG5_settag(MMG5_pMesh,int,int,int16_t,int);
291 int MMG5_deltag(MMG5_pMesh,int,int,int16_t);
293 int MMG5_chkcol_int(MMG5_pMesh,MMG5_pSol,int,char,char,int*,int,char);
294 int MMG5_chkcol_bdy(MMG5_pMesh,MMG5_pSol,int,char,char,int*,int,int*,int,char);
295 int MMG5_chkmanicoll(MMG5_pMesh,int,int,int,int,int,char,char);
297 int MMG5_colver(MMG5_pMesh,MMG5_pSol,int *,int,char,char);
307 int MMG5_hashFace(MMG5_pMesh,MMG5_Hash*,int,int,int,int);
308 int MMG5_hashGetFace(MMG5_Hash*,int,int,int);
311 int MMG5_hashPop(MMG5_Hash *hash,int a,int b);
312 int MMG5_hPop(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
313 int MMG5_hTag(MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
314 int MMG5_hGet(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
315 int MMG5_hEdge(MMG5_pMesh mesh,MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
316 int MMG5_hNew(MMG5_pMesh mesh,MMG5_HGeom *hash,int hsiz,int hmax);
323 int MMG5_cntbdypt(MMG5_pMesh mesh, int nump);
324 size_t MMG5_memSize(void);
331 int MMG5_mmg3dChkmsh(MMG5_pMesh,int,int);
332 int MMG3D_setMeshSize_initData(MMG5_pMesh,int,int,int,int,int,int);
334 int MMG3D_split1_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
335 int MMG5_split1(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char metRidTyp);
336 int MMG5_split1b(MMG5_pMesh,MMG5_pSol,int*,int,int,int,char,char);
337 int MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met,int iel, int iar, double crit);
338 int MMG3D_split2sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
339 int MMG5_split2sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
340 int MMG3D_split2_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
341 int MMG5_split2(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
342 int MMG3D_split3_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
343 int MMG5_split3(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
344 int MMG3D_split3cone_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
345 int MMG5_split3cone(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
346 int MMG3D_split3op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
347 int MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6],char);
348 int MMG3D_split4sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
349 int MMG5_split4sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
350 int MMG3D_split4op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
351 int MMG5_split4op(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
352 int MMG3D_split5_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
353 int MMG5_split5(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
354 int MMG3D_split6_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
355 int MMG5_split6(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],char);
356 int MMG5_split4bar(MMG5_pMesh mesh,MMG5_pSol met,int k,char);
357 int MMG3D_simbulgept(MMG5_pMesh mesh,MMG5_pSol met, int *list, int ilist,int);
358 void MMG5_nsort(int ,double *,char *);
360 int MMG5_movintpt_iso(MMG5_pMesh ,MMG5_pSol,MMG3D_pPROctree, int *, int , int);
361 int MMG3D_movnormal_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
365  int*, int, int*, int, int ,int);
367  int*, int, int*, int, int ,int);
369  int*, int ,int);
371  int*, int ,int);
373  int*, int ,int);
375  int*, int ,int);
377  int*, int ,int);
379  int*, int ,int);
380 int MMG3D_movv_ani(MMG5_pMesh ,MMG5_pSol ,int ,int );
381 int MMG3D_movv_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
382 int MMG3D_normalAdjaTri(MMG5_pMesh,int,char,int,double n[3]);
383 int MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol,int*, int, int, int,char);
384 int MMG5_swpbdy(MMG5_pMesh,MMG5_pSol,int*,int,int,MMG3D_pPROctree,char);
385 int MMG5_swpgen(MMG5_pMesh,MMG5_pSol,int, int, int*,MMG3D_pPROctree,char);
386 int MMG5_chkswpgen(MMG5_pMesh,MMG5_pSol,int,int,int*,int*,double,char);
387 int MMG3D_swap23(MMG5_pMesh,MMG5_pSol,int,char,int,int,int,int);
388 int MMG5_srcface(MMG5_pMesh mesh,int n0,int n1,int n2);
389 int MMG5_chkptonbdy(MMG5_pMesh,int);
390 double MMG5_orcal_poi(double a[3],double b[3],double c[3],double d[3]);
391 int MMG5_countelt(MMG5_pMesh mesh,MMG5_pSol sol, double *weightelt, long *npcible);
392 /*function for agressive optimization*/
395 int MMG3D_splitItem(MMG5_pMesh , MMG5_pSol ,MMG3D_pPROctree ,int ,int ,double );
398 
399 int MMG5_trydisp(MMG5_pMesh,double *,short);
400 int MMG5_dichodisp(MMG5_pMesh,double *);
401 int MMG5_lapantilap(MMG5_pMesh,double *);
402 int MMG5_ppgdisp(MMG5_pMesh,double *);
404 int MMG3D_displayQualHisto(int,double,double,double,int,int,int,
405  int his[5],int,int,int);
406 int MMG3D_displayQualHisto_internal(int,double,double,double,int,int,int,
407  int his[5],int,int,int);
408 void MMG3D_computeInqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
409  int*,int his[5],int);
411 void MMG3D_computeOutqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
412  int*,int his[5],int*,int);
414 void MMG3D_computeLESqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
415  int*,int his[5],int);
416 int MMG3D_computePrilen(MMG5_pMesh,MMG5_pSol,double*,double*,double*,int*,int*,int*,
417  int*,int*,int*,char,double**, int [9] );
418 int MMG3D_prilen(MMG5_pMesh mesh,MMG5_pSol met,char);
421 int MMG5_intridmet(MMG5_pMesh,MMG5_pSol,int,int,double,double*,double*);
422 int MMG5_intregmet(MMG5_pMesh,MMG5_pSol,int,char,double, double*);
423 int MMG5_intvolmet(MMG5_pMesh,MMG5_pSol,int,char,double, double*);
424 int MMG3D_localParamReg(MMG5_pMesh,int,int*,int,int*,int,double*,double*,double*);
425 int MMG3D_localParamNm(MMG5_pMesh,int,int,int,double*,double*,double*);
426 int MMG3D_mark_packedPoints(MMG5_pMesh mesh,int *np,int *nc);
437 
438 /* useful functions to debug */
439 int MMG3D_indElt(MMG5_pMesh mesh,int kel);
440 int MMG3D_indPt(MMG5_pMesh mesh,int kp);
441 void MMG5_printTetra(MMG5_pMesh mesh,char* fileName);
442 
443 
444 #ifdef USE_SCOTCH
445 int MMG5_mmg3dRenumbering(int vertBoxNbr, MMG5_pMesh mesh, MMG5_pSol sol);
446 #endif
447 
448 int MMG5_meancur(MMG5_pMesh mesh,int np,double c[3],int ilist,int *list,double h[3]);
449 double MMG5_surftri(MMG5_pMesh,int,int);
450 double MMG5_timestepMCF(MMG5_pMesh,double);
452 double MMG5_volint(MMG5_pMesh);
453 
454 /* Lagrangian mode functions */
455 double MMG5_estavglen(MMG5_pMesh);
456 int MMG5_stiffelt(MMG5_pMesh,int,double*,double*);
460 
461 /* Delaunay functions*/
462 int MMG5_delone(MMG5_pMesh mesh,MMG5_pSol sol,int ip,int *list,int ilist);
463  int MMG5_cavity_iso(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
464  int MMG5_cavity_ani(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
465 int MMG5_cenrad_iso(MMG5_pMesh mesh,double *ct,double *c,double *rad);
466 int MMG5_cenrad_ani(MMG5_pMesh mesh,double *ct,double *m,double *c,double *rad);
467 
468 /* mmg3d1.c */
469 void MMG5_tet2tri(MMG5_pMesh mesh,int k,char ie,MMG5_Tria *ptt);
470 int MMG3D_dichoto(MMG5_pMesh mesh,MMG5_pSol met,int k,int *vx);
471 int MMG3D_dichoto1b(MMG5_pMesh mesh,MMG5_pSol met,int *list,int ret,int);
472 char MMG5_chkedg(MMG5_pMesh mesh,MMG5_Tria *pt,char ori,double,double,int);
474  char,char,int* );
475 int MMG5_anatet(MMG5_pMesh mesh,MMG5_pSol met, char typchk, int patternMode) ;
477  double clickSurf,double clickVol,int moveVol,int improveSurf,int improveVolSurf,
478  int improveVol,int maxit,int testmark);
480  int MMG5_swptet(MMG5_pMesh mesh,MMG5_pSol met,double,double,MMG3D_pPROctree, int,int);
481 
482 /* pointers */
483 /* init structures */
485 /* iso/aniso computations */
487 extern double MMG5_lenedgCoor_iso(double*, double*, double*, double*);
488 int MMG5_intmet_iso(MMG5_pMesh,MMG5_pSol,int,char,int, double);
489 int MMG5_intmet_ani(MMG5_pMesh,MMG5_pSol,int,char,int, double);
490 int MMG3D_intmet33_ani(MMG5_pMesh,MMG5_pSol,int,char,int, double);
491 int MMG5_interp4bar_ani(MMG5_pMesh,MMG5_pSol,int,int,double *);
492 int MMG5_interp4bar33_ani(MMG5_pMesh,MMG5_pSol,int,int,double *);
493 int MMG5_interp4bar_iso(MMG5_pMesh,MMG5_pSol,int,int,double *);
500 double MMG5_meansizreg_iso(MMG5_pMesh,MMG5_pSol,int,int*,int,double,double);
502 extern int MMG5_moymet(MMG5_pMesh ,MMG5_pSol ,MMG5_pTetra ,double *);
505 
513 int (*MMG5_intmet)(MMG5_pMesh,MMG5_pSol,int,char,int, double);
514 int (*MMG5_interp4bar)(MMG5_pMesh,MMG5_pSol,int,int,double *);
515 int (*MMG5_movintpt)(MMG5_pMesh ,MMG5_pSol, MMG3D_pPROctree ,int *, int , int );
516 int (*MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int, int ,int);
517 int (*MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
518 int (*MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
519 int (*MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
520 int (*MMG5_cavity)(MMG5_pMesh ,MMG5_pSol ,int ,int ,int *,int ,double);
522 
529 static inline
531  if ( mesh->xt ) {
532  if ( mesh->xt != mesh->ne ) {
533  fprintf(stderr,"\n ## Warning: %s: %d tetra on %d reoriented.\n",
534  __func__,mesh->xt,mesh->ne);
535  fprintf(stderr," Your mesh may be non-conform.\n");
536  }
537  else {
538  fprintf(stderr,"\n ## Warning: %s: all tetra reoriented.\n",__func__);
539  }
540  }
541  mesh->xt = 0;
542 }
543 
548 static inline
556 #ifdef USE_SCOTCH
557  MMG5_renumbering = MMG5_mmg3dRenumbering;
558 #endif
559 }
560 
561 #ifdef __cplusplus
562 }
563 #endif
564 
565 #endif
int MMG5_mmg3dBezierCP(MMG5_pMesh mesh, MMG5_Tria *pt, MMG5_pBezier pb, char ori)
Definition: bezier_3d.c:327
int MMG5_split4sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:3753
int MMG5_bouletrid(MMG5_pMesh, int, int, int, int *, int *, int *, int *, int *, int *)
Definition: boulep_3d.c:626
int MMG3D_newElt(MMG5_pMesh mesh)
Definition: zaldy_3d.c:94
int MMG5_chkcol_bdy(MMG5_pMesh, MMG5_pSol, int, char, char, int *, int, int *, int, char)
Definition: colver_3d.c:358
int MMG3D_delPROctreeRec(MMG5_pMesh, MMG3D_PROctree_s *, double *, const int, const int)
Definition: PRoctree_3d.c:891
int MMG3D_PROctreein_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: PRoctree_3d.c:1137
int(* MMG3D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d.h:510
int MMG3D_hashPrism(MMG5_pMesh mesh)
Definition: hash_3d.c:295
int(* MMG3D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d.h:511
int MMG3D_split3cone_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:2004
int MMG5_cenrad_iso(MMG5_pMesh mesh, double *ct, double *c, double *rad)
Definition: cenrad_3d.c:45
double MMG5_orcal_poi(double a[3], double b[3], double c[3], double d[3])
! int a
Definition: libmmgtypesf.h:286
int MMG5_hashPop(MMG5_Hash *hash, int a, int b)
Definition: hash_3d.c:778
int MMG5_movintpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: movpt_3d.c:55
int(* MMG5_grad2met_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgcommon.h:631
int MMG3D_gradsizreq_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:2019
! double * m
Definition: libmmgtypesf.h:627
int MMG3D_simbulgept(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ilist, int)
Definition: split_3d.c:321
double(* MMG5_lenedg)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3d.h:506
double MMG5_meansizreg_iso(MMG5_pMesh, MMG5_pSol, int, int *, int, double, double)
Definition: isosiz_3d.c:461
int MMG3D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_3d.c:117
int MMG5_mmg3dChkmsh(MMG5_pMesh, int, int)
Definition: chkmsh_3d.c:111
Definition: libmmgtypes.h:339
int MMG3D_getListSquareRec(MMG3D_PROctree_s *, double *, double *, MMG3D_PROctree_s ***, double *, double *, double, int, int, int *)
Definition: PRoctree_3d.c:441
int MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:2851
int MMG5_velextLS(MMG5_pMesh, MMG5_pSol)
int(* MMG5_bezierCP)(MMG5_pMesh, MMG5_Tria *, MMG5_pBezier, char)
Definition: mmgcommon.h:629
int MMG3D_analys(MMG5_pMesh mesh)
Definition: analys_3d.c:731
int MMG3D_split3_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1721
! int k
Definition: libmmgtypesf.h:543
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:499
void MMG3D_computeInqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int)
Definition: quality_3d.c:516
struct MMG3D_PROctree_s MMG3D_PROctree_s
! double c[3]
Definition: libmmgtypesf.h:255
int MMG3D_split2_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1456
int MMG5_srcface(MMG5_pMesh mesh, int n0, int n1, int n2)
int MMG3D_delPROctreeVertex(MMG5_pMesh, MMG3D_PROctree_s *q, int no)
Definition: PRoctree_3d.c:795
int MMG3D_split4op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:3990
int MMG3D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1255
MMG3D_PROctree_s * q0
Definition: mmg3d.h:208
Definition: libmmgtypes.h:563
int MMG3D_bezierInt(MMG5_pBezier pb, double uv[2], double o[3], double no[3], double to[3])
Definition: bezier_3d.c:551
int MMG3D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_3d.c:866
Definition: mmg3d.h:192
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgcommon.h:628
int(* MMG5_grad2metreq_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgcommon.h:632
int nv
Definition: mmg3d.h:206
int MMG3D_delPROctree(MMG5_pMesh mesh, MMG3D_pPROctree q, const int no)
Definition: PRoctree_3d.c:972
int MMG5_denoisbdy(MMG5_pMesh)
void MMG5_tet2tri(MMG5_pMesh mesh, int k, char ie, MMG5_Tria *ptt)
Definition: mmg3d1.c:52
int MMG5_norface(MMG5_pMesh mesh, int k, int iface, double v[3])
Definition: tools_3d.c:59
int MMG3D_getListSquare(MMG5_pMesh, double *, MMG3D_PROctree *, double *, MMG3D_PROctree_s ***)
int(* MMG5_interp4bar)(MMG5_pMesh, MMG5_pSol, int, int, double *)
Definition: mmg3d.h:514
int MMG3D_findEdge(MMG5_pMesh, MMG5_pTetra, int, int, int, int, char *, char *)
Definition: boulep_3d.c:110
int MMG5_trydisp(MMG5_pMesh, double *, short)
int MMG3D_split3op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:2719
int MMG5_swpmsh(MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int)
Definition: mmg3d1.c:542
int MMG5_hTag(MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:841
int MMG5_intmet_ani(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:51
int MMG3D_displayQualHisto_internal(int, double, double, double, int, int, int, int his[5], int, int, int)
Definition: quality_3d.c:472
int MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met, int iel, int iar, double crit)
Definition: split_3d.c:5259
int MMG3D_chk4ridVertices(MMG5_pMesh mesh, MMG5_pTetra pt)
Definition: anisosiz_3d.c:38
int MMG5_grad2metSurf(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int np1, int np2)
Definition: anisosiz.c:912
int MMG5_split2(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1518
int MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met, char metRidTyp)
Definition: quality_3d.c:48
static const unsigned char MMG5_idir_pr[5][4]
idir[i]: vertices of face i for a prism
Definition: mmg3d.h:162
void MMG3D_printArbre(MMG3D_PROctree *q)
int MMG3D_pack_prismsAndQuads(MMG5_pMesh mesh)
Definition: libmmg3d.c:441
int MMG3D_swpItem(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, int)
Definition: opttyp_3d.c:326
double MMG5_timestepMCF(MMG5_pMesh, double)
int MMG3D_split5_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4431
double MMG5_volint(MMG5_pMesh)
int MMG3D_gradsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:1053
int MMG3D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_3d.c:850
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:576
int(* MMG5_indElt)(MMG5_pMesh mesh, int kel)
Definition: mmgcommon.h:637
static const unsigned char MMG5_permedge[12][6]
Definition: mmg3d.h:182
int MMG5_swpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, MMG3D_pPROctree, char)
Definition: swap_3d.c:434
int MMG5_split5(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4522
void MMG3D_placeInListDouble(double *, double, int, int)
Definition: PRoctree_3d.c:296
void MMG3D_solTruncature(MMG5_pMesh mesh, MMG5_pSol met)
int MMG5_mmg3d1_pattern(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_pattern.c:445
int MMG5_chkptonbdy(MMG5_pMesh, int)
Definition: chkmsh_3d.c:301
int MMG3D_splsurfedge(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra, MMG5_pxTetra, char, char, char, int *)
Definition: mmg3d1.c:1383
int MMG3D_pack_pointArray(MMG5_pMesh mesh)
Definition: libmmg3d.c:569
int MMG5_split1b(MMG5_pMesh, MMG5_pSol, int *, int, int, int, char, char)
Definition: split_3d.c:511
int MMG5_swptet(MMG5_pMesh mesh, MMG5_pSol met, double, double, MMG3D_pPROctree, int, int)
Definition: mmg3d1.c:611
int MMG3D_splitItem(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, int, double)
Definition: opttyp_3d.c:390
! int dim
Definition: libmmgtypesf.h:569
int MMG5_hGeom(MMG5_pMesh mesh)
Definition: hash_3d.c:1030
double MMG5_caltet33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: quality_3d.c:90
int MMG5_interp4bar33_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
double MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3])
Definition: bezier_3d.c:111
int MMG3D_set_metricAtPointsOnReqEdges(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:542
int MMG3D_pack_points(MMG5_pMesh mesh)
Definition: libmmg3d.c:623
void MMG3D_unset_reqBoundaries(MMG5_pMesh mesh)
Definition: libmmg3d.c:645
int MMG5_split4op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4111
int MMG3D_intmet33_ani(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:101
void MMG3D_freePROctree(MMG5_pMesh, MMG3D_PROctree **q)
int(* MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3d.h:517
int MMG5_movintptLES_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree, int *, int, int)
Definition: movpt_3d.c:193
int MMG3D_split6_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4760
int(* MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3d.h:519
int MMG5_movbdynompt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:1028
static const char MMG5_idirinv[4][4]
Definition: mmg3d.h:147
const int va_list argptr
Definition: API_functionsf_3d.c:836
int MMG5_split3cone(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:2185
int MMG5_movbdyridpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1474
int MMG5_hEdge(MMG5_pMesh mesh, MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:960
double MMG5_surftri(MMG5_pMesh, int, int)
static const unsigned char MMG5_iprv3[7]
previous vertex of tetra: {3,0,1,2,3,0,1}
Definition: mmg3d.h:143
int MMG5_chkVertexConnectedDomains(MMG5_pMesh mesh)
Definition: analys_3d.c:350
int MMG5_colver(MMG5_pMesh, MMG5_pSol, int *, int, char, char)
Definition: colver_3d.c:713
void MMG5_freeXTets(MMG5_pMesh mesh)
Definition: zaldy_3d.c:329
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
int MMG3D_swap23(MMG5_pMesh, MMG5_pSol, int, char, int, int, int, int)
Definition: swap_3d.c:561
int(* MMG5_indPt)(MMG5_pMesh mesh, int kp)
Definition: mmgcommon.h:638
int depth
Definition: mmg3d.h:197
int MMG3D_pack_tetra(MMG5_pMesh mesh)
Definition: libmmg3d.c:401
int MMG5_hashGetFace(MMG5_Hash *, int, int, int)
Definition: hash_3d.c:143
int MMG3D_movv_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:2031
static const unsigned char MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:153
double(* MMG5_lenedgspl)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3d.h:507
char MMG5_chkedg(MMG5_pMesh mesh, MMG5_pTria pt, char ori, double, double, int)
int MMG5_bdryUpdate(MMG5_pMesh)
Definition: hash_3d.c:1984
int MMG3D_optbdry(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: optbdry_3d.c:239
void MMG3D_computeOutqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int *, int)
Definition: quality_3d.c:635
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
void MMG3D_computeLESqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int)
Definition: quality_3d.c:354
int MMG5_hPop(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:869
int MMG5_chkmani(MMG5_pMesh mesh)
Definition: mmg3d2.c:756
int MMG5_mmg3d1_delone(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d1_delone.c:1273
int MMG5_bdryPerm(MMG5_pMesh)
Definition: hash_3d.c:2073
int MMG5_cntbdypt(MMG5_pMesh mesh, int nump)
Definition: chkmsh_3d.c:363
int MMG3D_movv_ani(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1813
int MMG3D_dichoto1b(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int)
Definition: mmg3d1.c:240
int MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int *list)
Definition: boulep_3d.c:53
int MMG5_grad2metSurfreq(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int npmaster, int npslave)
Definition: anisosiz.c:1450
int(* MMG5_intmet)(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: mmg3d.h:513
int MMG5_coquilface(MMG5_pMesh mesh, int start, char iface, int, int *, int *, int *, int)
Definition: boulep_3d.c:1480
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:557
int MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int *list)
Definition: boulep_3d.c:1053
int MMG5_bdrySet(MMG5_pMesh)
Definition: hash_3d.c:1697
static const unsigned char MMG5_isar[6][2]
isar[i][]: vertices of extremities of the edge opposite to the ith edge
Definition: mmg3d.h:157
int MMG3D_PROctreein_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: PRoctree_3d.c:1217
int MMG5_dichodisp(MMG5_pMesh, double *)
int * MMG3D_sizeArbre(MMG3D_PROctree *q, int dim)
int MMG3D_movnormal_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1924
int MMG5_moymet(MMG5_pMesh, MMG5_pSol, MMG5_pTetra, double *)
Definition: anisosiz_3d.c:69
void MMG5_defaultValues(MMG5_pMesh)
int(* MMG5_movintpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: mmg3d.h:515
! int16_t tag
Definition: libmmgtypesf.h:263
int MMG5_chkcol_int(MMG5_pMesh, MMG5_pSol, int, char, char, int *, int, char)
Definition: colver_3d.c:42
Definition: mmg3d.h:204
void MMG5_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions.c:51
double(* MMG5_caltet)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: mmg3d.h:508
size_t MMG5_memSize(void)
Definition: tools.c:547
int MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, int, char)
Definition: swap_3d.c:55
int MMG3D_optlap(MMG5_pMesh, MMG5_pSol)
Definition: optlap_3d.c:42
int MMG5_intregmet(MMG5_pMesh, MMG5_pSol, int, char, double, double *)
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 MMG3D_opttyp(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: opttyp_3d.c:467
int MMG5_cavity_ani(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:582
int MMG5_saveDisp(MMG5_pMesh, MMG5_pSol)
static const unsigned char MMG5_inxt3[7]
next vertex of tetra: {1,2,3,0,1,2,3}
Definition: mmg3d.h:141
static const unsigned char MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:145
int MMG5_split4bar(MMG5_pMesh mesh, MMG5_pSol met, int k, char)
Definition: split_3d.c:3301
int MMG3D_initPROctree(MMG5_pMesh, MMG3D_pPROctree *q, int nv)
Definition: PRoctree_3d.c:63
int MMG5_setadj(MMG5_pMesh mesh)
Definition: analys_3d.c:96
Definition: mmgcommon.h:480
int MMG3D_localParamNm(MMG5_pMesh, int, int, int, double *, double *, double *)
Definition: tools_3d.c:1052
int MMG5_deltag(MMG5_pMesh, int, int, int16_t)
Definition: boulep_3d.c:957
! int ref
Definition: libmmgtypesf.h:244
int MMG5_delone(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list, int ilist)
Definition: delaunay_3d.c:140
int MMG3D_inqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:587
int MMG5_movbdyrefpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:678
int xt
Definition: libmmgtypes.h:525
int MMG5_chkmanicoll(MMG5_pMesh, int, int, int, int, int, char, char)
Definition: mmg3d2.c:899
int nc
Definition: mmg3d.h:207
void MMG3D_mark_pointsOnReqEdge_fromTetra(MMG5_pMesh mesh)
Definition: isosiz_3d.c:1018
int MMG5_chkBdryTria(MMG5_pMesh mesh)
Definition: hash_3d.c:1398
int MMG3D_movetetrapoints(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: optbdry_3d.c:45
API headers for the mmg3d library.
int16_t MMG5_coquilTravel(MMG5_pMesh, int, int, int *, int *, char *, char *)
Definition: boulep_3d.c:1589
int MMG5_split1(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char metRidTyp)
Definition: split_3d.c:116
MMG mesh structure.
Definition: libmmgtypes.h:509
int MMG3D_split1_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:50
void MMG3D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_3d.c:75
void MMG5_printTetra(MMG5_pMesh mesh, char *fileName)
Definition: tools_3d.c:882
int MMG3D_Free_all_var(va_list argptr)
Definition: variadic_3d.c:242
void MMG3D_Free_topoTables(MMG5_pMesh mesh)
Definition: libmmg3d.c:64
int MMG5_BezierRef(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:352
int MMG3D_packMesh(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: libmmg3d.c:674
int MMG5_chkfemtopo(MMG5_pMesh mesh)
Definition: chkmsh_3d.c:411
int MMG3D_seekIndex(double *distList, double dist, int indexMin, int indexMax)
Definition: PRoctree_3d.c:335
void MMG3D_sizeArbreRec(MMG3D_PROctree_s *q, int nv, int dim, int *, int *)
Definition: PRoctree_3d.c:1072
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:356
int(* MMG5_cavity)(MMG5_pMesh, MMG5_pSol, int, int, int *, int, double)
Definition: mmg3d.h:520
! double n2[3]
Definition: libmmgtypesf.h:275
int(* MMG3D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d.h:512
int MMG5_startedgsurfball(MMG5_pMesh mesh, int nump, int numq, int *list, int ilist)
Definition: tools_3d.c:97
int MMG5_intvolmet(MMG5_pMesh, MMG5_pSol, int, char, double, double *)
int MMG3D_outqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:712
int MMG5_interp4bar_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
API header for the common part of the MMG libraries.
int MMG3D_nmgeom(MMG5_pMesh mesh)
Definition: analys_3d.c:666
int MMG5_split2sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1224
int MMG5_singul(MMG5_pMesh mesh)
Definition: analys_3d.c:420
int MMG5_meancur(MMG5_pMesh mesh, int np, double c[3], int ilist, int *list, double h[3])
void MMG3D_mergeBranchesRec(MMG3D_PROctree_s *, MMG3D_PROctree_s *, int, int, int *)
Definition: PRoctree_3d.c:830
int ne
Definition: libmmgtypes.h:516
int(* MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3d.h:518
int MMG5_cenrad_ani(MMG5_pMesh mesh, double *ct, double *m, double *c, double *rad)
Definition: cenrad_3d.c:130
! double hmax
Definition: libmmgtypesf.h:242
! int np
Definition: libmmgtypesf.h:571
int MMG5_hashFace(MMG5_pMesh, MMG5_Hash *, int, int, int, int)
Definition: hash_3d.c:95
int MMG5_hNew(MMG5_pMesh mesh, MMG5_HGeom *hash, int hsiz, int hmax)
Definition: hash_3d.c:1002
int MMG5_split6(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:4829
int MMG5_movbdyregpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: anisomovpt_3d.c:195
int MMG5_movbdynompt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1126
int MMG3D_hashTria(MMG5_pMesh mesh, MMG5_Hash *)
Definition: hash_3d.c:768
int MMG5_setNmTag(MMG5_pMesh mesh, MMG5_Hash *hash)
Definition: hash_3d.c:746
int MMG3D_setMeshSize_initData(MMG5_pMesh, int, int, int, int, int, int)
Definition: API_functions_3d.c:201
! int PROctree
Definition: libmmgtypesf.h:500
int MMG5_norver(MMG5_pMesh mesh)
Definition: analys_3d.c:494
int MMG5_movtet(MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, double clickSurf, double clickVol, int moveVol, int improveSurf, int improveVolSurf, int improveVol, int maxit, int testmark)
Definition: mmg3d1.c:673
int MMG3D_mark_packedPoints(MMG5_pMesh mesh, int *np, int *nc)
Definition: libmmg3d.c:317
int MMG5_interp4bar_iso(MMG5_pMesh, MMG5_pSol, int, int, double *)
int MMG3D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_3d.c:316
int MMG3D_Free_structures_var(va_list argptr)
Definition: variadic_3d.c:353
! char ori
Definition: libmmgtypesf.h:411
int MMG3D_movePROctree(MMG5_pMesh, MMG3D_pPROctree, int, double *, double *)
Definition: PRoctree_3d.c:223
int MMG5_countelt(MMG5_pMesh mesh, MMG5_pSol sol, double *weightelt, long *npcible)
Definition: quality_3d.c:754
void MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2)
Definition: boulep_3d.c:1250
int MMG3D_Init_mesh_var(va_list argptr)
Definition: variadic_3d.c:148
int MMG5_paktet(MMG5_pMesh mesh)
Definition: hash_3d.c:49
int MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3])
Definition: tools_3d.c:73
int MMG5_bdyMCF(MMG5_pMesh)
int MMG5_hGet(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:928
void MMG5_freeXPrisms(MMG5_pMesh mesh)
Definition: zaldy_3d.c:348
int MMG5_boulernm(MMG5_pMesh mesh, int start, int ip, int *ng, int *nr)
Definition: boulep_3d.c:323
void MMG3D_placeInListPROctree(MMG3D_PROctree_s **, MMG3D_PROctree_s *, int, int)
Definition: PRoctree_3d.c:314
int MMG5_srcbdy(MMG5_pMesh mesh, int start, int ia)
Definition: boulep_3d.c:1191
! double n[3]
Definition: libmmgtypesf.h:256
double(* MMG5_caltri)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: mmg3d.h:509
void MMG3D_printArbreDepth(MMG3D_PROctree_s *q, int depth, int nv, int dim)
Definition: PRoctree_3d.c:1000
int MMG3D_split2sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1114
int16_t MMG5_openCoquilTravel(MMG5_pMesh, int, int, int *, int *, char *, char *)
Definition: boulep_3d.c:1641
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 MMG5_intmet_iso(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_3d.c:131
! int b
Definition: libmmgtypesf.h:286
int MMG3D_mmg3d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d2.c:1428
int MMG3D_update_eltsVertices(MMG5_pMesh mesh)
Definition: libmmg3d.c:524
void MMG5_nsort(int, double *, char *)
Definition: tools_3d.c:41
int MMG5_cavity_iso(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:741
! double n1[3]
Definition: libmmgtypesf.h:275
int MMG3D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:642
void MMG3D_mergeBranches(MMG5_pMesh mesh, MMG3D_PROctree_s *q, int dim, int nv)
Definition: PRoctree_3d.c:859
int MMG5_movbdyregpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: movpt_3d.c:357
int MMG5_bdryIso(MMG5_pMesh)
int MMG3D_intersectRect(double *rectin, double *rectinout)
Definition: PRoctree_3d.c:383
int MMG5_split3(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], char)
Definition: split_3d.c:1792
int MMG3D_normalAdjaTri(MMG5_pMesh, int, char, int, double n[3])
Definition: split_3d.c:462
double MMG5_lenedgCoor_iso(double *, double *, double *, double *)
Compute edge length from edge's coordinates.
Definition: isosiz_3d.c:59
int MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3], double t[3])
Definition: boulep_3d.c:155
! int na
Definition: libmmgtypesf.h:571
void MMG3D_solTruncatureForOptim(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg3d.c:96
int MMG3D_newPt(MMG5_pMesh mesh, double c[3], int16_t tag)
Definition: zaldy_3d.c:39
int MMG5_intridmet(MMG5_pMesh, MMG5_pSol, int, int, double, double *, double *)
int MMG3D_displayQualHisto(int, double, double, double, int, int, int, int his[5], int, int, int)
Definition: quality_3d.c:438
int MMG5_mmg3d3(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
int MMG5_swpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, MMG3D_pPROctree, char)
Definition: swapgen_3d.c:246
int MMG3D_memOption(MMG5_pMesh mesh)
Definition: zaldy_3d.c:235
int MMG3D_split4sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:3650
static const unsigned char MMG5_ifar[6][2]
ifar[i][]: faces sharing the ith edge of the tetra
Definition: mmg3d.h:155
struct MMG3D_PROctree_s * branches
Definition: mmg3d.h:194
! int v[3]
Definition: libmmgtypesf.h:315
static const unsigned char MMG5_iarfinv[4][6]
num of the j^th edge in the i^th face
Definition: mmg3d.h:151
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:350
int MMG3D_addPROctree(MMG5_pMesh mesh, MMG3D_PROctree *q, const int no)
int MMG3D_memOption_memSet(MMG5_pMesh mesh)
Definition: zaldy_3d.c:153
int * v
Definition: mmg3d.h:195
double MMG5_estavglen(MMG5_pMesh)
static void MMG3D_Set_commonFunc()
Definition: mmg3d.h:549
static const unsigned char MMG5_iarf_pr[5][5]
iarf[i]: edges of face i for a prism
Definition: mmg3d.h:164
void MMG3D_initPROctree_s(MMG3D_PROctree_s *q)
Definition: PRoctree_3d.c:46
Definition: libmmgtypes.h:270
int MMG5_movintpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: anisomovpt_3d.c:55
static const unsigned char MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:149
static const unsigned char MMG5_arpt[4][3]
arpt[i]: edges passing through vertex i
Definition: mmg3d.h:159
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:1329
MMG3D_PROctree * MMG3D_pPROctree
Definition: mmg3d.h:210
int MMG5_lapantilap(MMG5_pMesh, double *)
int MMG3D_addPROctreeRec(MMG5_pMesh, MMG3D_PROctree_s *, double *, const int, int)
Definition: PRoctree_3d.c:645
int MMG3D_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1880
int MMG3D_computePrilen(MMG5_pMesh, MMG5_pSol, double *, double *, double *, int *, int *, int *, int *, int *, int *, char, double **, int [9])
Definition: quality_3d.c:201
int MMG5_ppgdisp(MMG5_pMesh, double *)
int MMG3D_memOption_memRepartition(MMG5_pMesh mesh)
Definition: zaldy_3d.c:168
! int s
Definition: libmmgtypesf.h:262
int(* MMG3D_PROctreein)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: mmg3d.h:521
int MMG5_chkswpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, int *, double, char)
Definition: swapgen_3d.c:55
int MMG3D_isCellIncluded(double *cellCenter, double l, double *zoneCenter, double l0)
Definition: PRoctree_3d.c:263
int MMG5_movbdyrefpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:773
int MMG5_movbdyridpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:1375
int MMG3D_localParamReg(MMG5_pMesh, int, int *, int, int *, int, double *, double *, double *)
Definition: tools_3d.c:932
int MMG3D_bdryBuild(MMG5_pMesh)
Definition: libmmg3d.c:222
int MMG5_BezierReg(MMG5_pMesh mesh, int ip0, int ip1, double s, double v[3], double *o, double *no)
Definition: tools_3d.c:684
int MMG3D_pack_sol(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: libmmg3d.c:487
! double hsiz
Definition: libmmgtypesf.h:495
static void MMG5_warnOrientation(MMG5_pMesh mesh)
Definition: mmg3d.h:530
int MMG5_BezierRidge(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to)
Definition: tools_3d.c:150
int MMG3D_gradsizreq_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:1137
int MMG3D_prilen(MMG5_pMesh mesh, MMG5_pSol met, char)
Definition: quality_3d.c:319
int MMG3D_pack_tetraAndAdja(MMG5_pMesh mesh)
Definition: libmmg3d.c:347
void MMG3D_set_reqBoundaries(MMG5_pMesh mesh)
Definition: analys_3d.c:45
void MMG3D_freePROctree_s(MMG5_pMesh, MMG3D_PROctree_s *q, int nv)
Definition: PRoctree_3d.c:111
int(* MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: mmg3d.h:516
void MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh, int piv, char *iface, char *i, int *list, int *ilist, int *it1, int *pradj, int *adj)
Definition: boulep_3d.c:1424
int nbVer
Definition: mmg3d.h:196
int MMG3D_Free_names_var(va_list argptr)
Definition: variadic_3d.c:491
int MMG5_anatet(MMG5_pMesh mesh, MMG5_pSol met, char typchk, int patternMode)
Definition: mmg3d1.c:2578
int MMG5_BezierNom(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:525
int MMG3D_dichoto(MMG5_pMesh mesh, MMG5_pSol met, int k, int *vx)
Definition: mmg3d1.c:88
int MMG5_setdhd(MMG5_pMesh mesh)
Definition: analys_3d.c:283
int MMG3D_setMeshSize_alloc(MMG5_pMesh)
Definition: zaldy_3d.c:254
int MMG5_settag(MMG5_pMesh, int, int, int16_t, int)
Definition: boulep_3d.c:839
Hash table to store geometric edges.
Definition: libmmgtypes.h:478
int MMG5_stiffelt(MMG5_pMesh, int, double *, double *)