mmg2d
mmg2d.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 MMG2D_H
24#define MMG2D_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#include "libmmg2d.h"
37#include "libmmgcommon.h"
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_LONMAX 1024
59#define MMG2D_BADKAL 0.2
60#define MMG2D_NULKAL 1.e-6
61#define MMG2D_ANGCORN -1.e-6
62#define MMG2D_SHORTMAX 0x7fff
63#define MMG2D_LPARMAX 200
64#define MMG2D_VOLFRAC 1.e-5
65
66#define MMG2D_LLONG 2.0
67#define MMG2D_LSHRT 0.3
68#define MMG2D_LOPTL 1.4
69#define MMG2D_LOPTS 0.71
70
71#define MMG2D_NPMAX 50000
72#define MMG2D_NEDMAX 100000
73#define MMG2D_NEMAX 100000
74
76static const uint8_t MMG2D_idir_q[4][2] = { {0,1},{0,3},{1,2},{2,3} };
77
79#define MMG2D_RETURN_AND_FREE(mesh,met,ls,disp,val)do \
80 { \
81 if ( !MMG2D_Free_all(MMG5_ARG_start, \
82 MMG5_ARG_ppMesh,&mesh,MMG5_ARG_ppMet,&met, \
83 MMG5_ARG_ppLs,&ls,MMG5_ARG_ppDisp,&disp, \
84 MMG5_ARG_end) ) { \
85 return MMG5_LOWFAILURE; \
86 } \
87 return val; \
88 }while(0)
89
96static inline
97void MMG2D_excfun(int sigid) {
98 fprintf(stdout,"\n Unexpected error:"); fflush(stdout);
99 switch(sigid) {
100 case SIGABRT:
101 fprintf(stdout," Abnormal stop\n"); break;
102 case SIGFPE:
103 fprintf(stdout," Floating-point exception\n"); break;
104 case SIGILL:
105 fprintf(stdout," Illegal instruction\n"); break;
106 case SIGSEGV:
107 fprintf(stdout," Segmentation fault\n"); break;
108 case SIGTERM:
109 case SIGINT:
110 fprintf(stdout," Program killed\n"); break;
111 }
112 exit(EXIT_FAILURE);
113}
114
115typedef struct squeue {
116 int *stack,cur;
118typedef Queue * pQueue;
119
120typedef struct {
121 int size;
122 int *head;
123 int *link;
124} Bucket;
125typedef Bucket * pBucket;
126
127
128static const int MMG2D_iare[3][2] = {{1,2},{2,0},{0,1}};
129static const int MMG2D_iopp[3][2] = {{1,2},{0,2},{0,1}};
130static const unsigned int MMG2D_idir[5] = {0,1,2,0,1};
131static const unsigned int MMG2D_inxt[5] = {1,2,0,1,2};
132
133
136#define MMG2D_POINT_REALLOC(mesh,sol,ip,wantedGap,law,o,tag ) do \
137 { \
138 int klink; \
139 \
140 assert ( mesh && mesh->point ); \
141 MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \
142 "larger point table",law); \
143 \
144 mesh->npnil = mesh->np+1; \
145 for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \
146 mesh->point[klink].tmp = klink+1; \
147 \
148 /* solution */ \
149 if ( sol ) { \
150 if ( sol->m ) { \
151 MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \
152 "larger solution",law); \
153 MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \
154 sol->size*(mesh->npmax+1), \
155 double,"larger solution",law); \
156 } \
157 sol->npmax = mesh->npmax; \
158 } \
159 \
160 /* We try again to add the point */ \
161 ip = MMG2D_newPt(mesh,o,tag); \
162 if ( !ip ) {law;} \
163 }while(0)
164
167#define MMG2D_TRIA_REALLOC(mesh,jel,wantedGap,law ) do \
168 { \
169 int klink,oldSiz; \
170 \
171 oldSiz = mesh->ntmax; \
172 MMG5_TAB_RECALLOC(mesh,mesh->tria,mesh->ntmax,wantedGap,MMG5_Tria, \
173 "larger tria table",law); \
174 \
175 mesh->nenil = mesh->nt+1; \
176 for (klink=mesh->nenil; klink<mesh->ntmax-1; klink++) \
177 mesh->tria[klink].v[2] = klink+1; \
178 \
179 if ( mesh->adja ) { \
180 /* adja table */ \
181 MMG5_ADD_MEM(mesh,3*(mesh->ntmax-oldSiz)*sizeof(int), \
182 "larger adja table",law); \
183 MMG5_SAFE_RECALLOC(mesh->adja,3*oldSiz+5,3*mesh->ntmax+5,int \
184 ,"larger adja table",law); \
185 } \
186 \
187 /* We try again to add the point */ \
188 jel = MMG2D_newElt(mesh); \
189 if ( !jel ) {law;} \
190 }while(0)
191
192/* Prototypes */
193/*zaldy*/
194int MMG2D_newPt(MMG5_pMesh mesh,double c[2],int16_t tag);
195void MMG2D_delPt(MMG5_pMesh mesh,int ip) ;
196void MMG5_delEdge(MMG5_pMesh mesh,int iel);
198int MMG2D_delElt(MMG5_pMesh mesh,int iel);
199int MMG5_getnElt(MMG5_pMesh mesh,int n);
201size_t MMG5_memSize(void);
204
209//int MMG2D_mmg2d0(MMG5_pMesh ,MMG5_pSol );
211//int MMG2D_split(MMG5_pMesh ,MMG5_pSol ,int ,int ,int,double );
212//int MMG2D_splitbdry(MMG5_pMesh ,MMG5_pSol ,int ,int ,int,double*);
213//int MMG2D_colpoi(MMG5_pMesh ,MMG5_pSol , int ,int ,int ,int ,double );
214//int MMG2D_colpoibdry(MMG5_pMesh ,MMG5_pSol , int ,int ,int ,int ,double );
215
216int MMG2D_Init_mesh_var( va_list argptr );
217int MMG2D_Free_all_var( va_list argptr );
218int MMG2D_Free_structures_var( va_list argptr );
219int MMG2D_Free_names_var( va_list argptr );
220
222
226//int MMG2D_cendel(MMG5_pMesh ,MMG5_pSol ,double ,int );
227int MMG2D_swapdelone(MMG5_pMesh ,MMG5_pSol ,int ,int8_t ,double ,int *);
228int MMG5_mmg2dChkmsh(MMG5_pMesh , int, int );
230int MMG2D_boulep(MMG5_pMesh , int , int , int * );
231//int MMG2D_markBdry(MMG5_pMesh );
233
234int MMG2D_coorbary(MMG5_pMesh ,MMG5_pTria ,double c[2],double* ,double* ,double* );
235int MMG2D_isInTriangle(MMG5_pMesh ,int,double c[2]);
237int MMG2D_cutEdgeTriangle(MMG5_pMesh ,int ,int ,int );
238int MMG2D_findTria(MMG5_pMesh ,int );
239//int MMG2D_findpos(MMG5_pMesh ,MMG5_pTria ,int ,int ,int ,int ,int );
240int MMG2D_locateEdge(MMG5_pMesh ,int ,int ,int* ,int* ) ;
243int MMG2D_findtrianglestate(MMG5_pMesh ,int ,int ,int ,int ,int ,int );
244
245pQueue MMG2D_kiuini(MMG5_pMesh mesh,int nbel,double declic,int base);
247int MMG2D_kiudel(pQueue q,int iel);
248int MMG2D_kiuput(pQueue q,int iel);
250
252
253//int MMG2D_evalgeom(MMG5_pMesh mesh);
254
255int MMG2D_cavity(MMG5_pMesh ,MMG5_pSol ,int ,int *);
256int MMG2D_delone(MMG5_pMesh ,MMG5_pSol ,int ,int *,int );
257int MMG2D_cenrad_iso(MMG5_pMesh ,double *,double *,double *);
258
259/* Adds Charles */
260double MMG2D_voltri(MMG5_pMesh ,int ,int ,int );
261double MMG2D_vfrac(MMG5_pMesh ,MMG5_pSol ,int ,int );
263int MMG2D_ismaniball(MMG5_pMesh , MMG5_pSol , int , int8_t );
272int MMG2D_split1_sim(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
273int MMG2D_split2_sim(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
274int MMG2D_split3_sim(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
275int MMG2D_split1(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
276int MMG2D_split2(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
277int MMG2D_split3(MMG5_pMesh ,MMG5_pSol ,int ,int vx[3]);
278int MMG2D_splitbar(MMG5_pMesh ,int ,int );
282int MMG2D_singul(MMG5_pMesh,int );
284int MMG2D_norver(MMG5_pMesh,int );
286int MMG2D_boulen(MMG5_pMesh , int ,int8_t ,int *,int *,double *);
288int MMG2D_anatri(MMG5_pMesh ,MMG5_pSol ,int8_t );
292int MMG2D_defmetbdy_2d(MMG5_pMesh ,MMG5_pSol ,int ,int8_t );
293int MMG2D_defaultmet_2d(MMG5_pMesh ,MMG5_pSol ,int ,int8_t );
301double MMG2D_lencurv_iso(MMG5_pMesh ,MMG5_pSol ,int ,int );
302double MMG2D_lencurv_ani(MMG5_pMesh ,MMG5_pSol ,int ,int );
303int MMG2D_chkedg(MMG5_pMesh ,int );
304int MMG2D_bezierCurv(MMG5_pMesh ,int ,int8_t ,double ,double *,double *);
305int MMG2D_dichoto(MMG5_pMesh ,MMG5_pSol ,int ,int *);
307int MMG2D_chkcol(MMG5_pMesh,MMG5_pSol,int,int8_t,int *,int8_t);
308int MMG2D_colver(MMG5_pMesh,int,int*);
309int MMG2D_colver3(MMG5_pMesh,int*);
310int MMG2D_colver2(MMG5_pMesh,int*);
311int MMG2D_boulet(MMG5_pMesh,int,int8_t,int*);
312int MMG2D_bouleendp(MMG5_pMesh,int,int8_t,int*,int*);
313int MMG2D_savemesh_db(MMG5_pMesh ,char* ,int8_t );
314int MMG2D_savemet_db(MMG5_pMesh ,MMG5_pSol ,char* ,int8_t );
315int MMG2D_chkswp(MMG5_pMesh , MMG5_pSol ,int ,int8_t ,int8_t );
316int MMG2D_swapar(MMG5_pMesh ,int ,int8_t );
317int MMG5_interpmet22(MMG5_pMesh ,double *,double *,double ,double *);
318int MMG2D_intmet_iso(MMG5_pMesh ,MMG5_pSol ,int ,int8_t ,int ,double );
319int MMG2D_intmet_ani(MMG5_pMesh ,MMG5_pSol ,int ,int8_t ,int ,double );
322int MMG2D_movtri(MMG5_pMesh ,MMG5_pSol ,int ,int8_t );
323int MMG2D_chkspl(MMG5_pMesh ,MMG5_pSol ,int ,int8_t );
324int MMG2D_split1b(MMG5_pMesh ,int ,int8_t ,int );
325int MMG2D_movedgpt(MMG5_pMesh ,MMG5_pSol ,int ,int *,int8_t );
326int MMG2D_movintpt(MMG5_pMesh ,MMG5_pSol ,int ,int *,int8_t );
327int MMG2D_movintpt_ani(MMG5_pMesh ,MMG5_pSol ,int ,int *,int8_t );
330int MMG2D_savenor_db(MMG5_pMesh ,char*,int8_t );
331int MMG2D_savedisp_db(MMG5_pMesh mesh,MMG5_pSol ,char*,int8_t );
333
334/* tools */
336
337/* useful functions to debug */
338int MMG2D_indElt(MMG5_pMesh mesh,int kel);
339int MMG2D_indPt(MMG5_pMesh mesh,int kp);
340
341/* Management of local parameters */
343
344/* functions pointers */
345double long_ani(double *ca,double *cb,double *ma,double *mb);
346double long_iso(double *ca,double *cb,double *ma,double *mb);
349int optlen_ani(MMG5_pMesh mesh,MMG5_pSol sol,double declic,int base);
350int optlen_iso(MMG5_pMesh mesh,MMG5_pSol sol,double declic,int base);
351int optlen_iso_bar(MMG5_pMesh mesh,MMG5_pSol sol,double declic,int base);
352int interp_ani(double *,double *,double * ,double );
353int interp_iso(double *,double *,double * ,double );
358
359extern double (*MMG2D_lencurv)(MMG5_pMesh ,MMG5_pSol ,int ,int );
360extern double (*MMG2D_caltri)(MMG5_pMesh ,MMG5_pSol ,MMG5_pTria );
361extern int (*MMG2D_optlen)(MMG5_pMesh ,MMG5_pSol ,double ,int );
362extern int (*MMG2D_intmet)(MMG5_pMesh ,MMG5_pSol ,int ,int8_t ,int ,double );
363extern int (*MMG2D_gradsiz)(MMG5_pMesh ,MMG5_pSol );
364extern int (*MMG2D_gradsizreq)(MMG5_pMesh ,MMG5_pSol );
365extern int (*MMG2D_defsiz)(MMG5_pMesh ,MMG5_pSol );
366
367/* init structures */
369
374static inline
379
380 return;
381}
382
383#ifdef __cplusplus
384}
385#endif
386
387#endif
MMG5_pMesh MMG5_pSol * sol
Definition: API_functionsf_2d.c:63
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
const int va_list argptr
Definition: API_functionsf_2d.c:728
API headers for the mmg2d library.
API header for the common part of the MMG libraries.
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:325
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:647
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:627
int MMG2D_chkmanimesh(MMG5_pMesh)
Definition: mmg2d6.c:478
int optlen_iso(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
Bucket * pBucket
Definition: mmg2d.h:125
int MMG2D_mmg2d1n(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:808
int MMG2D_split3_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:587
int MMG2D_setadj(MMG5_pMesh)
Definition: analys_2d.c:48
int MMG2D_cuttri_ls(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg2d6.c:796
int MMG2D_split2(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:500
int MMG2D_setMeshSize_alloc(MMG5_pMesh)
Definition: zaldy_2d.c:237
int MMG2D_cenrad_iso(MMG5_pMesh, double *, double *, double *)
Definition: cenrad_2d.c:42
int MMG2D_movintpt_ani(MMG5_pMesh, MMG5_pSol, int, int *, int8_t)
Definition: anisomovpt_2d.c:37
int MMG2D_memOption(MMG5_pMesh mesh)
Definition: zaldy_2d.c:218
pQueue MMG2D_kiuini(MMG5_pMesh mesh, int nbel, double declic, int base)
void MMG2D_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions_2d.c:80
int MMG2D_movedgpt(MMG5_pMesh, MMG5_pSol, int, int *, int8_t)
Definition: movpt_2d.c:52
double MMG2D_quickcal(MMG5_pMesh, MMG5_pTria)
Definition: quality_2d.c:45
size_t MMG5_memSize(void)
Definition: tools.c:547
int MMG2D_kiupop(pQueue q)
int MMG2D_delone(MMG5_pMesh, MMG5_pSol, int, int *, int)
Definition: delone_2d.c:247
int MMG2D_locateEdge(MMG5_pMesh, int, int, int *, int *)
Definition: locate_2d.c:323
int MMG2D_colver2(MMG5_pMesh, int *)
Definition: colver_2d.c:418
int MMG2D_findtrianglestate(MMG5_pMesh, int, int, int, int, int, int)
Definition: mmg2d2.c:132
int interp_iso(double *, double *, double *, double)
int MMG5_mmg2dChkmsh(MMG5_pMesh, int, int)
Definition: chkmsh_2d.c:34
static const int MMG2D_iopp[3][2]
Definition: mmg2d.h:129
int MMG2D_bezierCurv(MMG5_pMesh, int, int8_t, double, double *, double *)
Definition: bezier_2d.c:118
int MMG2D_scaleMesh(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: scalem_2d.c:48
int MMG2D_intmet_ani(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: intmet_2d.c:209
int(* MMG2D_optlen)(MMG5_pMesh, MMG5_pSol, double, int)
double MMG2D_vfrac(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg2d6.c:69
int MMG2D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_2d.c:288
int MMG2D_colelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:435
int MMG2D_parsop(MMG5_pMesh, MMG5_pSol)
Definition: libmmg2d_tools.c:84
int lissmet_iso(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_2d.c:130
void MMG5_delEdge(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:70
int MMG2D_defaultmet_2d(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: anisosiz_2d.c:50
int MMG2D_savemesh_db(MMG5_pMesh, char *, int8_t)
Definition: inout_2d.c:1686
double(* MMG2D_lencurv)(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg2dexterns.c:6
int MMG2D_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
int interp_ani(double *, double *, double *, double)
void MMG2D_solTruncatureForOptim(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg2d.c:56
int MMG2D_unscaleMesh(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
int MMG2D_boulep(MMG5_pMesh, int, int, int *)
Definition: boulep_2d.c:34
int MMG2D_bdryEdge(MMG5_pMesh)
Definition: hash_2d.c:433
int MMG2D_chkmsh(MMG5_pMesh)
Definition: chkmsh_2d.c:204
int lissmet_ani(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: lissmet_2d.c:47
int MMG2D_settagtriangles(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:99
int MMG2D_splitbar(MMG5_pMesh, int, int)
Definition: split_2d.c:716
double MMG2D_lencurv_ani(MMG5_pMesh, MMG5_pSol, int, int)
Definition: length_2d.c:81
int MMG2D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_2d.c:360
int MMG2D_colver(MMG5_pMesh, int, int *)
Definition: colver_2d.c:270
int MMG2D_freeLocalPar(MMG5_pMesh)
Definition: libmmg2d_tools.c:198
int MMG2D_assignEdge(MMG5_pMesh)
Definition: hash_2d.c:333
double MMG2D_caltri_ani(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:95
void MMG2D_kiufree(pQueue q)
int MMG2D_kiuput(pQueue q, int iel)
int MMG2D_hashQuad(MMG5_pMesh mesh)
Definition: hash_2d.c:151
Queue * pQueue
Definition: mmg2d.h:118
int MMG2D_gradsizreq_ani(MMG5_pMesh, MMG5_pSol)
int MMG2D_savemet_db(MMG5_pMesh, MMG5_pSol, char *, int8_t)
Definition: inout_2d.c:1779
static const unsigned int MMG2D_idir[5]
Definition: mmg2d.h:130
int MMG2D_prilen(MMG5_pMesh, MMG5_pSol)
Definition: length_2d.c:124
int MMG2D_sum_reqEdgeLengthsAtPoint(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int8_t)
Definition: isosiz_2d.c:50
int MMG2D_resetRef(MMG5_pMesh)
Definition: mmg2d6.c:191
int MMG2D_cutEdge(MMG5_pMesh, MMG5_pTria, MMG5_pPoint, MMG5_pPoint)
Definition: locate_2d.c:90
int MMG2D_ismaniball(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: mmg2d6.c:221
int MMG2D_mmg2d9(MMG5_pMesh, MMG5_pSol, MMG5_pSol, int **)
Definition: mmg2d9.c:571
int MMG2D_adpcol(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:690
int MMG2D_swpmsh(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:509
int MMG2D_grad2met_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz_2d.c:574
static void MMG2D_Set_commonFunc(void)
Definition: mmg2d.h:375
struct squeue Queue
static const unsigned int MMG2D_inxt[5]
Definition: mmg2d.h:131
static void MMG2D_excfun(int sigid)
Definition: mmg2d.h:97
int MMG2D_findTria(MMG5_pMesh, int)
Definition: locate_2d.c:215
int MMG2D_movintpt(MMG5_pMesh, MMG5_pSol, int, int *, int8_t)
Definition: movpt_2d.c:212
int MMG2D_snapval(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:312
int MMG2D_hashTria(MMG5_pMesh)
Definition: hash_2d.c:35
int MMG2D_analys(MMG5_pMesh)
Definition: analys_2d.c:761
int MMG2D_split3(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:625
int MMG2D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_2d.c:69
int MMG2D_swapdelone(MMG5_pMesh, MMG5_pSol, int, int8_t, double, int *)
Definition: swapar_2d.c:39
double MMG2D_voltri(MMG5_pMesh, int, int, int)
Definition: mmg2d6.c:45
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]
Definition: mmg2d.h:128
void MMG2D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_2d.c:57
int MMG2D_bouleendp(MMG5_pMesh, int, int8_t, int *, int *)
Definition: boulep_2d.c:282
int MMG2D_norver(MMG5_pMesh, int)
Definition: analys_2d.c:400
int MMG2D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_2d.c:45
int MMG2D_cutEdgeTriangle(MMG5_pMesh, int, int, int)
Definition: locate_2d.c:129
int MMG2D_chkspl(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: split_2d.c:50
int MMG2D_set_metricAtPointsOnReqEdges(MMG5_pMesh, MMG5_pSol, int8_t)
Definition: isosiz_2d.c:75
int MMG2D_split1(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:385
int(* MMG2D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:7
int MMG2D_adpspl(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:634
double MMG2D_caltri_iso(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:59
int MMG2D_bdryenforcement(MMG5_pMesh, MMG5_pSol)
Definition: enforcement_2d.c:34
int MMG2D_split1b(MMG5_pMesh, int, int8_t, int)
Definition: split_2d.c:239
int MMG2D_regnor(MMG5_pMesh)
Definition: analys_2d.c:505
double MMG2D_lencurv_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: length_2d.c:62
int MMG2D_mmg2d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:495
int MMG2D_mmg2d1(MMG5_pMesh, MMG5_pSol)
int MMG2D_chkedg(MMG5_pMesh, int)
Definition: bezier_2d.c:28
int MMG2D_baseBdry(MMG5_pMesh mesh)
int MMG2D_grad2metreq_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz_2d.c:637
int MMG2D_isInTriangle(MMG5_pMesh, int, double c[2])
Definition: locate_2d.c:69
int MMG2D_anaelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:110
int MMG2D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:105
int MMG2D_cavity(MMG5_pMesh, MMG5_pSol, int, int *)
Definition: delone_2d.c:147
double long_ani(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:46
int MMG2D_split1_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:340
int MMG2D_singul(MMG5_pMesh, int)
Definition: analys_2d.c:267
int MMG2D_chkor(MMG5_pMesh)
Definition: chkmsh_2d.c:404
int(* MMG2D_intmet)(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: mmg2dexterns.c:5
int(* MMG2D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:4
int MMG2D_setref_ls(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:945
int MMG2D_Free_all_var(va_list argptr)
Definition: variadic_2d.c:268
int MMG5_getnElt(MMG5_pMesh mesh, int n)
Definition: zaldy_2d.c:128
int MMG2D_velextLS(MMG5_pMesh, MMG5_pSol)
int MMG2D_anatri(MMG5_pMesh, MMG5_pSol, int8_t)
Definition: mmg2d1.c:39
int MMG2D_2dMeshCheck(MMG5_pMesh mesh)
Definition: inout_2d.c:595
int MMG2D_newElt(MMG5_pMesh mesh)
Definition: zaldy_2d.c:85
int MMG2D_newPt(MMG5_pMesh mesh, double c[2], int16_t tag)
Definition: zaldy_2d.c:38
int MMG2D_Free_structures_var(va_list argptr)
Definition: variadic_2d.c:377
int MMG2D_chkswp(MMG5_pMesh, MMG5_pSol, int, int8_t, int8_t)
Definition: swapar_2d.c:128
int MMG2D_boulet(MMG5_pMesh, int, int8_t, int *)
Definition: boulep_2d.c:229
int MMG2D_kiudel(pQueue q, int iel)
int MMG2D_swapar(MMG5_pMesh, int, int8_t)
Definition: swapar_2d.c:221
int optlen_iso_bar(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
int MMG2D_savedisp_db(MMG5_pMesh mesh, MMG5_pSol, char *, int8_t)
Definition: inout_2d.c:1894
int MMG2D_rmc(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:552
int MMG2D_outqua(MMG5_pMesh, MMG5_pSol)
Definition: quality_2d.c:156
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:492
int(* MMG2D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:9
double long_iso(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:26
int optlen_ani(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
static const uint8_t MMG2D_idir_q[4][2]
idir[i]: vertices of edge i for a quad
Definition: mmg2d.h:76
int MMG2D_boulen(MMG5_pMesh, int, int8_t, int *, int *, double *)
Definition: boulep_2d.c:112
int MMG2D_Init_mesh_var(va_list argptr)
Definition: variadic_2d.c:175
int MMG2D_chkcol(MMG5_pMesh, MMG5_pSol, int, int8_t, int *, int8_t)
Definition: colver_2d.c:41
int MMG2D_movtri(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: mmg2d1.c:747
void MMG2D_keep_only1Subdomain(MMG5_pMesh mesh, int nsd)
Definition: tools_2d.c:91
int MMG2D_pack(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: hash_2d.c:514
double(* MMG2D_caltri)(MMG5_pMesh, MMG5_pSol, MMG5_pTria)
Definition: mmg2dexterns.c:8
int MMG2D_intmet_iso(MMG5_pMesh, MMG5_pSol, int, int8_t, int, double)
Definition: intmet_2d.c:38
int MMG2D_savenor_db(MMG5_pMesh, char *, int8_t)
Definition: inout_2d.c:1839
int MMG2D_adptri(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:544
int MMG2D_mmg2d6(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg2d6.c:1009
int MMG2D_dichoto(MMG5_pMesh, MMG5_pSol, int, int *)
Definition: mmg2d1.c:359
int MMG2D_split2_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:451
int MMG2D_colver3(MMG5_pMesh, int *)
Definition: colver_2d.c:356
int MMG2D_defmetbdy_2d(MMG5_pMesh, MMG5_pSol, int, int8_t)
Definition: anisosiz_2d.c:85
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgexterns.c:27
int(* MMG5_grad2metreq_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:33
int(* MMG5_grad2met_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:32
Definition: mmg2d.h:120
int size
Definition: mmg2d.h:121
int * head
Definition: mmg2d.h:122
int * link
Definition: mmg2d.h:123
MMG mesh structure.
Definition: libmmgtypes.h:575
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:252
Definition: libmmgtypes.h:633
Definition: libmmgtypes.h:312
Definition: mmg2d.h:115
int * stack
Definition: mmg2d.h:116
int cur
Definition: mmg2d.h:116