Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
Functions
anisomovpt_3d.c File Reference

Functions to move a point in the mesh. More...

#include "libmmg3d.h"
#include "inlined_functions_3d_private.h"
#include "mmg3dexterns_private.h"
#include "mmgexterns_private.h"
Include dependency graph for anisomovpt_3d.c:

Go to the source code of this file.

Functions

int MMG5_movintpt_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *list, int ilist, int improve)
 
int MMG5_movbdyregpt_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, int improveSurf, int improveVol)
 
static int MMG3D_movbdycurvept_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, int improve, const int16_t edgTag)
 
int MMG5_movbdyrefpt_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, int improve)
 
int MMG5_movbdynompt_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, int improve)
 
int MMG5_movbdyridpt_ani (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int64_t *listv, int ilistv, MMG5_int *lists, int ilists, int improve)
 

Detailed Description

Functions to move a point in the mesh.

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

Definition in file anisomovpt_3d.c.

Function Documentation

◆ MMG3D_movbdycurvept_ani()

static int MMG3D_movbdycurvept_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve,
const int16_t  edgTag 
)
inlinestatic
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
edgTagMG_REF, MG_NOM or MG_GEO depending on type of edge on which we move.
Returns
0 if fail, 1 if success.
Remarks
we don't check if we break the hausdorff criterion.

Move boundary reference, ridge or non-manifold point, whose volumic and surfacic balls are passed.

Todo:
Factorization of this function with the iso one.

Step 0: Compute if the edge is a simple ridge to know if we have to compute a second normal at point

Step 1: Travel surfacic ball and recover the two ending points of curve (that will be stored in ip1 and ip2)

Step 2: At this point, we get the point extremities of the curve passing through ip0 : ip1, ip2, along with support tets it1,it2, the surface faces iface1,iface2, and the associated edges ie1,ie2. Computation of displacement along curve and checks

a. Changes needed for choice of time step : see manuscript notes

b. Check sense of displacement, compute support of the associated edge and features of the new position

Metric interpolation

Check whether proposed move is admissible under consideration of distances

For each surfacic triangle build a virtual displaced triangle for check purposes :

  • check the new triangle qualities;
  • check normal deviation with the adjacent through the edge facing ip0 and the previous one

d. Check whether all volumes remain positive with new position of the point and update coor, normals, tangents and qualities if move is accepted.

Definition at line 502 of file anisomovpt_3d.c.

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

◆ MMG5_movbdynompt_ani()

int MMG5_movbdynompt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.

Move boundary non manifold point, whose volumic and (exterior) surfacic balls are passed

Remarks
we don't check if we break the hausdorff criterion.

Definition at line 727 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyrefpt_ani()

int MMG5_movbdyrefpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if fail, 1 if success.
Remarks
we don't check if we break the hausdorff criterion.

Move boundary reference point, whose volumic and surfacic balls are passed.

Definition at line 703 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyregpt_ani()

int MMG5_movbdyregpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improveSurf,
int  improveVol 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if we can't move the point, 1 if we can, -1 if we fail.
Remarks
we don't check if we break the hausdorff criterion.
the metric is not interpolated at the new position.

Move boundary regular point, whose volumic and surfacic balls are passed.

Step 1 : rotation matrix that sends normal n to the third coordinate vector of R^3

Step 2 : rotation of the oriented surfacic ball with r : lispoi[k] is the common edge between faces lists[k-1] and lists[k]

Step 3 : Compute gradient towards optimal position = centre of mass of the ball, projected to tangent plane

Step 4 : locate new point in the ball, and compute its barycentric coordinates

Step 5 : come back to original problem, compute patch in triangle iel and check that geometric approx has not been degraded too much

Definition at line 191 of file anisomovpt_3d.c.

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

◆ MMG5_movbdyridpt_ani()

int MMG5_movbdyridpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  listv,
int  ilistv,
MMG5_int *  lists,
int  ilists,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listvpointer toward the volumic ball of the point.
ilistvsize of the volumic ball.
listspointer toward the surfacic ball of the point.
ilistssize of the surfacic ball.
improveforce the new minimum element quality to be greater or equal
Returns
0 if fail, 1 if success.
Remarks
we don't check if we break the hausdorff criterion.

Move boundary ridge point, whose volumic and surfacic balls are passed.

Definition at line 751 of file anisomovpt_3d.c.

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

◆ MMG5_movintpt_ani()

int MMG5_movintpt_ani ( MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG3D_pPROctree  PROctree,
int64_t *  list,
int  ilist,
int  improve 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward the metric structure.
PROctreepointer toward the PROctree structure.
listpointer toward the volumic ball of the point.
ilistsize of the volumic ball.
improveforce the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality.
Returns
0 if we can't move the point, 1 if we can.

Move internal point whose volumic is passed.

Remarks
the metric is not interpolated at the new position.
we don't check if we break the hausdorff criterion.

Definition at line 58 of file anisomovpt_3d.c.

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