mmgpy 0.2.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. bin/__init__.py +10 -0
  2. bin/concrt140.dll +0 -0
  3. bin/mmg.dll +0 -0
  4. bin/mmg2d.dll +0 -0
  5. bin/mmg2d_O3.exe +0 -0
  6. bin/mmg3d.dll +0 -0
  7. bin/mmg3d_O3.exe +0 -0
  8. bin/mmgs.dll +0 -0
  9. bin/mmgs_O3.exe +0 -0
  10. bin/msvcp140.dll +0 -0
  11. bin/msvcp140_1.dll +0 -0
  12. bin/msvcp140_2.dll +0 -0
  13. bin/msvcp140_atomic_wait.dll +0 -0
  14. bin/msvcp140_codecvt_ids.dll +0 -0
  15. bin/vcruntime140.dll +0 -0
  16. bin/vcruntime140_1.dll +0 -0
  17. include/__init__.py +10 -0
  18. include/mmg/common/libmmgtypes.h +687 -0
  19. include/mmg/common/libmmgtypesf.h +762 -0
  20. include/mmg/common/mmg_export.h +47 -0
  21. include/mmg/common/mmgcmakedefines.h +46 -0
  22. include/mmg/common/mmgcmakedefinesf.h +29 -0
  23. include/mmg/common/mmgversion.h +54 -0
  24. include/mmg/libmmg.h +67 -0
  25. include/mmg/libmmgf.h +42 -0
  26. include/mmg/mmg2d/libmmg2d.h +2761 -0
  27. include/mmg/mmg2d/libmmg2df.h +3263 -0
  28. include/mmg/mmg2d/mmg2d_export.h +34 -0
  29. include/mmg/mmg3d/libmmg3d.h +3444 -0
  30. include/mmg/mmg3d/libmmg3df.h +4041 -0
  31. include/mmg/mmg3d/mmg3d_export.h +34 -0
  32. include/mmg/mmgs/libmmgs.h +2560 -0
  33. include/mmg/mmgs/libmmgsf.h +3028 -0
  34. include/mmg/mmgs/mmgs_export.h +34 -0
  35. lib/__init__.py +10 -0
  36. lib/cmake/mmg/FindElas.cmake +57 -0
  37. lib/cmake/mmg/FindSCOTCH.cmake +373 -0
  38. lib/cmake/mmg/MmgTargets-release.cmake +53 -0
  39. lib/cmake/mmg/MmgTargets.cmake +127 -0
  40. lib/cmake/mmg/mmgConfig.cmake +43 -0
  41. lib/mmg.lib +0 -0
  42. lib/mmg2d.lib +0 -0
  43. lib/mmg3d.lib +0 -0
  44. lib/mmgs.lib +0 -0
  45. mmgpy/__init__.py +888 -0
  46. mmgpy/_logging.py +86 -0
  47. mmgpy/_mmgpy.cp310-win_amd64.pyd +0 -0
  48. mmgpy/_mmgpy.pyi +650 -0
  49. mmgpy/_options.py +304 -0
  50. mmgpy/_progress.py +539 -0
  51. mmgpy/_pyvista.py +423 -0
  52. mmgpy/_version.py +3 -0
  53. mmgpy/_version.py.in +3 -0
  54. mmgpy/lagrangian.py +394 -0
  55. mmgpy/metrics.py +595 -0
  56. mmgpy/mmg2d.dll +0 -0
  57. mmgpy/mmg2d.lib +0 -0
  58. mmgpy/mmg3d.dll +0 -0
  59. mmgpy/mmg3d.lib +0 -0
  60. mmgpy/mmgs.dll +0 -0
  61. mmgpy/mmgs.lib +0 -0
  62. mmgpy/progress.py +57 -0
  63. mmgpy/py.typed +0 -0
  64. mmgpy/sizing.py +370 -0
  65. mmgpy-0.2.0.dist-info/DELVEWHEEL +2 -0
  66. mmgpy-0.2.0.dist-info/METADATA +75 -0
  67. mmgpy-0.2.0.dist-info/RECORD +129 -0
  68. mmgpy-0.2.0.dist-info/WHEEL +5 -0
  69. mmgpy-0.2.0.dist-info/entry_points.txt +6 -0
  70. mmgpy-0.2.0.dist-info/licenses/LICENSE +38 -0
  71. mmgpy.libs/vtkCommonColor-9.4-799ae0f43eb3a04510b0ed500c05e895.dll +0 -0
  72. mmgpy.libs/vtkCommonComputationalGeometry-9.4-e1ee47e9ca84c220e3fda21c864610e9.dll +0 -0
  73. mmgpy.libs/vtkCommonCore-9.4.dll +0 -0
  74. mmgpy.libs/vtkCommonDataModel-9.4.dll +0 -0
  75. mmgpy.libs/vtkCommonExecutionModel-9.4-5fea279cddbd0dd8e39907cbfb423d2c.dll +0 -0
  76. mmgpy.libs/vtkCommonMath-9.4-70aba6f1b0ad06008b5990b6843ff4e9.dll +0 -0
  77. mmgpy.libs/vtkCommonMisc-9.4-96697cc413673520510a54c05fa0ef99.dll +0 -0
  78. mmgpy.libs/vtkCommonSystem-9.4-a748ca3c31712678e4e0f2ff3b09785b.dll +0 -0
  79. mmgpy.libs/vtkCommonTransforms-9.4-11e72e99aca2003a38a3ff9bcfb90d92.dll +0 -0
  80. mmgpy.libs/vtkDICOMParser-9.4-6f27d14c12768aac52622cbd28ca0b3a.dll +0 -0
  81. mmgpy.libs/vtkFiltersCellGrid-9.4-5675f4c4a8440bd5f5981149f99315e8.dll +0 -0
  82. mmgpy.libs/vtkFiltersCore-9.4-ef29a82b399f8ffeec5dfa8c7e010901.dll +0 -0
  83. mmgpy.libs/vtkFiltersExtraction-9.4-6a452db7095d68b3af501d1b39a05670.dll +0 -0
  84. mmgpy.libs/vtkFiltersGeneral-9.4-b9b071ef41cba7c6468dd7e0a9f5d4bf.dll +0 -0
  85. mmgpy.libs/vtkFiltersGeometry-9.4-757f3c8b9a1fd9774cce83aec0c94c55.dll +0 -0
  86. mmgpy.libs/vtkFiltersHybrid-9.4-6b343077b9da30bb95fc4492762b9bed.dll +0 -0
  87. mmgpy.libs/vtkFiltersHyperTree-9.4-831d7e88dd11a3faec876929089d21e8.dll +0 -0
  88. mmgpy.libs/vtkFiltersModeling-9.4-a3fc680a4836e8913376390217ceae1e.dll +0 -0
  89. mmgpy.libs/vtkFiltersParallel-9.4-5307d8b619459bb2aeb13c2872cebc2b.dll +0 -0
  90. mmgpy.libs/vtkFiltersReduction-9.4-f7abe86bfcde726b6e7daec4773a089f.dll +0 -0
  91. mmgpy.libs/vtkFiltersSources-9.4-d38546a5e2bfd83ea0a70f5be4fa7fdc.dll +0 -0
  92. mmgpy.libs/vtkFiltersStatistics-9.4-d2abec2372ab98574cdbd0461c73d459.dll +0 -0
  93. mmgpy.libs/vtkFiltersTexture-9.4-a374b3cfe75e10483976a6a6780ca1ca.dll +0 -0
  94. mmgpy.libs/vtkFiltersVerdict-9.4-a6a276b6e0d3ac6d042f192842c9382a.dll +0 -0
  95. mmgpy.libs/vtkIOCellGrid-9.4-0df3bee5d56b2062dad430b53f81f06a.dll +0 -0
  96. mmgpy.libs/vtkIOCore-9.4.dll +0 -0
  97. mmgpy.libs/vtkIOGeometry-9.4-13e2301d83eea31e8df955a8dd196eb1.dll +0 -0
  98. mmgpy.libs/vtkIOImage-9.4-666beab0c43da6c4b2c59fba464bb6b1.dll +0 -0
  99. mmgpy.libs/vtkIOLegacy-9.4.dll +0 -0
  100. mmgpy.libs/vtkIOParallel-9.4.dll +0 -0
  101. mmgpy.libs/vtkIOParallelXML-9.4.dll +0 -0
  102. mmgpy.libs/vtkIOXML-9.4.dll +0 -0
  103. mmgpy.libs/vtkIOXMLParser-9.4-f4144aed6a73ee50eefeae75a78fd71b.dll +0 -0
  104. mmgpy.libs/vtkImagingCore-9.4-ecc92d2d09d8ac4e8f3b199a917f96fd.dll +0 -0
  105. mmgpy.libs/vtkImagingSources-9.4-944fcaf71940d51ed5dc1b5c8eba2571.dll +0 -0
  106. mmgpy.libs/vtkParallelCore-9.4-114ce4e5a12302a9f3c3485ab88d5a39.dll +0 -0
  107. mmgpy.libs/vtkParallelDIY-9.4-7add130df7f5139505a17ee72afefa41.dll +0 -0
  108. mmgpy.libs/vtkRenderingCore-9.4-ec5612bc182f43047add4c6a55050be4.dll +0 -0
  109. mmgpy.libs/vtkdoubleconversion-9.4-676429e05704a1fd81323494aba16669.dll +0 -0
  110. mmgpy.libs/vtkexpat-9.4-58e3b6d3064cf0e02659e3a57f60f779.dll +0 -0
  111. mmgpy.libs/vtkfmt-9.4-fd2ae0aaa19f2f735b93d4feb613d558.dll +0 -0
  112. mmgpy.libs/vtkjpeg-9.4-2fd58669e746a0d571706ff3f4c1896f.dll +0 -0
  113. mmgpy.libs/vtkjsoncpp-9.4-c2076501decec6ce45be5280d480c02d.dll +0 -0
  114. mmgpy.libs/vtkkissfft-9.4-874ed77ec96808d2e395a6caeb69abbe.dll +0 -0
  115. mmgpy.libs/vtkloguru-9.4-1038f41dd2d3acc7d894c1d57b428cc6.dll +0 -0
  116. mmgpy.libs/vtklz4-9.4-9982d6f8f47ac19965668cd3c2926473.dll +0 -0
  117. mmgpy.libs/vtklzma-9.4-a473d065be12f766957c699a0aefac38.dll +0 -0
  118. mmgpy.libs/vtkmetaio-9.4-aa48920e94a28f23d08054f5e82867f4.dll +0 -0
  119. mmgpy.libs/vtkpng-9.4-cbefdfbef5c0d4dd7ae43b9d526e881a.dll +0 -0
  120. mmgpy.libs/vtkpugixml-9.4-9c7652d9a42fd99e62753e7d3fd87ee9.dll +0 -0
  121. mmgpy.libs/vtksys-9.4.dll +0 -0
  122. mmgpy.libs/vtktiff-9.4-9822dcf52447c045cf9a70960d45a9bd.dll +0 -0
  123. mmgpy.libs/vtktoken-9.4-471c14923651cbbd86067852f347807b.dll +0 -0
  124. mmgpy.libs/vtkverdict-9.4-c549882a3b8671666be1366008f27f7e.dll +0 -0
  125. mmgpy.libs/vtkzlib-9.4-3b9ffa51c80ccd91bb22a4c3ca11a8d7.dll +0 -0
  126. share/__init__.py +10 -0
  127. share/man/man1/mmg2d.1.gz +0 -0
  128. share/man/man1/mmg3d.1.gz +0 -0
  129. share/man/man1/mmgs.1.gz +0 -0
@@ -0,0 +1,762 @@
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
+ #define MMG5_DATA_PTR_T INTEGER(kind=8)
15
+ #include "mmg/common/mmgversion.h"
16
+ #include "mmg/common/mmgcmakedefinesf.h"
17
+
18
+ ! /* =============================================================================
19
+ ! ** This file is part of the mmg software package for the tetrahedral
20
+ ! ** mesh modification.
21
+ ! ** Copyright (c) Bx INP/CNRS/Inria/UBordeaux/UPMC, 2004-
22
+ ! **
23
+ ! ** mmg is free software: you can redistribute it and/or modify it
24
+ ! ** under the terms of the GNU Lesser General Public License as published
25
+ ! ** by the Free Software Foundation, either version 3 of the License, or
26
+ ! ** (at your option) any later version.
27
+ ! **
28
+ ! ** mmg is distributed in the hope that it will be useful, but WITHOUT
29
+ ! ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
30
+ ! ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
31
+ ! ** License for more details.
32
+ ! **
33
+ ! ** You should have received a copy of the GNU Lesser General Public
34
+ ! ** License and of the GNU General Public License along with mmg (in
35
+ ! ** files COPYING.LESSER and COPYING). If not, see
36
+ ! ** <http://www.gnu.org/licenses/>. Please read their terms carefully and
37
+ ! ** use this copy of the mmg distribution only if you accept them.
38
+ ! ** =============================================================================
39
+ ! */
40
+
41
+
42
+ ! /**
43
+ ! * \file common/libmmgtypes.h
44
+ ! * \ingroup API
45
+ ! * \brief Types used throughout the Mmg libraries
46
+ ! * \author Algiane Froehly (Inria/UBordeaux)
47
+ ! * \version 5
48
+ ! * \date 01 2014
49
+ ! * \copyright GNU Lesser General Public License.
50
+ ! */
51
+
52
+ ! #include <stdint.h>
53
+ ! #include <stdarg.h>
54
+ ! #include <stddef.h>
55
+
56
+ ! #include "mmg/common/mmgcmakedefines.h"
57
+ ! #include "mmg/common/mmgversion.h"
58
+
59
+ #ifndef _LIBMMGTYPES_H
60
+ #define _LIBMMGTYPES_H
61
+
62
+ ! /**
63
+ ! * \def MMG5_SUCCESS
64
+ ! *
65
+ ! * Return value for success.
66
+ ! *
67
+ ! */
68
+
69
+ #define MMG5_SUCCESS 0
70
+ ! /**
71
+ ! * \def MMG5_LOWFAILURE
72
+ ! *
73
+ ! * Return value if the remesh process failed but we can save a conform
74
+ ! * mesh.
75
+ ! *
76
+ ! */
77
+
78
+ #define MMG5_LOWFAILURE 1
79
+ ! /**
80
+ ! * \def MMG5_STRONGFAILURE
81
+ ! *
82
+ ! * Return value if the remesh process failed and the mesh is
83
+ ! * non-conform.
84
+ ! *
85
+ ! */
86
+
87
+ #define MMG5_STRONGFAILURE 2
88
+
89
+ ! /**
90
+ ! * Implicit boundary in iso mode
91
+ ! *
92
+ ! */
93
+
94
+ #define MG_ISO 10
95
+
96
+ ! /**
97
+ ! * Default reference to assign to positive domain in iso mode
98
+ ! *
99
+ ! */
100
+
101
+ #define MG_PLUS 2
102
+ ! /**
103
+ ! * Default reference to assign to negative domain in iso mode
104
+ ! *
105
+ ! */
106
+
107
+ #define MG_MINUS 3
108
+
109
+ ! /**
110
+ ! * \def MMG5_ARG_start
111
+ ! *
112
+ ! * To begin a list of variadic arguments (mandatory first arg for all our
113
+ ! * variadic functions)
114
+ ! *
115
+ ! * \remark we cannot use an enum because used in
116
+ ! * variadic functions).
117
+ ! */
118
+
119
+ #define MMG5_ARG_start %val(1)
120
+ ! /**
121
+ ! * \def MMG5_ARG_ppMesh
122
+ ! *
123
+ ! * Pointer toward a MMG5_pMesh structure (for structure allocations purposes)
124
+ ! *
125
+ ! * \remark we cannot use an enum because used in
126
+ ! * variadic functions).
127
+ ! */
128
+
129
+ #define MMG5_ARG_ppMesh %val(2)
130
+ ! /**
131
+ ! * \def MMG5_ARG_ppLs
132
+ ! *
133
+ ! * Pointer toward a MMG5_pSol structure storing a level-set (for structure
134
+ ! * allocations purposes)
135
+ ! *
136
+ ! * \remark we cannot use an enum because used in
137
+ ! * variadic functions).
138
+ ! */
139
+
140
+ #define MMG5_ARG_ppLs %val(3)
141
+ ! /**
142
+ ! * \def MMG5_ARG_ppMet
143
+ ! *
144
+ ! * Pointer toward a MMG5_pSol structure storing a metric (for structure
145
+ ! * allocations purposes)
146
+ ! *
147
+ ! * \remark we cannot use an enum because used in
148
+ ! * variadic functions).
149
+ ! */
150
+
151
+ #define MMG5_ARG_ppMet %val(4)
152
+ ! /**
153
+ ! * \def MMG5_ARG_ppDisp
154
+ ! *
155
+ ! * Pointer toward a MMG5_pSol structure storing a displacement (for structure
156
+ ! * allocations purposes)
157
+ ! *
158
+ ! * \remark we cannot use an enum because used in
159
+ ! * variadic functions).
160
+ ! */
161
+
162
+ #define MMG5_ARG_ppDisp %val(5)
163
+ ! /**
164
+ ! * \def MMG5_ARG_ppSols
165
+ ! *
166
+ ! * Pointer toward an array of MMG5_Sol structures storing a list of solutions
167
+ ! * allocations purposes)
168
+ ! *
169
+ ! * \remark we cannot use an enum because used in
170
+ ! * variadic functions).
171
+ ! */
172
+
173
+ #define MMG5_ARG_ppSols %val(6)
174
+ ! /**
175
+ ! * \def MMG5_ARG_pMesh
176
+ ! *
177
+ ! * MMG5_pMesh structure
178
+ ! *
179
+ ! * \remark we cannot use an enum because used in
180
+ ! * variadic functions).
181
+ ! */
182
+
183
+ #define MMG5_ARG_pMesh %val(7)
184
+ ! /**
185
+ ! * \def MMG5_ARG_pMet
186
+ ! *
187
+ ! * MMG5_pSol structure storing a metric field
188
+ ! *
189
+ ! * \remark we cannot use an enum because used in
190
+ ! * variadic functions).
191
+ ! */
192
+
193
+ #define MMG5_ARG_pMet %val(8)
194
+ ! /**
195
+ ! * \def MMG5_ARG_pDisp
196
+ ! *
197
+ ! * MMG5_pSol structure storing a displacement field
198
+ ! *
199
+ ! * \remark we cannot use an enum because used in
200
+ ! * variadic functions).
201
+ ! */
202
+
203
+ #define MMG5_ARG_pDisp %val(9)
204
+ ! /**
205
+ ! * \def MMG5_ARG_end
206
+ ! *
207
+ ! * To end a list of variadic argument (mandatory last argument for all our
208
+ ! * variadic functions)
209
+ ! *
210
+ ! * \remark we cannot use an enum because used in
211
+ ! * variadic functions).
212
+ ! */
213
+
214
+ #define MMG5_ARG_end %val(10)
215
+
216
+ ! /**
217
+ ! * \def MMG5_NSOLS_MAX
218
+ ! *
219
+ ! * Maximal number of solutions per entity
220
+ ! *
221
+ ! */
222
+
223
+ #define MMG5_NSOLS_MAX 100
224
+
225
+ ! /**
226
+ ! * \def MMG5_FILENAME_LEN_MAX
227
+ ! *
228
+ ! * Maximal length of filenames
229
+ ! *
230
+ ! */
231
+
232
+ #define MMG5_FILENAME_LEN_MAX 255
233
+
234
+ ! /**
235
+ ! * \def MMG5_MMAT_NOSPLIT
236
+ ! *
237
+ ! * Entity that must not be splitted in multimat mode
238
+ ! *
239
+ ! */
240
+
241
+ #define MMG5_MMAT_NoSplit 0
242
+
243
+ ! /**
244
+ ! * \def MMG5_MMAT_Split
245
+ ! *
246
+ ! * Entity that must be splitted in multimat mode
247
+ ! *
248
+ ! */
249
+
250
+ #define MMG5_MMAT_Split 1
251
+
252
+ ! /**
253
+ ! * \enum MMG5_type
254
+ ! * \brief Type of solutions.
255
+ ! */
256
+
257
+ ! /*!< Undefined type (unusable) */
258
+ #define MMG5_Notype 0
259
+ ! /*!< Scalar solution */
260
+ #define MMG5_Scalar 1
261
+ ! /*!< Vectorial solution */
262
+ #define MMG5_Vector 2
263
+ ! /*!< Tensorial solution */
264
+ #define MMG5_Tensor 3
265
+
266
+ ! /**
267
+ ! * \enum MMG5_entities
268
+ ! * \brief Identifies the types of mesh entities.
269
+ ! */
270
+
271
+ ! /*!< Undefined type (unusable) */
272
+ #define MMG5_Noentity 0
273
+ ! /*!< Vertex entity */
274
+ #define MMG5_Vertex 1
275
+ ! /*!< Edge entity */
276
+ #define MMG5_Edg 2
277
+ ! /*!< Triangle entity */
278
+ #define MMG5_Triangle 3
279
+ ! /*!< Tetra entity */
280
+ #define MMG5_Tetrahedron 4
281
+
282
+ ! /**
283
+ ! * \enum MMG5_Format
284
+ ! * \brief Type of supported file format
285
+ ! */
286
+
287
+ ! /*!< ASCII Medit (.mesh) */
288
+ #define MMG5_FMT_MeditASCII 0
289
+ ! /*!< Binary Medit (.meshb) */
290
+ #define MMG5_FMT_MeditBinary 1
291
+ ! /*!< ASCII Gmsh */
292
+ #define MMG5_FMT_GmshASCII 2
293
+ ! /*!< Binary Gmsh */
294
+ #define MMG5_FMT_GmshBinary 3
295
+ ! /*!< VTK pvtp */
296
+ #define MMG5_FMT_VtkPvtp 4
297
+ ! /*!< VTK pvtu */
298
+ #define MMG5_FMT_VtkPvtu 5
299
+ ! /*!< VTK vtu */
300
+ #define MMG5_FMT_VtkVtu 6
301
+ ! /*!< VTK vtp */
302
+ #define MMG5_FMT_VtkVtp 7
303
+ ! /*!< VTK vtk */
304
+ #define MMG5_FMT_VtkVtk 8
305
+ ! /*!< Tetgen or Triangle */
306
+ #define MMG5_FMT_Tetgen 9
307
+ ! /*!< Unrecognized */
308
+ #define MMG5_FMT_Unknown 10
309
+
310
+ ! /**
311
+ ! * \struct MMG5_Par
312
+ ! * \brief Local parameters for a specific entity and reference
313
+ ! *
314
+ ! * This struct can store the local values (minimal and maximal edge lengths and
315
+ ! * Hausdorff distance) associated to the given reference of an element of type
316
+ ! * \a elt (point, edge... ).
317
+ ! *
318
+ ! */
319
+
320
+ ! typedef struct {
321
+ ! double hmin; /*!< minimal size for edges */
322
+ ! double hmax; /*!< maximal size for edges */
323
+ ! double hausd; /*!< Hausdorff value */
324
+ ! MMG5_int ref; /*!< Reference value */
325
+ ! int8_t elt; /*!< Element type */
326
+ ! } MMG5_Par; typedef MMG5_Par * MMG5_pPar;
327
+
328
+ ! /**
329
+ ! * \struct MMG5_Point
330
+ ! * \brief Structure to store vertices of an MMG mesh.
331
+ ! * \todo What to do with n[3], try to remove s.
332
+ ! */
333
+
334
+ ! typedef struct {
335
+ ! double c[3]; /*!< Coordinates */
336
+ ! double n[3]; /*!< Unitary normal (regular points) or unitary tangent (ridge
337
+ ! * and ref points) for mmgs and unitary tangent (if needed) for
338
+ ! * mmg3d */
339
+ ! #ifdef USE_POINTMAP
340
+ ! MMG5_int src; /*!< Source point in input mesh */
341
+ ! #endif
342
+ ! MMG5_int ref; /*!< Reference of point */
343
+ ! MMG5_int xp; /*!< Surface point number */
344
+ ! MMG5_int tmp; /*!< Index of point in the saved mesh (we don't count
345
+ ! the unused points)*/
346
+ ! MMG5_int flag; /*!< Flag to know if we have already treated the point */
347
+ ! MMG5_int s;
348
+ ! uint16_t tag; /*!< Contains binary flags : if \f$tag=23=16+4+2+1\f$, then
349
+ ! the point is \a MG_REF, \a MG_GEO, \a MG_REQ and \a MG_BDY */
350
+ ! int8_t tagdel; /*!< Tag for delaunay */
351
+ ! } MMG5_Point;
352
+ ! typedef MMG5_Point * MMG5_pPoint;
353
+
354
+ ! /**
355
+ ! * \struct MMG5_xPoint
356
+ ! * \brief Structure to store surface vertices of an MMG mesh.
357
+ ! */
358
+
359
+ ! typedef struct {
360
+ ! double n1[3],n2[3]; /*!< Normals at boundary vertex;
361
+ ! n1!=n2 if the vertex belong to a ridge */
362
+ ! int8_t nnor; /* By default 0; 1 if no normal available (internal NOM point) */
363
+ ! } MMG5_xPoint;
364
+ ! typedef MMG5_xPoint * MMG5_pxPoint;
365
+
366
+ ! /**
367
+ ! * \struct MMG5_Edge
368
+ ! * \brief Structure to store edges of am MMG mesh.
369
+ ! */
370
+
371
+ ! typedef struct {
372
+ ! MMG5_int a,b; /*!< Extremities of the edge */
373
+ ! MMG5_int ref; /*!< Reference of the edge */
374
+ ! MMG5_int base; /*!< 2Donly: used to store the tria+ tria edge indices
375
+ ! that allow to access to the edge */
376
+ ! uint16_t tag; /*!< Binary flags */
377
+ ! } MMG5_Edge;
378
+ ! typedef MMG5_Edge * MMG5_pEdge;
379
+
380
+ ! /**
381
+ ! * \struct MMG5_Tria
382
+ ! *
383
+ ! * \brief Structure to store triangles of a MMG mesh.
384
+ ! *
385
+ ! * \remark Numbering convention
386
+ ! * \verbatim
387
+ ! * Vertices Edges *
388
+ ! * 2 . *
389
+ ! * |`\ |`\ *
390
+ ! * | `\ | `\ *
391
+ ! * | `\ 1 `0 *
392
+ ! * | `\ | `\ *
393
+ ! * | `\ | `\ *
394
+ ! * 0----------1 .--- 2 ----.
395
+ ! * \endverbatim
396
+ ! *
397
+ ! */
398
+
399
+ ! typedef struct {
400
+ ! double qual; /*Quality of the triangle*/
401
+ ! MMG5_int v[3]; /*!< Vertices of the triangle */
402
+ ! MMG5_int ref; /*!< Reference of the triangle */
403
+ ! MMG5_int base;
404
+ ! MMG5_int cc; /*!< used to store the tetra + tetra face indices
405
+ ! that allow to access to the tria 4*k + i */
406
+ ! MMG5_int edg[3]; /*!< edg[i] contains the ref of the \f$i^{th}\f$ edge
407
+ ! of triangle */
408
+ ! MMG5_int flag;
409
+ ! uint16_t tag[3]; /*!< tag[i] contains the tag associated to the
410
+ ! \f$i^{th}\f$ edge of triangle */
411
+ ! } MMG5_Tria;
412
+ ! typedef MMG5_Tria * MMG5_pTria;
413
+
414
+
415
+ ! /**
416
+ ! * \struct MMG5_Quad
417
+ ! *
418
+ ! * \brief Structure to store quadrangles of an MMG mesh.
419
+ ! *
420
+ ! * \remark Numbering convention
421
+ ! * \verbatim
422
+ ! * Vertices Edges *
423
+ ! * . *
424
+ ! * 3----------2 +-----3----+ *
425
+ ! * | | | | *
426
+ ! * | | 1 2 *
427
+ ! * | | | | *
428
+ ! * | | | | *
429
+ ! * 0----------1 +----0-----+ *
430
+ ! * \endverbatim
431
+ ! *
432
+ ! */
433
+
434
+ ! typedef struct {
435
+ ! MMG5_int v[4]; /*!< Vertices of the quadrangle */
436
+ ! MMG5_int ref; /*!< Reference of the quadrangle */
437
+ ! MMG5_int base;
438
+ ! MMG5_int edg[4]; /*!< edg[i] contains the ref of the \f$i^{th}\f$ edge
439
+ ! of quadrangle */
440
+ ! uint16_t tag[4]; /*!< tag[i] contains the tag associated to the
441
+ ! \f$i^{th}\f$ edge of quadrangle */
442
+ ! } MMG5_Quad;
443
+ ! typedef MMG5_Quad * MMG5_pQuad;
444
+
445
+
446
+ ! /**
447
+ ! * \struct MMG5_Tetra
448
+ ! *
449
+ ! * \brief Structure to store tetrahedra of an MMG mesh.
450
+ ! *
451
+ ! * \remark The numbering conventions are illustrated below. Face i lies opposite to vertex i.
452
+ ! * \verbatim
453
+ ! * Vertices Edges Faces *
454
+ ! * 3 . . *
455
+ ! * ,/|`\ ,/|`\ ,/|`\ *
456
+ ! * ,/ | `\ ,/ | `\ ,/ | `\ *
457
+ ! * ,/ '. `\ ,2 '. `5 ,/ '. `\ *
458
+ ! * ,/ | `\ ,/ 4 `\ ,/ 1 `\ *
459
+ ! * ,/ | `\ ,/ | `\ ,/ | 0 `\ *
460
+ ! * 0-----------'.--------2 .--------1--'.--------. .------2---'.--------. *
461
+ ! * `\. | ,/ `\. | ,/ `\. | ,/ *
462
+ ! * `\. | ,/ `\. | ,3 `\. 3| ,/ *
463
+ ! * `\. '. ,/ `0. '. ,/ `\. '. ,/ *
464
+ ! * `\. |/ `\. |/ `\. |/ *
465
+ ! * `1 `. `. *
466
+ ! * \endverbatim
467
+ ! *
468
+ ! */
469
+
470
+ ! typedef struct {
471
+ ! double qual; /*!< Quality of the element */
472
+ ! MMG5_int v[4]; /*!< Vertices of the tetrahedron */
473
+ ! MMG5_int ref; /*!< Reference of the tetrahedron */
474
+ ! MMG5_int base;
475
+ ! MMG5_int mark; /*!< Used for delaunay */
476
+ ! MMG5_int xt; /*!< Index of the surface \ref MMG5_xTetra associated to the
477
+ ! tetrahedron (only for tetrahedra that are adjacent to
478
+ ! surfaces) */
479
+ ! MMG5_int flag;
480
+ ! uint16_t tag;
481
+ ! } MMG5_Tetra;
482
+ ! typedef MMG5_Tetra * MMG5_pTetra;
483
+
484
+ ! /**
485
+ ! * \struct MMG5_xTetra
486
+ ! * \brief Structure to store additional information for the surface tetrahedra of an MMG mesh.
487
+ ! */
488
+
489
+ ! typedef struct {
490
+ ! MMG5_int ref[4]; /*!< ref[i] is the reference of the opposite triangle to the
491
+ ! \f$i^{th}\f$ vertex of the tetrahedron;*/
492
+ ! MMG5_int edg[6]; /*!< edg[i] contains the reference of the
493
+ ! \f$i^{th}\f$ edge of the tetrahedron */
494
+ ! uint16_t ftag[4]; /*!< ftag[i] contains the tag associated to the
495
+ ! \f$i^{th}\f$ face of the tetrahedron */
496
+ ! uint16_t tag[6]; /*!< tag[i] contains the tag associated to the
497
+ ! \f$i^{th}\f$ edge of the tetrahedron */
498
+ ! int8_t ori; /*!< Orientation of the triangles of the tetrahedron:
499
+ ! the $\f$i^{th}\f$ bit of ori is set to 0 when the
500
+ ! \f$i^{th}\f$ face is bad orientated */
501
+ ! } MMG5_xTetra;
502
+ ! typedef MMG5_xTetra * MMG5_pxTetra;
503
+
504
+ ! /**
505
+ ! * \struct MMG5_Prism
506
+ ! *
507
+ ! * \brief Structure to store prsim of a MMG mesh.
508
+ ! *
509
+ ! * \warning prisms are not modified
510
+ ! *
511
+ ! * \remark Numbering convention
512
+ ! * \verbatim
513
+ ! * Vertices Edges Faces *
514
+ ! * 3 . . *
515
+ ! * ,/|`\ ,/|`\ ,/|`\ *
516
+ ! * ,/ | `\ 6 | 7 ,/ | `\ *
517
+ ! * ,/ | `\ ,/ | `\ ,/ 1 `\ *
518
+ ! * 4------+------5 .------8------. .------+------. *
519
+ ! * | | | | | | | | | *
520
+ ! * | | | | 2 | | | | *
521
+ ! * | | | | | | | | | *
522
+ ! * | | | | | | | 4 | 3 | *
523
+ ! * | | | 4 | 5 | 2 | *
524
+ ! * | 0 | | . | | . | *
525
+ ! * | ,/ `\ | | ,/ `\ | | ,/ `\ | *
526
+ ! * | ,/ `\ | | ,0 `1 | | ,/ `\ | *
527
+ ! * |,/ `\| |,/ `\| |,/ 0 `\| *
528
+ ! * 1-------------2 .------3------. .-------------. *
529
+ ! *
530
+ ! * \endverbatim
531
+ ! *
532
+ ! */
533
+
534
+ ! typedef struct {
535
+ ! MMG5_int v[6]; /*!< Vertices of the prism */
536
+ ! MMG5_int ref; /*!< Reference of the prism */
537
+ ! MMG5_int base;
538
+ ! MMG5_int flag;
539
+ ! MMG5_int xpr; /*!< Index of the surface \ref MMG5_xPrism associated to
540
+ ! the prism*/
541
+ ! uint8_t tag;
542
+ ! } MMG5_Prism;
543
+ ! typedef MMG5_Prism * MMG5_pPrism;
544
+
545
+ ! /**
546
+ ! * \struct MMG5_xPrism
547
+ ! * \brief Structure to store the surface prism of a MMG mesh.
548
+ ! */
549
+
550
+ ! typedef struct {
551
+ ! MMG5_int ref[5]; /*!< face references: ref[0]={0,1,2}, ref[1]={3,4,5},
552
+ ! * ref[2]={0,3,4,1}, ref[3]={0,2,5,1} */
553
+ ! MMG5_int edg[9]; /*!< edges references:
554
+ ! * edg[0]={0,1},edg[1]={0,2},edg[2]={0,3},edg[3]={1,2},
555
+ ! * edg[4]={1,4},edg[5]={2,5},edg[6]={3,4},edg[7]={3,5},
556
+ ! * edg[8]={4,5}*/
557
+ ! uint16_t ftag[5]; /*!< ftag[i] contains the tag associated to the
558
+ ! \f$i^{th}\f$ face of the prism */
559
+ ! uint16_t tag[9]; /*!< tag[i] contains the tag associated to the
560
+ ! \f$i^{th}\f$ edge of the prism */
561
+ ! } MMG5_xPrism;
562
+ ! typedef MMG5_xPrism * MMG5_pxPrism;
563
+
564
+ ! /**
565
+ ! * \struct MMG5_Mat
566
+ ! * \brief To store user-defined references in the mesh (useful in LS mode)
567
+ ! */
568
+
569
+ ! typedef struct {
570
+ ! int8_t dospl;
571
+ ! MMG5_int ref,rin,rex;
572
+ ! } MMG5_Mat;
573
+ ! typedef MMG5_Mat * MMG5_pMat;
574
+
575
+ ! /**
576
+ ! * \struct MMG5_InvMat
577
+ ! * \brief To store lookup table for references in the mesh (useful in LS mode)
578
+ ! */
579
+
580
+ ! typedef struct {
581
+ ! MMG5_int offset;
582
+ ! MMG5_int size;
583
+ ! int *lookup;
584
+ ! } MMG5_InvMat;
585
+ ! typedef MMG5_InvMat * MMG5_pInvMat;
586
+
587
+ ! /**
588
+ ! * \struct MMG5_Info
589
+ ! * \brief Structure to store input parameters of the job.
590
+ ! */
591
+
592
+ ! typedef struct {
593
+ ! MMG5_pPar par;
594
+ ! double dhd,hmin,hmax,hsiz,hgrad,hgradreq,hausd;
595
+ ! double min[3],max[3],delta,ls,lxreg,rmc;
596
+ ! MMG5_int *br; /*!< list of based references to which an implicit surface can be attached */
597
+ ! MMG5_int isoref; /*!< isovalue reference in ls mode */
598
+ ! MMG5_int nsd; /*!< index of subdomain to save (0 by default == all subdomains are saved) */
599
+ ! int mem,npar,npari;
600
+ ! int nbr,nbri; /*!< number of based references for level-set (BC to which a material can be attached) */
601
+ ! int opnbdy; /*!< floating surfaces */
602
+ ! int renum; /*!< scotch renumbering */
603
+ ! int PROctree; /*!< octree to speedup delaunay insertion */
604
+ ! int nmati,nmat; /*!< number of materials in ls multimat mode */
605
+ ! int imprim; /*!< verbosity level */
606
+ ! int8_t nreg; /*!< normal regularization */
607
+ ! int8_t xreg; /*!< vertices regularization */
608
+ ! int8_t ddebug; /*!< debug mode if 1 */
609
+ ! int8_t badkal; /*!< 1 if the mesh contains a very bad element */
610
+ ! int8_t iso; /*!< level-set discretization mode */
611
+ ! int8_t isosurf; /*!< level-set discretization mode on the surface */
612
+ ! int8_t setfem; /*!< Enforce finite element mesh (try to avoid edges
613
+ ! * connecting 2 bdy points and tet with more than 1 bdy
614
+ ! * face) */
615
+ ! int8_t fem; /*!< internal value for fem / no fem mesh output */
616
+ ! int8_t lag; /*!< lagrangian mode */
617
+ ! int8_t parTyp; /*!< Contains binary flags to say which kind of local
618
+ ! param are setted: if \f$tag = 1+2+4\f$ then the point
619
+ ! is \a MG_Vert, MG_Tria and MG_Tetra */
620
+ ! int8_t sethmin; /*!< 1 if user set hmin, 0 otherwise (needed for multiple library calls) */
621
+ ! int8_t sethmax; /*!< 1 if user set hmin, 0 otherwise (needed for multiple library calls) */
622
+ ! uint8_t ani, optim, optimLES, noinsert, noswap, nomove, nosurf, nosizreq;
623
+ ! uint8_t metRidTyp;
624
+ ! char *fparam; /*!< name of the parameter file */
625
+ ! /*!< metRidTyp
626
+ ! * - in 3D: 0 for a classical storage of the aniso
627
+ ! * metric at ridge, 1 for the Mmg storage (modified
628
+ ! * by defsiz)
629
+ ! * - in 2D: used to detect if we call assignEdge function for the first time inside the library */
630
+
631
+ ! MMG5_pMat mat;
632
+ ! MMG5_InvMat invmat;
633
+ ! } MMG5_Info;
634
+
635
+ ! /**
636
+ ! * \struct MMG5_hgeom
637
+ ! * \brief Cell of the hash table of geometric edges.
638
+ ! */
639
+
640
+ ! typedef struct {
641
+ ! MMG5_int a; /*!< First extremity of edge */
642
+ ! MMG5_int b; /*!< Second extremity of edge */
643
+ ! MMG5_int ref; /*!< Reference or idx (2D) of edge */
644
+ ! MMG5_int nxt; /*!< Next element of hash table */
645
+ ! uint16_t tag; /*!< tag of edge */
646
+ ! } MMG5_hgeom;
647
+
648
+ ! /**
649
+ ! * \struct MMG5_HGeom
650
+ ! * \brief Hash table to store geometric edges.
651
+ ! */
652
+
653
+ ! typedef struct {
654
+ ! MMG5_hgeom *geom;
655
+ ! MMG5_int siz,max,nxt;
656
+ ! } MMG5_HGeom;
657
+
658
+
659
+ ! /**
660
+ ! * \struct MMG5_hedge
661
+ ! * \brief Used to hash edges (memory economy compared to \ref MMG5_hgeom).
662
+ ! */
663
+
664
+ ! typedef struct {
665
+ ! MMG5_int a,b,nxt;
666
+ ! MMG5_int k; /*!< k = point along edge a b or triangle index */
667
+ ! MMG5_int s;
668
+ ! } MMG5_hedge;
669
+
670
+ ! /**
671
+ ! * \struct MMG5_Hash
672
+ ! * \brief Identic as \ref MMG5_HGeom but use \ref MMG5_hedge to store edges
673
+ ! * instead of \ref MMG5_hgeom (memory economy).
674
+ ! */
675
+
676
+ ! typedef struct {
677
+ ! MMG5_int siz,max,nxt;
678
+ ! MMG5_hedge *item;
679
+ ! } MMG5_Hash;
680
+
681
+ ! /**
682
+ ! * \struct MMG5_Mesh
683
+ ! * \brief MMG mesh structure.
684
+ ! * \todo try to remove nc1;
685
+ ! */
686
+
687
+ ! typedef struct {
688
+ ! size_t memMax; /*!< Maximum memory available */
689
+ ! size_t memCur; /*!< Current memory used */
690
+ ! double gap; /*!< Gap for table reallocation */
691
+ ! int ver; /*!< Version of the mesh file */
692
+ ! int dim; /*!< Dimension of the mesh */
693
+ ! int type; /*!< Type of the mesh */
694
+ ! MMG5_int npi,nti,nai,nei,np,na,nt,ne,npmax,namax,ntmax,nemax,xpmax,xtmax;
695
+ ! MMG5_int nquad,nprism; /*!< number of quadrangles and prisms */
696
+ ! int nsols; /*!< number of solutions (metric excluded) in the solution file (lower than \a NSOLS_MAX)*/
697
+ ! MMG5_int nc1;
698
+ ! MMG5_int base; /*!< Used with \a flag to know if an entity has been
699
+ ! treated */
700
+ ! MMG5_int mark; /*!< Flag for delaunay (to know if an entity has
701
+ ! been treated) */
702
+ ! MMG5_int xp,xt,xpr; /*!< Number of surfaces points, triangles/tetrahedra and prisms */
703
+ ! MMG5_int npnil; /*!< Index of first unused point */
704
+ ! MMG5_int nenil; /*!< Index of first unused element */
705
+ ! MMG5_int nanil; /*!< Index of first unused edge (2d only)*/
706
+ ! MMG5_int *adja; /*!< Table of tetrahedron adjacency: if
707
+ ! \f$adja[4*(i-1)+1+j]=4*k+l\f$ then the \f$i^{th}\f$ and
708
+ ! \f$k^th\f$ tetrahedra are adjacent and share their
709
+ ! faces \a j and \a l (resp.) */
710
+ ! MMG5_int *adjt; /*!< Table of triangles adjacency: if
711
+ ! \f$adjt[3*(i-1)+1+j]=3*k+l\f$ then the \f$i^{th}\f$ and
712
+ ! \f$k^th\f$ triangles are adjacent and share their
713
+ ! edges \a j and \a l (resp.) */
714
+ ! MMG5_int *adjapr; /*!< Table of prisms adjacency: if
715
+ ! \f$adjapr[5*(i-1)+1+j]=5*k+l\f$ then the \f$i^{th}\f$ and
716
+ ! \f$k^th\f$ prism are adjacent and share their
717
+ ! faces \a j and \a l (resp.) */
718
+ ! MMG5_int *adjq; /*!< Table of quadrangles adjacency: if
719
+ ! \f$adjq[4*(i-1)+1+j]=4*k+l\f$ then the \f$i^{th}\f$ and
720
+ ! \f$k^th\f$ quadrilaterals are adjacent and share their
721
+ ! edges \a j and \a l (resp.) */
722
+ ! int *ipar; /*!< Store indices of the local parameters */
723
+ ! MMG5_pPoint point; /*!< Pointer toward the \ref MMG5_Point structure */
724
+ ! MMG5_pxPoint xpoint; /*!< Pointer toward the \ref MMG5_xPoint structure */
725
+ ! MMG5_pTetra tetra; /*!< Pointer toward the \ref MMG5_Tetra structure */
726
+ ! MMG5_pxTetra xtetra; /*!< Pointer toward the \ref MMG5_xTetra structure */
727
+ ! MMG5_pPrism prism; /*!< Pointer toward the \ref MMG5_Prism structure */
728
+ ! MMG5_pxPrism xprism; /*!< Pointer toward the \ref MMG5_pxPrism structure */
729
+ ! MMG5_pTria tria; /*!< Pointer toward the \ref MMG5_Tria structure */
730
+ ! MMG5_pQuad quadra; /*!< Pointer toward the \ref MMG5_Quad structure */
731
+ ! MMG5_pEdge edge; /*!< Pointer toward the \ref MMG5_Edge structure */
732
+ ! MMG5_HGeom htab; /*!< \ref MMG5_HGeom structure */
733
+ ! MMG5_Info info; /*!< \ref MMG5_Info structure */
734
+ ! char *namein; /*!< Input mesh name */
735
+ ! char *nameout; /*!< Output mesh name */
736
+
737
+ ! } MMG5_Mesh;
738
+ ! typedef MMG5_Mesh * MMG5_pMesh;
739
+
740
+ ! /**
741
+ ! * \struct MMG5_sol
742
+ ! * \brief MMG Solution structure (for solution or metric).
743
+ ! *
744
+ ! */
745
+
746
+ ! typedef struct {
747
+ ! int ver; /* Version of the solution file */
748
+ ! int dim; /* Dimension of the solution file*/
749
+ ! MMG5_int np; /* Number of points of the solution */
750
+ ! MMG5_int npmax; /* Maximum number of points */
751
+ ! MMG5_int npi; /* Temporary number of points (internal use only) */
752
+ ! int size; /* Number of solutions per entity */
753
+ ! int type; /* Type of the solution (scalar, vectorial or tensorial) */
754
+ ! int entities; /* Type of the solution (scalar, vectorial of tensorial) */
755
+ ! double *m; /*!< Solution values */
756
+ ! double umin,umax; /*!<Min/max values for the solution */
757
+ ! char *namein; /*!< Input solution file name */
758
+ ! char *nameout; /*!< Output solution file name */
759
+ ! } MMG5_Sol;
760
+ ! typedef MMG5_Sol * MMG5_pSol;
761
+
762
+ #endif