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
31extern "C" {
32#endif
33
35#define MMG5_RETURN_AND_FREE(mesh,met,ls,disp,val)do \
36 { \
37 if ( !MMG3D_Free_all(MMG5_ARG_start, \
38 MMG5_ARG_ppMesh,&mesh,MMG5_ARG_ppMet,&met, \
39 MMG5_ARG_ppLs,&ls,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,src ) do \
49 { \
50 int klink,oldnpmax; \
51 assert ( mesh && mesh->point ); \
52 \
53 oldnpmax = mesh->npmax; \
54 MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \
55 "larger point table",law); \
56 \
57 mesh->npnil = mesh->np+1; \
58 for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
59 mesh->point[klink].tmp = klink+1; \
60 \
61 /* solution */ \
62 if ( sol ) { \
63 if ( sol->m ) { \
64 MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
65 "larger solution", \
66 MMG5_SAFE_RECALLOC(mesh->point,mesh->npmax+1,oldnpmax+1,MMG5_Point,,); \
67 mesh->memCur -= (mesh->npmax - oldnpmax)*sizeof(MMG5_Point); \
68 mesh->npmax = oldnpmax; \
69 mesh->np = mesh->npmax-1; \
70 mesh->npnil = 0; \
71 law); \
72 MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \
73 sol->size*(mesh->npmax+1), \
74 double,"larger solution", \
75 MMG5_SAFE_RECALLOC(mesh->point,mesh->npmax+1,oldnpmax+1,MMG5_Point,,); \
76 mesh->memCur -= (mesh->npmax - oldnpmax)*sizeof(MMG5_Point); \
77 mesh->npmax = oldnpmax; \
78 mesh->np = mesh->npmax-1; \
79 mesh->npnil = 0; \
80 law); \
81 } \
82 sol->npmax = mesh->npmax; \
83 } \
84 \
85 /* We try again to add the point */ \
86 ip = MMG3D_newPt(mesh,o,tag,src); \
87 if ( !ip ) { law; } \
88 }while(0)
89
90
93#define MMG3D_TETRA_REALLOC(mesh,jel,wantedGap,law ) do \
94 { \
95 int klink,oldSiz; \
96 \
97 oldSiz = mesh->nemax; \
98 MMG5_TAB_RECALLOC(mesh,mesh->tetra,mesh->nemax,wantedGap,MMG5_Tetra, \
99 "larger tetra table",law); \
100 \
101 mesh->nenil = mesh->ne+1; \
102 for (klink=mesh->nenil; klink<mesh->nemax-1; klink++) \
103 mesh->tetra[klink].v[3] = klink+1; \
104 \
105 if ( mesh->adja ) { \
106 /* adja table */ \
107 MMG5_ADD_MEM(mesh,4*(mesh->nemax-oldSiz)*sizeof(int), \
108 "larger adja table",law); \
109 MMG5_SAFE_RECALLOC(mesh->adja,4*oldSiz+5,4*mesh->nemax+5,int \
110 ,"larger adja table",law); \
111 } \
112 \
113 /* We try again to add the point */ \
114 jel = MMG3D_newElt(mesh); \
115 if ( !jel ) {law;} \
116 }while(0)
117
118/* numerical accuracy */
119#define MMG3D_ALPHAD 20.7846096908265 /* 12*sqrt(3) */
120#define MMG3D_LLONG 2.5
121#define MMG3D_LSHRT 0.3
122#define MMG3D_LOPTL 1.3
123#define MMG3D_LOPTS 0.6
124
125#define MMG3D_SWAP06 0.0288675 /* 0.6/MMG3D_ALPHAD */
126#define MMG3D_SSWAPIMPROVE 1.053
127#define MMG3D_LSWAPIMPROVE 1.1
128#define MMG3D_DET2VOL 0.1666666666666667 /* 1/6 */
129
130#define MMG3D_BADKAL 0.2
131#define MMG3D_MAXKAL 1.
132
133
134#define MMG3D_NPMAX 1000000 //200000
135#define MMG3D_NAMAX 200000 //40000
136#define MMG3D_NTMAX 2000000 //400000
137#define MMG3D_NEMAX 6000000 //1200000
138
139#define MMG3D_SHORTMAX 0x7fff
140
141#define MMG3D_VOLFRAC 1.e-5
142
144static const uint8_t MMG5_inxt3[7] = { 1,2,3,0,1,2,3 };
146static const uint8_t MMG5_iprv3[7] = { 3,0,1,2,3,0,1 };
148static const uint8_t MMG5_idir[4][3] = { {1,2,3}, {0,3,2}, {0,1,3}, {0,2,1} };
149/* \var idirinv[i][j]: num of the jth point in the ith face */
150static const int8_t MMG5_idirinv[4][4] = {{-1,0,1,2},{0,-1,2,1},{0,1,-1,2},{0,2,1,-1}};
152static const int8_t MMG5_iarf[4][3] = { {5,4,3}, {5,1,2}, {4,2,0}, {3,0,1} };
154static const int8_t MMG5_iarfinv[4][6] = { {-1,-1,-1,2,1,0}, {-1,1,2,-1,-1,0},{2,-1,1,-1,0,-1},{1,2,-1,0,-1,-1}};
156static const uint8_t MMG5_iare[6][2] = { {0,1}, {0,2}, {0,3}, {1,2}, {1,3}, {2,3} };
158static const uint8_t MMG5_ifar[6][2] = { {2,3}, {1,3}, {1,2}, {0,3}, {0,2}, {0,1} };
160static const uint8_t MMG5_isar[6][2] = { {2,3}, {3,1}, {1,2}, {0,3}, {2,0}, {0,1} };
162static const uint8_t MMG5_arpt[4][3] = { {0,1,2}, {0,4,3}, {1,3,5}, {2,5,4} };
163
165static const uint8_t MMG5_idir_pr[5][4] = { {0,1,2,0},{3,5,4,3},{1,4,5,2},{0,2,5,3},{0,3,4,1} };
167static const uint8_t MMG5_iarf_pr[5][5] = { {0,1,3,0}, {6,8,7,6}, {3,5,8,4}, {5,1,2,7},{0,4,6,2} };
168
185static const uint8_t MMG5_permedge[12][6] = {
186 {0,1,2,3,4,5}, {1,2,0,5,3,4}, {2,0,1,4,5,3}, {0,4,3,2,1,5},
187 {3,0,4,1,5,2}, {4,3,0,5,2,1}, {1,3,5,0,2,4}, {3,5,1,4,0,2},
188 {5,1,3,2,4,0}, {2,5,4,1,0,3}, {4,2,5,0,3,1}, {5,4,2,3,1,0} };
189
195typedef struct MMG3D_PROctree_s
196{
198 int* v;
199 int nbVer;
200 int depth;
202
207typedef struct
208{
209 int nv;
210 int nc;
214
215
216/* PROctree */
221int MMG3D_isCellIncluded(double* cellCenter, double l, double* zoneCenter, double l0);
222void MMG3D_placeInListDouble(double*, double, int, int);
224int MMG3D_seekIndex (double* distList, double dist, int indexMin, int indexMax);
225int MMG3D_intersectRect(double *rectin, double *rectinout);
226int MMG3D_getListSquareRec(MMG3D_PROctree_s*,double*,double*,
227 MMG3D_PROctree_s***,double*,double*,double, int, int, int*);
229int MMG3D_addPROctreeRec(MMG5_pMesh,MMG3D_PROctree_s*,double*, const int, int);
232int MMG3D_movePROctree(MMG5_pMesh, MMG3D_pPROctree,int, double*, double*);
234void MMG3D_mergeBranches(MMG5_pMesh mesh,MMG3D_PROctree_s* q, int dim, int nv);
235int MMG3D_delPROctreeRec(MMG5_pMesh,MMG3D_PROctree_s*,double*, const int,const int);
237void MMG3D_printArbreDepth(MMG3D_PROctree_s* q, int depth, int nv, int dim);
239void MMG3D_sizeArbreRec(MMG3D_PROctree_s* q, int nv, int dim, int*,int*);
243int64_t MMG3D_getPROctreeCoordinate(MMG3D_pPROctree q, double* ver, int dim);
244
245/* prototypes */
246int MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met,int8_t metRidTyp);
247extern int MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3]);
248
249int MMG3D_Init_mesh_var( va_list argptr );
250int MMG3D_Free_all_var( va_list argptr );
251int MMG3D_Free_structures_var( va_list argptr );
252int MMG3D_Free_names_var( va_list argptr );
254int MMG3D_newPt(MMG5_pMesh mesh,double c[3],int16_t tag,int src);
256int MMG3D_delElt(MMG5_pMesh mesh,int iel);
257void MMG3D_delPt(MMG5_pMesh mesh,int ip);
264extern int MMG5_BezierTgt(double c1[3],double c2[3],double n1[3],double n2[3],double t1[3],double t2[3]);
265extern double MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3]);
266int MMG3D_bezierInt(MMG5_pBezier pb,double uv[2],double o[3],double no[3],double to[3]);
267extern int MMG5_BezierReg(MMG5_pMesh mesh,int ip0, int ip1, double s, double v[3], double *o, double *no);
268extern int MMG5_BezierRef(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no, double *to);
269extern int MMG5_BezierEdge(MMG5_pMesh mesh,int ip0, int ip1, double b0[3], double b1[3],int8_t isrid, double v[3]);
270extern int MMG5_BezierRidge(MMG5_pMesh mesh,int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to);
271extern int MMG5_BezierNom(MMG5_pMesh mesh,int ip0,int ip1,double s,double *o,double *no,double *to);
272int MMG5_norface(MMG5_pMesh mesh ,int k, int iface, double v[3]);
273int MMG3D_findEdge(MMG5_pMesh,MMG5_pTetra,int,int,int,int,int8_t*,int8_t* );
274int MMG5_boulernm (MMG5_pMesh mesh,MMG5_Hash *hash, int start, int ip, int *ng, int *nr);
275int MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3],double t[3]);
276int MMG5_boulenmInt(MMG5_pMesh mesh, int start, int ip, double t[3]);
277int MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int * list);
278int MMG5_boulesurfvolpNom(MMG5_pMesh mesh,int start,int ip,int iface,int *listv,
279 int *ilistv,int *lists,int*ilists,int*refmin,int*refplus,int isnm);
280int MMG5_boulesurfvolp(MMG5_pMesh mesh,int start,int ip,int iface,int *listv,
281 int *ilistv,int *lists,int*ilists, int isnm);
282int MMG5_bouletrid(MMG5_pMesh,int,int,int,int *,int *,int *,int *,int *,int *);
283int MMG5_startedgsurfball(MMG5_pMesh mesh,int nump,int numq,int *list,int ilist);
284int MMG5_srcbdy(MMG5_pMesh mesh,int start,int ia);
285int MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int * list);
286int MMG5_coquilface(MMG5_pMesh mesh, int start,int8_t iface,int,int*,int*,int*,int);
287int MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh,int start,int na,int nb,int8_t iface,
288 int8_t ia,int *list,int *ilist,int *it1,int *it2,
289 int *piv,int *adj,int8_t *hasadja,int *nbdy,int silent);
290void MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh,int piv,int8_t *iface,int8_t *i,
291 int *list,int *ilist,int *it1,int *pradj,
292 int *adj);
293void MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2);
294int16_t MMG5_coquilTravel(MMG5_pMesh,int,int,int*,int*,int8_t*,int8_t*);
295int16_t MMG5_openCoquilTravel(MMG5_pMesh,int,int,int*,int*,int8_t*,int8_t*);
296int MMG5_settag(MMG5_pMesh,int,int,int16_t,int);
297int MMG5_deltag(MMG5_pMesh,int,int,int16_t);
299int MMG5_chkcol_int(MMG5_pMesh,MMG5_pSol,int,int8_t,int8_t,int*,int,int8_t);
300int MMG5_chkcol_bdy(MMG5_pMesh,MMG5_pSol,int,int8_t,int8_t,int*,int,int*,int,int,int,int8_t,int,int8_t);
301int MMG5_chkmanicoll(MMG5_pMesh,int,int,int,int,int,int,int,int8_t,int8_t);
303int MMG5_colver(MMG5_pMesh,MMG5_pSol,int *,int,int8_t,int8_t);
313int MMG5_hashFace(MMG5_pMesh,MMG5_Hash*,int,int,int,int);
314int MMG5_hashGetFace(MMG5_Hash*,int,int,int);
317int MMG5_hashPop(MMG5_Hash *hash,int a,int b);
318int MMG5_hPop(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
319int MMG5_hTag(MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
320int MMG5_hGet(MMG5_HGeom *hash,int a,int b,int *ref,int16_t *tag);
321int MMG5_hEdge(MMG5_pMesh mesh,MMG5_HGeom *hash,int a,int b,int ref,int16_t tag);
322int MMG5_hNew(MMG5_pMesh mesh,MMG5_HGeom *hash,int hsiz,int hmax);
329int MMG5_cntbdypt(MMG5_pMesh mesh, int nump);
330size_t MMG5_memSize(void);
338int MMG5_mmg3dChkmsh(MMG5_pMesh,int,int);
339int MMG3D_setMeshSize_initData(MMG5_pMesh,int,int,int,int,int,int);
341int MMG3D_split1_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
342int MMG5_split1(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t metRidTyp);
343int MMG5_split1b(MMG5_pMesh,MMG5_pSol,int*,int,int,int,int8_t,int8_t);
344int MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met,int iel, int iar, double crit);
345int MMG3D_split2sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
346int MMG5_split2sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
347int MMG3D_split2_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
348int MMG5_split2(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
349int MMG3D_split3_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
350int MMG5_split3(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
351int MMG3D_split3cone_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
352int MMG5_split3cone(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
353int MMG3D_split3op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
354int MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6],int8_t);
355int MMG3D_split4sf_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
356int MMG5_split4sf(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
357int MMG3D_split4op_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
358int MMG5_split4op(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
359int MMG3D_split5_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
360int MMG5_split5(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
361int MMG3D_split6_sim(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6]);
362int MMG5_split6(MMG5_pMesh mesh,MMG5_pSol met,int k,int vx[6],int8_t);
363int MMG5_split4bar(MMG5_pMesh mesh,MMG5_pSol met,int k,int8_t);
364int MMG3D_simbulgept(MMG5_pMesh mesh,MMG5_pSol met, int *list, int ilist,int);
365void MMG5_nsort(int ,double *,int8_t *);
367int MMG3D_rotate_surfacicBall(MMG5_pMesh,int*,int,int,double r[3][3],double*);
372int MMG3D_movbdyregpt_geom(MMG5_pMesh,int *,const int,const int,double[3],double[3],double[3],double[3]);
374 int*, int, int*, int, int ,int);
376 int*, int, int*, int, int ,int);
378 int*, int ,int);
380 int*, int ,int);
382 int*, int ,int);
385 int*, int ,int);
387 int*, int ,int);
389 int*, int ,int);
390int MMG3D_movv_ani(MMG5_pMesh ,MMG5_pSol ,int ,int );
391int MMG3D_movv_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
392int MMG3D_normalAdjaTri(MMG5_pMesh,int,int8_t,int,double n[3]);
393int MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol,int*, int, int, int,int8_t);
394int MMG5_swpbdy(MMG5_pMesh,MMG5_pSol,int*,int,int,MMG3D_pPROctree,int8_t);
395int MMG5_swpgen(MMG5_pMesh,MMG5_pSol,int, int, int*,MMG3D_pPROctree,int8_t);
396int MMG5_chkswpgen(MMG5_pMesh,MMG5_pSol,int,int,int*,int*,double,int8_t);
397int MMG3D_swap23(MMG5_pMesh,MMG5_pSol,int,int8_t,int,int,int,int);
398int MMG5_srcface(MMG5_pMesh mesh,int n0,int n1,int n2);
400double MMG5_orcal_poi(double a[3],double b[3],double c[3],double d[3]);
401int MMG5_countelt(MMG5_pMesh mesh,MMG5_pSol sol, double *weightelt, long *npcible);
402/*function for agressive optimization*/
405int MMG3D_splitItem(MMG5_pMesh , MMG5_pSol ,MMG3D_pPROctree ,int ,int ,double );
408
409int MMG5_trydisp(MMG5_pMesh,double *,short);
414int MMG3D_displayQualHisto(int,double,double,double,int,int,int,
415 int his[5],int,int,int);
416int MMG3D_displayQualHisto_internal(int,double,double,double,int,int,int,
417 int his[5],int,int,int);
418void MMG3D_computeInqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
419 int*,int his[5],int);
421void MMG3D_computeOutqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
422 int*,int his[5],int*,int);
424void MMG3D_computeLESqua(MMG5_pMesh,MMG5_pSol,int*,double*,double*,double*,int*,int*,
425 int*,int his[5],int);
426int MMG3D_computePrilen(MMG5_pMesh,MMG5_pSol,double*,double*,double*,int*,int*,int*,
427 int*,int*,int*,int8_t,double**, int [9] );
428int MMG3D_prilen(MMG5_pMesh mesh,MMG5_pSol met,int8_t);
429int MMG5_intridmet(MMG5_pMesh,MMG5_pSol,int,int,double,double*,double*);
430int MMG5_intregmet(MMG5_pMesh,MMG5_pSol,int,int8_t,double, double*);
431int MMG5_intvolmet(MMG5_pMesh,MMG5_pSol,int,int8_t,double, double*);
432int MMG3D_localParamReg(MMG5_pMesh,int,int*,int,int*,int,double*,double*,double*);
433int MMG3D_localParamNm(MMG5_pMesh,int,int,int,double*,double*,double*);
434int MMG3D_mark_packedPoints(MMG5_pMesh mesh,int *np,int *nc);
445
446/* rmc option */
447double MMG3D_vfrac(MMG5_pMesh ,MMG5_pSol ,int ,int );
449int MMG5_isbr(MMG5_pMesh ,int );
450
451
452/* tools_3d.c */
454
455/* useful functions to debug */
456int MMG3D_indElt(MMG5_pMesh mesh,int kel);
457int MMG3D_indPt(MMG5_pMesh mesh,int kp);
458void MMG5_printTetra(MMG5_pMesh mesh,char* fileName);
461int MMG3D_chk_shellEdgeTag(MMG5_pMesh mesh,int start, int8_t ia,int16_t tag,int ref);
462
463#ifdef USE_SCOTCH
464int MMG5_mmg3dRenumbering(int,MMG5_pMesh,MMG5_pSol,MMG5_pSol,int*);
465#endif
466
467int MMG5_meancur(MMG5_pMesh mesh,int np,double c[3],int ilist,int *list,double h[3]);
468double MMG5_surftri(MMG5_pMesh,int,int);
472
473/* Lagrangian mode functions */
475int MMG5_stiffelt(MMG5_pMesh,int,double*,double*);
479
480/* Delaunay functions*/
481int MMG5_delone(MMG5_pMesh mesh,MMG5_pSol sol,int ip,int *list,int ilist);
482 int MMG5_cavity_iso(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
483 int MMG5_cavity_ani(MMG5_pMesh mesh,MMG5_pSol sol,int iel,int ip,int *list,int lon,double volmin);
484int MMG5_cenrad_iso(MMG5_pMesh mesh,double *ct,double *c,double *rad);
485int MMG5_cenrad_ani(MMG5_pMesh mesh,double *ct,double *m,double *c,double *rad);
486
487/* mmg3d1.c */
488void MMG5_tet2tri(MMG5_pMesh mesh,int k,int8_t ie,MMG5_Tria *ptt);
489int MMG3D_dichoto(MMG5_pMesh mesh,MMG5_pSol met,int k,int *vx);
490int MMG3D_dichoto1b(MMG5_pMesh mesh,MMG5_pSol met,int *list,int ret,int);
491int8_t MMG5_chkedg(MMG5_pMesh mesh,MMG5_Tria *pt,int8_t ori,double,double,int);
493 int8_t,int8_t,int* );
494int MMG5_anatet(MMG5_pMesh mesh,MMG5_pSol met, int8_t typchk, int patternMode) ;
496 double clickSurf,double clickVol,int moveVol,int improveSurf,int improveVolSurf,
497 int improveVol,int maxit,int testmark);
499int MMG5_swptet(MMG5_pMesh mesh,MMG5_pSol met,double,double,MMG3D_pPROctree, int,int);
500
501/* pointers */
502/* init structures */
504/* iso/aniso computations */
506extern double MMG5_lenedgCoor_iso(double*, double*, double*, double*);
507int MMG5_intmet_iso(MMG5_pMesh,MMG5_pSol,int,int8_t,int, double);
508int MMG5_intmet_ani(MMG5_pMesh,MMG5_pSol,int,int8_t,int, double);
509int MMG3D_intmet33_ani(MMG5_pMesh,MMG5_pSol,int,int8_t,int, double);
519double MMG5_meansizreg_iso(MMG5_pMesh,MMG5_pSol,int,int*,int,double,double);
521extern int MMG5_moymet(MMG5_pMesh ,MMG5_pSol ,MMG5_pTetra ,double *);
524
525extern double (*MMG5_lenedg)(MMG5_pMesh ,MMG5_pSol ,int, MMG5_pTetra );
526extern double (*MMG5_lenedgspl)(MMG5_pMesh ,MMG5_pSol ,int, MMG5_pTetra );
527extern double (*MMG5_caltet)(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pTetra pt);
528extern double (*MMG5_caltri)(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pTria ptt);
529extern int (*MMG3D_defsiz)(MMG5_pMesh ,MMG5_pSol );
530extern int (*MMG3D_gradsiz)(MMG5_pMesh ,MMG5_pSol );
531extern int (*MMG3D_gradsizreq)(MMG5_pMesh ,MMG5_pSol );
532extern int (*MMG5_intmet)(MMG5_pMesh,MMG5_pSol,int,int8_t,int, double);
533extern int (*MMG5_interp4bar)(MMG5_pMesh,MMG5_pSol,int,int,double *);
534extern int (*MMG5_movintpt)(MMG5_pMesh ,MMG5_pSol, MMG3D_pPROctree ,int *, int , int );
535extern int (*MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int, int ,int);
536extern int (*MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
537extern int (*MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
538extern int (*MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree ,int*, int, int*, int ,int);
539extern int (*MMG5_cavity)(MMG5_pMesh ,MMG5_pSol ,int ,int ,int *,int ,double);
540extern int (*MMG3D_PROctreein)(MMG5_pMesh ,MMG5_pSol ,MMG3D_pPROctree ,int,double );
541
542/* input */
543int MMG3D_openMesh(int imprim,const char *filename,FILE **inm,int *bin,char*,char*);
544int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin);
545
552static inline
554 if ( mesh->xt ) {
555 if ( mesh->xt != mesh->ne ) {
556 fprintf(stderr,"\n ## Warning: %s: %d tetra on %d reoriented.\n",
557 __func__,mesh->xt,mesh->ne);
558 fprintf(stderr," Your mesh may be non-conform.\n");
559 }
560 else {
561 fprintf(stderr,"\n ## Warning: %s: all tetra reoriented.\n",__func__);
562 }
563 }
564 mesh->xt = 0;
565}
566
571static inline
579#ifdef USE_SCOTCH
580 MMG5_renumbering = MMG5_mmg3dRenumbering;
581#endif
582}
583
584#ifdef __cplusplus
585}
586#endif
587
588#endif
MMG5_pMesh char * filename
Definition: API_functionsf_3d.c:1015
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
const int va_list argptr
Definition: API_functionsf_3d.c:977
int MMG5_grad2metSurfreq(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int npmaster, int npslave)
Definition: anisosiz.c:1448
int MMG5_grad2metSurf(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int np1, int np2)
Definition: anisosiz.c:910
API headers for the mmg3d library.
API header for the common part of the MMG libraries.
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:647
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:627
MMG5_Tetra * MMG5_pTetra
Definition: libmmgtypes.h:392
int MMG5_paktet(MMG5_pMesh mesh)
Definition: hash_3d.c:49
void MMG3D_sizeArbreRec(MMG3D_PROctree_s *q, int nv, int dim, int *, int *)
Definition: PRoctree_3d.c:1075
int MMG5_intregmet(MMG5_pMesh, MMG5_pSol, int, int8_t, double, double *)
int MMG5_hTag(MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:868
int MMG5_lapantilap(MMG5_pMesh, double *)
int MMG5_boulesurfvolpNom(MMG5_pMesh mesh, int start, int ip, int iface, int *listv, int *ilistv, int *lists, int *ilists, int *refmin, int *refplus, int isnm)
Definition: boulep_3d.c:744
int MMG5_hashGetFace(MMG5_Hash *, int, int, int)
Definition: hash_3d.c:143
int MMG5_dichodisp(MMG5_pMesh, double *)
int MMG3D_chk4ridVertices(MMG5_pMesh mesh, MMG5_pTetra pt)
Definition: anisosiz_3d.c:39
int MMG5_split1(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp)
Definition: split_3d.c:116
int MMG3D_bezierInt(MMG5_pBezier pb, double uv[2], double o[3], double no[3], double to[3])
Definition: bezier_3d.c:571
int MMG5_cavity_iso(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:737
int MMG5_srcface(MMG5_pMesh mesh, int n0, int n1, int n2)
void MMG3D_placeInListDouble(double *, double, int, int)
Definition: PRoctree_3d.c:296
static void MMG3D_Set_commonFunc(void)
Definition: mmg3d.h:572
double MMG5_lenedgCoor_iso(double *, double *, double *, double *)
Compute edge length from edge's coordinates.
Definition: isosiz_3d.c:60
int MMG5_moymet(MMG5_pMesh, MMG5_pSol, MMG5_pTetra, double *)
Definition: anisosiz_3d.c:70
int MMG5_cntbdypt(MMG5_pMesh mesh, int nump)
Definition: chkmsh_3d.c:665
int MMG3D_gradsizreq_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:1143
int MMG3D_movbdyregpt_geom(MMG5_pMesh, int *, const int, const int, double[3], double[3], double[3], double[3])
Definition: movpt_3d.c:476
int MMG5_intmet_ani(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: intmet_3d.c:51
int(* MMG3D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3dexterns.c:9
int MMG5_ppgdisp(MMG5_pMesh, double *)
int MMG3D_movnormal_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1512
void MMG3D_set_reqBoundaries(MMG5_pMesh mesh)
Definition: analys_3d.c:45
size_t MMG5_memSize(void)
Definition: tools.c:547
int MMG3D_pack_sol(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: libmmg3d.c:420
static const int8_t MMG5_idirinv[4][4]
Definition: mmg3d.h:150
int MMG3D_simbulgept(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ilist, int)
Definition: split_3d.c:326
int MMG5_movbdynompt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:910
int MMG3D_split4sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:3670
int MMG3D_gradsizreq_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:2038
void MMG3D_mergeBranches(MMG5_pMesh mesh, MMG3D_PROctree_s *q, int dim, int nv)
Definition: PRoctree_3d.c:862
int MMG5_split3(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:1802
int MMG3D_seekIndex(double *distList, double dist, int indexMin, int indexMax)
Definition: PRoctree_3d.c:335
int MMG5_cavity_ani(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:578
void MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh, int piv, int8_t *iface, int8_t *i, int *list, int *ilist, int *it1, int *pradj, int *adj)
Definition: boulep_3d.c:1742
int MMG5_hGeom(MMG5_pMesh mesh)
Definition: hash_3d.c:1061
int MMG3D_hashTria(MMG5_pMesh mesh, MMG5_Hash *)
Definition: hash_3d.c:793
int MMG3D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:641
int MMG3D_swap23(MMG5_pMesh, MMG5_pSol, int, int8_t, int, int, int, int)
Definition: swap_3d.c:597
void MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2)
Definition: boulep_3d.c:1568
void MMG3D_keep_only1Subdomain(MMG5_pMesh mesh, int nsd)
Definition: tools_3d.c:1314
int MMG3D_localParamReg(MMG5_pMesh, int, int *, int, int *, int, double *, double *, double *)
Definition: tools_3d.c:950
int MMG5_velextLS(MMG5_pMesh, MMG5_pSol)
int MMG5_hGet(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:959
int MMG3D_set_metricAtPointsOnReqEdges(MMG5_pMesh, MMG5_pSol, int8_t)
Definition: isosiz_3d.c:544
int(* MMG5_movbdynompt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3dexterns.c:17
int(* MMG5_movbdyrefpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3dexterns.c:16
int MMG3D_update_xtetra(MMG5_pMesh mesh)
Definition: mmg3d2.c:1294
int MMG5_movintptLES_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree, int *, int, int)
Definition: movpt_3d.c:181
int MMG5_intridmet(MMG5_pMesh, MMG5_pSol, int, int, double, double *, double *)
int MMG3D_delPROctreeRec(MMG5_pMesh, MMG3D_PROctree_s *, double *, const int, const int)
Definition: PRoctree_3d.c:894
MMG3D_PROctree * MMG3D_pPROctree
Definition: mmg3d.h:213
int * MMG3D_sizeArbre(MMG3D_PROctree *q, int dim)
int MMG3D_addPROctree(MMG5_pMesh mesh, MMG3D_PROctree *q, const int no)
int MMG5_interp4bar_iso(MMG5_pMesh, MMG5_pSol, int, int, double *)
int MMG5_deltag(MMG5_pMesh, int, int, int16_t)
Definition: boulep_3d.c:1315
static const uint8_t MMG5_isar[6][2]
isar[i][]: vertices of extremities of the edge opposite to the ith edge
Definition: mmg3d.h:160
int MMG5_movbdyregpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: anisomovpt_3d.c:187
int MMG3D_rmc(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d2.c:767
void MMG3D_freePROctree(MMG5_pMesh, MMG3D_PROctree **q)
int MMG5_mmg3d1_pattern(MMG5_pMesh, MMG5_pSol, int *)
Definition: mmg3d1_pattern.c:454
void MMG3D_Free_topoTables(MMG5_pMesh mesh)
Definition: libmmg3d.c:65
int MMG5_swptet(MMG5_pMesh mesh, MMG5_pSol met, double, double, MMG3D_pPROctree, int, int)
Definition: mmg3d1.c:613
int MMG3D_optbdry(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: optbdry_3d.c:250
int MMG3D_PROctreein_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: PRoctree_3d.c:1220
int MMG3D_mark_packedPoints(MMG5_pMesh mesh, int *np, int *nc)
Definition: libmmg3d.c:197
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_swpItem(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, int)
Definition: opttyp_3d.c:326
double MMG5_meansizreg_iso(MMG5_pMesh, MMG5_pSol, int, int *, int, double, double)
Definition: isosiz_3d.c:462
int MMG3D_intersectRect(double *rectin, double *rectinout)
Definition: PRoctree_3d.c:383
double(* MMG5_lenedg)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3dexterns.c:5
void MMG3D_placeInListPROctree(MMG3D_PROctree_s **, MMG3D_PROctree_s *, int, int)
Definition: PRoctree_3d.c:314
int MMG3D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_3d.c:868
int MMG5_interp4bar_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
int MMG3D_delPROctreeVertex(MMG5_pMesh, MMG3D_PROctree_s *q, int no)
Definition: PRoctree_3d.c:798
int MMG5_split1b(MMG5_pMesh, MMG5_pSol, int *, int, int, int, int8_t, int8_t)
Definition: split_3d.c:516
int MMG5_swpmsh(MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int)
Definition: mmg3d1.c:544
int MMG3D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_3d.c:884
int MMG5_norface(MMG5_pMesh mesh, int k, int iface, double v[3])
Definition: tools_3d.c:69
int MMG5_hNew(MMG5_pMesh mesh, MMG5_HGeom *hash, int hsiz, int hmax)
Definition: hash_3d.c:1033
void MMG3D_initPROctree_s(MMG3D_PROctree_s *q)
Definition: PRoctree_3d.c:46
int MMG5_meancur(MMG5_pMesh mesh, int np, double c[3], int ilist, int *list, double h[3])
int MMG5_anatet(MMG5_pMesh mesh, MMG5_pSol met, int8_t typchk, int patternMode)
Definition: mmg3d1.c:2690
void MMG3D_printArbreDepth(MMG3D_PROctree_s *q, int depth, int nv, int dim)
Definition: PRoctree_3d.c:1003
int MMG3D_splsurfedge(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra, MMG5_pxTetra, int8_t, int8_t, int8_t, int *)
Definition: mmg3d1.c:1448
int MMG3D_analys(MMG5_pMesh mesh)
Definition: analys_3d.c:766
int MMG3D_hashPrism(MMG5_pMesh mesh)
Definition: hash_3d.c:297
int MMG3D_dichoto1b(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int)
Definition: mmg3d1.c:240
int MMG5_split6(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:4855
void MMG5_freeXPrisms(MMG5_pMesh mesh)
Definition: zaldy_3d.c:346
int MMG5_directsurfball(MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3])
Definition: tools_3d.c:83
int MMG3D_pack_tetra(MMG5_pMesh mesh)
Definition: libmmg3d.c:332
int(* MMG5_cavity)(MMG5_pMesh, MMG5_pSol, int, int, int *, int, double)
Definition: mmg3dexterns.c:19
int MMG5_boulenm(MMG5_pMesh mesh, int start, int ip, int iface, double n[3], double t[3])
Definition: boulep_3d.c:193
int MMG5_chkcol_int(MMG5_pMesh, MMG5_pSol, int, int8_t, int8_t, int *, int, int8_t)
Definition: colver_3d.c:42
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:675
int MMG5_swpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, MMG3D_pPROctree, int8_t)
Definition: swap_3d.c:462
int MMG3D_split3cone_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:2014
int MMG3D_Free_all_var(va_list argptr)
Definition: variadic_3d.c:271
int MMG5_hashPop(MMG5_Hash *hash, int a, int b)
Definition: hash_3d.c:805
void MMG5_freeXTets(MMG5_pMesh mesh)
Definition: zaldy_3d.c:327
int MMG5_swpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, MMG3D_pPROctree, int8_t)
Definition: swapgen_3d.c:269
int(* MMG3D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3dexterns.c:11
int MMG3D_Free_structures_var(va_list argptr)
Definition: variadic_3d.c:459
int(* MMG5_movintpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: mmg3dexterns.c:14
int MMG5_hPop(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:900
static const uint8_t MMG5_permedge[12][6]
Definition: mmg3d.h:185
void MMG3D_computeOutqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int *, int)
Definition: quality_3d.c:661
void MMG5_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions.c:51
int MMG5_bdyMCF(MMG5_pMesh)
void MMG3D_computeInqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int)
Definition: quality_3d.c:542
int MMG3D_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1899
int MMG3D_splitItem(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, int, double)
Definition: opttyp_3d.c:390
int MMG3D_memOption_memRepartition(MMG5_pMesh mesh)
Definition: zaldy_3d.c:172
int16_t MMG5_coquilTravel(MMG5_pMesh, int, int, int *, int *, int8_t *, int8_t *)
Definition: boulep_3d.c:1913
int MMG3D_chk_shellEdgeTag(MMG5_pMesh mesh, int start, int8_t ia, int16_t tag, int ref)
Definition: chkmsh_3d.c:141
int MMG3D_rotate_surfacicBall(MMG5_pMesh, int *, int, int, double r[3][3], double *)
Definition: movpt_3d.c:345
int MMG3D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_3d.c:121
int MMG3D_gradsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_3d.c:1059
int MMG5_chkmani(MMG5_pMesh mesh)
Definition: mmg3d2.c:1511
int MMG3D_opttyp(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: opttyp_3d.c:467
int MMG5_setdhd(MMG5_pMesh mesh)
Definition: analys_3d.c:291
int MMG5_norver(MMG5_pMesh mesh)
Definition: analys_3d.c:503
int MMG3D_split3op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:2735
int MMG5_interp4bar33_ani(MMG5_pMesh, MMG5_pSol, int, int, double *)
int MMG5_split3op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:2867
int MMG3D_displayQualHisto_internal(int, double, double, double, int, int, int, int his[5], int, int, int)
Definition: quality_3d.c:477
double MMG5_volint(MMG5_pMesh)
double MMG3D_vfrac(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg3d2.c:105
static const int8_t MMG5_iarfinv[4][6]
num of the j^th edge in the i^th face
Definition: mmg3d.h:154
int MMG5_chkswpgen(MMG5_pMesh, MMG5_pSol, int, int, int *, int *, double, int8_t)
Definition: swapgen_3d.c:55
int MMG3D_split3_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1731
int MMG3D_mmg3d2(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg3d2.c:2191
void MMG3D_mark_pointsOnReqEdge_fromTetra(MMG5_pMesh mesh)
Definition: isosiz_3d.c:1024
int MMG5_movbdyrefpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:886
double MMG5_timestepMCF(MMG5_pMesh, double)
static const uint8_t MMG5_arpt[4][3]
arpt[i]: edges passing through vertex i
Definition: mmg3d.h:162
int MMG5_chkswpbdy(MMG5_pMesh, MMG5_pSol, int *, int, int, int, int8_t)
Definition: swap_3d.c:55
void MMG3D_Free_arrays(MMG5_pMesh *, MMG5_pSol *, MMG5_pSol *, MMG5_pSol *, MMG5_pSol *)
Definition: variadic_3d.c:369
int MMG3D_optlap(MMG5_pMesh, MMG5_pSol)
Definition: optlap_3d.c:44
double(* MMG5_lenedgspl)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3dexterns.c:6
int MMG5_chkfemtopo(MMG5_pMesh mesh)
Definition: chkmsh_3d.c:713
double(* MMG5_caltri)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: mmg3dexterns.c:8
int(* MMG3D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg3dexterns.c:10
int MMG5_chkBdryTria(MMG5_pMesh mesh)
Definition: hash_3d.c:1476
int MMG3D_addPROctreeRec(MMG5_pMesh, MMG3D_PROctree_s *, double *, const int, int)
Definition: PRoctree_3d.c:648
int MMG5_BezierReg(MMG5_pMesh mesh, int ip0, int ip1, double s, double v[3], double *o, double *no)
Definition: tools_3d.c:702
int MMG5_delone(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list, int ilist)
Definition: delaunay_3d.c:140
int MMG5_BezierRidge(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to)
Definition: tools_3d.c:160
int MMG3D_packMesh(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: libmmg3d.c:900
int MMG5_boulernm(MMG5_pMesh mesh, MMG5_Hash *hash, int start, int ip, int *ng, int *nr)
Definition: boulep_3d.c:440
int MMG3D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_3d.c:1254
int MMG5_bdryIso(MMG5_pMesh)
int MMG5_bouletrid(MMG5_pMesh, int, int, int, int *, int *, int *, int *, int *, int *)
Definition: boulep_3d.c:924
int MMG3D_split6_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4786
void MMG5_tet2tri(MMG5_pMesh mesh, int k, int8_t ie, MMG5_Tria *ptt)
Definition: mmg3d1.c:52
int MMG5_trydisp(MMG5_pMesh, double *, short)
int MMG5_coquilface(MMG5_pMesh mesh, int start, int8_t iface, int, int *, int *, int *, int)
Definition: boulep_3d.c:1798
int MMG5_startedgsurfball(MMG5_pMesh mesh, int nump, int numq, int *list, int ilist)
Definition: tools_3d.c:107
int MMG3D_initPROctree(MMG5_pMesh, MMG3D_pPROctree *q, int nv)
Definition: PRoctree_3d.c:63
int MMG5_countelt(MMG5_pMesh mesh, MMG5_pSol sol, double *weightelt, long *npcible)
Definition: quality_3d.c:786
int MMG3D_tetraQual(MMG5_pMesh mesh, MMG5_pSol met, int8_t metRidTyp)
Definition: quality_3d.c:48
int MMG5_boulevolp(MMG5_pMesh mesh, int start, int ip, int *list)
Definition: boulep_3d.c:53
int MMG3D_memOption_memSet(MMG5_pMesh mesh)
Definition: zaldy_3d.c:157
int MMG5_BezierEdge(MMG5_pMesh mesh, int ip0, int ip1, double b0[3], double b1[3], int8_t isrid, double v[3])
Definition: bezier_3d.c:152
int MMG5_chkptonbdy(MMG5_pMesh, int)
Definition: chkmsh_3d.c:603
int MMG3D_PROctreein_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: PRoctree_3d.c:1140
int MMG5_chkcol_bdy(MMG5_pMesh, MMG5_pSol, int, int8_t, int8_t, int *, int, int *, int, int, int, int8_t, int, int8_t)
Definition: colver_3d.c:372
int(* MMG5_movbdyridpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: mmg3dexterns.c:18
int MMG3D_displayQualHisto(int, double, double, double, int, int, int, int his[5], int, int, int)
Definition: quality_3d.c:443
int MMG3D_dichoto(MMG5_pMesh mesh, MMG5_pSol met, int k, int *vx)
Definition: mmg3d1.c:88
double MMG5_surftri(MMG5_pMesh, int, int)
int MMG3D_update_eltsVertices(MMG5_pMesh mesh)
Definition: libmmg3d.c:803
int MMG5_cenrad_iso(MMG5_pMesh mesh, double *ct, double *c, double *rad)
Definition: cenrad_3d.c:45
int MMG3D_pack_points(MMG5_pMesh mesh)
Definition: libmmg3d.c:849
int MMG5_settag(MMG5_pMesh, int, int, int16_t, int)
Definition: boulep_3d.c:1199
int MMG5_split4op(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:4131
int MMG3D_normalAdjaTri(MMG5_pMesh, int, int8_t, int, double n[3])
Definition: split_3d.c:467
void MMG3D_chkmeshedgestags(MMG5_pMesh mesh)
Definition: chkmsh_3d.c:200
int MMG5_split5(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:4548
int8_t MMG5_chkedg(MMG5_pMesh mesh, MMG5_Tria *pt, int8_t ori, double, double, int)
Definition: mmg3d1.c:309
static const int8_t MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:152
double MMG5_caltet33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: quality_3d.c:95
int MMG5_split4bar(MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t)
Definition: split_3d.c:3317
int MMG3D_Free_names_var(va_list argptr)
Definition: variadic_3d.c:557
int MMG3D_openMesh(int imprim, const char *filename, FILE **inm, int *bin, char *, char *)
Definition: inout_3d.c:52
static const uint8_t MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:156
void MMG5_nsort(int, double *, int8_t *)
Definition: tools_3d.c:51
int MMG5_movbdyridpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1390
int MMG5_denoisbdy(MMG5_pMesh)
int MMG5_movbdyregpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: movpt_3d.c:618
int MMG3D_isCellIncluded(double *cellCenter, double l, double *zoneCenter, double l0)
Definition: PRoctree_3d.c:263
int MMG3D_newPt(MMG5_pMesh mesh, double c[3], int16_t tag, int src)
Definition: zaldy_3d.c:39
int MMG5_movbdynompt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1247
int MMG3D_bdryBuild(MMG5_pMesh)
Definition: libmmg3d.c:97
int MMG3D_outqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:744
double MMG5_BezierGeod(double c1[3], double c2[3], double t1[3], double t2[3])
Definition: bezier_3d.c:111
int MMG5_movintpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: anisomovpt_3d.c:55
int MMG3D_intmet33_ani(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: intmet_3d.c:101
int MMG5_colver(MMG5_pMesh, MMG5_pSol, int *, int, int8_t, int8_t)
Definition: colver_3d.c:1080
void MMG5_printTetra(MMG5_pMesh mesh, char *fileName)
Definition: tools_3d.c:900
int MMG3D_newElt(MMG5_pMesh mesh)
Definition: zaldy_3d.c:98
int(* MMG5_movbdyregpt)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int, int)
Definition: mmg3dexterns.c:15
static const uint8_t MMG5_ifar[6][2]
ifar[i][]: faces sharing the ith edge of the tetra
Definition: mmg3d.h:158
int MMG5_setadj(MMG5_pMesh mesh)
Definition: analys_3d.c:96
int MMG3D_localParamNm(MMG5_pMesh, int, int, int, double *, double *, double *)
Definition: tools_3d.c:1070
static const uint8_t MMG5_iprv3[7]
previous vertex of tetra: {3,0,1,2,3,0,1}
Definition: mmg3d.h:146
int MMG5_bdryUpdate(MMG5_pMesh)
Definition: hash_3d.c:2066
int MMG3D_split4op_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4010
int MMG5_split2sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:1229
static const uint8_t MMG5_iarf_pr[5][5]
iarf[i]: edges of face i for a prism
Definition: mmg3d.h:167
int MMG5_boulenmInt(MMG5_pMesh mesh, int start, int ip, double t[3])
Definition: boulep_3d.c:333
int MMG5_splitedg(MMG5_pMesh mesh, MMG5_pSol met, int iel, int iar, double crit)
Definition: split_3d.c:5285
int MMG5_movbdyrefpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: movpt_3d.c:1223
int MMG3D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_3d.c:314
void MMG3D_mergeBranchesRec(MMG3D_PROctree_s *, MMG3D_PROctree_s *, int, int, int *)
Definition: PRoctree_3d.c:833
int MMG5_movintpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: movpt_3d.c:55
int MMG3D_getListSquareRec(MMG3D_PROctree_s *, double *, double *, MMG3D_PROctree_s ***, double *, double *, double, int, int, int *)
Definition: PRoctree_3d.c:441
int MMG5_setNmTag(MMG5_pMesh mesh, MMG5_Hash *hash)
Definition: hash_3d.c:771
int MMG5_chkVertexConnectedDomains(MMG5_pMesh mesh)
Definition: analys_3d.c:359
int(* MMG3D_PROctreein)(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int, double)
Definition: mmg3dexterns.c:20
int MMG3D_findEdge(MMG5_pMesh, MMG5_pTetra, int, int, int, int, int8_t *, int8_t *)
Definition: boulep_3d.c:110
double(* MMG5_caltet)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: mmg3dexterns.c:7
static const uint8_t MMG5_idir_pr[5][4]
idir[i]: vertices of face i for a prism
Definition: mmg3d.h:165
int MMG5_saveDisp(MMG5_pMesh, MMG5_pSol)
Definition: mmg3d3.c:609
int MMG3D_split1_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:50
int MMG5_mmg3dChkmsh(MMG5_pMesh, int, int)
Definition: chkmsh_3d.c:410
int MMG5_BezierNom(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:535
int MMG5_mmg3d1_delone(MMG5_pMesh, MMG5_pSol, int *)
Definition: mmg3d1_delone.c:1318
int MMG3D_split5_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:4457
int64_t MMG3D_getPROctreeCoordinate(MMG3D_pPROctree q, double *ver, int dim)
Definition: PRoctree_3d.c:181
int MMG5_bdryPerm(MMG5_pMesh)
Definition: hash_3d.c:2156
int MMG3D_Init_mesh_var(va_list argptr)
Definition: variadic_3d.c:177
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:583
int MMG3D_movv_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1622
int MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh, int start, int na, int nb, int8_t iface, int8_t ia, int *list, int *ilist, int *it1, int *it2, int *piv, int *adj, int8_t *hasadja, int *nbdy, int silent)
Definition: boulep_3d.c:1641
double MMG5_orcal_poi(double a[3], double b[3], double c[3], double d[3])
static const uint8_t MMG5_inxt3[7]
next vertex of tetra: {1,2,3,0,1,2,3}
Definition: mmg3d.h:144
int MMG5_BezierRef(MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
Definition: tools_3d.c:362
double MMG5_estavglen(MMG5_pMesh)
Definition: mmg3d3.c:44
int MMG3D_split2sf_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1119
int MMG3D_loadMesh_opened(MMG5_pMesh mesh, FILE *inm, int bin)
Definition: inout_3d.c:112
int MMG3D_pack_tetraAndAdja(MMG5_pMesh mesh)
Definition: libmmg3d.c:272
int MMG5_movbdyridpt_ani(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int *, int, int)
Definition: anisomovpt_3d.c:934
int MMG5_singul(MMG5_pMesh mesh)
Definition: analys_3d.c:429
int MMG5_split4sf(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:3773
int MMG3D_delPROctree(MMG5_pMesh mesh, MMG3D_pPROctree q, const int no)
Definition: PRoctree_3d.c:975
int MMG3D_getListSquare(MMG5_pMesh, double *, MMG3D_PROctree *, double *, MMG3D_PROctree_s ***)
int MMG3D_nmgeom(MMG5_pMesh mesh)
Definition: analys_3d.c:675
int MMG3D_inqua(MMG5_pMesh mesh, MMG5_pSol met)
Definition: quality_3d.c:613
int MMG5_mmg3dBezierCP(MMG5_pMesh mesh, MMG5_Tria *pt, MMG5_pBezier pb, int8_t ori)
Definition: bezier_3d.c:327
int MMG5_stiffelt(MMG5_pMesh, int, double *, double *)
int MMG3D_setMeshSize_initData(MMG5_pMesh, int, int, int, int, int, int)
Definition: API_functions_3d.c:214
int(* MMG5_interp4bar)(MMG5_pMesh, MMG5_pSol, int, int, double *)
Definition: mmg3dexterns.c:13
int MMG5_cenrad_ani(MMG5_pMesh mesh, double *ct, double *m, double *c, double *rad)
Definition: cenrad_3d.c:142
int MMG5_hEdge(MMG5_pMesh mesh, MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:991
int MMG5_hashFace(MMG5_pMesh, MMG5_Hash *, int, int, int, int)
Definition: hash_3d.c:95
void MMG3D_freePROctree_s(MMG5_pMesh, MMG3D_PROctree_s *q, int nv)
Definition: PRoctree_3d.c:111
int MMG3D_movePROctree(MMG5_pMesh, MMG3D_pPROctree, int, double *, double *)
Definition: PRoctree_3d.c:223
int16_t MMG5_openCoquilTravel(MMG5_pMesh, int, int, int *, int *, int8_t *, int8_t *)
Definition: boulep_3d.c:1965
int MMG5_movbdynomintpt_iso(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int *, int, int)
Definition: movpt_3d.c:1267
int MMG3D_split2_sim(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6])
Definition: split_3d.c:1466
void MMG3D_computeLESqua(MMG5_pMesh, MMG5_pSol, int *, double *, double *, double *, int *, int *, int *, int his[5], int)
Definition: quality_3d.c:359
int MMG5_chkmanicoll(MMG5_pMesh, int, int, int, int, int, int, int, int8_t, int8_t)
Definition: mmg3d2.c:1656
int MMG3D_memOption(MMG5_pMesh mesh)
Definition: zaldy_3d.c:239
void MMG3D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_3d.c:79
int MMG3D_computePrilen(MMG5_pMesh, MMG5_pSol, double *, double *, double *, int *, int *, int *, int *, int *, int *, int8_t, double **, int[9])
Definition: quality_3d.c:206
int MMG5_mmg3d3(MMG5_pMesh, MMG5_pSol, MMG5_pSol, int **)
Definition: mmg3d3.c:651
int MMG3D_setMeshSize_alloc(MMG5_pMesh)
Definition: zaldy_3d.c:256
int MMG3D_prilen(MMG5_pMesh mesh, MMG5_pSol met, int8_t)
Definition: quality_3d.c:324
int MMG3D_movetetrapoints(MMG5_pMesh, MMG5_pSol, MMG3D_pPROctree, int)
Definition: optbdry_3d.c:45
int MMG5_split2(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:1528
static const uint8_t MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:148
int MMG3D_movv_ani(MMG5_pMesh, MMG5_pSol, int, int)
Definition: movpt_3d.c:1397
int MMG3D_pack_prismsAndQuads(MMG5_pMesh mesh)
Definition: libmmg3d.c:376
int MMG3D_pack_pointArray(MMG5_pMesh mesh)
Definition: libmmg3d.c:468
static void MMG5_warnOrientation(MMG5_pMesh mesh)
Definition: mmg3d.h:553
int(* MMG5_intmet)(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: mmg3dexterns.c:12
int MMG5_coquil(MMG5_pMesh mesh, int start, int ia, int *list)
Definition: boulep_3d.c:1371
int MMG5_split3cone(MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t)
Definition: split_3d.c:2195
int MMG5_isbr(MMG5_pMesh, int)
Definition: tools_3d.c:41
int MMG5_bdrySet(MMG5_pMesh)
Definition: hash_3d.c:1781
void MMG3D_chkpointtag(MMG5_pMesh mesh)
Definition: chkmsh_3d.c:294
int MMG5_intmet_iso(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: intmet_3d.c:131
void MMG3D_unset_reqBoundaries(MMG5_pMesh mesh)
Definition: libmmg3d.c:871
void MMG3D_printArbre(MMG3D_PROctree *q)
int MMG5_intvolmet(MMG5_pMesh, MMG5_pSol, int, int8_t, double, double *)
int MMG5_srcbdy(MMG5_pMesh mesh, int start, int ia)
Definition: boulep_3d.c:1509
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgexterns.c:27
int(* MMG5_bezierCP)(MMG5_pMesh, MMG5_Tria *, MMG5_pBezier, int8_t)
Definition: mmgexterns.c:28
int(* MMG5_indPt)(MMG5_pMesh mesh, int kp)
Definition: mmgexterns.c:31
int(* MMG5_grad2metreq_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:33
int(* MMG5_indElt)(MMG5_pMesh mesh, int kel)
Definition: mmgexterns.c:30
int(* MMG5_grad2met_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:32
Definition: mmg3d.h:196
struct MMG3D_PROctree_s * branches
Definition: mmg3d.h:197
int depth
Definition: mmg3d.h:200
int * v
Definition: mmg3d.h:198
int nbVer
Definition: mmg3d.h:199
Definition: mmg3d.h:208
int nv
Definition: mmg3d.h:209
MMG3D_PROctree_s * q0
Definition: mmg3d.h:211
int nc
Definition: mmg3d.h:210
Definition: mmgcommon.h:554
Hash table to store geometric edges.
Definition: libmmgtypes.h:544
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:565
MMG mesh structure.
Definition: libmmgtypes.h:575
int xt
Definition: libmmgtypes.h:591
int ne
Definition: libmmgtypes.h:582
Definition: libmmgtypes.h:633
Definition: libmmgtypes.h:381
Definition: libmmgtypes.h:312
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:398