mmg3d
|
Functions to move a point in the mesh. More...
#include "inlined_functions_3d.h"
Functions | |
int | MMG5_movintpt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *list, int ilist, int improve) |
int | MMG5_movintptLES_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *list, int ilist, int improve) |
int | MMG3D_rotate_surfacicBall (MMG5_pMesh mesh, int *lists, int ilists, int ip0, double r[3][3], double *lispoi) |
int | MMG3D_movbdyregpt_geom (MMG5_pMesh mesh, int *lists, const int kel, const int ip0, double n[3], double lambda[3], double o[3], double no[3]) |
int | MMG5_movbdyregpt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int *lists, int ilists, int improveSurf, int improveVol) |
static int | MMG3D_movbdycurvept_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int *lists, int ilists, int improve, const int16_t edgTag) |
int | MMG5_movbdyrefpt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int *lists, int ilists, int improve) |
int | MMG5_movbdynompt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int *lists, int ilists, int improve) |
int | MMG5_movbdynomintpt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int improve) |
int | MMG5_movbdyridpt_iso (MMG5_pMesh mesh, MMG5_pSol met, MMG3D_pPROctree PROctree, int *listv, int ilistv, int *lists, int ilists, int improve) |
int | MMG3D_movv_ani (MMG5_pMesh mesh, MMG5_pSol sol, int k, int ib) |
int | MMG3D_movnormal_iso (MMG5_pMesh mesh, MMG5_pSol sol, int k, int ib) |
int | MMG3D_movv_iso (MMG5_pMesh mesh, MMG5_pSol sol, int k, int ib) |
Functions to move a point in the mesh.
|
inlinestatic |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer toward 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 | Type of edge on which we move (MG_REF, MG_NOM or MG_GEO). |
Move boundary reference, ridge or non-manifold point, whose volumic and surfacic balls are passed.
int MMG3D_movbdyregpt_geom | ( | MMG5_pMesh | mesh, |
int * | lists, | ||
const int | kel, | ||
const int | ip0, | ||
double | n[3], | ||
double | lambda[3], | ||
double | o[3], | ||
double | no[3] | ||
) |
mesh | pointer toward the mesh |
lists | pointer toward the surface ball of ip0 |
kel | index of the current element in the ball |
ip0 | global index of the point to move |
n | normal at ip0 |
lambda | barycentric coor of the new point in triangle |
o | coordinates of the new point (to compute) |
no | normal at new point (to compute) |
Compute the Bezier patch at element lists[kel], compute the new point coordinates, normal and tangent and check the geometric approximation.
int MMG3D_movnormal_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | ib | ||
) |
mesh | pointer toward the mesh structure. |
sol | pointer toward the metric structure. |
k | tetra index. |
ib | local index of the point inside the tetra k. |
Move internal point according to the normal at the opposite face Try to increase the volume of the tetra.
int MMG3D_movv_ani | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | ib | ||
) |
int MMG3D_movv_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | sol, | ||
int | k, | ||
int | ib | ||
) |
int MMG3D_rotate_surfacicBall | ( | MMG5_pMesh | mesh, |
int * | lists, | ||
int | ilists, | ||
int | ip0, | ||
double | r[3][3], | ||
double * | lispoi | ||
) |
mesh | pointer toward the mesh structure. |
lists | pointer toward the surfacic ball of the point. |
ilists | size of the surfacic ball. |
ip0 | global index of the point that we move |
r | rotation matrix that sends the normal at ip0 to z-axis |
lispoi | rotated surfacic ball (lispoi[k] is the common edge between faces lists[k-1] and lists[k]) |
Rotation of the oriented surfacic ball of ip0.
At this point, lispoi contains the oriented surface ball of point p0, that has been rotated through r, with the convention that triangle l has edges lispoi[l]; lispoi[l+1]
int MMG5_movbdynomintpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | listv, | ||
int | ilistv, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | 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 non manifold point, whose volumic ball is passed
int MMG5_movbdynompt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | listv, | ||
int | ilistv, | ||
int * | lists, | ||
int | ilists, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer toward 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 surfacic balls are passed.
int MMG5_movbdyrefpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | listv, | ||
int | ilistv, | ||
int * | lists, | ||
int | ilists, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer toward 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.
int MMG5_movbdyregpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | listv, | ||
int | ilistv, | ||
int * | lists, | ||
int | ilists, | ||
int | improveSurf, | ||
int | improveVol | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer toward 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 optimal position to make current triangle equilateral, and average of these positions
Step 4 : locate new point in the ball, and compute its barycentric coordinates
Step 5 : come back to original problem, and compute patch in triangle iel
int MMG5_movbdyridpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | listv, | ||
int | ilistv, | ||
int * | lists, | ||
int | ilists, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
listv | pointer toward the volumic ball of the point. |
ilistv | size of the volumic ball. |
lists | pointer toward 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 ridge point, whose volumic and surfacic balls are passed.
int MMG5_movintpt_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
list | pointer toward 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 0.9 of the old minimum element quality. |
Move internal point whose volumic is passed.
int MMG5_movintptLES_iso | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
MMG3D_pPROctree | PROctree, | ||
int * | list, | ||
int | ilist, | ||
int | improve | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
PROctree | pointer toward the PROctree structure. |
list | pointer toward 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 0.9 of the old minimum element quality. |
Move internal point whose volumic ball is passed (for LES optimization). The optimal point position is computed as the barycenter of the optimal point position for each tetra. The optimal point position for a tetra is the point located over the normal of the face at the face barycenter and at the distance 1 of the face.