Go to the documentation of this file.
37 #ifndef _INLINED_FUNC_H
38 #define _INLINED_FUNC_H
55 double *m0,
double *m1,
char isedg) {
57 double gammaprim0[3],gammaprim1[3],t[3],*n1,*n2,ux,uy,uz,ps1,ps2,l0,l1;
58 static char 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 char 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,
char 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) * log(r+1.0);
int nprism
Definition: libmmgtypes.h:517
Structure to store edges of a MMG mesh.
Definition: libmmgtypes.h:243
static int MMG5_setVertexNmTag(MMG5_pMesh mesh)
Definition: hash_3d.c:678
MMG5_pPrism prism
Definition: libmmgtypes.h:546
int xtmax
Definition: libmmgtypes.h:516
#define MG_BDY
Definition: mmgcommon.h:145
int nenil
Definition: libmmgtypes.h:527
static const unsigned char MMG5_iarf_pr[5][5]
iarf[i]: edges of face i for a prism
Definition: mmg3d.h:164
double c[3]
Definition: libmmgtypes.h:215
int namax
Definition: libmmgtypes.h:516
Cell of the hash table of geom edges.
Definition: libmmgtypes.h:466
int siz
Definition: libmmgtypes.h:480
#define MG_MAX(a, b)
Definition: mmgcommon.h:136
static double MMG5_lenSurfEdg_iso(MMG5_pMesh mesh, MMG5_pSol met, int ip1, int ip2, char isedg)
Definition: inlined_functions.h:291
int v[3]
Definition: libmmgtypes.h:272
static double MMG5_lenSurfEdg_ani(MMG5_pMesh mesh, MMG5_pSol met, int np0, int np1, char isedg)
Definition: inlined_functions.h:198
Definition: libmmgtypes.h:339
Definition: libmmgtypes.h:563
#define MMG5_KA
Definition: mmgcommon.h:171
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:216
#define MG_SIN(tag)
Definition: mmgcommon.h:163
int MMG3D_hashTetra(MMG5_pMesh mesh, int pack)
Definition: hash_3d.c:180
int ref
Definition: libmmgtypes.h:245
int cc
Definition: libmmgtypes.h:275
#define MG_REF
Definition: mmgcommon.h:141
#define MG_EOK(pt)
Definition: mmgcommon.h:160
int MMG5_hTag(MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:841
int16_t tag
Definition: libmmgtypes.h:471
int MMG5_deltag(MMG5_pMesh mesh, int start, int ia, int16_t tag)
Definition: boulep_3d.c:957
#define MG_NOM
Definition: mmgcommon.h:144
int max
Definition: libmmgtypes.h:480
int MMG5_bdryUpdate(MMG5_pMesh mesh)
Definition: hash_3d.c:1988
int xt
Definition: libmmgtypes.h:525
int MMG5_settag(MMG5_pMesh mesh, int start, int ia, int16_t tag, int edg)
Definition: boulep_3d.c:839
char iso
Definition: libmmgtypes.h:453
int nxt
Definition: libmmgtypes.h:489
Hash table to store geometric edges.
Definition: libmmgtypes.h:478
int MMG5_hashGet(MMG5_Hash *hash, int a, int b)
Definition: hash.c:303
int ref[5]
Definition: libmmgtypes.h:416
static int MMG5_bdryTria(MMG5_pMesh mesh, int ntmesh)
Definition: hash_3d.c:1176
int b
Definition: libmmgtypes.h:489
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:499
int16_t tag[6]
Definition: libmmgtypes.h:363
MMG5_pPoint point
Definition: libmmgtypes.h:542
int16_t ftag[4]
Definition: libmmgtypes.h:361
#define MG_GET(flag, bit)
Definition: mmgcommon.h:169
int edg[3]
Definition: libmmgtypes.h:277
void MMG3D_coquilFaceSecondLoopInit(MMG5_pMesh mesh, int piv, char *iface, char *ia, int *list, int *ilist, int *it1, int *pradj, int *adj)
Definition: boulep_3d.c:1424
int16_t tag[3]
Definition: libmmgtypes.h:280
int opnbdy
Definition: libmmgtypes.h:448
static double MMG5_lenEdg(MMG5_pMesh mesh, int np0, int np1, double *m0, double *m1, char isedg)
Definition: inlined_functions.h:54
int MMG5_hashUpdate(MMG5_Hash *hash, int a, int b, int k)
Definition: hash.c:270
int base
Definition: libmmgtypes.h:521
static const unsigned char MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:145
#define MG_VOK(ppt)
Definition: mmgcommon.h:159
int np
Definition: libmmgtypes.h:516
int nxt
Definition: libmmgtypes.h:500
int MMG3D_indPt(MMG5_pMesh mesh, int kp)
Definition: tools_3d.c:866
int k
Definition: libmmgtypes.h:490
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:545
int s
Definition: libmmgtypes.h:491
int ne
Definition: libmmgtypes.h:516
int * adja
Definition: libmmgtypes.h:529
static const unsigned char MMG5_iprv2[3]
Definition: mmgcommon.h:471
int v[6]
Definition: libmmgtypes.h:401
MMG5_pTria tria
Definition: libmmgtypes.h:548
int max
Definition: libmmgtypes.h:500
#define MG_CRN
Definition: mmgcommon.h:146
int a
Definition: libmmgtypes.h:489
#define MG_REQ
Definition: mmgcommon.h:143
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
#define MMG5_ADD_MEM(mesh, size, message, law)
Definition: mmgcommon.h:275
static const unsigned char MMG5_idir_pr[5][4]
idir[i]: vertices of face i for a prism
Definition: mmg3d.h:162
#define MG_GEO
Definition: mmgcommon.h:142
#define MMG5_SAFE_RECALLOC(ptr, prevSize, newSize, type, message, law)
Definition: mmgcommon.h:326
int MMG5_paktet(MMG5_pMesh mesh)
Definition: hash_3d.c:49
MMG5_HGeom htab
Definition: libmmgtypes.h:551
int ref
Definition: libmmgtypes.h:273
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
int MMG5_bdryPerm(MMG5_pMesh mesh)
Definition: hash_3d.c:2077
int MMG3D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_3d.c:117
int xpr
Definition: libmmgtypes.h:405
int MMG5_hNew(MMG5_pMesh mesh, MMG5_HGeom *hash, int hsiz, int hmax)
Definition: hash_3d.c:1006
Structure to store the surface prism of a MMG mesh.
Definition: libmmgtypes.h:415
int MMG5_chkBdryTria(MMG5_pMesh mesh)
Definition: hash_3d.c:1402
int b
Definition: libmmgtypes.h:244
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:333
double * m
Definition: libmmgtypes.h:571
int16_t MMG5_openCoquilTravel(MMG5_pMesh mesh, int na, int nb, int *adj, int *piv, char *iface, char *i)
Definition: boulep_3d.c:1641
int nxt
Definition: libmmgtypes.h:470
int edg[9]
Definition: libmmgtypes.h:418
MMG5_hgeom * geom
Definition: libmmgtypes.h:479
int nxt
Definition: libmmgtypes.h:480
#define MG_MIN(a, b)
Definition: mmgcommon.h:137
int na
Definition: libmmgtypes.h:516
char imprim
Definition: libmmgtypes.h:453
int16_t tag
Definition: libmmgtypes.h:248
#define MMG5_EPS
Definition: eigenv.h:32
int16_t tag
Definition: libmmgtypes.h:223
double n1[3]
Definition: libmmgtypes.h:234
Definition: libmmgtypes.h:270
#define MG_NOSURF
Definition: mmgcommon.h:147
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:488
char ddb
Definition: mmg3d1_delone.c:41
#define MG_PLUS
Definition: mmgcommon.h:78
int MMG5_hashPop(MMG5_Hash *hash, int a, int b)
Definition: hash_3d.c:778
int base
Definition: libmmgtypes.h:274
MMG5_pxPrism xprism
Definition: libmmgtypes.h:547
MMG5_pxPoint xpoint
Definition: libmmgtypes.h:543
static int MMG5_setEdgeNmTag(MMG5_pMesh mesh, MMG5_Hash *hash)
Definition: hash_3d.c:515
int xp
Definition: libmmgtypes.h:218
MMG5_pTetra tetra
Definition: libmmgtypes.h:544
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:356
#define MMG5_SAFE_REALLOC(ptr, prevSize, newSize, type, message, law)
Definition: mmgcommon.h:310
char ori
Definition: libmmgtypes.h:365
int MMG5_hPop(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:873
#define MMG5_KB
Definition: mmgcommon.h:172
int MMG5_bdrySet(MMG5_pMesh mesh)
Definition: hash_3d.c:1701
int nt
Definition: libmmgtypes.h:516
MMG5_hedge * item
Definition: libmmgtypes.h:501
static double MMG5_lenSurfEdg33_ani(MMG5_pMesh mesh, MMG5_pSol met, int np0, int np1, char isedg)
Definition: inlined_functions.h:266
#define MG_SET(flag, bit)
Definition: mmgcommon.h:167
MMG mesh structure.
Definition: libmmgtypes.h:509
int siz
Definition: libmmgtypes.h:500
int MMG3D_hashPrism(MMG5_pMesh mesh)
Definition: hash_3d.c:295
double n2[3]
Definition: libmmgtypes.h:234
int MMG5_hashGetFace(MMG5_Hash *hash, int ia, int ib, int ic)
Definition: hash_3d.c:143
int a
Definition: libmmgtypes.h:467
int MMG5_hGeom(MMG5_pMesh mesh)
Definition: hash_3d.c:1034
int flag
Definition: libmmgtypes.h:279
int MMG5_mmgHashTria(MMG5_pMesh mesh, int *adjt, MMG5_Hash *hash, int chkISO)
Definition: hash.c:50
static const unsigned char MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:149
int ref
Definition: libmmgtypes.h:402
int MMG5_hEdge(MMG5_pMesh mesh, MMG5_HGeom *hash, int a, int b, int ref, int16_t tag)
Definition: hash_3d.c:964
unsigned char nosurf
Definition: libmmgtypes.h:457
MMG5_Info info
Definition: libmmgtypes.h:552
int flag
Definition: libmmgtypes.h:221
int * adjapr
Definition: libmmgtypes.h:537
int a
Definition: libmmgtypes.h:244
#define MG_CLR(flag, bit)
Definition: mmgcommon.h:168
static const unsigned char MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:153
int MMG3D_hashTria(MMG5_pMesh mesh, MMG5_Hash *hash)
Definition: hash_3d.c:768
int ref
Definition: libmmgtypes.h:469
#define MG_ISO
Definition: libmmgtypes.h:62
int ref
Definition: libmmgtypes.h:342
#define MMG3D_NAMAX
Definition: mmg3d.h:133
int16_t tag
Definition: libmmgtypes.h:348
void MMG5_coquilFaceErrorMessage(MMG5_pMesh mesh, int k1, int k2)
Definition: boulep_3d.c:1250
static const unsigned char MMG5_inxt2[6]
Definition: mmgcommon.h:470
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
Definition: mmgcommon.h:289
#define MMG5_TAB_RECALLOC(mesh, ptr, initSize, wantedGap, type, message, law)
Definition: mmgcommon.h:348
#define MMG5_DEL_MEM(mesh, ptr)
Definition: mmgcommon.h:266
MMG5_pEdge edge
Definition: libmmgtypes.h:550
int ier
Definition: API_functionsf_3d.c:839
char ddebug
Definition: libmmgtypes.h:453
int MMG5_hashFace(MMG5_pMesh mesh, MMG5_Hash *hash, int ia, int ib, int ic, int k)
Definition: hash_3d.c:95
int MMG5_hGet(MMG5_HGeom *hash, int a, int b, int *ref, int16_t *tag)
Definition: hash_3d.c:932
Definition: libmmgtypes.h:400
#define MMG5_KC
Definition: hash_3d.c:37
int ref[4]
Definition: libmmgtypes.h:357
int * adjt
Definition: libmmgtypes.h:533
if(!ier) exit(EXIT_FAILURE)
int ntmax
Definition: libmmgtypes.h:516
int MMG5_setNmTag(MMG5_pMesh mesh, MMG5_Hash *hash)
Definition: hash_3d.c:746
int nemax
Definition: libmmgtypes.h:516
int b
Definition: libmmgtypes.h:468
int xt
Definition: libmmgtypes.h:345
#define MMG3D_LMAX
Definition: libmmg3d.h:57
int xpr
Definition: libmmgtypes.h:525
int16_t tag[9]
Definition: libmmgtypes.h:424
int v[4]
Definition: libmmgtypes.h:341
int MMG3D_coquilFaceFirstLoop(MMG5_pMesh mesh, int start, int na, int nb, char iface, char ia, int *list, int *ilist, int *it1, int *it2, int *piv, int *adj, char *hasadja, int *nbdy, int silent)
Definition: boulep_3d.c:1329
int MMG5_boulernm(MMG5_pMesh mesh, int start, int ip, int *ng, int *nr)
Definition: boulep_3d.c:323
int16_t ftag[5]
Definition: libmmgtypes.h:422
double n[3]
Definition: libmmgtypes.h:216