mmg3d
mmg3d3.c File Reference

Lagrangian meshing. More...

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

Macros

#define MMG5_DEGTOL   1.e-1
 

Functions

double MMG5_estavglen (MMG5_pMesh mesh)
 
static int MMG5_intdispvol (double *v1, double *v2, double *vp, double t)
 
static int MMG5_spllag (MMG5_pMesh mesh, MMG5_pSol disp, MMG5_pSol met, int itdeg, int *warn)
 
int MMG5_swptetlag (MMG5_pMesh mesh, MMG5_pSol met, double crit, MMG3D_pPROctree PROctree, int itdeg)
 
int MMG5_movtetlag (MMG5_pMesh mesh, MMG5_pSol met, int itdeg)
 
static int MMG5_coltetlag (MMG5_pMesh mesh, MMG5_pSol met, int itdeg)
 
int MMG5_chkmovmesh (MMG5_pMesh mesh, MMG5_pSol disp, short t, int *tetIdx)
 
short MMG5_dikmov (MMG5_pMesh mesh, MMG5_pSol disp, short *lastt)
 
int MMG5_dispmesh (MMG5_pMesh mesh, MMG5_pSol disp, short t, int itdeg)
 
int MMG5_saveDisp (MMG5_pMesh mesh, MMG5_pSol disp)
 
int MMG5_mmg3d3 (MMG5_pMesh mesh, MMG5_pSol disp, MMG5_pSol met, int **invalidTets)
 

Variables

int8_t ddb
 

Detailed Description

Lagrangian meshing.

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

Macro Definition Documentation

◆ MMG5_DEGTOL

#define MMG5_DEGTOL   1.e-1

Function Documentation

◆ MMG5_chkmovmesh()

int MMG5_chkmovmesh ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
short  t,
int *  tetIdx 
)
Parameters
meshpointer toward the mesh structure
disppointer toward the displacement structure.
tfraction of displacement to test
tetIdxto fill with the list of non valid tetra if provided.
Returns
0 if success (movement can be achieved), 1 or the number of invalid tetra otherwise.

Check if moving mesh with disp for a fraction t yields a valid mesh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_coltetlag()

static int MMG5_coltetlag ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  itdeg 
)
static
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
itdegdegraded elements.
Returns
-1 if failed.
number of collapsed points.

Attempt to collapse small internal edges in the Lagrangian mode; only affects tetras marked with it.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_dikmov()

short MMG5_dikmov ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
short *  lastt 
)
Parameters
meshpointer toward the mesh structure
disppointer toward the displacement field
lastt0 if a movement is possible, pointer toward the last tested fraction otherwise

Return the largest fraction t that makes the motion along disp valid.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_dispmesh()

int MMG5_dispmesh ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
short  t,
int  itdeg 
)

Perform mesh motion along disp, for a fraction t, and the corresponding updates

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_estavglen()

double MMG5_estavglen ( MMG5_pMesh  mesh)

Calculate an estimate of the average (isotropic) length of edges in the mesh

Here is the caller graph for this function:

◆ MMG5_intdispvol()

static int MMG5_intdispvol ( double *  v1,
double *  v2,
double *  vp,
double  t 
)
inlinestatic

Interpolate displacement between v1 and v2 at intermediate position 0<=t<=1

Here is the caller graph for this function:

◆ MMG5_mmg3d3()

int MMG5_mmg3d3 ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
MMG5_pSol  met,
int **  invalidTets 
)
Parameters
meshmesh structure
dispdisplacement structure
metmetric structure
invalidTetsarray to store the list of invalid tetra if we are unable to move.
Returns
0 if fail, 1 if success to move, the opposite of the number of non valid tets if we can't move (- ninvalidTets).

Lagrangian node displacement and meshing. Code for options: info.lag >= 0 -> displacement, info.lag > 0 -> displacement+remeshing with swap and moves info.lag > 1 -> displacement+remeshing with split+collapse+swap+move

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_movtetlag()

int MMG5_movtetlag ( MMG5_pMesh  mesh,
MMG5_pSol  met,
int  itdeg 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
itdegdegraded elements.
Returns
-1 if failed, number of moved points otherwise.

Analyze tetrahedra marked with it and move internal points so as to make mesh more uniform.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_saveDisp()

int MMG5_saveDisp ( MMG5_pMesh  mesh,
MMG5_pSol  disp 
)

For debugging purposes: save disp

◆ MMG5_spllag()

static int MMG5_spllag ( MMG5_pMesh  mesh,
MMG5_pSol  disp,
MMG5_pSol  met,
int  itdeg,
int *  warn 
)
static
Parameters
meshpointer toward the mesh structure.
disppointer toward the displacement structure.
metpointer toward the metric structure.
itdegdegraded elements.
*warnwarn is set to 1 if we don't have enough memory to complete mesh.
Returns
-1 if failed.
number of new points.

Split edges of length bigger than MMG3D_LOPTL, in the Lagrangian mode.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MMG5_swptetlag()

int MMG5_swptetlag ( MMG5_pMesh  mesh,
MMG5_pSol  met,
double  crit,
MMG3D_pPROctree  PROctree,
int  itdeg 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
critcoefficient of quality improvment.
PROctreepointer toward the PROctree structure in delaunay mode and toward the NULL pointer otherwise.
itdegdegraded elements.
Returns
-1 if fail, he number of swap otherwise.

Internal edge flipping in the Lagrangian mode; only affects tetra marked with it

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ ddb

int8_t ddb