mmg3d
tools_3d.c File Reference

Various algorithmic and algebraic tools. More...

#include "mmg3d.h"
Include dependency graph for tools_3d.c:

Functions

void MMG5_nsort (int n, double *val, char *perm)
 
int MMG5_norface (MMG5_pMesh mesh, int k, int iface, double n[3])
 
int MMG5_directsurfball (MMG5_pMesh mesh, int ip, int *list, int ilist, double n[3])
 
int MMG5_startedgsurfball (MMG5_pMesh mesh, int nump, int numq, int *list, int ilist)
 
int MMG5_BezierRidge (MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no1, double *no2, double *to)
 
int MMG5_BezierRef (MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
 
int MMG5_BezierNom (MMG5_pMesh mesh, int ip0, int ip1, double s, double *o, double *no, double *to)
 
int MMG5_BezierReg (MMG5_pMesh mesh, int ip0, int ip1, double s, double v[3], double *o, double *no)
 
int MMG3D_indElt (MMG5_pMesh mesh, int kel)
 
int MMG3D_indPt (MMG5_pMesh mesh, int kp)
 
void MMG5_printTetra (MMG5_pMesh mesh, char *fileName)
 
int MMG3D_localParamReg (MMG5_pMesh mesh, int ip, int *listv, int ilistv, int *lists, int ilists, double *hausd_ip, double *hmin_ip, double *hmax_ip)
 
int MMG3D_localParamNm (MMG5_pMesh mesh, int iel, int iface, int ia, double *hausd_ip, double *hmin_ip, double *hmax_ip)
 

Variables

char ddb
 

Detailed Description

Various algorithmic and algebraic tools.

Author
Charles Dapogny (UPMC)
Cécile Dobrzynski (Bx INP/Inria/UBordeaux)
Pascal Frey (UPMC)
Algiane Froehly (Inria/UBordeaux)
Version
5
Todo:
Doxygen documentation

Function Documentation

◆ MMG3D_indElt()

int MMG3D_indElt ( MMG5_pMesh  mesh,
int  kel 
)

find the element number in packed numerotation

◆ MMG3D_indPt()

int MMG3D_indPt ( MMG5_pMesh  mesh,
int  kp 
)

find the point number in packed numerotation

◆ MMG3D_localParamNm()

int MMG3D_localParamNm ( MMG5_pMesh  mesh,
int  iel,
int  iface,
int  ia,
double *  hausd_ip,
double *  hmin_ip,
double *  hmax_ip 
)
Parameters
meshpointer toward the mesh structure.
ielindex of tetra in which we work
ifaceindex of face in iel
iaindex of edge in iel along which we want to compute the local parameters
hausd_ippointer toward the local hausdorff parameter to compute
hmin_ippointer toward the local minimal edge size to compute
hmax_ippointer toward the local maximal edge size to compute
Returns
1 if success, 0 if fail

Compute the local parameters at non manifold point ip.

Here is the call graph for this function:

◆ MMG3D_localParamReg()

int MMG3D_localParamReg ( MMG5_pMesh  mesh,
int  ip,
int *  listv,
int  ilistv,
int *  lists,
int  ilists,
double *  hausd_ip,
double *  hmin_ip,
double *  hmax_ip 
)
Parameters
meshpointer toward the mesh structure.
ipglobal index of point in which we want to compute the local parameters
listvpointer toward the ball of ip
ilistvnumber of tetra in the ball of ip
listspointer toward the surface ball of ip
ilistsnumber of tetra in the surface ball of ip
hausd_ippointer toward the local hausdorff parameter to compute
hmin_ippointer toward the local minimal edge size to compute
hmax_ippointer toward the local maximal edge size to compute
Returns
1 if success, 0 if fail

Compute the local parameters at point ip (the volume and surface ball of point must be provided).

◆ MMG5_BezierNom()

int MMG5_BezierNom ( MMG5_pMesh  mesh,
int  ip0,
int  ip1,
double  s,
double *  o,
double *  no,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
nonormal at point o (to fill)
totangent at point o along edge ip0 ip1 (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value s from point ip0, as well as interpolate of normals, tangent for a NOM edge

Here is the call graph for this function:

◆ MMG5_BezierRef()

int MMG5_BezierRef ( MMG5_pMesh  mesh,
int  ip0,
int  ip1,
double  s,
double *  o,
double *  no,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
nonormal at point o (to fill)
totangent at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a REF edge.

Here is the call graph for this function:

◆ MMG5_BezierReg()

int MMG5_BezierReg ( MMG5_pMesh  mesh,
int  ip0,
int  ip1,
double  s,
double  v[3],
double *  o,
double *  no 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
vreference normal
opoint coordinates
nonormal at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a regular edge ; v = ref vector (normal) for choice of normals if need be

Here is the call graph for this function:

◆ MMG5_BezierRidge()

int MMG5_BezierRidge ( MMG5_pMesh  mesh,
int  ip0,
int  ip1,
double  s,
double *  o,
double *  no1,
double *  no2,
double *  to 
)
inline
Parameters
meshmesh
ip0first edge extremity
ip1second edge extremity
sparameter value
opoint coordinates
no1normal at point o (to fill)
no2normal at point o (to fill)
totangent at point o (to fill)
Returns
0 if fail, 1 otherwise
Warning
return 1 without filling no1 and no2 if the edge has 2 singular extremities.

Compute point located at parameter value step from point ip0, as well as interpolate of normals, tangent for a RIDGE edge

Here is the call graph for this function:

◆ MMG5_directsurfball()

int MMG5_directsurfball ( MMG5_pMesh  mesh,
int  ip,
int *  list,
int  ilist,
double  n[3] 
)
inline

If need be, invert the travelling sense of surfacic ball so that it is travelled in the direct sense with respect to direction n anchored at point ip (ip = global num.): return 2 = orientation reversed, 1 otherwise

Here is the call graph for this function:

◆ MMG5_norface()

int MMG5_norface ( MMG5_pMesh  mesh,
int  k,
int  iface,
double  n[3] 
)

Compute normal to face iface of tetra k, exterior to tetra k

Here is the call graph for this function:

◆ MMG5_nsort()

void MMG5_nsort ( int  n,
double *  val,
char *  perm 
)
inline

naive (increasing) sorting algorithm, for very small tabs ; permutation is stored in perm

◆ MMG5_printTetra()

void MMG5_printTetra ( MMG5_pMesh  mesh,
char *  fileName 
)

Debug function (not use in clean code): print mesh->tetra structure

◆ MMG5_startedgsurfball()

int MMG5_startedgsurfball ( MMG5_pMesh  mesh,
int  nump,
int  numq,
int *  list,
int  ilist 
)

If need be, reorder the surfacic ball of point ip, so that its first element has edge (p,q) (nump,q = global num) as edge MMG5_iprv2[ip] of face iface. return 2 = orientation reversed, 1 otherwise

Variable Documentation

◆ ddb

char ddb