mmgpy 0.1.1__cp39-cp39-macosx_13_0_x86_64.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/mmg2d_O3 +0 -0
- bin/mmg3d_O3 +0 -0
- bin/mmgs_O3 +0 -0
- include/mmg/common/git_log_mmg.h +6 -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/libmmg.5.8.0.dylib +0 -0
- lib/libmmg.5.dylib +0 -0
- lib/libmmg.dylib +0 -0
- lib/libmmg2d.5.8.0.dylib +0 -0
- lib/libmmg2d.5.dylib +0 -0
- lib/libmmg2d.dylib +0 -0
- lib/libmmg3d.5.8.0.dylib +0 -0
- lib/libmmg3d.5.dylib +0 -0
- lib/libmmg3d.dylib +0 -0
- lib/libmmgs.5.8.0.dylib +0 -0
- lib/libmmgs.5.dylib +0 -0
- lib/libmmgs.dylib +0 -0
- mmgpy/__init__.py +14 -0
- mmgpy/_mmgpy.cpython-39-darwin.so +0 -0
- mmgpy/_mmgpy.pyi +29 -0
- mmgpy/_version.py +3 -0
- mmgpy/_version.py.in +3 -0
- mmgpy/lib/libmmg2d.5.8.0.dylib +0 -0
- mmgpy/lib/libmmg2d.5.dylib +0 -0
- mmgpy/lib/libmmg2d.dylib +0 -0
- mmgpy/lib/libmmg3d.5.8.0.dylib +0 -0
- mmgpy/lib/libmmg3d.5.dylib +0 -0
- mmgpy/lib/libmmg3d.dylib +0 -0
- mmgpy/lib/libmmgs.5.8.0.dylib +0 -0
- mmgpy/lib/libmmgs.5.dylib +0 -0
- mmgpy/lib/libmmgs.dylib +0 -0
- mmgpy/py.typed +0 -0
- mmgpy-0.1.1.data/scripts/mmg2d_O3 +0 -0
- mmgpy-0.1.1.data/scripts/mmg3d_O3 +0 -0
- mmgpy-0.1.1.data/scripts/mmgs_O3 +0 -0
- mmgpy-0.1.1.dist-info/METADATA +52 -0
- mmgpy-0.1.1.dist-info/RECORD +63 -0
- mmgpy-0.1.1.dist-info/WHEEL +5 -0
- mmgpy-0.1.1.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,2761 @@
|
|
|
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 mmg2d 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 mmg2d/libmmg2d.h
|
|
51
|
+
* \ingroup API
|
|
52
|
+
* \brief API headers and documentation for the mmg2d library
|
|
53
|
+
* \author Cecile Dobrzynski and Algiane Froehly (Bx INP/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 mmg2d 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 meshing, remeshing,
|
|
61
|
+
* level-set discretization, and Lagrangian motion.
|
|
62
|
+
*
|
|
63
|
+
* Meshes are here defined in terms of vertices and two-dimensional objects:
|
|
64
|
+
* triangles and quadrangles. Edges can also be represented. All of these \a
|
|
65
|
+
* entities can have a \a reference: an integer value that can serve as a group
|
|
66
|
+
* identifier. In addition mesh entities can have \a attributes such as
|
|
67
|
+
* "required" or "corner".
|
|
68
|
+
*
|
|
69
|
+
* Data defined on meshes can be for example functions that are meant for
|
|
70
|
+
* level-set discretization, metric tensors that will govern edge lengths, and
|
|
71
|
+
* vector fields governing lagrangian motion. These data can be scalar, vector,
|
|
72
|
+
* or (symmetric) tensor-valued; and there can be more than one data item
|
|
73
|
+
* associated with a mesh entity. These data are often referred to as \a
|
|
74
|
+
* solutions.
|
|
75
|
+
*
|
|
76
|
+
* Four of the functions here are referred to as "programs", because they
|
|
77
|
+
* perform the tasks for which Mmg is meant: (re)meshing, level-set discretization
|
|
78
|
+
* and Lagrangian motion. The other functions merely serve to load and save data
|
|
79
|
+
* and to perform pre- and post-processing. These programs actually behave much
|
|
80
|
+
* like independent programs: they send diagnostic output to stdout and in rare
|
|
81
|
+
* cases they may call the exit() function.
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
#ifndef MMG2DLIB_H
|
|
86
|
+
#define MMG2DLIB_H
|
|
87
|
+
|
|
88
|
+
#ifdef __cplusplus
|
|
89
|
+
extern "C" {
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
#include "mmg/common/libmmgtypes.h"
|
|
93
|
+
#include "mmg/mmg2d/mmg2d_export.h"
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Maximum array size when storing adjacent vertices (or ball) of a vertex.
|
|
97
|
+
*/
|
|
98
|
+
#define MMG2D_LMAX 1024
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* \enum MMG2D_Param
|
|
102
|
+
* \brief Input parameters for mmg library.
|
|
103
|
+
*
|
|
104
|
+
* These are the input parameters for mmg2d library functions. Options prefixed by \a
|
|
105
|
+
* MMG2D_IPARAM require integer values and options prefixed by \a
|
|
106
|
+
* MMG2D_DPARAM require real values. They can be set with the
|
|
107
|
+
* \ref MMG2D_Set_iparameter and \ref MMG2D_Set_dparameter functions,
|
|
108
|
+
* respectively.
|
|
109
|
+
*
|
|
110
|
+
*/
|
|
111
|
+
enum MMG2D_Param {
|
|
112
|
+
MMG2D_IPARAM_verbose, /*!< [-1..10], Level of verbosity */
|
|
113
|
+
MMG2D_IPARAM_mem, /*!< [n/-1], Max memory size in Mbytes or keep the default value */
|
|
114
|
+
MMG2D_IPARAM_debug, /*!< [1/0], Turn on/off debug mode */
|
|
115
|
+
MMG2D_IPARAM_angle, /*!< [1/0], Turn on/off angle detection */
|
|
116
|
+
MMG2D_IPARAM_iso, /*!< [1/0], Enable level-set discretization */
|
|
117
|
+
MMG2D_IPARAM_isosurf, /*!< [1/0], Enable level-set discretization on the surface part only */
|
|
118
|
+
MMG2D_IPARAM_opnbdy, /*!< [1/0], Preserve edges at the interface of 2 domains with same reference */
|
|
119
|
+
MMG2D_IPARAM_lag, /*!< [-1/0/1/2], Enable Lagrangian motion */
|
|
120
|
+
MMG2D_IPARAM_3dMedit, /*!< [0/1/2], Read/write 2D mesh in 3D (Medit only). out if val=1 in/out if val=2 */
|
|
121
|
+
MMG2D_IPARAM_optim, /*!< [1/0], Optimize mesh keeping its initial edge sizes */
|
|
122
|
+
MMG2D_IPARAM_noinsert, /*!< [1/0], Avoid/allow vertex insertion */
|
|
123
|
+
MMG2D_IPARAM_noswap, /*!< [1/0], Avoid/allow edge or face flipping */
|
|
124
|
+
MMG2D_IPARAM_nomove, /*!< [1/0], Avoid/allow vertex relocation */
|
|
125
|
+
MMG2D_IPARAM_nosurf, /*!< [1/0], Avoid/allow surface modifications */
|
|
126
|
+
MMG2D_IPARAM_nreg, /*!< [0/1], Enable normal regularization */
|
|
127
|
+
MMG2D_IPARAM_xreg, /*!< [0/1], Enable regularization by moving vertices */
|
|
128
|
+
MMG2D_IPARAM_numsubdomain, /*!< [0/n], Save only the subdomain n (0==all subdomains) */
|
|
129
|
+
MMG2D_IPARAM_numberOfLocalParam,/*!< [n], Number of local parameters */
|
|
130
|
+
MMG2D_IPARAM_numberOfLSBaseReferences, /*!< [n], Number of base references for bubble removal */
|
|
131
|
+
MMG2D_IPARAM_numberOfMat, /*!< [n], Number of materials in level-set mode */
|
|
132
|
+
MMG2D_IPARAM_anisosize, /*!< [1/0], Turn on/off anisotropic metric creation when no metric is provided */
|
|
133
|
+
MMG2D_IPARAM_nosizreq, /*!< [0/1], Allow/avoid overwriting of sizes at required vertices (advanced usage) */
|
|
134
|
+
MMG2D_DPARAM_angleDetection, /*!< [val], Threshold for angle detection */
|
|
135
|
+
MMG2D_DPARAM_hmin, /*!< [val], Minimal edge length */
|
|
136
|
+
MMG2D_DPARAM_hmax, /*!< [val], Maximal edge length */
|
|
137
|
+
MMG2D_DPARAM_hsiz, /*!< [val], Constant edge length */
|
|
138
|
+
MMG2D_DPARAM_hausd, /*!< [val], Global Hausdorff distance (on all the boundary surfaces of the mesh) */
|
|
139
|
+
MMG2D_DPARAM_hgrad, /*!< [val], Global gradation */
|
|
140
|
+
MMG2D_DPARAM_hgradreq, /*!< [val], Global gradation on required entites (advanced usage) */
|
|
141
|
+
MMG2D_DPARAM_ls, /*!< [val], Function value where the level set is to be discretized */
|
|
142
|
+
MMG2D_DPARAM_xreg, /*!< [val], Relaxation parameter for coordinate regularization (0<val<1) */
|
|
143
|
+
MMG2D_DPARAM_rmc, /*!< [-1/val], Remove small disconnected components in level-set mode */
|
|
144
|
+
MMG2D_IPARAM_nofem, /*!< [1/0], Do not attempt to make the mesh suitable for finite-element computations */
|
|
145
|
+
MMG2D_IPARAM_isoref, /*!< [0/n], Iso-surface boundary material reference */
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
/*----------------------------- function headers -----------------------------*/
|
|
149
|
+
/* Initialization functions */
|
|
150
|
+
/* init structures */
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* \brief Initialize a mesh structure and optionally the associated solution and
|
|
154
|
+
* metric structures.
|
|
155
|
+
*
|
|
156
|
+
* \param starter dummy argument used to initialize the variadic argument list
|
|
157
|
+
* \param ... variadic arguments.
|
|
158
|
+
*
|
|
159
|
+
* \return 1 on success, 0 on failure
|
|
160
|
+
*
|
|
161
|
+
* For the MMG2D_mmgslib function, you need
|
|
162
|
+
* to call the \ref MMG2D_Init_mesh function with the following arguments :
|
|
163
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppMet,
|
|
164
|
+
* &your_metric,MMG5_ARG_end).
|
|
165
|
+
*
|
|
166
|
+
* For the \ref MMG2D_mmgsls function, you need
|
|
167
|
+
* to call the \a MMG2D_Init_mesh function with the following arguments :
|
|
168
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
169
|
+
* &your_level_set,MMG5_ARG_end).
|
|
170
|
+
*
|
|
171
|
+
* Here, \a your_mesh is a \ref MMG5_pMesh, \a your_metric and \a your_level_set
|
|
172
|
+
* are \ref MMG5_pSol.
|
|
173
|
+
*
|
|
174
|
+
* \remark No fortran interface, to allow variadic arguments.
|
|
175
|
+
*
|
|
176
|
+
*/
|
|
177
|
+
LIBMMG2D_EXPORT int MMG2D_Init_mesh(const int starter,...);
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* \param mesh pointer to the mesh structure.
|
|
181
|
+
* \param sol pointer to the sol structure.
|
|
182
|
+
*
|
|
183
|
+
* \brief Initialize file names to their default values.
|
|
184
|
+
*
|
|
185
|
+
* \remark Fortran interface:
|
|
186
|
+
* > SUBROUTINE MMG2D_INIT_FILENAMES(mesh,sol)\n
|
|
187
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
188
|
+
* > END SUBROUTINE\n
|
|
189
|
+
*
|
|
190
|
+
*/
|
|
191
|
+
LIBMMG2D_EXPORT void MMG2D_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol);
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* \param mesh pointer to the mesh structure.
|
|
195
|
+
*
|
|
196
|
+
* \brief Initialize the input parameters (stored in the Info structure).
|
|
197
|
+
*
|
|
198
|
+
* \remark Fortran interface:
|
|
199
|
+
* > SUBROUTINE MMG2D_INIT_PARAMETERS(mesh)\n
|
|
200
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
201
|
+
* > END SUBROUTINE\n
|
|
202
|
+
*
|
|
203
|
+
*/
|
|
204
|
+
LIBMMG2D_EXPORT void MMG2D_Init_parameters(MMG5_pMesh mesh);
|
|
205
|
+
|
|
206
|
+
/* init file names */
|
|
207
|
+
/**
|
|
208
|
+
* \param mesh pointer to the mesh structure.
|
|
209
|
+
* \param meshin input mesh name.
|
|
210
|
+
* \return 1.
|
|
211
|
+
*
|
|
212
|
+
* \brief Set the name of the input mesh.
|
|
213
|
+
*
|
|
214
|
+
* \remark Fortran interface:
|
|
215
|
+
* > SUBROUTINE MMG2D_SET_INPUTMESHNAME(mesh,meshin,strlen0,retval)\n
|
|
216
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
217
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: meshin\n
|
|
218
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
219
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
220
|
+
* > END SUBROUTINE\n
|
|
221
|
+
*
|
|
222
|
+
*/
|
|
223
|
+
LIBMMG2D_EXPORT int MMG2D_Set_inputMeshName(MMG5_pMesh mesh, const char* meshin);
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* \param mesh pointer to the mesh structure.
|
|
227
|
+
* \param meshout name of the output mesh file.
|
|
228
|
+
* \return 1.
|
|
229
|
+
*
|
|
230
|
+
* \brief Set the name of the output mesh file.
|
|
231
|
+
*
|
|
232
|
+
* \remark Fortran interface:
|
|
233
|
+
* > SUBROUTINE MMG2D_SET_OUTPUTMESHNAME(mesh,meshout,strlen0,retval)\n
|
|
234
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
235
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: meshout\n
|
|
236
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
237
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
238
|
+
* > END SUBROUTINE\n
|
|
239
|
+
*
|
|
240
|
+
*/
|
|
241
|
+
LIBMMG2D_EXPORT int MMG2D_Set_outputMeshName(MMG5_pMesh mesh, const char* meshout);
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* \param mesh pointer to the mesh structure.
|
|
245
|
+
* \param sol pointer to the sol structure.
|
|
246
|
+
* \param solin name of the input solution file.
|
|
247
|
+
* \return 1.
|
|
248
|
+
*
|
|
249
|
+
* \brief Set the name of the input solution file.
|
|
250
|
+
*
|
|
251
|
+
* \remark Fortran interface:
|
|
252
|
+
* > SUBROUTINE MMG2D_SET_INPUTSOLNAME(mesh,sol,solin,strlen0,retval)\n
|
|
253
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
254
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: solin\n
|
|
255
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
256
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
257
|
+
* > END SUBROUTINE\n
|
|
258
|
+
*
|
|
259
|
+
*/
|
|
260
|
+
LIBMMG2D_EXPORT int MMG2D_Set_inputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solin);
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* \param mesh pointer to the mesh structure.
|
|
264
|
+
* \param sol pointer to the sol structure.
|
|
265
|
+
* \param solout name of the output solution file.
|
|
266
|
+
* \return 0 on failure, 1 otherwise.
|
|
267
|
+
*
|
|
268
|
+
* \brief Set the name of the output solution file.
|
|
269
|
+
*
|
|
270
|
+
* \remark Fortran interface:
|
|
271
|
+
* > SUBROUTINE MMG2D_SET_OUTPUTSOLNAME(mesh,sol,solout,strlen0,retval)\n
|
|
272
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
273
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: solout\n
|
|
274
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
275
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
276
|
+
* > END SUBROUTINE\n
|
|
277
|
+
*
|
|
278
|
+
*/
|
|
279
|
+
LIBMMG2D_EXPORT int MMG2D_Set_outputSolName(MMG5_pMesh mesh,MMG5_pSol sol, const char* solout);
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* \param mesh pointer to the mesh structure.
|
|
283
|
+
* \param fparamin name of the input parameter file.
|
|
284
|
+
* \return 1.
|
|
285
|
+
*
|
|
286
|
+
* \brief Set the name of the input parameter file.
|
|
287
|
+
*
|
|
288
|
+
* \remark Fortran interface:
|
|
289
|
+
* > SUBROUTINE MMG2D_SET_INPUTPARAMNAME(mesh,fparamin,strlen0,retval)\n
|
|
290
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
291
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: fparamin\n
|
|
292
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
293
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
294
|
+
* > END SUBROUTINE\n
|
|
295
|
+
*
|
|
296
|
+
*/
|
|
297
|
+
LIBMMG2D_EXPORT int MMG2D_Set_inputParamName(MMG5_pMesh mesh, const char* fparamin);
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* \param mesh pointer to the mesh structure.
|
|
301
|
+
* \param sol pointer to the sol structure (unused).
|
|
302
|
+
* \param iparam integer parameter to set (see \a MMG2D_Param structure).
|
|
303
|
+
* \param val value for the parameter.
|
|
304
|
+
* \return 0 on failure, 1 otherwise.
|
|
305
|
+
*
|
|
306
|
+
* \brief Set integer parameter \a iparam to value \a val.
|
|
307
|
+
*
|
|
308
|
+
* \remark Fortran interface:
|
|
309
|
+
* > SUBROUTINE MMG2D_SET_IPARAMETER(mesh,sol,iparam,val,retval)\n
|
|
310
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
311
|
+
* > MMG5_DATA_PTR_T :: sol\n
|
|
312
|
+
* > INTEGER, INTENT(IN) :: iparam\n
|
|
313
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: val\n
|
|
314
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
315
|
+
* > END SUBROUTINE\n
|
|
316
|
+
*
|
|
317
|
+
*/
|
|
318
|
+
LIBMMG2D_EXPORT int MMG2D_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, MMG5_int val);
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* \param mesh pointer to the mesh structure.
|
|
322
|
+
* \param sol pointer to the sol structure.
|
|
323
|
+
* \param dparam double parameter to set (see \a MMG2D_Param structure).
|
|
324
|
+
* \param val value of the parameter.
|
|
325
|
+
* \return 0 on failure, 1 otherwise.
|
|
326
|
+
*
|
|
327
|
+
* \brief Set double parameter \a dparam to value \a val.
|
|
328
|
+
*
|
|
329
|
+
* \remark Fortran interface:
|
|
330
|
+
* > SUBROUTINE MMG2D_SET_DPARAMETER(mesh,sol,dparam,val,retval)\n
|
|
331
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
332
|
+
* > MMG5_DATA_PTR_T :: sol\n
|
|
333
|
+
* > INTEGER, INTENT(IN) :: dparam\n
|
|
334
|
+
* > REAL(KIND=8), INTENT(IN) :: val\n
|
|
335
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
336
|
+
* > END SUBROUTINE\n
|
|
337
|
+
*
|
|
338
|
+
*/
|
|
339
|
+
LIBMMG2D_EXPORT int MMG2D_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val);
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* \brief Set local parameters.
|
|
343
|
+
*
|
|
344
|
+
* \param mesh pointer to the mesh structure.
|
|
345
|
+
* \param sol pointer to the sol structure.
|
|
346
|
+
* \param typ type of entity (triangle, edge,...).
|
|
347
|
+
* \param ref reference of the entity.
|
|
348
|
+
* \param hmin minimal edge size.
|
|
349
|
+
* \param hmax maximal edge size.
|
|
350
|
+
* \param hausd value of the Hausdorff number.
|
|
351
|
+
* \return 0 on failure, 1 otherwise.
|
|
352
|
+
*
|
|
353
|
+
* Set local parameters: set the Hausdorff distance, minimal desired edge
|
|
354
|
+
* length, and maximal desired edge length for all entities of type \a typ and
|
|
355
|
+
* reference \a ref.
|
|
356
|
+
*
|
|
357
|
+
* \remark Fortran interface:
|
|
358
|
+
* > SUBROUTINE MMG2D_SET_LOCALPARAMETER(mesh,sol,typ,ref,& \n
|
|
359
|
+
* > hmin,hmax,hausd,retval)\n
|
|
360
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
361
|
+
* > INTEGER, INTENT(IN) :: typ\n
|
|
362
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: ref\n
|
|
363
|
+
* > REAL(KIND=8), INTENT(IN) :: hmin,hmax,hausd\n
|
|
364
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
365
|
+
* > END SUBROUTINE\n
|
|
366
|
+
*
|
|
367
|
+
*/
|
|
368
|
+
LIBMMG2D_EXPORT int MMG2D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ,
|
|
369
|
+
MMG5_int ref,double hmin,double hmax,double hausd);
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* \param mesh pointer to the mesh structure.
|
|
373
|
+
* \param sol pointer to the sol structure.
|
|
374
|
+
* \param ref input tetra reference.
|
|
375
|
+
* \param split \ref MMG5_MMAT_NoSplit if the entity must not be split, \ref MMG5_MMAT_Split otherwise
|
|
376
|
+
* \param rmin reference for the negative side after LS discretization
|
|
377
|
+
* \param rplus reference for the positive side after LS discretization
|
|
378
|
+
* \return 0 on failure, 1 otherwise.
|
|
379
|
+
*
|
|
380
|
+
* \brief Set the reference mapping for the elements of ref \a ref in LS discretization mode.
|
|
381
|
+
*
|
|
382
|
+
* \remark Fortran interface:
|
|
383
|
+
* > SUBROUTINE MMG2D_SET_MULTIMAT(mesh,sol,ref,split,rmin,rplus,retval)\n
|
|
384
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
385
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: ref,rmin,rplus\n
|
|
386
|
+
* > INTEGER, INTENT(IN) :: split\n
|
|
387
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
388
|
+
* > END SUBROUTINE\n
|
|
389
|
+
*
|
|
390
|
+
* With this function you can determine which references will be given to the
|
|
391
|
+
* triangles on both sides of the level set, after discretization. Negative and
|
|
392
|
+
* positive here refer to areas where the function is smaller or larger,
|
|
393
|
+
* respectively, than the isovalue of the level set.
|
|
394
|
+
*/
|
|
395
|
+
LIBMMG2D_EXPORT int MMG2D_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int ref,int split,
|
|
396
|
+
MMG5_int rmin, MMG5_int rplus);
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* \brief Set level-set base reference.
|
|
400
|
+
*
|
|
401
|
+
* \param mesh pointer to the mesh structure.
|
|
402
|
+
* \param sol pointer to the sol structure.
|
|
403
|
+
* \param br new level-set base reference.
|
|
404
|
+
* \return 0 on failure, 1 otherwise.
|
|
405
|
+
*
|
|
406
|
+
* Set a new level-set base reference of ref \a br in ls discretization
|
|
407
|
+
* mode. Based references are boundary conditions to which implicit domain can
|
|
408
|
+
* be attached. All implicit volumes that are not attached to listed base
|
|
409
|
+
* references are deleted as spurious volumes by the \a rmc option.
|
|
410
|
+
*
|
|
411
|
+
* \remark Fortran interface:
|
|
412
|
+
* > SUBROUTINE MMG2D_SET_LSBASEREFERENCE(mesh,sol,br,retval)\n
|
|
413
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
414
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: br\n
|
|
415
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
416
|
+
* > END SUBROUTINE\n
|
|
417
|
+
*
|
|
418
|
+
*/
|
|
419
|
+
LIBMMG2D_EXPORT int MMG2D_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol,MMG5_int br);
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
/* init structure datas */
|
|
423
|
+
/**
|
|
424
|
+
* \brief Set the numbers of entities in the mesh.
|
|
425
|
+
*
|
|
426
|
+
* \param mesh pointer to the mesh structure.
|
|
427
|
+
* \param np number of vertices.
|
|
428
|
+
* \param nt number of triangles.
|
|
429
|
+
* \param nquad number of quads.
|
|
430
|
+
* \param na number of edges.
|
|
431
|
+
* \return 0 on failure, 1 otherwise.
|
|
432
|
+
*
|
|
433
|
+
* Set the number of vertices, triangles, quadrangles and edges of the
|
|
434
|
+
* mesh and allocate the associated tables. If call twice, reset the
|
|
435
|
+
* whole mesh to realloc it at the new size
|
|
436
|
+
*
|
|
437
|
+
* \remark Fortran interface:
|
|
438
|
+
* > SUBROUTINE MMG2D_SET_MESHSIZE(mesh,np,nt,nquad,na,retval)\n
|
|
439
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
440
|
+
* > INTEGER(MMG5F_INT) :: np,nt,nquad,na\n
|
|
441
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
442
|
+
* > END SUBROUTINE\n
|
|
443
|
+
*
|
|
444
|
+
*/
|
|
445
|
+
LIBMMG2D_EXPORT int MMG2D_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int nt, MMG5_int nquad, MMG5_int na);
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* \brief Set the size and type of a solution field.
|
|
449
|
+
*
|
|
450
|
+
* \param mesh pointer to the mesh structure.
|
|
451
|
+
* \param sol pointer to the sol structure.
|
|
452
|
+
* \param typEntity type of solutions entities (vertices, triangles, ...,
|
|
453
|
+
* see \ref MMG5_entities for possible values).
|
|
454
|
+
* \param np number of solutions.
|
|
455
|
+
* \param typSol type of solution (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
456
|
+
* \return 0 on failure, 1 otherwise.
|
|
457
|
+
*
|
|
458
|
+
* Initialize an array of solution field: set dimension, types and number of
|
|
459
|
+
* data.
|
|
460
|
+
* To use to initialize an array of solution fields (not used by Mmg itself).
|
|
461
|
+
*
|
|
462
|
+
* \remark Fortran interface:
|
|
463
|
+
* > SUBROUTINE MMG2D_SET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)\n
|
|
464
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
465
|
+
* > INTEGER, INTENT(IN) :: typEntity\n
|
|
466
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: np\n
|
|
467
|
+
* > INTEGER, INTENT(IN) :: typSol\n
|
|
468
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
469
|
+
* > END SUBROUTINE\n
|
|
470
|
+
*
|
|
471
|
+
*/
|
|
472
|
+
LIBMMG2D_EXPORT int MMG2D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity,
|
|
473
|
+
MMG5_int np, int typSol);
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* \brief Initialize an array of solutions field defined at vertices
|
|
477
|
+
*
|
|
478
|
+
* \param mesh pointer to the mesh structure.
|
|
479
|
+
* \param sol pointer to an allocatable sol structure.
|
|
480
|
+
* \param nsols number of solutions per entity
|
|
481
|
+
* \param nentities number of entities
|
|
482
|
+
* \param typSol Array of size nsol listing the type of the solutions
|
|
483
|
+
* (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
484
|
+
* \return 0 on failure, 1 otherwise.
|
|
485
|
+
*
|
|
486
|
+
* Initialize an array of solutions field defined at vertices: set dimension,
|
|
487
|
+
* types and number of data.
|
|
488
|
+
* To use to initialize an array of solution fields (not used by Mmg itself).
|
|
489
|
+
*
|
|
490
|
+
*
|
|
491
|
+
* \remark Fortran interface:
|
|
492
|
+
* > SUBROUTINE MMG2D_SET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)\n
|
|
493
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
494
|
+
* > INTEGER, INTENT(IN) :: nsols\n
|
|
495
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: nentities\n
|
|
496
|
+
* > INTEGER, INTENT(IN) :: typSol(*)\n
|
|
497
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
498
|
+
* > END SUBROUTINE\n
|
|
499
|
+
*
|
|
500
|
+
*/
|
|
501
|
+
LIBMMG2D_EXPORT int MMG2D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol,int nsols,
|
|
502
|
+
MMG5_int nentities, int *typSol);
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* \brief Set the coordinates and reference of a single vertex.
|
|
506
|
+
*
|
|
507
|
+
* \param mesh pointer to the mesh structure.
|
|
508
|
+
* \param c0 coordinate of the vertex along the first dimension.
|
|
509
|
+
* \param c1 coordinate of the vertex along the second dimension.
|
|
510
|
+
* \param ref vertex reference.
|
|
511
|
+
* \param pos position of the vertex in the mesh.
|
|
512
|
+
* \return 1 on success, 0 in case of failure
|
|
513
|
+
*
|
|
514
|
+
* Set vertex of coordinates \a c0, \a c1 and reference \a ref
|
|
515
|
+
* at position \a pos in mesh structure (from 1 to nb_vertices included).
|
|
516
|
+
*
|
|
517
|
+
* \remark Fortran interface:
|
|
518
|
+
* > SUBROUTINE MMG2D_SET_VERTEX(mesh,c0,c1,ref,pos,retval)\n
|
|
519
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
520
|
+
* > REAL(KIND=8), INTENT(IN) :: c0,c1\n
|
|
521
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: ref,pos\n
|
|
522
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
523
|
+
* > END SUBROUTINE\n
|
|
524
|
+
*
|
|
525
|
+
*/
|
|
526
|
+
LIBMMG2D_EXPORT int MMG2D_Set_vertex(MMG5_pMesh mesh, double c0, double c1,
|
|
527
|
+
MMG5_int ref,MMG5_int pos);
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* \brief Set the coordinates and references of all vertices in the mesh.
|
|
531
|
+
*
|
|
532
|
+
* \param mesh pointer to the mesh structure.
|
|
533
|
+
* \param vertices array of vertex coordinates in the order \f$[x_1, y_1, x_2, \ldots, y_N]\f$
|
|
534
|
+
* \param refs array of vertex references \f$[r_1, r_2, \ldots, r_N]\f$
|
|
535
|
+
* \return 1.
|
|
536
|
+
*
|
|
537
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
538
|
+
* instead of the refs array)
|
|
539
|
+
*
|
|
540
|
+
* > ! SUBROUTINE MMG2D_SET_VERTICES(mesh,vertices,refs,retval)\n
|
|
541
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
542
|
+
* > ! REAL(KIND=8), DIMENSION(*),INTENT(IN) :: vertices\n
|
|
543
|
+
* > ! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN):: refs\n
|
|
544
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
545
|
+
* > ! END SUBROUTINE\n
|
|
546
|
+
*
|
|
547
|
+
*/
|
|
548
|
+
LIBMMG2D_EXPORT int MMG2D_Set_vertices(MMG5_pMesh mesh, double *vertices,MMG5_int *refs);
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* \brief Assign the "corner" attribute to a vertex.
|
|
552
|
+
*
|
|
553
|
+
* \param mesh pointer to the mesh structure.
|
|
554
|
+
* \param k vertex index.
|
|
555
|
+
* \return 1.
|
|
556
|
+
*
|
|
557
|
+
* Set the "corner" attribute at vertex \a k. This affects how the vertex is
|
|
558
|
+
* treated during remeshing.
|
|
559
|
+
*
|
|
560
|
+
* \remark Fortran interface
|
|
561
|
+
*
|
|
562
|
+
* > SUBROUTINE MMG2D_SET_CORNER(mesh,k,retval)\n
|
|
563
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
564
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
565
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
566
|
+
* > END SUBROUTINE\n
|
|
567
|
+
*
|
|
568
|
+
*/
|
|
569
|
+
LIBMMG2D_EXPORT int MMG2D_Set_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* \brief Remove the "corner" attribute from a vertex.
|
|
573
|
+
*
|
|
574
|
+
* \param mesh pointer to the mesh structure.
|
|
575
|
+
* \param k vertex index.
|
|
576
|
+
* \return 1.
|
|
577
|
+
*
|
|
578
|
+
* Remove corner attribute from vertex \a k (from 1 to the number of vertices
|
|
579
|
+
* included).
|
|
580
|
+
*
|
|
581
|
+
* \remark Fortran interface
|
|
582
|
+
*
|
|
583
|
+
* > SUBROUTINE MMG2D_UNSET_CORNER(mesh,k,retval)\n
|
|
584
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
585
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
586
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
587
|
+
* > END SUBROUTINE\n
|
|
588
|
+
*
|
|
589
|
+
*/
|
|
590
|
+
LIBMMG2D_EXPORT int MMG2D_Unset_corner(MMG5_pMesh mesh, MMG5_int k);
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* \brief Assign the "required" attribute to a vertex.
|
|
594
|
+
*
|
|
595
|
+
* \param mesh pointer to the mesh structure.
|
|
596
|
+
* \param k vertex index.
|
|
597
|
+
* \return 1.
|
|
598
|
+
*
|
|
599
|
+
* Set vertex \a k as required (\a k from 1 to the number of vertices
|
|
600
|
+
* included). This prevents the remesher from moving the vertex.
|
|
601
|
+
*
|
|
602
|
+
* \remark Fortran interface:
|
|
603
|
+
* > SUBROUTINE MMG2D_SET_REQUIREDVERTEX(mesh,k,retval)\n
|
|
604
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
605
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
606
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
607
|
+
* > END SUBROUTINE\n
|
|
608
|
+
*
|
|
609
|
+
*/
|
|
610
|
+
LIBMMG2D_EXPORT int MMG2D_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* \brief Remove the "required" attribute from a vertex.
|
|
614
|
+
*
|
|
615
|
+
* \param mesh pointer to the mesh structure.
|
|
616
|
+
* \param k vertex index.
|
|
617
|
+
* \return 1.
|
|
618
|
+
*
|
|
619
|
+
* This function removes the "required" attribute from vertex \a k.
|
|
620
|
+
*
|
|
621
|
+
* \remark Fortran interface:
|
|
622
|
+
* > SUBROUTINE MMG2D_UNSET_REQUIREDVERTEX(mesh,k,retval)\n
|
|
623
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
624
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
625
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
626
|
+
* > END SUBROUTINE\n
|
|
627
|
+
*
|
|
628
|
+
*/
|
|
629
|
+
LIBMMG2D_EXPORT int MMG2D_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k);
|
|
630
|
+
|
|
631
|
+
/**
|
|
632
|
+
* \brief Set the vertices and reference of a single triangle in a mesh.
|
|
633
|
+
*
|
|
634
|
+
* \param mesh pointer to the mesh structure.
|
|
635
|
+
* \param v0 first vertex of triangle.
|
|
636
|
+
* \param v1 second vertex of triangle.
|
|
637
|
+
* \param v2 third vertex of triangle.
|
|
638
|
+
* \param ref triangle reference.
|
|
639
|
+
* \param pos triangle position in the mesh.
|
|
640
|
+
* \return 0 on failure, 1 otherwise.
|
|
641
|
+
*
|
|
642
|
+
* This function defines a triangle with vertices \a v0, \a v1, \a v2 and
|
|
643
|
+
* reference \a ref at position \a pos in mesh structure (from 1 to the number
|
|
644
|
+
* of triangles included).
|
|
645
|
+
*
|
|
646
|
+
* \remark Fortran interface:
|
|
647
|
+
* > SUBROUTINE MMG2D_SET_TRIANGLE(mesh,v0,v1,v2,ref,pos,retval)\n
|
|
648
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
649
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,ref,pos\n
|
|
650
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
651
|
+
* > END SUBROUTINE\n
|
|
652
|
+
*
|
|
653
|
+
*/
|
|
654
|
+
LIBMMG2D_EXPORT int MMG2D_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
655
|
+
MMG5_int v2, MMG5_int ref, MMG5_int pos);
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* \brief Set the vertices and references of all triangles in a mesh.
|
|
659
|
+
*
|
|
660
|
+
* \param mesh pointer to the mesh structure.
|
|
661
|
+
* \param tria pointer to the array of the triangle's vertices.
|
|
662
|
+
* The vertices of the \f$i^{th}\f$ tria are stored in tria[(i-1)*3]\@3.
|
|
663
|
+
* \param refs pointer to the array of the triangle references.
|
|
664
|
+
* refs[i-1] is the ref of the \f$i^{th}\f$ tria.
|
|
665
|
+
* \return 0 on failure, 1 otherwise.
|
|
666
|
+
*
|
|
667
|
+
* This function sets the vertices and references of all triangles in a mesh.
|
|
668
|
+
*
|
|
669
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
670
|
+
* instead of the refs array)
|
|
671
|
+
* > ! SUBROUTINE MMG2D_SET_TRIANGLES(mesh,tria,refs,retval)\n
|
|
672
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
673
|
+
* > ! INTEGER(MMG5F_INT),DIMENSION(*), INTENT(IN) :: tria,refs\n
|
|
674
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
675
|
+
* > ! END SUBROUTINE\n
|
|
676
|
+
*
|
|
677
|
+
*/
|
|
678
|
+
LIBMMG2D_EXPORT int MMG2D_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs);
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* \param mesh pointer to the mesh structure.
|
|
682
|
+
* \param k triangle index.
|
|
683
|
+
* \return 1.
|
|
684
|
+
*
|
|
685
|
+
* \brief Give triangle \a k the "required" attribute.
|
|
686
|
+
*
|
|
687
|
+
* \remark Fortran interface:
|
|
688
|
+
* > SUBROUTINE MMG2D_SET_REQUIREDTRIANGLE(mesh,k,retval)\n
|
|
689
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
690
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
691
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
692
|
+
* > END SUBROUTINE\n
|
|
693
|
+
*
|
|
694
|
+
*/
|
|
695
|
+
LIBMMG2D_EXPORT int MMG2D_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* \param mesh pointer to the mesh structure.
|
|
699
|
+
* \param k triangle index.
|
|
700
|
+
* \return 1.
|
|
701
|
+
*
|
|
702
|
+
* \brief Remove the "required" attribute from triangle \a k.
|
|
703
|
+
*
|
|
704
|
+
* \remark Fortran interface:
|
|
705
|
+
* > SUBROUTINE MMG2D_UNSET_REQUIREDTRIANGLE(mesh,k,retval)\n
|
|
706
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
707
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
708
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
709
|
+
* > END SUBROUTINE\n
|
|
710
|
+
*
|
|
711
|
+
*/
|
|
712
|
+
LIBMMG2D_EXPORT int MMG2D_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k);
|
|
713
|
+
|
|
714
|
+
/**
|
|
715
|
+
* \brief Set the vertices and reference of a single quadrangle in a mesh.
|
|
716
|
+
*
|
|
717
|
+
* \param mesh pointer to the mesh structure.
|
|
718
|
+
* \param v0 first vertex of quadrangle.
|
|
719
|
+
* \param v1 second vertex of quadrangle.
|
|
720
|
+
* \param v2 third vertex of quadrangle.
|
|
721
|
+
* \param v3 fourth vertex of quadrangle.
|
|
722
|
+
* \param ref quadrangle reference.
|
|
723
|
+
* \param pos quadrangle position in the mesh.
|
|
724
|
+
* \return 0 on failure, 1 otherwise.
|
|
725
|
+
*
|
|
726
|
+
* Define a quadrangle with vertices \a v0, \a v1,\a v2,\a v3 and reference
|
|
727
|
+
* \a ref at position \a pos in mesh structure (from 1 to nb_quad included).
|
|
728
|
+
*
|
|
729
|
+
* \remark Fortran interface:
|
|
730
|
+
* > SUBROUTINE MMG2D_SET_QUADRILATERAL(mesh,v0,v1,v2,v3,ref,pos,retval)\n
|
|
731
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
732
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: v0,v1,v2,v3,ref,pos\n
|
|
733
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
734
|
+
* > END SUBROUTINE\n
|
|
735
|
+
*
|
|
736
|
+
*/
|
|
737
|
+
LIBMMG2D_EXPORT int MMG2D_Set_quadrilateral(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1,
|
|
738
|
+
MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos);
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* \brief Set the vertices and references of all quadrangles in a mesh.
|
|
742
|
+
*
|
|
743
|
+
* \param mesh pointer to the mesh structure.
|
|
744
|
+
* \param quadra vertices of the quadrangles of the mesh
|
|
745
|
+
* Vertices of the \f$i^{th}\f$ quadrangle are stored in quadra[(i-1)*4]\@4.
|
|
746
|
+
* \param refs array of references.
|
|
747
|
+
* The reference of the \f$i^{th}\f$ quadrangle is stored in refs[i-1].
|
|
748
|
+
* \return 0 on failure, 1 otherwise.
|
|
749
|
+
*
|
|
750
|
+
* \remark Fortran interface: (commentated in
|
|
751
|
+
* order to allow to pass \%val(0) instead of the refs array)
|
|
752
|
+
*
|
|
753
|
+
* > ! SUBROUTINE MMG2D_SET_QUADRILATERALS(mesh,quadra,refs,retval)\n
|
|
754
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
755
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*), INTENT(IN) :: quadra,refs\n
|
|
756
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
757
|
+
* > ! END SUBROUTINE\n
|
|
758
|
+
*
|
|
759
|
+
*/
|
|
760
|
+
LIBMMG2D_EXPORT int MMG2D_Set_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quadra,
|
|
761
|
+
MMG5_int *refs);
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* \brief Define a single edge.
|
|
765
|
+
*
|
|
766
|
+
* \param mesh pointer to the mesh structure.
|
|
767
|
+
* \param v0 first vertex of edge.
|
|
768
|
+
* \param v1 second vertex of edge.
|
|
769
|
+
* \param ref edge reference.
|
|
770
|
+
* \param pos edge position in the mesh.
|
|
771
|
+
* \return 0 on failure, 1 otherwise.
|
|
772
|
+
*
|
|
773
|
+
* Define an edge with vertices \a v0, \a v1 and reference \a ref at position \a
|
|
774
|
+
* pos in the mesh structure (\a pos from 1 to the number of edges included).
|
|
775
|
+
*
|
|
776
|
+
* \remark Fortran interface:
|
|
777
|
+
* > SUBROUTINE MMG2D_SET_EDGE(mesh,v0,v1,ref,pos,retval)\n
|
|
778
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
779
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: v0,v1\n
|
|
780
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos,ref\n
|
|
781
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
782
|
+
* > END SUBROUTINE\n
|
|
783
|
+
*
|
|
784
|
+
*/
|
|
785
|
+
LIBMMG2D_EXPORT int MMG2D_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref, MMG5_int pos);
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* \brief Set the vertices and references of all edges in a mesh.
|
|
789
|
+
*
|
|
790
|
+
* \param mesh pointer to the mesh structure.
|
|
791
|
+
* \param edges pointer to the array of edges.
|
|
792
|
+
* Vertices of the \f$i^{th}\f$ edge are stored in edge[(i-1)*2]\@2.
|
|
793
|
+
* \param refs edges references. refs[i-1] is the ref of the \f$i^{th}\f$ edge.
|
|
794
|
+
* \return 0 on failure, 1 otherwise.
|
|
795
|
+
*
|
|
796
|
+
* \remark Fortran interface:
|
|
797
|
+
* > SUBROUTINE MMG2D_SET_EDGES(mesh,edges,refs,retval)\n
|
|
798
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
799
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: edges(*),refs(*)\n
|
|
800
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
801
|
+
* > END SUBROUTINE\n
|
|
802
|
+
*
|
|
803
|
+
*/
|
|
804
|
+
LIBMMG2D_EXPORT int MMG2D_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int* refs);
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* \param mesh pointer to the mesh structure.
|
|
808
|
+
* \param k edge index.
|
|
809
|
+
* \return 1.
|
|
810
|
+
*
|
|
811
|
+
* \brief Give edge \a k the "required" attribute.
|
|
812
|
+
*
|
|
813
|
+
* \remark Fortran interface:
|
|
814
|
+
* > SUBROUTINE MMG2D_SET_REQUIREDEDGE(mesh,k,retval)\n
|
|
815
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
816
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
817
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
818
|
+
* > END SUBROUTINE\n
|
|
819
|
+
*
|
|
820
|
+
*/
|
|
821
|
+
LIBMMG2D_EXPORT int MMG2D_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
822
|
+
|
|
823
|
+
/**
|
|
824
|
+
* \brief Remove the "required" attribute from edge \a k.
|
|
825
|
+
*
|
|
826
|
+
* \param mesh pointer to the mesh structure.
|
|
827
|
+
* \param k edge index.
|
|
828
|
+
* \return 1.
|
|
829
|
+
*
|
|
830
|
+
* \remark Fortran interface:
|
|
831
|
+
* > SUBROUTINE MMG2D_UNSET_REQUIREDEDGE(mesh,k,retval)\n
|
|
832
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
833
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
834
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
835
|
+
* > END SUBROUTINE\n
|
|
836
|
+
*
|
|
837
|
+
*/
|
|
838
|
+
LIBMMG2D_EXPORT int MMG2D_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* \brief Give edge \a k the "parallel" attribute.
|
|
842
|
+
*
|
|
843
|
+
* \param mesh pointer to the mesh structure.
|
|
844
|
+
* \param k edge index.
|
|
845
|
+
* \return 1.
|
|
846
|
+
*
|
|
847
|
+
* \remark Fortran interface:
|
|
848
|
+
* > SUBROUTINE MMG2D_SET_PARALLELEDGE(mesh,k,retval)\n
|
|
849
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
850
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
851
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
852
|
+
* > END SUBROUTINE\n
|
|
853
|
+
*
|
|
854
|
+
*/
|
|
855
|
+
LIBMMG2D_EXPORT int MMG2D_Set_parallelEdge(MMG5_pMesh mesh, MMG5_int k);
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* \brief Set a single value of a sol structure.
|
|
859
|
+
*
|
|
860
|
+
* \param met pointer to the sol structure.
|
|
861
|
+
* \param s solution scalar value.
|
|
862
|
+
* \param pos position of the solution in the mesh.
|
|
863
|
+
* \return 0 on failure, 1 otherwise.
|
|
864
|
+
*
|
|
865
|
+
* Set scalar value \a s at position \a pos in solution structure.
|
|
866
|
+
* (pos from 1 to nb_vertices included).
|
|
867
|
+
*
|
|
868
|
+
* \remark Fortran interface:
|
|
869
|
+
* > SUBROUTINE MMG2D_SET_SCALARSOL(met,s,pos,retval)\n
|
|
870
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
871
|
+
* > REAL(KIND=8), INTENT(IN) :: s\n
|
|
872
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
873
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
874
|
+
* > END SUBROUTINE\n
|
|
875
|
+
*
|
|
876
|
+
*/
|
|
877
|
+
LIBMMG2D_EXPORT int MMG2D_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos);
|
|
878
|
+
|
|
879
|
+
/**
|
|
880
|
+
* \brief Set all values of a scalar sol structure.
|
|
881
|
+
*
|
|
882
|
+
* \param met pointer to the sol structure.
|
|
883
|
+
* \param s array of scalar solutions values.
|
|
884
|
+
* s[i-1] is the solution at vertex i.
|
|
885
|
+
* \return 0 on failure, 1 otherwise.
|
|
886
|
+
*
|
|
887
|
+
* \remark Fortran interface:
|
|
888
|
+
* > SUBROUTINE MMG2D_SET_SCALARSOLS(met,s,retval)\n
|
|
889
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
890
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN) :: s\n
|
|
891
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
892
|
+
* > END SUBROUTINE\n
|
|
893
|
+
*
|
|
894
|
+
*/
|
|
895
|
+
LIBMMG2D_EXPORT int MMG2D_Set_scalarSols(MMG5_pSol met, double *s);
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* \brief Set a single vector value in a sol structure.
|
|
899
|
+
*
|
|
900
|
+
* \param met pointer to the sol structure.
|
|
901
|
+
* \param vx x value of the vectorial solution.
|
|
902
|
+
* \param vy y value of the vectorial solution.
|
|
903
|
+
* \param pos position of the solution in the mesh (begins at 1).
|
|
904
|
+
* \return 0 on failure, 1 otherwise.
|
|
905
|
+
*
|
|
906
|
+
* Set vectorial value \f$(v_x,v_y)\f$ at position \a pos in solution
|
|
907
|
+
* structure. ( pos from 1 to nb_vertices included).
|
|
908
|
+
*
|
|
909
|
+
* \remark Fortran interface:
|
|
910
|
+
* > SUBROUTINE MMG2D_SET_VECTORSOL(met,vx,vy,pos,retval)\n
|
|
911
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
912
|
+
* > REAL(KIND=8), INTENT(IN) :: vx,vy\n
|
|
913
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
914
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
915
|
+
* > END SUBROUTINE\n
|
|
916
|
+
*
|
|
917
|
+
*/
|
|
918
|
+
LIBMMG2D_EXPORT int MMG2D_Set_vectorSol(MMG5_pSol met, double vx,double vy,
|
|
919
|
+
MMG5_int pos);
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* \brief Set all values in a vector sol structure.
|
|
923
|
+
*
|
|
924
|
+
* \param met pointer to the sol structure.
|
|
925
|
+
* \param sols array of vectorial solutions
|
|
926
|
+
* sols[2*(i-1)]\@2 is the solution at vertex i
|
|
927
|
+
* \return 0 on failure, 1 otherwise.
|
|
928
|
+
*
|
|
929
|
+
* Set vectorial solutions at mesh vertices
|
|
930
|
+
*
|
|
931
|
+
* \remark Fortran interface:
|
|
932
|
+
* > SUBROUTINE MMG2D_SET_VECTORSOLS(met,sols,retval)\n
|
|
933
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
934
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN):: sols\n
|
|
935
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
936
|
+
* > END SUBROUTINE\n
|
|
937
|
+
*
|
|
938
|
+
*/
|
|
939
|
+
LIBMMG2D_EXPORT int MMG2D_Set_vectorSols(MMG5_pSol met, double *sols);
|
|
940
|
+
|
|
941
|
+
/**
|
|
942
|
+
* \brief Set a single element of a tensor sol structure.
|
|
943
|
+
*
|
|
944
|
+
* \param met pointer to the sol structure.
|
|
945
|
+
* \param m11 value at position (1,1) in the solution tensor.
|
|
946
|
+
* \param m12 value at position (1,2) in the solution tensor.
|
|
947
|
+
* \param m22 value at position (2,2) in the solution tensor.
|
|
948
|
+
* \param pos position of the solution in the mesh.
|
|
949
|
+
* \return 0 on failure, 1 otherwise.
|
|
950
|
+
*
|
|
951
|
+
* Set tensor value \a s at position \a pos in solution structure
|
|
952
|
+
* (\a pos from 1 to nb_vertices included).
|
|
953
|
+
*
|
|
954
|
+
* \remark Fortran interface:
|
|
955
|
+
* > SUBROUTINE MMG2D_SET_TENSORSOL(met,m11,m12,m22,pos,retval)\n
|
|
956
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
957
|
+
* > REAL(KIND=8), INTENT(IN) :: m11,m12,m22\n
|
|
958
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: pos\n
|
|
959
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
960
|
+
* > END SUBROUTINE\n
|
|
961
|
+
*
|
|
962
|
+
*/
|
|
963
|
+
LIBMMG2D_EXPORT int MMG2D_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m22,
|
|
964
|
+
MMG5_int pos);
|
|
965
|
+
|
|
966
|
+
/**
|
|
967
|
+
* \brief Set all elements of a tensor sol structure.
|
|
968
|
+
*
|
|
969
|
+
* \param met pointer to the sol structure.
|
|
970
|
+
* \param sols array of tensorial solutions.
|
|
971
|
+
* sols[3*(i-1)]\@3 is the solution at vertex i
|
|
972
|
+
* \return 0 on failure, 1 otherwise.
|
|
973
|
+
*
|
|
974
|
+
* Set tensorial values at position \a pos in solution
|
|
975
|
+
* structure.
|
|
976
|
+
*
|
|
977
|
+
* \remark Fortran interface:
|
|
978
|
+
* > SUBROUTINE MMG2D_SET_TENSORSOLS(met,sols,retval)\n
|
|
979
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
980
|
+
* > REAL(KIND=8),DIMENSION(*), INTENT(IN) :: sols\n
|
|
981
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
982
|
+
* > END SUBROUTINE\n
|
|
983
|
+
*
|
|
984
|
+
*/
|
|
985
|
+
LIBMMG2D_EXPORT int MMG2D_Set_tensorSols(MMG5_pSol met, double *sols);
|
|
986
|
+
|
|
987
|
+
/**
|
|
988
|
+
* \brief Set a single element of one out of multiple solution fields that are defined on vertices.
|
|
989
|
+
*
|
|
990
|
+
* \param sol pointer to the array of solutions
|
|
991
|
+
* \param i position of the solution field that we want to set.
|
|
992
|
+
* \param s solution(s) at mesh vertex \a pos.
|
|
993
|
+
* \param pos index of the vertex on which we set the solution.
|
|
994
|
+
*
|
|
995
|
+
* \return 0 on failure, 1 otherwise.
|
|
996
|
+
*
|
|
997
|
+
* Set values of the solution at the ith field of the solution array.
|
|
998
|
+
* (\a pos from 1 to \a nb_vertices included and \a i from 1 to \a nb_sols).
|
|
999
|
+
*
|
|
1000
|
+
* \remark Fortran interface:
|
|
1001
|
+
* > SUBROUTINE MMG2D_SET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)\n
|
|
1002
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1003
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1004
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: pos\n
|
|
1005
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1006
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1007
|
+
* > END SUBROUTINE\n
|
|
1008
|
+
*
|
|
1009
|
+
*/
|
|
1010
|
+
LIBMMG2D_EXPORT int MMG2D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,MMG5_int pos);
|
|
1011
|
+
|
|
1012
|
+
/**
|
|
1013
|
+
* \brief Set all elements of one out of multiple solution fields that are defined on vertices.
|
|
1014
|
+
*
|
|
1015
|
+
* \param sol pointer to the array of solutions
|
|
1016
|
+
* \param i position of the solution field that we want to set.
|
|
1017
|
+
* \param s array of solutions at mesh vertices. The solution at vertex \a k
|
|
1018
|
+
* is given by s[k-1] for a scalar sol, s[2*(k-1)]\@2 for a vectorial solution
|
|
1019
|
+
* and s[3*(k-1)]\@3 for a tensor solution.
|
|
1020
|
+
*
|
|
1021
|
+
* \return 0 on failure, 1 otherwise.
|
|
1022
|
+
*
|
|
1023
|
+
* Set scalar values of the solution at the ith field of the solution array.
|
|
1024
|
+
* (\a i from 1 to \a nb_sols)
|
|
1025
|
+
*
|
|
1026
|
+
* \remark Fortran interface:
|
|
1027
|
+
* > SUBROUTINE MMG2D_SET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)\n
|
|
1028
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1029
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1030
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1031
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1032
|
+
* > END SUBROUTINE\n
|
|
1033
|
+
*
|
|
1034
|
+
*/
|
|
1035
|
+
LIBMMG2D_EXPORT int MMG2D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
|
|
1036
|
+
|
|
1037
|
+
/** recover datas */
|
|
1038
|
+
/**
|
|
1039
|
+
* \param mesh pointer to the mesh structure.
|
|
1040
|
+
* \param np pointer to the number of vertices.
|
|
1041
|
+
* \param nt pointer to the number of triangles.
|
|
1042
|
+
* \param nquad pointer to the number of quads.
|
|
1043
|
+
* \param na pointer to the number of edges.
|
|
1044
|
+
* \return 1.
|
|
1045
|
+
*
|
|
1046
|
+
* \brief Get the number of vertices, triangles and edges of the mesh.
|
|
1047
|
+
*
|
|
1048
|
+
* \remark Fortran interface:
|
|
1049
|
+
* > SUBROUTINE MMG2D_GET_MESHSIZE(mesh,np,nt,nquad,na,retval)\n
|
|
1050
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1051
|
+
* > INTEGER(MMG5F_INT) :: np,nt,nquad,na\n
|
|
1052
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1053
|
+
* > END SUBROUTINE\n
|
|
1054
|
+
*
|
|
1055
|
+
*/
|
|
1056
|
+
LIBMMG2D_EXPORT int MMG2D_Get_meshSize(MMG5_pMesh mesh, MMG5_int* np, MMG5_int* nt, MMG5_int* nquad, MMG5_int* na);
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* \brief Get the number of solutions, their dimension and their type.
|
|
1060
|
+
*
|
|
1061
|
+
* \param mesh pointer to the mesh structure.
|
|
1062
|
+
* \param sol pointer to the sol structure.
|
|
1063
|
+
* \param typEntity pointer to the type of entities to which solutions are applied
|
|
1064
|
+
* (see \ref MMG5_entities for possible values).
|
|
1065
|
+
* \param np pointer to the number of solutions.
|
|
1066
|
+
* \param typSol pointer to the type of the solutions
|
|
1067
|
+
* (scalar, vectorial, ..., see \ref MMG5_type for possible values)
|
|
1068
|
+
* \return 1.
|
|
1069
|
+
*
|
|
1070
|
+
* \remark Fortran interface:
|
|
1071
|
+
* > SUBROUTINE MMG2D_GET_SOLSIZE(mesh,sol,typEntity,np,typSol,retval)\n
|
|
1072
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1073
|
+
* > INTEGER :: typEntity,typSol\n
|
|
1074
|
+
* > INTEGER(MMG5F_INT) :: np\n
|
|
1075
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1076
|
+
* > END SUBROUTINE\n
|
|
1077
|
+
*
|
|
1078
|
+
*/
|
|
1079
|
+
LIBMMG2D_EXPORT int MMG2D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int* typEntity, MMG5_int* np,
|
|
1080
|
+
int* typSol);
|
|
1081
|
+
|
|
1082
|
+
/**
|
|
1083
|
+
* \brief Get the number of elements and dimension of a solution defined on vertices.
|
|
1084
|
+
*
|
|
1085
|
+
* \param mesh pointer to the mesh structure.
|
|
1086
|
+
* \param sol pointer to an array of sol structure.
|
|
1087
|
+
* \param nentities pointer to the number of entities.
|
|
1088
|
+
* \param typSol array of size MMG5_NSOL_MAX to store type of each solution
|
|
1089
|
+
* (scalar, vectorial, ..., see \ref MMG5_type for possible values).
|
|
1090
|
+
*
|
|
1091
|
+
* \return 1.
|
|
1092
|
+
*
|
|
1093
|
+
* \remark Fortran interface:
|
|
1094
|
+
* > SUBROUTINE MMG2D_GET_SOLSATVERTICESSIZE(mesh,sol,nsols,nentities,typSol,retval)\n
|
|
1095
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1096
|
+
* > INTEGER :: nsols\n
|
|
1097
|
+
* > INTEGER(MMG5F_INT) :: nentities\n
|
|
1098
|
+
* > INTEGER :: typSol(*)\n
|
|
1099
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1100
|
+
* > END SUBROUTINE\n
|
|
1101
|
+
*
|
|
1102
|
+
*/
|
|
1103
|
+
LIBMMG2D_EXPORT int MMG2D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol* sol,int *nsols,
|
|
1104
|
+
MMG5_int* nentities,int* typSol);
|
|
1105
|
+
|
|
1106
|
+
/**
|
|
1107
|
+
* \brief Get the coordinates and reference ref of the next vertex of a mesh.
|
|
1108
|
+
*
|
|
1109
|
+
* \param mesh pointer to the mesh structure.
|
|
1110
|
+
* \param c0 pointer to the coordinate of the vertex along the first dimension.
|
|
1111
|
+
* \param c1 pointer to the coordinate of the vertex along the second dimension.
|
|
1112
|
+
* \param ref pointer to the vertex reference.
|
|
1113
|
+
* \param isCorner pointer to the flag saying if vertex is corner.
|
|
1114
|
+
* \param isRequired pointer to the flag saying if vertex is required.
|
|
1115
|
+
* \return 1.
|
|
1116
|
+
*
|
|
1117
|
+
* This function retrieves the coordinates \a c0 and \a c1, and reference \a
|
|
1118
|
+
* ref of the next vertex of a mesh. It is meant to be used in a loop over all
|
|
1119
|
+
* vertices. When this function has been called as many times as there are
|
|
1120
|
+
* vertices, the internal loop counter will be reset. To obtain data for a
|
|
1121
|
+
* specific vertex, the \ref MMG2D_GetByIdx_vertex function can be used instead.
|
|
1122
|
+
*
|
|
1123
|
+
* \remark Fortran interface:
|
|
1124
|
+
* > SUBROUTINE MMG2D_GET_VERTEX(mesh,c0,c1,ref,isCorner,isRequired,retval)\n
|
|
1125
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1126
|
+
* > REAL(KIND=8), INTENT(OUT) :: c0,c1\n
|
|
1127
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1128
|
+
* > INTEGER :: isCorner,isRequired\n
|
|
1129
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1130
|
+
* > END SUBROUTINE\n
|
|
1131
|
+
*
|
|
1132
|
+
*/
|
|
1133
|
+
LIBMMG2D_EXPORT int MMG2D_Get_vertex(MMG5_pMesh mesh, double* c0, double* c1, MMG5_int* ref,
|
|
1134
|
+
int* isCorner, int* isRequired);
|
|
1135
|
+
|
|
1136
|
+
/**
|
|
1137
|
+
* \brief Get the coordinates and reference of a specific vertex in the mesh.
|
|
1138
|
+
*
|
|
1139
|
+
* \param mesh pointer to the mesh structure.
|
|
1140
|
+
* \param c0 pointer to the coordinate of the vertex along the first dimension.
|
|
1141
|
+
* \param c1 pointer to the coordinate of the vertex along the second dimension.
|
|
1142
|
+
* \param ref pointer to the vertex reference.
|
|
1143
|
+
* \param isCorner pointer to the flag saying if vertex is corner.
|
|
1144
|
+
* \param isRequired pointer to the flag saying if vertex is required.
|
|
1145
|
+
* \param idx index of vertex to get.
|
|
1146
|
+
* \return 1.
|
|
1147
|
+
*
|
|
1148
|
+
* Get coordinates \a c0, \a c1 and reference \a ref of
|
|
1149
|
+
* vertex \a idx of mesh.
|
|
1150
|
+
*
|
|
1151
|
+
* \remark Fortran interface:
|
|
1152
|
+
* > SUBROUTINE MMG2D_GETBYIDX_VERTEX(mesh,c0,c1,ref,isCorner,isRequired,idx,retval)\n
|
|
1153
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1154
|
+
* > REAL(KIND=8), INTENT(OUT) :: c0,c1\n
|
|
1155
|
+
* > INTEGER :: isCorner,isRequired\n
|
|
1156
|
+
* > INTEGER(MMG5F_INT) :: ref,idx\n
|
|
1157
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1158
|
+
* > END SUBROUTINE\n
|
|
1159
|
+
*
|
|
1160
|
+
*/
|
|
1161
|
+
LIBMMG2D_EXPORT int MMG2D_GetByIdx_vertex(MMG5_pMesh mesh, double* c0, double* c1, MMG5_int* ref,
|
|
1162
|
+
int* isCorner, int* isRequired,MMG5_int idx);
|
|
1163
|
+
|
|
1164
|
+
/**
|
|
1165
|
+
* \brief Get the coordinates and references of all vertices in the mesh.
|
|
1166
|
+
*
|
|
1167
|
+
* \param mesh pointer to the mesh structure.
|
|
1168
|
+
* \param vertices pointer to the array of vertex coordinates.
|
|
1169
|
+
* The coordinates of the \f$i^{th}\f$ vertex are stored in
|
|
1170
|
+
* vertices[(i-1)*2]\@2.
|
|
1171
|
+
* \param refs pointer to the array of references.
|
|
1172
|
+
* The ref of the \f$i^th\f$ vertex is stored in refs[i-1].
|
|
1173
|
+
* \param areCorners pointer to the array of flags saying if
|
|
1174
|
+
* vertices are corners.
|
|
1175
|
+
* areCorners[i-1]=1 if the \f$i^{th}\f$ vertex is corner.
|
|
1176
|
+
* \param areRequired pointer to the array of flags saying if vertices
|
|
1177
|
+
* are required. areRequired[i-1]=1 if the \f$i^{th}\f$ vertex is required.
|
|
1178
|
+
* \return 1.
|
|
1179
|
+
*
|
|
1180
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
1181
|
+
* instead of the refs, areCorners and areRequired arrays)
|
|
1182
|
+
* > ! SUBROUTINE MMG2D_GET_VERTICES(mesh,vertices,refs,areCorners,&\n
|
|
1183
|
+
* > ! areRequired,retval)\n
|
|
1184
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1185
|
+
* > ! REAL(KIND=8),DIMENSION(*), INTENT(OUT) :: vertices\n
|
|
1186
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*) :: refs\n
|
|
1187
|
+
* > ! INTEGER, DIMENSION(*) :: areCorners,areRequired\n
|
|
1188
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1189
|
+
* > ! END SUBROUTINE\n
|
|
1190
|
+
*
|
|
1191
|
+
*/
|
|
1192
|
+
LIBMMG2D_EXPORT int MMG2D_Get_vertices(MMG5_pMesh mesh, double* vertices, MMG5_int* refs,
|
|
1193
|
+
int* areCorners, int* areRequired);
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* \brief Get the vertices and reference of the next triangle in the mesh.
|
|
1197
|
+
*
|
|
1198
|
+
* \param mesh pointer to the mesh structure.
|
|
1199
|
+
* \param v0 pointer to the first vertex of triangle.
|
|
1200
|
+
* \param v1 pointer to the second vertex of triangle.
|
|
1201
|
+
* \param v2 pointer to the third vertex of triangle.
|
|
1202
|
+
* \param ref pointer to the triangle reference.
|
|
1203
|
+
* \param isRequired pointer to the flag saying if triangle is required.
|
|
1204
|
+
* \return 0 on failure, 1 otherwise.
|
|
1205
|
+
*
|
|
1206
|
+
* This function retrieves the vertices \a v0, \a v1, \a v2, and reference \a
|
|
1207
|
+
* ref of the next triangle of \a mesh. It is meant to be called in a loop over
|
|
1208
|
+
* all triangles. When it has been called as many times as there are triangles,
|
|
1209
|
+
* the internal loop counter will be reset.
|
|
1210
|
+
*
|
|
1211
|
+
* \remark Fortran interface:
|
|
1212
|
+
* > SUBROUTINE MMG2D_GET_TRIANGLE(mesh,v0,v1,v2,ref,isRequired,retval)\n
|
|
1213
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1214
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: v0,v1,v2\n
|
|
1215
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1216
|
+
* > INTEGER :: isRequired\n
|
|
1217
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1218
|
+
* > END SUBROUTINE\n
|
|
1219
|
+
*
|
|
1220
|
+
*/
|
|
1221
|
+
LIBMMG2D_EXPORT int MMG2D_Get_triangle(MMG5_pMesh mesh, MMG5_int* v0,
|
|
1222
|
+
MMG5_int* v1, MMG5_int* v2, MMG5_int* ref
|
|
1223
|
+
,int* isRequired);
|
|
1224
|
+
|
|
1225
|
+
/**
|
|
1226
|
+
* \brief Get the vertices and references of all triangles in the mesh.
|
|
1227
|
+
*
|
|
1228
|
+
* \param mesh pointer to the mesh structure.
|
|
1229
|
+
* \param tria pointer to the array of triangles vertices
|
|
1230
|
+
* Vertices of the \f$i^{th}\f$ tria are stored in tria[(i-1)*3]\@3.
|
|
1231
|
+
* \param refs pointer to the array of triangles references.
|
|
1232
|
+
* refs[i-1] is the ref of the \f$i^{th}\f$ tria.
|
|
1233
|
+
* \param areRequired pointer to array of flags saying if triangles
|
|
1234
|
+
* are required. areRequired[i-1]=1 if the \f$i^{th}\f$ tria
|
|
1235
|
+
* is required.
|
|
1236
|
+
* \return 0 on failure, 1 otherwise.
|
|
1237
|
+
*
|
|
1238
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
1239
|
+
* instead of the refs and areRequired arrays)
|
|
1240
|
+
* > ! SUBROUTINE MMG2D_GET_TRIANGLES(mesh,tria,refs,areRequired,retval)\n
|
|
1241
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1242
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: tria\n
|
|
1243
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*) :: refs\n
|
|
1244
|
+
* > ! INTEGER, DIMENSION(*) :: areRequired\n
|
|
1245
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1246
|
+
* > ! END SUBROUTINE\n
|
|
1247
|
+
*
|
|
1248
|
+
*/
|
|
1249
|
+
LIBMMG2D_EXPORT int MMG2D_Get_triangles(MMG5_pMesh mesh, MMG5_int* tria, MMG5_int* refs,
|
|
1250
|
+
int* areRequired);
|
|
1251
|
+
|
|
1252
|
+
/**
|
|
1253
|
+
* \brief Get the vertices and reference of the next quadrangle of the mesh.
|
|
1254
|
+
*
|
|
1255
|
+
* \param mesh pointer to the mesh structure.
|
|
1256
|
+
* \param v0 pointer to the first vertex of quadrangle.
|
|
1257
|
+
* \param v1 pointer to the second vertex of quadrangle.
|
|
1258
|
+
* \param v2 pointer to the third vertex of quadrangle.
|
|
1259
|
+
* \param v3 pointer to the fourth vertex of quadrangle.
|
|
1260
|
+
* \param ref pointer to the quadrangle reference.
|
|
1261
|
+
* \param isRequired pointer to the flag saying if quadrangle is
|
|
1262
|
+
* required.
|
|
1263
|
+
* \return 0 on failure, 1 otherwise.
|
|
1264
|
+
*
|
|
1265
|
+
* Get the vertices \a v0,\a v1,\a v2,\a v3 and reference \a ref of the next
|
|
1266
|
+
* quadrangle of mesh. This function is meant to be called in a loop over all
|
|
1267
|
+
* quadrangles. When it has been called as many times as there are
|
|
1268
|
+
* quadrangles, the internal loop counter will be reset.
|
|
1269
|
+
*
|
|
1270
|
+
* \remark Fortran interface:
|
|
1271
|
+
* > SUBROUTINE MMG2D_GET_QUADRILATERAL(mesh,v0,v1,v2,v3,ref,isRequired,&\n
|
|
1272
|
+
* > retval)\n
|
|
1273
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1274
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: v0,v1,v2,v3\n
|
|
1275
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1276
|
+
* > INTEGER :: isRequired\n
|
|
1277
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1278
|
+
* > END SUBROUTINE\n
|
|
1279
|
+
*
|
|
1280
|
+
*/
|
|
1281
|
+
LIBMMG2D_EXPORT int MMG2D_Get_quadrilateral(MMG5_pMesh mesh, MMG5_int* v0, MMG5_int* v1, MMG5_int* v2,
|
|
1282
|
+
MMG5_int* v3,MMG5_int* ref, int* isRequired);
|
|
1283
|
+
|
|
1284
|
+
/**
|
|
1285
|
+
* \brief Get the vertices and references of all quadrangles of the mesh.
|
|
1286
|
+
*
|
|
1287
|
+
* \param mesh pointer to the mesh structure.
|
|
1288
|
+
* \param quadra pointer to the array of quadrangles vertices.
|
|
1289
|
+
* Vertices of the \f$i^{th}\f$ quadrangle are stored in quadra[(i-1)*4]\@4.
|
|
1290
|
+
* \param refs pointer to the array of quadrlaterals references.
|
|
1291
|
+
* References of the \f$i^{th}\f$ quad is stored in refs[i-1].
|
|
1292
|
+
* \param areRequired pointer to the array of flags saying if the
|
|
1293
|
+
* quadrangles are required. areRequired[i-1]=1 if the \f$i^{th}\f$ quad
|
|
1294
|
+
* is required.
|
|
1295
|
+
* \return 0 on failure, 1 otherwise.
|
|
1296
|
+
*
|
|
1297
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
1298
|
+
* instead of the refs, areCorners or areRequired arrays)
|
|
1299
|
+
*
|
|
1300
|
+
* > ! SUBROUTINE MMG2D_GET_QUADRILATERALS(mesh,quadra,refs,areRequired,&\n
|
|
1301
|
+
* > ! retval)\n
|
|
1302
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1303
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*),INTENT(OUT) :: quadra\n
|
|
1304
|
+
* > ! INTEGER(MMG5F_INT), DIMENSION(*) :: refs\n
|
|
1305
|
+
* > ! INTEGER, DIMENSION(*) :: areRequired\n
|
|
1306
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1307
|
+
* > ! END SUBROUTINE\n
|
|
1308
|
+
*
|
|
1309
|
+
*/
|
|
1310
|
+
LIBMMG2D_EXPORT int MMG2D_Get_quadrilaterals(MMG5_pMesh mesh, MMG5_int* quadra,MMG5_int* refs,
|
|
1311
|
+
int* areRequired);
|
|
1312
|
+
|
|
1313
|
+
/**
|
|
1314
|
+
* \brief Get the vertices and reference of the next edge in the mesh.
|
|
1315
|
+
*
|
|
1316
|
+
* \param mesh pointer to the mesh structure.
|
|
1317
|
+
* \param e0 pointer to the first extremity of the edge.
|
|
1318
|
+
* \param e1 pointer to the second extremity of the edge.
|
|
1319
|
+
* \param ref pointer to the edge reference.
|
|
1320
|
+
* \param isRidge pointer to the flag saying if the edge is ridge.
|
|
1321
|
+
* \param isRequired pointer to the flag saying if the edge is required.
|
|
1322
|
+
* \return 0 on failure, 1 otherwise.
|
|
1323
|
+
*
|
|
1324
|
+
* This function retrieves the extremities \a e0, \a e1 and reference \a ref of
|
|
1325
|
+
* next edge of \a mesh. It is meant to be called in a loop over all edges. When
|
|
1326
|
+
* it has been called as many times as there are edges in the mesh, the internal
|
|
1327
|
+
* edge counter will be reset.
|
|
1328
|
+
*
|
|
1329
|
+
* \remark Fortran interface:
|
|
1330
|
+
* > SUBROUTINE MMG2D_GET_EDGE(mesh,e0,e1,ref,isRidge,isRequired,retval)\n
|
|
1331
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1332
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: e0,e1\n
|
|
1333
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
1334
|
+
* > INTEGER :: isRidge,isRequired\n
|
|
1335
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1336
|
+
* > END SUBROUTINE\n
|
|
1337
|
+
*
|
|
1338
|
+
*/
|
|
1339
|
+
LIBMMG2D_EXPORT int MMG2D_Get_edge(MMG5_pMesh mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref,
|
|
1340
|
+
int* isRidge, int* isRequired);
|
|
1341
|
+
|
|
1342
|
+
/**
|
|
1343
|
+
* \brief Get the vertices and references of all edges in a mesh.
|
|
1344
|
+
*
|
|
1345
|
+
* \param mesh pointer to the mesh structure.
|
|
1346
|
+
* \param edges pointer to the array of edges.
|
|
1347
|
+
* Vertices of the \f$i^{th}\f$ edge are stored in edge[(i-1)*2]\@2.
|
|
1348
|
+
* \param refs edges references. refs[i-1] is the ref of the \f$i^{th}\f$ edge.
|
|
1349
|
+
* \param areRidges 1 if the edge is a ridge, 0 otherwise.
|
|
1350
|
+
* \param areRequired 1 if the edge is required, 0 otherwise.
|
|
1351
|
+
* \return 0 on failure, 1 otherwise.
|
|
1352
|
+
*
|
|
1353
|
+
* \remark Fortran interface: (commentated in order to allow to pass \%val(0)
|
|
1354
|
+
* instead of the refs, areRidges or areRequired arrays)
|
|
1355
|
+
*
|
|
1356
|
+
* \remark Fortran interface:
|
|
1357
|
+
* > ! SUBROUTINE MMG2D_GET_EDGES(mesh,edges,refs,areRidges,areRequired,retval)\n
|
|
1358
|
+
* > ! MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
1359
|
+
* > ! INTEGER(MMG5F_INT), INTENT(IN) :: edges(*)\n
|
|
1360
|
+
* > ! INTEGER(MMG5F_INT), INTENT(OUT):: refs(*)\n
|
|
1361
|
+
* > ! INTEGER, INTENT(OUT) :: areRequired(*),areRidges(*)\n
|
|
1362
|
+
* > ! INTEGER, INTENT(OUT) :: retval\n
|
|
1363
|
+
* > ! END SUBROUTINE\n
|
|
1364
|
+
*
|
|
1365
|
+
*/
|
|
1366
|
+
LIBMMG2D_EXPORT int MMG2D_Get_edges(MMG5_pMesh mesh,MMG5_int *edges,MMG5_int* refs,
|
|
1367
|
+
int *areRidges,int *areRequired);
|
|
1368
|
+
|
|
1369
|
+
/**
|
|
1370
|
+
* \brief Get the quality measure of a single triangle in the mesh.
|
|
1371
|
+
*
|
|
1372
|
+
* \param mesh pointer to the mesh structure.
|
|
1373
|
+
* \param met pointer to the metric structure.
|
|
1374
|
+
* \param k index of the triangle for which we want to get the quality.
|
|
1375
|
+
* \return the computed quality, or 0 on failure
|
|
1376
|
+
*
|
|
1377
|
+
* Get quality of triangle \a k.
|
|
1378
|
+
*
|
|
1379
|
+
* \remark Fortran interface:
|
|
1380
|
+
* > SUBROUTINE MMG2D_GET_TRIANGLEQUALITY(mesh,met,k,retval)\n
|
|
1381
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met\n
|
|
1382
|
+
* > INTEGER(MMG5F_INT), INTENT(IN):: k\n
|
|
1383
|
+
* > REAL(KIND=8), INTENT(OUT) :: retval\n
|
|
1384
|
+
* > END SUBROUTINE\n
|
|
1385
|
+
*
|
|
1386
|
+
*/
|
|
1387
|
+
LIBMMG2D_EXPORT double MMG2D_Get_triangleQuality(MMG5_pMesh mesh,MMG5_pSol met, MMG5_int k);
|
|
1388
|
+
|
|
1389
|
+
/**
|
|
1390
|
+
* \param met pointer to the sol structure.
|
|
1391
|
+
* \param s pointer to the scalar solution value.
|
|
1392
|
+
* \return 0 on failure, 1 otherwise.
|
|
1393
|
+
*
|
|
1394
|
+
* \brief Get the scalar solution value \a s of next element of a solution.
|
|
1395
|
+
*
|
|
1396
|
+
* This function is meant to be called in a loop over all elements. When it has
|
|
1397
|
+
* been called as many times as there are elements in the solution, the internal
|
|
1398
|
+
* counter will be reset.
|
|
1399
|
+
*
|
|
1400
|
+
* \remark Fortran interface:
|
|
1401
|
+
* > SUBROUTINE MMG2D_GET_SCALARSOL(met,s,retval)\n
|
|
1402
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1403
|
+
* > REAL(KIND=8), INTENT(OUT) :: s\n
|
|
1404
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1405
|
+
* > END SUBROUTINE\n
|
|
1406
|
+
*
|
|
1407
|
+
*/
|
|
1408
|
+
LIBMMG2D_EXPORT int MMG2D_Get_scalarSol(MMG5_pSol met, double* s);
|
|
1409
|
+
|
|
1410
|
+
/**
|
|
1411
|
+
* \brief Get all elements of a scalar sol structure.
|
|
1412
|
+
*
|
|
1413
|
+
* \param met pointer to the sol structure.
|
|
1414
|
+
* \param s array of scalar solutions at mesh vertices. s[i-1] is
|
|
1415
|
+
* the solution at vertex i.
|
|
1416
|
+
* \return 0 on failure, 1 otherwise.
|
|
1417
|
+
*
|
|
1418
|
+
* \remark Fortran interface:
|
|
1419
|
+
* > SUBROUTINE MMG2D_GET_SCALARSOLS(met,s,retval)\n
|
|
1420
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1421
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1422
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1423
|
+
* > END SUBROUTINE\n
|
|
1424
|
+
*
|
|
1425
|
+
*/
|
|
1426
|
+
LIBMMG2D_EXPORT int MMG2D_Get_scalarSols(MMG5_pSol met, double* s);
|
|
1427
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
* \brief Get the next element of a vector sol structure.
|
|
1430
|
+
*
|
|
1431
|
+
* \param met pointer to the sol structure.
|
|
1432
|
+
* \param vx x value of the vectorial solution.
|
|
1433
|
+
* \param vy y value of the vectorial solution.
|
|
1434
|
+
* \return 0 on failure, 1 otherwise.
|
|
1435
|
+
*
|
|
1436
|
+
* This function retrieves vectorial solution \f$(v_x,v_y)\f$ of the next
|
|
1437
|
+
* element of \a met. It is meant to be called in a loop over all
|
|
1438
|
+
* elements. When it has been called as many times as there are elements in the
|
|
1439
|
+
* solution, the internal counter will be reset.
|
|
1440
|
+
*
|
|
1441
|
+
* \remark Fortran interface:
|
|
1442
|
+
* > SUBROUTINE MMG2D_GET_VECTORSOL(met,vx,vy,retval)\n
|
|
1443
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1444
|
+
* > REAL(KIND=8), INTENT(OUT) :: vx,vy\n
|
|
1445
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1446
|
+
* > END SUBROUTINE\n
|
|
1447
|
+
*
|
|
1448
|
+
*/
|
|
1449
|
+
LIBMMG2D_EXPORT int MMG2D_Get_vectorSol(MMG5_pSol met, double* vx, double* vy);
|
|
1450
|
+
|
|
1451
|
+
/**
|
|
1452
|
+
* \brief Get all elements of a vector sol structure.
|
|
1453
|
+
*
|
|
1454
|
+
* \param met pointer to the sol structure.
|
|
1455
|
+
* \param sols array to store the data in the order \f$[x_1, y_1, x_2, \ldots, y_N]\f$
|
|
1456
|
+
* \return 0 on failure, 1 otherwise.
|
|
1457
|
+
*
|
|
1458
|
+
* \remark Fortran interface:
|
|
1459
|
+
* > SUBROUTINE MMG2D_GET_VECTORSOLS(met,sols,retval)\n
|
|
1460
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1461
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: sols\n
|
|
1462
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1463
|
+
* > END SUBROUTINE\n
|
|
1464
|
+
*
|
|
1465
|
+
*/
|
|
1466
|
+
LIBMMG2D_EXPORT int MMG2D_Get_vectorSols(MMG5_pSol met, double* sols);
|
|
1467
|
+
|
|
1468
|
+
/**
|
|
1469
|
+
* \brief Get the next element of a tensor sol structure.
|
|
1470
|
+
*
|
|
1471
|
+
* \param met pointer to the sol structure.
|
|
1472
|
+
* \param m11 pointer to the position (1,1) in the solution tensor.
|
|
1473
|
+
* \param m12 pointer to the position (1,2) in the solution tensor.
|
|
1474
|
+
* \param m22 pointer to the position (2,2) in the solution tensor.
|
|
1475
|
+
* \return 0 on failure, 1 otherwise.
|
|
1476
|
+
*
|
|
1477
|
+
* This function is meant to be called in a loop over all elements. When it has
|
|
1478
|
+
* been called as many times as there are elements in the solution, the internal
|
|
1479
|
+
* counter will be reset.
|
|
1480
|
+
*
|
|
1481
|
+
* \remark Fortran interface:
|
|
1482
|
+
* > SUBROUTINE MMG2D_GET_TENSORSOL(met,m11,m12,m22,retval)\n
|
|
1483
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1484
|
+
* > REAL(KIND=8), INTENT(OUT) :: m11,m12,m22\n
|
|
1485
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1486
|
+
* > END SUBROUTINE\n
|
|
1487
|
+
*
|
|
1488
|
+
*/
|
|
1489
|
+
LIBMMG2D_EXPORT int MMG2D_Get_tensorSol(MMG5_pSol met, double *m11,double *m12,double *m22);
|
|
1490
|
+
|
|
1491
|
+
/**
|
|
1492
|
+
* \brief Get all elements of a tensor sol structure.
|
|
1493
|
+
*
|
|
1494
|
+
* \param met pointer to the sol structure.
|
|
1495
|
+
* \param sols array of solutions at mesh vertices.
|
|
1496
|
+
* sols[3*(i-1)]\@3 is the solution at vertex i.
|
|
1497
|
+
* \return 0 on failure, 1 otherwise.
|
|
1498
|
+
*
|
|
1499
|
+
* \remark Fortran interface:
|
|
1500
|
+
* > SUBROUTINE MMG2D_GET_TENSORSOLS(met,sols,retval)\n
|
|
1501
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: met\n
|
|
1502
|
+
* > REAL(KIND=8), DIMENSION(*), INTENT(OUT) :: sols\n
|
|
1503
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1504
|
+
* > END SUBROUTINE\n
|
|
1505
|
+
*
|
|
1506
|
+
*/
|
|
1507
|
+
LIBMMG2D_EXPORT int MMG2D_Get_tensorSols(MMG5_pSol met, double *sols);
|
|
1508
|
+
|
|
1509
|
+
/**
|
|
1510
|
+
* \brief Get one out of several scalar solutions at a specific vertex.
|
|
1511
|
+
*
|
|
1512
|
+
* \param sol pointer to the array of solutions
|
|
1513
|
+
* \param i position of the solution field that we want to set.
|
|
1514
|
+
* \param s solution(s) at mesh vertex \a pos.
|
|
1515
|
+
* \param pos index of the vertex on which we get the solution.
|
|
1516
|
+
*
|
|
1517
|
+
* \return 0 on failure, 1 otherwise.
|
|
1518
|
+
*
|
|
1519
|
+
* Get values of the ith field of the solution array at vertex \a pos. (pos
|
|
1520
|
+
* from 1 to the number of vertices included and \a i from 1 to the number of
|
|
1521
|
+
* solutions).
|
|
1522
|
+
*
|
|
1523
|
+
* \remark Fortran interface:
|
|
1524
|
+
* > SUBROUTINE MMG2D_GET_ITHSOL_INSOLSATVERTICES(sol,i,s,pos,retval)\n
|
|
1525
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1526
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1527
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: pos\n
|
|
1528
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1529
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1530
|
+
* > END SUBROUTINE\n
|
|
1531
|
+
*
|
|
1532
|
+
*/
|
|
1533
|
+
LIBMMG2D_EXPORT int MMG2D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol,int i, double* s,MMG5_int pos);
|
|
1534
|
+
|
|
1535
|
+
/**
|
|
1536
|
+
* \brief Get one out of several scalar solutions at all vertices in the mesh.
|
|
1537
|
+
*
|
|
1538
|
+
* \param sol pointer to the array of solutions
|
|
1539
|
+
* \param i position of the solution field that we want to get.
|
|
1540
|
+
* \param s array of solutions at mesh vertices. The solution at vertex \a k
|
|
1541
|
+
* is given by s[k-1] for a scalar sol, s[2*(k-1)]\@2 for a vectorial solution
|
|
1542
|
+
* and s[3*(k-1)]\@3 for a tensor solution.
|
|
1543
|
+
*
|
|
1544
|
+
* \return 0 on failure, 1 otherwise.
|
|
1545
|
+
*
|
|
1546
|
+
* Get values of the solution at the ith field of the solution array.
|
|
1547
|
+
* (\a i from 1 to \a nb_sols)
|
|
1548
|
+
*
|
|
1549
|
+
* \remark Fortran interface:
|
|
1550
|
+
* > SUBROUTINE MMG2D_GET_ITHSOLS_INSOLSATVERTICES(sol,i,s,retval)\n
|
|
1551
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: sol\n
|
|
1552
|
+
* > INTEGER, INTENT(IN) :: i\n
|
|
1553
|
+
* > REAL(KIND=8), DIMENSION(*),INTENT(OUT) :: s\n
|
|
1554
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1555
|
+
* > END SUBROUTINE\n
|
|
1556
|
+
*
|
|
1557
|
+
*/
|
|
1558
|
+
LIBMMG2D_EXPORT int MMG2D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol,int i, double* s);
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
/**
|
|
1562
|
+
* \brief Check if the number of given entities match with mesh and sol size
|
|
1563
|
+
*
|
|
1564
|
+
* \param mesh pointer to the mesh structure.
|
|
1565
|
+
* \param met pointer to the sol structure.
|
|
1566
|
+
* \return 0 on failure, 1 otherwise.
|
|
1567
|
+
*
|
|
1568
|
+
* Check if the number of given entities match with mesh and sol size
|
|
1569
|
+
* (not mandatory) and check mesh datas.
|
|
1570
|
+
*
|
|
1571
|
+
* \remark Fortran interface:
|
|
1572
|
+
* > SUBROUTINE MMG2D_Chk_meshData(mesh,met,retval)\n
|
|
1573
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,met\n
|
|
1574
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1575
|
+
* > END SUBROUTINE\n
|
|
1576
|
+
*
|
|
1577
|
+
*/
|
|
1578
|
+
LIBMMG2D_EXPORT int MMG2D_Chk_meshData(MMG5_pMesh mesh,MMG5_pSol met);
|
|
1579
|
+
|
|
1580
|
+
/**
|
|
1581
|
+
* \brief Deallocate an array of solution fields
|
|
1582
|
+
*
|
|
1583
|
+
* \param mesh pointer to the mesh structure.
|
|
1584
|
+
* \param sol pointer to an array of solution structure (that stores solution fields).
|
|
1585
|
+
* \return 1
|
|
1586
|
+
*
|
|
1587
|
+
* \remark Fortran interface:
|
|
1588
|
+
* > SUBROUTINE MMG2D_Free_allSols(mesh,sol,retval)\n
|
|
1589
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh,sol\n
|
|
1590
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1591
|
+
* > END SUBROUTINE\n
|
|
1592
|
+
*
|
|
1593
|
+
*/
|
|
1594
|
+
LIBMMG2D_EXPORT int MMG2D_Free_allSols(MMG5_pMesh mesh,MMG5_pSol *sol);
|
|
1595
|
+
|
|
1596
|
+
/* deallocations */
|
|
1597
|
+
/**
|
|
1598
|
+
* \brief Deallocations before return.
|
|
1599
|
+
*
|
|
1600
|
+
* \param starter dummy argument used to initialize the variadic argument
|
|
1601
|
+
* list.
|
|
1602
|
+
* \param ... variadic arguments that depend to the library function that you
|
|
1603
|
+
* have call.
|
|
1604
|
+
*
|
|
1605
|
+
* For the \ref MMG2D_mmg2dlib function, you need
|
|
1606
|
+
* to call the \ref MMG2D_Init_mesh function with the following arguments :
|
|
1607
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1608
|
+
* MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
1609
|
+
*
|
|
1610
|
+
* For the \ref MMG2D_mmg2dls function, you need
|
|
1611
|
+
* to call the \ref MMG2D_Init_mesh function with the following arguments :
|
|
1612
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
1613
|
+
* &your_level_set,MMG5_ARG_end).
|
|
1614
|
+
*
|
|
1615
|
+
* For the \ref MMG2D_mmg2dmov function, you must call
|
|
1616
|
+
* : MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1617
|
+
* MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
1618
|
+
* MMG5_ARG_end).
|
|
1619
|
+
*
|
|
1620
|
+
* \return 0 on failure, 1 on success
|
|
1621
|
+
*
|
|
1622
|
+
* \remark we pass the structures by reference in order to have argument
|
|
1623
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
1624
|
+
*
|
|
1625
|
+
* \remark no Fortran interface to allow variadic args.
|
|
1626
|
+
*
|
|
1627
|
+
*/
|
|
1628
|
+
LIBMMG2D_EXPORT int MMG2D_Free_all(const int starter,...);
|
|
1629
|
+
|
|
1630
|
+
/**
|
|
1631
|
+
* \brief Structure deallocations before return.
|
|
1632
|
+
*
|
|
1633
|
+
* \param starter dummy argument used to initialize the variadic argument
|
|
1634
|
+
* list.
|
|
1635
|
+
* \param ... variadic arguments that depend to the library function that you
|
|
1636
|
+
* have call.
|
|
1637
|
+
*
|
|
1638
|
+
* For the \ref MMG2D_mmg2dlib function, you need
|
|
1639
|
+
* to call the \ref MMG2D_Init_mesh function with the following arguments :
|
|
1640
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1641
|
+
* MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
1642
|
+
*
|
|
1643
|
+
* For the \ref MMG2D_mmg2dls function, you need
|
|
1644
|
+
* to call the \ref MMG2D_Init_mesh function with the following arguments :
|
|
1645
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
1646
|
+
* &your_level_set,MMG5_ARG_end).
|
|
1647
|
+
*
|
|
1648
|
+
* For the \ref MMG2D_mmg2dmov function, you must call
|
|
1649
|
+
* : MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1650
|
+
* MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
1651
|
+
* MMG5_ARG_end).
|
|
1652
|
+
*
|
|
1653
|
+
* \return 0 on failure, 1 on success
|
|
1654
|
+
*
|
|
1655
|
+
* \remark we pass the structures by reference in order to have argument
|
|
1656
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
1657
|
+
*
|
|
1658
|
+
* \remark No fortran interface to allow variadic arguments.
|
|
1659
|
+
*
|
|
1660
|
+
* \remark no Fortran interface to allow variadic args.
|
|
1661
|
+
*
|
|
1662
|
+
*/
|
|
1663
|
+
LIBMMG2D_EXPORT int MMG2D_Free_structures(const int starter,...);
|
|
1664
|
+
|
|
1665
|
+
/**
|
|
1666
|
+
* \brief Structure deallocations before return.
|
|
1667
|
+
*
|
|
1668
|
+
* \param starter dummy argument used to initialize the variadic argument
|
|
1669
|
+
* list.
|
|
1670
|
+
* \param ... variadic arguments that depend to the library function that you
|
|
1671
|
+
* have call.
|
|
1672
|
+
*
|
|
1673
|
+
* For the MMG2D_mmg2dlib function, you need
|
|
1674
|
+
* to call the \a MMG2D_Init_mesh function with the following arguments :
|
|
1675
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1676
|
+
* MMG5_ARG_ppMet,&your_metric,MMG5_ARG_end).
|
|
1677
|
+
*
|
|
1678
|
+
* For the MMG2D_mmg2dls function, you need
|
|
1679
|
+
* to call the \a MMG2D_Init_mesh function with the following arguments :
|
|
1680
|
+
* MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh, MMG5_ARG_ppLs,
|
|
1681
|
+
* &your_level_set,MMG5_ARG_end).
|
|
1682
|
+
*
|
|
1683
|
+
* For the MMG2D_mmg2dmov function, you must call
|
|
1684
|
+
* : MMG2D_Init_mesh(MMG5_ARG_start,MMG5_ARG_ppMesh, &your_mesh,
|
|
1685
|
+
* MMG5_ARG_ppMet,&empty_metric,MMG5_ARG_ppDisp, &your_displacement,
|
|
1686
|
+
* MMG5_ARG_end).
|
|
1687
|
+
*
|
|
1688
|
+
* \return 0 on failure, 1 otherwise
|
|
1689
|
+
*
|
|
1690
|
+
* \remark we pass the structures by reference in order to have argument
|
|
1691
|
+
* compatibility between the library call from a Fortran code and a C code.
|
|
1692
|
+
*
|
|
1693
|
+
* \remark No fortran interface to allow variadic arguments.
|
|
1694
|
+
*
|
|
1695
|
+
* \remark no Fortran interface to allow variadic args.
|
|
1696
|
+
*
|
|
1697
|
+
*/
|
|
1698
|
+
LIBMMG2D_EXPORT int MMG2D_Free_names(const int starter,...);
|
|
1699
|
+
|
|
1700
|
+
/**
|
|
1701
|
+
* \brief Load a mesh (in .mesh/.mesb format) from file.
|
|
1702
|
+
*
|
|
1703
|
+
* \param mesh pointer to the mesh structure.
|
|
1704
|
+
* \param filename name of the readed file.
|
|
1705
|
+
*
|
|
1706
|
+
* \return 0 if the file is not found, -1 in case of failure for another reason (insufficient memory, file
|
|
1707
|
+
* format...), 1 on success.
|
|
1708
|
+
*
|
|
1709
|
+
* \remark Fortran interface:
|
|
1710
|
+
* > SUBROUTINE MMG2D_LOADMESH(mesh,filename,strlen0,retval)\n
|
|
1711
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
1712
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1713
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1714
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1715
|
+
* > END SUBROUTINE\n
|
|
1716
|
+
*
|
|
1717
|
+
*/
|
|
1718
|
+
LIBMMG2D_EXPORT int MMG2D_loadMesh(MMG5_pMesh mesh,const char * filename);
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* \brief Load a mesh and possibly a solution in VTP (VTK) format from file.
|
|
1722
|
+
*
|
|
1723
|
+
* \param mesh pointer to the mesh structure.
|
|
1724
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1725
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1726
|
+
* \param filename name of the file to load.
|
|
1727
|
+
*
|
|
1728
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1729
|
+
* format...), 1 on success.
|
|
1730
|
+
*
|
|
1731
|
+
* Read a mesh and 0 or 1 data fields in VTK vtp file format (.vtp extension). We
|
|
1732
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1733
|
+
*
|
|
1734
|
+
* \remark Fortran interface:
|
|
1735
|
+
* > SUBROUTINE MMG2D_LOADVTPMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1736
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1737
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1738
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1739
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1740
|
+
* > END SUBROUTINE\n
|
|
1741
|
+
*
|
|
1742
|
+
*/
|
|
1743
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtpMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
1744
|
+
|
|
1745
|
+
/**
|
|
1746
|
+
* \brief Load a mesh and multiple solutions in VTP (VTK) format from file.
|
|
1747
|
+
*
|
|
1748
|
+
* \param mesh pointer to the mesh structure.
|
|
1749
|
+
* \param sol pointer to the solution structure.
|
|
1750
|
+
* \param filename name of the file to load.
|
|
1751
|
+
*
|
|
1752
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1753
|
+
* format...), 1 on success.
|
|
1754
|
+
*
|
|
1755
|
+
* Read a mesh and a list of data fields in VTK vtp file format (.vtp extension). We
|
|
1756
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1757
|
+
*
|
|
1758
|
+
* \remark Fortran interface:
|
|
1759
|
+
* > SUBROUTINE MMG2D_LOADVTPMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1760
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1761
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1762
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1763
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1764
|
+
* > END SUBROUTINE\n
|
|
1765
|
+
*
|
|
1766
|
+
*/
|
|
1767
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtpMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
1768
|
+
|
|
1769
|
+
/**
|
|
1770
|
+
* \brief Load a mesh and possibly data in VTU (VTK) format from file.
|
|
1771
|
+
*
|
|
1772
|
+
* \param mesh pointer to the mesh structure.
|
|
1773
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1774
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1775
|
+
* \param filename name of the file to load.
|
|
1776
|
+
*
|
|
1777
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1778
|
+
* format...), 1 on success.
|
|
1779
|
+
*
|
|
1780
|
+
* Read a mesh and 0 or 1 data fields in VTK vtu file format (.vtu extension). We
|
|
1781
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1782
|
+
*
|
|
1783
|
+
* \remark Fortran interface:
|
|
1784
|
+
* > SUBROUTINE MMG2D_LOADVTUMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1785
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1786
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1787
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1788
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1789
|
+
* > END SUBROUTINE\n
|
|
1790
|
+
*
|
|
1791
|
+
*/
|
|
1792
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtuMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
1793
|
+
|
|
1794
|
+
/**
|
|
1795
|
+
* \brief Load a mesh and multiple solutions in VTU (VTK) format from file.
|
|
1796
|
+
*
|
|
1797
|
+
* \param mesh pointer to the mesh structure.
|
|
1798
|
+
* \param sol pointer to the solution structure.
|
|
1799
|
+
* \param filename name of the file to load.
|
|
1800
|
+
*
|
|
1801
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1802
|
+
* format...), 1 on success.
|
|
1803
|
+
*
|
|
1804
|
+
* Read a mesh and a list of data fields in VTK vtu file format (.vtu extension). We
|
|
1805
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1806
|
+
*
|
|
1807
|
+
* \remark Fortran interface:
|
|
1808
|
+
* > SUBROUTINE MMG2D_LOADVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1809
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1810
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1811
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1812
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1813
|
+
* > END SUBROUTINE\n
|
|
1814
|
+
*
|
|
1815
|
+
*/
|
|
1816
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtuMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
1817
|
+
|
|
1818
|
+
/**
|
|
1819
|
+
* \brief Load a mesh and possibly data in VTK format from file.
|
|
1820
|
+
*
|
|
1821
|
+
* \param mesh pointer to the mesh structure.
|
|
1822
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1823
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1824
|
+
* \param filename name of the file to load.
|
|
1825
|
+
*
|
|
1826
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1827
|
+
* format...), 1 on success.
|
|
1828
|
+
*
|
|
1829
|
+
* Read mesh and 0 or 1 data fields in VTK file format (.vtk extension). We
|
|
1830
|
+
* read only low-order vertices, edges, triangles and quadrangles.
|
|
1831
|
+
*
|
|
1832
|
+
* \remark Fortran interface:
|
|
1833
|
+
* > SUBROUTINE MMG2D_LOADVTKMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1834
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,sol\n
|
|
1835
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1836
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1837
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1838
|
+
* > END SUBROUTINE\n
|
|
1839
|
+
*
|
|
1840
|
+
*/
|
|
1841
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtkMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
1842
|
+
|
|
1843
|
+
/**
|
|
1844
|
+
* \brief Load a mesh and multiple solutions in VTK format from file.
|
|
1845
|
+
*
|
|
1846
|
+
* \param mesh pointer to the mesh structure.
|
|
1847
|
+
* \param sol pointer to the solution structure.
|
|
1848
|
+
* \param filename name of the file to load.
|
|
1849
|
+
*
|
|
1850
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1851
|
+
* format...), 1 on success.
|
|
1852
|
+
*
|
|
1853
|
+
* This function reads a mesh and a list of data fields in VTK file format (.vtk
|
|
1854
|
+
* extension). We read only low-order vertices, edges, triangles and quadrangles.
|
|
1855
|
+
*
|
|
1856
|
+
* \remark Fortran interface:
|
|
1857
|
+
* > SUBROUTINE MMG2D_LOADVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1858
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1859
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1860
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1861
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1862
|
+
* > END SUBROUTINE\n
|
|
1863
|
+
*
|
|
1864
|
+
*/
|
|
1865
|
+
LIBMMG2D_EXPORT int MMG2D_loadVtkMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
1866
|
+
|
|
1867
|
+
/**
|
|
1868
|
+
* \brief Load a mesh and possibly a solution in .msh format from file.
|
|
1869
|
+
*
|
|
1870
|
+
* \param mesh pointer to the mesh structure.
|
|
1871
|
+
* \param sol pointer to the solution structure.
|
|
1872
|
+
* \param filename name of the file to load.
|
|
1873
|
+
*
|
|
1874
|
+
* \return 0 if the file is not found, -1 if failing for another reason (lack of
|
|
1875
|
+
* memory, file format...), 1 on success.
|
|
1876
|
+
*
|
|
1877
|
+
* This function reads a mesh and 0 or 1 data fields in MSH file format (.msh
|
|
1878
|
+
* extension). We read only low-order vertices, edges, triangles, and quadrangles.
|
|
1879
|
+
*
|
|
1880
|
+
* \remark Fortran interface:
|
|
1881
|
+
* > SUBROUTINE MMG2D_LOADMSHMESH(mesh,sol,filename,strlen0,retval)\n
|
|
1882
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1883
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1884
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1885
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1886
|
+
* > END SUBROUTINE\n
|
|
1887
|
+
*
|
|
1888
|
+
*/
|
|
1889
|
+
LIBMMG2D_EXPORT int MMG2D_loadMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
1890
|
+
|
|
1891
|
+
/**
|
|
1892
|
+
* \brief Load a mesh and all data from a file in MSH format.
|
|
1893
|
+
*
|
|
1894
|
+
* \param mesh pointer to the mesh structure.
|
|
1895
|
+
* \param sol pointer to a list of solution structures.
|
|
1896
|
+
* \param filename name of the file to load.
|
|
1897
|
+
*
|
|
1898
|
+
* \return 0 if the file is not found, -1 if failing for another reason (lack of
|
|
1899
|
+
* memory, file format...), 1 on success.
|
|
1900
|
+
*
|
|
1901
|
+
* This function reads a mesh and all data fields from a file in MSH file format
|
|
1902
|
+
* (.msh extension). We read only low-order vertices, edges, triangles,
|
|
1903
|
+
* quadrangles, tetrahedra and prisms.
|
|
1904
|
+
*
|
|
1905
|
+
* \remark Fortran interface:
|
|
1906
|
+
* > SUBROUTINE MMG2D_LOADMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
1907
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1908
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1909
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1910
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1911
|
+
* > END SUBROUTINE\n
|
|
1912
|
+
*
|
|
1913
|
+
*/
|
|
1914
|
+
LIBMMG2D_EXPORT int MMG2D_loadMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
1915
|
+
|
|
1916
|
+
/* FIXME: why is it called medit format and is this really specific for metrics? */
|
|
1917
|
+
/**
|
|
1918
|
+
* \brief Load a metric field (or other solution) in medit's .sol format.
|
|
1919
|
+
*
|
|
1920
|
+
* \param mesh pointer to the mesh structure.
|
|
1921
|
+
* \param sol pointer to the solution structure..
|
|
1922
|
+
* \param filename name of the solution file.
|
|
1923
|
+
*
|
|
1924
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1925
|
+
* format...), 1 on success.
|
|
1926
|
+
*
|
|
1927
|
+
* This function loads a metric field. The file in medit format must contain 1
|
|
1928
|
+
* solution: the metric.
|
|
1929
|
+
*
|
|
1930
|
+
* \remark Fortran interface:
|
|
1931
|
+
* > SUBROUTINE MMG2D_LOADSOL(mesh,sol,filename,strlen0,retval)\n
|
|
1932
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
1933
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
1934
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
1935
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
1936
|
+
* > END SUBROUTINE\n
|
|
1937
|
+
*
|
|
1938
|
+
*/
|
|
1939
|
+
LIBMMG2D_EXPORT int MMG2D_loadSol(MMG5_pMesh mesh,MMG5_pSol sol,const char * filename);
|
|
1940
|
+
|
|
1941
|
+
/**
|
|
1942
|
+
* \brief Read mesh data in a format determined by the filename extension.
|
|
1943
|
+
*
|
|
1944
|
+
* \param mesh pointer to the mesh structure.
|
|
1945
|
+
* \param met pointer to the metric structure or the NULL pointer.
|
|
1946
|
+
* \param sol pointer to the level-set structure or the NULL pointer.
|
|
1947
|
+
* \param filename name of the file to load.
|
|
1948
|
+
*
|
|
1949
|
+
* \return 0 if the file is not found, -1 if failing for another reason (insufficient memory, file
|
|
1950
|
+
* format...), 1 on success.
|
|
1951
|
+
*
|
|
1952
|
+
* \remark Fortran interface:
|
|
1953
|
+
* > SUBROUTINE MMG2D_LOADGENERICMESH(mesh,met,sol,filename,strlen0,retval)\n
|
|
1954
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,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
|
+
LIBMMG2D_EXPORT int MMG2D_loadGenericMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol,const char *filename);
|
|
1962
|
+
|
|
1963
|
+
/**
|
|
1964
|
+
* \brief Load one or more solutions in a solution file in medit file format.
|
|
1965
|
+
*
|
|
1966
|
+
* \param mesh pointer to the mesh structure.
|
|
1967
|
+
* \param sol pointer to the solutions array
|
|
1968
|
+
* \param filename name of the file to load.
|
|
1969
|
+
*
|
|
1970
|
+
* \return 0 if the file is not found, -1 if failing for another reason
|
|
1971
|
+
* (insufficient memory, file format...), 1 on success.
|
|
1972
|
+
*
|
|
1973
|
+
* Load 1 or more solutions in a solution file in medit file format
|
|
1974
|
+
*
|
|
1975
|
+
* \remark Fortran interface:
|
|
1976
|
+
* > SUBROUTINE MMG2D_LOADALLSOLS(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
|
+
LIBMMG2D_EXPORT int MMG2D_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char* filename);
|
|
1985
|
+
|
|
1986
|
+
/* FIXME: why is this here, neither implemented nor documented? */
|
|
1987
|
+
LIBMMG2D_EXPORT int MMG2D_loadVect(MMG5_pMesh ,char *);
|
|
1988
|
+
|
|
1989
|
+
/**
|
|
1990
|
+
* \brief Save a mesh in .mesh/.meshb format.
|
|
1991
|
+
*
|
|
1992
|
+
* \param mesh pointer to the mesh structure.
|
|
1993
|
+
* \param filename name of the readed file.
|
|
1994
|
+
* \return 0 or -1 on failure, 1 otherwise.
|
|
1995
|
+
*
|
|
1996
|
+
* \remark Fortran interface:
|
|
1997
|
+
* > SUBROUTINE MMG2D_SAVEMESH(mesh,filename,strlen0,retval)\n
|
|
1998
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
1999
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2000
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2001
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2002
|
+
* > END SUBROUTINE\n
|
|
2003
|
+
*
|
|
2004
|
+
*/
|
|
2005
|
+
LIBMMG2D_EXPORT int MMG2D_saveMesh(MMG5_pMesh ,const char *);
|
|
2006
|
+
|
|
2007
|
+
/**
|
|
2008
|
+
* \brief Save a mesh and optionally one data field in MSH format, ascii or
|
|
2009
|
+
* binary depending on the filename extension.
|
|
2010
|
+
*
|
|
2011
|
+
* \param mesh pointer to the mesh structure.
|
|
2012
|
+
* \param sol pointer to the solution structure.
|
|
2013
|
+
* \param filename name of the file to write.
|
|
2014
|
+
* \return 0 on failure, 1 otherwise.
|
|
2015
|
+
*
|
|
2016
|
+
* This function writes a mesh and optionally one data field in MSH file format
|
|
2017
|
+
* (.msh extension). It uses ASCII format for .msh extension, binary format for
|
|
2018
|
+
* .msb extension.
|
|
2019
|
+
*
|
|
2020
|
+
* \remark Fortran interface:
|
|
2021
|
+
* > SUBROUTINE MMG2D_SAVEMSHMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2022
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2023
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2024
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2025
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2026
|
+
* > END SUBROUTINE\n
|
|
2027
|
+
*
|
|
2028
|
+
*/
|
|
2029
|
+
LIBMMG2D_EXPORT int MMG2D_saveMshMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2030
|
+
|
|
2031
|
+
/**
|
|
2032
|
+
* \brief Save a mesh and multiple data fields in MSH format, ascii or binary
|
|
2033
|
+
* depending on the filename extension.
|
|
2034
|
+
*
|
|
2035
|
+
* \param mesh pointer to the mesh structure.
|
|
2036
|
+
* \param sol pointer to the solution structure.
|
|
2037
|
+
* \param filename name of the file to write.
|
|
2038
|
+
* \return 0 on failure, 1 otherwise.
|
|
2039
|
+
*
|
|
2040
|
+
* This function writes a mesh and a list of data fields in MSH file format (.msh extension).
|
|
2041
|
+
* It uses ASCII format for .msh extension, binary format for .mshb extension.
|
|
2042
|
+
*
|
|
2043
|
+
* \remark Fortran interface:
|
|
2044
|
+
* > SUBROUTINE MMG2D_SAVEMSHMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
2045
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2046
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2047
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2048
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2049
|
+
* > END SUBROUTINE\n
|
|
2050
|
+
*
|
|
2051
|
+
*/
|
|
2052
|
+
LIBMMG2D_EXPORT int MMG2D_saveMshMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2053
|
+
|
|
2054
|
+
/**
|
|
2055
|
+
* \brief Save a mesh and optionally one solution in VTK format.
|
|
2056
|
+
*
|
|
2057
|
+
* \param mesh pointer to the mesh structure.
|
|
2058
|
+
* \param sol pointer to the solution structure.
|
|
2059
|
+
* \param filename name of the file to write.
|
|
2060
|
+
* \return 0 on failure, 1 otherwise.
|
|
2061
|
+
*
|
|
2062
|
+
* This function writes a mesh and 0 or 1 data fields in Vtk file format (.vtk extension).
|
|
2063
|
+
*
|
|
2064
|
+
* \remark Fortran interface:
|
|
2065
|
+
* > SUBROUTINE MMG2D_SAVEVTKMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2066
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2067
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2068
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2069
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2070
|
+
* > END SUBROUTINE\n
|
|
2071
|
+
*
|
|
2072
|
+
*/
|
|
2073
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtkMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2074
|
+
|
|
2075
|
+
/**
|
|
2076
|
+
* \brief Save a mesh and multiple data fields in VTK format.
|
|
2077
|
+
*
|
|
2078
|
+
* \param mesh pointer to the mesh structure.
|
|
2079
|
+
* \param sol pointer to the solution structure.
|
|
2080
|
+
* \param filename name of the file to write.
|
|
2081
|
+
* \return 0 on failure, 1 otherwise.
|
|
2082
|
+
*
|
|
2083
|
+
* This function writes a mesh and a list of data fields in Vtk file format (.vtk extension).
|
|
2084
|
+
*
|
|
2085
|
+
* \remark Fortran interface:
|
|
2086
|
+
* > SUBROUTINE MMG2D_SAVEVTKMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
2087
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2088
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2089
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2090
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2091
|
+
* > END SUBROUTINE\n
|
|
2092
|
+
*
|
|
2093
|
+
*/
|
|
2094
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtkMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2095
|
+
|
|
2096
|
+
/**
|
|
2097
|
+
* \brief Save a mesh and optionally one data field in VTU format.
|
|
2098
|
+
*
|
|
2099
|
+
* \param mesh pointer to the mesh structure.
|
|
2100
|
+
* \param sol pointer to the solution structure.
|
|
2101
|
+
* \param filename name of the file to write.
|
|
2102
|
+
* \return 0 on failure, 1 otherwise.
|
|
2103
|
+
*
|
|
2104
|
+
* This function writes a mesh and 0 or 1 data fields in vtu Vtk file format (.vtu extension).
|
|
2105
|
+
*
|
|
2106
|
+
* \remark Fortran interface:
|
|
2107
|
+
* > SUBROUTINE MMG2D_SAVEVTUMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2108
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2109
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2110
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2111
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2112
|
+
* > END SUBROUTINE\n
|
|
2113
|
+
*
|
|
2114
|
+
*/
|
|
2115
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtuMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2116
|
+
|
|
2117
|
+
/**
|
|
2118
|
+
* \brief Save a mesh and multiple data fields in VTU format.
|
|
2119
|
+
*
|
|
2120
|
+
* \param mesh pointer to the mesh structure.
|
|
2121
|
+
* \param sol pointer to the solution structure.
|
|
2122
|
+
* \param filename name of the file to write.
|
|
2123
|
+
* \return 0 on failure, 1 otherwise.
|
|
2124
|
+
*
|
|
2125
|
+
* This function writes a mesh and a list of data fields in vtu Vtk file format (.vtu extension).
|
|
2126
|
+
*
|
|
2127
|
+
* \remark Fortran interface:
|
|
2128
|
+
* > SUBROUTINE MMG2D_SAVEVTUMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
2129
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2130
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2131
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2132
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2133
|
+
* > END SUBROUTINE\n
|
|
2134
|
+
*
|
|
2135
|
+
*/
|
|
2136
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtuMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2137
|
+
|
|
2138
|
+
/**
|
|
2139
|
+
* \brief Save a mesh and optionally one data field in VTP format.
|
|
2140
|
+
*
|
|
2141
|
+
* \param mesh pointer to the mesh structure.
|
|
2142
|
+
* \param sol pointer to the solution structure.
|
|
2143
|
+
* \param filename name of the file to write.
|
|
2144
|
+
* \return 0 on failure, 1 otherwise.
|
|
2145
|
+
*
|
|
2146
|
+
* This function writes a mesh and optionally one data field in polydata Vtk
|
|
2147
|
+
* file format (.vtp extension).
|
|
2148
|
+
*
|
|
2149
|
+
* \remark Fortran interface:
|
|
2150
|
+
* > SUBROUTINE MMG2D_SAVEVTPMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2151
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2152
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2153
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2154
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2155
|
+
* > END SUBROUTINE\n
|
|
2156
|
+
*
|
|
2157
|
+
*/
|
|
2158
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtpMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2159
|
+
|
|
2160
|
+
/**
|
|
2161
|
+
* \brief Save a mesh and multiple data fields in VTP format.
|
|
2162
|
+
*
|
|
2163
|
+
* \param mesh pointer to the mesh structure.
|
|
2164
|
+
* \param sol pointer to the solution structure.
|
|
2165
|
+
* \param filename name of the file to write.
|
|
2166
|
+
* \return 0 on failure, 1 otherwise.
|
|
2167
|
+
*
|
|
2168
|
+
* This function writes a mesh and a list of data fields in polydata Vtk file
|
|
2169
|
+
* format (.vtp extension).
|
|
2170
|
+
*
|
|
2171
|
+
* \remark Fortran interface:
|
|
2172
|
+
* > SUBROUTINE MMG2D_SAVEVTPMESH_AND_ALLDATA(mesh,sol,filename,strlen0,retval)\n
|
|
2173
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2174
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2175
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2176
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2177
|
+
* > END SUBROUTINE\n
|
|
2178
|
+
*
|
|
2179
|
+
*/
|
|
2180
|
+
LIBMMG2D_EXPORT int MMG2D_saveVtpMesh_and_allData(MMG5_pMesh mesh,MMG5_pSol *sol,const char *filename);
|
|
2181
|
+
|
|
2182
|
+
/**
|
|
2183
|
+
* \brief Save data in Tetgen's Triangle format.
|
|
2184
|
+
*
|
|
2185
|
+
* \param mesh pointer to the mesh structure.
|
|
2186
|
+
* \param filename name of the file to write
|
|
2187
|
+
* \return 0 or -1 on failure, 1 otherwise.
|
|
2188
|
+
*
|
|
2189
|
+
* This function saves mesh data in Triangle (or equivalent to Tetgen in 2D)
|
|
2190
|
+
* file format.
|
|
2191
|
+
*
|
|
2192
|
+
* \remark Fortran interface:
|
|
2193
|
+
* > SUBROUTINE MMG2D_SAVETETGENMESH(mesh,filename,strlen0,retval)\n
|
|
2194
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2195
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2196
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2197
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2198
|
+
* > END SUBROUTINE\n
|
|
2199
|
+
*
|
|
2200
|
+
*/
|
|
2201
|
+
LIBMMG2D_EXPORT int MMG2D_saveTetgenMesh(MMG5_pMesh ,const char *);
|
|
2202
|
+
|
|
2203
|
+
/**
|
|
2204
|
+
* \brief Save mesh data in a file whose format depends on the filename extension.
|
|
2205
|
+
*
|
|
2206
|
+
* \param mesh pointer to the mesh structure.
|
|
2207
|
+
* \param filename name of the file to write
|
|
2208
|
+
* \return 0 on failure, 1 otherwise.
|
|
2209
|
+
*
|
|
2210
|
+
* \remark Fortran interface:
|
|
2211
|
+
* > SUBROUTINE MMG2D_SAVEGENERICMESH(mesh,sol,filename,strlen0,retval)\n
|
|
2212
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2213
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2214
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2215
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2216
|
+
* > END SUBROUTINE\n
|
|
2217
|
+
*
|
|
2218
|
+
*/
|
|
2219
|
+
LIBMMG2D_EXPORT int MMG2D_saveGenericMesh(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename);
|
|
2220
|
+
|
|
2221
|
+
/**
|
|
2222
|
+
* \brief Save metric field in medit solution file format.
|
|
2223
|
+
*
|
|
2224
|
+
* \param mesh pointer to the mesh structure.
|
|
2225
|
+
* \param sol pointer to the solution structure.
|
|
2226
|
+
* \param filename name of the solution file to write.
|
|
2227
|
+
* \return 0 or -1 on failure, 1 otherwise.
|
|
2228
|
+
*
|
|
2229
|
+
* \remark Fortran interface:
|
|
2230
|
+
* > SUBROUTINE MMG2D_SAVESOL(mesh,sol,filename,strlen0,retval)\n
|
|
2231
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2232
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2233
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2234
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2235
|
+
* > END SUBROUTINE\n
|
|
2236
|
+
*
|
|
2237
|
+
*/
|
|
2238
|
+
LIBMMG2D_EXPORT int MMG2D_saveSol(MMG5_pMesh mesh,MMG5_pSol sol ,const char *filename);
|
|
2239
|
+
|
|
2240
|
+
/**
|
|
2241
|
+
* \brief Save one or more solutions in a solution file in medit file format.
|
|
2242
|
+
*
|
|
2243
|
+
* \param mesh pointer to the mesh structure.
|
|
2244
|
+
* \param sol pointer to the solutions array
|
|
2245
|
+
* \param filename name of the solution file.
|
|
2246
|
+
* \return 0 or -1 on failure, 1 otherwise.
|
|
2247
|
+
*
|
|
2248
|
+
* \remark Fortran interface:
|
|
2249
|
+
* > SUBROUTINE MMG2D_SAVEALLSOLS(mesh,sol,filename,strlen0,retval)\n
|
|
2250
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2251
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: filename\n
|
|
2252
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2253
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2254
|
+
* > END SUBROUTINE\n
|
|
2255
|
+
*
|
|
2256
|
+
*/
|
|
2257
|
+
LIBMMG2D_EXPORT int MMG2D_saveAllSols(MMG5_pMesh mesh,MMG5_pSol *sol ,const char *filename);
|
|
2258
|
+
|
|
2259
|
+
/* FIXME: why is this here? */
|
|
2260
|
+
LIBMMG2D_EXPORT int MMG2D_saveVect(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename,double lambda);
|
|
2261
|
+
|
|
2262
|
+
/**
|
|
2263
|
+
* \brief Main "program" for the mesh adaptation library.
|
|
2264
|
+
*
|
|
2265
|
+
* \param mesh pointer to the mesh structure.
|
|
2266
|
+
* \param sol pointer to a sol structure (metric).
|
|
2267
|
+
* \return \ref MMG5_SUCCESS if successful, \ref MMG5_LOWFAILURE in case there is a failure
|
|
2268
|
+
* but a conform mesh is returned and \ref MMG5_STRONGFAILURE if there is a failure and we
|
|
2269
|
+
* can't save the mesh.
|
|
2270
|
+
*
|
|
2271
|
+
* This function adapts a given mesh, trying to improve the quality, under the
|
|
2272
|
+
* given metric and parameters.
|
|
2273
|
+
*
|
|
2274
|
+
* \remark Fortran interface:
|
|
2275
|
+
* > SUBROUTINE MMG2D_MMG2DLIB(mesh,sol,retval)\n
|
|
2276
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2277
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2278
|
+
* > END SUBROUTINE\n
|
|
2279
|
+
*
|
|
2280
|
+
*/
|
|
2281
|
+
LIBMMG2D_EXPORT int MMG2D_mmg2dlib(MMG5_pMesh mesh,MMG5_pSol sol);
|
|
2282
|
+
|
|
2283
|
+
/**
|
|
2284
|
+
* \brief Main "program" for the mesh generation library.
|
|
2285
|
+
*
|
|
2286
|
+
* \param mesh pointer to the mesh structure.
|
|
2287
|
+
* \param sol pointer to a sol structure (metric).
|
|
2288
|
+
* \return \ref MMG5_SUCCESS if successful, \ref MMG5_LOWFAILURE if there is a failure
|
|
2289
|
+
* but a conform mesh is returned and \ref MMG5_STRONGFAILURE if there is a failure and we
|
|
2290
|
+
* can't save the mesh.
|
|
2291
|
+
*
|
|
2292
|
+
* FIXME: This function creates a triangular mesh from a given polygon, right?
|
|
2293
|
+
*
|
|
2294
|
+
* \remark Fortran interface:
|
|
2295
|
+
* > SUBROUTINE MMG2D_MMG2DMESH(mesh,sol,retval)\n
|
|
2296
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2297
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2298
|
+
* > END SUBROUTINE\n
|
|
2299
|
+
*
|
|
2300
|
+
*/
|
|
2301
|
+
LIBMMG2D_EXPORT int MMG2D_mmg2dmesh(MMG5_pMesh mesh,MMG5_pSol sol);
|
|
2302
|
+
|
|
2303
|
+
/**
|
|
2304
|
+
* \brief Main "program" for the level-set discretization library.
|
|
2305
|
+
*
|
|
2306
|
+
* \param mesh pointer to the mesh structure.
|
|
2307
|
+
* \param sol pointer to a sol structure (level-set function).
|
|
2308
|
+
* \param met pointer to a sol structure (metric).
|
|
2309
|
+
* \return \ref MMG5_SUCCESS if successful, \ref MMG5_LOWFAILURE if there is a failure
|
|
2310
|
+
* but a conform mesh is saved and \ref MMG5_STRONGFAILURE if there is a failure and we
|
|
2311
|
+
* can't save the mesh.
|
|
2312
|
+
*
|
|
2313
|
+
* This is the main program for the level-set discretization library. If a
|
|
2314
|
+
* metric \a met is provided, it is used to adapt the mesh.
|
|
2315
|
+
*
|
|
2316
|
+
* \remark Fortran interface:
|
|
2317
|
+
* > SUBROUTINE MMG2D_MMG2DLS(mesh,sol,met,retval)\n
|
|
2318
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2319
|
+
* > MMG5_DATA_PTR_T :: met\n
|
|
2320
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2321
|
+
* > END SUBROUTINE\n
|
|
2322
|
+
*
|
|
2323
|
+
*/
|
|
2324
|
+
LIBMMG2D_EXPORT int MMG2D_mmg2dls(MMG5_pMesh mesh,MMG5_pSol sol,MMG5_pSol met) ;
|
|
2325
|
+
|
|
2326
|
+
/**
|
|
2327
|
+
* \brief Main "program" for the rigid-body movement library.
|
|
2328
|
+
*
|
|
2329
|
+
* \param mesh pointer to the mesh structure.
|
|
2330
|
+
* \param sol pointer to a sol structure (displacement).
|
|
2331
|
+
* \param disp pointer to a sol (displacement for the lagrangian motion
|
|
2332
|
+
* mode) structure.
|
|
2333
|
+
* \return \ref MMG5_SUCCESS if success, \ref MMG5_LOWFAILURE if there is a failure
|
|
2334
|
+
* but a conform mesh is saved and \ref MMG5_STRONGFAILURE if there is a failure and we
|
|
2335
|
+
* can't save the mesh.
|
|
2336
|
+
*
|
|
2337
|
+
* \remark Fortran interface:
|
|
2338
|
+
* > SUBROUTINE MMG2D_MMG2DMOV(mesh,sol,disp,retval)\n
|
|
2339
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol,disp\n
|
|
2340
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2341
|
+
* > END SUBROUTINE\n
|
|
2342
|
+
*
|
|
2343
|
+
*/
|
|
2344
|
+
LIBMMG2D_EXPORT int MMG2D_mmg2dmov(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol disp);
|
|
2345
|
+
|
|
2346
|
+
/* Tools for the library */
|
|
2347
|
+
|
|
2348
|
+
/**
|
|
2349
|
+
* \brief Print the default parameters values.
|
|
2350
|
+
*
|
|
2351
|
+
* \param mesh pointer to the mesh structure.
|
|
2352
|
+
* \return 0 on failure, 1 on success.
|
|
2353
|
+
*
|
|
2354
|
+
* \remark Fortran interface:
|
|
2355
|
+
* > SUBROUTINE MMG2D_DEFAULTVALUES(mesh,retval)\n
|
|
2356
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2357
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2358
|
+
* > END SUBROUTINE\n
|
|
2359
|
+
*
|
|
2360
|
+
*/
|
|
2361
|
+
LIBMMG2D_EXPORT int MMG2D_defaultValues(MMG5_pMesh mesh);
|
|
2362
|
+
|
|
2363
|
+
/**
|
|
2364
|
+
* \brief Store command line arguments.
|
|
2365
|
+
*
|
|
2366
|
+
* \param argc number of command line arguments.
|
|
2367
|
+
* \param argv command line arguments.
|
|
2368
|
+
* \param mesh pointer to the mesh structure.
|
|
2369
|
+
* \param met pointer to a metric
|
|
2370
|
+
* \param sol pointer to a level-set or displacement function
|
|
2371
|
+
* \return 1 if we want to run Mmg after, 0 if not or in case of failure
|
|
2372
|
+
*
|
|
2373
|
+
* \remark no matching fortran function.
|
|
2374
|
+
*
|
|
2375
|
+
*/
|
|
2376
|
+
LIBMMG2D_EXPORT int MMG2D_parsar(int argc,char *argv[],MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol sol);
|
|
2377
|
+
|
|
2378
|
+
/**
|
|
2379
|
+
* \brief Read a file containing Local parameters (.mmg2d extension)
|
|
2380
|
+
*
|
|
2381
|
+
* \param mesh pointer to the mesh structure.
|
|
2382
|
+
* \param met pointer to the sol structure.
|
|
2383
|
+
* \return 1.
|
|
2384
|
+
*
|
|
2385
|
+
* This function reads a local parameters file. This file must have the same
|
|
2386
|
+
* name as the mesh with the \a .mmg2d extension or must be named \a
|
|
2387
|
+
* DEFAULT.mmg2d.
|
|
2388
|
+
*
|
|
2389
|
+
* \remark Fortran interface:
|
|
2390
|
+
* > SUBROUTINE MMG2D_PARSOP(mesh,met,retval)\n
|
|
2391
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2392
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2393
|
+
* > END SUBROUTINE\n
|
|
2394
|
+
*
|
|
2395
|
+
*/
|
|
2396
|
+
LIBMMG2D_EXPORT int MMG2D_parsop(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2397
|
+
|
|
2398
|
+
/**
|
|
2399
|
+
* \brief Print help for mmg2d options.
|
|
2400
|
+
*
|
|
2401
|
+
* \param prog pointer to the program name.
|
|
2402
|
+
* \param return 1 on success, 0 on failure.
|
|
2403
|
+
*
|
|
2404
|
+
* \remark Fortran interface:
|
|
2405
|
+
* > SUBROUTINE MMG2D_USAGE(prog,strlen0,retval)\n
|
|
2406
|
+
* > CHARACTER(LEN=*), INTENT(IN) :: prog\n
|
|
2407
|
+
* > INTEGER, INTENT(IN) :: strlen0\n
|
|
2408
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2409
|
+
* > END SUBROUTINE\n
|
|
2410
|
+
*
|
|
2411
|
+
*/
|
|
2412
|
+
LIBMMG2D_EXPORT int MMG2D_usage(char *prog);
|
|
2413
|
+
|
|
2414
|
+
/**
|
|
2415
|
+
* \brief Compute unit tensor according to the lengths of the
|
|
2416
|
+
* edges passing through a vertex.
|
|
2417
|
+
*
|
|
2418
|
+
* \param mesh pointer to the mesh structure
|
|
2419
|
+
* \param met pointer to the sol structure
|
|
2420
|
+
* \return 1 on success
|
|
2421
|
+
*
|
|
2422
|
+
* \remark Fortran interface:
|
|
2423
|
+
* > SUBROUTINE MMG2D_DOSOL(mesh,met,retval)\n
|
|
2424
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2425
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2426
|
+
* > END SUBROUTINE\n
|
|
2427
|
+
*
|
|
2428
|
+
*/
|
|
2429
|
+
LIBMMG2D_EXPORT extern int (*MMG2D_doSol)(MMG5_pMesh mesh ,MMG5_pSol met );
|
|
2430
|
+
|
|
2431
|
+
/**
|
|
2432
|
+
* \brief Compute a constant size map according to the hsiz, hmin and hmax parameters.
|
|
2433
|
+
*
|
|
2434
|
+
* \param mesh pointer to the mesh structure
|
|
2435
|
+
* \param met pointer to the sol structure
|
|
2436
|
+
* \return 1 on success
|
|
2437
|
+
*
|
|
2438
|
+
* This function computes a constant size map according to mesh->info.hsiz,
|
|
2439
|
+
* mesh->info.hmin and mesh->info.hmax. It updates these 3 values if not
|
|
2440
|
+
* compatible.
|
|
2441
|
+
*
|
|
2442
|
+
* \remark Fortran interface:
|
|
2443
|
+
* > SUBROUTINE MMG2D_SET_CONSTANTSIZE(mesh,met,retval)\n
|
|
2444
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met\n
|
|
2445
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2446
|
+
* > END SUBROUTINE\n
|
|
2447
|
+
*
|
|
2448
|
+
*/
|
|
2449
|
+
LIBMMG2D_EXPORT int MMG2D_Set_constantSize(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2450
|
+
|
|
2451
|
+
/**
|
|
2452
|
+
* \brief Set function pointers for length, caltri... depending if case is iso or aniso
|
|
2453
|
+
*
|
|
2454
|
+
* \param mesh pointer to the mesh structure.
|
|
2455
|
+
* \param met pointer to a sol structure.
|
|
2456
|
+
*
|
|
2457
|
+
* \remark Fortran interface:
|
|
2458
|
+
* > SUBROUTINE MMG2D_SETFUNC(mesh,met)\n
|
|
2459
|
+
* > MMG5_DATA_PTR_T, INTENT(IN) :: mesh,met\n
|
|
2460
|
+
* > END SUBROUTINE\n
|
|
2461
|
+
*
|
|
2462
|
+
*/
|
|
2463
|
+
LIBMMG2D_EXPORT void MMG2D_setfunc(MMG5_pMesh mesh,MMG5_pSol met);
|
|
2464
|
+
|
|
2465
|
+
/* FIXME: is this description correct? */
|
|
2466
|
+
/**
|
|
2467
|
+
* \brief Get the number of non-boundary edges.
|
|
2468
|
+
*
|
|
2469
|
+
* \param mesh pointer to the mesh structure.
|
|
2470
|
+
* \param nb_edges pointer to the number of non boundary edges.
|
|
2471
|
+
* \return 0 on failure, 1 otherwise.
|
|
2472
|
+
*
|
|
2473
|
+
* This function extracts the number of non boundary edges (for DG methods for
|
|
2474
|
+
* example). An edge is boundary if it is located at the interface of two
|
|
2475
|
+
* domains with different references, if it belongs to one triangle only or if
|
|
2476
|
+
* it is a singular edge (ridge or required).
|
|
2477
|
+
*
|
|
2478
|
+
* Append these edges to the list of edges.
|
|
2479
|
+
*
|
|
2480
|
+
* \warning reallocate the edge array and append the internal edges. This may
|
|
2481
|
+
* modify the behaviour of other functions.
|
|
2482
|
+
*
|
|
2483
|
+
* \remark Fortran interface:
|
|
2484
|
+
* > SUBROUTINE MMG2D_GET_NUMBEROFNONBDYEDGES(mesh,nb_edges,retval)\n
|
|
2485
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
2486
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: nb_edges\n
|
|
2487
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2488
|
+
* > END SUBROUTINE\n
|
|
2489
|
+
*
|
|
2490
|
+
*/
|
|
2491
|
+
LIBMMG2D_EXPORT int MMG2D_Get_numberOfNonBdyEdges(MMG5_pMesh mesh, MMG5_int* nb_edges);
|
|
2492
|
+
|
|
2493
|
+
/**
|
|
2494
|
+
* \brief Get vertices and reference of a non-boundary edge.
|
|
2495
|
+
*
|
|
2496
|
+
* \param mesh pointer to the mesh structure.
|
|
2497
|
+
* \param e0 pointer to the first extremity of the edge.
|
|
2498
|
+
* \param e1 pointer to the second extremity of the edge.
|
|
2499
|
+
* \param ref pointer to the edge reference.
|
|
2500
|
+
* \param idx index of the non boundary edge to get (between 1 and nb_edges)
|
|
2501
|
+
* \return 0 on failure, 1 otherwise.
|
|
2502
|
+
*
|
|
2503
|
+
* This function returns the extremities \a e0, \a e1 and reference \a ref of
|
|
2504
|
+
* the idx^th non boundary edge (for DG methods for example). An edge is
|
|
2505
|
+
* boundary if it is located at the interface of 2 domains with different
|
|
2506
|
+
* references, if it belongs to one triangle only or if it is a singular edge
|
|
2507
|
+
* (ridge or required).
|
|
2508
|
+
*
|
|
2509
|
+
* \remark Fortran interface:
|
|
2510
|
+
* > SUBROUTINE MMG2D_GET_NONBDYEDGE(mesh,e0,e1,ref,idx,retval)\n
|
|
2511
|
+
* > MMG5_DATA_PTR_T,INTENT(INOUT) :: mesh\n
|
|
2512
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT):: e0,e1\n
|
|
2513
|
+
* > INTEGER(MMG5F_INT) :: ref\n
|
|
2514
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: idx\n
|
|
2515
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2516
|
+
* > END SUBROUTINE\n
|
|
2517
|
+
*
|
|
2518
|
+
*/
|
|
2519
|
+
LIBMMG2D_EXPORT int MMG2D_Get_nonBdyEdge(MMG5_pMesh mesh, MMG5_int* e0, MMG5_int* e1, MMG5_int* ref, MMG5_int idx);
|
|
2520
|
+
|
|
2521
|
+
/**
|
|
2522
|
+
* \brief Return adjacent elements of a triangle.
|
|
2523
|
+
*
|
|
2524
|
+
* \param mesh pointer to the mesh structure.
|
|
2525
|
+
* \param kel triangle index.
|
|
2526
|
+
* \param listri pointer to the array of indices of the three adjacent
|
|
2527
|
+
* triangles of the elt \a kel (the index is 0 if there is no adjacent).
|
|
2528
|
+
* \return 1.
|
|
2529
|
+
*
|
|
2530
|
+
* Find the indices of the 3 adjacent elements of triangle \a
|
|
2531
|
+
* kel. \f$v_i = 0\f$ if the \f$i^{th}\f$ face has no adjacent element
|
|
2532
|
+
* (so we are on a boundary face).
|
|
2533
|
+
*
|
|
2534
|
+
* \remark Fortran interface:
|
|
2535
|
+
* > SUBROUTINE MMG2D_GET_ADJATRI(mesh,kel,listri,retval)\n
|
|
2536
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2537
|
+
* > INTEGER, INTENT(IN) :: kel\n
|
|
2538
|
+
* > INTEGER, DIMENSION(3), INTENT(OUT) :: listri\n
|
|
2539
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2540
|
+
* > END SUBROUTINE\n
|
|
2541
|
+
*
|
|
2542
|
+
*/
|
|
2543
|
+
LIBMMG2D_EXPORT int MMG2D_Get_adjaTri(MMG5_pMesh mesh, MMG5_int kel, MMG5_int listri[3]);
|
|
2544
|
+
|
|
2545
|
+
/**
|
|
2546
|
+
* \brief Return adjacent vertices of a triangle.
|
|
2547
|
+
*
|
|
2548
|
+
* \param mesh pointer to the mesh structure.
|
|
2549
|
+
* \param ip vertex index.
|
|
2550
|
+
* \param lispoi pointer to an array of size MMG2D_LMAX that will contain
|
|
2551
|
+
* the indices of adjacent vertices to the vertex \a ip.
|
|
2552
|
+
* \return nbpoi the number of adjacent vertices if success, 0 on failure.
|
|
2553
|
+
*
|
|
2554
|
+
* Find the indices of the adjacent vertices of the vertex \a
|
|
2555
|
+
* ip.
|
|
2556
|
+
*
|
|
2557
|
+
* \remark Fortran interface:
|
|
2558
|
+
* > SUBROUTINE MMG2D_GET_ADJAVERTICES(mesh,ip,lispoi,retval)\n
|
|
2559
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2560
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ip\n
|
|
2561
|
+
* > INTEGER(MMG5F_INT), DIMENSION(MMG2D_LMAX), INTENT(OUT) :: lispoi\n
|
|
2562
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT) :: retval\n
|
|
2563
|
+
* > END SUBROUTINE\n
|
|
2564
|
+
*
|
|
2565
|
+
*/
|
|
2566
|
+
LIBMMG2D_EXPORT MMG5_int MMG2D_Get_adjaVertices(MMG5_pMesh mesh, MMG5_int ip, MMG5_int lispoi[MMG2D_LMAX]);
|
|
2567
|
+
|
|
2568
|
+
/**
|
|
2569
|
+
* \brief Return adjacent vertices of a triangle.
|
|
2570
|
+
*
|
|
2571
|
+
* \param mesh pointer to the mesh structure.
|
|
2572
|
+
* \param ip vertex index.
|
|
2573
|
+
* \param start index of a triangle holding \a ip.
|
|
2574
|
+
* \param lispoi pointer to an array of size MMG2D_LMAX that will contain
|
|
2575
|
+
* the indices of adjacent vertices to the vertex \a ip.
|
|
2576
|
+
* \return nbpoi the number of adjacent vertices if success, 0 on failure.
|
|
2577
|
+
*
|
|
2578
|
+
* Find the indices of the adjacent vertices of the vertex \a
|
|
2579
|
+
* ip of the triangle \a start.
|
|
2580
|
+
*
|
|
2581
|
+
* \remark Fortran interface:
|
|
2582
|
+
* > SUBROUTINE MMG2D_GET_ADJAVERTICESFAST(mesh,ip,start,lispoi,retval)\n
|
|
2583
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2584
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ip,start\n
|
|
2585
|
+
* > INTEGER(MMG5F_INT), DIMENSION(MMG2D_LMAX), INTENT(OUT) :: lispoi\n
|
|
2586
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT) :: retval\n
|
|
2587
|
+
* > END SUBROUTINE\n
|
|
2588
|
+
*
|
|
2589
|
+
*/
|
|
2590
|
+
LIBMMG2D_EXPORT MMG5_int MMG2D_Get_adjaVerticesFast(MMG5_pMesh mesh, MMG5_int ip,MMG5_int start,
|
|
2591
|
+
MMG5_int lispoi[MMG2D_LMAX]);
|
|
2592
|
+
|
|
2593
|
+
/**
|
|
2594
|
+
* \brief Find a triangle given an adjacent triangle and an edge number.
|
|
2595
|
+
*
|
|
2596
|
+
* \param mesh pointer to the mesh structure.
|
|
2597
|
+
* \param ked index of the boundary edge.
|
|
2598
|
+
* \param ktri pointer to the index of the tri (filled by the function).
|
|
2599
|
+
* \param ied pointer to the index of the edge of the triangle \a ktri that
|
|
2600
|
+
* correspond to the boundary edge \a ked.
|
|
2601
|
+
* \return 0 on failure, 1 otherwise
|
|
2602
|
+
*
|
|
2603
|
+
* Fill \a ktri by the index of the triangle to which belong a boundary edge
|
|
2604
|
+
* and \a ied by the index of the edge of the triangle that correspond to the
|
|
2605
|
+
* edge.
|
|
2606
|
+
*
|
|
2607
|
+
* \remark Fortran interface:
|
|
2608
|
+
* > SUBROUTINE MMG2D_GET_TRIFROMEDGE(mesh,ked,ktri,ied,retval)\n
|
|
2609
|
+
* > MMG5_DATA_PTR_T, INTENT(IN) :: mesh\n
|
|
2610
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ked\n
|
|
2611
|
+
* > INTEGER(MMG5F_INT), INTENT(OUT) :: ktri\n
|
|
2612
|
+
* > INTEGER, INTENT(OUT) :: retval,ied\n
|
|
2613
|
+
* > END SUBROUTINE\n
|
|
2614
|
+
*
|
|
2615
|
+
*/
|
|
2616
|
+
LIBMMG2D_EXPORT int MMG2D_Get_triFromEdge(MMG5_pMesh mesh, MMG5_int ked, MMG5_int *ktri, int *ied);
|
|
2617
|
+
|
|
2618
|
+
/**
|
|
2619
|
+
* \brief Find two triangles given the edge that they share.
|
|
2620
|
+
*
|
|
2621
|
+
* \param mesh pointer to the mesh structure.
|
|
2622
|
+
* \param ked index of the boundary edge.
|
|
2623
|
+
* \param ktri pointer to an array of size 2 to fill by the indices of the
|
|
2624
|
+
* triangles that share the edge \a ked (filled by the function).
|
|
2625
|
+
* \param ied pointer to an array of size two to fill by the indices of the
|
|
2626
|
+
* edge in each triangle.
|
|
2627
|
+
*
|
|
2628
|
+
* \return 0 on failure, 1 otherwise
|
|
2629
|
+
*
|
|
2630
|
+
* Fill \a ktri by the indices of the triangles to which belong a boundary edge
|
|
2631
|
+
* and \a ied by the indices of the matching edge in each triangle. If \a ked
|
|
2632
|
+
* belongs to one triangle only, ktri[1] = ied[1] = 0.
|
|
2633
|
+
*
|
|
2634
|
+
* \remark Fortran interface:
|
|
2635
|
+
* > SUBROUTINE MMG2D_GET_TRISFROMEDGE(mesh,ked,ktri,ied,retval)\n
|
|
2636
|
+
* > MMG5_DATA_PTR_T, INTENT(IN) :: mesh\n
|
|
2637
|
+
* > INTEGER(MMG5F_INT), INTENT(IN) :: ked\n
|
|
2638
|
+
* > INTEGER(MMG5F_INT), DIMENSION(2),INTENT(OUT) :: ktri\n
|
|
2639
|
+
* > INTEGER, INTENT(OUT) :: retval,ied\n
|
|
2640
|
+
* > END SUBROUTINE\n
|
|
2641
|
+
*
|
|
2642
|
+
*/
|
|
2643
|
+
LIBMMG2D_EXPORT int MMG2D_Get_trisFromEdge(MMG5_pMesh mesh, MMG5_int ked, MMG5_int ktri[2],int ied[2]);
|
|
2644
|
+
|
|
2645
|
+
/**
|
|
2646
|
+
* \brief Compute the real eigenvalues and eigenvectors of a symmetric matrix
|
|
2647
|
+
*
|
|
2648
|
+
* \param m upper part of a symMetric matrix diagonalizable in |R
|
|
2649
|
+
* \param lambda array of the metric eigenvalues
|
|
2650
|
+
* \param vp array of the metric eigenvectors
|
|
2651
|
+
*
|
|
2652
|
+
* \return the order of the eigenvalues
|
|
2653
|
+
*
|
|
2654
|
+
* This function computes the real eigenvalues and eigenvectors of a symmetric matrix m
|
|
2655
|
+
* whose upper part is provided (m11, m12, m22, in this order).
|
|
2656
|
+
*
|
|
2657
|
+
* lambda[0] is the eigenvalue associated to the eigenvector ( v[0][0], v[0,1] )
|
|
2658
|
+
* in C and to the eigenvector v(1,:) in fortran
|
|
2659
|
+
*
|
|
2660
|
+
* lambda[1] is the eigenvalue associated to the eigenvector ( v[1][0], v[1,1] )
|
|
2661
|
+
* in C and to the eigenvector v(2,:) in fortran
|
|
2662
|
+
*
|
|
2663
|
+
* \remark Fortran interface:
|
|
2664
|
+
* > SUBROUTINE MMG2D_COMPUTE_EIGENV(m,lambda,vp,retval)\n
|
|
2665
|
+
* > REAL(KIND=8), INTENT(IN) :: m(*)\n
|
|
2666
|
+
* > REAL(KIND=8), INTENT(OUT) :: lambda(*),vp(*)\n
|
|
2667
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2668
|
+
* > END SUBROUTINE\n
|
|
2669
|
+
*
|
|
2670
|
+
*/
|
|
2671
|
+
LIBMMG2D_EXPORT int MMG2D_Compute_eigenv(double m[3],double lambda[2],double vp[2][2]);
|
|
2672
|
+
|
|
2673
|
+
/**
|
|
2674
|
+
* \brief Reset the vertex tags.
|
|
2675
|
+
*
|
|
2676
|
+
* \param mesh pointer to the mesh structure
|
|
2677
|
+
*
|
|
2678
|
+
* This function resets the tags of all vertices. Be careful: all the tags are deleted.
|
|
2679
|
+
*
|
|
2680
|
+
* \remark Fortran interface:
|
|
2681
|
+
* > SUBROUTINE MMG2D_RESET_VERTICESTAGS(mesh)\n
|
|
2682
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2683
|
+
* > END SUBROUTINE\n
|
|
2684
|
+
*
|
|
2685
|
+
*/
|
|
2686
|
+
LIBMMG2D_EXPORT void MMG2D_Reset_verticestags(MMG5_pMesh mesh);
|
|
2687
|
+
|
|
2688
|
+
/**
|
|
2689
|
+
* \brief Free the mesh elements (and the adjacency information).
|
|
2690
|
+
*
|
|
2691
|
+
* \param mesh pointer to the mesh structure
|
|
2692
|
+
*
|
|
2693
|
+
* \remark Fortran interface:
|
|
2694
|
+
* > SUBROUTINE MMG2D_FREE_TRIANGLES(mesh)\n
|
|
2695
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2696
|
+
* > END SUBROUTINE\n
|
|
2697
|
+
*
|
|
2698
|
+
*/
|
|
2699
|
+
LIBMMG2D_EXPORT void MMG2D_Free_triangles(MMG5_pMesh mesh);
|
|
2700
|
+
|
|
2701
|
+
/**
|
|
2702
|
+
* \brief Free the mesh edges (and the associated xpoints).
|
|
2703
|
+
*
|
|
2704
|
+
* \param mesh pointer to the mesh structure
|
|
2705
|
+
*
|
|
2706
|
+
* \remark Fortran interface:
|
|
2707
|
+
* > SUBROUTINE MMG2D_FREE_EDGES(mesh)\n
|
|
2708
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh\n
|
|
2709
|
+
* > END SUBROUTINE\n
|
|
2710
|
+
*
|
|
2711
|
+
*/
|
|
2712
|
+
LIBMMG2D_EXPORT void MMG2D_Free_edges(MMG5_pMesh mesh);
|
|
2713
|
+
|
|
2714
|
+
/**
|
|
2715
|
+
* \brief Free the solution.
|
|
2716
|
+
*
|
|
2717
|
+
* \param mesh pointer to the mesh structure
|
|
2718
|
+
* \param sol pointer to the solution structure
|
|
2719
|
+
*
|
|
2720
|
+
* \remark Fortran interface:
|
|
2721
|
+
* > SUBROUTINE MMG2D_FREE_SOLUTIONS(mesh,sol)\n
|
|
2722
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,sol\n
|
|
2723
|
+
* > END SUBROUTINE\n
|
|
2724
|
+
*
|
|
2725
|
+
*/
|
|
2726
|
+
LIBMMG2D_EXPORT void MMG2D_Free_solutions(MMG5_pMesh mesh,MMG5_pSol sol);
|
|
2727
|
+
|
|
2728
|
+
|
|
2729
|
+
/**
|
|
2730
|
+
* \brief Set common function pointers between mmgs and mmg2d to the matching mmg2d
|
|
2731
|
+
* functions.
|
|
2732
|
+
*/
|
|
2733
|
+
LIBMMG2D_EXPORT void MMG2D_Set_commonFunc(void);
|
|
2734
|
+
|
|
2735
|
+
/**
|
|
2736
|
+
* \brief Normalize the mesh and size information.
|
|
2737
|
+
*
|
|
2738
|
+
* \param mesh pointer to the mesh structure.
|
|
2739
|
+
* \param met pointer to the metric structure.
|
|
2740
|
+
* \param ls pointer to a solution structure (level-set or displacement).
|
|
2741
|
+
*
|
|
2742
|
+
* \return 1 on success, 0 in case of failure (computed bounding box too small
|
|
2743
|
+
* or one af the anisotropic input metric is not valid).
|
|
2744
|
+
*
|
|
2745
|
+
* This function scales the mesh and the size information between 0 and 1.
|
|
2746
|
+
* Compute a default value for the hmin/hmax parameters if needed.
|
|
2747
|
+
*
|
|
2748
|
+
* \remark Fortran interface:
|
|
2749
|
+
* > SUBROUTINE MMG2D_SCALEMESH(mesh,met,ls,retval)\n
|
|
2750
|
+
* > MMG5_DATA_PTR_T, INTENT(INOUT) :: mesh,met,ls\n
|
|
2751
|
+
* > INTEGER, INTENT(OUT) :: retval\n
|
|
2752
|
+
* > END SUBROUTINE\n
|
|
2753
|
+
*
|
|
2754
|
+
*/
|
|
2755
|
+
LIBMMG2D_EXPORT int MMG2D_scaleMesh(MMG5_pMesh mesh,MMG5_pSol met,MMG5_pSol ls);
|
|
2756
|
+
|
|
2757
|
+
#ifdef __cplusplus
|
|
2758
|
+
}
|
|
2759
|
+
#endif
|
|
2760
|
+
|
|
2761
|
+
#endif
|