mmg3d
|
Functions to create new points. More...
#include "inlined_functions_3d.h"
Functions | |
int | MMG3D_split1_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split1 (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
static int | MMG3D_normalDeviation (MMG5_pMesh mesh, int start, int8_t iface, int8_t ia, int idx, int ip, double n0[3]) |
int | MMG3D_simbulgept (MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int ip) |
int | MMG3D_normalAdjaTri (MMG5_pMesh mesh, int start, int8_t iface, int ia, double n[3]) |
int | MMG5_split1b (MMG5_pMesh mesh, MMG5_pSol met, int *list, int ret, int ip, int cas, int8_t metRidTyp, int8_t chkRidTet) |
int | MMG3D_split2sf_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split2sf (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG3D_split2_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split2 (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG3D_split3_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split3 (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG3D_split3cone_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split3cone (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
static void | MMG3D_configSplit3op (MMG5_pTetra pt, int vx[6], uint8_t tau[4], const uint8_t **taued, uint8_t sym[4], uint8_t symed[6], uint8_t *ip0, uint8_t *ip1, uint8_t *ip2, uint8_t *ip3, uint8_t *ie0, uint8_t *ie1, uint8_t *ie2, uint8_t *ie3, uint8_t *ie4, uint8_t *ie5, uint8_t *imin03, uint8_t *imin12) |
int | MMG3D_split3op_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split3op (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG5_split4bar (MMG5_pMesh mesh, MMG5_pSol met, int k, int8_t metRidTyp) |
static void | MMG3D_configSplit4sf (MMG5_pTetra pt, int vx[6], uint8_t tau[4], const uint8_t **taued, uint8_t *imin23, uint8_t *imin12) |
int | MMG3D_split4sf_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split4sf (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG3D_split4op_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split4op (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
static void | MMG3D_configSplit5 (MMG5_pTetra pt, int vx[6], uint8_t tau[4], const uint8_t **taued, uint8_t *imin) |
int | MMG3D_split5_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split5 (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
int | MMG3D_split6_sim (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6]) |
int | MMG5_split6 (MMG5_pMesh mesh, MMG5_pSol met, int k, int vx[6], int8_t metRidTyp) |
static int | MMG3D_chksplit (MMG5_pMesh mesh, MMG5_pSol met, int ip, int *list, int ret, double crit) |
int | MMG5_splitedg (MMG5_pMesh mesh, MMG5_pSol met, int iel, int iar, double crit) |
Variables | |
int8_t | ddb |
Functions to create new points.
|
inlinestatic |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
ip | index of new point. |
list | pointer toward the shell of edge. |
ret | size of the shell of edge. |
crit | quality threshold. |
Check quality before split.
|
inlinestatic |
pt | initial tetra |
vx | index of points to insert along edges |
tau | vertices permutation |
taued | edges permutation |
sym | vertices symmetry |
symed | edges symmetry |
ip0 | vertex 0 for reference config |
ip1 | vertex 1 for reference config |
ip2 | vertex 2 for reference config |
ip3 | vertex 3 for reference config |
ie0 | edge 0 for reference config |
ie1 | edge 1 for reference config |
ie2 | edge 2 for reference config |
ie3 | edge 3 for reference config |
ie4 | edge 4 for reference config |
ie5 | edge 5 for reference config |
imin03 | minimal index of vertices ip0 and ip3 |
imin12 | minimal index of vertices ip1 and ip2 |
Set permutation /symmetry of vertices for 3 opposite edges config: generic case : 35
|
inlinestatic |
pt | initial tetra |
vx | index of points to insert along edges |
tau | vertices permutation |
taued | edges permutation |
imin23 | minimal index of vertices ip0 and ip3 |
imin12 | minimal index of vertices ip1 and ip2 |
Set permutation of vertices for the split of 4 edges when 3 lie on the same face. Reference configuration 23
|
inlinestatic |
pt | initial tetra |
vx | index of points to insert along edges |
tau | vertices permutation |
taued | edges permutation |
imin | minimal index of vertices tau[0] and tau[1] |
Set permutation of vertices for the split of 5 edges. Reference configuration is 62.
int MMG3D_normalAdjaTri | ( | MMG5_pMesh | mesh, |
int | start, | ||
int8_t | iface, | ||
int | ia, | ||
double | n[3] | ||
) |
mesh | pointer toward the mesh structure |
start | index of the working tetra |
iface | local index of the boundary face of the tetra start |
ia | local index on face iface of the edge through which we seek the adjacent triangle of the triangle iface of start. |
n | normal of the new boundary face in the tetra idx. |
Compute the normal of the adjacent triangle of the triangle iface of the tetra start through the edge ia (in local numbering of the face).
Store the adjacent boundary triangle (triangle adjacent to iface through the edge ia
Compute the normal of the second triangle
|
inlinestatic |
mesh | pointer toward the mesh structure |
start | index of the tetra that we want to split |
iface | local index of the boundary face that we want to split |
ia | local index of the boundary edge that we want to split |
idx | local index of the new tetra that we want to study after the splitting of the tetra start (idx=0 or 1) |
ip | new point index |
n0 | normal of the new boundary face in the tetra idx. |
Check that the split of the edge ia of the tetra start does not create a ridge along the
Store the first boundary triangle (the one that is created in the boundary face that we split)
Compute the normal of the first triangle
Compute the normal of the second triangle (triangle adjacent to the first through the edge iploc)
int MMG3D_simbulgept | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int * | list, | ||
int | ret, | ||
int | ip | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric. |
list | pointer toward the edge shell. |
ret | size of the edge shell. |
ip | new point index. |
Simulate at the same time creation and bulging of one point, with new position o and tag tag, to be inserted at an edge, whose shell is passed.
Check the deviation for new triangles
int MMG3D_split1_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate the splitting of 1 edge of element
int MMG3D_split2_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of two opposite edges.
int MMG3D_split2sf_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of two edges that belong to a common face
int MMG3D_split3_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
Simulate split of 1 face (3 edges)
int MMG3D_split3cone_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 3 edges in cone configuration.
int MMG3D_split3op_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 3 edges in opposite configuration.
int MMG3D_split4op_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 4 edges in opposite configuration.
int MMG3D_split4sf_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 4 edges in a configuration when 3 lie on the same face.
int MMG3D_split5_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 5 edges.
int MMG3D_split6_sim | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6] | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
Simulate split of 6 edges.
int MMG5_split1 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 1 edge of tetra k.
int MMG5_split1b | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int * | list, | ||
int | ret, | ||
int | ip, | ||
int | cas, | ||
int8_t | metRidTyp, | ||
int8_t | chkRidTet | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
list | pointer toward the shell of edge. |
ret | size of the shell of edge. |
ip | idex of new point. |
cas | flag to watch the length of the new edges. |
metRidTyp | Type of storage of ridges metrics: 0 for classic storage, 1 for special storage. |
chkRidTet | if 1, avoid the creation of a tet with 4 ridge vertices |
Split edge
2 different checks : 1) are we creating a too small edge (BUG_Split1b_SpereIso_0.125h_met) 2) in aniso and from the last wave of anatet(typchk=1): avoid the creation of a tetra with 4 ridge vertices.
int MMG5_split2 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split of two OPPOSITE edges
int MMG5_split2sf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split of two edges that belong to a common face : 1 tetra becomes 3
int MMG5_split3 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
1 face (3 edges) subdivided
int MMG5_split3cone | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 3 edge in cone configuration
int MMG5_split3op | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 3 opposite edges in a tetra
int MMG5_split4bar | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | tetra index. |
metRidTyp | metric storage (classic or special) |
Split a tetra in 4 tetras by introducing its barycenter. FOR NOW : flags, that tell which edge should be split, are not updated (erased) : UPDATE NEEDED ?
int MMG5_split4op | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 4 edges in a configuration when no 3 edges lie on the same face
int MMG5_split4sf | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 4 edges in a configuration when 3 lie on the same face
int MMG5_split5 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
Split 5 edges
int MMG5_split6 | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | k, | ||
int | vx[6], | ||
int8_t | metRidTyp | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
k | index of element to split. |
vx | ![]() |
metRidTyp | metric storage (classic or special) |
split all faces (6 edges)
int MMG5_splitedg | ( | MMG5_pMesh | mesh, |
MMG5_pSol | met, | ||
int | iel, | ||
int | iar, | ||
double | crit | ||
) |
mesh | pointer toward the mesh structure. |
met | pointer toward the metric structure. |
iel | tetra index |
iar | edge index of iel |
crit | quality threshold. |
Split edge iar of iel and verify that every new tet have a better quality than crit
|
extern |