Mmg
Simplicial remeshers (mesh adaptation, isovalue discretization, lagrangian movement)
|
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"
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 uint16_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) |
Functions to move a point in the mesh.
Definition in file anisomovpt_3d.c.
|
inlinestatic |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
edgTag | MG_REF, MG_NOM or MG_GEO depending on type of edge on which we move. |
Move boundary reference, ridge or non-manifold point, whose volumic and surfacic balls are passed.
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 :
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 505 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary non manifold point, whose volumic and (exterior) surfacic balls are passed
Definition at line 730 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move boundary reference point, whose volumic and surfacic balls are passed.
Definition at line 706 of file anisomovpt_3d.c.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
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.
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 | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
listv | pointer to the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer to the surfacic ball of the point. |
ilists | size of the surfacic ball. |
improve | force the new minimum element quality to be greater or equal |
Move boundary ridge point, whose volumic and surfacic balls are passed.
Definition at line 754 of file anisomovpt_3d.c.
int MMG5_movintpt_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int64_t * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer to the mesh structure. |
met | pointer to the metric structure. |
PROctree | pointer to the PROctree structure. |
list | pointer to the volumic ball of the point. |
ilist | size of the volumic ball. |
improve | force the new minimum element quality to be greater or equal than 1.02 of the old minimum element quality. |
Move internal point whose volumic is passed.
Definition at line 58 of file anisomovpt_3d.c.