mmg3d
eigenv.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/CNRS/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 MMGEIGENV_H
25 #define MMGEIGENV_H
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #define MMG5_EPSD 1.e-30
32 #define MMG5_EPS 1.e-06
33 
34 int MMG5_eigenv(int symmat,double *mat,double lambda[3],double v[3][3]);
35 int MMG5_eigen2(double *mm,double *lambda,double vp[2][2]);
36 extern int MMG5_eigensym(double m[3],double lambda[2],double vp[2][2]);
37 
38 #ifdef __cplusplus
39 }
40 #endif
41 
42 #endif
Id
static double Id[3][3]
Identity matrix.
Definition: eigenv.c:66
MMG5_Par::hmax
double hmax
Definition: libmmgtypes.h:230
MMG5_chkmanicoll
int MMG5_chkmanicoll(MMG5_pMesh, int, int, int, int, int, int, int, int8_t, int8_t)
Definition: mmg3d2.c:1653
MMG5_Mesh::xtmax
int xtmax
Definition: libmmgtypes.h:559
MMG5_Info::npar
int npar
Definition: libmmgtypes.h:478
MG_BDY
#define MG_BDY
Definition: mmgcommon.h:144
MMG5_Point::c
double c[3]
Definition: libmmgtypes.h:242
MMG5_lenedg
double(* MMG5_lenedg)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3dexterns.c:5
MG_MAX
#define MG_MAX(a, b)
Definition: mmgcommon.h:135
MMG5_Tria::v
int v[3]
Definition: libmmgtypes.h:303
MMG5_Tetra
Definition: libmmgtypes.h:370
MG_MINUS
#define MG_MINUS
Definition: mmgcommon.h:72
MMG5_Sol
Definition: libmmgtypes.h:610
MG_EIGENV_EPS5
#define MG_EIGENV_EPS5
Definition: eigenv.c:51
MMG5_NULKAL
#define MMG5_NULKAL
Definition: mmgcommon.h:92
MMG5_correction_ani
static int MMG5_correction_ani(MMG5_pMesh mesh, MMG5_pSol met, int ip, int *list, int ilist, int nedep, double volmin)
Definition: delaunay_3d.c:355
MMG5_Triangle
@ MMG5_Triangle
Definition: libmmgtypes.h:215
MMG3D_newElt
int MMG3D_newElt(MMG5_pMesh mesh)
Definition: zaldy_3d.c:98
MG_NOM
#define MG_NOM
Definition: mmgcommon.h:143
MMG3D_EPSRAD
#define MMG3D_EPSRAD
Definition: delaunay_3d.c:39
MMG5_Mesh::xt
int xt
Definition: libmmgtypes.h:568
MMG5_eigensym
int MMG5_eigensym(double m[3], double lambda[2], double vp[2][2])
Definition: eigenv.c:797
MMG5_hedge::nxt
int nxt
Definition: libmmgtypes.h:532
MMG5_chkedg
int8_t MMG5_chkedg(MMG5_pMesh mesh, MMG5_Tria *pt, int8_t ori, double, double, int)
Definition: mmg3d1.c:309
MMG5_Sol::size
int size
Definition: libmmgtypes.h:616
MMG5_eigenv
int MMG5_eigenv(int symmat, double *mat, double lambda[3], double v[3][3])
Find eigenvalues and vectors of a 3x3 matrix.
Definition: eigenv.c:384
MMG5_hedge::b
int b
Definition: libmmgtypes.h:532
MMG5_cenrad_iso
int MMG5_cenrad_iso(MMG5_pMesh mesh, double *ct, double *c, double *rad)
Definition: cenrad_3d.c:45
MMG5_Hash
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Definition: libmmgtypes.h:542
MG_EIGENV_EPS27
#define MG_EIGENV_EPS27
Definition: eigenv.c:45
MMG5_xTetra::tag
int16_t tag[6]
Definition: libmmgtypes.h:394
MMG5_iprv2
static const uint8_t MMG5_iprv2[3]
Definition: mmgcommon.h:548
MMG5_Mesh::point
MMG5_pPoint point
Definition: libmmgtypes.h:589
info
MMG5_Info info
MMG3D_KTA
#define MMG3D_KTA
Definition: delaunay_3d.c:50
MMG5_xTetra::ftag
int16_t ftag[4]
Definition: libmmgtypes.h:392
MMG5_arpt
static const uint8_t MMG5_arpt[4][3]
arpt[i]: edges passing through vertex i
Definition: mmg3d.h:162
MG_GET
#define MG_GET(flag, bit)
Definition: mmgcommon.h:170
ddb
int8_t ddb
Definition: mmg3d1_delone.c:41
MMG5_Tria::tag
int16_t tag[3]
Definition: libmmgtypes.h:311
MMG5_check_accuracy
static int MMG5_check_accuracy(double mat[6], double lambda[3], double v[3][3], double w1[3], double w2[3], double w3[3], double maxm, int order, int symmat)
Definition: eigenv.c:310
MMG5_Info::opnbdy
int opnbdy
Definition: libmmgtypes.h:480
MG_PARBDY
#define MG_PARBDY
Definition: mmgcommon.h:150
MMG5_Mesh::base
int base
Definition: libmmgtypes.h:564
MMG3D_normalAdjaTri
int MMG3D_normalAdjaTri(MMG5_pMesh, int, int8_t, int, double n[3])
Definition: split_3d.c:463
MMG5_inxt2
static const uint8_t MMG5_inxt2[6]
Definition: mmgcommon.h:547
inlined_functions_3d.h
inlined Functions
MMG5_chkcol_bdy
int MMG5_chkcol_bdy(MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t iface, int8_t iedg, int *listv, int ilistv, int *lists, int ilists, int refmin, int refplus, int8_t typchk, int isnm)
Definition: colver_3d.c:363
MMG5_Hash::nxt
int nxt
Definition: libmmgtypes.h:543
MMG5_idirinv
static const int8_t MMG5_idirinv[4][4]
Definition: mmg3d.h:150
MMG5_delone
int MMG5_delone(MMG5_pMesh mesh, MMG5_pSol sol, int ip, int *list, int ilist)
Definition: delaunay_3d.c:140
MMG5_iarf
static const int8_t MMG5_iarf[4][3]
iarf[i]: edges of face opposite to vertex i
Definition: mmg3d.h:152
MMG3D_KTB
#define MMG3D_KTB
Definition: delaunay_3d.c:51
MMG5_Par::ref
int ref
Definition: libmmgtypes.h:232
MMG5_hedge::k
int k
Definition: libmmgtypes.h:533
MMG5_Mesh::xtetra
MMG5_pxTetra xtetra
Definition: libmmgtypes.h:592
egal
#define egal(x, y)
Definition: eigenv.c:58
MMG5_Tetrahedron
@ MMG5_Tetrahedron
Definition: libmmgtypes.h:216
MMG5_orcal
static double MMG5_orcal(MMG5_pMesh mesh, MMG5_pSol met, int iel)
Definition: inlined_functions_3d.h:262
MMG5_EPSOK
#define MMG5_EPSOK
Definition: mmgcommon.h:91
MMG5_Mesh::adja
int * adja
Definition: libmmgtypes.h:572
MMG5_eigen2
int MMG5_eigen2(double *mm, double *lambda, double vp[2][2])
Find eigenvalues and vectors of a 2x2 matrix.
Definition: eigenv.c:682
MMG5_Info::hausd
double hausd
Definition: libmmgtypes.h:476
MMG5_Hash::max
int max
Definition: libmmgtypes.h:543
MMG5_Tetra::qual
double qual
Definition: libmmgtypes.h:371
MMG5_hedge::a
int a
Definition: libmmgtypes.h:532
MG_REQ
#define MG_REQ
Definition: mmgcommon.h:142
MG_EIGENV_EPS13
#define MG_EIGENV_EPS13
Definition: eigenv.c:46
MMG5_Mesh::mark
int mark
Definition: libmmgtypes.h:566
mesh
MMG5_pMesh * mesh
Definition: API_functionsf_3d.c:65
MG_GEO
#define MG_GEO
Definition: mmgcommon.h:141
MMG5_eigenv
int MMG5_eigenv(int symmat, double *mat, double lambda[3], double v[3][3])
Find eigenvalues and vectors of a 3x3 matrix.
Definition: eigenv.c:384
MMG5_Tetra::flag
int flag
Definition: libmmgtypes.h:378
MG_EIGENV_EPS5e6
#define MG_EIGENV_EPS5e6
Definition: eigenv.c:48
eigenv.h
MMG5_Tria::ref
int ref
Definition: libmmgtypes.h:304
MMG5_Point
Structure to store points of a MMG mesh.
Definition: libmmgtypes.h:241
MMG5_colver
int MMG5_colver(MMG5_pMesh mesh, MMG5_pSol met, int *list, int ilist, int8_t indq, int8_t typchk)
Definition: colver_3d.c:839
MMG3D_delElt
int MMG3D_delElt(MMG5_pMesh mesh, int iel)
Definition: zaldy_3d.c:121
MMG5_hashNew
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, int hsiz, int hmax)
Definition: hash.c:394
MMG5_tet2tri
void MMG5_tet2tri(MMG5_pMesh mesh, int k, int8_t ie, MMG5_Tria *ptt)
Definition: mmg3d1.c:52
MMG5_Sol::m
double * m
Definition: libmmgtypes.h:618
MMG5_eigen2
int MMG5_eigen2(double *mm, double *lambda, double vp[2][2])
Find eigenvalues and vectors of a 2x2 matrix.
Definition: eigenv.c:682
MMG5_xTetra::ori
int8_t ori
Definition: libmmgtypes.h:396
MG_EIGENV_EPS10
#define MG_EIGENV_EPS10
Definition: eigenv.c:47
MMG5_iare
static const uint8_t MMG5_iare[6][2]
vertices of extremities of the edges of the tetra
Definition: mmg3d.h:156
MG_MIN
#define MG_MIN(a, b)
Definition: mmgcommon.h:136
MMG5_startedgsurfball
int MMG5_startedgsurfball(MMG5_pMesh mesh, int nump, int numq, int *list, int ilist)
Definition: tools_3d.c:107
MMG5_EPS
#define MMG5_EPS
Definition: eigenv.h:32
MMG5_Point::tag
int16_t tag
Definition: libmmgtypes.h:253
MMG5_Tria
Definition: libmmgtypes.h:301
MMG5_hedge
Used to hash edges (memory economy compared to MMG5_hgeom).
Definition: libmmgtypes.h:531
MMG5_lenedgspl
double(* MMG5_lenedgspl)(MMG5_pMesh, MMG5_pSol, int, MMG5_pTetra)
Definition: mmg3dexterns.c:6
MMG5_eigensym
int MMG5_eigensym(double m[3], double lambda[2], double vp[2][2])
Definition: eigenv.c:797
MG_Tria
#define MG_Tria
Definition: mmgcommon.h:155
MG_PLUS
#define MG_PLUS
Definition: mmgcommon.h:71
MG_NUL
#define MG_NUL
Definition: mmgcommon.h:151
MMG5_cenrad_ani
int MMG5_cenrad_ani(MMG5_pMesh mesh, double *ct, double *m, double *c, double *rad)
Definition: cenrad_3d.c:142
MMG5_hashEdgeDelone
int MMG5_hashEdgeDelone(MMG5_pMesh mesh, MMG5_Hash *hash, int iel, int i, int *v)
Definition: delaunay_3d.c:55
MMG5_Point::xp
int xp
Definition: libmmgtypes.h:248
MMG5_Mesh::tetra
MMG5_pTetra tetra
Definition: libmmgtypes.h:591
MMG3D_EPSCON
#define MMG3D_EPSCON
Definition: delaunay_3d.c:43
MMG5_xTetra
Structure to store the surface tetrahedra of a MMG mesh.
Definition: libmmgtypes.h:387
MMG5_Info::fem
int8_t fem
Definition: libmmgtypes.h:493
MMG5_inxt3
static const uint8_t MMG5_inxt3[7]
next vertex of tetra: {1,2,3,0,1,2,3}
Definition: mmg3d.h:144
MMG5_Info::dhd
double dhd
Definition: libmmgtypes.h:476
MMG5_ifar
static const uint8_t MMG5_ifar[6][2]
ifar[i][]: faces sharing the ith edge of the tetra
Definition: mmg3d.h:158
MG_Tetra
#define MG_Tetra
Definition: mmgcommon.h:156
MMG5_Hash::item
MMG5_hedge * item
Definition: libmmgtypes.h:544
MG_SET
#define MG_SET(flag, bit)
Definition: mmgcommon.h:168
MMG5_Par::hausd
double hausd
Definition: libmmgtypes.h:231
MMG5_Mesh
MMG mesh structure.
Definition: libmmgtypes.h:552
MMG5_Hash::siz
int siz
Definition: libmmgtypes.h:543
MMG3D_LONMAX
#define MMG3D_LONMAX
Definition: delaunay_3d.c:44
MMG5_Info::par
MMG5_pPar par
Definition: libmmgtypes.h:475
MMG5_idir
static const uint8_t MMG5_idir[4][3]
idir[i]: vertices of face opposite to vertex i
Definition: mmg3d.h:148
MMG5_topchkcol_bdy
static int MMG5_topchkcol_bdy(MMG5_pMesh mesh, int k, int iface, int8_t iedg, int *lists, int ilists)
Definition: colver_3d.c:180
MMG5_correction_iso
static int MMG5_correction_iso(MMG5_pMesh mesh, int ip, int *list, int ilist, int nedep, double volmin)
Definition: delaunay_3d.c:481
MMG5_caltet33_ani
double MMG5_caltet33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTetra pt)
Definition: quality_3d.c:95
MMG5_Info::iso
int8_t iso
Definition: libmmgtypes.h:489
MMG5_Info::hmax
double hmax
Definition: libmmgtypes.h:476
MMG5_Par
Definition: libmmgtypes.h:228
MMG5_chkcol_nomint
int MMG5_chkcol_nomint(MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t iface, int8_t iedg, int *listv, int ilistv, int8_t typchk)
Definition: colver_3d.c:728
MMG5_Mesh::info
MMG5_Info info
Definition: libmmgtypes.h:599
MMG5_chkcol_int
int MMG5_chkcol_int(MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t iface, int8_t iedg, int *list, int ilist, int8_t typchk)
Definition: colver_3d.c:42
MMG5_Par::elt
int8_t elt
Definition: libmmgtypes.h:233
MG_CLR
#define MG_CLR(flag, bit)
Definition: mmgcommon.h:169
MAXTOU
#define MAXTOU
Definition: eigenv.c:52
MMG5_cavity_ani
int MMG5_cavity_ani(MMG5_pMesh mesh, MMG5_pSol met, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:582
MMG5_Tetra::ref
int ref
Definition: libmmgtypes.h:373
MG_EIGENV_EPS6
#define MG_EIGENV_EPS6
Definition: eigenv.c:49
tmp
tmp[*strlen0]
Definition: API_functionsf_3d.c:1021
MMG5_Tetra::tag
int16_t tag
Definition: libmmgtypes.h:379
newton3
static int newton3(double p[4], double x[3])
Find root(s) of a polynomial of degree 3.
Definition: eigenv.c:85
MMG5_xTetra::edg
int edg[6]
Definition: libmmgtypes.h:390
MMG5_norpts
int MMG5_norpts(MMG5_pMesh, int, int, int, double *)
Definition: tools.c:130
MMG5_TAB_RECALLOC
#define MMG5_TAB_RECALLOC(mesh, ptr, initSize, wantedGap, type, message, law)
Definition: mmgcommon.h:364
MMG5_cavity_iso
int MMG5_cavity_iso(MMG5_pMesh mesh, MMG5_pSol sol, int iel, int ip, int *list, int lon, double volmin)
Definition: delaunay_3d.c:741
MMG5_DEL_MEM
#define MMG5_DEL_MEM(mesh, ptr)
Definition: mmgcommon.h:281
ier
int ier
Definition: API_functionsf_3d.c:979
MMG5_ANGEDG
#define MMG5_ANGEDG
Definition: mmgcommon.h:84
MMG5_GAP
#define MMG5_GAP
Definition: mmgcommon.h:127
MMG5_Mesh::gap
double gap
Definition: libmmgtypes.h:555
MMG5_Tetra::mark
int mark
Definition: libmmgtypes.h:375
MMG5_xTetra::ref
int ref[4]
Definition: libmmgtypes.h:388
MMG5_Point::tagdel
int8_t tagdel
Definition: libmmgtypes.h:255
MMG5_norface
int MMG5_norface(MMG5_pMesh mesh, int k, int iface, double v[3])
Definition: tools_3d.c:69
MMG3D_TETRA_REALLOC
#define MMG3D_TETRA_REALLOC(mesh, jel, wantedGap, law)
Definition: mmg3d.h:93
MMG5_EPSD
#define MMG5_EPSD
Definition: eigenv.h:31
MMG5_Tetra::xt
int xt
Definition: libmmgtypes.h:376
MMG3D_findEdge
int MMG3D_findEdge(MMG5_pMesh mesh, MMG5_pTetra pt, int k, int na, int nb, int error, int8_t *mmgWarn, int8_t *ia)
Definition: boulep_3d.c:110
MMG3D_LMAX
#define MMG3D_LMAX
Definition: libmmg3d.h:57
MMG5_Tetra::v
int v[4]
Definition: libmmgtypes.h:372
MMG5_Info::parTyp
int8_t parTyp
Definition: libmmgtypes.h:495