45 #define M_MAX(a,b) (((a) > (b)) ? (a) : (b)) 46 #define M_MIN(a,b) (((a) < (b)) ? (a) : (b)) 51 #define MMG2D_EPSD 1.e-10 //e-20?? 52 #define MMG2D_EPSA 1.e-12 54 #define MMG2D_PRECI 1. 55 #define MMG2D_SIZE 0.75 56 #define MMG2D_ALPHA 0.28867513459 57 #define MMG2D_ALPHAD 3.464101615137755 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 65 #define MMG2D_LLONG 2.0 66 #define MMG2D_LSHRT 0.3 67 #define MMG2D_LOPTL 1.4 68 #define MMG2D_LOPTS 0.71 70 #define MMG2D_NPMAX 50000 71 #define MMG2D_NEDMAX 100000 72 #define MMG2D_NEMAX 100000 75 #define MMG2D_RETURN_AND_FREE(mesh,met,disp,val)do \ 77 if ( !MMG2D_Free_all(MMG5_ARG_start, \ 78 MMG5_ARG_ppMesh,&mesh,MMG5_ARG_ppMet,&met, \ 80 return MMG5_LOWFAILURE; \ 93 fprintf(stdout,
"\n Unexpected error:"); fflush(stdout);
96 fprintf(stdout,
" Abnormal stop\n");
break;
98 fprintf(stdout,
" Floating-point exception\n");
break;
100 fprintf(stdout,
" Illegal instruction\n");
break;
102 fprintf(stdout,
" Segmentation fault\n");
break;
105 fprintf(stdout,
" Program killed\n");
break;
140 #define MMG2D_POINT_REALLOC(mesh,sol,ip,wantedGap,law,o,tag ) do \ 144 MMG5_TAB_RECALLOC(mesh,mesh->point,mesh->npmax,wantedGap,MMG5_Point, \ 145 "larger point table",law); \ 147 mesh->npnil = mesh->np+1; \ 148 for (klink=mesh->npnil; klink<mesh->npmax-1; klink++) \ 149 mesh->point[klink].tmp = klink+1; \ 153 MMG5_ADD_MEM(mesh,(sol->size*(mesh->npmax-sol->npmax))*sizeof(double), \ 154 "larger solution",law); \ 155 MMG5_SAFE_REALLOC(sol->m,sol->size*(sol->npmax+1), \ 156 sol->size*(mesh->npmax+1), \ 157 double,"larger solution",law); \ 159 sol->npmax = mesh->npmax; \ 162 ip = MMG2D_newPt(mesh,o,tag); \ 168 #define MMG2D_TRIA_REALLOC(mesh,jel,wantedGap,law ) do \ 172 oldSiz = mesh->ntmax; \ 173 MMG5_TAB_RECALLOC(mesh,mesh->tria,mesh->ntmax,wantedGap,MMG5_Tria, \ 174 "larger tria table",law); \ 176 mesh->nenil = mesh->nt+1; \ 177 for (klink=mesh->nenil; klink<mesh->ntmax-1; klink++) \ 178 mesh->tria[klink].v[2] = klink+1; \ 180 if ( mesh->adja ) { \ 182 MMG5_ADD_MEM(mesh,3*(mesh->ntmax-oldSiz)*sizeof(int), \ 183 "larger adja table",law); \ 184 MMG5_SAFE_RECALLOC(mesh->adja,3*oldSiz+5,3*mesh->ntmax+5,int \ 185 ,"larger adja table",law); \ 189 jel = MMG2D_newElt(mesh); \ 256 int simred(
double *m1,
double *m2,
double *
m);
345 double long_ani(
double *ca,
double *cb,
double *ma,
double *mb);
346 double long_iso(
double *ca,
double *cb,
double *ma,
double *mb);
352 int interp_ani(
double *,
double *,
double * ,
double );
353 int interp_iso(
double *,
double *,
double * ,
double );
int interp_iso(double *, double *, double *, double)
int MMG2D_split1b(MMG5_pMesh, int, char, int)
Definition: split_2d.c:238
Bucket * pBucket
Definition: mmg2d.h:120
int MMG2D_split1(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:384
API headers for the mmg2d library.
int MMG2D_cutEdgeTriangle(MMG5_pMesh, int, int, int)
Definition: locate_2d.c:129
int MMG2D_assignEdge(MMG5_pMesh)
Definition: hash_2d.c:214
int(* MMG5_grad2met_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgcommon.h:631
static const int MMG2D_iare[3][2]
Definition: mmg2d.h:132
HashTable * pHashTable
Definition: mmg2d.h:130
int MMG2D_Free_structures_var(va_list argptr)
Definition: variadic_2d.c:340
! double max[3]
Definition: libmmgtypesf.h:496
! double * m
Definition: libmmgtypesf.h:627
int MMG2D_split2_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:450
int MMG2D_isSplit(MMG5_pMesh, int, int *, int *)
Definition: mmg2d6.c:45
int MMG2D_dichoto(MMG5_pMesh, MMG5_pSol, int, int *)
Definition: mmg2d1.c:357
int MMG2D_delone(MMG5_pMesh, MMG5_pSol, int, int *, int)
Definition: delone_2d.c:264
int MMG2D_parsop(MMG5_pMesh, MMG5_pSol)
Definition: libmmg2d_tools.c:67
int MMG2D_setMeshSize_alloc(MMG5_pMesh)
Definition: zaldy_2d.c:237
int MMG2D_anatri(MMG5_pMesh, MMG5_pSol, char)
Definition: mmg2d1.c:39
int MMG2D_hashNew(HashTable *hash, int hsize, int hmax)
Definition: hash_2d.c:28
int MMG2D_settagtriangles(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:99
int MMG2D_coorbary(MMG5_pMesh, MMG5_pTria, double c[2], double *, double *, double *)
Definition: locate_2d.c:37
int MMG2D_norver(MMG5_pMesh, int)
Definition: analys_2d.c:339
int MMG2D_chkswp(MMG5_pMesh, MMG5_pSol, int, char, char)
Definition: swapar_2d.c:128
int MMG2D_colver2(MMG5_pMesh, int *)
Definition: colver_2d.c:418
! double c[3]
Definition: libmmgtypesf.h:255
double MMG2D_caltri_ani(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:95
int MMG2D_velextLS(MMG5_pMesh, MMG5_pSol)
int * head
Definition: mmg2d.h:117
int MMG2D_analys(MMG5_pMesh)
Definition: analys_2d.c:680
int optlen_iso_bar(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
Definition: libmmgtypes.h:563
int MMG2D_singul(MMG5_pMesh, int)
Definition: analys_2d.c:206
Hedge * item
Definition: mmg2d.h:128
int MMG2D_kiupop(pQueue q)
int(* MMG5_chkmsh)(MMG5_pMesh, int, int)
Definition: mmgcommon.h:628
int MMG2D_resetRef(MMG5_pMesh)
Definition: mmg2d6.c:83
int(* MMG5_grad2metreq_ani)(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: mmgcommon.h:632
int MMG2D_snapval(MMG5_pMesh, MMG5_pSol, double *)
Definition: mmg2d6.c:183
int MMG2D_adptri(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:542
int MMG2D_movintpt_ani(MMG5_pMesh, MMG5_pSol, int, int *, char)
Definition: anisomovpt_2d.c:37
int MMG2D_ismaniball(MMG5_pMesh, MMG5_pSol, int, char)
Definition: mmg2d6.c:113
MMG5_Tria * MMG5_pTria
Definition: libmmgtypes.h:283
int MMG2D_savemet_db(MMG5_pMesh, MMG5_pSol, char *, char)
Definition: inout_2d.c:1647
int MMG2D_colver(MMG5_pMesh, int, int *)
Definition: colver_2d.c:270
static const unsigned int MMG2D_idir[5]
Definition: mmg2d.h:134
int MMG2D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:105
int MMG2D_boulen(MMG5_pMesh, int, char, int *, int *, double *)
Definition: boulep_2d.c:96
int * link
Definition: mmg2d.h:118
int MMG2D_gradsiz_ani(MMG5_pMesh, MMG5_pSol)
int MMG2D_intmet_iso(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_2d.c:38
int MMG2D_memOption(MMG5_pMesh mesh)
Definition: zaldy_2d.c:218
int MMG2D_mmg2d2(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d2.c:495
int MMG2D_Free_all_var(va_list argptr)
Definition: variadic_2d.c:239
void MMG2D_kiufree(pQueue q)
MMG5_Sol * MMG5_pSol
Definition: libmmgtypes.h:576
int interp_ani(double *, double *, double *, double)
int MMG2D_cutEdge(MMG5_pMesh, MMG5_pTria, MMG5_pPoint, MMG5_pPoint)
Definition: locate_2d.c:90
int MMG2D_splitbar(MMG5_pMesh, int, int)
Definition: split_2d.c:715
int MMG2D_chkspl(MMG5_pMesh, MMG5_pSol, int, char)
Definition: split_2d.c:50
int MMG2D_baseBdry(MMG5_pMesh mesh)
int MMG2D_newElt(MMG5_pMesh mesh)
Definition: zaldy_2d.c:85
int(* MMG2D_gradsizreq)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d.h:364
Queue * pQueue
Definition: mmg2d.h:113
int MMG2D_gradsizreq_ani(MMG5_pMesh, MMG5_pSol)
int MMG2D_split2(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:499
int MMG2D_pack(MMG5_pMesh, MMG5_pSol)
Definition: hash_2d.c:354
int MMG2D_colver3(MMG5_pMesh, int *)
Definition: colver_2d.c:356
int MMG2D_getIniRef(MMG5_pMesh, int)
Definition: mmg2d6.c:70
double MMG2D_caltri_iso(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
Definition: quality_2d.c:59
int MMG2D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_2d.c:69
int optlen_iso(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
int MMG5_mmg2dChkmsh(MMG5_pMesh, int, int)
Definition: chkmsh_2d.c:34
int MMG2D_mmg2d6(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:617
int MMG2D_chkcol(MMG5_pMesh, MMG5_pSol, int, char, int *, char)
Definition: colver_2d.c:41
int MMG5_getnElt(MMG5_pMesh mesh, int n)
Definition: zaldy_2d.c:128
int MMG2D_hashTria(MMG5_pMesh)
Definition: hash_2d.c:49
int MMG2D_bdryEdge(MMG5_pMesh)
Definition: hash_2d.c:275
const int va_list argptr
Definition: API_functionsf_2d.c:591
MMG5_pMesh MMG5_pSol * sol
Definition: API_functionsf_2d.c:63
int(* MMG2D_optlen)(MMG5_pMesh, MMG5_pSol, double, int)
Definition: mmg2d.h:361
int MMG2D_adpspl(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:632
int MMG2D_cuttri_ls(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:413
int MMG2D_mmg2d9(MMG5_pMesh, MMG5_pSol, MMG5_pSol)
Definition: mmg2d9.c:530
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
int MMG2D_findtrianglestate(MMG5_pMesh, int, int, int, int, int, int)
Definition: mmg2d2.c:132
int MMG2D_boulet(MMG5_pMesh, int, char, int *)
Definition: boulep_2d.c:202
int MMG2D_kiudel(pQueue q, int iel)
int MMG2D_outqua(MMG5_pMesh, MMG5_pSol)
Definition: quality_2d.c:156
static void MMG2D_excfun(int sigid)
Definition: mmg2d.h:92
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
int MMG2D_isInTriangle(MMG5_pMesh, int, double c[2])
Definition: locate_2d.c:69
int MMG2D_defaultmet_2d(MMG5_pMesh, MMG5_pSol, int, char)
Definition: anisosiz_2d.c:49
int MMG2D_hashEdge(pHashTable edgeTable, int iel, int ia, int ib)
Definition: hash_2d.c:154
int MMG2D_findTria(MMG5_pMesh, int)
Definition: locate_2d.c:215
int MMG2D_chkedg(MMG5_pMesh, int)
Definition: bezier_2d.c:28
int MMG2D_bezierCurv(MMG5_pMesh, int, char, double, double *, double *)
Definition: bezier_2d.c:117
int(* MMG2D_gradsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d.h:363
int MMG2D_bouleendp(MMG5_pMesh, int, char, int *, int *)
Definition: boulep_2d.c:255
MMG5_Mesh * MMG5_pMesh
Definition: libmmgtypes.h:557
int MMG2D_chkmanimesh(MMG5_pMesh)
Definition: mmg2d6.c:343
int size
Definition: mmg2d.h:127
int MMG2D_defsiz_ani(MMG5_pMesh, MMG5_pSol)
Definition: anisosiz_2d.c:359
void MMG2D_delPt(MMG5_pMesh mesh, int ip)
Definition: zaldy_2d.c:57
double long_iso(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:26
! int16_t tag
Definition: libmmgtypesf.h:263
size_t MMG5_memSize(void)
Definition: tools.c:546
void MMG2D_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions_2d.c:80
double long_ani(double *ca, double *cb, double *ma, double *mb)
Definition: length_2d.c:46
int MMG2D_prilen(MMG5_pMesh, MMG5_pSol)
Definition: length_2d.c:124
int MMG5_interpmet22(MMG5_pMesh, double *, double *, double, double *)
Definition: intmet_2d.c:54
int MMG2D_anaelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:109
int MMG2D_movedgpt(MMG5_pMesh, MMG5_pSol, int, int *, char)
Definition: movpt_2d.c:52
double(* MMG2D_lencurv)(MMG5_pMesh, MMG5_pSol, int, int)
Definition: mmg2d.h:359
int lissmet_ani(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: lissmet_2d.c:47
int MMG2D_boulep(MMG5_pMesh, int, int, int *)
Definition: boulep_2d.c:34
int MMG2D_split3_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:586
pQueue MMG2D_kiuini(MMG5_pMesh mesh, int nbel, double declic, int base)
! double min[3]
Definition: libmmgtypesf.h:496
int MMG2D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_2d.c:45
int MMG2D_set_metricAtPointsOnReqEdges(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_2d.c:73
int MMG2D_mmg2d1(MMG5_pMesh, MMG5_pSol)
int MMG2D_split1_sim(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:339
int MMG2D_savemesh_db(MMG5_pMesh, char *, char)
Definition: inout_2d.c:1558
int MMG2D_zaldy(MMG5_pMesh mesh)
Definition: zaldy_2d.c:283
int size
Definition: mmg2d.h:116
int MMG2D_intmet_ani(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: intmet_2d.c:237
int MMG2D_mmg2d1n(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:806
MMG mesh structure.
Definition: libmmgtypes.h:509
int MMG2D_defmetbdy_2d(MMG5_pMesh, MMG5_pSol, int, char)
Definition: anisosiz_2d.c:84
int MMG2D_Init_mesh_var(va_list argptr)
Definition: variadic_2d.c:146
int MMG2D_movtri(MMG5_pMesh, MMG5_pSol, int, char)
Definition: mmg2d1.c:745
int cur
Definition: mmg2d.h:111
int MMG2D_savedisp_db(MMG5_pMesh mesh, MMG5_pSol, char *, char)
Definition: inout_2d.c:1762
int lissmet_iso(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_grad2met_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz_2d.c:572
int MMG2D_locateEdge(MMG5_pMesh, int, int, int *, int *)
Definition: locate_2d.c:323
int MMG2D_setref_ls(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d6.c:553
static void MMG2D_Set_commonFunc()
Definition: mmg2d.h:375
int MMG2D_split3(MMG5_pMesh, MMG5_pSol, int, int vx[3])
Definition: split_2d.c:624
! double hmax
Definition: libmmgtypesf.h:242
int MMG2D_adpcol(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d1.c:688
int MMG2D_chkor(MMG5_pMesh)
Definition: chkmsh_2d.c:404
int * stack
Definition: mmg2d.h:111
int MMG2D_bdryenforcement(MMG5_pMesh, MMG5_pSol)
Definition: enforcement_2d.c:34
! double n[3]
Definition: libmmgtypesf.h:256
double MMG2D_lencurv_iso(MMG5_pMesh, MMG5_pSol, int, int)
Definition: length_2d.c:62
int MMG2D_cenrad_iso(MMG5_pMesh, double *, double *, double *)
Definition: cenrad_2d.c:42
int MMG2D_unscaleMesh(MMG5_pMesh, MMG5_pSol)
Definition: scalem_2d.c:311
int MMG2D_defsiz_iso(MMG5_pMesh, MMG5_pSol)
Definition: isosiz_2d.c:129
double MMG2D_quickcal(MMG5_pMesh, MMG5_pTria)
Definition: quality_2d.c:45
int MMG2D_swpmsh(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:507
int MMG2D_regnor(MMG5_pMesh)
Definition: analys_2d.c:444
int MMG2D_savenor_db(MMG5_pMesh, char *, char)
Definition: inout_2d.c:1707
double MMG2D_lencurv_ani(MMG5_pMesh, MMG5_pSol, int, int)
Definition: length_2d.c:81
int MMG2D_swapar(MMG5_pMesh, int, char)
Definition: swapar_2d.c:221
int(* MMG2D_defsiz)(MMG5_pMesh, MMG5_pSol)
Definition: mmg2d.h:365
int MMG2D_freeLocalPar(MMG5_pMesh)
Definition: libmmg2d_tools.c:190
int optlen_ani(MMG5_pMesh mesh, MMG5_pSol sol, double declic, int base)
int MMG2D_cavity(MMG5_pMesh, MMG5_pSol, int, int *)
Definition: delone_2d.c:175
int MMG2D_colelt(MMG5_pMesh, MMG5_pSol, int)
Definition: mmg2d1.c:433
int MMG2D_setadj(MMG5_pMesh)
Definition: analys_2d.c:48
int MMG2D_kiuput(pQueue q, int iel)
int MMG2D_scaleMesh(MMG5_pMesh, MMG5_pSol)
Definition: scalem_2d.c:47
void MMG2D_solTruncatureForOptim(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmg2d.c:49
int MMG2D_sum_reqEdgeLengthsAtPoint(MMG5_pMesh, MMG5_pSol, MMG5_pTria, char)
Definition: isosiz_2d.c:49
Definition: libmmgtypes.h:270
int nxt
Definition: mmg2d.h:123
int simred(double *m1, double *m2, double *m)
int MMG2D_swapdelone(MMG5_pMesh, MMG5_pSol, int, char, double, int *)
Definition: swapar_2d.c:39
int MMG2D_chkmsh(MMG5_pMesh)
Definition: chkmsh_2d.c:204
double(* MMG2D_caltri)(MMG5_pMesh, MMG5_pSol, MMG5_pTria)
Definition: mmg2d.h:360
int(* MMG2D_intmet)(MMG5_pMesh, MMG5_pSol, int, char, int, double)
Definition: mmg2d.h:362
! int base
Definition: libmmgtypesf.h:288
int MMG2D_grad2metreq_ani(MMG5_pMesh, MMG5_pSol, MMG5_pTria, int, int)
Definition: anisosiz_2d.c:635
int MMG2D_newPt(MMG5_pMesh mesh, double c[2], int16_t tag)
Definition: zaldy_2d.c:38
int MMG2D_Free_names_var(va_list argptr)
Definition: variadic_2d.c:440
void MMG5_delEdge(MMG5_pMesh mesh, int iel)
Definition: zaldy_2d.c:70
static const int MMG2D_iopp[3][2]
Definition: mmg2d.h:133
int MMG2D_movintpt(MMG5_pMesh, MMG5_pSol, int, int *, char)
Definition: movpt_2d.c:212
static const unsigned int MMG2D_inxt[5]
Definition: mmg2d.h:135