mmgpy 0.1.0__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mmgpy might be problematic. Click here for more details.
- bin/concrt140.dll +0 -0
- bin/mmg.dll +0 -0
- bin/mmg2d.dll +0 -0
- bin/mmg2d.exe +0 -0
- bin/mmg3d.dll +0 -0
- bin/mmg3d.exe +0 -0
- bin/mmgs.dll +0 -0
- bin/mmgs.exe +0 -0
- bin/msvcp140.dll +0 -0
- bin/msvcp140_1.dll +0 -0
- bin/msvcp140_2.dll +0 -0
- bin/msvcp140_atomic_wait.dll +0 -0
- bin/msvcp140_codecvt_ids.dll +0 -0
- bin/vcruntime140.dll +0 -0
- bin/vcruntime140_1.dll +0 -0
- include/mmg/common/libmmgtypes.h +687 -0
- include/mmg/common/libmmgtypesf.h +762 -0
- include/mmg/common/mmg_export.h +47 -0
- include/mmg/common/mmgcmakedefines.h +46 -0
- include/mmg/common/mmgcmakedefinesf.h +29 -0
- include/mmg/common/mmgversion.h +54 -0
- include/mmg/libmmg.h +67 -0
- include/mmg/libmmgf.h +42 -0
- include/mmg/mmg2d/libmmg2d.h +2761 -0
- include/mmg/mmg2d/libmmg2df.h +3263 -0
- include/mmg/mmg2d/mmg2d_export.h +34 -0
- include/mmg/mmg3d/libmmg3d.h +3444 -0
- include/mmg/mmg3d/libmmg3df.h +4041 -0
- include/mmg/mmg3d/mmg3d_export.h +34 -0
- include/mmg/mmgs/libmmgs.h +2560 -0
- include/mmg/mmgs/libmmgsf.h +3028 -0
- include/mmg/mmgs/mmgs_export.h +34 -0
- lib/cmake/mmg/FindElas.cmake +57 -0
- lib/cmake/mmg/FindSCOTCH.cmake +373 -0
- lib/cmake/mmg/MmgTargets-release.cmake +49 -0
- lib/cmake/mmg/MmgTargets.cmake +127 -0
- lib/cmake/mmg/mmgConfig.cmake +43 -0
- lib/mmg.lib +0 -0
- lib/mmg2d.lib +0 -0
- lib/mmg3d.lib +0 -0
- lib/mmgs.lib +0 -0
- mmgpy/__init__.py +3 -0
- mmgpy/_mmgpy.cp310-win_amd64.pyd +0 -0
- mmgpy/_mmgpy.pyi +31 -0
- mmgpy/_version.py.in +4 -0
- mmgpy/mmg2d.dll +0 -0
- mmgpy/mmg2d.lib +0 -0
- mmgpy/mmg3d.dll +0 -0
- mmgpy/mmg3d.lib +0 -0
- mmgpy/mmgs.dll +0 -0
- mmgpy/mmgs.lib +0 -0
- mmgpy/py.typed +0 -0
- mmgpy-0.1.0.data/scripts/mmg2d.dll +0 -0
- mmgpy-0.1.0.data/scripts/mmg2d.exe +0 -0
- mmgpy-0.1.0.data/scripts/mmg2d.lib +0 -0
- mmgpy-0.1.0.data/scripts/mmg3d.dll +0 -0
- mmgpy-0.1.0.data/scripts/mmg3d.exe +0 -0
- mmgpy-0.1.0.data/scripts/mmg3d.lib +0 -0
- mmgpy-0.1.0.data/scripts/mmgs.dll +0 -0
- mmgpy-0.1.0.data/scripts/mmgs.exe +0 -0
- mmgpy-0.1.0.data/scripts/mmgs.lib +0 -0
- mmgpy-0.1.0.dist-info/METADATA +52 -0
- mmgpy-0.1.0.dist-info/RECORD +68 -0
- mmgpy-0.1.0.dist-info/WHEEL +5 -0
- mmgpy-0.1.0.dist-info/licenses/LICENSE +19 -0
- share/man/man1/mmg2d.1.gz +0 -0
- share/man/man1/mmg3d.1.gz +0 -0
- share/man/man1/mmgs.1.gz +0 -0
|
@@ -0,0 +1,2560 @@
|
|
|
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
|
+
|
|
24
|
+
/*
|
|
25
|
+
* This file defines the C and Fortran headers of the mmgs API, and
|
|
26
|
+
* their Doxygen documentation.
|
|
27
|
+
*
|
|
28
|
+
* NOTES FOR DEVELOPERS:
|
|
29
|
+
*
|
|
30
|
+
* - The Fortran headers are generated from comment lines that start with '* >'.
|
|
31
|
+
* They must match the C declarations.
|
|
32
|
+
*
|
|
33
|
+
* - We cannot handle enum types in the Fortran version so enums are replaced
|
|
34
|
+
* by ints in both versions.
|
|
35
|
+
*
|
|
36
|
+
* - To keep the genheader program working, don't break line between an enum
|
|
37
|
+
* name and the opening brace (it creates errors under windows)
|
|
38
|
+
*
|
|
39
|
+
* - Since Mmg version 5,
|
|
40
|
+
* -- data structures and parameters that are common between mmg3d, mmg2d
|
|
41
|
+
* and mmgs use the MMG5_ prefix;
|
|
42
|
+
* -- API functions should have an MMG3D_, MMG2D_, or MMGS_ prefix,
|
|
43
|
+
* depending on the library; and
|
|
44
|
+
* -- some MMG5_ API functions exists but they are common to the
|
|
45
|
+
* three libraries.
|
|
46
|
+
*
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* \file mmgs/libmmgs.h
|
|
51
|
+
* \ingroup API
|
|
52
|
+
* \brief API headers and documentation for the mmgs library
|
|
53
|
+
* \author Algiane Froehly (Inria/UBordeaux)
|
|
54
|
+
* \version 5
|
|
55
|
+
* \date 01 2014
|
|
56
|
+
* \copyright GNU Lesser General Public License.
|
|
57
|
+
*
|
|
58
|
+
* These are the API functions for the mmgs library. These functions allow to
|
|
59
|
+
* load and save meshes and data defined on meshes; add, extract, or modify mesh
|
|
60
|
+
* data; and to call the library functions that perform remeshing and level-set
|
|
61
|
+
* discretization.
|
|
62
|
+
*
|
|
63
|
+
* Meshes are here defined in terms of vertices and two-dimensional objects:
|
|
64
|
+
* triangles and quadrangles, which live in 3D space. Edges can also be
|
|
65
|
+
* represented. All of these \a entities can have a \a reference: an integer
|
|
66
|
+
* value that can serve as a group identifier. In addition mesh entities can
|
|
67
|
+
* have \a attributes such as "required" or "corner".
|
|
68
|
+
*
|
|
69
|
+
* Data defined on meshes can be for example functions that are meant for
|
|
70
|
+
* level-set discretization and metric tensors that will govern edge
|
|
71
|
+
* lengths. These data can be scalar, vector, or (symmetric) tensor-valued; and
|
|
72
|
+
* there can be more than one data item associated with a mesh entity. These
|
|
73
|
+
* data are often referred to as \a solutions.
|
|
74
|
+
*
|
|
75
|
+
* Two of the functions here are referred to as "programs", because they perform
|
|
76
|
+
* the tasks for which mmgs is meant: meshing and level-set discretization. The
|
|
77
|
+
* other functions merely serve to load and save data and to perform pre- and
|
|
78
|
+
* post-processing. These programs actually behave much like independent
|
|
79
|
+
* programs: they send diagnostic output to stdout and in rare cases they may
|
|
80
|
+
* call the exit() function.
|
|
81
|
+
*
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
#ifndef MMGSLIB_H
|
|
85
|
+
#define MMGSLIB_H
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
#ifdef __cplusplus
|
|
89
|
+
extern "C" {
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
#include "mmg/mmgs/mmgs_export.h"
|
|
93
|
+
#include "mmg/common/libmmgtypes.h"
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Maximum array size when storing adjacent vertices (or ball) of a vertex.
|
|
97
|
+
*/
|
|
98
|
+
#define MMGS_LMAX 1024
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* \enum MMGS_Param
|
|
102
|
+
* \brief Input parameters for mmg library.
|
|
103
|
+
*
|
|
104
|
+
* Input parameters for mmg library. Options prefixed by \a
|
|
105
|
+
* MMGS_IPARAM asked for integers values ans options prefixed by \a
|
|
106
|
+
* MMGS_DPARAM asked for real values.
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
enum MMGS_Param {
|
|
110
|
+
MMGS_IPARAM_verbose, /*!< [-1..10], Level of verbosity */
|
|
111
|
+
MMGS_IPARAM_mem, /*!< [n/-1], Max memory size in MBytes or -1 to keep the default value */
|
|
112
|
+
MMGS_IPARAM_debug, /*!< [1/0], Turn on/off debug mode */
|
|
113
|
+
MMGS_IPARAM_angle, /*!< [1/0], Turn on/off angle detection */
|
|
114
|
+
MMGS_IPARAM_iso, /*!< [1/0], Enable level-set discretization */
|
|
115
|
+
MMGS_IPARAM_isosurf, /*!< [1/0], Enable level-set discretization on the surface part */
|
|
116
|
+
MMGS_IPARAM_isoref, /*!< [0/n], Iso-surface boundary material reference */
|
|
117
|
+
MMGS_IPARAM_keepRef, /*!< [1/0], Preserve the initial domain references in level-set mode */
|
|
118
|
+
MMGS_IPARAM_optim, /*!< [1/0], Optimize mesh keeping its initial edge sizes */
|
|
119
|
+
MMGS_IPARAM_noinsert, /*!< [1/0], Avoid/allow vertex insertion */
|
|
120
|
+
MMGS_IPARAM_noswap, /*!< [1/0], Avoid/allow edge or face flipping */
|
|
121
|
+
MMGS_IPARAM_nomove, /*!< [1/0], Avoid/allow vertex relocation */
|
|
122
|
+
MMGS_IPARAM_nreg, /*!< [0/1], Disable/enable regularization of normals */
|
|
123
|
+
MMGS_IPARAM_xreg, /*!< [0/1], Disable/enable regularization by moving vertices */
|
|
124
|
+
MMGS_IPARAM_numberOfLocalParam,/*!< [n], Number of local parameters */
|
|
125
|
+
MMGS_IPARAM_numberOfLSBaseReferences, /*!< [n], Number of base references for bubble removal */
|
|
126
|
+
MMGS_IPARAM_numberOfMat, /*!< [n], Number of material in level-set mode */
|
|
127
|
+
MMGS_IPARAM_numsubdomain, /*!< [0/n], Save only subdomain n (0==all subdomains) */
|
|
128
|
+
MMGS_IPARAM_renum, /*!< [1/0], Turn on/off renumbering with Scotch */
|
|
129
|
+
MMGS_IPARAM_anisosize, /*!< [1/0], Turn on/off anisotropic metric creation when no metric is provided */
|
|
130
|
+
MMGS_IPARAM_nosizreq, /*!< [0/1], Allow/avoid overwritings of sizes at required vertices (advanced usage) */
|
|
131
|
+
MMGS_DPARAM_angleDetection, /*!< [val], Threshold for angle detection */
|
|
132
|
+
MMGS_DPARAM_hmin, /*!< [val], Minimal edge length */
|
|
133
|
+
MMGS_DPARAM_hmax, /*!< [val], Maximal edge length */
|
|
134
|
+
MMGS_DPARAM_hsiz, /*!< [val], Constant edge length */
|
|
135
|
+
MMGS_DPARAM_hausd, /*!< [val], Global Hausdorff distance (on all the boundary surfaces of the mesh) */
|
|
136
|
+
MMGS_DPARAM_hgrad, /*!< [val], Gradation */
|
|
137
|
+
MMGS_DPARAM_hgradreq, /*!< [val], Gradation on required entites (advanced usage) */
|
|
138
|
+
MMGS_DPARAM_ls, /*!< [val], Function value where the level set is to be discretized */
|
|
139
|
+
MMGS_DPARAM_xreg, /*!< [val], Relaxation parameter for coordinate regularization (0<val<1) */
|
|
140
|
+
MMGS_DPARAM_rmc, /*!< [-1/val], Remove small disconnected components in level-set mode */
|
|
141
|
+
MMGS_PARAM_size, /*!< [n], Number of parameters */
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
/*----------------------------- function headers -----------------------------*/
|
|
145
|
+
/* Initialization functions */
|
|
146
|
+
/* init structures */
|
|
147
|
+
/**
|
|
148
|
+
* \brief Initialize a mesh structure and optionally the associated solution and
|
|
149
|
+
* metric structures.
|
|
150
|
+
*
|
|
151
|
+
* \param starter dummy argument used to initialize the variadic argument list
|
|
152
|
+
* \param ... variadic arguments.
|
|
153
|
+
*
|
|
154
|
+
* For the MMGS_mmgslib function, you need
|
|
155
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
156
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet,
|
|
157
|
+
* &your_metric,MMG5_ARG_end).
|
|
158
|
+
*
|
|
159
|
+
* For the \ref MMGS_mmgsls function, you need
|
|
160
|
+
* to call the \a MMGS_Init_mesh function with the following arguments :
|
|
161
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
162
|
+
* &your_level_set,MMG5_ARG_end).
|
|
163
|
+
*
|
|
164
|
+
* Here, \a your_mesh is a \ref MMG5_pMesh, \a your_metric and \a your_level_set
|
|
165
|
+
* are \ref MMG5_pSol.
|
|
166
|
+
*
|
|
167
|
+
* \return 1 on success, 0 on failure
|
|
168
|
+
*
|
|
169
|
+
* \remark No fortran interface, to allow variadic arguments.
|
|
170
|
+
*
|
|
171
|
+
*/
|
|
172
|
+
LIBMMGS_EXPORT int MMGS_Init_mesh(const int starter,...);
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* \brief Initialize file names to their default values.
|
|
176
|
+
*
|
|
177
|
+
* \param mesh pointer to the mesh structure.
|
|
178
|
+
* \param sol pointer to the sol structure.
|
|
179
|
+
*
|
|
180
|
+
* \remark Fortran interface:
|
|
181
|
+
* > SUBROUTINE MMGS_INIT_FILENAMES(mesh,sol)\n
|
|
182
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
183
|
+
* > END SUBROUTINE\n
|
|
184
|
+
*
|
|
185
|
+
*/
|
|
186
|
+
LIBMMGS_EXPORT void MMGS_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol);
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* \brief Initialize the input parameters.
|
|
190
|
+
*
|
|
191
|
+
* \param mesh pointer to the mesh structure.
|
|
192
|
+
*
|
|
193
|
+
* Initialization of the input parameters (stored in the Info structure).
|
|
194
|
+
*
|
|
195
|
+
* \remark Fortran interface:
|
|
196
|
+
* > SUBROUTINE MMGS_INIT_PARAMETERS(mesh)\n
|
|
197
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
198
|
+
* > END SUBROUTINE\n
|
|
199
|
+
*
|
|
200
|
+
*/
|
|
201
|
+
LIBMMGS_EXPORT void MMGS_Init_parameters(MMG5_pMesh mesh);
|
|
202
|
+
|
|
203
|
+
/* init file names */
|
|
204
|
+
/**
|
|
205
|
+
* \brief Set the name of the input mesh.
|
|
206
|
+
*
|
|
207
|
+
* \param mesh pointer to the mesh structure.
|
|
208
|
+
* \param meshin input mesh name.
|
|
209
|
+
* \return 1.
|
|
210
|
+
*
|
|
211
|
+
* \remark Fortran interface:
|
|
212
|
+
* > SUBROUTINE MMGS_SET_INPUTMESHNAME(mesh,meshin,strlen0,retval)\n
|
|
213
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
214
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: meshin\n
|
|
215
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
216
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
217
|
+
* > END SUBROUTINE\n
|
|
218
|
+
*
|
|
219
|
+
*/
|
|
220
|
+
LIBMMGS_EXPORT int MMGS_Set_inputMeshName(MMG5_pMesh mesh, const char* meshin);
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* \brief Set the name of the output mesh file.
|
|
224
|
+
*
|
|
225
|
+
* \param mesh pointer to the mesh structure.
|
|
226
|
+
* \param meshout name of the output mesh file.
|
|
227
|
+
* \return 1.
|
|
228
|
+
*
|
|
229
|
+
* \remark Fortran interface:
|
|
230
|
+
* > SUBROUTINE MMGS_SET_OUTPUTMESHNAME(mesh,meshout,strlen0,retval)\n
|
|
231
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
232
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: meshout\n
|
|
233
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
234
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
235
|
+
* > END SUBROUTINE\n
|
|
236
|
+
*
|
|
237
|
+
*/
|
|
238
|
+
LIBMMGS_EXPORT int MMGS_Set_outputMeshName(MMG5_pMesh mesh, const char* meshout);
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* \brief Set the name of the input solution file.
|
|
242
|
+
*
|
|
243
|
+
* \param mesh pointer to the mesh structure.
|
|
244
|
+
* \param sol pointer to the sol structure.
|
|
245
|
+
* \param solin name of the input solution file.
|
|
246
|
+
* \return 1.
|
|
247
|
+
*
|
|
248
|
+
* \remark Fortran interface:
|
|
249
|
+
* > SUBROUTINE MMGS_SET_INPUTSOLNAME(mesh,sol,solin,strlen0,retval)\n
|
|
250
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
251
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: solin\n
|
|
252
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
253
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
254
|
+
* > END SUBROUTINE\n
|
|
255
|
+
*
|
|
256
|
+
*/
|
|
257
|
+
LIBMMGS_EXPORT int MMGS_Set_inputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solin);
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* \brief Set the name of the output solution file.
|
|
261
|
+
*
|
|
262
|
+
* \param mesh pointer to the mesh structure.
|
|
263
|
+
* \param sol pointer to the sol structure.
|
|
264
|
+
* \param solout name of the output solution file.
|
|
265
|
+
* \return 0 on failure, 1 otherwise.
|
|
266
|
+
*
|
|
267
|
+
* \remark Fortran interface:
|
|
268
|
+
* > SUBROUTINE MMGS_SET_OUTPUTSOLNAME(mesh,sol,solout,strlen0,retval)\n
|
|
269
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
270
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: solout\n
|
|
271
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
272
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
273
|
+
* > END SUBROUTINE\n
|
|
274
|
+
*
|
|
275
|
+
*/
|
|
276
|
+
LIBMMGS_EXPORT int MMGS_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solout);
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* \brief Set the name of the input parameter file.
|
|
280
|
+
*
|
|
281
|
+
* \param mesh pointer to the mesh structure.
|
|
282
|
+
* \param fparamin name of the input parameter file.
|
|
283
|
+
* \return 1.
|
|
284
|
+
*
|
|
285
|
+
* \remark Fortran interface:
|
|
286
|
+
* > SUBROUTINE MMGS_SET_INPUTPARAMNAME(mesh,fparamin,strlen0,retval)\n
|
|
287
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
288
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: fparamin\n
|
|
289
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
290
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
291
|
+
* > END SUBROUTINE\n
|
|
292
|
+
*
|
|
293
|
+
*/
|
|
294
|
+
LIBMMGS_EXPORT int MMGS_Set_inputParamName(MMG5_pMesh mesh, const char* fparamin);
|
|
295
|
+
|
|
296
|
+
/* init structure sizes */
|
|
297
|
+
/**
|
|
298
|
+
* \brief Initialize an array of solution fields: set dimension, types and
|
|
299
|
+
* number of fields.
|
|
300
|
+
*
|
|
301
|
+
* \param mesh pointer to the mesh structure.
|
|
302
|
+
* \param sol pointer to the sol structure.
|
|
303
|
+
* \param typEntity types of solution entities (vertices, triangles, ...
|
|
304
|
+
* see \ref MMG5_entities for possible values).
|
|
305
|
+
* \param np number of solutions.
|
|
306
|
+
* \param typSol type of solution (scalar, vectorial, ..., see \ref MMG5_type for possible values)
|
|
307
|
+
* \return 0 on failure, 1 otherwise.
|
|
308
|
+
*
|
|
309
|
+
* To use to initialize an array of solution fields (not used by Mmg itself).
|
|
310
|
+
*
|
|
311
|
+
* \remark Fortran interface:
|
|
312
|
+
* > SUBROUTINE MMGS_SET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)\n
|
|
313
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
314
|
+
* > INTEGER, INTENT(IN) :: typEntity,typSol\n
|
|
315
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: np\n
|
|
316
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
317
|
+
* > END SUBROUTINE\n
|
|
318
|
+
*
|
|
319
|
+
*/
|
|
320
|
+
LIBMMGS_EXPORT int MMGS_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, MMG5_int np, int typSol);
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* \brief Initialize an array of solution fields defined at vertices: set
|
|
324
|
+
* dimension, types and number of fields.
|
|
325
|
+
*
|
|
326
|
+
* \param mesh pointer to the mesh structure.
|
|
327
|
+
* \param sol pointer to an allocatable sol structure.
|
|
328
|
+
* \param nsols number of solutions per entity
|
|
329
|
+
* \param nentities number of entities
|
|
330
|
+
* \param typSol Array of size nsol listing the type of the solutions
|
|
331
|
+
* (scalar, vectorial, ..., see \ref MMG5_type for possible values)
|
|
332
|
+
* \return 0 on failure, 1 otherwise.
|
|
333
|
+
*
|
|
334
|
+
* To use to initialize an array of solution fields (not used by Mmg itself).
|
|
335
|
+
*
|
|
336
|
+
* \remark Fortran interface:
|
|
337
|
+
* > SUBROUTINE MMGS_SET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)\n
|
|
338
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
339
|
+
* > INTEGER, INTENT(IN) :: nsols\n
|
|
340
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: nentities\n
|
|
341
|
+
* > INTEGER, INTENT(IN) :: typSol(*)\n
|
|
342
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
343
|
+
* > END SUBROUTINE\n
|
|
344
|
+
*
|
|
345
|
+
*/
|
|
346
|
+
LIBMMGS_EXPORT int MMGS_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol,int nsols,
|
|
347
|
+
MMG5_int nentities, int *typSol);
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* \brief Set the number of vertices, triangles and edges of the
|
|
351
|
+
* mesh and allocate the associated tables.
|
|
352
|
+
*
|
|
353
|
+
* \param mesh pointer to the mesh structure.
|
|
354
|
+
* \param np number of vertices.
|
|
355
|
+
* \param nt number of triangles.
|
|
356
|
+
* \param na number of edges.
|
|
357
|
+
* \return 0 on failure, 1 otherwise.
|
|
358
|
+
*
|
|
359
|
+
* If called again, this function resets the
|
|
360
|
+
* whole mesh to reallocate it at the new size
|
|
361
|
+
*
|
|
362
|
+
* \remark Fortran interface:
|
|
363
|
+
* > SUBROUTINE MMGS_SET_MESHSIZE(mesh,np,nt,na,retval)\n
|
|
364
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
365
|
+
* > INTEGER(MMG5F_INT) :: np,nt,na\n
|
|
366
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
367
|
+
* > END SUBROUTINE\n
|
|
368
|
+
*
|
|
369
|
+
*/
|
|
370
|
+
LIBMMGS_EXPORT int MMGS_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int nt, MMG5_int na);
|
|
371
|
+
|
|
372
|
+
/* init structure data */
|
|
373
|
+
/**
|
|
374
|
+
* \brief Set the coordinates of a single vertex.
|
|
375
|
+
*
|
|
376
|
+
* \param mesh pointer to the mesh structure.
|
|
377
|
+
* \param c0 coordinate of the vertex along the first dimension.
|
|
378
|
+
* \param c1 coordinate of the vertex along the second dimension.
|
|
379
|
+
* \param c2 coordinate of the vertex along the third dimension.
|
|
380
|
+
* \param ref vertex reference.
|
|
381
|
+
* \param pos position of the vertex in the mesh.
|
|
382
|
+
* \return 1.
|
|
383
|
+
*
|
|
384
|
+
* \brief Set vertex coordinates \a c0, \a c1,\a c2 and reference \a ref at
|
|
385
|
+
* position \a pos in the mesh structure (\a pos from 1 to the number of
|
|
386
|
+
* vertices included).
|
|
387
|
+
*
|
|
388
|
+
* \remark Fortran interface:
|
|
389
|
+
* > SUBROUTINE MMGS_SET_VERTEX(mesh,c0,c1,c2,ref,pos,retval)\n
|
|
390
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
391
|
+
* > REAL(KIND=8), INTENT(IN) :: c0,c1,c2\n
|
|
392
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: ref,pos\n
|
|
393
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
394
|
+
* > END SUBROUTINE\n
|
|
395
|
+
*
|
|
396
|
+
*/
|
|
397
|
+
LIBMMGS_EXPORT int MMGS_Set_vertex(MMG5_pMesh mesh, double c0, double c1,
|
|
398
|
+
double c2, MMG5_int ref, MMG5_int pos);
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* \brief Set the coordinates and references of all vertices in a mesh
|
|
402
|
+
*
|
|
403
|
+
* \param mesh pointer to the mesh structure.
|
|
404
|
+
* \param vertices array of vertex coordinates in the order
|
|
405
|
+
* \f$[x_1, y_1, z_1, x_2, \ldots, z_N]\f$ where \f$N\f$ is the number of vertices.
|
|
406
|
+
* \param refs array of references.
|
|
407
|
+
* The reference of vertex \f$i\f$ is stored in refs[\f$i-1\f$].
|
|
408
|
+
* \return 1.
|
|
409
|
+
*
|
|
410
|
+
* \remark Fortran interface: (commentated in order to allow to pass
|
|
411
|
+
* \%val(0) instead of the refs array)
|
|
412
|
+
* > ! SUBROUTINE MMGS_SET_VERTICES(mesh,vertices,refs,retval)\n
|
|
413
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
414
|
+
* > ! REAL(KIND=8), DIMENSION(*),INTENT(IN) :: vertices\n
|
|
415
|
+
* > ! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: refs\n
|
|
416
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
417
|
+
* > ! END SUBROUTINE\n
|
|
418
|
+
*
|
|
419
|
+
*/
|
|
420
|
+
LIBMMGS_EXPORT int MMGS_Set_vertices(MMG5_pMesh mesh, double *vertices,MMG5_int *refs);
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* \brief Set the coordinates and reference of a single triangle.
|
|
424
|
+
*
|
|
425
|
+
* \param mesh pointer to the mesh structure.
|
|
426
|
+
* \param v0 first vertex of triangle.
|
|
427
|
+
* \param v1 second vertex of triangle.
|
|
428
|
+
* \param v2 third vertex of triangle.
|
|
429
|
+
* \param ref triangle reference.
|
|
430
|
+
* \param pos triangle position in the mesh.
|
|
431
|
+
* \return 0 on failure, 1 otherwise.
|
|
432
|
+
*
|
|
433
|
+
* This function sets a triangle with vertices \a v0, \a v1, \a v2 and reference
|
|
434
|
+
* \a ref at position \a pos in the mesh structure (\a pos from 1 to the number
|
|
435
|
+
* of triangles included).
|
|
436
|
+
*
|
|
437
|
+
* \remark Fortran interface:
|
|
438
|
+
* > SUBROUTINE MMGS_SET_TRIANGLE(mesh,v0,v1,v2,ref,pos,retval)\n
|
|
439
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
440
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,ref,pos\n
|
|
441
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
442
|
+
* > END SUBROUTINE\n
|
|
443
|
+
*
|
|
444
|
+
*/
|
|
445
|
+
LIBMMGS_EXPORT int MMGS_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
446
|
+
MMG5_int v2, MMG5_int ref,MMG5_int pos);
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* \brief Set the vertices and references of all triangles in the mesh.
|
|
450
|
+
*
|
|
451
|
+
* \param mesh pointer to the mesh structure.
|
|
452
|
+
* \param tria pointer to an array of vertex numbers
|
|
453
|
+
* Vertices of the \f$i^{th}\f$ triangles are stored in tria[(i-1)*3]\@3.
|
|
454
|
+
* \param refs pointer to an array of triangle references.
|
|
455
|
+
* refs[i-1] is the reference of the \f$i^{th}\f$ triangle.
|
|
456
|
+
* \return 0 on failure, 1 otherwise.
|
|
457
|
+
*
|
|
458
|
+
* \remark Fortran interface: (commentated in order to allow to pass
|
|
459
|
+
* \%val(0) instead of the refs array)
|
|
460
|
+
* > ! SUBROUTINE MMGS_SET_TRIANGLES(mesh,tria,refs,retval)\n
|
|
461
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
462
|
+
* > ! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: tria,refs\n
|
|
463
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
464
|
+
* > ! END SUBROUTINE\n
|
|
465
|
+
*
|
|
466
|
+
*/
|
|
467
|
+
LIBMMGS_EXPORT int MMGS_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs);
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* \brief Set the vertices and reference of one edge in the mesh.
|
|
471
|
+
*
|
|
472
|
+
* \param mesh pointer to the mesh structure.
|
|
473
|
+
* \param v0 first extremity of the edge.
|
|
474
|
+
* \param v1 second extremity of the edge.
|
|
475
|
+
* \param ref edge reference.
|
|
476
|
+
* \param pos edge position in the mesh.
|
|
477
|
+
* \return 0 on failure, 1 otherwise.
|
|
478
|
+
*
|
|
479
|
+
* Assigns vertices \a v0, \a v1 and reference \a ref to the edge at position \a
|
|
480
|
+
* pos in the mesh structure (\a pos from 1 to the number of edges included).
|
|
481
|
+
*
|
|
482
|
+
* \remark Fortran interface:
|
|
483
|
+
* > SUBROUTINE MMGS_SET_EDGE(mesh,v0,v1,ref,pos,retval)\n
|
|
484
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
485
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,ref,pos\n
|
|
486
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
487
|
+
* > END SUBROUTINE\n
|
|
488
|
+
*
|
|
489
|
+
*/
|
|
490
|
+
LIBMMGS_EXPORT int MMGS_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref,MMG5_int pos);
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* \brief Assign the "corner" attribute to a vertex.
|
|
494
|
+
*
|
|
495
|
+
* \param mesh pointer to the mesh structure.
|
|
496
|
+
* \param k vertex number.
|
|
497
|
+
* \return 1.
|
|
498
|
+
*
|
|
499
|
+
* This function sets the corner attribute at vertex \a pos (\a pos from 1 to
|
|
500
|
+
* the number of vertices included).
|
|
501
|
+
*
|
|
502
|
+
* \remark Fortran interface:
|
|
503
|
+
* > SUBROUTINE MMGS_SET_CORNER(mesh,k,retval)\n
|
|
504
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
505
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
506
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
507
|
+
* > END SUBROUTINE\n
|
|
508
|
+
*
|
|
509
|
+
*/
|
|
510
|
+
LIBMMGS_EXPORT int MMGS_Set_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* \brief Remove the "corner" attribute from a vertex.
|
|
514
|
+
*
|
|
515
|
+
* \param mesh pointer to the mesh structure.
|
|
516
|
+
* \param k vertex number.
|
|
517
|
+
* \return 1.
|
|
518
|
+
*
|
|
519
|
+
* This function removes the corner attribute from vertex \a pos (from 1 to the
|
|
520
|
+
* number of vertices included).
|
|
521
|
+
*
|
|
522
|
+
* \remark Fortran interface
|
|
523
|
+
*
|
|
524
|
+
* > SUBROUTINE MMGS_UNSET_CORNER(mesh,k,retval)\n
|
|
525
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
526
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
527
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
528
|
+
* > END SUBROUTINE\n
|
|
529
|
+
*
|
|
530
|
+
*/
|
|
531
|
+
LIBMMGS_EXPORT int MMGS_Unset_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* \brief Assign the "required" attribute to a vertex.
|
|
535
|
+
*
|
|
536
|
+
* \param mesh pointer to the mesh structure.
|
|
537
|
+
* \param k vertex number.
|
|
538
|
+
* \return 1.
|
|
539
|
+
*
|
|
540
|
+
* This function sets the required attribute at vertex \a k.
|
|
541
|
+
* Vertices with this attribute will not be modified by the remesher.
|
|
542
|
+
*
|
|
543
|
+
* \remark Fortran interface:
|
|
544
|
+
* > SUBROUTINE MMGS_SET_REQUIREDVERTEX(mesh,k,retval)\n
|
|
545
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
546
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
547
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
548
|
+
* > END SUBROUTINE\n
|
|
549
|
+
*
|
|
550
|
+
*/
|
|
551
|
+
LIBMMGS_EXPORT int MMGS_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* \brief Remove the "required" attribute from a vertex.
|
|
555
|
+
*
|
|
556
|
+
* \param mesh pointer to the mesh structure.
|
|
557
|
+
* \param k vertex number.
|
|
558
|
+
* \return 1.
|
|
559
|
+
*
|
|
560
|
+
* This function removes the required attribute from vertex \a k.
|
|
561
|
+
*
|
|
562
|
+
* \remark Fortran interface:
|
|
563
|
+
* > SUBROUTINE MMGS_UNSET_REQUIREDVERTEX(mesh,k,retval)\n
|
|
564
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
565
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
566
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
567
|
+
* > END SUBROUTINE\n
|
|
568
|
+
*
|
|
569
|
+
*/
|
|
570
|
+
LIBMMGS_EXPORT int MMGS_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* \brief Assign the "required" attribute to a triangle.
|
|
574
|
+
*
|
|
575
|
+
* \param mesh pointer to the mesh structure.
|
|
576
|
+
* \param k triangle index.
|
|
577
|
+
* \return 1.
|
|
578
|
+
*
|
|
579
|
+
* This function sets the required attribute at triangle \a k.
|
|
580
|
+
*
|
|
581
|
+
* \remark Fortran interface:
|
|
582
|
+
* > SUBROUTINE MMGS_SET_REQUIREDTRIANGLE(mesh,k,retval)\n
|
|
583
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
584
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
585
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
586
|
+
* > END SUBROUTINE\n
|
|
587
|
+
*
|
|
588
|
+
*/
|
|
589
|
+
LIBMMGS_EXPORT int MMGS_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* \brief Remove the "required" attribute from a vertex.
|
|
593
|
+
*
|
|
594
|
+
* \param mesh pointer to the mesh structure.
|
|
595
|
+
* \param k triangle index.
|
|
596
|
+
* \return 1.
|
|
597
|
+
*
|
|
598
|
+
* This function removes the required attribute from triangle \a k.
|
|
599
|
+
*
|
|
600
|
+
* \remark Fortran interface:
|
|
601
|
+
* > SUBROUTINE MMGS_UNSET_REQUIREDTRIANGLE(mesh,k,retval)\n
|
|
602
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
603
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
604
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
605
|
+
* > END SUBROUTINE\n
|
|
606
|
+
*
|
|
607
|
+
*/
|
|
608
|
+
LIBMMGS_EXPORT int MMGS_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
609
|
+
|
|
610
|
+
/**
|
|
611
|
+
* \brief Assign the "ridge" attribute to an edge.
|
|
612
|
+
*
|
|
613
|
+
* \param mesh pointer to the mesh structure.
|
|
614
|
+
* \param k edge index.
|
|
615
|
+
* \return 1.
|
|
616
|
+
*
|
|
617
|
+
* This function gives the ridge attribute to edge \a k. This influences how
|
|
618
|
+
* this edge is treated by the remesher.
|
|
619
|
+
*
|
|
620
|
+
* \remark Fortran interface:
|
|
621
|
+
* > SUBROUTINE MMGS_SET_RIDGE(mesh,k,retval)\n
|
|
622
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
623
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
624
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
625
|
+
* > END SUBROUTINE\n
|
|
626
|
+
*
|
|
627
|
+
*/
|
|
628
|
+
LIBMMGS_EXPORT int MMGS_Set_ridge(MMG5_pMesh mesh, MMG5_int k);
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* \brief Remove the "ridge" attribute from an edge.
|
|
632
|
+
*
|
|
633
|
+
* \param mesh pointer to the mesh structure.
|
|
634
|
+
* \param k edge index.
|
|
635
|
+
* \return 1.
|
|
636
|
+
*
|
|
637
|
+
* This function removes the ridge attribute from edge \a k.
|
|
638
|
+
*
|
|
639
|
+
* \remark Fortran interface:
|
|
640
|
+
* > SUBROUTINE MMGS_UNSET_RIDGE(mesh,k,retval)\n
|
|
641
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
642
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
643
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
644
|
+
* > END SUBROUTINE\n
|
|
645
|
+
*
|
|
646
|
+
*/
|
|
647
|
+
LIBMMGS_EXPORT int MMGS_Unset_ridge(MMG5_pMesh mesh, MMG5_int k);
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* \brief Assign the "required" attribute to an edge.
|
|
651
|
+
*
|
|
652
|
+
* \param mesh pointer to the mesh structure.
|
|
653
|
+
* \param k edge index.
|
|
654
|
+
* \return 1.
|
|
655
|
+
*
|
|
656
|
+
* This function makes edge \a k a required edge. Required edges will not be
|
|
657
|
+
* modified by the remesher.
|
|
658
|
+
*
|
|
659
|
+
* \remark Fortran interface:
|
|
660
|
+
* > SUBROUTINE MMGS_SET_REQUIREDEDGE(mesh,k,retval)\n
|
|
661
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
662
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
663
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
664
|
+
* > END SUBROUTINE\n
|
|
665
|
+
*
|
|
666
|
+
*/
|
|
667
|
+
LIBMMGS_EXPORT int MMGS_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* \brief Remove the "required" attribute from an edge.
|
|
671
|
+
*
|
|
672
|
+
* \param mesh pointer to the mesh structure.
|
|
673
|
+
* \param k edge index.
|
|
674
|
+
* \return 1.
|
|
675
|
+
*
|
|
676
|
+
* This function removes the "required" attribute from edge \a k.
|
|
677
|
+
*
|
|
678
|
+
* \remark Fortran interface:
|
|
679
|
+
* > SUBROUTINE MMGS_UNSET_REQUIREDEDGE(mesh,k,retval)\n
|
|
680
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
681
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
682
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
683
|
+
* > END SUBROUTINE\n
|
|
684
|
+
*
|
|
685
|
+
*/
|
|
686
|
+
LIBMMGS_EXPORT int MMGS_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* \brief Set the vertices and references of all edges in a mesh.
|
|
690
|
+
*
|
|
691
|
+
* \param mesh pointer to the mesh structure.
|
|
692
|
+
* \param edges pointer to an array of edges.
|
|
693
|
+
* The vertices of edge i should be given in
|
|
694
|
+
* edges[(i-1)*2] and edges[(i-1)*2+1].
|
|
695
|
+
* \param refs pointer to an array of references.
|
|
696
|
+
* refs[i-1] is the reference of edge i.
|
|
697
|
+
* \return 0 on failure, 1 otherwise.
|
|
698
|
+
*
|
|
699
|
+
* \remark Fortran interface:
|
|
700
|
+
* > SUBROUTINE MMGS_SET_EDGES(mesh,edges,refs,retval)\n
|
|
701
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
702
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: edges(*),refs(*)\n
|
|
703
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
704
|
+
* > END SUBROUTINE\n
|
|
705
|
+
*
|
|
706
|
+
*/
|
|
707
|
+
LIBMMGS_EXPORT int MMGS_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int* refs);
|
|
708
|
+
|
|
709
|
+
/**
|
|
710
|
+
* \brief Get vertices, references and attributes of all edges in the mesh.
|
|
711
|
+
*
|
|
712
|
+
* \param mesh pointer to the mesh structure.
|
|
713
|
+
* \param edges pointer to an array of edges.
|
|
714
|
+
* The vertices of edge i are stored in edges[(i-1)*2] and edges[(i-1)*2+1].
|
|
715
|
+
* \param refs edge references. refs[i-1] is the reference of edge \a i.
|
|
716
|
+
* \param areRidges 1 if the edge is a ridge, 0 otherwise.
|
|
717
|
+
* \param areRequired 1 if the edge is required, 0 otherwise.
|
|
718
|
+
* \return 0 on failure, 1 otherwise.
|
|
719
|
+
*
|
|
720
|
+
* \remark Fortran interface:
|
|
721
|
+
* > SUBROUTINE MMGS_GET_EDGES(mesh,edges,refs,areRidges,areRequired,retval)\n
|
|
722
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
723
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: refs(*),edges(*)\n
|
|
724
|
+
* > INTEGER, INTENT(OUT) :: areRequired(*),areRidges(*)\n
|
|
725
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
726
|
+
* > END SUBROUTINE\n
|
|
727
|
+
*
|
|
728
|
+
*/
|
|
729
|
+
LIBMMGS_EXPORT int MMGS_Get_edges(MMG5_pMesh mesh,MMG5_int *edges,MMG5_int* refs,
|
|
730
|
+
int *areRidges,int *areRequired);
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* \brief Set the normal orientation at a single vertex.
|
|
734
|
+
*
|
|
735
|
+
* \param mesh pointer to the mesh structure.
|
|
736
|
+
* \param k vertex index
|
|
737
|
+
* \param n0 x componant of the normal at vertex \a k.
|
|
738
|
+
* \param n1 y componant of the normal at vertex \a k.
|
|
739
|
+
* \param n2 z componant of the normal at vertex \a k.
|
|
740
|
+
*
|
|
741
|
+
* \return 1 on success.
|
|
742
|
+
*
|
|
743
|
+
* Set normal (n0,n1,n2) at vertex \a k.
|
|
744
|
+
*
|
|
745
|
+
* \remark Fortran interface:
|
|
746
|
+
* > SUBROUTINE MMGS_SET_NORMALATVERTEX(mesh,k,n0,n1,n2,retval)\n
|
|
747
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
748
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
749
|
+
* > REAL(KIND=8), INTENT(IN) :: n0,n1,n2\n
|
|
750
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
751
|
+
* > END SUBROUTINE\n
|
|
752
|
+
*
|
|
753
|
+
*/
|
|
754
|
+
LIBMMGS_EXPORT int MMGS_Set_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double n0, double n1, double n2) ;
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* \brief Get the quality measure of a triangle.
|
|
758
|
+
*
|
|
759
|
+
* \param mesh pointer to the mesh structure.
|
|
760
|
+
* \param met pointer to the metric structure.
|
|
761
|
+
* \param k index of the triangle for which we want to get the quality.
|
|
762
|
+
* \return the computed quality or 0 on failure.
|
|
763
|
+
*
|
|
764
|
+
* \remark Fortran interface:
|
|
765
|
+
* > SUBROUTINE MMGS_GET_TRIANGLEQUALITY(mesh,met,k,retval)\n
|
|
766
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met\n
|
|
767
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
768
|
+
* > REAL(KIND=8), INTENT(OUT) :: retval\n
|
|
769
|
+
* > END SUBROUTINE\n
|
|
770
|
+
*
|
|
771
|
+
*/
|
|
772
|
+
double MMGS_Get_triangleQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k);
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* \brief Set a single element of a scalar solution structure.
|
|
776
|
+
*
|
|
777
|
+
* \param met pointer to the sol structure.
|
|
778
|
+
* \param s solution scalar value.
|
|
779
|
+
* \param pos position of the solution in the mesh.
|
|
780
|
+
* \return 0 on failure, 1 otherwise.
|
|
781
|
+
*
|
|
782
|
+
* This function sets the scalar value \a s at position \a pos in the solution
|
|
783
|
+
* structure (\a pos from 1 to the number of vertices included).
|
|
784
|
+
*
|
|
785
|
+
* \remark Fortran interface:
|
|
786
|
+
* > SUBROUTINE MMGS_SET_SCALARSOL(met,s,pos,retval)\n
|
|
787
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
788
|
+
* > REAL(KIND=8), INTENT(IN) :: s\n
|
|
789
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
790
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
791
|
+
* > END SUBROUTINE\n
|
|
792
|
+
*
|
|
793
|
+
*/
|
|
794
|
+
LIBMMGS_EXPORT int MMGS_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos);
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* \brief Set the values of all elements of a scalar solution structure.
|
|
798
|
+
*
|
|
799
|
+
* \param met pointer to the sol structure.
|
|
800
|
+
* \param s array of scalar solutions values.
|
|
801
|
+
* s[i-1] is the solution at vertex i.
|
|
802
|
+
* \return 0 on failure, 1 otherwise.
|
|
803
|
+
*
|
|
804
|
+
* \remark Fortran interface:
|
|
805
|
+
* > SUBROUTINE MMGS_SET_SCALARSOLS(met,s,retval)\n
|
|
806
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
807
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN) :: s\n
|
|
808
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
809
|
+
* > END SUBROUTINE\n
|
|
810
|
+
*
|
|
811
|
+
*/
|
|
812
|
+
LIBMMGS_EXPORT int MMGS_Set_scalarSols(MMG5_pSol met, double *s);
|
|
813
|
+
|
|
814
|
+
/**
|
|
815
|
+
* \brief Set a single element of a vector solution structure.
|
|
816
|
+
*
|
|
817
|
+
* \param met pointer to the sol structure.
|
|
818
|
+
* \param vx x value of the vectorial solution.
|
|
819
|
+
* \param vy y value of the vectorial solution.
|
|
820
|
+
* \param vz z value of the vectorial solution.
|
|
821
|
+
* \param pos position of the solution in the mesh (begin to 1).
|
|
822
|
+
* \return 0 on failure, 1 otherwise.
|
|
823
|
+
*
|
|
824
|
+
* This function sets the vectorial value \f$(v_x,v_y,v_z)\f$ at position \a pos
|
|
825
|
+
* in the solution structure (\a pos from 1 to the number of vertices
|
|
826
|
+
* included).
|
|
827
|
+
*
|
|
828
|
+
* \remark Fortran interface:
|
|
829
|
+
* > SUBROUTINE MMGS_SET_VECTORSOL(met,vx,vy,vz,pos,retval)\n
|
|
830
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
831
|
+
* > REAL(KIND=8), INTENT(IN) :: vx,vy,vz\n
|
|
832
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
833
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
834
|
+
* > END SUBROUTINE\n
|
|
835
|
+
*
|
|
836
|
+
*/
|
|
837
|
+
LIBMMGS_EXPORT int MMGS_Set_vectorSol(MMG5_pSol met, double vx,double vy, double vz, MMG5_int pos);
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* \brief Set all elements of a vector solution structure.
|
|
841
|
+
*
|
|
842
|
+
* \param met pointer to the sol structure.
|
|
843
|
+
* \param sols array of vectorial solutions
|
|
844
|
+
* sols[3*(i-1)]\@3 is the solution at vertex i
|
|
845
|
+
* \return 0 on failure, 1 otherwise.
|
|
846
|
+
*
|
|
847
|
+
* This function sets a vector-valued solution at each element of solution
|
|
848
|
+
* structure.
|
|
849
|
+
*
|
|
850
|
+
* \remark Fortran interface:
|
|
851
|
+
* > SUBROUTINE MMGS_SET_VECTORSOLS(met,sols,retval)\n
|
|
852
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
853
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN) :: sols\n
|
|
854
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
855
|
+
* > END SUBROUTINE\n
|
|
856
|
+
*
|
|
857
|
+
*/
|
|
858
|
+
LIBMMGS_EXPORT int MMGS_Set_vectorSols(MMG5_pSol met, double *sols);
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* \brief Set a single element of a tensor solution structure.
|
|
862
|
+
*
|
|
863
|
+
* \param met pointer to the sol structure.
|
|
864
|
+
* \param m11 value of the tensorial solution at position (1,1) in the tensor.
|
|
865
|
+
* \param m12 value of the tensorial solution at position (1,2) in the tensor.
|
|
866
|
+
* \param m13 value of the tensorial solution at position (1,3) in the tensor.
|
|
867
|
+
* \param m22 value of the tensorial solution at position (2,2) in the tensor.
|
|
868
|
+
* \param m23 value of the tensorial solution at position (2,3) in the tensor.
|
|
869
|
+
* \param m33 value of the tensorial solution at position (3,3) in the tensor.
|
|
870
|
+
* \param pos position of the solution in the mesh (begin to 1).
|
|
871
|
+
* \return 0 on failure, 1 otherwise.
|
|
872
|
+
*
|
|
873
|
+
* This function sets a tensor value at position \a pos in solution
|
|
874
|
+
* structure (\a pos from 1 to the number of vertices included).
|
|
875
|
+
*
|
|
876
|
+
* \remark Fortran interface:
|
|
877
|
+
* > SUBROUTINE MMGS_SET_TENSORSOL(met,m11,m12,m13,m22,m23,m33,pos,retval)\n
|
|
878
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
879
|
+
* > REAL(KIND=8), INTENT(IN) :: m11,m12,m13,m22,m23,m33\n
|
|
880
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
881
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
882
|
+
* > END SUBROUTINE\n
|
|
883
|
+
*
|
|
884
|
+
*/
|
|
885
|
+
LIBMMGS_EXPORT int MMGS_Set_tensorSol(MMG5_pSol met, double m11,double m12, double m13,
|
|
886
|
+
double m22,double m23, double m33, MMG5_int pos);
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* \brief Set all elements of a tensor solution structure.
|
|
890
|
+
*
|
|
891
|
+
* \param met pointer to the sol structure.
|
|
892
|
+
* \param sols array of tensorial solutions.
|
|
893
|
+
* sols[6*(i-1)]\@6 is the solution at vertex i
|
|
894
|
+
* \return 0 on failure, 1 otherwise.
|
|
895
|
+
*
|
|
896
|
+
* \remark Fortran interface:
|
|
897
|
+
* > SUBROUTINE MMGS_SET_TENSORSOLS(met,sols,retval)\n
|
|
898
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
899
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN) :: sols\n
|
|
900
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
901
|
+
* > END SUBROUTINE\n
|
|
902
|
+
*
|
|
903
|
+
*/
|
|
904
|
+
LIBMMGS_EXPORT int MMGS_Set_tensorSols(MMG5_pSol met, double *sols);
|
|
905
|
+
|
|
906
|
+
/**
|
|
907
|
+
* \brief Set a single element of one out of multiple solution fields that are defined on vertices.
|
|
908
|
+
*
|
|
909
|
+
* \param sol pointer to the array of solutions
|
|
910
|
+
* \param i position of the solution field that we want to set.
|
|
911
|
+
* \param s solution(s) at mesh vertex \a pos.
|
|
912
|
+
* \param pos index of the vertex on which we set the solution.
|
|
913
|
+
*
|
|
914
|
+
* \return 0 on failure, 1 otherwise.
|
|
915
|
+
*
|
|
916
|
+
* Set values of the solution at field \a i of the solution array and at
|
|
917
|
+
* position \pos (\a pos from 1 to the number of vertices included and \a i from 1
|
|
918
|
+
* to the number of solutions). The type of solution is determined from \a sol.
|
|
919
|
+
*
|
|
920
|
+
* \remark Fortran interface:
|
|
921
|
+
* > SUBROUTINE MMGS_SET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)\n
|
|
922
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
923
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
924
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: pos\n
|
|
925
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
926
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
927
|
+
* > END SUBROUTINE\n
|
|
928
|
+
*
|
|
929
|
+
*/
|
|
930
|
+
LIBMMGS_EXPORT int MMGS_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double* s, MMG5_int pos);
|
|
931
|
+
|
|
932
|
+
/**
|
|
933
|
+
* \brief Set all elements of one out of multiple solution fields that are defined on vertices.
|
|
934
|
+
*
|
|
935
|
+
* \param sol pointer to the array of solutions
|
|
936
|
+
* \param i position of the solution field that we want to set.
|
|
937
|
+
* \param s array of solutions at mesh vertices. The solution at vertex \a k
|
|
938
|
+
* is given by s[k-1] for a scalar sol, s[3*(k-1)]\@3 for a vectorial solution
|
|
939
|
+
* and s[6*(k-1)]\@6 for a tensor solution.
|
|
940
|
+
*
|
|
941
|
+
* \return 0 on failure, 1 otherwise.
|
|
942
|
+
*
|
|
943
|
+
* Set values of the solution at field \a i of the solution array (\a i from
|
|
944
|
+
* 1 to the number of solutions). The type of solution is determined from \a sol.
|
|
945
|
+
*
|
|
946
|
+
* \remark Fortran interface:
|
|
947
|
+
* > SUBROUTINE MMGS_SET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)\n
|
|
948
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
949
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
950
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
951
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
952
|
+
* > END SUBROUTINE\n
|
|
953
|
+
*
|
|
954
|
+
*/
|
|
955
|
+
LIBMMGS_EXPORT int MMGS_Set_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
|
|
956
|
+
|
|
957
|
+
/* check init */
|
|
958
|
+
/**
|
|
959
|
+
* \brief Check if the numbers of given entities match with mesh and solution
|
|
960
|
+
* size and check mesh data.
|
|
961
|
+
*
|
|
962
|
+
* \param mesh pointer to the mesh structure.
|
|
963
|
+
* \param met pointer to the solution structure.
|
|
964
|
+
* \return 0 on failure, 1 otherwise.
|
|
965
|
+
*
|
|
966
|
+
* This function checks if the numbers of given entities match with the mesh and
|
|
967
|
+
* solution sizes and checks the mesh data. Use of this function is not
|
|
968
|
+
* mandatory.
|
|
969
|
+
*
|
|
970
|
+
* \remark Fortran interface:
|
|
971
|
+
* > SUBROUTINE MMGS_CHK_MESHDATA(mesh,met,retval)\n
|
|
972
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met\n
|
|
973
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
974
|
+
* > END SUBROUTINE\n
|
|
975
|
+
*
|
|
976
|
+
*/
|
|
977
|
+
LIBMMGS_EXPORT int MMGS_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met);
|
|
978
|
+
|
|
979
|
+
/** functions to set parameters */
|
|
980
|
+
/**
|
|
981
|
+
* \brief set an integer parameter of the remesher
|
|
982
|
+
*
|
|
983
|
+
* \param mesh pointer to the mesh structure.
|
|
984
|
+
* \param sol pointer to the sol structure (unused).
|
|
985
|
+
* \param iparam integer parameter to set (see \ref MMGS_Param for a
|
|
986
|
+
* list of parameters that can be set).
|
|
987
|
+
* \param val value for the parameter.
|
|
988
|
+
* \return 0 on failure, 1 otherwise.
|
|
989
|
+
*
|
|
990
|
+
* This function sets integer parameter \a iparam to value \a val.
|
|
991
|
+
*
|
|
992
|
+
* \remark Fortran interface:
|
|
993
|
+
* > SUBROUTINE MMGS_SET_IPARAMETER(mesh,sol,iparam,val,retval)\n
|
|
994
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
995
|
+
* > MMG5_DATA_PTR_T :: sol\n
|
|
996
|
+
* > INTEGER, INTENT(IN) :: iparam\n
|
|
997
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: val\n
|
|
998
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
999
|
+
* > END SUBROUTINE\n
|
|
1000
|
+
*
|
|
1001
|
+
*/
|
|
1002
|
+
LIBMMGS_EXPORT int MMGS_Set_iparameter(MMG5_pMesh mesh,MMG5_pSol sol, int iparam, MMG5_int val);
|
|
1003
|
+
|
|
1004
|
+
/**
|
|
1005
|
+
* \brief set a real-valued parameter of the remesher
|
|
1006
|
+
*
|
|
1007
|
+
* \param mesh pointer to the mesh structure.
|
|
1008
|
+
* \param sol pointer to the sol structure (unused).
|
|
1009
|
+
* \param dparam double parameter to set (see \ref MMGS_Param for a
|
|
1010
|
+
* list of parameters that can be set).
|
|
1011
|
+
* \param val value of the parameter.
|
|
1012
|
+
* \return 0 on failure, 1 otherwise.
|
|
1013
|
+
*
|
|
1014
|
+
* This function sets the double parameter \a dparam to value \a val.
|
|
1015
|
+
*
|
|
1016
|
+
* \remark Fortran interface:
|
|
1017
|
+
* > SUBROUTINE MMGS_SET_DPARAMETER(mesh,sol,dparam,val,retval)\n
|
|
1018
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1019
|
+
* > MMG5_DATA_PTR_T :: sol\n
|
|
1020
|
+
* > INTEGER, INTENT(IN) :: dparam\n
|
|
1021
|
+
* > REAL(KIND=8), INTENT(IN) :: val\n
|
|
1022
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1023
|
+
* > END SUBROUTINE\n
|
|
1024
|
+
*
|
|
1025
|
+
*/
|
|
1026
|
+
LIBMMGS_EXPORT int MMGS_Set_dparameter(MMG5_pMesh mesh,MMG5_pSol sol, int dparam, double val);
|
|
1027
|
+
|
|
1028
|
+
/**
|
|
1029
|
+
* \brief set a local parameter
|
|
1030
|
+
*
|
|
1031
|
+
* \param mesh pointer to the mesh structure.
|
|
1032
|
+
* \param sol pointer to the sol structure.
|
|
1033
|
+
* \param typ type of entity (triangle, edge,...).
|
|
1034
|
+
* \param ref reference of the entity.
|
|
1035
|
+
* \param hmin minimal edge length.
|
|
1036
|
+
* \param hmax maximal edge length.
|
|
1037
|
+
* \param Hausdorff distance.
|
|
1038
|
+
* \return 0 on failure, 1 otherwise.
|
|
1039
|
+
*
|
|
1040
|
+
* Set local parameters: set the hausdorff distance at \a hausd, the minmal edge
|
|
1041
|
+
* length at \a hmin and the maximal edge length at \a hmax for all
|
|
1042
|
+
* elements of type \a typ and reference \a ref.
|
|
1043
|
+
*
|
|
1044
|
+
* \remark Fortran interface:
|
|
1045
|
+
* > SUBROUTINE MMGS_SET_LOCALPARAMETER(mesh,sol,typ,ref,hmin,hmax,hausd,retval)\n
|
|
1046
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1047
|
+
* > INTEGER, INTENT(IN) :: typ\n
|
|
1048
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ref\n
|
|
1049
|
+
* > REAL(KIND=8), INTENT(IN) :: hmin,hmax,hausd\n
|
|
1050
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1051
|
+
* > END SUBROUTINE\n
|
|
1052
|
+
*
|
|
1053
|
+
*/
|
|
1054
|
+
LIBMMGS_EXPORT int MMGS_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, MMG5_int ref,
|
|
1055
|
+
double hmin, double hmax, double hausd);
|
|
1056
|
+
|
|
1057
|
+
/**
|
|
1058
|
+
* \brief Set the reference mapping for the elements of reference
|
|
1059
|
+
* \a ref in level-set discretization mode.
|
|
1060
|
+
*
|
|
1061
|
+
* \param mesh pointer to the mesh structure.
|
|
1062
|
+
* \param sol pointer to the sol structure.
|
|
1063
|
+
* \param ref input triangle reference.
|
|
1064
|
+
* \param split MMG5_MMAT_NoSplit if the entity must not be split, MMG5_MMAT_Split otherwise
|
|
1065
|
+
* \param rmin reference for the negative side after LS discretization
|
|
1066
|
+
* \param rplus reference for the positive side after LS discretization
|
|
1067
|
+
* \return 0 on failure, 1 otherwise.
|
|
1068
|
+
*
|
|
1069
|
+
* With this function you can determine which references will be given to the
|
|
1070
|
+
* triangles on both sides of the level set, after discretization. Negative and
|
|
1071
|
+
* positive here refer to areas where the function is smaller or larger,
|
|
1072
|
+
* respectively, than the isovalue of the level set.
|
|
1073
|
+
*
|
|
1074
|
+
* \remark Fortran interface:
|
|
1075
|
+
* > SUBROUTINE MMGS_SET_MULTIMAT(mesh,sol,ref,split,rmin,rplus,retval)\n
|
|
1076
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1077
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: ref,rmin,rplus\n
|
|
1078
|
+
* > INTEGER, INTENT(IN) :: split\n
|
|
1079
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1080
|
+
* > END SUBROUTINE\n
|
|
1081
|
+
*
|
|
1082
|
+
*/
|
|
1083
|
+
LIBMMGS_EXPORT int MMGS_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int ref,
|
|
1084
|
+
int split,MMG5_int rmin, MMG5_int rplus);
|
|
1085
|
+
|
|
1086
|
+
/**
|
|
1087
|
+
* \brief Set a new level-set base reference.
|
|
1088
|
+
*
|
|
1089
|
+
* \param mesh pointer to the mesh structure.
|
|
1090
|
+
* \param sol pointer to the sol structure.
|
|
1091
|
+
* \param br new level-set base reference.
|
|
1092
|
+
* \return 0 on failure, 1 otherwise.
|
|
1093
|
+
*
|
|
1094
|
+
* Set a new level-set base reference of ref \a br in level-set discretization
|
|
1095
|
+
* mode. Base references are boundary conditions to which an implicit domain can
|
|
1096
|
+
* be attached. All implicit volumes that are not attached to listed base
|
|
1097
|
+
* references are deleted as spurious volumes by the \a rmc option.
|
|
1098
|
+
*
|
|
1099
|
+
* \remark Fortran interface:
|
|
1100
|
+
* > SUBROUTINE MMGS_SET_LSBASEREFERENCE(mesh,sol,br,retval)\n
|
|
1101
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1102
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: br\n
|
|
1103
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1104
|
+
* > END SUBROUTINE\n
|
|
1105
|
+
*
|
|
1106
|
+
*/
|
|
1107
|
+
LIBMMGS_EXPORT int MMGS_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int br);
|
|
1108
|
+
|
|
1109
|
+
/** recover data */
|
|
1110
|
+
/**
|
|
1111
|
+
* \brief Get the number of vertices, triangles, and edges of the mesh.
|
|
1112
|
+
*
|
|
1113
|
+
* \param mesh pointer to the mesh structure.
|
|
1114
|
+
* \param np pointer to the number of vertices.
|
|
1115
|
+
* \param nt pointer to the number of triangles.
|
|
1116
|
+
* \param na pointer to the number of edges.
|
|
1117
|
+
* \return 1.
|
|
1118
|
+
*
|
|
1119
|
+
* \remark Fortran interface:
|
|
1120
|
+
* > SUBROUTINE MMGS_GET_MESHSIZE(mesh,np,nt,na,retval)\n
|
|
1121
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1122
|
+
* > INTEGER(MMG5F_INT) :: np,nt,na\n
|
|
1123
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1124
|
+
* > END SUBROUTINE\n
|
|
1125
|
+
*
|
|
1126
|
+
*/
|
|
1127
|
+
LIBMMGS_EXPORT int MMGS_Get_meshSize(MMG5_pMesh mesh, MMG5_int* np, MMG5_int* nt, MMG5_int* na);
|
|
1128
|
+
|
|
1129
|
+
/**
|
|
1130
|
+
* \brief Get the number of elements, dimension, and type of a solution.
|
|
1131
|
+
*
|
|
1132
|
+
* \param mesh pointer to the mesh structure.
|
|
1133
|
+
* \param sol pointer to the sol structure.
|
|
1134
|
+
* \param typEntity pointer to the type of entities to which solutions are applied.
|
|
1135
|
+
* (see \ref MMG5_entities for possible values)
|
|
1136
|
+
* \param np pointer to the number of elements in the solution.
|
|
1137
|
+
* \param typSol pointer to the type of the solution (\ref MMG5_Scalar, \ref MMG5_Vector,
|
|
1138
|
+
* \ref MMG5_Tensor, \ref MMG5_Notype)
|
|
1139
|
+
* \return 1.
|
|
1140
|
+
*
|
|
1141
|
+
* \remark Fortran interface:
|
|
1142
|
+
* > SUBROUTINE MMGS_GET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)\n
|
|
1143
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1144
|
+
* > INTEGER :: typEntity,typSol\n
|
|
1145
|
+
* > INTEGER(MMG5F_INT) :: np\n
|
|
1146
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1147
|
+
* > END SUBROUTINE\n
|
|
1148
|
+
*
|
|
1149
|
+
*/
|
|
1150
|
+
LIBMMGS_EXPORT int MMGS_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int* typEntity, MMG5_int* np,
|
|
1151
|
+
int* typSol);
|
|
1152
|
+
|
|
1153
|
+
/**
|
|
1154
|
+
* \brief Get the number of elements, type, and dimensions of several solutions defined on vertices.
|
|
1155
|
+
*
|
|
1156
|
+
* \param mesh pointer to the mesh structure.
|
|
1157
|
+
* \param sol pointer to an array of sol structures.
|
|
1158
|
+
* \param nsols number of solutions per entity
|
|
1159
|
+
* \param nentities pointer to the number of entities.
|
|
1160
|
+
* \param typSol array of size MMG5_NSOL_MAX to store type of each solution
|
|
1161
|
+
* (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
1162
|
+
*
|
|
1163
|
+
* \return 1.
|
|
1164
|
+
*
|
|
1165
|
+
* \remark Fortran interface:
|
|
1166
|
+
* > SUBROUTINE MMGS_GET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)\n
|
|
1167
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1168
|
+
* > INTEGER :: nsols\n
|
|
1169
|
+
* > INTEGER(MMG5F_INT) :: nentities\n
|
|
1170
|
+
* > INTEGER :: typSol(*)\n
|
|
1171
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1172
|
+
* > END SUBROUTINE\n
|
|
1173
|
+
*
|
|
1174
|
+
*/
|
|
1175
|
+
LIBMMGS_EXPORT int MMGS_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol* sol,int *nsols,
|
|
1176
|
+
MMG5_int* nentities,int* typSol);
|
|
1177
|
+
|
|
1178
|
+
/**
|
|
1179
|
+
* \brief Get the coordinates \a c0, \a c1,\a c2 and reference \a ref of the
|
|
1180
|
+
* next vertex of \a mesh.
|
|
1181
|
+
*
|
|
1182
|
+
* \param mesh pointer to the mesh structure.
|
|
1183
|
+
* \param c0 pointer to the coordinate of the vertex along the first dimension.
|
|
1184
|
+
* \param c1 pointer to the coordinate of the vertex along the second dimension.
|
|
1185
|
+
* \param c2 pointer to the coordinate of the vertex along the third dimension.
|
|
1186
|
+
* \param ref pointer to the vertex reference.
|
|
1187
|
+
* \param isCorner pointer to the flag saying if the vertex is corner.
|
|
1188
|
+
* \param isRequired pointer to the flag saying if the vertex is required.
|
|
1189
|
+
* \return 1.
|
|
1190
|
+
*
|
|
1191
|
+
* This function retrieves the coordinates \a c0, \a c1,\a c2, reference \a ref,
|
|
1192
|
+
* and attributes of the next vertex of a mesh. It is meant to be used in a loop
|
|
1193
|
+
* over all vertices. When this function has been called as many times as there
|
|
1194
|
+
* are vertices, the internal loop counter will be reset. To obtain data for a
|
|
1195
|
+
* specific vertex, the \ref MMGS_GetByIdx_vertex function can be used instead.
|
|
1196
|
+
*
|
|
1197
|
+
* \remark Fortran interface:
|
|
1198
|
+
* > SUBROUTINE MMGS_GET_VERTEX(mesh,c0,c1,c2,ref,isCorner,isRequired,retval)\n
|
|
1199
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1200
|
+
* > REAL(KIND=8), INTENT(OUT) :: c0,c1,c2\n
|
|
1201
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1202
|
+
* > INTEGER :: isCorner,isRequired\n
|
|
1203
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1204
|
+
* > END SUBROUTINE\n
|
|
1205
|
+
*
|
|
1206
|
+
*/
|
|
1207
|
+
LIBMMGS_EXPORT int MMGS_Get_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
|
|
1208
|
+
int* isCorner, int* isRequired);
|
|
1209
|
+
|
|
1210
|
+
/**
|
|
1211
|
+
* \brief Get the coordinates and reference of a specific vertex in the mesh.
|
|
1212
|
+
*
|
|
1213
|
+
* \param mesh pointer to the mesh structure.
|
|
1214
|
+
* \param c0 pointer to the coordinate of the vertex along the first dimension.
|
|
1215
|
+
* \param c1 pointer to the coordinate of the vertex along the second dimension.
|
|
1216
|
+
* \param c2 pointer to the coordinate of the vertex along the third dimension.
|
|
1217
|
+
* \param ref pointer to the vertex reference.
|
|
1218
|
+
* \param isCorner pointer to the flag saying if the vertex is corner.
|
|
1219
|
+
* \param isRequired pointer to the flag saying if the vertex is required.
|
|
1220
|
+
* \param idx index of vertex to get.
|
|
1221
|
+
* \return 1.
|
|
1222
|
+
*
|
|
1223
|
+
* This function retrieves the coordinates \a c0, \a c1, \a c2 and reference \a ref of
|
|
1224
|
+
* vertex \a idx of mesh, as well as its "corner" and "required" attributes.
|
|
1225
|
+
*
|
|
1226
|
+
* \remark Fortran interface:
|
|
1227
|
+
* > SUBROUTINE MMGS_GETBYIDX_VERTEX(mesh,c0,c1,c2,ref,isCorner,isRequired,idx,retval)\n
|
|
1228
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1229
|
+
* > REAL(KIND=8), INTENT(OUT) :: c0,c1,c2\n
|
|
1230
|
+
* > INTEGER :: isCorner,isRequired\n
|
|
1231
|
+
* > INTEGER(MMG5F_INT) :: ref,idx\n
|
|
1232
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1233
|
+
* > END SUBROUTINE\n
|
|
1234
|
+
*
|
|
1235
|
+
*/
|
|
1236
|
+
LIBMMGS_EXPORT int MMGS_GetByIdx_vertex(MMG5_pMesh mesh, double* c0, double* c1, double* c2, MMG5_int* ref,
|
|
1237
|
+
int* isCorner, int* isRequired,MMG5_int idx);
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* \brief Get the coordinates, references and attributes of all vertices in the mesh.
|
|
1241
|
+
*
|
|
1242
|
+
* \param mesh pointer to the mesh structure.
|
|
1243
|
+
* \param vertices pointer to the array of coordinates.
|
|
1244
|
+
* The coordinates of vertex \a i are stored in
|
|
1245
|
+
* vertices[(i-1)*3]\@3.
|
|
1246
|
+
* \param refs pointer to the array of vertex references.
|
|
1247
|
+
* The ref of vertex \a i is stored in refs[i-1].
|
|
1248
|
+
* \param areCorners pointer to the array of flags saying if
|
|
1249
|
+
* vertices are corners.
|
|
1250
|
+
* areCorners[i-1]=1 if vertex \a i is corner.
|
|
1251
|
+
* \param areRequired pointer to the table of flags saying if vertices
|
|
1252
|
+
* are required. areRequired[i-1]=1 if vertex \a i is required.
|
|
1253
|
+
* \return 1.
|
|
1254
|
+
*
|
|
1255
|
+
* \remark Fortran interface: (commentated in order to allow to pass
|
|
1256
|
+
* \%val(0) instead of the refs,areCorners and areRequired arrays)
|
|
1257
|
+
* > ! SUBROUTINE MMGS_GET_VERTICES(mesh,vertices,refs,areCorners,&\n
|
|
1258
|
+
* > ! areRequired,retval)\n
|
|
1259
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1260
|
+
* > ! REAL(KIND=8),DIMENSION(*), INTENT(OUT) :: vertices\n
|
|
1261
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*) :: refs\n
|
|
1262
|
+
* > ! INTEGER, DIMENSION(*) :: areCorners,areRequired\n
|
|
1263
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1264
|
+
* > ! END SUBROUTINE\n
|
|
1265
|
+
*
|
|
1266
|
+
*/
|
|
1267
|
+
LIBMMGS_EXPORT int MMGS_Get_vertices(MMG5_pMesh mesh, double* vertices, MMG5_int* refs,
|
|
1268
|
+
int* areCorners, int* areRequired);
|
|
1269
|
+
|
|
1270
|
+
/**
|
|
1271
|
+
* \brief Get the vertices, reference, and required attribute of the next
|
|
1272
|
+
* triangle in the mesh.
|
|
1273
|
+
*
|
|
1274
|
+
* \param mesh pointer to the mesh structure.
|
|
1275
|
+
* \param v0 pointer to the first vertex of the triangle.
|
|
1276
|
+
* \param v1 pointer to the second vertex of the triangle.
|
|
1277
|
+
* \param v2 pointer to the third vertex of the triangle.
|
|
1278
|
+
* \param ref pointer to the triangle reference.
|
|
1279
|
+
* \param isRequired pointer to the flag saying if the triangle is required.
|
|
1280
|
+
* \return 0 on failure, 1 otherwise.
|
|
1281
|
+
*
|
|
1282
|
+
* This function retrieves the vertices \a v0, \a v1, \a v2, reference \a ref,
|
|
1283
|
+
* and required attribute \a isRequired of the next triangle of \a mesh. It is
|
|
1284
|
+
* meant to be called in a loop over all triangles. When it has been called as
|
|
1285
|
+
* many times as there are triangles, the internal loop counter will be reset.
|
|
1286
|
+
*
|
|
1287
|
+
* \remark Fortran interface:
|
|
1288
|
+
* > SUBROUTINE MMGS_GET_TRIANGLE(mesh,v0,v1,v2,ref,isRequired,retval)\n
|
|
1289
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1290
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: v0,v1,v2,ref\n
|
|
1291
|
+
* > INTEGER :: isRequired\n
|
|
1292
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1293
|
+
* > END SUBROUTINE\n
|
|
1294
|
+
*
|
|
1295
|
+
*/
|
|
1296
|
+
LIBMMGS_EXPORT int MMGS_Get_triangle(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,
|
|
1297
|
+
MMG5_int* ref, int* isRequired);
|
|
1298
|
+
|
|
1299
|
+
/**
|
|
1300
|
+
* \brief Get the vertices, references, and required attributes of all triangles
|
|
1301
|
+
* in the mesh.
|
|
1302
|
+
*
|
|
1303
|
+
* \param mesh pointer to the mesh structure.
|
|
1304
|
+
* \param tria pointer to an array of vertices
|
|
1305
|
+
* Vertices of triangle \a i are stored in tria[(i-1)*3]\@3.
|
|
1306
|
+
* \param refs pointer to the array of triangles references.
|
|
1307
|
+
* refs[i-1] is the ref of triangle \a i.
|
|
1308
|
+
* \param areRequired pointer to an array of flags saying if triangles
|
|
1309
|
+
* are required. areRequired[i-1]=1 if triangle \a i
|
|
1310
|
+
* is required.
|
|
1311
|
+
* \return 0 on failure, 1 otherwise.
|
|
1312
|
+
*
|
|
1313
|
+
* \remark Fortran interface: (commentated in order to allow to pass
|
|
1314
|
+
* \%val(0) instead of the refs and areRequired arrays)
|
|
1315
|
+
* > ! SUBROUTINE MMGS_GET_TRIANGLES(mesh,tria,refs,areRequired,retval)\n
|
|
1316
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1317
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: tria\n
|
|
1318
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*) :: refs\n
|
|
1319
|
+
* > ! INTEGER, DIMENSION(*) :: areRequired\n
|
|
1320
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1321
|
+
* > ! END SUBROUTINE\n
|
|
1322
|
+
*
|
|
1323
|
+
*/
|
|
1324
|
+
LIBMMGS_EXPORT int MMGS_Get_triangles(MMG5_pMesh mesh, MMG5_int* tria, MMG5_int* refs,
|
|
1325
|
+
int* areRequired);
|
|
1326
|
+
/**
|
|
1327
|
+
* \brief Get the vertices, reference, and attributes of the next edge in the mesh.
|
|
1328
|
+
*
|
|
1329
|
+
* \param mesh pointer to the mesh structure.
|
|
1330
|
+
* \param e0 pointer to the index of the first vertex of the edge.
|
|
1331
|
+
* \param e1 pointer to the index of the second vertex of the edge.
|
|
1332
|
+
* \param ref pointer to the edge reference.
|
|
1333
|
+
* \param isRidge pointer to the flag saying if the edge is ridge.
|
|
1334
|
+
* \param isRequired pointer to the flag saying if the edge is required.
|
|
1335
|
+
* \return 0 on failure, 1 otherwise.
|
|
1336
|
+
*
|
|
1337
|
+
* This function retrieves the extremities \a e0, \a e1, reference \a ref, and
|
|
1338
|
+
* attributes of the next edge of \a mesh. It is meant to be called in a loop
|
|
1339
|
+
* over all edges. When it has been called as many times as there are edges in
|
|
1340
|
+
* the mesh, the internal edge counter will be reset.
|
|
1341
|
+
*
|
|
1342
|
+
* \remark Fortran interface:
|
|
1343
|
+
* > SUBROUTINE MMGS_GET_EDGE(mesh,e0,e1,ref,isRidge,isRequired,retval)\n
|
|
1344
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1345
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: e0,e1\n
|
|
1346
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1347
|
+
* > INTEGER :: isRidge,isRequired\n
|
|
1348
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1349
|
+
* > END SUBROUTINE\n
|
|
1350
|
+
*
|
|
1351
|
+
*/
|
|
1352
|
+
LIBMMGS_EXPORT int MMGS_Get_edge(MMG5_pMesh mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref,
|
|
1353
|
+
int* isRidge, int* isRequired);
|
|
1354
|
+
|
|
1355
|
+
/**
|
|
1356
|
+
* \brief Get the normal orientation at an edge.
|
|
1357
|
+
*
|
|
1358
|
+
* \param mesh pointer to the mesh structure.
|
|
1359
|
+
* \param k vertex number
|
|
1360
|
+
* \param n0 x componant of the normal at vertex \a k.
|
|
1361
|
+
* \param n1 y componant of the normal at vertex \a k.
|
|
1362
|
+
* \param n2 z componant of the normal at vertex \a k.
|
|
1363
|
+
*
|
|
1364
|
+
* \return 1 on success.
|
|
1365
|
+
*
|
|
1366
|
+
* This function retrieves the normal (n0,n1,n2) at vertex \a k.
|
|
1367
|
+
*
|
|
1368
|
+
* \remark Fortran interface:
|
|
1369
|
+
* > SUBROUTINE MMGS_GET_NORMALATVERTEX(mesh,k,n0,n1,n2,retval)\n
|
|
1370
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1371
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
1372
|
+
* > REAL(KIND=8) :: n0,n1,n2\n
|
|
1373
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1374
|
+
* > END SUBROUTINE\n
|
|
1375
|
+
*
|
|
1376
|
+
*/
|
|
1377
|
+
LIBMMGS_EXPORT int MMGS_Get_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double *n0, double *n1, double *n2) ;
|
|
1378
|
+
|
|
1379
|
+
/**
|
|
1380
|
+
* \brief Get the next element of a scalar solution structure.
|
|
1381
|
+
*
|
|
1382
|
+
* \param met pointer to the sol structure.
|
|
1383
|
+
* \param s pointer to the scalar solution value.
|
|
1384
|
+
* \return 0 on failure, 1 otherwise.
|
|
1385
|
+
*
|
|
1386
|
+
* This function retrieves the next element \a s of the solution field \a
|
|
1387
|
+
* met. It is meant to be called in a loop over all elements. When it has been
|
|
1388
|
+
* called as many times as there are elements in the solution, the internal loop
|
|
1389
|
+
* counter will be reset.
|
|
1390
|
+
*
|
|
1391
|
+
* \remark Fortran interface:
|
|
1392
|
+
* > SUBROUTINE MMGS_GET_SCALARSOL(met,s,retval)\n
|
|
1393
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1394
|
+
* > REAL(KIND=8), INTENT(OUT) :: s\n
|
|
1395
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1396
|
+
* > END SUBROUTINE\n
|
|
1397
|
+
*
|
|
1398
|
+
*/
|
|
1399
|
+
LIBMMGS_EXPORT int MMGS_Get_scalarSol(MMG5_pSol met, double* s);
|
|
1400
|
+
|
|
1401
|
+
/**
|
|
1402
|
+
* \brief Get all elements of a scalar solution structure.
|
|
1403
|
+
*
|
|
1404
|
+
* \param met pointer to the solution structure.
|
|
1405
|
+
* \param s array of scalar solutions at mesh vertices. s[i-1] is
|
|
1406
|
+
* the solution at vertex i.
|
|
1407
|
+
* \return 0 on failure, 1 otherwise.
|
|
1408
|
+
*
|
|
1409
|
+
* \remark Fortran interface:
|
|
1410
|
+
* > SUBROUTINE MMGS_GET_SCALARSOLS(met,s,retval)\n
|
|
1411
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1412
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1413
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1414
|
+
* > END SUBROUTINE\n
|
|
1415
|
+
*
|
|
1416
|
+
*/
|
|
1417
|
+
LIBMMGS_EXPORT int MMGS_Get_scalarSols(MMG5_pSol met, double* s);
|
|
1418
|
+
|
|
1419
|
+
/**
|
|
1420
|
+
* \brief Get the next element of a vector solution structure.
|
|
1421
|
+
*
|
|
1422
|
+
* \param met pointer to the sol structure.
|
|
1423
|
+
* \param vx x value of the vectorial solution.
|
|
1424
|
+
* \param vy y value of the vectorial solution.
|
|
1425
|
+
* \param vz z value of the vectorial solution.
|
|
1426
|
+
* \return 0 on failure, 1 otherwise.
|
|
1427
|
+
*
|
|
1428
|
+
* This function retrieves the next vector-valued element \f$(v_x,v_y,vz)\f$ of
|
|
1429
|
+
* a solution field. It is meant to be called in a loop over all elements. When
|
|
1430
|
+
* it has been called as many times as there are elements in the solution, the
|
|
1431
|
+
* internal loop counter will be reset.
|
|
1432
|
+
*
|
|
1433
|
+
* \remark Fortran interface:
|
|
1434
|
+
* > SUBROUTINE MMGS_GET_VECTORSOL(met,vx,vy,vz,retval)\n
|
|
1435
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1436
|
+
* > REAL(KIND=8), INTENT(OUT) :: vx,vy,vz\n
|
|
1437
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1438
|
+
* > END SUBROUTINE\n
|
|
1439
|
+
*
|
|
1440
|
+
*/
|
|
1441
|
+
LIBMMGS_EXPORT int MMGS_Get_vectorSol(MMG5_pSol met, double* vx, double* vy, double* vz);
|
|
1442
|
+
|
|
1443
|
+
/**
|
|
1444
|
+
* \brief Get all elements of a vector solution structure.
|
|
1445
|
+
*
|
|
1446
|
+
* \param met pointer to the sol structure.
|
|
1447
|
+
* \param sols array of solutions at mesh vertices. sols[3*(i-1)]\@3 is
|
|
1448
|
+
* the solution at vertex i.
|
|
1449
|
+
* \return 0 on failure, 1 otherwise.
|
|
1450
|
+
*
|
|
1451
|
+
* This function retrieves all elements of a vector-valued solution field.
|
|
1452
|
+
*
|
|
1453
|
+
* \remark Fortran interface:
|
|
1454
|
+
* > SUBROUTINE MMGS_GET_VECTORSOLS(met,sols,retval)\n
|
|
1455
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1456
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: sols\n
|
|
1457
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1458
|
+
* > END SUBROUTINE\n
|
|
1459
|
+
*
|
|
1460
|
+
*/
|
|
1461
|
+
LIBMMGS_EXPORT int MMGS_Get_vectorSols(MMG5_pSol met, double* sols);
|
|
1462
|
+
|
|
1463
|
+
/**
|
|
1464
|
+
* \brief Get the next element of a tensor solution structure.
|
|
1465
|
+
*
|
|
1466
|
+
* \param met pointer to the sol structure.
|
|
1467
|
+
* \param m11 pointer to the position (1,1) in the solution tensor.
|
|
1468
|
+
* \param m12 pointer to the position (1,2) in the solution tensor.
|
|
1469
|
+
* \param m13 pointer to the position (1,3) in the solution tensor.
|
|
1470
|
+
* \param m22 pointer to the position (2,2) in the solution tensor.
|
|
1471
|
+
* \param m23 pointer to the position (2,3) in the solution tensor.
|
|
1472
|
+
* \param m33 pointer to the position (3,3) in the solution tensor.
|
|
1473
|
+
* \return 0 on failure, 1 otherwise.
|
|
1474
|
+
*
|
|
1475
|
+
* This function retrieves the next element
|
|
1476
|
+
* \f$(m_{11},m_{12},m_{13},m_{22},m_{23},m_{33})\f$ of a tensor-valued solution
|
|
1477
|
+
* field. It is meant to be called in a loop over all vertices. When it has
|
|
1478
|
+
* been called as many times as there are elements in the solution, the internal
|
|
1479
|
+
* loop counter will be reset.
|
|
1480
|
+
*
|
|
1481
|
+
* \remark Fortran interface:
|
|
1482
|
+
* > SUBROUTINE MMGS_GET_TENSORSOL(met,m11,m12,m13,m22,m23,m33,retval)\n
|
|
1483
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1484
|
+
* > REAL(KIND=8), INTENT(OUT) :: m11,m12,m13,m22,m23,m33\n
|
|
1485
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1486
|
+
* > END SUBROUTINE\n
|
|
1487
|
+
*
|
|
1488
|
+
*/
|
|
1489
|
+
LIBMMGS_EXPORT int MMGS_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m13,
|
|
1490
|
+
double *m22, double *m23, double *m33);
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* \brief Get all elements of a tensor solution field.
|
|
1494
|
+
*
|
|
1495
|
+
* \param met pointer to the sol structure.
|
|
1496
|
+
* \param sols array of solution values.
|
|
1497
|
+
* sols[6*(i-1)]\@6 is the solution at vertex i.
|
|
1498
|
+
* \return 0 on failure, 1 otherwise.
|
|
1499
|
+
*
|
|
1500
|
+
* \remark Fortran interface:
|
|
1501
|
+
* > SUBROUTINE MMGS_GET_TENSORSOLS(met,sols,retval)\n
|
|
1502
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1503
|
+
* > REAL(KIND=8), DIMENSION(*), INTENT(OUT) :: sols\n
|
|
1504
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1505
|
+
* > END SUBROUTINE\n
|
|
1506
|
+
*
|
|
1507
|
+
*/
|
|
1508
|
+
LIBMMGS_EXPORT int MMGS_Get_tensorSols(MMG5_pSol met, double *sols);
|
|
1509
|
+
|
|
1510
|
+
/**
|
|
1511
|
+
* \brief Get one out of several solutions at a specific vertex.
|
|
1512
|
+
*
|
|
1513
|
+
* \param sol pointer to the array of solutions
|
|
1514
|
+
* \param i position of the solution field that we want to get.
|
|
1515
|
+
* \param s solution(s) at mesh vertex \a pos. The required size
|
|
1516
|
+
* of this array depends on the type of solution.
|
|
1517
|
+
* \param pos index of the vertex on which we get the solution.
|
|
1518
|
+
*
|
|
1519
|
+
* \return 0 on failure, 1 otherwise.
|
|
1520
|
+
*
|
|
1521
|
+
* This function retreives the value of field \a i of the solution array at
|
|
1522
|
+
* vertex \a pos. (\a pos from 1 to the number of vertices included and \a i
|
|
1523
|
+
* from 1 to the number of solutions). It works for any type of solution; the
|
|
1524
|
+
* types are inferred from \a sol.
|
|
1525
|
+
*
|
|
1526
|
+
* \remark Fortran interface:
|
|
1527
|
+
* > SUBROUTINE MMGS_GET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)\n
|
|
1528
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1529
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1530
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: pos\n
|
|
1531
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1532
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1533
|
+
* > END SUBROUTINE\n
|
|
1534
|
+
*
|
|
1535
|
+
*/
|
|
1536
|
+
LIBMMGS_EXPORT int MMGS_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double* s, MMG5_int pos);
|
|
1537
|
+
|
|
1538
|
+
/**
|
|
1539
|
+
* \brief Get one out of several solutions at all vertices in the mesh.
|
|
1540
|
+
*
|
|
1541
|
+
* \param sol pointer to the array of solutions
|
|
1542
|
+
* \param i position of the solution field that we want to get.
|
|
1543
|
+
* \param s array of solutions at mesh vertices. The solution at vertex \a k
|
|
1544
|
+
* is given by s[k-1] for a scalar sol, s[3*(k-1)]\@3 for a vectorial solution
|
|
1545
|
+
* and s[6*(k-1)]\@6 for a tensor solution.
|
|
1546
|
+
*
|
|
1547
|
+
* \return 0 on failure, 1 otherwise.
|
|
1548
|
+
*
|
|
1549
|
+
* This function retrieves the values of field \a i of the solution array \a sol
|
|
1550
|
+
* (\a i from 1 to \a the number of solutions). It works for any type of solution;
|
|
1551
|
+
* the type is inferred from \a sol.
|
|
1552
|
+
*
|
|
1553
|
+
* \remark Fortran interface:
|
|
1554
|
+
* > SUBROUTINE MMGS_GET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)\n
|
|
1555
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1556
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1557
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1558
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1559
|
+
* > END SUBROUTINE\n
|
|
1560
|
+
*
|
|
1561
|
+
*/
|
|
1562
|
+
LIBMMGS_EXPORT int MMGS_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double* s);
|
|
1563
|
+
|
|
1564
|
+
/**
|
|
1565
|
+
* \brief Get the value of an integer parameter of the remesher.
|
|
1566
|
+
*
|
|
1567
|
+
* \param mesh pointer to the mesh structure.
|
|
1568
|
+
* \param iparam integer parameter to get (see \ref MMGS_Param structure).
|
|
1569
|
+
* \return The value of the parameter.
|
|
1570
|
+
*
|
|
1571
|
+
* This function retrieves the value of integer parameter \a iparam (see \ref
|
|
1572
|
+
* MMGS_Param for a list of parameters). It returns the value of the parameter,
|
|
1573
|
+
* or zero if the value of \a iparam is not recognized.
|
|
1574
|
+
*
|
|
1575
|
+
* \remark Fortran interface:
|
|
1576
|
+
* > SUBROUTINE MMGS_GET_IPARAMETER(mesh,iparam,retval)\n
|
|
1577
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1578
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: iparam\n
|
|
1579
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1580
|
+
* > END SUBROUTINE\n
|
|
1581
|
+
*
|
|
1582
|
+
*/
|
|
1583
|
+
LIBMMGS_EXPORT int MMGS_Get_iparameter(MMG5_pMesh mesh, MMG5_int iparam);
|
|
1584
|
+
|
|
1585
|
+
/* input/output functions */
|
|
1586
|
+
/**
|
|
1587
|
+
* \brief Load a mesh (in .mesh/.mesb format) from file.
|
|
1588
|
+
*
|
|
1589
|
+
* \param mesh pointer to the mesh structure.
|
|
1590
|
+
* \param filename name of the file to load.
|
|
1591
|
+
* \return 0 on failure, 1 otherwise.
|
|
1592
|
+
*
|
|
1593
|
+
* This function reads .mesh (ASCII) and .meshb (binary) files. If the name
|
|
1594
|
+
* contains ".mesh" the file will be read as an ASCII file and if the name
|
|
1595
|
+
* contains .meshb it be read as a binary file. If the file contains neither of
|
|
1596
|
+
* these strings the function will first try to open "[filename].meshb"
|
|
1597
|
+
* and if this fails it will try "[filename].mesh".
|
|
1598
|
+
*
|
|
1599
|
+
* \remark Fortran interface:
|
|
1600
|
+
* > SUBROUTINE MMGS_LOADMESH(mesh,filename,strlen0,retval)\n
|
|
1601
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
1602
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1603
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1604
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1605
|
+
* > END SUBROUTINE\n
|
|
1606
|
+
*
|
|
1607
|
+
*/
|
|
1608
|
+
LIBMMGS_EXPORT int MMGS_loadMesh(MMG5_pMesh mesh, const char* filename);
|
|
1609
|
+
|
|
1610
|
+
/**
|
|
1611
|
+
* \brief Load a mesh and optionally a solution in VTP (VTK) format from file.
|
|
1612
|
+
*
|
|
1613
|
+
* \param mesh pointer to the mesh structure.
|
|
1614
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1615
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1616
|
+
* \param filename name of the file to load.
|
|
1617
|
+
* \return 0 on failure, 1 otherwise.
|
|
1618
|
+
*
|
|
1619
|
+
* This function reads a mesh and optionally one data field in VTK vtp file
|
|
1620
|
+
* format (.vtp extension). We read only low-order vertices, edges, triangles
|
|
1621
|
+
* and quadrangles.
|
|
1622
|
+
*
|
|
1623
|
+
* \remark Fortran interface:
|
|
1624
|
+
* > SUBROUTINE MMGS_LOADVTPMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1625
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1626
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1627
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1628
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1629
|
+
* > END SUBROUTINE\n
|
|
1630
|
+
*
|
|
1631
|
+
*/
|
|
1632
|
+
LIBMMGS_EXPORT int MMGS_loadVtpMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol,
|
|
1633
|
+
const char *filename);
|
|
1634
|
+
|
|
1635
|
+
/**
|
|
1636
|
+
* \brief Load a mesh and multiple solutions in VTP (VTK) format from file.
|
|
1637
|
+
*
|
|
1638
|
+
* \param mesh pointer to the mesh structure.
|
|
1639
|
+
* \param sol pointer to the solution structure.
|
|
1640
|
+
* \param filename name of the file to load.
|
|
1641
|
+
* \return 0 on failure, 1 otherwise.
|
|
1642
|
+
*
|
|
1643
|
+
* Read a mesh and multiple data fields in VTK vtp file format (.vtp extension). We
|
|
1644
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1645
|
+
*
|
|
1646
|
+
* \remark Fortran interface:
|
|
1647
|
+
* > SUBROUTINE MMGS_LOADVTPMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1648
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1649
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1650
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1651
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1652
|
+
* > END SUBROUTINE\n
|
|
1653
|
+
*
|
|
1654
|
+
*/
|
|
1655
|
+
LIBMMGS_EXPORT int MMGS_loadVtpMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
1656
|
+
const char *filename);
|
|
1657
|
+
|
|
1658
|
+
/**
|
|
1659
|
+
* \brief Load a mesh and possibly data in VTU (VTK) format from file.
|
|
1660
|
+
*
|
|
1661
|
+
* \param mesh pointer to the mesh structure.
|
|
1662
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1663
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1664
|
+
* \param filename name of the file to load.
|
|
1665
|
+
* \return 0 on failure, 1 otherwise.
|
|
1666
|
+
*
|
|
1667
|
+
* Read a mesh and optionally one data field in VTK vtu file format (.vtu
|
|
1668
|
+
* extension). We read only low-order vertices, edges, triangles and
|
|
1669
|
+
* quadrangles.
|
|
1670
|
+
*
|
|
1671
|
+
* \remark Fortran interface:
|
|
1672
|
+
* > SUBROUTINE MMGS_LOADVTUMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1673
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1674
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1675
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1676
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1677
|
+
* > END SUBROUTINE\n
|
|
1678
|
+
*
|
|
1679
|
+
*/
|
|
1680
|
+
LIBMMGS_EXPORT int MMGS_loadVtuMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol, const char *filename);
|
|
1681
|
+
|
|
1682
|
+
/**
|
|
1683
|
+
* \brief Load a mesh and multiple solutions in VTU (VTK) format from file.
|
|
1684
|
+
*
|
|
1685
|
+
* \param mesh pointer to the mesh structure.
|
|
1686
|
+
* \param sol pointer to the solution structure.
|
|
1687
|
+
* \param filename name of the file to load.
|
|
1688
|
+
* \return 0 on failure, 1 otherwise.
|
|
1689
|
+
*
|
|
1690
|
+
* Read a mesh and multiple data field in VTK vtu file format (.vtu extension). We
|
|
1691
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1692
|
+
*
|
|
1693
|
+
* \remark Fortran interface:
|
|
1694
|
+
* > SUBROUTINE MMGS_LOADVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1695
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1696
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1697
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1698
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1699
|
+
* > END SUBROUTINE\n
|
|
1700
|
+
*
|
|
1701
|
+
*/
|
|
1702
|
+
LIBMMGS_EXPORT int MMGS_loadVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
1703
|
+
const char *filename);
|
|
1704
|
+
|
|
1705
|
+
/**
|
|
1706
|
+
* \brief Load a mesh and possibly data in VTK format from file.
|
|
1707
|
+
*
|
|
1708
|
+
* \param mesh pointer to the mesh structure.
|
|
1709
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1710
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1711
|
+
* \param filename name of the file to load.
|
|
1712
|
+
* \return 0 on failure, 1 otherwise.
|
|
1713
|
+
*
|
|
1714
|
+
* Read a mesh and optionally one data field in VTK vtk file format (.vtk extension). We
|
|
1715
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1716
|
+
*
|
|
1717
|
+
* \remark Fortran interface:
|
|
1718
|
+
* > SUBROUTINE MMGS_LOADVTKMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1719
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1720
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1721
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1722
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1723
|
+
* > END SUBROUTINE\n
|
|
1724
|
+
*
|
|
1725
|
+
*/
|
|
1726
|
+
LIBMMGS_EXPORT int MMGS_loadVtkMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol,
|
|
1727
|
+
const char *filename);
|
|
1728
|
+
|
|
1729
|
+
/**
|
|
1730
|
+
* \brief Load a mesh and multiple solutions in VTK format from file.
|
|
1731
|
+
*
|
|
1732
|
+
* \param mesh pointer to the mesh structure.
|
|
1733
|
+
* \param sol pointer to the solution structure.
|
|
1734
|
+
* \param filename name of the file to load.
|
|
1735
|
+
* \return 0 on failure, 1 otherwise.
|
|
1736
|
+
*
|
|
1737
|
+
* Read a mesh and multiple data field in VTK vtk file format (.vtk extension). We
|
|
1738
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1739
|
+
*
|
|
1740
|
+
* \remark Fortran interface:
|
|
1741
|
+
* > SUBROUTINE MMGS_LOADVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1742
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1743
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1744
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1745
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1746
|
+
* > END SUBROUTINE\n
|
|
1747
|
+
*
|
|
1748
|
+
*/
|
|
1749
|
+
LIBMMGS_EXPORT int MMGS_loadVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
1750
|
+
const char *filename);
|
|
1751
|
+
|
|
1752
|
+
/**
|
|
1753
|
+
* \brief Load a mesh and possibly a solution in .msh format from file.
|
|
1754
|
+
*
|
|
1755
|
+
* \param mesh pointer to the mesh structure.
|
|
1756
|
+
* \param sol pointer to the solution structure.
|
|
1757
|
+
* \param filename name of the file to load.
|
|
1758
|
+
* \return 0 on failure, 1 otherwise.
|
|
1759
|
+
*
|
|
1760
|
+
* Read a mesh and optionally one data field in MSH file format (.msh extension). We read
|
|
1761
|
+
* only low-order vertices, edges, triangles, quadrangles, tetrahedra and prisms.
|
|
1762
|
+
*
|
|
1763
|
+
* \remark Fortran interface:
|
|
1764
|
+
* > SUBROUTINE MMGS_LOADMSHMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1765
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1766
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1767
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1768
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1769
|
+
* > END SUBROUTINE\n
|
|
1770
|
+
*
|
|
1771
|
+
*/
|
|
1772
|
+
LIBMMGS_EXPORT int MMGS_loadMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename);
|
|
1773
|
+
|
|
1774
|
+
/**
|
|
1775
|
+
* \brief Load a mesh and all data from a file in MSH format.
|
|
1776
|
+
*
|
|
1777
|
+
* \param mesh pointer to the mesh structure.
|
|
1778
|
+
* \param sol pointer to a list of solution structures.
|
|
1779
|
+
* \param filename name of the file to load.
|
|
1780
|
+
* \return 0 on failure, 1 otherwise.
|
|
1781
|
+
*
|
|
1782
|
+
* Read a mesh and multiple data in MSH file format (.msh extension). We read only
|
|
1783
|
+
* low-order vertices, edges, triangles, quadrangles, tetrahedra and prisms.
|
|
1784
|
+
*
|
|
1785
|
+
* \remark Fortran interface:
|
|
1786
|
+
* > SUBROUTINE MMGS_LOADMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1787
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1788
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1789
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1790
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1791
|
+
* > END SUBROUTINE\n
|
|
1792
|
+
*
|
|
1793
|
+
*/
|
|
1794
|
+
LIBMMGS_EXPORT int MMGS_loadMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename);
|
|
1795
|
+
|
|
1796
|
+
/**
|
|
1797
|
+
* \brief Load a mesh and all data from a file. The format will be guessed from the filename extension.
|
|
1798
|
+
*
|
|
1799
|
+
* \param mesh pointer to the mesh structure.
|
|
1800
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1801
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1802
|
+
* \param filename name of the file to load.
|
|
1803
|
+
* \return 0 on failure, 1 otherwise.
|
|
1804
|
+
*
|
|
1805
|
+
* \remark Fortran interface:
|
|
1806
|
+
* > SUBROUTINE MMGS_LOADGENERICMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1807
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1808
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1809
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1810
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1811
|
+
* > END SUBROUTINE\n
|
|
1812
|
+
*
|
|
1813
|
+
*/
|
|
1814
|
+
LIBMMGS_EXPORT int MMGS_loadGenericMesh(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pSol sol,
|
|
1815
|
+
const char *filename);
|
|
1816
|
+
|
|
1817
|
+
/**
|
|
1818
|
+
* \brief Save a mesh in .mesh or .meshb format.
|
|
1819
|
+
*
|
|
1820
|
+
* \param mesh pointer to the mesh structure.
|
|
1821
|
+
* \param filename name of the file to load.
|
|
1822
|
+
* \return 0 on failure, 1 otherwise.
|
|
1823
|
+
*
|
|
1824
|
+
* This function saves a mesh in .mesh or .meshb format (depending on the
|
|
1825
|
+
* filename extension).
|
|
1826
|
+
*
|
|
1827
|
+
* \remark Fortran interface:
|
|
1828
|
+
* > SUBROUTINE MMGS_SAVEMESH(mesh,filename,strlen0,retval)\n
|
|
1829
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
1830
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1831
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1832
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1833
|
+
* > END SUBROUTINE\n
|
|
1834
|
+
*
|
|
1835
|
+
*/
|
|
1836
|
+
LIBMMGS_EXPORT int MMGS_saveMesh(MMG5_pMesh mesh, const char *filename);
|
|
1837
|
+
|
|
1838
|
+
/**
|
|
1839
|
+
* \brief Write mesh and optionally one data field in MSH file format (.msh extension).
|
|
1840
|
+
*
|
|
1841
|
+
* \param mesh pointer to the mesh structure.
|
|
1842
|
+
* \param sol pointer to the solution structure.
|
|
1843
|
+
* \param filename name of the file to load.
|
|
1844
|
+
* \return 0 on failure, 1 otherwise.
|
|
1845
|
+
*
|
|
1846
|
+
* The file is saved in ASCII format for .msh extension, an in binary format for
|
|
1847
|
+
* a .mshb extension.
|
|
1848
|
+
*
|
|
1849
|
+
* \remark Fortran interface:
|
|
1850
|
+
* > SUBROUTINE MMGS_SAVEMSHMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1851
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1852
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1853
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1854
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1855
|
+
* > END SUBROUTINE\n
|
|
1856
|
+
*
|
|
1857
|
+
*/
|
|
1858
|
+
LIBMMGS_EXPORT int MMGS_saveMshMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename);
|
|
1859
|
+
|
|
1860
|
+
/**
|
|
1861
|
+
* \brief Save a mesh and multiple data fields in MSH format, ascii or binary
|
|
1862
|
+
* depending on the filename extension.
|
|
1863
|
+
*
|
|
1864
|
+
* \param mesh pointer to the mesh structure.
|
|
1865
|
+
* \param sol pointer to the solution structure.
|
|
1866
|
+
* \param filename name of the file to write.
|
|
1867
|
+
* \return 0 on failure, 1 otherwise.
|
|
1868
|
+
*
|
|
1869
|
+
* This function saves a mesh and multiple data fields (that are considered as
|
|
1870
|
+
* solutions and not metrics, thus, we do nothing over the ridge vertices) in MSH
|
|
1871
|
+
* file format (.msh extension). The file is saved in ASCII format for .msh
|
|
1872
|
+
* extension and in binary format for a .mshb extension.
|
|
1873
|
+
*
|
|
1874
|
+
* \remark Fortran interface:
|
|
1875
|
+
* > SUBROUTINE MMGS_SAVEMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1876
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1877
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1878
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1879
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1880
|
+
* > END SUBROUTINE\n
|
|
1881
|
+
*
|
|
1882
|
+
*/
|
|
1883
|
+
LIBMMGS_EXPORT int MMGS_saveMshMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename);
|
|
1884
|
+
|
|
1885
|
+
/**
|
|
1886
|
+
* \brief Write mesh and optionally one data field in Vtk file format (.vtk extension).
|
|
1887
|
+
*
|
|
1888
|
+
* \param mesh pointer to the mesh structure.
|
|
1889
|
+
* \param sol pointer to the solution structure.
|
|
1890
|
+
* \param filename name of the file to write.
|
|
1891
|
+
* \return 0 on failure, 1 otherwise.
|
|
1892
|
+
*
|
|
1893
|
+
* \remark Fortran interface:
|
|
1894
|
+
* > SUBROUTINE MMGS_SAVEVTKMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1895
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1896
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1897
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1898
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1899
|
+
* > END SUBROUTINE\n
|
|
1900
|
+
*
|
|
1901
|
+
*/
|
|
1902
|
+
LIBMMGS_EXPORT int MMGS_saveVtkMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename);
|
|
1903
|
+
|
|
1904
|
+
/**
|
|
1905
|
+
* \brief Save a mesh and multiple data fields in VTK format.
|
|
1906
|
+
*
|
|
1907
|
+
* \param mesh pointer to the mesh structure.
|
|
1908
|
+
* \param sol pointer to the solution structure.
|
|
1909
|
+
* \param filename name of the file to write.
|
|
1910
|
+
* \return 0 on failure, 1 otherwise.
|
|
1911
|
+
*
|
|
1912
|
+
* This function writes a mesh and a list of data fields in Vtk file format (.vtk extension).
|
|
1913
|
+
*
|
|
1914
|
+
* \remark Fortran interface:
|
|
1915
|
+
* > SUBROUTINE MMGS_SAVEVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1916
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1917
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1918
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1919
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1920
|
+
* > END SUBROUTINE\n
|
|
1921
|
+
*
|
|
1922
|
+
*/
|
|
1923
|
+
LIBMMGS_EXPORT int MMGS_saveVtkMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol, const char *filename);
|
|
1924
|
+
|
|
1925
|
+
/**
|
|
1926
|
+
* \brief Write mesh and optionally one data field vtu Vtk file format (.vtu extension).
|
|
1927
|
+
*
|
|
1928
|
+
* \param mesh pointer to the mesh structure.
|
|
1929
|
+
* \param sol pointer to the solution structure.
|
|
1930
|
+
* \param filename name of the file to write.
|
|
1931
|
+
* \return 0 on failure, 1 otherwise.
|
|
1932
|
+
*
|
|
1933
|
+
* \remark Fortran interface:
|
|
1934
|
+
* > SUBROUTINE MMGS_SAVEVTUMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1935
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1936
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1937
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1938
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1939
|
+
* > END SUBROUTINE\n
|
|
1940
|
+
*
|
|
1941
|
+
*/
|
|
1942
|
+
LIBMMGS_EXPORT int MMGS_saveVtuMesh(MMG5_pMesh mesh, MMG5_pSol sol, const char *filename);
|
|
1943
|
+
|
|
1944
|
+
/**
|
|
1945
|
+
* \brief Write a mesh and multiple data fields in vtu Vtk file format (.vtu extension).
|
|
1946
|
+
*
|
|
1947
|
+
* \param mesh pointer to the mesh structure.
|
|
1948
|
+
* \param sol pointer to the solution structure.
|
|
1949
|
+
* \param filename name of the file to write.
|
|
1950
|
+
* \return 0 on failure, 1 otherwise.
|
|
1951
|
+
*
|
|
1952
|
+
* \remark Fortran interface:
|
|
1953
|
+
* > SUBROUTINE MMGS_SAVEVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1954
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1955
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1956
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1957
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1958
|
+
* > END SUBROUTINE\n
|
|
1959
|
+
*
|
|
1960
|
+
*/
|
|
1961
|
+
LIBMMGS_EXPORT int MMGS_saveVtuMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
1962
|
+
const char *filename);
|
|
1963
|
+
|
|
1964
|
+
/**
|
|
1965
|
+
* \brief Save a mesh and optionally one data field in VTP format.
|
|
1966
|
+
*
|
|
1967
|
+
* \param mesh pointer to the mesh structure.
|
|
1968
|
+
* \param sol pointer to the solution structure.
|
|
1969
|
+
* \param filename name of the file to write.
|
|
1970
|
+
* \return 0 on failure, 1 otherwise.
|
|
1971
|
+
*
|
|
1972
|
+
* This function writes a mesh and optionally one data in polydata Vtk file
|
|
1973
|
+
* format (.vtp extension).
|
|
1974
|
+
*
|
|
1975
|
+
* \remark Fortran interface:
|
|
1976
|
+
* > SUBROUTINE MMGS_SAVEVTPMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1977
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1978
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1979
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1980
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1981
|
+
* > END SUBROUTINE\n
|
|
1982
|
+
*
|
|
1983
|
+
*/
|
|
1984
|
+
LIBMMGS_EXPORT int MMGS_saveVtpMesh(MMG5_pMesh mesh, MMG5_pSol sol,
|
|
1985
|
+
const char *filename);
|
|
1986
|
+
|
|
1987
|
+
/**
|
|
1988
|
+
* \brief Save a mesh and multiple data fields in VTP format.
|
|
1989
|
+
*
|
|
1990
|
+
* \param mesh pointer to the mesh structure.
|
|
1991
|
+
* \param sol pointer to the solution structure.
|
|
1992
|
+
* \param filename name of the file to write.
|
|
1993
|
+
* \return 0 on failure, 1 otherwise.
|
|
1994
|
+
*
|
|
1995
|
+
* This function writes a mesh and multiple data fields in polydata Vtk file
|
|
1996
|
+
* format (.vtp extension).
|
|
1997
|
+
*
|
|
1998
|
+
* \remark Fortran interface:
|
|
1999
|
+
* > SUBROUTINE MMGS_SAVEVTPMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
2000
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2001
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2002
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2003
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2004
|
+
* > END SUBROUTINE\n
|
|
2005
|
+
*
|
|
2006
|
+
*/
|
|
2007
|
+
LIBMMGS_EXPORT int MMGS_saveVtpMesh_and_allData(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
2008
|
+
const char *filename);
|
|
2009
|
+
|
|
2010
|
+
/**
|
|
2011
|
+
* \brief Save mesh data in a file whose format depends on the filename extension.
|
|
2012
|
+
*
|
|
2013
|
+
* \param mesh pointer to the mesh structure.
|
|
2014
|
+
* \param filename name of the file to write.
|
|
2015
|
+
* \return 0 on failure, 1 otherwise.
|
|
2016
|
+
*
|
|
2017
|
+
* \remark Fortran interface:
|
|
2018
|
+
* > SUBROUTINE MMGS_SAVEGENERICMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2019
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2020
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2021
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2022
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2023
|
+
* > END SUBROUTINE\n
|
|
2024
|
+
*
|
|
2025
|
+
*/
|
|
2026
|
+
LIBMMGS_EXPORT int MMGS_saveGenericMesh(MMG5_pMesh mesh, MMG5_pSol sol,
|
|
2027
|
+
const char *filename);
|
|
2028
|
+
|
|
2029
|
+
/**
|
|
2030
|
+
* \brief Load a metric field (or other solution) in medit's .sol format.
|
|
2031
|
+
*
|
|
2032
|
+
* \param mesh pointer to the mesh structure.
|
|
2033
|
+
* \param met pointer to the sol structure.
|
|
2034
|
+
* \param filename name of the file to load.
|
|
2035
|
+
* \return 0 on failure, 1 otherwise.
|
|
2036
|
+
*
|
|
2037
|
+
* Load metric field. The solution file (in medit file format) must contain
|
|
2038
|
+
* only 1 solution: the metric.
|
|
2039
|
+
*
|
|
2040
|
+
* \remark Fortran interface:
|
|
2041
|
+
* > SUBROUTINE MMGS_LOADSOL(mesh,met,filename,strlen0,retval)\n
|
|
2042
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2043
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2044
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2045
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2046
|
+
* > END SUBROUTINE\n
|
|
2047
|
+
*
|
|
2048
|
+
*/
|
|
2049
|
+
LIBMMGS_EXPORT int MMGS_loadSol(MMG5_pMesh mesh, MMG5_pSol met, const char* filename);
|
|
2050
|
+
|
|
2051
|
+
/**
|
|
2052
|
+
* \brief Load one or more solutions in a solution file in medit file format.
|
|
2053
|
+
*
|
|
2054
|
+
* \param mesh pointer to the mesh structure.
|
|
2055
|
+
* \param sol pointer to the solutions array
|
|
2056
|
+
* \param filename name of the file to load.
|
|
2057
|
+
* \return 0 on failure, 1 otherwise.
|
|
2058
|
+
*
|
|
2059
|
+
* \remark Fortran interface:
|
|
2060
|
+
* > SUBROUTINE MMGS_LOADALLSOLS(mesh,sol,filename,strlen0,retval)\n
|
|
2061
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2062
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2063
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2064
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2065
|
+
* > END SUBROUTINE\n
|
|
2066
|
+
*
|
|
2067
|
+
*/
|
|
2068
|
+
LIBMMGS_EXPORT int MMGS_loadAllSols(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
2069
|
+
const char* filename);
|
|
2070
|
+
|
|
2071
|
+
/**
|
|
2072
|
+
* \brief Write an isotropic or anisotropic metric in medit file format.
|
|
2073
|
+
*
|
|
2074
|
+
* \param mesh pointer to the mesh structure.
|
|
2075
|
+
* \param met pointer to the sol structure.
|
|
2076
|
+
* \param filename name of the file to write.
|
|
2077
|
+
* \return 0 on failure, 1 otherwise.
|
|
2078
|
+
*
|
|
2079
|
+
* \remark Fortran interface:
|
|
2080
|
+
* > SUBROUTINE MMGS_SAVESOL(mesh,met,filename,strlen0,retval)\n
|
|
2081
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2082
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2083
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2084
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2085
|
+
* > END SUBROUTINE\n
|
|
2086
|
+
*
|
|
2087
|
+
*/
|
|
2088
|
+
LIBMMGS_EXPORT int MMGS_saveSol(MMG5_pMesh mesh, MMG5_pSol met,
|
|
2089
|
+
const char *filename);
|
|
2090
|
+
|
|
2091
|
+
/**
|
|
2092
|
+
* \brief Save one or more solutions in a solution file in medit file format.
|
|
2093
|
+
*
|
|
2094
|
+
* \param mesh pointer to the mesh structure.
|
|
2095
|
+
* \param sol pointer to the solutions array
|
|
2096
|
+
* \param filename name of the solution file.
|
|
2097
|
+
* \return 0 or -1 on failure, 1 otherwise.
|
|
2098
|
+
*
|
|
2099
|
+
* \remark Fortran interface:
|
|
2100
|
+
* > SUBROUTINE MMGS_SAVEALLSOLS(mesh,sol,filename,strlen0,retval)\n
|
|
2101
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2102
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2103
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2104
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2105
|
+
* > END SUBROUTINE\n
|
|
2106
|
+
*
|
|
2107
|
+
*/
|
|
2108
|
+
LIBMMGS_EXPORT int MMGS_saveAllSols(MMG5_pMesh mesh, MMG5_pSol *sol,
|
|
2109
|
+
const char *filename);
|
|
2110
|
+
|
|
2111
|
+
/**
|
|
2112
|
+
* \brief Deallocate an array of solution fields
|
|
2113
|
+
*
|
|
2114
|
+
* \param mesh pointer to the mesh structure.
|
|
2115
|
+
* \param sol pointer to an array of solution structures (that stores solution fields).
|
|
2116
|
+
* \return 1
|
|
2117
|
+
*
|
|
2118
|
+
* \remark Fortran interface:
|
|
2119
|
+
* > SUBROUTINE MMGS_Free_allSols(mesh,sol,retval)\n
|
|
2120
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
2121
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2122
|
+
* > END SUBROUTINE\n
|
|
2123
|
+
*
|
|
2124
|
+
*/
|
|
2125
|
+
LIBMMGS_EXPORT int MMGS_Free_allSols(MMG5_pMesh mesh,MMG5_pSol *sol);
|
|
2126
|
+
|
|
2127
|
+
/* deallocations */
|
|
2128
|
+
/**
|
|
2129
|
+
* \brief Deallocations before return.
|
|
2130
|
+
*
|
|
2131
|
+
* \param starter dummy argument used to initialize the variadic argument list.
|
|
2132
|
+
* \param ... variadic arguments.
|
|
2133
|
+
*
|
|
2134
|
+
* For the \ref MMGS_mmgslib function, you need
|
|
2135
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2136
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet,
|
|
2137
|
+
* &your_metric,MMG5_ARG_end).
|
|
2138
|
+
*
|
|
2139
|
+
* For the \ref MMGS_mmgsls function, you need
|
|
2140
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2141
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
2142
|
+
* &your_level_set,MMG5_ARG_end).
|
|
2143
|
+
*
|
|
2144
|
+
* Here, \a your_mesh is a \ref MMG5_pMesh, \a your_metric and \a your_level_set
|
|
2145
|
+
* are \ref MMG5_pSol.
|
|
2146
|
+
*
|
|
2147
|
+
* \return 0 on failure, 1 on success
|
|
2148
|
+
*
|
|
2149
|
+
* \remark we pass the structures by reference in order to have argument
|
|
2150
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
2151
|
+
*
|
|
2152
|
+
* \remark no Fortran interface to allow variadic args.
|
|
2153
|
+
*
|
|
2154
|
+
*/
|
|
2155
|
+
LIBMMGS_EXPORT int MMGS_Free_all(const int starter,...);
|
|
2156
|
+
|
|
2157
|
+
/**
|
|
2158
|
+
* \brief Structure deallocations before return.
|
|
2159
|
+
*
|
|
2160
|
+
* \param starter dummy argument used to initialize the variadic argument list.
|
|
2161
|
+
* \param ... variadic arguments.
|
|
2162
|
+
*
|
|
2163
|
+
* For the \ref MMGS_mmgslib function, you need
|
|
2164
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2165
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet,
|
|
2166
|
+
* &your_metric,MMG5_ARG_end).
|
|
2167
|
+
*
|
|
2168
|
+
* For the \ref MMGS_mmgsls function, you need
|
|
2169
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2170
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
2171
|
+
* &your_level_set,MMG5_ARG_end).
|
|
2172
|
+
*
|
|
2173
|
+
* Here, \a your_mesh is a pointer to \ref MMG5_pMesh and \a your_metric and
|
|
2174
|
+
* \a your_level_set are pointers to \ref MMG5_pSol.
|
|
2175
|
+
*
|
|
2176
|
+
* \return 0 on failure, 1 on success
|
|
2177
|
+
*
|
|
2178
|
+
* \remark we pass the structures by reference in order to have argument
|
|
2179
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
2180
|
+
*
|
|
2181
|
+
* \remark no Fortran interface to allow variadic args.
|
|
2182
|
+
*
|
|
2183
|
+
*/
|
|
2184
|
+
LIBMMGS_EXPORT int MMGS_Free_structures(const int starter,...);
|
|
2185
|
+
|
|
2186
|
+
/**
|
|
2187
|
+
* \brief Structure deallocations before return.
|
|
2188
|
+
*
|
|
2189
|
+
* \param starter dummy argument used to initialize the variadic argument list.
|
|
2190
|
+
* \param ... variadic arguments.
|
|
2191
|
+
*
|
|
2192
|
+
* For the \ref MMGS_mmgslib function, you need
|
|
2193
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2194
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet,
|
|
2195
|
+
* &your_metric,MMG5_ARG_end).
|
|
2196
|
+
*
|
|
2197
|
+
* For the \ref MMGS_mmgsls function, you need
|
|
2198
|
+
* to call the \ref MMGS_Init_mesh function with the following arguments :
|
|
2199
|
+
* MMGS_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
2200
|
+
* &your_level_set,MMG5_ARG_end).
|
|
2201
|
+
*
|
|
2202
|
+
* Here, \a your_mesh is a \ref MMG5_pMesh, \a your_metric and \a your_level_set
|
|
2203
|
+
* are \ref MMG5_pSol.
|
|
2204
|
+
*
|
|
2205
|
+
* \return 0 on failure, 1 on success
|
|
2206
|
+
*
|
|
2207
|
+
* \remark we pass the structures by reference in order to have argument
|
|
2208
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
2209
|
+
*
|
|
2210
|
+
* \remark no Fortran interface to allow variadic args.
|
|
2211
|
+
*
|
|
2212
|
+
*/
|
|
2213
|
+
LIBMMGS_EXPORT int MMGS_Free_names(const int starter,...);
|
|
2214
|
+
|
|
2215
|
+
/* library */
|
|
2216
|
+
/**
|
|
2217
|
+
* \brief Main "program" for mesh adaptation.
|
|
2218
|
+
*
|
|
2219
|
+
* \param mesh pointer to the mesh structure. \param met pointer to the sol
|
|
2220
|
+
* (metric) structure. \return \ref MMG5_SUCCESS on success, \ref
|
|
2221
|
+
* MMG5_LOWFAILURE in case there is a failure but a conform mesh can be returned
|
|
2222
|
+
* or \ref MMG5_STRONGFAILURE if there is a failure and we can't save the mesh.
|
|
2223
|
+
*
|
|
2224
|
+
* Main program for the library.
|
|
2225
|
+
*
|
|
2226
|
+
* \remark Fortran interface:
|
|
2227
|
+
* > SUBROUTINE MMGS_MMGSLIB(mesh,met,retval)\n
|
|
2228
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2229
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2230
|
+
* > END SUBROUTINE\n
|
|
2231
|
+
*
|
|
2232
|
+
*/
|
|
2233
|
+
LIBMMGS_EXPORT int MMGS_mmgslib(MMG5_pMesh mesh, MMG5_pSol met);
|
|
2234
|
+
|
|
2235
|
+
/**
|
|
2236
|
+
* \brief Main "program" for level-set discretization.
|
|
2237
|
+
*
|
|
2238
|
+
* \param mesh pointer to the mesh structure. \param sol pointer to the sol
|
|
2239
|
+
* (level-set) structure. \param met pointer to the sol (metric) structure
|
|
2240
|
+
* (optionnal). \return \ref MMG5_SUCCESS on success, \ref MMG5_LOWFAILURE if
|
|
2241
|
+
* there is a a failure but a conform mesh is saved or \ref MMG5_STRONGFAILURE
|
|
2242
|
+
* if there is a a failure and we can't save the mesh.
|
|
2243
|
+
*
|
|
2244
|
+
* Main program for level set discretization library. If a metric \a met is
|
|
2245
|
+
* provided, use it to adapt the mesh.
|
|
2246
|
+
*
|
|
2247
|
+
* \remark Fortran interface:
|
|
2248
|
+
* > SUBROUTINE MMGS_MMGSLS(mesh,sol,met,retval)\n
|
|
2249
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2250
|
+
* > MMG5_DATA_PTR_T :: met\n
|
|
2251
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2252
|
+
* > END SUBROUTINE\n
|
|
2253
|
+
*
|
|
2254
|
+
*/
|
|
2255
|
+
LIBMMGS_EXPORT int MMGS_mmgsls(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_pSol met);
|
|
2256
|
+
|
|
2257
|
+
/** To associate function pointers without calling MMGS_mmgslib */
|
|
2258
|
+
/**
|
|
2259
|
+
* \brief Set function pointers for caltet, lenedg, defsiz and gradsiz.
|
|
2260
|
+
*
|
|
2261
|
+
* \param mesh pointer to the mesh structure (unused).
|
|
2262
|
+
* \param met pointer to the sol structure (unused).
|
|
2263
|
+
*
|
|
2264
|
+
* \remark Fortran interface:
|
|
2265
|
+
* > SUBROUTINE MMGS_SETFUNC(mesh,met)\n
|
|
2266
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2267
|
+
* > END SUBROUTINE\n
|
|
2268
|
+
*
|
|
2269
|
+
*/
|
|
2270
|
+
LIBMMGS_EXPORT void MMGS_setfunc(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2271
|
+
|
|
2272
|
+
/**
|
|
2273
|
+
* \brief Get the number of non-boundary edges.
|
|
2274
|
+
*
|
|
2275
|
+
* \param mesh pointer to the mesh structure.
|
|
2276
|
+
* \param the number of edges pointer to the number of non boundary edges.
|
|
2277
|
+
* \return 0 on failure, 1 otherwise.
|
|
2278
|
+
*
|
|
2279
|
+
* Get the number of non-boundary edges (for DG methods for example). An edge is
|
|
2280
|
+
* boundary if it is located at the interface of 2 domains with different
|
|
2281
|
+
* references, if it belongs to one triangle only or if it is a singular edge
|
|
2282
|
+
* (ridge or required).
|
|
2283
|
+
* Append these edges to the list of edges.
|
|
2284
|
+
*
|
|
2285
|
+
* \warning reallocate the edge array and append the internal edges. This may
|
|
2286
|
+
* modify the behaviour of other functions.
|
|
2287
|
+
*
|
|
2288
|
+
* \remark Fortran interface:
|
|
2289
|
+
* > SUBROUTINE MMGS_GET_NUMBEROFNONBDYEDGES(mesh,nb_edges,retval)\n
|
|
2290
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
2291
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: nb_edges\n
|
|
2292
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2293
|
+
* > END SUBROUTINE\n
|
|
2294
|
+
*
|
|
2295
|
+
*/
|
|
2296
|
+
LIBMMGS_EXPORT int MMGS_Get_numberOfNonBdyEdges(MMG5_pMesh mesh, MMG5_int* nb_edges);
|
|
2297
|
+
|
|
2298
|
+
/**
|
|
2299
|
+
* \brief Get vertices and reference of a non-boundary edge.
|
|
2300
|
+
*
|
|
2301
|
+
* \param mesh pointer to the mesh structure.
|
|
2302
|
+
* \param e0 pointer to the first extremity of the edge (a vertex number).
|
|
2303
|
+
* \param e1 pointer to the second extremity of the edge (a vertex number).
|
|
2304
|
+
* \param ref pointer to the edge reference.
|
|
2305
|
+
* \param idx index of the non boundary edge to get (between 1 and the number of edges)
|
|
2306
|
+
* \return 0 on failure, 1 otherwise.
|
|
2307
|
+
*
|
|
2308
|
+
* This function returns the vertices \a e0, \a e1 and reference \a ref of the non boundary
|
|
2309
|
+
* edge \a idx. An edge is boundary if it is located at
|
|
2310
|
+
* the interface of 2 domains with different references, if it belongs to one
|
|
2311
|
+
* triangle only or if it is a singular edge (ridge or required).
|
|
2312
|
+
*
|
|
2313
|
+
* \remark Fortran interface:
|
|
2314
|
+
* > SUBROUTINE MMGS_GET_NONBDYEDGE(mesh,e0,e1,ref,idx,retval)\n
|
|
2315
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
2316
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: e0,e1\n
|
|
2317
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
2318
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: idx\n
|
|
2319
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2320
|
+
* > END SUBROUTINE\n
|
|
2321
|
+
*
|
|
2322
|
+
*/
|
|
2323
|
+
LIBMMGS_EXPORT int MMGS_Get_nonBdyEdge(MMG5_pMesh mesh, MMG5_int* e0, MMG5_int* e1,
|
|
2324
|
+
MMG5_int* ref, MMG5_int idx);
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
/* Tools for the library */
|
|
2328
|
+
/**
|
|
2329
|
+
* \brief Compute an isotropic size map according to the mean of the length of the
|
|
2330
|
+
* edges passing through a vertex.
|
|
2331
|
+
*
|
|
2332
|
+
* \param mesh pointer to the mesh structure
|
|
2333
|
+
* \param met pointer to the sol structure
|
|
2334
|
+
* \return 1 on success
|
|
2335
|
+
*
|
|
2336
|
+
* \remark Fortran interface:
|
|
2337
|
+
* > SUBROUTINE MMGS_DOSOL(mesh,met,retval)\n
|
|
2338
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2339
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2340
|
+
* > END SUBROUTINE\n
|
|
2341
|
+
*
|
|
2342
|
+
*/
|
|
2343
|
+
LIBMMGS_EXPORT extern int (*MMGS_doSol)(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2344
|
+
|
|
2345
|
+
/**
|
|
2346
|
+
* \brief Compute a constant size map.
|
|
2347
|
+
*
|
|
2348
|
+
* \param mesh pointer to the mesh structure
|
|
2349
|
+
* \param met pointer to the sol structure
|
|
2350
|
+
* \return 1 on success
|
|
2351
|
+
*
|
|
2352
|
+
* This function computes a constant size map according to mesh->info.hsiz,
|
|
2353
|
+
* mesh->info.hmin and mesh->info.hmax. It updates these 3 values if they are
|
|
2354
|
+
* not compatible.
|
|
2355
|
+
*
|
|
2356
|
+
* \remark Fortran interface:
|
|
2357
|
+
* > SUBROUTINE MMGS_SET_CONSTANTSIZE(mesh,met,retval)\n
|
|
2358
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2359
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2360
|
+
* > END SUBROUTINE\n
|
|
2361
|
+
*
|
|
2362
|
+
*/
|
|
2363
|
+
LIBMMGS_EXPORT int MMGS_Set_constantSize(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2364
|
+
|
|
2365
|
+
/**
|
|
2366
|
+
* \brief Print help for mmgs options.
|
|
2367
|
+
*
|
|
2368
|
+
* \param prog pointer to the program name.
|
|
2369
|
+
*
|
|
2370
|
+
* \remark Fortran interface:
|
|
2371
|
+
* > SUBROUTINE MMGS_USAGE(prog,strlen0,retval)\n
|
|
2372
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: prog\n
|
|
2373
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2374
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2375
|
+
* > END SUBROUTINE\n
|
|
2376
|
+
*
|
|
2377
|
+
*/
|
|
2378
|
+
LIBMMGS_EXPORT int MMGS_usage(char *prog);
|
|
2379
|
+
|
|
2380
|
+
/**
|
|
2381
|
+
* \brief Store command line arguments.
|
|
2382
|
+
*
|
|
2383
|
+
* \param argc number of command line arguments.
|
|
2384
|
+
* \param argv command line arguments.
|
|
2385
|
+
* \param mesh pointer to the mesh structure.
|
|
2386
|
+
* \param met pointer to the sol structure.
|
|
2387
|
+
* \param sol pointer to a level-set or displacement
|
|
2388
|
+
*
|
|
2389
|
+
* \return 1.
|
|
2390
|
+
*
|
|
2391
|
+
* \remark no matching fortran function.
|
|
2392
|
+
*
|
|
2393
|
+
*/
|
|
2394
|
+
LIBMMGS_EXPORT int MMGS_parsar(int argc,char *argv[],MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol);
|
|
2395
|
+
|
|
2396
|
+
/**
|
|
2397
|
+
* \brief Print the default parameter values.
|
|
2398
|
+
*
|
|
2399
|
+
* \param mesh pointer to the mesh structure.
|
|
2400
|
+
* \return 0 on failure, 1 on success.
|
|
2401
|
+
*
|
|
2402
|
+
* \remark Fortran interface:
|
|
2403
|
+
* > SUBROUTINE MMGS_DEFAULTVALUES(mesh,retval)\n
|
|
2404
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2405
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2406
|
+
* > END SUBROUTINE\n
|
|
2407
|
+
*
|
|
2408
|
+
*/
|
|
2409
|
+
LIBMMGS_EXPORT int MMGS_defaultValues(MMG5_pMesh mesh);
|
|
2410
|
+
|
|
2411
|
+
/**
|
|
2412
|
+
* \brief Store the info structure in the mesh structure.
|
|
2413
|
+
*
|
|
2414
|
+
* \param mesh pointer to the mesh structure.
|
|
2415
|
+
* \param info pointer to the info structure.
|
|
2416
|
+
* \return 1.
|
|
2417
|
+
*
|
|
2418
|
+
* \remark Fortran interface:
|
|
2419
|
+
* > SUBROUTINE MMGS_STOCKOPTIONS(mesh,info,retval)\n
|
|
2420
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,info\n
|
|
2421
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2422
|
+
* > END SUBROUTINE\n
|
|
2423
|
+
*
|
|
2424
|
+
*/
|
|
2425
|
+
LIBMMGS_EXPORT int MMGS_stockOptions(MMG5_pMesh mesh, MMG5_Info *info);
|
|
2426
|
+
|
|
2427
|
+
/**
|
|
2428
|
+
* \brief Recover the info structure stored in the mesh structure.
|
|
2429
|
+
*
|
|
2430
|
+
* \param mesh pointer to the mesh structure.
|
|
2431
|
+
* \param info pointer to the info structure.
|
|
2432
|
+
*
|
|
2433
|
+
* \remark Fortran interface:
|
|
2434
|
+
* > SUBROUTINE MMGS_DESTOCKOPTIONS(mesh,info)\n
|
|
2435
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,info\n
|
|
2436
|
+
* > END SUBROUTINE\n
|
|
2437
|
+
*
|
|
2438
|
+
*/
|
|
2439
|
+
LIBMMGS_EXPORT void MMGS_destockOptions(MMG5_pMesh mesh, MMG5_Info *info);
|
|
2440
|
+
|
|
2441
|
+
/**
|
|
2442
|
+
* \brief Return adjacent triangles of a triangle.
|
|
2443
|
+
*
|
|
2444
|
+
* \param mesh pointer to the mesh structure.
|
|
2445
|
+
* \param kel triangle index.
|
|
2446
|
+
* \param listri pointer to the array of indices of the three adjacent
|
|
2447
|
+
* triangles of triangle \a kel (the index is 0 if there is no adjacent triangle).
|
|
2448
|
+
* \return 1.
|
|
2449
|
+
*
|
|
2450
|
+
* Find the indices of the 3 adjacent elements of triangle \a
|
|
2451
|
+
* kel. \f$v_i = 0\f$ if the \f$i^{th}\f$ face has no adjacent element
|
|
2452
|
+
* (so we are on a boundary face).
|
|
2453
|
+
*
|
|
2454
|
+
* \remark Fortran interface:
|
|
2455
|
+
* > SUBROUTINE MMGS_GET_ADJATRI(mesh,kel,listri,retval)\n
|
|
2456
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2457
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: kel\n
|
|
2458
|
+
* > INTEGER(MMG5F_INT), DIMENSION(3), INTENT(OUT) :: listri\n
|
|
2459
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2460
|
+
* > END SUBROUTINE\n
|
|
2461
|
+
*
|
|
2462
|
+
*/
|
|
2463
|
+
LIBMMGS_EXPORT int MMGS_Get_adjaTri(MMG5_pMesh mesh, MMG5_int kel, MMG5_int listri[3]);
|
|
2464
|
+
|
|
2465
|
+
/**
|
|
2466
|
+
* \brief Find adjacent vertices of a triangle.
|
|
2467
|
+
*
|
|
2468
|
+
* \param mesh pointer to the mesh structure.
|
|
2469
|
+
* \param ip vertex index.
|
|
2470
|
+
* \param start index of a triangle holding \a ip.
|
|
2471
|
+
* \param lispoi pointer to an array of size MMGS_LMAX that will contain
|
|
2472
|
+
* the indices of adjacent vertices to the vertex \a ip.
|
|
2473
|
+
* \return nbpoi the number of adjacent vertices on success, 0 on failure.
|
|
2474
|
+
*
|
|
2475
|
+
* Find the indices of the adjacent vertices of the vertex \a
|
|
2476
|
+
* ip of the triangle \a start.
|
|
2477
|
+
*
|
|
2478
|
+
* \remark Fortran interface:
|
|
2479
|
+
* > SUBROUTINE MMGS_GET_ADJAVERTICESFAST(mesh,ip,start,lispoi,retval)\n
|
|
2480
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2481
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ip,start\n
|
|
2482
|
+
* > INTEGER(MMG5F_INT), DIMENSION(MMGS_LMAX), INTENT(OUT) :: lispoi\n
|
|
2483
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT) :: retval\n
|
|
2484
|
+
* > END SUBROUTINE\n
|
|
2485
|
+
*
|
|
2486
|
+
*/
|
|
2487
|
+
LIBMMGS_EXPORT int MMGS_Get_adjaVerticesFast(MMG5_pMesh mesh, MMG5_int ip,MMG5_int start, MMG5_int lispoi[MMGS_LMAX]);
|
|
2488
|
+
|
|
2489
|
+
/**
|
|
2490
|
+
* \brief Compute the real eigenvalues and eigenvectors of a symmetric matrix
|
|
2491
|
+
*
|
|
2492
|
+
* \param m upper part of a symmetric matrix diagonalizable in |R
|
|
2493
|
+
* \param lambda array of eigenvalues
|
|
2494
|
+
* \param vp array of eigenvectors
|
|
2495
|
+
*
|
|
2496
|
+
* \return the order of the eigenvalues
|
|
2497
|
+
*
|
|
2498
|
+
* Compute the real eigenvalues and eigenvectors of a symmetric matrix m whose
|
|
2499
|
+
* upper part is provided (m11, m12, m13, m22, m23, m33 in this order).
|
|
2500
|
+
*
|
|
2501
|
+
* lambda[0] is the eigenvalue associated to the eigenvector ( v[0][0], v[0,1], v[0,2] )
|
|
2502
|
+
* in C and to the eigenvector v(1,:) in fortran
|
|
2503
|
+
*
|
|
2504
|
+
* lambda[1] is the eigenvalue associated to the eigenvector ( v[1][0], v[1,1], v[1,2] )
|
|
2505
|
+
* in C and to the eigenvector v(2,:) in fortran
|
|
2506
|
+
*
|
|
2507
|
+
* lambda[2] is the eigenvalue associated to the eigenvector ( v[2][0], v[2,1], v[2,2] )
|
|
2508
|
+
* in C and to the eigenvector v(3,:) in fortran
|
|
2509
|
+
*
|
|
2510
|
+
* \remark Fortran interface:
|
|
2511
|
+
* > SUBROUTINE MMGS_COMPUTE_EIGENV(m,lambda,vp,retval)\n
|
|
2512
|
+
* > REAL(KIND=8), INTENT(IN) :: m(*)\n
|
|
2513
|
+
* > REAL(KIND=8), INTENT(OUT) :: lambda(*),vp(*)\n
|
|
2514
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2515
|
+
* > END SUBROUTINE\n
|
|
2516
|
+
*
|
|
2517
|
+
*/
|
|
2518
|
+
LIBMMGS_EXPORT int MMGS_Compute_eigenv(double m[6],double lambda[3],double vp[3][3]);
|
|
2519
|
+
|
|
2520
|
+
/**
|
|
2521
|
+
* \brief Free a solution.
|
|
2522
|
+
*
|
|
2523
|
+
* \param mesh pointer to the mesh structure
|
|
2524
|
+
* \param sol pointer to the solution structure
|
|
2525
|
+
*
|
|
2526
|
+
* \remark Fortran interface:
|
|
2527
|
+
* > SUBROUTINE MMGS_FREE_SOLUTIONS(mesh,sol)\n
|
|
2528
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2529
|
+
* > END SUBROUTINE\n
|
|
2530
|
+
*
|
|
2531
|
+
*/
|
|
2532
|
+
LIBMMGS_EXPORT void MMGS_Free_solutions(MMG5_pMesh mesh,MMG5_pSol sol);
|
|
2533
|
+
|
|
2534
|
+
/**
|
|
2535
|
+
* \brief Clean data (triangles and edges) linked to isosurface.
|
|
2536
|
+
*
|
|
2537
|
+
* \param mesh pointer to mesh structure
|
|
2538
|
+
*
|
|
2539
|
+
* \return 1 if successful, 0 otherwise.
|
|
2540
|
+
*
|
|
2541
|
+
* \remark Fortran interface:
|
|
2542
|
+
* > SUBROUTINE MMGS_CLEAN_ISOSURF(mesh,retval)\n
|
|
2543
|
+
* > MMG5_DATA_PTR_T, INTENT(IN) :: mesh\n
|
|
2544
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2545
|
+
* > END SUBROUTINE\n
|
|
2546
|
+
*
|
|
2547
|
+
*/
|
|
2548
|
+
LIBMMGS_EXPORT int MMGS_Clean_isoSurf(MMG5_pMesh mesh);
|
|
2549
|
+
|
|
2550
|
+
/**
|
|
2551
|
+
* \brief Set common function pointers between mmgs and mmg3d to the matching mmgs
|
|
2552
|
+
* functions.
|
|
2553
|
+
*/
|
|
2554
|
+
LIBMMGS_EXPORT void MMGS_Set_commonFunc(void);
|
|
2555
|
+
|
|
2556
|
+
#ifdef __cplusplus
|
|
2557
|
+
}
|
|
2558
|
+
#endif
|
|
2559
|
+
|
|
2560
|
+
#endif
|