mmgpy 0.1.1__cp310-cp310-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.

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