Go to the documentation of this file.
38 #ifndef _INLINED_FUNCT_3D_H
39 #define _INLINED_FUNCT_3D_H
57 double ux,uy,uz,dd1,dd2,len;
63 dd1 = sa[0]*ux*ux + sa[3]*uy*uy + sa[5]*uz*uz \
64 + 2.0*(sa[1]*ux*uy + sa[2]*ux*uz + sa[4]*uy*uz);
65 if ( dd1 <= 0.0 ) dd1 = 0.0;
67 dd2 = sb[0]*ux*ux + sb[3]*uy*uy + sb[5]*uz*uz \
68 + 2.0*(sb[1]*ux*uy + sb[2]*ux*uz + sb[4]*uy*uz);
69 if ( dd2 <= 0.0 ) dd2 = 0.0;
73 if(fabs(dd1-dd2) < 0.05 ) {
74 len = sqrt(0.5*(dd1+dd2));
77 len = (sqrt(dd1)+sqrt(dd2)+4.0*sqrt(0.5*(dd1+dd2))) / 6.0;
108 &met->
m[6*ip1],&met->
m[6*ip2]);
171 if ( !(MG_SIN(pp1->
tag) || (MG_NOM & pp1->
tag)) && (pp1->
tag & MG_GEO) ) {
174 for ( i=0; i<6; ++i )
175 m1[i] = met->
m[6*ip1+i];
178 if ( !(MG_SIN(pp2->
tag)|| (MG_NOM & pp2->
tag)) && (pp2->
tag & MG_GEO) ) {
181 for ( i=0; i<6; ++i )
182 m2[i] = met->
m[6*ip2+i];
284 double ct[12],cs[3],rad,Vref,V,cal;
287 for (j=0,l=0; j<4; j++,l+=3) {
288 memcpy(&ct[l],
mesh->
point[pt->
v[j]].
c,3*
sizeof(
double));
298 Vref = 8.*sqrt(3)/27.*rad*sqrt(rad);
309 cal = MG_MIN (1., cal);
329 double abx,aby,abz,acx,acy,acz,adx,ady,adz,bcx,bcy,bcz,bdx,bdy,bdz;
331 double vol,v1,v2,v3,rap;
337 rap = abx*abx + aby*aby + abz*abz;
342 rap += acx*acx + acy*acy + acz*acz;
347 rap += adx*adx + ady*ady + adz*adz;
349 v1 = acy*adz - acz*ady;
350 v2 = acz*adx - acx*adz;
351 v3 = acx*ady - acy*adx;
352 vol = abx * v1 + aby * v2 + abz * v3;
353 if ( vol < MMG5_EPSD2 )
return 0.0;
358 rap += bcx*bcx + bcy*bcy + bcz*bcz;
363 rap += bdx*bdx + bdy*bdy + bdz*bdz;
368 rap += cdx*cdx + cdy*cdy + cdz*cdz;
369 if ( rap < MMG5_EPSD2 )
return 0.0;
372 rap = rap * sqrt(rap);
418 double cal,abx,aby,abz,acx,acy,acz,adx,ady,adz;
419 double h1,h2,h3,h4,h5,h6,det,vol,rap,v1,v2,v3,num;
420 double bcx,bcy,bcz,bdx,bdy,bdz,cdx,cdy,cdz;
464 v1 = acy*adz - acz*ady;
465 v2 = acz*adx - acx*adz;
466 v3 = acx*ady - acy*adx;
467 vol = abx * v1 + aby * v2 + abz * v3;
468 if ( vol <= 0. )
return 0.0;
470 det = mm[0] * ( mm[3]*mm[5] - mm[4]*mm[4]) \
471 - mm[1] * ( mm[1]*mm[5] - mm[2]*mm[4]) \
472 + mm[2] * ( mm[1]*mm[4] - mm[2]*mm[3]);
473 if ( det < MMG5_EPSD2 ) {
476 det = sqrt(det) * vol;
479 h1 = mm[0]*abx*abx + mm[3]*aby*aby + mm[5]*abz*abz
480 + 2.0*(mm[1]*abx*aby + mm[2]*abx*abz + mm[4]*aby*abz);
481 h2 = mm[0]*acx*acx + mm[3]*acy*acy + mm[5]*acz*acz
482 + 2.0*(mm[1]*acx*acy + mm[2]*acx*acz + mm[4]*acy*acz);
483 h3 = mm[0]*adx*adx + mm[3]*ady*ady + mm[5]*adz*adz
484 + 2.0*(mm[1]*adx*ady + mm[2]*adx*adz + mm[4]*ady*adz);
485 h4 = mm[0]*bcx*bcx + mm[3]*bcy*bcy + mm[5]*bcz*bcz
486 + 2.0*(mm[1]*bcx*bcy + mm[2]*bcx*bcz + mm[4]*bcy*bcz);
487 h5 = mm[0]*bdx*bdx + mm[3]*bdy*bdy + mm[5]*bdz*bdz
488 + 2.0*(mm[1]*bdx*bdy + mm[2]*bdx*bdz + mm[4]*bdy*bdz);
489 h6 = mm[0]*cdx*cdx + mm[3]*cdy*cdy + mm[5]*cdz*cdz
490 + 2.0*(mm[1]*cdx*cdy + mm[2]*cdx*cdz + mm[4]*cdy*cdz);
493 rap = h1 + h2 + h3 + h4 + h5 + h6;
495 num = sqrt(rap) * rap;
static double MMG5_lenedgCoor_ani(double *ca, double *cb, double *sa, double *sb)
Compute edge length from edge's coordinates.
Definition: inlined_functions_3d.h:56
double c[3]
Definition: libmmgtypes.h:215
int MMG5_moymet(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt, double *m1)
Definition: anisosiz_3d.c:69
static double MMG5_lenSurfEdg_iso(MMG5_pMesh mesh, MMG5_pSol met, int ip1, int ip2, char isedg)
Definition: inlined_functions.h:291
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
static double MMG5_lenedg_ani(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:200
static double MMG5_caltet_iso_4pt(double *a, double *b, double *c, double *d)
Definition: inlined_functions_3d.h:328
static double MMG5_lenedg_iso(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:230
static double MMG5_lenedgspl_iso(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:240
int MMG5_cenrad_iso(MMG5_pMesh mesh, double *ct, double *c, double *rad)
Definition: cenrad_3d.c:45
int16_t tag[6]
Definition: libmmgtypes.h:363
MMG5_pPoint point
Definition: libmmgtypes.h:542
#define MMG3D_ALPHAD
Definition: mmg3d.h:118
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:545
static double MMG5_orcal(MMG5_pMesh mesh, MMG5_pSol met, int iel)
Definition: inlined_functions_3d.h:262
static double MMG5_lenedgspl_ani(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:158
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:214
double * m
Definition: libmmgtypes.h:571
static double MMG5_caltet_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:417
int16_t tag
Definition: libmmgtypes.h:223
static double MMG5_lenedg33_ani(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:94
MMG5_pTetra tetra
Definition: libmmgtypes.h:544
static double MMG5_lenedgspl33_ani(MMG5_pMesh mesh, MMG5_pSol met, int ia, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:125
static double MMG5_lenSurfEdg33_ani(MMG5_pMesh mesh, MMG5_pSol met, int np0, int np1, char isedg)
Definition: inlined_functions.h:266
MMG mesh structure.
Definition: libmmgtypes.h:509
static double MMG3D_caltetLES_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:283
static const unsigned char MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:153
static double MMG5_caltet_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: inlined_functions_3d.h:387
double(* MMG5_caltet)(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: mmg3dexterns.c:6
int xt
Definition: libmmgtypes.h:345
int v[4]
Definition: libmmgtypes.h:341