Go to the documentation of this file.
37 #ifndef _INLINED_FUNC_H
38 #define _INLINED_FUNC_H
55 double *m0,
double *m1,int8_t isedg) {
57 double gammaprim0[3],gammaprim1[3],t[3],*n1,*n2,ux,uy,uz,ps1,ps2,l0,l1;
58 static int8_t mmgWarn=0;
63 ux = p1->
c[0] - p0->
c[0];
64 uy = p1->
c[1] - p0->
c[1];
65 uz = p1->
c[2] - p0->
c[2];
74 memcpy(t,p0->
n,3*
sizeof(
double));
75 ps1 = ux*t[0] + uy*t[1] + uz*t[2];
76 gammaprim0[0] = ps1*t[0];
77 gammaprim0[1] = ps1*t[1];
78 gammaprim0[2] = ps1*t[2];
85 ps1 = ux*n1[0] + uy*n1[1] + uz*n1[2];
86 ps2 = ux*n2[0] + uy*n2[1] + uz*n2[2];
88 if ( fabs(ps2) < fabs(ps1) ) {
96 ps1 = ux*n1[0] + uy*n1[1] + uz*n1[2];
102 ps1 = ux*n1[0] + uy*n1[1] + uz*n1[2];
104 gammaprim0[0] = ux - ps1*n1[0];
105 gammaprim0[1] = uy - ps1*n1[1];
106 gammaprim0[2] = uz - ps1*n1[2];
115 memcpy(t,p1->
n,3*
sizeof(
double));
116 ps1 = -ux*t[0] - uy*t[1] - uz*t[2];
117 gammaprim1[0] = ps1*t[0];
118 gammaprim1[1] = ps1*t[1];
119 gammaprim1[2] = ps1*t[2];
125 ps1 = -ux*n1[0] - uy*n1[1] - uz*n1[2];
126 ps2 = -ux*n2[0] - uy*n2[1] - uz*n2[2];
128 if ( fabs(ps2) < fabs(ps1) ) {
136 ps1 = - ux*n1[0] - uy*n1[1] - uz*n1[2];
142 ps1 = -ux*n1[0] - uy*n1[1] - uz*n1[2];
144 gammaprim1[0] = - ux - ps1*n1[0];
145 gammaprim1[1] = - uy - ps1*n1[1];
146 gammaprim1[2] = - uz - ps1*n1[2];
153 l0 = m0[0]*gammaprim0[0]*gammaprim0[0] + m0[3]*gammaprim0[1]*gammaprim0[1] \
154 + m0[5]*gammaprim0[2]*gammaprim0[2] \
155 + 2.0*m0[1]*gammaprim0[0]*gammaprim0[1] + 2.0*m0[2]*gammaprim0[0]*gammaprim0[2] \
156 + 2.0*m0[4]*gammaprim0[1]*gammaprim0[2];
158 l1 = m1[0]*gammaprim1[0]*gammaprim1[0] + m1[3]*gammaprim1[1]*gammaprim1[1] \
159 + m1[5]*gammaprim1[2]*gammaprim1[2] \
160 +2.0*m1[1]*gammaprim1[0]*gammaprim1[1] + 2.0*m1[2]*gammaprim1[0]*gammaprim1[2] \
161 + 2.0*m1[4]*gammaprim1[1]*gammaprim1[2];
165 fprintf(stderr,
" ## Warning: %s: at least 1 negative edge length "
166 "(%e)\n",__func__,l0);
173 fprintf(stderr,
" ## Warning: %s: at least 1 negative edge length "
174 "(%e)\n",__func__,l1);
179 l0 = 0.5*(sqrt(l0) + sqrt(l1));
200 double *m0,*m1,met0[6],met1[6],ux,uy,uz,rbasis[3][3];
201 static int8_t mmgWarn = 0;
206 ux = p1->
c[0] - p0->
c[0];
207 uy = p1->
c[1] - p0->
c[1];
208 uz = p1->
c[2] - p0->
c[2];
218 fprintf(stderr,
" ## Warning: %s: a- unable to compute at least 1 ridge"
219 " metric.\n",__func__);
237 fprintf(stderr,
" ## Warning: %s: b- unable to compute at least 1 ridge"
238 " metric.\n",__func__);
267 int np0,
int np1,int8_t isedg) {
293 double h1,h2,l,r,len;
299 l = (p2->
c[0]-p1->
c[0])*(p2->
c[0]-p1->
c[0]) + (p2->
c[1]-p1->
c[1])*(p2->
c[1]-p1->
c[1]) \
300 + (p2->
c[2]-p1->
c[2])*(p2->
c[2]-p1->
c[2]);
303 len = fabs(r) <
MMG5_EPS ? l / h1 : l / (h2-h1) * log1p(r);
int MMG2D_hashTria(MMG5_pMesh mesh)
Definition: hash_2d.c:35
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:274
#define MG_BDY
Definition: mmgcommon.h:144
int nenil
Definition: libmmgtypes.h:570
double c[3]
Definition: libmmgtypes.h:242
static double MMG5_lenEdg(MMG5_pMesh mesh, int np0, int np1, double *m0, double *m1, int8_t isedg)
Definition: inlined_functions.h:54
int namax
Definition: libmmgtypes.h:559
int MMG2D_indElt(MMG5_pMesh mesh, int kel)
Definition: tools_2d.c:45
#define MG_MAX(a, b)
Definition: mmgcommon.h:135
int MMG2D_hashQuad(MMG5_pMesh mesh)
Definition: hash_2d.c:151
int v[3]
Definition: libmmgtypes.h:303
int MMG5_hashEdgeTag(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int16_t tag)
Definition: hash.c:307
Definition: libmmgtypes.h:610
#define MMG5_KA
Definition: mmgcommon.h:172
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:217
#define MG_SIN(tag)
Definition: mmgcommon.h:164
int s
Definition: libmmgtypes.h:252
int ref
Definition: libmmgtypes.h:276
#define MG_REF
Definition: mmgcommon.h:140
#define MG_EOK(pt)
Definition: mmgcommon.h:161
#define MG_NOM
Definition: mmgcommon.h:143
#define KTA
Definition: hash_2d.c:25
int MMG2D_swapdelone(MMG5_pMesh, MMG5_pSol, int, int8_t, double, int *)
Definition: swapar_2d.c:39
int nxt
Definition: libmmgtypes.h:532
int MMG2D_cutEdgeTriangle(MMG5_pMesh mesh, int k, int ia, int ib)
Definition: locate_2d.c:129
int size
Definition: libmmgtypes.h:616
int MMG5_hashGet(MMG5_Hash *hash, int a, int b)
Definition: hash.c:364
int imprim
Definition: libmmgtypes.h:484
int b
Definition: libmmgtypes.h:532
#define MMG2D_LONMAX
Definition: mmg2d.h:58
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:542
static double MMG5_lenSurfEdg33_ani(MMG5_pMesh mesh, MMG5_pSol met, int np0, int np1, int8_t isedg)
Definition: inlined_functions.h:266
static const uint8_t MMG5_iprv2[3]
Definition: mmgcommon.h:548
MMG5_pPoint point
Definition: libmmgtypes.h:589
int edg[3]
Definition: libmmgtypes.h:308
int edg[4]
Definition: libmmgtypes.h:339
int16_t tag[3]
Definition: libmmgtypes.h:311
int opnbdy
Definition: libmmgtypes.h:480
int MMG5_hashUpdate(MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:271
int MMG2D_locateEdge(MMG5_pMesh mesh, int ia, int ib, int *kdep, int *list)
Definition: locate_2d.c:323
int base
Definition: libmmgtypes.h:564
static double MMG5_lenSurfEdg_iso(MMG5_pMesh mesh, MMG5_pSol met, int ip1, int ip2, int8_t isedg)
Definition: inlined_functions.h:291
int MMG2D_boulet(MMG5_pMesh mesh, int start, int8_t ip, int *list)
Definition: boulep_2d.c:229
MMG5_pMesh MMG5_pSol * sol
Definition: API_functionsf_2d.c:63
#define MG_VOK(ppt)
Definition: mmgcommon.h:160
static const uint8_t MMG5_inxt2[6]
Definition: mmgcommon.h:547
int np
Definition: libmmgtypes.h:559
int nxt
Definition: libmmgtypes.h:543
static const unsigned int MMG2D_idir[5]
Definition: mmg2d.h:130
int k
Definition: libmmgtypes.h:533
int s
Definition: libmmgtypes.h:534
int * adja
Definition: libmmgtypes.h:572
MMG5_pTria tria
Definition: libmmgtypes.h:595
int max
Definition: libmmgtypes.h:543
#define MG_CRN
Definition: mmgcommon.h:145
int a
Definition: libmmgtypes.h:532
#define MG_REQ
Definition: mmgcommon.h:142
#define M_MAX(a, b)
Definition: mmg2d.h:45
MMG5_pMesh * mesh
Definition: API_functionsf_2d.c:63
#define MMG5_ADD_MEM(mesh, size, message, law)
Definition: mmgcommon.h:290
MMG5_pQuad quadra
Definition: libmmgtypes.h:596
#define MG_GEO
Definition: mmgcommon.h:141
int ref
Definition: libmmgtypes.h:304
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:241
int8_t ddebug
Definition: libmmgtypes.h:487
int b
Definition: libmmgtypes.h:275
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:394
double * m
Definition: libmmgtypes.h:618
static double MMG5_lenSurfEdg_ani(MMG5_pMesh mesh, MMG5_pSol met, int np0, int np1, int8_t isedg)
Definition: inlined_functions.h:198
int v[4]
Definition: libmmgtypes.h:336
#define MG_MIN(a, b)
Definition: mmgcommon.h:136
int na
Definition: libmmgtypes.h:559
int16_t tag
Definition: libmmgtypes.h:279
#define MMG5_EPS
Definition: eigenv.h:32
int16_t tag
Definition: libmmgtypes.h:253
double n1[3]
Definition: libmmgtypes.h:264
Definition: libmmgtypes.h:301
#define MG_NOSURF
Definition: mmgcommon.h:146
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:531
int nquad
Definition: libmmgtypes.h:560
int ref
Definition: libmmgtypes.h:337
int base
Definition: libmmgtypes.h:305
int nsd
Definition: libmmgtypes.h:485
int MMG2D_assignEdge(MMG5_pMesh mesh)
Definition: hash_2d.c:333
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:590
int npnil
Definition: libmmgtypes.h:569
int xp
Definition: libmmgtypes.h:248
int base
Definition: libmmgtypes.h:277
int16_t tag[4]
Definition: libmmgtypes.h:341
#define MMG5_KB
Definition: mmgcommon.h:173
Definition: libmmgtypes.h:335
int nt
Definition: libmmgtypes.h:559
MMG5_hedge * item
Definition: libmmgtypes.h:544
static const uint8_t MMG2D_idir_q[4][2]
idir[i]: vertices of edge i for a quad
Definition: mmg2d.h:76
MMG mesh structure.
Definition: libmmgtypes.h:552
int siz
Definition: libmmgtypes.h:543
double n2[3]
Definition: libmmgtypes.h:264
int flag
Definition: libmmgtypes.h:310
int MMG5_mmgHashTria(MMG5_pMesh mesh, int *adjt, MMG5_Hash *hash, int chkISO)
Definition: hash.c:50
int * adjq
Definition: libmmgtypes.h:584
MMG5_Info info
Definition: libmmgtypes.h:599
int a
Definition: libmmgtypes.h:275
int npmax
Definition: libmmgtypes.h:559
int MMG2D_bdryenforcement(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: enforcement_2d.c:34
#define MG_ISO
Definition: libmmgtypes.h:65
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
Definition: mmgcommon.h:304
#define MMG5_TAB_RECALLOC(mesh, ptr, initSize, wantedGap, type, message, law)
Definition: mmgcommon.h:364
#define MMG5_DEL_MEM(mesh, ptr)
Definition: mmgcommon.h:281
MMG5_pEdge edge
Definition: libmmgtypes.h:597
int ier
Definition: API_functionsf_2d.c:730
int MMG2D_pack(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met)
Definition: hash_2d.c:514
#define MMG5_GAP
Definition: mmgcommon.h:127
double gap
Definition: libmmgtypes.h:555
void MMG2D_keep_only1Subdomain(MMG5_pMesh mesh, int nsd)
Definition: tools_2d.c:91
int MMG2D_bdryEdge(MMG5_pMesh mesh)
Definition: hash_2d.c:433
int MMG2D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_2d.c:69
if(!ier) exit(EXIT_FAILURE)
int tmp
Definition: libmmgtypes.h:249
int ntmax
Definition: libmmgtypes.h:559
#define M_MIN(a, b)
Definition: mmg2d.h:46
#define KTB
Definition: hash_2d.c:26
double n[3]
Definition: libmmgtypes.h:243