mmgs
libmmgs.h
Go to the documentation of this file.
1 /* =============================================================================
2 ** This file is part of the mmg software package for the tetrahedral
3 ** mesh modification.
4 ** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
5 **
6 ** mmg is free software: you can redistribute it and/or modify it
7 ** under the terms of the GNU Lesser General Public License as published
8 ** by the Free Software Foundation, either version 3 of the License, or
9 ** (at your option) any later version.
10 **
11 ** mmg is distributed in the hope that it will be useful, but WITHOUT
12 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 ** License for more details.
15 **
16 ** You should have received a copy of the GNU Lesser General Public
17 ** License and of the GNU General Public License along with mmg (in
18 ** files COPYING.LESSER and COPYING). If not, see
19 ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
20 ** use this copy of the mmg distribution only if you accept them.
21 ** =============================================================================
22 */
23 
36 #ifndef MMGSLIB_H
37 #define MMGSLIB_H
38 
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 #include "mmg/mmgs/libmmgtypes.h"
45 
49 #define MMGS_LMAX 1024
50 
60 enum MMGS_Param {
82 };
83 
84 /*----------------------------- functions header -----------------------------*/
85 /* Initialization functions */
86 /* init structures */
111 int MMGS_Init_mesh(const int starter,...);
112 
138 
139 /* init file names */
156 int MMGS_Set_inputMeshName(MMG5_pMesh mesh, const char* meshin);
173 int MMGS_Set_outputMeshName(MMG5_pMesh mesh, const char* meshout);
191 int MMGS_Set_inputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solin);
209 int MMGS_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solout);
210 
211 /* init structure sizes */
230 int MMGS_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, int np, int typSol);
252  int nentities, int *typSol);
272 int MMGS_Set_meshSize(MMG5_pMesh mesh, int np, int nt, int na);
273 
274 /* init structure datas */
296 int MMGS_Set_vertex(MMG5_pMesh mesh, double c0, double c1,
297  double c2, int ref,int pos);
319  int MMGS_Set_vertices(MMG5_pMesh mesh, double *vertices,int *refs);
340 int MMGS_Set_triangle(MMG5_pMesh mesh, int v0, int v1,
341  int v2, int ref,int pos);
361  int MMGS_Set_triangles(MMG5_pMesh mesh, int *tria, int *refs);
381 int MMGS_Set_edge(MMG5_pMesh mesh, int v0, int v1, int ref,int pos);
397 int MMGS_Set_corner(MMG5_pMesh mesh, int k);
445 int MMGS_Set_ridge(MMG5_pMesh mesh, int k);
462 
480  int MMGS_Set_edges(MMG5_pMesh mesh, int *edges, int* refs);
501  int MMGS_Get_edges(MMG5_pMesh mesh,int *edges,int* refs,
502  int *areRidges,int *areRequired);
503 
524 int MMGS_Set_normalAtVertex(MMG5_pMesh mesh, int k, double n0, double n1, double n2) ;
525 
543 int MMGS_Set_scalarSol(MMG5_pSol met, double s,int pos);
560 int MMGS_Set_scalarSols(MMG5_pSol met, double *s);
581 int MMGS_Set_vectorSol(MMG5_pSol met, double vx,double vy, double vz, int pos);
598 int MMGS_Set_vectorSols(MMG5_pSol met, double *sols);
622 int MMGS_Set_tensorSol(MMG5_pSol met, double m11,double m12, double m13,
623  double m22,double m23, double m33, int pos);
641 int MMGS_Set_tensorSols(MMG5_pSol met, double *sols);
661  int MMGS_Set_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,int pos);
682  int MMGS_Set_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
683 
684 /* check init */
701 
720 int MMGS_Set_iparameter(MMG5_pMesh mesh,MMG5_pSol sol, int iparam, int val);
739 int MMGS_Set_dparameter(MMG5_pMesh mesh,MMG5_pSol sol, int dparam, double val);
763 int MMGS_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, int ref,
764  double hmin, double hmax, double hausd);
765 
784 int MMGS_Get_meshSize(MMG5_pMesh mesh, int* np, int* nt, int* na);
803 int MMGS_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int* typEntity, int* np,
804  int* typSol);
827  int* nentities,int* typSol);
828 
851 int MMGS_Get_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2, int* ref,
852  int* isCorner, int* isRequired);
880 int MMGS_Get_vertices(MMG5_pMesh mesh, double* vertices, int* refs,
881  int* areCorners, int* areRequired);
903 int MMGS_Get_triangle(MMG5_pMesh mesh, int* v0, int* v1, int* v2, int* ref,
904  int* isRequired);
928 int MMGS_Get_triangles(MMG5_pMesh mesh, int* tria, int* refs,
929  int* areRequired);
950 int MMGS_Get_edge(MMG5_pMesh mesh, int* e0, int* e1, int* ref,
951  int* isRidge, int* isRequired);
952 
973 int MMGS_Get_normalAtVertex(MMG5_pMesh mesh, int k, double *n0, double *n1, double *n2) ;
974 
990 int MMGS_Get_scalarSol(MMG5_pSol met, double* s);
1007 int MMGS_Get_scalarSols(MMG5_pSol met, double* s);
1025 int MMGS_Get_vectorSol(MMG5_pSol met, double* vx, double* vy, double* vz);
1042 int MMGS_Get_vectorSols(MMG5_pSol met, double* sols);
1063 int MMGS_Get_tensorSol(MMG5_pSol met, double *m11,double *m12, double *m13,
1064  double *m22,double *m23, double *m33);
1081 int MMGS_Get_tensorSols(MMG5_pSol met, double *sols);
1101  int MMGS_Get_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,int pos);
1122  int MMGS_Get_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
1138 int MMGS_Get_iparameter(MMG5_pMesh mesh, int iparam);
1139 
1140 /* input/output functions */
1157 int MMGS_loadMesh(MMG5_pMesh mesh, const char* filename);
1176 int MMGS_loadMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
1195 int MMGS_loadMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
1212 int MMGS_saveMesh(MMG5_pMesh mesh, const char *filename);
1231  int MMGS_saveMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
1252 int MMGS_saveMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
1271 int MMGS_loadSol(MMG5_pMesh mesh,MMG5_pSol met, const char* filename);
1289 int MMGS_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char* filename);
1307 int MMGS_saveSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename);
1325 int MMGS_saveAllSols(MMG5_pMesh mesh,MMG5_pSol *sol ,const char *filename);
1326 
1327 /* deallocations */
1355 int MMGS_Free_all(const int starter,...);
1356 
1387 int MMGS_Free_structures(const int starter,...);
1388 
1416 int MMGS_Free_names(const int starter,...);
1417 
1418 /* library */
1436 
1454 
1469 
1470 /* Tools for the library */
1487 
1501 int MMGS_usage(char *prog);
1514 int MMGS_parsar(int argc,char *argv[],MMG5_pMesh mesh,MMG5_pSol met);
1557 
1579 int MMGS_Get_adjaTri(MMG5_pMesh mesh, int kel, int listri[3]);
1580 
1602 int MMGS_Get_adjaVerticesFast(MMG5_pMesh mesh, int ip,int start, int lispoi[MMGS_LMAX]);
1603 
1604 #ifdef __cplusplus
1605 }
1606 #endif
1607 
1608 #endif
void MMGS_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
Definition: API_functions_s.c:55
int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_s.c:100
int MMGS_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_s.c:747
int MMGS_Set_requiredVertex(MMG5_pMesh mesh, int k)
Definition: API_functions_s.c:686
int MMGS_Get_normalAtVertex(MMG5_pMesh mesh, int k, double *n0, double *n1, double *n2)
Definition: API_functions_s.c:724
#define MMGS_LMAX
Definition: libmmgs.h:49
int MMGS_Free_all(const int starter,...)
Definition: API_functions_s.c:1473
int MMGS_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
Definition: API_functions_s.c:1171
void MMGS_Init_parameters(MMG5_pMesh mesh)
Definition: API_functions_s.c:79
int MMGS_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, int pos)
Definition: API_functions_s.c:1084
int MMGS_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_s.c:1342
! MMG5_pTria tria
Definition: libmmgtypesf.h:603
int MMGS_loadSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_s.c:1264
int MMGS_Get_adjaTri(MMG5_pMesh mesh, int kel, int listri[3])
Return adjacent elements of a triangle.
Definition: libmmgs_tools.c:389
Definition: libmmgs.h:62
int MMGS_Set_requiredEdge(MMG5_pMesh mesh, int k)
Definition: API_functions_s.c:706
! int k
Definition: libmmgtypesf.h:543
! int nt
Definition: libmmgtypesf.h:571
Definition: libmmgs.h:78
int MMGS_Get_vectorSols(MMG5_pSol met, double *sols)
Definition: API_functions_s.c:918
int MMGS_Get_tensorSols(MMG5_pSol met, double *sols)
Definition: API_functions_s.c:1038
int MMGS_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
Definition: API_functions_s.c:71
Definition: libmmgtypes.h:563
Definition: libmmgs.h:64
! int nsols
Definition: libmmgtypesf.h:573
int MMGS_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, int ref, double hmin, double hmax, double hausd)
Definition: API_functions_s.c:1405
int MMGS_Set_scalarSols(MMG5_pSol met, double *s)
Definition: API_functions_s.c:798
Definition: libmmgs.h:70
int MMGS_Set_vertices(MMG5_pMesh mesh, double *vertices, int *refs)
Definition: API_functions_s.c:316
int MMGS_mmgsls(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmgs.c:270
Definition: libmmgs.h:74
Definition: libmmgs.h:65
void MMGS_setfunc(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmgs_tools.c:39
Definition: libmmgs.h:68
int MMGS_Set_scalarSol(MMG5_pSol met, double s, int pos)
Definition: API_functions_s.c:734
int MMGS_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_s.c:1489
int MMGS_usage(char *prog)
Definition: libmmgs_tools.c:70
int MMGS_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
Definition: API_functions_s.c:1354
Store input parameters of the run.
Definition: libmmgtypes.h:443
int MMGS_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, int val)
Definition: API_functions_s.c:1216
int MMGS_Set_edge(MMG5_pMesh mesh, int v0, int v1, int ref, int pos)
Definition: API_functions_s.c:555
int MMGS_Set_meshSize(MMG5_pMesh mesh, int np, int nt, int na)
Definition: API_functions_s.c:168
int MMGS_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, int *np, int *typSol)
Definition: API_functions_s.c:213
int MMGS_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Definition: API_functions_s.c:67
int MMGS_Get_iparameter(MMG5_pMesh mesh, int iparam)
Definition: API_functions_s.c:1307
Definition: libmmgs.h:79
int MMGS_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m13, double *m22, double *m23, double *m33)
Definition: API_functions_s.c:975
int MMGS_Set_vectorSols(MMG5_pSol met, double *sols)
Definition: API_functions_s.c:895
int MMGS_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, int np, int typSol)
Definition: API_functions_s.c:88
int MMGS_Set_corner(MMG5_pMesh mesh, int k)
Definition: API_functions_s.c:680
Definition: libmmgs.h:72
! double hausd
Definition: libmmgtypesf.h:243
int MMGS_Get_triangles(MMG5_pMesh mesh, int *tria, int *refs, int *areRequired)
Definition: API_functions_s.c:529
MMG5_Info info
Definition: libmmgtypesf.h:607
MMGS_Param
Input parameters for mmg library.
Definition: libmmgs.h:60
Definition: libmmgs.h:77
int MMGS_Get_scalarSols(MMG5_pSol met, double *s)
Definition: API_functions_s.c:815
void MMGS_destockOptions(MMG5_pMesh mesh, MMG5_Info *info)
Definition: libmmgs_tools.c:383
! double hmin
Definition: libmmgtypesf.h:241
int MMGS_Set_tensorSols(MMG5_pSol met, double *sols)
Definition: API_functions_s.c:1012
int MMGS_Set_constantSize(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmgs_tools.c:477
int MMGS_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename)
Definition: inout_s.c:1250
int MMGS_saveMesh(MMG5_pMesh mesh, const char *filename)
Definition: inout_s.c:815
int MMGS_saveSol(MMG5_pMesh mesh, MMG5_pSol met, const char *filename)
Definition: inout_s.c:1447
Definition: libmmgs.h:63
int MMGS_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Definition: API_functions_s.c:1142
int MMGS_Set_ridge(MMG5_pMesh mesh, int k)
Definition: API_functions_s.c:700
int MMGS_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_s.c:1245
Definition: libmmgs.h:75
Definition: libmmgs.h:66
Definition: libmmgs.h:76
int MMGS_Get_vectorSol(MMG5_pSol met, double *vx, double *vy, double *vz)
Definition: API_functions_s.c:863
int MMGS_Set_triangles(MMG5_pMesh mesh, int *tria, int *refs)
Definition: API_functions_s.c:507
! int ref
Definition: libmmgtypesf.h:244
const int starter
Definition: API_functionsf_s.c:626
int MMGS_Get_meshSize(MMG5_pMesh mesh, int *np, int *nt, int *na)
Definition: API_functions_s.c:268
MMG mesh structure.
Definition: libmmgtypes.h:509
! double n2[3]
Definition: libmmgtypesf.h:275
int MMGS_Get_edge(MMG5_pMesh mesh, int *e0, int *e1, int *ref, int *isRidge, int *isRequired)
Definition: API_functions_s.c:587
int MMGS_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, int nentities, int *typSol)
Definition: API_functions_s.c:135
Definition: libmmgs.h:80
int MMGS_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
Definition: API_functions_s.c:76
int MMGS_Get_triangle(MMG5_pMesh mesh, int *v0, int *v1, int *v2, int *ref, int *isRequired)
Definition: API_functions_s.c:464
! double hmax
Definition: libmmgtypesf.h:242
! int np
Definition: libmmgtypesf.h:571
int MMGS_Get_vertices(MMG5_pMesh mesh, double *vertices, int *refs, int *areCorners, int *areRequired)
Definition: API_functions_s.c:390
int MMGS_Set_edges(MMG5_pMesh mesh, int *edges, int *refs)
Definition: API_functions_s.c:633
Definition: libmmgs.h:67
Definition: libmmgs.h:71
int MMGS_stockOptions(MMG5_pMesh mesh, MMG5_Info *info)
Definition: libmmgs_tools.c:370
int MMGS_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, int *ref, int *isCorner, int *isRequired)
Definition: API_functions_s.c:343
int MMGS_Get_edges(MMG5_pMesh mesh, int *edges, int *refs, int *areRidges, int *areRequired)
Definition: API_functions_s.c:650
Definition: libmmgs.h:69
int MMGS_Set_triangle(MMG5_pMesh mesh, int v0, int v1, int v2, int ref, int pos)
Definition: API_functions_s.c:426
int MMGS_Set_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, int ref, int pos)
Definition: API_functions_s.c:280
int MMGS_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, int pos)
Definition: API_functions_s.c:1057
int MMGS_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m13, double m22, double m23, double m33, int pos)
Definition: API_functions_s.c:933
! double n1[3]
Definition: libmmgtypesf.h:275
MMG5_pMesh char * meshin
Definition: API_functionsf_s.c:664
int MMGS_Set_vectorSol(MMG5_pSol met, double vx, double vy, double vz, int pos)
Definition: API_functions_s.c:825
! int na
Definition: libmmgtypesf.h:571
MMG5_pMesh * mesh
Definition: API_functionsf_s.c:63
int MMGS_parsar(int argc, char *argv[], MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmgs_tools.c:97
int MMGS_Free_structures(const int starter,...)
Definition: API_functions_s.c:1487
Definition: libmmgs.h:73
int MMGS_defaultValues(MMG5_pMesh mesh)
Definition: libmmgs_tools.c:84
int MMGS_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, int *nentities, int *typSol)
Definition: API_functions_s.c:239
int MMGS_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename)
Definition: inout_s.c:688
! int s
Definition: libmmgtypesf.h:262
Definition: libmmgs.h:81
int MMGS_mmgslib(MMG5_pMesh mesh, MMG5_pSol met)
Definition: libmmgs.c:429
Definition: libmmgs.h:61
int MMGS_Init_mesh(const int starter,...)
Definition: API_functions_s.c:42
int MMGS_Get_adjaVerticesFast(MMG5_pMesh mesh, int ip, int start, int lispoi[MMGS_LMAX])
Return adjacent elements of a triangle.
Definition: libmmgs_tools.c:403
int MMGS_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
Definition: API_functions_s.c:62
int MMGS_Get_scalarSol(MMG5_pSol met, double *s)
Definition: API_functions_s.c:769
int MMGS_Free_names(const int starter,...)
Definition: API_functions_s.c:1501
int MMGS_Set_normalAtVertex(MMG5_pMesh mesh, int k, double n0, double n1, double n2)
Definition: API_functions_s.c:712
int MMGS_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Definition: API_functions_s.c:1114
int MMGS_Set_requiredTriangle(MMG5_pMesh mesh, int k)
Definition: API_functions_s.c:692