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

Tools functions for the mmg2d library. More...

#include "libmmg2d.h"
#include "libmmg2d_private.h"
#include "mmg2dexterns_private.h"
#include "mmgexterns_private.h"
Include dependency graph for libmmg2d_tools.c:

Go to the source code of this file.

Functions

void MMG2D_setfunc (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG2D_usage (char *name)
 
int MMG2D_parsar (int argc, char *argv[], MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol)
 
int MMG2D_defaultValues (MMG5_pMesh mesh)
 
int MMG2D_parsop (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG2D_freeLocalPar (MMG5_pMesh mesh)
 
int MMG2D_Get_numberOfNonBdyEdges (MMG5_pMesh mesh, MMG5_int *nb_edges)
 
int MMG2D_Get_nonBdyEdge (MMG5_pMesh mesh, MMG5_int *e0, MMG5_int *e1, MMG5_int *ref, MMG5_int idx)
 
int MMG2D_Get_adjaTri (MMG5_pMesh mesh, MMG5_int kel, MMG5_int listri[3])
 Return adjacent elements of a triangle. More...
 
MMG5_int MMG2D_Get_adjaVertices (MMG5_pMesh mesh, MMG5_int ip, MMG5_int lispoi[MMG2D_LMAX])
 Return adjacent elements of a triangle. More...
 
MMG5_int MMG2D_Get_adjaVerticesFast (MMG5_pMesh mesh, MMG5_int ip, MMG5_int start, MMG5_int lispoi[MMG2D_LMAX])
 Return adjacent elements of a triangle. More...
 
int MMG2D_Get_triFromEdge (MMG5_pMesh mesh, MMG5_int ked, MMG5_int *ktri, int *ied)
 
int MMG2D_Get_trisFromEdge (MMG5_pMesh mesh, MMG5_int ked, MMG5_int ktri[2], int ied[2])
 
int MMG2D_Set_constantSize (MMG5_pMesh mesh, MMG5_pSol met)
 
int MMG2D_Compute_eigenv (double m[3], double lambda[2], double vp[2][2])
 
void MMG2D_Reset_verticestags (MMG5_pMesh mesh)
 
void MMG2D_Free_triangles (MMG5_pMesh mesh)
 
void MMG2D_Free_edges (MMG5_pMesh mesh)
 
void MMG2D_Free_solutions (MMG5_pMesh mesh, MMG5_pSol sol)
 

Detailed Description

Tools functions for the mmg2d library.

Author
Algiane Froehly (Inria/UBordeaux)
Version
5
Date
01 2014

Definition in file libmmg2d_tools.c.

Function Documentation

◆ MMG2D_Compute_eigenv()

int MMG2D_Compute_eigenv ( double  m[3],
double  lambda[2],
double  vp[2][2] 
)
Parameters
mupper part of a symetric matric diagonalizable in |R
lambdaarray of the metric eigenvalues
vparray of the metric eigenvectors
Returns
the order of the eigenvalues

Compute the real eigenvalues and eigenvectors of a symetric matrice m whose upper part is provided (m11, m12, m22, in this order). lambda[0] is the eigenvalue associated to the eigenvector ( v[0][0], v[0,1] ) in C and to the eigenvector v(1,:) in fortran lambda[1] is the eigenvalue associated to the eigenvector ( v[1][0], v[1,1] ) in C and to the eigenvector v(2,:) in fortran

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_COMPUTE_EIGENV(m,lambda,vp,retval)
REAL(KIND=8), INTENT(IN) :: m(*)
REAL(KIND=8), INTENT(OUT) :: lambda(*),vp(*)
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 960 of file libmmg2d_tools.c.

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

◆ MMG2D_defaultValues()

int MMG2D_defaultValues ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure.
Returns
0 if fail, 1 if success.

Print the default parameters values.

Definition at line 479 of file libmmg2d_tools.c.

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

◆ MMG2D_Free_edges()

void MMG2D_Free_edges ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure

Free the mesh edges (and the associated xpoints).

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_FREE_EDGES(mesh)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
END SUBROUTINE

Definition at line 991 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_Free_solutions()

void MMG2D_Free_solutions ( MMG5_pMesh  mesh,
MMG5_pSol  sol 
)
Parameters
meshpointer toward the mesh structure
solpointer toward the solution structure

Free the solution.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_FREE_SOLUTIONS(mesh,sol)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol
END SUBROUTINE

Definition at line 1008 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_Free_triangles()

void MMG2D_Free_triangles ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure

Free the mesh elements (and the adjacency).

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_FREE_TRIANGLES(mesh)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
END SUBROUTINE

Definition at line 976 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_freeLocalPar()

int MMG2D_freeLocalPar ( MMG5_pMesh  mesh)

Definition at line 629 of file libmmg2d_tools.c.

◆ MMG2D_Get_adjaTri()

int MMG2D_Get_adjaTri ( MMG5_pMesh  mesh,
MMG5_int  kel,
MMG5_int  listri[3] 
)

Return adjacent elements of a triangle.

Parameters
meshpointer toward the mesh structure.
keltriangle index.
listripointer toward the table of the indices of the three adjacent triangles of the elt kel (the index is 0 if there is no adjacent).
Returns
1.

Find the indices of the 3 adjacent elements of triangle kel. $v_i = 0$ if the $i^{th}$ face has no adjacent element (so we are on a boundary face).

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_ADJATRI(mesh,kel,listri,retval)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
INTEGER, INTENT(IN) :: kel
INTEGER, DIMENSION(3), INTENT(OUT) :: listri
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 774 of file libmmg2d_tools.c.

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

◆ MMG2D_Get_adjaVertices()

MMG5_int MMG2D_Get_adjaVertices ( MMG5_pMesh  mesh,
MMG5_int  ip,
MMG5_int  lispoi[MMG2D_LMAX] 
)

Return adjacent elements of a triangle.

Parameters
meshpointer toward the mesh structure.
ipvertex index.
lispoipointer toward an array of size MMG2D_LMAX that will contain the indices of adjacent vertices to the vertex ip.
Returns
nbpoi the number of adjacent points if success, 0 if fail.

Find the indices of the adjacent vertices of the vertex ip.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_ADJAVERTICES(mesh,ip,lispoi,retval)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
INTEGER(MMG5F_INT), INTENT(IN) :: ip
INTEGER(MMG5F_INT), DIMENSION(MMG2D_LMAX), INTENT(OUT) :: lispoi
INTEGER(MMG5F_INT), INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 788 of file libmmg2d_tools.c.

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

◆ MMG2D_Get_adjaVerticesFast()

MMG5_int MMG2D_Get_adjaVerticesFast ( MMG5_pMesh  mesh,
MMG5_int  ip,
MMG5_int  start,
MMG5_int  lispoi[MMG2D_LMAX] 
)

Return adjacent elements of a triangle.

Parameters
meshpointer toward the mesh structure.
ipvertex index.
startindex of a triangle holding ip.
lispoipointer toward an array of size MMG2D_LMAX that will contain the indices of adjacent vertices to the vertex ip.
Returns
nbpoi the number of adjacent points if success, 0 if fail.

Find the indices of the adjacent vertices of the vertex ip of the triangle start.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_ADJAVERTICESFAST(mesh,ip,start,lispoi,retval)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
INTEGER(MMG5F_INT), INTENT(IN) :: ip,start
INTEGER(MMG5F_INT), DIMENSION(MMG2D_LMAX), INTENT(OUT) :: lispoi
INTEGER(MMG5F_INT), INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 800 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_Get_nonBdyEdge()

int MMG2D_Get_nonBdyEdge ( MMG5_pMesh  mesh,
MMG5_int *  e0,
MMG5_int *  e1,
MMG5_int *  ref,
MMG5_int  idx 
)
Parameters
meshpointer toward the mesh structure.
e0pointer toward the first extremity of the edge.
e1pointer toward the second extremity of the edge.
refpointer toward the edge reference.
idxindex of the non boundary edge to get (between 1 and nb_edges)
Returns
0 if failed, 1 otherwise.

Get extremities e0, e1 and reference ref of the idx^th non boundary edge (for DG methods for example). An edge is boundary if it is located at the interface of 2 domains with different references, if it belongs to one triangle only or if it is a singular edge (ridge or required).

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_NONBDYEDGE(mesh,e0,e1,ref,idx,retval)
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
INTEGER(MMG5F_INT), INTENT(OUT):: e0,e1
INTEGER(MMG5F_INT) :: ref
INTEGER(MMG5F_INT), INTENT(IN) :: idx
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 730 of file libmmg2d_tools.c.

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

◆ MMG2D_Get_numberOfNonBdyEdges()

int MMG2D_Get_numberOfNonBdyEdges ( MMG5_pMesh  mesh,
MMG5_int *  nb_edges 
)
Parameters
meshpointer toward the mesh structure.
nb_edgespointer toward the number of non boundary edges.
Returns
0 if failed, 1 otherwise.

Get the number of non boundary edges (for DG methods for example). An edge is boundary if it is located at the interface of 2 domains with different references, if it belongs to one triangle only or if it is a singular edge (ridge or required). Append these edges to the list of edge.

Warning
reallocate the edge array and append the internal edges. This may modify the behaviour of other functions.
Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_NUMBEROFNONBDYEDGES(mesh,nb_edges,retval)
MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh
INTEGER(MMG5F_INT), INTENT(OUT):: nb_edges
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 637 of file libmmg2d_tools.c.

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

◆ MMG2D_Get_triFromEdge()

int MMG2D_Get_triFromEdge ( MMG5_pMesh  mesh,
MMG5_int  ked,
MMG5_int *  ktri,
int *  ied 
)
Parameters
meshpointer toward the mesh structure.
kedindex of the boundary edge.
ktripointer toward the index of the tri (filled by the function).
iedpointer toward the index of the edge of the triangle ktri that correspond to the boundary edge ked.
Returns
0 if fail, 1 otherwise

Fill ktri by the index of the triangle to which belong a boundary edge and ied by the index of the edge of the triangle that correspond to the edge.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_TRIFROMEDGE(mesh,ked,ktri,ied,retval)
MMG5_DATA_PTR_T, INTENT(IN) :: mesh
INTEGER(MMG5F_INT), INTENT(IN) :: ked
INTEGER(MMG5F_INT), INTENT(OUT) :: ktri
INTEGER, INTENT(OUT) :: retval,ied
END SUBROUTINE

Definition at line 875 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_Get_trisFromEdge()

int MMG2D_Get_trisFromEdge ( MMG5_pMesh  mesh,
MMG5_int  ked,
MMG5_int  ktri[2],
int  ied[2] 
)
Parameters
meshpointer toward the mesh structure.
kedindex of the boundary edge.
ktripointer toward an array of size 2 to fill by the indices of the triangles that share the edge ked (filled by the function).
iedpointer toward an array of size two to fill by the indices of the edge in each triangle.
Returns
0 if fail, 1 otherwise

Fill ktri by the indices of the triangles to which belong a boundary edge and ied by the indices of the matching edge in each triangle. If ked belongs to one triangle only, ktri[1] = ied[1] = 0.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_GET_TRISFROMEDGE(mesh,ked,ktri,ied,retval)
MMG5_DATA_PTR_T, INTENT(IN) :: mesh
INTEGER(MMG5F_INT), INTENT(IN) :: ked
INTEGER(MMG5F_INT), DIMENSION(2),INTENT(OUT) :: ktri
INTEGER, INTENT(OUT) :: retval,ied
END SUBROUTINE

Definition at line 894 of file libmmg2d_tools.c.

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

◆ MMG2D_parsar()

int MMG2D_parsar ( int  argc,
char *  argv[],
MMG5_pMesh  mesh,
MMG5_pSol  met,
MMG5_pSol  sol 
)
Parameters
argcnumber of command line arguments.
argvcommand line arguments.
meshpointer toward the mesh structure.
metpointer toward a metric
solpointer toward a level-set or displacement
Returns
1 if we want to run Mmg after, 0 if not or if fail.

Store command line arguments.

Remarks
no matching fortran function.

check file names

Definition at line 102 of file libmmg2d_tools.c.

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

◆ MMG2D_parsop()

int MMG2D_parsop ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh
metpointer toward the metric
Returns
1 if success, 0 if fail

Read parameter file DEFAULT.mmg2d

Definition at line 497 of file libmmg2d_tools.c.

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

◆ MMG2D_Reset_verticestags()

void MMG2D_Reset_verticestags ( MMG5_pMesh  mesh)
Parameters
meshpointer toward the mesh structure

Reset the vertices tag (be careful all the tags are deleted).

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_RESET_VERTICESTAGS(mesh)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh
END SUBROUTINE

Definition at line 967 of file libmmg2d_tools.c.

Here is the caller graph for this function:

◆ MMG2D_Set_constantSize()

int MMG2D_Set_constantSize ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure
metpointer toward the sol structure
Returns
1 if success

Compute constant size map according to mesh->info.hsiz, mesh->info.hmin and mesh->info.hmax. Update this 3 value if not compatible.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_SET_CONSTANTSIZE(mesh,met,retval)
MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 935 of file libmmg2d_tools.c.

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

◆ MMG2D_setfunc()

void MMG2D_setfunc ( MMG5_pMesh  mesh,
MMG5_pSol  met 
)
Parameters
meshpointer toward the mesh structure.
metpointer toward a sol structure.

Set function pointers for length, caltri... depending if case is iso or aniso

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_SETFUNC(mesh,met)
MMG5_DATA_PTR_T, INTENT(IN) :: mesh,met
END SUBROUTINE

Definition at line 38 of file libmmg2d_tools.c.

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

◆ MMG2D_usage()

int MMG2D_usage ( char *  prog)
Parameters
progpointer toward the program name.
return1 if success, 0 if fail.

Print help for mmg2d options.

Remarks
Fortran interface:

‍ SUBROUTINE MMG2D_USAGE(prog,strlen0,retval)
CHARACTER(LEN=*), INTENT(IN) :: prog
INTEGER, INTENT(IN) :: strlen0
INTEGER, INTENT(OUT) :: retval
END SUBROUTINE

Definition at line 68 of file libmmg2d_tools.c.

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