mmg2d
mmgcommon.h
Go to the documentation of this file.
1 /* =============================================================================
2 ** This file is part of the mmg software package for the tetrahedral
3 ** mesh modification.
4 ** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
5 **
6 ** mmg is free software: you can redistribute it and/or modify it
7 ** under the terms of the GNU Lesser General Public License as published
8 ** by the Free Software Foundation, either version 3 of the License, or
9 ** (at your option) any later version.
10 **
11 ** mmg is distributed in the hope that it will be useful, but WITHOUT
12 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 ** License for more details.
15 **
16 ** You should have received a copy of the GNU Lesser General Public
17 ** License and of the GNU General Public License along with mmg (in
18 ** files COPYING.LESSER and COPYING). If not, see
19 ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
20 ** use this copy of the mmg distribution only if you accept them.
21 ** =============================================================================
22 */
23 
24 #ifndef MMGCOMMON_H
25 #define MMGCOMMON_H
26 
27 #include <assert.h>
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include <limits.h>
31 #include <string.h>
32 #include <signal.h>
33 #include <ctype.h>
34 #include <float.h>
35 #include <math.h>
36 #include <complex.h>
37 
38 #define POSIX
39 #define GNU
40 
41 #if (defined(__APPLE__) && defined(__MACH__))
42 #include <sys/sysctl.h>
43 #elif defined(__unix__) || defined(__unix) || defined(unix)
44 #include <unistd.h>
45 #elif defined(_WIN16) || defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(__TOS_WIN__) || defined(__WINDOWS__)
46 #ifndef GNU
47 #define _WIN32_WINNT 0x0500
48 #endif
49 
50 #include <windows.h>
51 #endif
52 
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 #include "eigenv.h"
59 #include "libmmgcommon.h"
60 
61 #define MG_VER "5.4.3"
62 #define MG_REL "Feb. 26, 2020"
63 #define MG_CPY "Copyright (c) Bdx INP/CNRS/Inria/UPMC, 2004-"
64 #define MG_STR "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"
65 
67 #define MG_SMSGN(a,b) (((double)(a)*(double)(b) > (0.0)) ? (1) : (0))
68 
70 #define MMG5_BOXSIZE 500
71 
73 #define MMG5_MEMMAX 800
74 #define MMG5_BITWIZE_MB_TO_B 20
75 #define MMG5_MEMPERCENT 50/100
77 /* Domain refs in iso mode */
78 #define MG_PLUS 2
79 #define MG_MINUS 3
80 
81 /* Macro for unset or unititialized mark */
82 #define MMG5_UNSET -1
83 
84 /* reference of the boundary that moves in lagrangian mode */
85 #define MMG5_DISPREF 10
86 
87 /* million */
88 #define MMG5_MILLION 1048576
89 
90 /* numerical accuracy */
91 #define MMG5_ANGEDG 0.707106781186548 /*0.573576436351046 */
92 #define MMG5_ANGLIM -0.999999
93 #define MMG5_ATHIRD 0.333333333333333
94 
95 #define MMG5_EPSD 1.e-30
96 #define MMG5_EPSD2 1.0e-200
97 #define MMG5_EPS 1.e-06
98 #define MMG5_EPSOK 1.e-15
99 #define MMG5_NULKAL 1.e-30
100 
101 #define MMG5_SQR32 0.866025403784439
102 
103 #ifndef M_PI
104 #define M_PI 3.14159265358979323846
105 #define M_PI_2 1.57079632679489661923
106 #endif
107 
108 #define A64TH 0.015625
109 #define A16TH 0.0625
110 #define A32TH 0.03125
111 
112 #define MMG5_MEMMIN 38
114 /* Variables for option initialization */
115 #define MMG5_NONSET_MEM -1
116 #define MMG5_NONSET_HMIN -1
117 #define MMG5_NONSET_HMAX -1
118 #define MMG5_NONSET_HSIZ -1
119 #define MMG5_HAUSD 0.01
120 #define MMG5_HGRAD 0.26236426446
121 #define MMG5_HGRADREQ 0.83290912294
122 #define MMG5_NOHGRAD -1
123 #define MMG5_LAG -1
124 #define MMG5_NR -1
125 #define MMG5_LS 0.0
126 #define MMG5_PROCTREE 32
127 #define MMG5_OFF 0
128 #define MMG5_ON 1
129 #define MMG5_GAP 0.2
130 #define MMG5_HMINCOE 0.001
131 #define MMG5_HMAXCOE 2
132 #define MMG5_HMINMAXGAP 5
133 #define MMG5_FEM 1
135 /* Macros */
136 #define MG_MAX(a,b) (((a) > (b)) ? (a) : (b))
137 #define MG_MIN(a,b) (((a) < (b)) ? (a) : (b))
138 
139 /* tags */
140 #define MG_NOTAG (0)
141 #define MG_REF (1 << 0)
142 #define MG_GEO (1 << 1)
143 #define MG_REQ (1 << 2)
144 #define MG_NOM (1 << 3)
145 #define MG_BDY (1 << 4)
146 #define MG_CRN (1 << 5)
147 #define MG_NOSURF (1 << 6)
148 #define MG_OPNBDY (1 << 7)
149 #define MG_OLDPARBDY (1 << 11)
150 #define MG_PARBDYBDY (1 << 12)
151 #define MG_PARBDY (1 << 13)
152 #define MG_NUL (1 << 14)
154 /* binary tags for local parameters */
155 #define MG_Vert (1 << 0 )
156 #define MG_Tria (1 << 1 )
157 #define MG_Tetra (1 << 2 )
159 #define MG_VOK(ppt) (ppt && ((ppt)->tag < MG_NUL))
160 #define MG_EOK(pt) (pt && ((pt)->v[0] > 0))
162 #define MG_EDG(tag) ((tag & MG_GEO) || (tag & MG_REF))
163 #define MG_SIN(tag) ((tag & MG_CRN) || (tag & MG_REQ))
164 #define MG_RID(tag) ((!( MG_SIN(tag)||(tag & MG_NOM))) && tag & MG_GEO )
167 #define MG_SET(flag,bit) ((flag) |= (1 << (bit)))
168 #define MG_CLR(flag,bit) ((flag) &= ~(1 << (bit)))
169 #define MG_GET(flag,bit) ((flag) & (1 << (bit)))
171 #define MMG5_KA 7
172 #define MMG5_KB 11
177 #define _LIBMMG5_RETURN(mesh,met,val)do \
178  { \
179  signal(SIGABRT,SIG_DFL); \
180  signal(SIGFPE,SIG_DFL); \
181  signal(SIGILL,SIG_DFL); \
182  signal(SIGSEGV,SIG_DFL); \
183  signal(SIGTERM,SIG_DFL); \
184  signal(SIGINT,SIG_DFL); \
185  mesh->npi = mesh->np; \
186  mesh->nti = mesh->nt; \
187  mesh->nai = mesh->na; \
188  mesh->nei = mesh->ne; \
189  met->npi = met->np; \
190  return val; \
191  }while(0)
192 
193 /* Macros for memory management */
196 #define MMG5_CHK_MEM(mesh,size,string,law) do \
197  { \
198  if ( (mesh)->memCur > (mesh)->memMax ) { \
199  fprintf(stderr," ## Error:"); \
200  fprintf(stderr," unable to allocate %s.\n",string); \
201  fprintf(stderr," ## Check the mesh size or "); \
202  fprintf(stderr,"increase maximal authorized memory with the -m option.\n"); \
203  (mesh)->memCur -= (size); \
204  law; \
205  } \
206  }while(0)
207 
208 static inline
209 void * mycalloc(size_t c, size_t s) {
210  char *ptr;
211  ptr = calloc(c*s+sizeof(size_t),1);
212  if (ptr == NULL)
213  return NULL;
214  else {
215  *((size_t*)ptr)=c*s;
216  ptr+=sizeof(size_t);
217  return (void*)ptr;
218  }
219 }
220 
221 static inline
222 void * mymalloc(size_t s) {
223  char *ptr;
224  ptr = malloc(s+sizeof(size_t));
225  if (ptr == NULL)
226  return NULL;
227  else {
228  *((size_t*)ptr)=s;
229  ptr+=sizeof(size_t);
230  return (void*)ptr;
231  }
232 }
233 
234 static inline
235 void * myrealloc(void * ptr_in, size_t s, size_t oldsize) {
236  char *ptr;
237  char *ptr_in_c = (char*)ptr_in;
238  ptr_in_c -= sizeof(size_t);
239  if (oldsize != *((size_t*)ptr_in_c)) {
240  fprintf(stderr, "myrealloc: Error: freed memory mismatch\n");
241  assert(0);
242  }
243  ptr = realloc(ptr_in_c, s+sizeof(size_t));
244  if (ptr == NULL)
245  return NULL;
246  else {
247  *((size_t*)ptr)=s;
248  ptr+=sizeof(size_t);
249  return (void*)ptr;
250  }
251 }
252 
253 static inline
254 size_t myfree(void *ptr) {
255  size_t s;
256  char * ptr_c = (char*)ptr;
257 
258  ptr_c = ptr_c-sizeof(size_t);
259  s = *((size_t*)ptr_c);
260  free(ptr_c);
261 
262  return s;
263 }
264 
266 #define MMG5_DEL_MEM(mesh,ptr) do \
267  { \
268  size_t size_to_free = myfree(ptr); \
269  (mesh)->memCur -= size_to_free; \
270  ptr = NULL; \
271  }while(0)
272 
275 #define MMG5_ADD_MEM(mesh,size,message,law) do \
276  { \
277  (mesh)->memCur += (size); \
278  MMG5_CHK_MEM(mesh,size,message,law); \
279  }while(0)
280 
282 #define MMG5_SAFE_FREE(ptr) do \
283  { \
284  myfree(ptr); \
285  ptr = NULL; \
286  }while(0)
287 
289 #define MMG5_SAFE_CALLOC(ptr,size,type,law) do \
290  { \
291  ptr = (type*)mycalloc(size,sizeof(type)); \
292  if ( !ptr ) { \
293  perror(" ## Memory problem: calloc"); \
294  law; \
295  } \
296  }while(0)
297 
299 #define MMG5_SAFE_MALLOC(ptr,size,type,law) do \
300  { \
301  size_t size_to_allocate = (size)*sizeof(type); \
302  ptr = (type*)mymalloc(size_to_allocate); \
303  if ( !ptr ) { \
304  perror(" ## Memory problem: malloc"); \
305  law; \
306  } \
307  }while(0)
308 
310 #define MMG5_SAFE_REALLOC(ptr,prevSize,newSize,type,message,law) do \
311  { \
312  type* tmp; \
313  size_t size_to_allocate = (newSize)*sizeof(type); \
314  \
315  tmp = (type *)myrealloc((ptr),size_to_allocate,(prevSize)*sizeof(type)); \
316  if ( !tmp ) { \
317  MMG5_SAFE_FREE(ptr); \
318  perror(" ## Memory problem: realloc"); \
319  law; \
320  } \
321  \
322  (ptr) = tmp; \
323  }while(0)
324 
326 #define MMG5_SAFE_RECALLOC(ptr,prevSize,newSize,type,message,law) do \
327  { \
328  type* tmp; \
329  size_t size_to_allocate = (newSize)*sizeof(type); \
330  \
331  tmp = (type *)myrealloc((ptr),size_to_allocate,(prevSize)*sizeof(type)); \
332  if ( !tmp ) { \
333  MMG5_SAFE_FREE(ptr); \
334  perror(" ## Memory problem: realloc"); \
335  law; \
336  } \
337  \
338  (ptr) = tmp; \
339  \
340  if ( newSize > prevSize ) { \
341  memset(&((ptr)[prevSize]),0,((newSize)-(prevSize))*sizeof(type)); \
342  } \
343  }while(0)
344 
348 #define MMG5_TAB_RECALLOC(mesh,ptr,initSize,wantedGap,type,message,law) do \
349  { \
350  int gap; \
351  \
352  assert ( mesh->memCur < mesh->memMax ); \
353  \
354  gap = (int)(wantedGap * initSize); \
355  if ( !gap ) gap = 1; \
356  \
357  if ( mesh->memMax < mesh->memCur + gap*sizeof(type) ) { \
358  gap = (int)((mesh->memMax-mesh->memCur)/sizeof(type)); \
359  if(gap<1) { \
360  fprintf(stderr," ## Error:"); \
361  fprintf(stderr," unable to allocate %s.\n",message); \
362  fprintf(stderr," ## Check the mesh size or "); \
363  fprintf(stderr,"increase maximal authorized memory with the -m option.\n"); \
364  law; \
365  } \
366  } \
367  \
368  MMG5_ADD_MEM(mesh,gap*sizeof(type),message,law); \
369  MMG5_SAFE_RECALLOC((ptr),initSize+1,initSize+gap+1,type,message,law); \
370  initSize = initSize+gap; \
371  }while(0);
372 
374 #define MMG5_INCREASE_MEM_MESSAGE() do \
375  { \
376  printf(" ## Check the mesh size or increase maximal"); \
377  printf(" authorized memory with the -m option.\n"); \
378  } while(0)
379 
380 #define MMG5_SAFELL2LCAST(longlongval) (((longlongval) > (LONG_MAX)) ? 0 : ((long)(longlongval)))
381 #define MMG5_SAFELL2ICAST(longlongval) (((longlongval) > (INT_MAX)) ? 0 : ((int)(longlongval)))
382 
383 
385 #ifdef USE_SCOTCH
386 
387 static inline
388 void MMG5_warnScotch(MMG5_pMesh mesh) {
389  if ( mesh->info.imprim > 4 || mesh->info.ddebug ) {
390  if ( mesh->info.mem >= 0 ) {
391  fprintf(stdout," ## Warning: we will overflow the memory asked with \"-m\"");
392  fprintf(stdout," option during Scotch call.\n" );
393  }
394  }
395 }
396 #endif
397 
403 static inline
404 void MMG5_excfun(int sigid) {
405  fprintf(stdout,"\n Unexpected error:"); fflush(stdout);
406  switch(sigid) {
407  case SIGABRT:
408  fprintf(stdout," *** potential lack of memory.\n"); break;
409  case SIGFPE:
410  fprintf(stdout," *** Floating-point exception\n"); break;
411  case SIGILL:
412  fprintf(stdout," *** Illegal instruction\n"); break;
413  case SIGSEGV:
414  fprintf(stdout," *** Segmentation fault\n"); break;
415  case SIGTERM:
416  case SIGINT:
417  fprintf(stdout," *** Program killed\n"); break;
418  }
419  exit(EXIT_FAILURE);
420 }
421 
422 /* Macro for fortran function generation */
436 #define FORTRAN_NAME(nu,nl,pl,pc) \
437  void nu pl; \
438  void nl pl \
439  { nu pc; } \
440  void nl##_ pl \
441  { nu pc; } \
442  void nl##__ pl \
443  { nu pc; } \
444  void nu pl
445 
458 #define FORTRAN_VARIADIC(nu,nl,pl,body) \
459  void nu pl \
460  { body } \
461  void nl pl \
462  { body } \
463  void nl##_ pl \
464  { body } \
465  void nl##__ pl \
466  { body } \
467 
468 
469 /* Global variables */
470  static const unsigned char MMG5_inxt2[6] = {1,2,0,1,2};
471 static const unsigned char MMG5_iprv2[3] = {2,0,1};
473 /* Private structures */
480 typedef struct {
481  double b[10][3];
482  double n[6][3];
483  double t[6][3];
484  MMG5_pPoint p[3];
485 } MMG5_Bezier;
487 
492 typedef struct MMG5_iNode_s {
493  int val;
494  struct MMG5_iNode_s *nxt;
495 } MMG5_iNode;
496 
501 typedef struct MMG5_dNode_s {
502  int k;
503  double val;
504  struct MMG5_dNode_s *nxt;
505 } MMG5_dNode;
506 
507 
508 /* Functions declarations */
509  extern double MMG5_det3pt1vec(double c0[3],double c1[3],double c2[3],double v[3]);
510  extern double MMG5_det4pt(double c0[3],double c1[3],double c2[3],double c3[3]);
511  int MMG5_devangle(double* n1, double *n2, double crit);
512  extern double MMG5_orvol(MMG5_pPoint point,int *v);
513  int MMG5_Add_inode( MMG5_pMesh mesh, MMG5_iNode **liLi, int val );
514  int MMG5_Add_dnode( MMG5_pMesh mesh, MMG5_dNode **liLi, int, double);
515  extern void MMG5_bezierEdge(MMG5_pMesh, int, int, double*, double*, char,double*);
516  int MMG5_buildridmet(MMG5_pMesh,MMG5_pSol,int,double,double,double,double*,double[3][3]);
517  extern int MMG5_buildridmetfic(MMG5_pMesh,double*,double*,double,double,double,double*);
518  int MMG5_buildridmetnor(MMG5_pMesh, MMG5_pSol, int,double*, double*,double[3][3]);
519  int MMG5_paratmet(double c0[3],double n0[3],double m[6],double c1[3],double n1[3],double mt[6]);
520  void MMG5_mn(double m[6], double n[6], double mn[9] );
521  extern int MMG5_rmtr(double r[3][3],double m[6], double mr[6]);
523  int MMG5_boulec(MMG5_pMesh, int*, int, int i,double *tt);
524  int MMG5_boulen(MMG5_pMesh, int*, int, int i,double *nn);
525  int MMG5_bouler(MMG5_pMesh, int*, int, int i,int *,int *,int *, int*, int);
527  extern double MMG5_caltri_ani(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pTria ptt);
528  extern double MMG5_caltri_iso(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pTria ptt);
530  void MMG5_displayLengthHisto(MMG5_pMesh,int,double*,int,int,double,
531  int,int,double,int,double*,int*,char);
532  void MMG5_displayLengthHisto_internal( int,int,int,double,
533  int,int,double, int,double*,
534  int*,char,int);
535  int MMG5_minQualCheck ( int iel, double minqual, double alpha );
537  MMG5_Bezier*,double r[3][3],double gv[2]);
538  void MMG5_fillDefmetregSys( int, MMG5_pPoint, int, MMG5_Bezier,double r[3][3],
539  double *, double *, double *, double *);
544  int MMG5_hashEdge(MMG5_pMesh mesh,MMG5_Hash *hash,int a,int b,int k);
545  int MMG5_hashUpdate(MMG5_Hash *hash,int a,int b,int k);
546  int MMG5_hashGet(MMG5_Hash *hash,int a,int b);
547  int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash,int hsiz,int hmax);
548  int MMG5_intmetsavedir(MMG5_pMesh mesh, double *m,double *n,double *mr);
549  int MMG5_intridmet(MMG5_pMesh,MMG5_pSol,int,int,double,double*,double*);
550  int MMG5_mmgIntmet33_ani(double*,double*,double*,double);
551  int MMG5_mmgIntextmet(MMG5_pMesh,MMG5_pSol,int,double *,double *);
552  size_t MMG5_memSize(void);
555  int MMG5_mmgHashTria(MMG5_pMesh mesh, int *adja, MMG5_Hash*, int chkISO);
557  void MMG5_mmgUsage(char *prog);
558  extern int MMG5_nonUnitNorPts(MMG5_pMesh,int,int,int,double*);
559  extern double MMG5_nonorsurf(MMG5_pMesh mesh,MMG5_pTria pt);
560  extern int MMG5_norpts(MMG5_pMesh,int,int,int,double *);
561  extern int MMG5_nortri(MMG5_pMesh mesh,MMG5_pTria pt,double *n);
562  void MMG5_printTria(MMG5_pMesh mesh,char* fileName);
563  extern int MMG5_rotmatrix(double n[3],double r[3][3]);
564  int MMG5_invmat(double *m,double *mi);
565  int MMG5_invmatg(double m[9],double mi[9]);
566  int MMG5_invmat33(double m[3][3],double mi[3][3]);
567  double MMG5_ridSizeInNormalDir(MMG5_pMesh,int,double*,MMG5_pBezier,double,double);
568  double MMG5_ridSizeInTangentDir(MMG5_pMesh, MMG5_pPoint,int,int*,double,double);
571  int MMG5_solveDefmetregSys( MMG5_pMesh, double r[3][3], double *, double *,
572  double *, double *, double, double, double);
573  int MMG5_solveDefmetrefSys( MMG5_pMesh,MMG5_pPoint,int*, double r[3][3],
574  double *, double *, double *, double *,
575  double, double, double);
577  double MMG5_surftri33_ani(MMG5_pMesh,MMG5_pTria,double*,double*,double*);
579  extern int MMG5_sys33sym(double a[6], double b[3], double r[3]);
581  int MMG5_interpreg_ani(MMG5_pMesh,MMG5_pSol,MMG5_pTria,char,double,double *mr);
582  int MMG5_interp_iso(double *ma,double *mb,double *mp,double t);
583  int MMG5_intersecmet22(MMG5_pMesh mesh, double *m,double *n,double *mr);
585  extern int MMG5_writeLocalParamAtTri( MMG5_pMesh,MMG5_iNode *,FILE*);
586  double MMG2D_quickarea(double a[2],double b[2],double c[2]);
587 
588  int MMG5_loadMshMesh_part1(MMG5_pMesh mesh,const char *filename,
589  FILE **inm,long *posNodes, long *posElts,
590  long **posNodeData, int *bin, int *iswp,
591  int *nelts,int *nsols);
592 
594  const long posNodes,const long posElts,
595  const long *posNodeData,const int bin,
596  const int iswp,const int nelts,
597  const int nsols);
598 int MMG5_saveMshMesh(MMG5_pMesh,MMG5_pSol*,const char*,const int);
599 int MMG5_loadSolHeader(const char*,int,FILE**,int*,int*,int*,int*,
600  int*,int*,int**,long*,int);
601 int MMG5_chkMetricType(MMG5_pMesh mesh,int *type, FILE *inm);
602 void MMG5_readFloatSol3D(MMG5_pSol,FILE*,int,int,int);
603 void MMG5_readDoubleSol3D(MMG5_pSol,FILE*,int,int,int);
604 int MMG5_saveSolHeader( MMG5_pMesh,const char*,FILE**,int,int*,int,
605  int,int,int*,int*);
606 void MMG5_writeDoubleSol3D(MMG5_pMesh,MMG5_pSol,FILE*,int,int,int);
609 void MMG5_chooseOutputFormat(MMG5_pMesh mesh, int *msh);
610 
611 int MMG5_defsiz_startingMessage (MMG5_pMesh,MMG5_pSol,const char * funcname );
613 int MMG5_sum_reqEdgeLengthsAtPoint ( MMG5_pMesh,MMG5_pSol,int ip0,int ip1 );
616 
621 int MMG5_gradsiz_ani(MMG5_pMesh mesh,MMG5_pSol met,int *it);
623 int MMG5_simred(MMG5_pMesh,double*,double*,double dm[2],double dn[2],double vp[2][2]);
624 void MMG5_gradEigenvreq(double *dm,double *dn,double,int8_t,int8_t *);
625 int MMG5_updatemetreq_ani(double *n,double dn[2],double vp[2][2]);
626 
627 /* function pointers */
628 extern int (*MMG5_chkmsh)(MMG5_pMesh,int,int);
629 extern int (*MMG5_bezierCP)(MMG5_pMesh ,MMG5_Tria *,MMG5_pBezier ,char );
630 extern double (*MMG5_lenSurfEdg)(MMG5_pMesh mesh,MMG5_pSol sol ,int ,int, char );
631 extern int (*MMG5_grad2met_ani)(MMG5_pMesh,MMG5_pSol,MMG5_pTria,int,int);
632 extern int (*MMG5_grad2metreq_ani)(MMG5_pMesh,MMG5_pSol,MMG5_pTria,int,int);
634 
635 
636 /* useful functions to debug */
637 extern int (*MMG5_indElt)(MMG5_pMesh mesh,int kel);
638 extern int (*MMG5_indPt)(MMG5_pMesh mesh,int kp);
639 
640 #ifdef USE_SCOTCH
641 extern int (*MMG5_renumbering)(int vertBoxNbr, MMG5_pMesh mesh, MMG5_pSol sol);
642 #endif
643 
644 void MMG5_Set_commonFunc();
645 
646 #ifdef __cplusplus
647 }
648 #endif
649 
650 #endif
MMG2D_hashTria
int MMG2D_hashTria(MMG5_pMesh mesh)
Definition: hash_2d.c:49
MMG5_Edge
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:243
MMG2D_split3
int MMG2D_split3(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:624
MMG2D_findtrianglestate
int MMG2D_findtrianglestate(MMG5_pMesh mesh, int k, int ip1, int ip2, int ip3, int ip4, int base)
Definition: mmg2d2.c:132
MMG5_printSolStats
void MMG5_printSolStats(MMG5_pMesh mesh, MMG5_pSol *sol)
Definition: inout.c:2428
MMG5_Info::nmat
int nmat
Definition: libmmgtypes.h:451
MMG2D_movintpt_ani
int MMG2D_movintpt_ani(MMG5_pMesh mesh, MMG5_pSol met, int ilist, int *list, char improve)
Definition: anisomovpt_2d.c:37
MG_BDY
#define MG_BDY
Definition: mmgcommon.h:145
MMG2D_mmg2d6
int MMG2D_mmg2d6(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d6.c:617
MMG5_Sol::np
int np
Definition: libmmgtypes.h:566
MMG5_Point::c
double c[3]
Definition: libmmgtypes.h:215
MMG2D_setref_ls
int MMG2D_setref_ls(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d6.c:553
MMG2D_anatri
int MMG2D_anatri(MMG5_pMesh mesh, MMG5_pSol met, char typchk)
Definition: mmg2d1.c:39
MG_EDG
#define MG_EDG(tag)
Definition: mmgcommon.h:162
MMG5_Set_commonFunc
void MMG5_Set_commonFunc()
MMG5_saveSolHeader
int MMG5_saveSolHeader(MMG5_pMesh, const char *, FILE **, int, int *, int, int, int, int *, int *)
Definition: inout.c:2266
MMG2D_adptri
int MMG2D_adptri(MMG5_pMesh mesh, MMG5_pSol met)
Definition: mmg2d1.c:542
MMG2D_swapar
int MMG2D_swapar(MMG5_pMesh, int, char)
Definition: swapar_2d.c:221
MMG2D_indElt
int MMG2D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_2d.c:45
MG_MAX
#define MG_MAX(a, b)
Definition: mmgcommon.h:136
MMG5_orvol
double MMG5_orvol(MMG5_pPoint point, int *v)
Definition: tools.c:836
MMG5_Info::hmin
double hmin
Definition: libmmgtypes.h:445
MMG2D_newPt
int MMG2D_newPt(MMG5_pMesh mesh, double c[2], int16_t tag)
Definition: zaldy_2d.c:38
MMG5_Tria::v
int v[3]
Definition: libmmgtypes.h:272
MG_MINUS
#define MG_MINUS
Definition: mmgcommon.h:79
MMG2D_chkmovmesh
int MMG2D_chkmovmesh(MMG5_pMesh mesh, MMG5_pSol disp, short t)
Definition: mmg2d9.c:106
MMG5_Sol
Definition: libmmgtypes.h:563
MMG5_hashEdge
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:216
MG_SIN
#define MG_SIN(tag)
Definition: mmgcommon.h:163
MMG2D_removeBBtriangles
int MMG2D_removeBBtriangles(MMG5_pMesh mesh)
Definition: mmg2d2.c:42
myfree
static size_t myfree(void *ptr)
Definition: mmgcommon.h:254
MMG2D_colver
int MMG2D_colver(MMG5_pMesh mesh, int ilist, int *list)
Definition: colver_2d.c:270
MMG2D_isInTriangle
int MMG2D_isInTriangle(MMG5_pMesh mesh, int k, double c[2])
Definition: locate_2d.c:69
MMG5_buildridmetfic
int MMG5_buildridmetfic(MMG5_pMesh, double *, double *, double, double, double, double *)
MMG5_lenSurfEdg
double(* MMG5_lenSurfEdg)(MMG5_pMesh mesh, MMG5_pSol sol, int, int, char)
Definition: mmgexterns.c:29
MMG5_buildridmet
int MMG5_buildridmet(MMG5_pMesh, MMG5_pSol, int, double, double, double, double *, double[3][3])
MMG5_Tria::cc
int cc
Definition: libmmgtypes.h:275
MMG2D_saveDisp
int MMG2D_saveDisp(MMG5_pMesh mesh, MMG5_pSol disp)
Definition: mmg2d9.c:435
MG_REF
#define MG_REF
Definition: mmgcommon.h:141
MMG5_Info::nomove
unsigned char nomove
Definition: libmmgtypes.h:457
MG_EOK
#define MG_EOK(pt)
Definition: mmgcommon.h:160
MMG2D_caltri_iso_3pt
static double MMG2D_caltri_iso_3pt(double *a, double *b, double *c)
Definition: mmg2d9.c:76
MMG5_buildridmetnor
int MMG5_buildridmetnor(MMG5_pMesh, MMG5_pSol, int, double *, double *, double[3][3])
MMG5_Mat::rex
int rex
Definition: libmmgtypes.h:435
MMG5_excfun
static void MMG5_excfun(int sigid)
Definition: mmgcommon.h:404
MMG2D_movintpt
int MMG2D_movintpt(MMG5_pMesh, MMG5_pSol, int, int *, char)
Definition: movpt_2d.c:212
MG_NOM
#define MG_NOM
Definition: mmgcommon.h:144
MMG5_sys33sym
int MMG5_sys33sym(double a[6], double b[3], double r[3])
Definition: tools.c:463
MMG2D_spllag
int MMG2D_spllag(MMG5_pMesh mesh, MMG5_pSol disp, MMG5_pSol met, int itdeg, int *warn)
Definition: mmg2d9.c:244
MMG2D_chkmanimesh
int MMG2D_chkmanimesh(MMG5_pMesh mesh)
Definition: mmg2d6.c:343
MMG2D_ismaniball
int MMG2D_ismaniball(MMG5_pMesh mesh, MMG5_pSol sol, int start, char istart)
Definition: mmg2d6.c:113
MMG2D_snapval
int MMG2D_snapval(MMG5_pMesh mesh, MMG5_pSol sol, double *tmp)
Definition: mmg2d6.c:183
MMG5_grad2metreq_ani
int(* MMG5_grad2metreq_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:33
MMG5_Sol::size
int size
Definition: libmmgtypes.h:569
MMG5_hashGet
int MMG5_hashGet(MMG5_Hash *hash, int a, int b)
Definition: hash.c:303
MMG5_loadMshMesh_part2
int MMG5_loadMshMesh_part2(MMG5_pMesh mesh, MMG5_pSol *sol, FILE **inm, const long posNodes, const long posElts, const long *posNodeData, const int bin, const int iswp, const int nelts, const int nsols)
Definition: inout.c:489
MMG5_invmat33
int MMG5_invmat33(double m[3][3], double mi[3][3])
Definition: tools.c:369
MMG5_Mat::rin
int rin
Definition: libmmgtypes.h:435
MMG5_scaleMesh
int MMG5_scaleMesh(MMG5_pMesh mesh, MMG5_pSol met)
Definition: scalem.c:89
MMG2D_DEGTOL
#define MMG2D_DEGTOL
Definition: mmg2d9.c:38
MMG2D_LONMAX
#define MMG2D_LONMAX
Definition: mmg2d.h:58
MMG5_Hash
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:499
MMG2D_split2_sim
int MMG2D_split2_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:450
MMG5_mmgInit_parameters
void MMG5_mmgInit_parameters(MMG5_pMesh mesh)
MMG2D_gradsizreq
int(* MMG2D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:6
MMG5_printMetStats
void MMG5_printMetStats(MMG5_pMesh mesh, MMG5_pSol met)
Definition: inout.c:2410
MMG5_Mesh::point
MMG5_pPoint point
Definition: libmmgtypes.h:542
MMG2D_PRECI
#define MMG2D_PRECI
Definition: mmg2d.h:54
MMG2D_isSplit
int MMG2D_isSplit(MMG5_pMesh mesh, int ref, int *refint, int *refext)
Definition: mmg2d6.c:45
MG_GET
#define MG_GET(flag, bit)
Definition: mmgcommon.h:169
MMG2D_splitbar
int MMG2D_splitbar(MMG5_pMesh, int, int)
Definition: split_2d.c:715
MMG5_Tria::edg
int edg[3]
Definition: libmmgtypes.h:277
MMG5_caltri33_ani
double MMG5_caltri33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt)
Definition: quality.c:47
MMG5_gradsizreq_iso
int MMG5_gradsizreq_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz.c:359
MMG5_Tria::tag
int16_t tag[3]
Definition: libmmgtypes.h:280
MMG5_writeDoubleSol3D
void MMG5_writeDoubleSol3D(MMG5_pMesh, MMG5_pSol, FILE *, int, int, int)
Definition: inout.c:2200
MMG5_invmatg
int MMG5_invmatg(double m[9], double mi[9])
Definition: tools.c:329
MMG2D_defsiz
int(* MMG2D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:3
MMG5_Info::noinsert
unsigned char noinsert
Definition: libmmgtypes.h:457
mmg2d.h
MMG5_indPt
int(* MMG5_indPt)(MMG5_pMesh mesh, int kp)
Definition: mmgexterns.c:31
MMG5_Info::max
double max[3]
Definition: libmmgtypes.h:446
MMG5_mmgIntmet33_ani
int MMG5_mmgIntmet33_ani(double *, double *, double *, double)
Definition: intmet.c:178
MMG5_Info::hgradreq
double hgradreq
Definition: libmmgtypes.h:445
MMG5_Mesh::base
int base
Definition: libmmgtypes.h:521
MMG2D_movedgpt
int MMG2D_movedgpt(MMG5_pMesh, MMG5_pSol, int, int *, char)
Definition: movpt_2d.c:52
sol
MMG5_pMesh MMG5_pSol * sol
Definition: API_functionsf_2d.c:63
MMG2D_mmg2d2
int MMG2D_mmg2d2(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d2.c:495
MMG2D_split1
int MMG2D_split1(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:384
MMG5_pBezier
MMG5_Bezier * MMG5_pBezier
Definition: mmgcommon.h:486
MG_VOK
#define MG_VOK(ppt)
Definition: mmgcommon.h:159
MMG5_det4pt
double MMG5_det4pt(double c0[3], double c1[3], double c2[3], double c3[3])
Definition: tools.c:817
MMG5_Mesh::np
int np
Definition: libmmgtypes.h:516
MMG5_mmgDefaultValues
void MMG5_mmgDefaultValues(MMG5_pMesh mesh)
Definition: mmg.c:80
MMG5_compute_meanMetricAtMarkedPoints_iso
int MMG5_compute_meanMetricAtMarkedPoints_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:167
MMG5_boulen
int MMG5_boulen(MMG5_pMesh, int *, int, int i, double *nn)
Definition: boulep.c:50
MMG5_Add_inode
int MMG5_Add_inode(MMG5_pMesh mesh, MMG5_iNode **liLi, int val)
Definition: tools.c:642
MMG5_Point::ref
int ref
Definition: libmmgtypes.h:217
MMG5_nonorsurf
double MMG5_nonorsurf(MMG5_pMesh mesh, MMG5_pTria pt)
Definition: tools.c:106
MMG5_Mat
To store user-defined references in the mesh (useful in LS mode)
Definition: libmmgtypes.h:433
MMG5_devangle
int MMG5_devangle(double *n1, double *n2, double crit)
Definition: tools.c:49
MMG2D_movtri
int MMG2D_movtri(MMG5_pMesh mesh, MMG5_pSol met, int maxit, char improve)
Definition: mmg2d1.c:745
MMG2D_velextLS
int MMG2D_velextLS(MMG5_pMesh, MMG5_pSol)
MMG5_grad2met_ani
int(* MMG5_grad2met_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgexterns.c:32
MMG2D_cavity
int MMG2D_cavity(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list)
Definition: delone_2d.c:175
MMG5_elementWeight
int MMG5_elementWeight(MMG5_pMesh, MMG5_pSol, MMG5_pTria, MMG5_pPoint, MMG5_Bezier *, double r[3][3], double gv[2])
Definition: anisomovpt.c:53
MMG5_iNode
struct MMG5_iNode_s MMG5_iNode
MMG5_iNode_s::nxt
struct MMG5_iNode_s * nxt
Definition: mmgcommon.h:494
mymalloc
static void * mymalloc(size_t s)
Definition: mmgcommon.h:222
MMG5_dNode
Cell for linked list of double value.
MMG2D_split1_sim
int MMG2D_split1_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:339
MMG5_Mesh::adja
int * adja
Definition: libmmgtypes.h:529
MMG5_iprv2
static const unsigned char MMG5_iprv2[3]
Definition: mmgcommon.h:471
MMG5_loadMshMesh_part1
int MMG5_loadMshMesh_part1(MMG5_pMesh mesh, const char *filename, FILE **inm, long *posNodes, long *posElts, long **posNodeData, int *bin, int *iswp, int *nelts, int *nsols)
Definition: inout.c:241
MMG5_Mesh::tria
MMG5_pTria tria
Definition: libmmgtypes.h:548
MMG5_indElt
int(* MMG5_indElt)(MMG5_pMesh mesh, int kel)
Definition: mmgexterns.c:30
MMG5_chkMetricType
int MMG5_chkMetricType(MMG5_pMesh mesh, int *type, FILE *inm)
Definition: inout.c:2378
MMG5_gradEigenvreq
void MMG5_gradEigenvreq(double *dm, double *dn, double, int8_t, int8_t *)
Definition: anisosiz.c:1382
MMG5_iNode_s
Definition: mmgcommon.h:492
MMG5_iNode_s::val
int val
Definition: mmgcommon.h:493
MMG2D_swpmsh
int MMG2D_swpmsh(MMG5_pMesh mesh, MMG5_pSol met, int typchk)
Definition: mmg2d1.c:507
MMG5_reset_metricAtReqEdges_surf
int MMG5_reset_metricAtReqEdges_surf(MMG5_pMesh, MMG5_pSol)
Definition: isosiz.c:194
MMG5_Mesh::mark
int mark
Definition: libmmgtypes.h:523
mesh
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
MMG5_ADD_MEM
#define MMG5_ADD_MEM(mesh, size, message, law)
Definition: mmgcommon.h:275
MMG5_intmetsavedir
int MMG5_intmetsavedir(MMG5_pMesh mesh, double *m, double *n, double *mr)
Definition: mettools.c:86
MMG5_Mat::dospl
char dospl
Definition: libmmgtypes.h:434
MMG5_bouler
int MMG5_bouler(MMG5_pMesh, int *, int, int i, int *, int *, int *, int *, int)
Definition: boulep.c:214
MG_GEO
#define MG_GEO
Definition: mmgcommon.h:142
MMG5_gradation_info
void MMG5_gradation_info(MMG5_pMesh mesh)
Definition: isosiz.c:96
eigenv.h
MMG2D_chkcol
int MMG2D_chkcol(MMG5_pMesh mesh, MMG5_pSol met, int k, char i, int *list, char typchk)
Definition: colver_2d.c:41
mycalloc
static void * mycalloc(size_t c, size_t s)
Definition: mmgcommon.h:209
MMG2D_getIniRef
int MMG2D_getIniRef(MMG5_pMesh mesh, int ref)
Definition: mmg2d6.c:70
MMG5_grad2metSurf
int MMG5_grad2metSurf(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz.c:912
MMG5_Free_ilinkedList
void MMG5_Free_ilinkedList(MMG5_pMesh mesh, MMG5_iNode *liLi)
Definition: tools.c:694
MMG2D_bezierCurv
int MMG2D_bezierCurv(MMG5_pMesh mesh, int k, char i, double s, double *o, double *no)
Definition: bezier_2d.c:117
MMG2D_delPt
void MMG2D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_2d.c:57
MMG5_Tria::ref
int ref
Definition: libmmgtypes.h:273
MMG5_Add_dnode
int MMG5_Add_dnode(MMG5_pMesh mesh, MMG5_dNode **liLi, int, double)
Definition: tools.c:740
MMG5_Point
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
MMG2D_split2
int MMG2D_split2(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:499
MMG5_nortri
int MMG5_nortri(MMG5_pMesh mesh, MMG5_pTria pt, double *n)
Definition: tools.c:155
MMG2D_cuttri_ls
int MMG2D_cuttri_ls(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d6.c:413
MMG5_mn
void MMG5_mn(double m[6], double n[6], double mn[9])
Definition: tools.c:170
MMG5_gradsizreq_ani
int MMG5_gradsizreq_ani(MMG5_pMesh mesh, MMG5_pSol met)
Definition: anisosiz.c:1797
MMG2D_intmet
int(* MMG2D_intmet)(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: mmg2dexterns.c:4
MMG2D_mmg2d1n
int MMG2D_mmg2d1n(MMG5_pMesh mesh, MMG5_pSol met)
Definition: mmg2d1.c:806
MMG5_caltri_ani
double MMG5_caltri_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: quality.c:115
MMG5_Edge::b
int b
Definition: libmmgtypes.h:244
MMG5_hashNew
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:333
MMG5_Sol::m
double * m
Definition: libmmgtypes.h:571
MMG5_intridmet
int MMG5_intridmet(MMG5_pMesh, MMG5_pSol, int, int, double, double *, double *)
MMG5_delEdge
void MMG5_delEdge(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:70
MMG5_unscaleMesh
int MMG5_unscaleMesh(MMG5_pMesh mesh, MMG5_pSol met)
Definition: scalem.c:260
MMG5_Info::delta
double delta
Definition: libmmgtypes.h:446
MMG5_gradsiz_iso
int MMG5_gradsiz_iso(MMG5_pMesh mesh, MMG5_pSol met)
Definition: isosiz.c:268
MMG5_displayLengthHisto_internal
void MMG5_displayLengthHisto_internal(int, int, int, double, int, int, double, int, double *, int *, char, int)
Definition: quality.c:294
MMG5_rotmatrix
int MMG5_rotmatrix(double n[3], double r[3][3])
Definition: tools.c:232
libmmgcommon.h
API header for the common part of the MMG libraries.
MMG5_interpreg_ani
int MMG5_interpreg_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, char, double, double *mr)
MMG2D_lencurv
double(* MMG2D_lencurv)(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg2dexterns.c:5
MMG5_saveMshMesh
int MMG5_saveMshMesh(MMG5_pMesh, MMG5_pSol *, const char *, const int)
Definition: inout.c:1504
MMG2D_POINT_REALLOC
#define MMG2D_POINT_REALLOC(mesh, sol, ip, wantedGap, law, o, tag)
Definition: mmg2d.h:140
MMG5_hashGet
int MMG5_hashGet(MMG5_Hash *hash, int a, int b)
Definition: hash.c:303
MMG2D_delone
int MMG2D_delone(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list, int ilist)
Definition: delone_2d.c:264
MMG5_Info::noswap
unsigned char noswap
Definition: libmmgtypes.h:457
MMG5_surftri_ani
double MMG5_surftri_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: anisosiz.c:122
MMG2D_chkswp
int MMG2D_chkswp(MMG5_pMesh, MMG5_pSol, int, char, char)
Definition: swapar_2d.c:128
MMG2D_chkedg
int MMG2D_chkedg(MMG5_pMesh mesh, int k)
Definition: bezier_2d.c:28
MMG5_Info::ls
double ls
Definition: libmmgtypes.h:446
MMG2D_singul
int MMG2D_singul(MMG5_pMesh mesh, int ref)
Definition: analys_2d.c:206
MMG2D_coleltlag
static int MMG2D_coleltlag(MMG5_pMesh mesh, MMG5_pSol met, int itdeg)
Definition: mmg2d9.c:339
MMG5_dNode_s::nxt
struct MMG5_dNode_s * nxt
Definition: mmgcommon.h:504
MMG5_invmat
int MMG5_invmat(double *m, double *mi)
Definition: tools.c:278
MG_MIN
#define MG_MIN(a, b)
Definition: mmgcommon.h:137
MMG5_INCREASE_MEM_MESSAGE
#define MMG5_INCREASE_MEM_MESSAGE()
Definition: mmgcommon.h:374
MMG5_hashUpdate
int MMG5_hashUpdate(MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:270
MMG5_Mesh::na
int na
Definition: libmmgtypes.h:516
MMG5_pTria
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:283
MMG5_Info::imprim
char imprim
Definition: libmmgtypes.h:453
MMG2D_defsiz
int(* MMG2D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:3
MMG5_Info::hgrad
double hgrad
Definition: libmmgtypes.h:445
MMG5_EPS
#define MMG5_EPS
Definition: eigenv.h:32
MMG5_Point::tag
int16_t tag
Definition: libmmgtypes.h:223
MMG5_Tria
Definition: libmmgtypes.h:270
MMG5_Bezier
Definition: mmgcommon.h:480
MMG2D_TRIA_REALLOC
#define MMG2D_TRIA_REALLOC(mesh, jel, wantedGap, law)
Definition: mmg2d.h:168
MMG2D_colver2
int MMG2D_colver2(MMG5_pMesh mesh, int *list)
Definition: colver_2d.c:418
myrealloc
static void * myrealloc(void *ptr_in, size_t s, size_t oldsize)
Definition: mmgcommon.h:235
MMG5_iNode
Cell for linked list of integer value.
MMG5_boulec
int MMG5_boulec(MMG5_pMesh, int *, int, int i, double *tt)
Definition: boulep.c:126
MMG2D_dikomv
short MMG2D_dikomv(MMG5_pMesh mesh, MMG5_pSol disp)
Definition: mmg2d9.c:135
MMG2D_quickarea
double MMG2D_quickarea(double a[2], double b[2], double c[2])
Definition: tools.c:856
MG_PLUS
#define MG_PLUS
Definition: mmgcommon.h:78
MMG2D_chkmaniball
int MMG2D_chkmaniball(MMG5_pMesh mesh, int start, char istart)
Definition: mmg2d6.c:273
MG_NUL
#define MG_NUL
Definition: mmgcommon.h:152
MMG5_readDoubleSol3D
void MMG5_readDoubleSol3D(MMG5_pSol, FILE *, int, int, int)
Definition: inout.c:2152
MMG5_Info::mat
MMG5_pMat mat
Definition: libmmgtypes.h:459
MMG5_Info::mem
int mem
Definition: libmmgtypes.h:447
MMG5_mark_pointsOnReqEdge_fromTria
void MMG5_mark_pointsOnReqEdge_fromTria(MMG5_pMesh mesh)
Definition: isosiz.c:233
MMG5_surftri33_ani
double MMG5_surftri33_ani(MMG5_pMesh, MMG5_pTria, double *, double *, double *)
MMG5_solveDefmetregSys
int MMG5_solveDefmetregSys(MMG5_pMesh, double r[3][3], double *, double *, double *, double *, double, double, double)
MMG5_memSize
size_t MMG5_memSize(void)
Definition: tools.c:546
MMG5_Tria::base
int base
Definition: libmmgtypes.h:274
MMG5_displayLengthHisto
void MMG5_displayLengthHisto(MMG5_pMesh, int, double *, int, int, double, int, int, double, int, double *, int *, char)
Definition: quality.c:251
MMG5_minQualCheck
int MMG5_minQualCheck(int iel, double minqual, double alpha)
Definition: quality.c:343
MMG5_chkmsh
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgexterns.c:27
MMG5_paratmet
int MMG5_paratmet(double c0[3], double n0[3], double m[6], double c1[3], double n1[3], double mt[6])
Definition: mettools.c:652
MMG5_intersecmet22
int MMG5_intersecmet22(MMG5_pMesh mesh, double *m, double *n, double *mr)
Definition: mettools.c:254
MMG5_updatemetreq_ani
int MMG5_updatemetreq_ani(double *n, double dn[2], double vp[2][2])
Definition: anisosiz.c:1413
MMG2D_resetRef
int MMG2D_resetRef(MMG5_pMesh mesh)
Definition: mmg2d6.c:83
MMG2D_assignEdge
int MMG2D_assignEdge(MMG5_pMesh mesh)
Definition: hash_2d.c:214
MMG5_dNode_s::k
int k
Definition: mmgcommon.h:502
MMG5_loadSolHeader
int MMG5_loadSolHeader(const char *, int, FILE **, int *, int *, int *, int *, int *, int *, int **, long *, int)
Definition: inout.c:1968
MMG2D_EPSD
#define MMG2D_EPSD
Definition: mmg2d.h:51
MMG5_det3pt1vec
double MMG5_det3pt1vec(double c0[3], double c1[3], double c2[3], double v[3])
Definition: tools.c:805
MMG5_simred
int MMG5_simred(MMG5_pMesh, double *, double *, double dm[2], double dn[2], double vp[2][2])
Definition: anisosiz.c:1264
MMG5_memOption_memSet
void MMG5_memOption_memSet(MMG5_pMesh mesh)
Definition: tools.c:585
MMG5_pSol
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:576
MMG5_Info::fem
char fem
Definition: libmmgtypes.h:453
MMG5_sum_reqEdgeLengthsAtPoint
int MMG5_sum_reqEdgeLengthsAtPoint(MMG5_pMesh, MMG5_pSol, int ip0, int ip1)
Definition: isosiz.c:129
MMG5_scotchCall
int MMG5_scotchCall(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: librnbg.c:192
MMG5_defsiz_startingMessage
int MMG5_defsiz_startingMessage(MMG5_pMesh, MMG5_pSol, const char *funcname)
Definition: isosiz.c:77
MMG5_EPSD2
#define MMG5_EPSD2
Definition: mmgcommon.h:96
MMG5_defUninitSize
void MMG5_defUninitSize(MMG5_pMesh mesh, MMG5_pSol met)
Definition: anisosiz.c:224
MMG5_gradation_info
void MMG5_gradation_info(MMG5_pMesh)
Definition: isosiz.c:96
MMG5_bezierEdge
void MMG5_bezierEdge(MMG5_pMesh, int, int, double *, double *, char, double *)
MMG2D_boulet
int MMG2D_boulet(MMG5_pMesh mesh, int start, char ip, int *list)
Definition: boulep_2d.c:202
MMG5_gradsiz_ani
int MMG5_gradsiz_ani(MMG5_pMesh mesh, MMG5_pSol met, int *it)
Definition: anisosiz.c:1735
MMG5_writeLocalParamAtTri
int MMG5_writeLocalParamAtTri(MMG5_pMesh, MMG5_iNode *, FILE *)
Definition: mmg.c:162
MMG5_Mat::ref
int ref
Definition: libmmgtypes.h:435
MMG5_Info::renum
int renum
Definition: libmmgtypes.h:449
MG_SMSGN
#define MG_SMSGN(a, b)
Definition: mmgcommon.h:67
MMG2D_dichoto
int MMG2D_dichoto(MMG5_pMesh mesh, MMG5_pSol met, int k, int *vx)
Definition: mmg2d1.c:357
MMG5_caltri_iso
double MMG5_caltri_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: quality.c:198
MMG5_pMesh
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:557
MMG2D_adpcol
int MMG2D_adpcol(MMG5_pMesh mesh, MMG5_pSol met)
Definition: mmg2d1.c:688
MMG2D_colver3
int MMG2D_colver3(MMG5_pMesh mesh, int *list)
Definition: colver_2d.c:356
MMG5_Sol::dim
int dim
Definition: libmmgtypes.h:565
MMG5_interp_iso
int MMG5_interp_iso(double *ma, double *mb, double *mp, double t)
Definition: intmet.c:607
MMG2D_split1b
int MMG2D_split1b(MMG5_pMesh, int, char, int)
Definition: split_2d.c:238
MMG5_readFloatSol3D
void MMG5_readFloatSol3D(MMG5_pSol, FILE *, int, int, int)
Definition: inout.c:2106
MMG2D_split3_sim
int MMG2D_split3_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:586
MMG5_mmgUsage
void MMG5_mmgUsage(char *prog)
Definition: mmg.c:44
MMG5_Mesh::nt
int nt
Definition: libmmgtypes.h:516
MMG2D_lencurv
double(* MMG2D_lencurv)(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg2dexterns.c:5
MMG5_Hash::item
MMG5_hedge * item
Definition: libmmgtypes.h:501
MG_SET
#define MG_SET(flag, bit)
Definition: mmgcommon.h:167
MMG5_Mesh
MMG mesh structure.
Definition: libmmgtypes.h:509
MMG2D_delElt
int MMG2D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:105
MMG2D_swpmshlag
int MMG2D_swpmshlag(MMG5_pMesh mesh, MMG5_pSol met, double crit, int itdeg)
Definition: mmg2d9.c:401
MMG5_ridSizeInNormalDir
double MMG5_ridSizeInNormalDir(MMG5_pMesh, int, double *, MMG5_pBezier, double, double)
MMG2D_movtrilag
int MMG2D_movtrilag(MMG5_pMesh mesh, MMG5_pSol met, int itdeg)
Definition: mmg2d9.c:469
MMG5_Tria::flag
int flag
Definition: libmmgtypes.h:279
MMG5_surftri_iso
double MMG5_surftri_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
Definition: isosiz.c:42
MMG5_dNode_s::val
double val
Definition: mmgcommon.h:503
MMG2D_NULKAL
#define MMG2D_NULKAL
Definition: mmg2d.h:60
MMG2D_chkspl
int MMG2D_chkspl(MMG5_pMesh, MMG5_pSol, int, char)
Definition: split_2d.c:50
MMG2D_LOPTS
#define MMG2D_LOPTS
Definition: mmg2d.h:68
MMG2D_SHORTMAX
#define MMG2D_SHORTMAX
Definition: mmg2d.h:62
MMG5_Info::hmax
double hmax
Definition: libmmgtypes.h:445
MMG2D_gradsizreq
int(* MMG2D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:6
MMG2D_intmet
int(* MMG2D_intmet)(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: mmg2dexterns.c:4
MMG5_Mesh::info
MMG5_Info info
Definition: libmmgtypes.h:552
MMG2D_markSD
int MMG2D_markSD(MMG5_pMesh mesh)
Definition: mmg2d2.c:309
MMG5_Point::flag
int flag
Definition: libmmgtypes.h:221
MMG5_Edge::a
int a
Definition: libmmgtypes.h:244
MMG5_Mesh::npmax
int npmax
Definition: libmmgtypes.h:516
MG_CLR
#define MG_CLR(flag, bit)
Definition: mmgcommon.h:168
MMG2D_bdryenforcement
int MMG2D_bdryenforcement(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: enforcement_2d.c:34
MMG5_rmtr
int MMG5_rmtr(double r[3][3], double m[6], double mr[6])
Definition: tools.c:198
MG_ISO
#define MG_ISO
Definition: libmmgtypes.h:62
MMG2D_findTria
int MMG2D_findTria(MMG5_pMesh mesh, int ip)
Definition: locate_2d.c:215
tmp
tmp[*strlen0]
Definition: API_functionsf_2d.c:635
MMG5_chooseOutputFormat
void MMG5_chooseOutputFormat(MMG5_pMesh mesh, int *msh)
Definition: mmg.c:186
MMG5_solveDefmetrefSys
int MMG5_solveDefmetrefSys(MMG5_pMesh, MMG5_pPoint, int *, double r[3][3], double *, double *, double *, double *, double, double, double)
MMG5_ridSizeInTangentDir
double MMG5_ridSizeInTangentDir(MMG5_pMesh, MMG5_pPoint, int, int *, double, double)
Definition: anisosiz.c:725
MMG2D_dispmesh
int MMG2D_dispmesh(MMG5_pMesh mesh, MMG5_pSol disp, short t, int itdeg)
Definition: mmg2d9.c:177
MMG2D_gradsiz
int(* MMG2D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:8
MMG2D_colelt
int MMG2D_colelt(MMG5_pMesh mesh, MMG5_pSol met, int typchk)
Definition: mmg2d1.c:433
MMG5_dNode_s
Definition: mmgcommon.h:501
MMG5_inxt2
static const unsigned char MMG5_inxt2[6]
Definition: mmgcommon.h:470
MMG2D_gradsiz
int(* MMG2D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2dexterns.c:8
MMG5_SAFE_CALLOC
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
Definition: mmgcommon.h:289
MMG5_norpts
int MMG5_norpts(MMG5_pMesh, int, int, int, double *)
Definition: tools.c:129
MMG5_mmgIntextmet
int MMG5_mmgIntextmet(MMG5_pMesh, MMG5_pSol, int, double *, double *)
MMG5_hashNew
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:333
MMG5_Free_dlinkedList
void MMG5_Free_dlinkedList(MMG5_pMesh mesh, MMG5_dNode *liLi)
Definition: tools.c:792
MMG5_countLocalParamAtTri
int MMG5_countLocalParamAtTri(MMG5_pMesh, MMG5_iNode **)
Definition: mmg.c:117
MMG5_printTria
void MMG5_printTria(MMG5_pMesh mesh, char *fileName)
Definition: tools.c:519
MMG5_DEL_MEM
#define MMG5_DEL_MEM(mesh, ptr)
Definition: mmgcommon.h:266
MMG5_Mesh::edge
MMG5_pEdge edge
Definition: libmmgtypes.h:550
ier
int ier
Definition: API_functionsf_2d.c:594
MMG5_Info::ddebug
char ddebug
Definition: libmmgtypes.h:453
MMG2D_caltri
double(* MMG2D_caltri)(MMG5_pMesh, MMG5_pSol, MMG5_pTria)
Definition: mmg2dexterns.c:7
MMG5_Info::lag
char lag
Definition: libmmgtypes.h:453
MMG2D_LLONG
#define MMG2D_LLONG
Definition: mmg2d.h:65
MMG2D_adpspl
int MMG2D_adpspl(MMG5_pMesh mesh, MMG5_pSol met)
Definition: mmg2d1.c:632
MMG5_Info::min
double min[3]
Definition: libmmgtypes.h:446
MMG5_Mesh::gap
double gap
Definition: libmmgtypes.h:512
MMG5_bezierCP
int(* MMG5_bezierCP)(MMG5_pMesh, MMG5_Tria *, MMG5_pBezier, char)
Definition: mmgexterns.c:28
MMG2D_indPt
int MMG2D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_2d.c:69
MMG5_nonUnitNorPts
int MMG5_nonUnitNorPts(MMG5_pMesh, int, int, int, double *)
Definition: tools.c:73
MMG5_DISPREF
#define MMG5_DISPREF
Definition: mmgcommon.h:85
MMG2D_LSHRT
#define MMG2D_LSHRT
Definition: mmg2d.h:66
MMG2D_newElt
int MMG2D_newElt(MMG5_pMesh mesh)
Definition: zaldy_2d.c:85
MMG2D_estavglen
double MMG2D_estavglen(MMG5_pMesh mesh)
Definition: mmg2d9.c:41
MMG5_dNode
struct MMG5_dNode_s MMG5_dNode
MMG5_fillDefmetregSys
void MMG5_fillDefmetregSys(int, MMG5_pPoint, int, MMG5_Bezier, double r[3][3], double *, double *, double *, double *)
MMG5_Point::tmp
int tmp
Definition: libmmgtypes.h:219
MMG2D_anaelt
int MMG2D_anaelt(MMG5_pMesh mesh, MMG5_pSol met, int typchk)
Definition: mmg2d1.c:109
MMG5_boundingBox
int MMG5_boundingBox(MMG5_pMesh mesh)
Definition: scalem.c:45
MMG2D_LOPTL
#define MMG2D_LOPTL
Definition: mmg2d.h:67
MMG5_grad2metSurfreq
int MMG5_grad2metSurfreq(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz.c:1450
MMG2D_settagtriangles
int MMG2D_settagtriangles(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d2.c:99
MMG5_compute_meanMetricAtMarkedPoints
int(* MMG5_compute_meanMetricAtMarkedPoints)(MMG5_pMesh, MMG5_pSol)
Definition: mmgexterns.c:34
MMG5_SAFE_FREE
MMG5_SAFE_FREE(tmp)
MMG5_hashEdge
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:216
MMG5_mmgHashTria
int MMG5_mmgHashTria(MMG5_pMesh mesh, int *adja, MMG5_Hash *, int chkISO)
Definition: hash.c:50
MMG5_compute_meanMetricAtMarkedPoints_ani
int MMG5_compute_meanMetricAtMarkedPoints_ani(MMG5_pMesh mesh, MMG5_pSol met)
Definition: anisosiz.c:1690
MMG2D_insertpointdelone
int MMG2D_insertpointdelone(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: mmg2d2.c:165
MMG2D_norver
int MMG2D_norver(MMG5_pMesh mesh, int ref)
Definition: analys_2d.c:339
MMG5_Point::n
double n[3]
Definition: libmmgtypes.h:216
MMG2D_mmg2d9
int MMG2D_mmg2d9(MMG5_pMesh mesh, MMG5_pSol disp, MMG5_pSol met)
Definition: mmg2d9.c:530