|
mmg3d
|
Create implicit surface in mesh. More...
#include "mmg3d.h"
Functions | |
| static double | MMG3D_vfrac_1vertex (MMG5_pPoint ppt[4], int8_t i0, double v[4], int8_t part_opp) |
| double | MMG3D_vfrac (MMG5_pMesh mesh, MMG5_pSol sol, int k, int pm) |
| int | MMG3D_resetRef (MMG5_pMesh mesh) |
| static int | MMG5_invsl (double A[3][3], double b[3], double r[3]) |
| static int | MMG5_ismaniball (MMG5_pMesh mesh, MMG5_pSol sol, int k, int indp) |
| static int | MMG3D_snpval_ls (MMG5_pMesh mesh, MMG5_pSol sol) |
| int | MMG3D_rmc (MMG5_pMesh mesh, MMG5_pSol sol) |
| static int | MMG3D_cuttet_ls (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met) |
| static int | MMG3D_setref_ls (MMG5_pMesh mesh, MMG5_pSol sol) |
| int | MMG3D_update_xtetra (MMG5_pMesh mesh) |
| int | MMG5_chkmaniball (MMG5_pMesh mesh, int start, int8_t ip) |
| int | MMG5_chkmani (MMG5_pMesh mesh) |
| int | MMG5_chkmani2 (MMG5_pMesh mesh, MMG5_pSol sol) |
| int | MMG5_chkmanicoll (MMG5_pMesh mesh, int k, int iface, int iedg, int ndepmin, int ndepplus, int refmin, int refplus, int8_t isminp, int8_t isplp) |
| int | MMG3D_mmg3d2 (MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met) |
Variables | |
| int8_t | ddb |
Create implicit surface in mesh.
|
static |
| mesh | pointer toward the mesh structure. |
| sol | pointer toward the level-set values. |
| met | pointer toward a metric (non-mandatory). |
Proceed to discretization of the implicit function carried by sol into mesh, once values of sol have been snapped/checked


| int MMG3D_mmg3d2 | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | sol, | ||
| MMG5_pSol | met | ||
| ) |
| mesh | pointer toward the mesh structure. |
| sol | pointer toward the level-set. |
| met | pointer toward a metric (optionnal). |
Create implicit surface in mesh.


| int MMG3D_resetRef | ( | MMG5_pMesh | mesh | ) |
| mesh | pointer toward the mesh. |
Reset MG_ISO vertex and tetra references to 0.


| int MMG3D_rmc | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | sol | ||
| ) |
| mesh | pointer toward the mesh |
| sol | pointer toward the level-set |
Removal of small parasitic components (bubbles of material, etc) with volume less than mesh->info.rmc (default VOLFRAC) * volume of the mesh.


|
static |
| mesh | pointer toward the mesh structure. |
| sol | pointer toward the level-set values. |
Set references to tets according to the sign of the level set function.


|
static |
| mesh | pointer toward the mesh structure. |
| sol | pointer toward the level-set function. |
Snap values of the level set function very close to 0 to exactly 0, and prevent nonmanifold patterns from being generated.


| int MMG3D_update_xtetra | ( | MMG5_pMesh | mesh | ) |
| mesh | pointer toward the mesh structure. |
Update the xtetra array to store the new bdy faces created by the isosurface discretization.

| double MMG3D_vfrac | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | sol, | ||
| int | k, | ||
| int | pm | ||
| ) |
| mesh | pointer toward the mesh structure |
| sol | pointer toward the ls function |
| k | index of the triangle |
Calculate the area of the positive (if pm == 1) or negative (if pm == -1) subdomain inside tetra k defined by the ls function in sol
Checks for debug mode


|
inlinestatic |
| ppt | array of points containing the tetra vertices |
| i0 | local index of the vertex that has a sign different to the other vertices. |
| part_opp | 0 if we want to compute the area containing the vertex i0, 1 if we want the area that do not contains i0. |
Compute the area (x6) defined by the level-set inside the tetra with vertices ppt. This tetra must be splitted by the level-set such has it has exactly 1 vertex (the vertex i0) with sign opposite to the other vertices. If part_opp == 0, we compte the area that contains i0, otherwise we compute the complementary area.


| int MMG5_chkmani | ( | MMG5_pMesh | mesh | ) |
Check whether implicit surface enclosed in volume is orientable
First test : check whether a tetra has 4 boundary faces
Second test : Check whether configuration is manifold in each ball


| int MMG5_chkmani2 | ( | MMG5_pMesh | mesh, |
| MMG5_pSol | sol | ||
| ) |
| mesh | pointer toward the mesh structure |
| sol | pointer toward the metric |
Check whether implicit surface enclosed in volume is orientable (perform an additionnal test w.r.t. MMG5_chkmani)
First test : assure no tetra has its 4 vertices on implicit boundary
Second test : check whether configuration is manifold in each ball

| int MMG5_chkmaniball | ( | MMG5_pMesh | mesh, |
| int | start, | ||
| int8_t | ip | ||
| ) |
| mesh | pointer toward the mesh |
| start | index of the starting tetra |
| ip | point index |
Check whether implicit surface is orientable in ball of point ip in tet iel ; Beware : may return 0 when implicit boundary is tangent to outer boundary

| int MMG5_chkmanicoll | ( | MMG5_pMesh | mesh, |
| int | k, | ||
| int | iface, | ||
| int | iedg, | ||
| int | ndepmin, | ||
| int | ndepplus, | ||
| int | refmin, | ||
| int | refplus, | ||
| int8_t | isminp, | ||
| int8_t | isplp | ||
| ) |
| mesh | pointer toward the mesh structure. |
| k | index of element in which we collapse. |
| iface | face through wich we perform the collapse |
| iedg | edge to collapse |
| ndepmin | index of an elt with ref refmin and outside the shell of edge. |
| ndepplus | ndex of an elt with ref refplus and outside the shell of edge. |
| refmin | reference of one of the two subdomains in presence |
| refplus | reference of the other subdomain in presence |
| isminp | 1 if we have found a tetra with ref refmin |
| isplp | 1 if we have found a tetra with ref refplus |
Check whether collapse of point np to nq does not create a non manifold situation at nq ndepmin, ndepplus = tetra of ref minus, plus in ball of np, not in shell of (np,nq).
First step : pile up tetras of future ball of nq, crossing through the shell of (np,nq), as long as they have same ref as ndepmin list[l] <= 0 if element of ball of np, >= 0, if element of ball of nq
Second step : same process, starting with a tetra of different reference, in the ball of np

|
inlinestatic |
solve 3*3 non symmetric system Ar = b
|
static |
| mesh | pointer toward the mesh structure. |
| sol | pointer toward the level-set values. |
| k | index of the starting tetra. |
| indp | local index (inside the tria k) of the vertex that we check. |
Check whether snapping the value of vertex indp to 0 exactly leads to a non manifold situation.

| int8_t ddb |