Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
libmmg2d_private.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#ifndef LIBMMG2D_PRIVATE_H
24#define LIBMMG2D_PRIVATE_H
25
26#include <assert.h>
27#include <stdlib.h>
28#include <stdio.h>
29#include <limits.h>
30#include <math.h>
31#include <string.h>
32#include <signal.h>
33#include <ctype.h>
34#include <float.h>
35
36
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
43/* constantes */
44
45#define M_MAX(a,b) (((a) > (b)) ? (a) : (b))
46#define M_MIN(a,b) (((a) < (b)) ? (a) : (b))
47
48#define M_LAMBDA 0.34
49#define M_MU 0.33
50
51#define MMG2D_EPSD 1.e-10 //e-20??
52#define MMG2D_EPSA 1.e-12
53
54#define MMG2D_PRECI 1.
55#define MMG2D_SIZE 0.75
56#define MMG2D_ALPHA 0.28867513459
57#define MMG2D_ALPHAD 3.464101615137755 /* 6.0 / sqrt(3.0) */
58#define MMG2D_BADKAL 0.2
59#define MMG2D_NULKAL 1.e-6
60#define MMG2D_ANGCORN -1.e-6
61#define MMG2D_SHORTMAX 0x7fff
62
63#define MMG2D_LLONG 2.0
64#define MMG2D_LSHRT 0.3
65#define MMG2D_LOPTL 1.4
66#define MMG2D_LOPTS 0.71
67
68#define MMG2D_NPMAX 50000
69#define MMG2D_NEDMAX 100000
70#define MMG2D_NEMAX 100000
71
73static const uint8_t MMG2D_idir_q[4][2] = { {0,1},{0,3},{1,2},{2,3} };
74
76#define MMG2D_RETURN_AND_FREE(mesh,met,ls,disp,val)do \
77 { \
78 if ( !MMG2D_Free_all(MMG5_ARG_start, \
79 MMG5_ARG_ppMesh,&mesh,MMG5_ARG_ppMet,&met, \
80 MMG5_ARG_ppLs,&ls,MMG5_ARG_ppDisp,&disp, \
81 MMG5_ARG_end) ) { \
82 return MMG5_LOWFAILURE; \
83 } \
84 return val; \
85 }while(0)
86
93static inline
94void MMG2D_excfun(int sigid) {
95 fprintf(stdout,"\n Unexpected error:"); fflush(stdout);
96 switch(sigid) {
97 case SIGABRT:
98 fprintf(stdout," Abnormal stop\n"); break;
99 case SIGFPE:
100 fprintf(stdout," Floating-point exception\n"); break;
101 case SIGILL:
102 fprintf(stdout," Illegal instruction\n"); break;
103 case SIGSEGV:
104 fprintf(stdout," Segmentation fault\n"); break;
105 case SIGTERM:
106 case SIGINT:
107 fprintf(stdout," Program killed\n"); break;
108 }
109 exit(EXIT_FAILURE);
110}
111
112static const int MMG2D_iare[3][2] = {{1,2},{2,0},{0,1}};
113static const unsigned int MMG2D_idir[5] = {0,1,2,0,1};
114
117#define MMG2D_POINT_REALLOC(mesh,sol,ip,wantedGap,law,o,tag ) do \
118 { \
119 MMG5_int klink; \
120 \
121 assert ( mesh && mesh->point ); \
122 MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \
123 "larger point table",law); \
124 \
125 mesh->npnil = mesh->np+1; \
126 for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
127 mesh->point[klink].tmp = klink+1; \
128 \
129 /* solution */ \
130 if ( sol ) { \
131 if ( sol->m ) { \
132 MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
133 "larger solution",law); \
134 MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \
135 sol->size*(mesh->npmax+1), \
136 double,"larger solution",law); \
137 } \
138 sol->npmax = mesh->npmax; \
139 } \
140 \
141 /* We try again to add the point */ \
142 ip = MMG2D_newPt(mesh,o,tag); \
143 if ( !ip ) {law;} \
144 }while(0)
145
148#define MMG2D_TRIA_REALLOC(mesh,jel,wantedGap,law ) do \
149 { \
150 MMG5_int klink,oldSiz; \
151 \
152 oldSiz = mesh->ntmax; \
153 \
154 int max_factor; \
155 if ( mesh->nquad ) { \
156 /* If mesh contains quads, we need to compute 4*tet_quad to hash quads when
157 * packing the mesh so we can't create a mesh larger than INT32_MAX/4 */ \
158 max_factor = 4; \
159 } \
160 else { \
161 /* With only tria, maximal number of tetra is INT32_MAX/3 */ \
162 max_factor = 3; \
163 } \
164 MMG5_CHK_INT32_OVERFLOW(wantedGap,oldSiz,max_factor,max_factor+2,law);\
165 \
166 MMG5_TAB_RECALLOC(mesh,mesh->tria,mesh->ntmax,wantedGap,MMG5_Tria, \
167 "larger tria table",law); \
168 \
169 mesh->nenil = mesh->nt+1; \
170 for (klink=mesh->nenil; klink<mesh->ntmax-1; klink++) \
171 mesh->tria[klink].v[2] = klink+1; \
172 \
173 if ( mesh->adja ) { \
174 /* adja table */ \
175 MMG5_ADD_MEM(mesh,3*(mesh->ntmax-oldSiz)*sizeof(MMG5_int), \
176 "larger adja table",law); \
177 MMG5_SAFE_RECALLOC(mesh->adja,3*oldSiz+5,3*mesh->ntmax+5,MMG5_int \
178 ,"larger adja table",law); \
179 } \
180 \
181 /* We try again to add the point */ \
182 jel = MMG2D_newElt(mesh); \
183 if ( !jel ) {law;} \
184 }while(0)
185
186/* Prototypes */
187/*zaldy*/
188MMG5_int MMG2D_newPt(MMG5_pMesh mesh,double c[2],int16_t tag);
189void MMG2D_delPt(MMG5_pMesh mesh,MMG5_int ip) ;
190void MMG5_delEdge(MMG5_pMesh mesh,MMG5_int iel);
192int MMG2D_delElt(MMG5_pMesh mesh,MMG5_int iel);
194size_t MMG5_memSize(void);
197
201
202int MMG2D_Init_mesh_var( va_list argptr );
203int MMG2D_Free_all_var( va_list argptr );
204int MMG2D_Free_structures_var( va_list argptr );
205int MMG2D_Free_names_var( va_list argptr );
206
209int MMG2D_mmg2d9(MMG5_pMesh ,MMG5_pSol ,MMG5_pSol,MMG5_int** );
210int MMG2D_swapdelone(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t ,double ,MMG5_int *);
211int MMG5_mmg2dChkmsh(MMG5_pMesh , int, MMG5_int );
213int MMG2D_boulep(MMG5_pMesh , MMG5_int , int , MMG5_int * );
215
216int MMG2D_coorbary(MMG5_pMesh ,MMG5_pTria ,double c[2],double* ,double* ,double* );
217MMG5_int MMG2D_isInTriangle(MMG5_pMesh ,MMG5_int,double c[2]);
219int MMG2D_cutEdgeTriangle(MMG5_pMesh ,MMG5_int ,MMG5_int ,MMG5_int );
220MMG5_int MMG2D_findTria(MMG5_pMesh ,MMG5_int );
221int MMG2D_locateEdge(MMG5_pMesh ,MMG5_int ,MMG5_int ,MMG5_int* ,MMG5_int* ) ;
224MMG5_int MMG2D_findtrianglestate(MMG5_pMesh ,MMG5_int ,MMG5_int ,MMG5_int ,MMG5_int ,MMG5_int ,MMG5_int );
227
228int MMG2D_cavity(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int *);
229int MMG2D_delone(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int *,int );
230int MMG2D_cenrad_iso(MMG5_pMesh ,double *,double *,double *);
231
232/* Adds Charles */
233double MMG2D_caltri_iso_3pt(double *a,double *b,double *c);
237int MMG2D_split1_sim(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
238int MMG2D_split2_sim(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
239int MMG2D_split3_sim(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
240int MMG2D_split1(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
241int MMG2D_split2(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
242int MMG2D_split3(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int vx[3]);
243int MMG2D_splitbar(MMG5_pMesh ,MMG5_int ,MMG5_int );
246int MMG2D_setadj(MMG5_pMesh,int8_t );
247int MMG2D_singul(MMG5_pMesh,MMG5_int );
249int MMG2D_norver(MMG5_pMesh,MMG5_int );
252int MMG2D_boulen(MMG5_pMesh , MMG5_int ,int8_t ,MMG5_int *,MMG5_int *,double *);
254int MMG2D_anatri(MMG5_pMesh ,MMG5_pSol ,int8_t );
258int MMG2D_defmetbdy_2d(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t );
259int MMG2D_defaultmet_2d(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t );
260MMG5_int MMG2D_grad2met_ani(MMG5_pMesh ,MMG5_pSol ,MMG5_pTria,MMG5_int,MMG5_int);
264MMG5_int MMG2D_anaelt(MMG5_pMesh ,MMG5_pSol ,int );
265MMG5_int MMG2D_colelt(MMG5_pMesh ,MMG5_pSol ,int );
266MMG5_int MMG2D_swpmsh(MMG5_pMesh ,MMG5_pSol ,int );
267double MMG2D_lencurv_iso(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int );
268double MMG2D_lencurv_ani(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int );
269int MMG2D_chkedg(MMG5_pMesh ,MMG5_int );
270int MMG2D_bezierCurv(MMG5_pMesh ,MMG5_int ,int8_t ,double ,double *,double *);
271int MMG2D_dichoto(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,MMG5_int *);
273int MMG2D_chkcol(MMG5_pMesh,MMG5_pSol,MMG5_int,int8_t,MMG5_int *,int8_t);
274int MMG2D_colver(MMG5_pMesh,int,MMG5_int*);
275int MMG2D_colver3(MMG5_pMesh,MMG5_int*);
277int MMG2D_boulet(MMG5_pMesh,MMG5_int,int8_t,MMG5_int*);
278int MMG2D_bouleendp(MMG5_pMesh,MMG5_int,int8_t,MMG5_int*,MMG5_int*,MMG5_int*);
279int MMG2D_savemesh_db(MMG5_pMesh ,char* ,int8_t );
280int MMG2D_savemet_db(MMG5_pMesh ,MMG5_pSol ,char* ,int8_t );
281int MMG2D_chkswp(MMG5_pMesh , MMG5_pSol ,MMG5_int ,int8_t ,int8_t );
282int MMG2D_swapar(MMG5_pMesh ,MMG5_int ,int8_t );
283int MMG5_interpmet22(MMG5_pMesh ,double *,double *,double ,double *);
284int MMG2D_intmet_iso(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t ,MMG5_int ,double );
285int MMG2D_intmet_ani(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t ,MMG5_int ,double );
288MMG5_int MMG2D_movtri(MMG5_pMesh ,MMG5_pSol ,int ,int8_t );
289MMG5_int MMG2D_chkspl(MMG5_pMesh ,MMG5_pSol ,MMG5_int ,int8_t );
290int MMG2D_split1b(MMG5_pMesh ,MMG5_int ,int8_t ,MMG5_int );
291int MMG2D_movedgpt(MMG5_pMesh ,MMG5_pSol ,int ,MMG5_int *,int8_t );
292int MMG2D_movintpt(MMG5_pMesh ,MMG5_pSol ,int ,MMG5_int *,int8_t );
293int MMG2D_movintpt_ani(MMG5_pMesh ,MMG5_pSol ,int ,MMG5_int *,int8_t );
294int MMG2D_savenor_db(MMG5_pMesh ,char*,int8_t );
295int MMG2D_savedisp_db(MMG5_pMesh mesh,MMG5_pSol ,char*,int8_t );
297
298/* tools */
300
301/* useful functions to debug */
302MMG5_int MMG2D_indElt(MMG5_pMesh mesh,MMG5_int kel);
303MMG5_int MMG2D_indPt(MMG5_pMesh mesh,MMG5_int kp);
304
305/* Management of local parameters */
307
308/* functions pointers */
311double long_ani(double *ca,double *cb,double *ma,double *mb);
312double long_iso(double *ca,double *cb,double *ma,double *mb);
315int interp_ani(double *,double *,double * ,double );
316int interp_iso(double *,double *,double * ,double );
321
322#ifdef __cplusplus
323}
324#endif
325
326#endif
MMG5_pMesh MMG5_pSol * sol
MMG5_pMesh * mesh
const int va_list argptr
void MMG5_delEdge(MMG5_pMesh mesh, MMG5_int iel)
Definition: zaldy_2d.c:70
MMG5_int MMG2D_isInTriangle(MMG5_pMesh, MMG5_int, double c[2])
Definition: locate_2d.c:69
int MMG2D_mmg2d1n(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:819
int MMG2D_grad2metreq_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, MMG5_int, MMG5_int)
Definition: anisosiz_2d.c:600
int MMG2D_bezierCurv(MMG5_pMesh, MMG5_int, int8_t, double, double *, double *)
Definition: bezier_2d.c:185
int MMG2D_setMeshSize_alloc(MMG5_pMesh)
Definition: zaldy_2d.c:252
int MMG2D_cenrad_iso(MMG5_pMesh, double *, double *, double *)
Definition: cenrad_2d.c:42
int MMG2D_memOption(MMG5_pMesh mesh)
Definition: zaldy_2d.c:233
double MMG2D_quickcal(MMG5_pMesh, MMG5_pTria)
Definition: quality_2d.c:46
size_t MMG5_memSize(void)
Definition: tools.c:852
int MMG2D_dichoto(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int *)
Definition: mmg2d1.c:360
double MMG2D_lencurv_ani(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int)
Definition: length_2d.c:82
int MMG2D_movintpt(MMG5_pMesh, MMG5_pSol, int, MMG5_int *, int8_t)
Definition: movpt_2d.c:213
MMG5_int MMG2D_grad2met_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, MMG5_int, MMG5_int)
Definition: anisosiz_2d.c:537
MMG5_int MMG2D_colelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:437
MMG5_int MMG2D_indPt(MMG5_pMesh mesh, MMG5_int kp)
Definition: tools_2d.c:70
int interp_iso(double *, double *, double *, double)
double MMG2D_caltri_iso_3pt(double *a, double *b, double *c)
Definition: quality_2d.c:68
int MMG2D_split3(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:630
MMG5_int MMG2D_findTria(MMG5_pMesh, MMG5_int)
Definition: locate_2d.c:221
int MMG2D_swapdelone(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, double, MMG5_int *)
Definition: swapar_2d.c:39
int MMG2D_splitbar(MMG5_pMesh, MMG5_int, MMG5_int)
Definition: split_2d.c:721
int MMG2D_boulet(MMG5_pMesh, MMG5_int, int8_t, MMG5_int *)
int MMG2D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_2d.c:303
int lissmet_iso(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_colver2(MMG5_pMesh, MMG5_int *)
Definition: colver_2d.c:421
int MMG2D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_2d.c:133
MMG5_int MMG2D_movtri(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: mmg2d1.c:755
int MMG2D_savemesh_db(MMG5_pMesh, char *, int8_t)
Definition: inout_2d.c:1776
int MMG2D_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
int MMG2D_split2_sim(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:456
int interp_ani(double *, double *, double *, double)
MMG5_int MMG2D_anaelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:111
int MMG2D_delone(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int *, int)
Definition: delone_2d.c:251
int MMG2D_colver(MMG5_pMesh, int, MMG5_int *)
Definition: colver_2d.c:273
int MMG2D_bdryEdge(MMG5_pMesh)
Definition: hash_2d.c:446
int MMG2D_singul(MMG5_pMesh, MMG5_int)
Definition: analys_2d.c:276
int lissmet_ani(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: lissmet_2d.c:47
int MMG2D_split2(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:505
int MMG2D_settagtriangles(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:100
int MMG2D_chkswp(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, int8_t)
Definition: swapar_2d.c:128
int MMG2D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_2d.c:363
int MMG2D_freeLocalPar(MMG5_pMesh)
int MMG2D_chkcol(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int *, int8_t)
Definition: colver_2d.c:42
int MMG2D_assignEdge(MMG5_pMesh)
Definition: hash_2d.c:331
double MMG2D_caltri_ani(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:121
MMG5_int MMG2D_chkspl(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t)
Definition: split_2d.c:51
MMG5_int MMG2D_findtrianglestate(MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int, MMG5_int, MMG5_int, MMG5_int)
Definition: mmg2d2.c:133
int MMG2D_bouleendp(MMG5_pMesh, MMG5_int, int8_t, MMG5_int *, MMG5_int *, MMG5_int *)
Definition: boulep_2d.c:231
int MMG2D_split1b(MMG5_pMesh, MMG5_int, int8_t, MMG5_int)
Definition: split_2d.c:244
int MMG2D_hashQuad(MMG5_pMesh mesh)
Definition: hash_2d.c:150
int MMG2D_doSol_iso(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: solmap_2d.c:97
int MMG2D_split1(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:390
int MMG2D_gradsizreq_ani(MMG5_pMesh, MMG5_pSol)
int MMG2D_delElt(MMG5_pMesh mesh, MMG5_int iel)
Definition: zaldy_2d.c:105
int MMG2D_norver(MMG5_pMesh, MMG5_int)
Definition: analys_2d.c:410
int MMG2D_savemet_db(MMG5_pMesh, MMG5_pSol, char *, int8_t)
Definition: inout_2d.c:1869
static const unsigned int MMG2D_idir[5]
int MMG2D_prilen(MMG5_pMesh, MMG5_pSol)
Definition: length_2d.c:125
int MMG2D_sum_reqEdgeLengthsAtPoint(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int8_t)
Definition: isosiz_2d.c:52
int MMG2D_movintpt_ani(MMG5_pMesh, MMG5_pSol, int, MMG5_int *, int8_t)
Definition: anisomovpt_2d.c:38
int MMG2D_cutEdge(MMG5_pMesh, MMG5_pTria, MMG5_pPoint, MMG5_pPoint)
Definition: locate_2d.c:90
int MMG2D_adpcol(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:696
int MMG2D_setadj(MMG5_pMesh, int8_t)
Definition: analys_2d.c:50
static void MMG2D_excfun(int sigid)
int MMG2D_hashTria(MMG5_pMesh)
Definition: hash_2d.c:35
int MMG2D_analys(MMG5_pMesh)
Definition: analys_2d.c:1010
int MMG2D_cutEdgeTriangle(MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int)
Definition: locate_2d.c:129
void MMG2D_delPt(MMG5_pMesh mesh, MMG5_int ip)
Definition: zaldy_2d.c:57
double MMG2D_lencurv_iso(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int)
Definition: length_2d.c:63
int MMG2D_split1_sim(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:345
int MMG2D_coorbary(MMG5_pMesh, MMG5_pTria, double c[2], double *, double *, double *)
Definition: locate_2d.c:37
static const int MMG2D_iare[3][2]
int MMG5_mmg2dChkmsh(MMG5_pMesh, int, MMG5_int)
Definition: chkmsh_2d.c:36
MMG5_int MMG2D_swpmsh(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:514
int MMG2D_boulen(MMG5_pMesh, MMG5_int, int8_t, MMG5_int *, MMG5_int *, double *)
Definition: boulep_2d.c:115
int MMG2D_defmetbdy_2d(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t)
Definition: anisosiz_2d.c:86
int MMG2D_doSol_ani(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: solmap_2d.c:175
int MMG2D_locateEdge(MMG5_pMesh, MMG5_int, MMG5_int, MMG5_int *, MMG5_int *)
Definition: locate_2d.c:329
int MMG2D_boulep(MMG5_pMesh, MMG5_int, int, MMG5_int *)
Definition: boulep_2d.c:36
int MMG2D_mmg2d9(MMG5_pMesh, MMG5_pSol, MMG5_pSol, MMG5_int **)
Definition: mmg2d9.c:459
int MMG2D_set_metricAtPointsOnReqEdges(MMG5_pMesh, MMG5_pSol, int8_t)
Definition: isosiz_2d.c:77
double MMG2D_caltri_iso(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:107
int MMG2D_intmet_ani(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int, double)
Definition: intmet_2d.c:209
int MMG2D_bdryenforcement(MMG5_pMesh, MMG5_pSol)
MMG5_int MMG2D_newPt(MMG5_pMesh mesh, double c[2], int16_t tag)
Definition: zaldy_2d.c:38
int MMG2D_regnor(MMG5_pMesh)
Definition: analys_2d.c:515
int MMG2D_mmg2d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:508
int MMG2D_mmg2d1(MMG5_pMesh, MMG5_pSol)
int MMG2D_baseBdry(MMG5_pMesh mesh)
int MMG2D_swapar(MMG5_pMesh, MMG5_int, int8_t)
Definition: swapar_2d.c:221
int MMG2D_cavity(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int *)
Definition: delone_2d.c:149
double long_ani(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:47
int MMG2D_Free_all_var(va_list argptr)
Definition: variadic_2d.c:259
int MMG2D_velextLS(MMG5_pMesh, MMG5_pSol)
Definition: velextls_2d.c:340
int MMG2D_anatri(MMG5_pMesh, MMG5_pSol, int8_t)
Definition: mmg2d1.c:40
int MMG2D_2dMeshCheck(MMG5_pMesh mesh)
Definition: inout_2d.c:674
int MMG2D_Free_structures_var(va_list argptr)
Definition: variadic_2d.c:368
MMG5_int MMG2D_indElt(MMG5_pMesh mesh, MMG5_int kel)
Definition: tools_2d.c:46
int MMG2D_regver(MMG5_pMesh)
Definition: analys_2d.c:849
int MMG2D_defaultmet_2d(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t)
Definition: anisosiz_2d.c:51
int MMG2D_movedgpt(MMG5_pMesh, MMG5_pSol, int, MMG5_int *, int8_t)
Definition: movpt_2d.c:53
int MMG2D_intmet_iso(MMG5_pMesh, MMG5_pSol, MMG5_int, int8_t, MMG5_int, double)
Definition: intmet_2d.c:38
int MMG2D_savedisp_db(MMG5_pMesh mesh, MMG5_pSol, char *, int8_t)
Definition: inout_2d.c:1984
int MMG2D_outqua(MMG5_pMesh, MMG5_pSol)
Definition: quality_2d.c:183
int MMG5_interpmet22(MMG5_pMesh, double *, double *, double, double *)
Definition: intmet_2d.c:54
int MMG2D_Free_names_var(va_list argptr)
Definition: variadic_2d.c:483
int MMG2D_colver3(MMG5_pMesh, MMG5_int *)
Definition: colver_2d.c:359
double long_iso(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:27
static const uint8_t MMG2D_idir_q[4][2]
idir[i]: vertices of edge i for a quad
int MMG2D_split3_sim(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
Definition: split_2d.c:592
int MMG2D_Init_mesh_var(va_list argptr)
Definition: variadic_2d.c:176
int MMG2D_cuttri(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg2d6.c:48
MMG5_int MMG2D_adpspl(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:640
void MMG2D_keep_only1Subdomain(MMG5_pMesh mesh, int nsd)
Definition: tools_2d.c:92
int MMG2D_pack(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: hash_2d.c:527
MMG5_int MMG2D_newElt(MMG5_pMesh mesh)
Definition: zaldy_2d.c:85
int MMG2D_chkedg(MMG5_pMesh, MMG5_int)
Definition: bezier_2d.c:28
int MMG2D_savenor_db(MMG5_pMesh, char *, int8_t)
Definition: inout_2d.c:1929
int MMG2D_adptri(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:550
int MMG2D_mmg2d6(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg2d6.c:204
MMG mesh structure.
Definition: libmmgtypes.h:605
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:270