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
mmgpy/sizing.py ADDED
@@ -0,0 +1,370 @@
1
+ """Local sizing parameters for per-region mesh control.
2
+
3
+ This module provides convenient APIs for specifying local mesh sizing parameters,
4
+ enabling different mesh densities in different regions without manually constructing
5
+ metric fields.
6
+
7
+ Sizing constraints are stored on mesh objects and combined (minimum size wins)
8
+ to produce per-vertex metric fields before remeshing.
9
+
10
+ Examples
11
+ --------
12
+ Fine mesh in a spherical region:
13
+
14
+ >>> from mmgpy import MmgMesh3D
15
+ >>> mesh = MmgMesh3D.from_file("model.mesh")
16
+ >>> mesh.set_size_sphere(center=[0.5, 0.5, 0.5], radius=0.2, size=0.01)
17
+ >>> mesh.remesh(hmax=0.1, verbose=-1)
18
+
19
+ Multiple sizing constraints (minimum size wins):
20
+
21
+ >>> mesh.set_size_sphere(center=[0, 0, 0], radius=0.3, size=0.01)
22
+ >>> mesh.set_size_sphere(center=[1, 1, 1], radius=0.3, size=0.01)
23
+ >>> mesh.set_size_box(bounds=[[0.4, 0.4, 0.4], [0.6, 0.6, 0.6]], size=0.005)
24
+ >>> mesh.remesh(hmax=0.1, verbose=-1)
25
+
26
+ Distance-based sizing from a point:
27
+
28
+ >>> mesh.set_size_from_point(
29
+ ... point=[0.5, 0.5, 0.5],
30
+ ... near_size=0.01,
31
+ ... far_size=0.1,
32
+ ... influence_radius=0.5,
33
+ ... )
34
+ >>> mesh.remesh(verbose=-1)
35
+
36
+ """
37
+
38
+ from __future__ import annotations
39
+
40
+ from abc import ABC, abstractmethod
41
+ from dataclasses import dataclass
42
+ from typing import TYPE_CHECKING
43
+
44
+ import numpy as np
45
+
46
+ if TYPE_CHECKING:
47
+ from numpy.typing import NDArray
48
+
49
+ from mmgpy import MmgMesh2D, MmgMesh3D, MmgMeshS
50
+
51
+ _BOUNDS_DIM_COUNT = 2
52
+ _ZERO_LENGTH_THRESHOLD = 1e-12
53
+
54
+
55
+ @dataclass
56
+ class SizingConstraint(ABC):
57
+ """Base class for sizing constraints."""
58
+
59
+ @abstractmethod
60
+ def compute_sizes(
61
+ self,
62
+ vertices: NDArray[np.float64],
63
+ ) -> NDArray[np.float64]:
64
+ """Compute target size at each vertex.
65
+
66
+ Parameters
67
+ ----------
68
+ vertices : NDArray[np.float64]
69
+ Vertex coordinates, shape (n_vertices, dim).
70
+
71
+ Returns
72
+ -------
73
+ NDArray[np.float64]
74
+ Target size at each vertex, shape (n_vertices,).
75
+ Use np.inf for vertices where this constraint doesn't apply.
76
+
77
+ """
78
+
79
+
80
+ @dataclass
81
+ class SphereSize(SizingConstraint):
82
+ """Uniform size within a spherical region.
83
+
84
+ Parameters
85
+ ----------
86
+ center : array_like
87
+ Center of the sphere, shape (dim,).
88
+ radius : float
89
+ Radius of the sphere. Must be positive.
90
+ size : float
91
+ Target edge size within the sphere. Must be positive.
92
+
93
+ """
94
+
95
+ center: NDArray[np.float64]
96
+ radius: float
97
+ size: float
98
+
99
+ def __post_init__(self) -> None: # noqa: D105
100
+ self.center = np.asarray(self.center, dtype=np.float64)
101
+ if self.radius <= 0:
102
+ msg = f"radius must be positive, got {self.radius}"
103
+ raise ValueError(msg)
104
+ if self.size <= 0:
105
+ msg = f"size must be positive, got {self.size}"
106
+ raise ValueError(msg)
107
+
108
+ def compute_sizes( # noqa: D102
109
+ self,
110
+ vertices: NDArray[np.float64],
111
+ ) -> NDArray[np.float64]:
112
+ distances = np.linalg.norm(vertices - self.center, axis=1)
113
+
114
+ sizes = np.full(len(vertices), np.inf, dtype=np.float64)
115
+
116
+ inside_mask = distances <= self.radius
117
+ sizes[inside_mask] = self.size
118
+
119
+ return sizes
120
+
121
+
122
+ @dataclass
123
+ class BoxSize(SizingConstraint):
124
+ """Uniform size within a box region.
125
+
126
+ Parameters
127
+ ----------
128
+ bounds : array_like
129
+ Box bounds as [[xmin, ymin, zmin], [xmax, ymax, zmax]] for 3D
130
+ or [[xmin, ymin], [xmax, ymax]] for 2D.
131
+ size : float
132
+ Target edge size within the box. Must be positive.
133
+
134
+ """
135
+
136
+ bounds: NDArray[np.float64]
137
+ size: float
138
+
139
+ def __post_init__(self) -> None: # noqa: D105
140
+ self.bounds = np.asarray(self.bounds, dtype=np.float64)
141
+ if self.bounds.shape[0] != _BOUNDS_DIM_COUNT:
142
+ msg = f"bounds must have shape (2, dim), got {self.bounds.shape}"
143
+ raise ValueError(msg)
144
+ if self.size <= 0:
145
+ msg = f"size must be positive, got {self.size}"
146
+ raise ValueError(msg)
147
+
148
+ def compute_sizes( # noqa: D102
149
+ self,
150
+ vertices: NDArray[np.float64],
151
+ ) -> NDArray[np.float64]:
152
+ min_corner = self.bounds[0]
153
+ max_corner = self.bounds[1]
154
+
155
+ inside_mask = np.all(
156
+ (vertices >= min_corner) & (vertices <= max_corner),
157
+ axis=1,
158
+ )
159
+
160
+ sizes = np.full(len(vertices), np.inf, dtype=np.float64)
161
+ sizes[inside_mask] = self.size
162
+
163
+ return sizes
164
+
165
+
166
+ @dataclass
167
+ class CylinderSize(SizingConstraint):
168
+ """Uniform size within a cylindrical region.
169
+
170
+ Parameters
171
+ ----------
172
+ point1 : array_like
173
+ First endpoint of cylinder axis, shape (3,).
174
+ point2 : array_like
175
+ Second endpoint of cylinder axis, shape (3,).
176
+ radius : float
177
+ Radius of the cylinder. Must be positive.
178
+ size : float
179
+ Target edge size within the cylinder. Must be positive.
180
+
181
+ """
182
+
183
+ point1: NDArray[np.float64]
184
+ point2: NDArray[np.float64]
185
+ radius: float
186
+ size: float
187
+
188
+ def __post_init__(self) -> None: # noqa: D105
189
+ self.point1 = np.asarray(self.point1, dtype=np.float64)
190
+ self.point2 = np.asarray(self.point2, dtype=np.float64)
191
+ if self.radius <= 0:
192
+ msg = f"radius must be positive, got {self.radius}"
193
+ raise ValueError(msg)
194
+ if self.size <= 0:
195
+ msg = f"size must be positive, got {self.size}"
196
+ raise ValueError(msg)
197
+
198
+ def compute_sizes( # noqa: D102
199
+ self,
200
+ vertices: NDArray[np.float64],
201
+ ) -> NDArray[np.float64]:
202
+ axis = self.point2 - self.point1
203
+ axis_length = np.linalg.norm(axis)
204
+ if axis_length < _ZERO_LENGTH_THRESHOLD:
205
+ msg = "Cylinder axis has zero length"
206
+ raise ValueError(msg)
207
+ axis_unit = axis / axis_length
208
+
209
+ v = vertices - self.point1
210
+ proj_length = np.dot(v, axis_unit)
211
+ proj_point = self.point1 + np.outer(proj_length, axis_unit)
212
+ radial_dist = np.linalg.norm(vertices - proj_point, axis=1)
213
+
214
+ in_height = (proj_length >= 0) & (proj_length <= axis_length)
215
+ in_radius = radial_dist <= self.radius
216
+ inside_mask = in_height & in_radius
217
+
218
+ sizes = np.full(len(vertices), np.inf, dtype=np.float64)
219
+ sizes[inside_mask] = self.size
220
+
221
+ return sizes
222
+
223
+
224
+ @dataclass
225
+ class PointSize(SizingConstraint):
226
+ """Distance-based sizing from a point.
227
+
228
+ Size varies linearly from near_size at the point to far_size at
229
+ influence_radius distance.
230
+
231
+ Parameters
232
+ ----------
233
+ point : array_like
234
+ Reference point, shape (dim,).
235
+ near_size : float
236
+ Target size at the reference point. Must be positive.
237
+ far_size : float
238
+ Target size at influence_radius distance and beyond. Must be positive.
239
+ influence_radius : float
240
+ Distance over which size transitions from near_size to far_size.
241
+ Must be positive.
242
+
243
+ """
244
+
245
+ point: NDArray[np.float64]
246
+ near_size: float
247
+ far_size: float
248
+ influence_radius: float
249
+
250
+ def __post_init__(self) -> None: # noqa: D105
251
+ self.point = np.asarray(self.point, dtype=np.float64)
252
+ if self.near_size <= 0:
253
+ msg = f"near_size must be positive, got {self.near_size}"
254
+ raise ValueError(msg)
255
+ if self.far_size <= 0:
256
+ msg = f"far_size must be positive, got {self.far_size}"
257
+ raise ValueError(msg)
258
+ if self.influence_radius <= 0:
259
+ msg = f"influence_radius must be positive, got {self.influence_radius}"
260
+ raise ValueError(msg)
261
+
262
+ def compute_sizes( # noqa: D102
263
+ self,
264
+ vertices: NDArray[np.float64],
265
+ ) -> NDArray[np.float64]:
266
+ distances = np.linalg.norm(vertices - self.point, axis=1)
267
+ t = np.clip(distances / self.influence_radius, 0.0, 1.0)
268
+ return self.near_size + t * (self.far_size - self.near_size)
269
+
270
+
271
+ def compute_sizes_from_constraints(
272
+ vertices: NDArray[np.float64],
273
+ constraints: list[SizingConstraint],
274
+ ) -> NDArray[np.float64]:
275
+ """Compute combined sizing from multiple constraints.
276
+
277
+ Multiple constraints are combined by taking the minimum size at each vertex
278
+ (finest mesh wins).
279
+
280
+ Parameters
281
+ ----------
282
+ vertices : NDArray[np.float64]
283
+ Vertex coordinates, shape (n_vertices, dim).
284
+ constraints : list[SizingConstraint]
285
+ List of sizing constraints.
286
+
287
+ Returns
288
+ -------
289
+ NDArray[np.float64]
290
+ Combined target size at each vertex, shape (n_vertices,).
291
+
292
+ """
293
+ if not constraints:
294
+ msg = "No sizing constraints provided"
295
+ raise ValueError(msg)
296
+
297
+ n_vertices = len(vertices)
298
+ combined = np.full(n_vertices, np.inf, dtype=np.float64)
299
+
300
+ for constraint in constraints:
301
+ sizes = constraint.compute_sizes(vertices)
302
+ combined = np.minimum(combined, sizes)
303
+
304
+ return combined
305
+
306
+
307
+ def sizes_to_metric(
308
+ sizes: NDArray[np.float64],
309
+ ) -> NDArray[np.float64]:
310
+ """Convert scalar sizes to metric tensor format.
311
+
312
+ Parameters
313
+ ----------
314
+ sizes : NDArray[np.float64]
315
+ Target sizes at each vertex, shape (n_vertices,).
316
+
317
+ Returns
318
+ -------
319
+ NDArray[np.float64]
320
+ Metric field suitable for mesh["metric"], shape (n_vertices, 1).
321
+
322
+ """
323
+ return sizes.reshape(-1, 1)
324
+
325
+
326
+ def apply_sizing_constraints(
327
+ mesh: MmgMesh3D | MmgMesh2D | MmgMeshS,
328
+ constraints: list[SizingConstraint],
329
+ existing_metric: NDArray[np.float64] | None = None,
330
+ ) -> None:
331
+ """Apply sizing constraints to a mesh by setting its metric field.
332
+
333
+ Parameters
334
+ ----------
335
+ mesh : MmgMesh3D | MmgMesh2D | MmgMeshS
336
+ Mesh to apply sizing to.
337
+ constraints : list[SizingConstraint]
338
+ List of sizing constraints.
339
+ existing_metric : NDArray[np.float64] | None
340
+ Existing metric field to combine with. If provided, minimum size wins.
341
+
342
+ """
343
+ if not constraints:
344
+ return
345
+
346
+ vertices = mesh.get_vertices()
347
+ sizes = compute_sizes_from_constraints(vertices, constraints)
348
+
349
+ if existing_metric is not None and existing_metric.shape[1] == 1:
350
+ existing_sizes = existing_metric.ravel()
351
+ sizes = np.minimum(sizes, existing_sizes)
352
+
353
+ finite_mask = np.isfinite(sizes)
354
+ if not np.any(finite_mask):
355
+ # No constraints applied to any vertex (all sizes are inf).
356
+ # This can happen if all region-based constraints are placed outside
357
+ # the mesh bounds. Silently return without modifying the metric field,
358
+ # allowing remeshing to proceed with global parameters only.
359
+ return
360
+
361
+ metric = sizes_to_metric(sizes)
362
+
363
+ inf_mask = ~finite_mask
364
+ if np.any(inf_mask):
365
+ finite_sizes = sizes[finite_mask]
366
+ if len(finite_sizes) > 0:
367
+ max_size = np.max(finite_sizes) * 10
368
+ metric[inf_mask] = max_size
369
+
370
+ mesh["metric"] = metric
@@ -0,0 +1,2 @@
1
+ Version: 1.11.2
2
+ Arguments: ['D:\\a\\_temp\\setup-uv-cache\\archive-v0\\88sg-_D9kVr1YcEz-see2\\Scripts\\delvewheel', 'repair', '-w', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-cnhrhw8x\\cp310-win_amd64\\repaired_wheel', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-cnhrhw8x\\cp310-win_amd64\\built_wheel\\mmgpy-0.2.0-cp310-cp310-win_amd64.whl', '--add-path', 'C:/bin', '--ignore-in-wheel']
@@ -0,0 +1,75 @@
1
+ Metadata-Version: 2.2
2
+ Name: mmgpy
3
+ Version: 0.2.0
4
+ Summary: Python bindings for the MMG software
5
+ Author-Email: Kevin MArchais <kevinmarchais@gmail.com>
6
+ License: MIT
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: meshio>=5.3.5
17
+ Requires-Dist: numpy>=2.0.2
18
+ Requires-Dist: patchelf>=0.17.2.4; sys_platform == "linux"
19
+ Requires-Dist: pyvista>=0.46.4
20
+ Requires-Dist: rich>=13.0.0
21
+ Requires-Dist: scipy>=1.11.0
22
+ Requires-Dist: typing-extensions>=4.0.0; python_version < "3.11"
23
+ Description-Content-Type: text/markdown
24
+
25
+ # mmgpy
26
+
27
+ This is a Python package that provides bindings for the [MMG software](https://www.mmgtools.org) for mesh generation and optimization.
28
+ The goal in the end is to provide a pythonic interface to mmg's capabilities.
29
+
30
+ Example from [`examples/mmgs/mechanical_piece_remeshing.py`](https://github.com/kmarchais/mmgpy/blob/main/examples/mmgs/mechanical_piece_remeshing.py) ([original tutorial](https://www.mmgtools.org/mmg-remesher-try-mmg/mmg-remesher-tutorials/mmg-remesher-mmgs/mmg-remesher-mechanical-piece-remeshing)):
31
+ ![Mechanical piece remeshing](assets/mechanical_piece_remeshing.png)
32
+
33
+ Example from [`examples/mmgs/smooth_surface_remeshing.py`](https://github.com/kmarchais/mmgpy/blob/main/examples/mmgs/smooth_surface_remeshing.py) ([original tutorial](https://www.mmgtools.org/mmg-remesher-try-mmg/mmg-remesher-tutorials/mmg-remesher-mmgs/mmg-remesher-smooth-surface-remeshing)):
34
+ ![Smooth surface remeshing](assets/smooth_surface_remeshing.png)
35
+
36
+ Example from [`examples/mmg3d/mesh_quality_improvement.py`](https://github.com/kmarchais/mmgpy/blob/main/examples/mmg3d/mesh_quality_improvement.py) ([original tutorial](https://www.mmgtools.org/mmg-remesher-try-mmg/mmg-remesher-tutorials/mmg-remesher-mmg3d/mesh-quality-improvement-with-mean-edge-lengths-preservation)):
37
+ ![Mesh quality improvement with mean edge lengths preservation](assets/3d_mesh.png)
38
+
39
+ ## Installation
40
+
41
+ Install from PyPI (Windows, macOS, and Linux):
42
+
43
+ ```bash
44
+ pip install mmgpy
45
+ ```
46
+
47
+ Or with `uv`:
48
+
49
+ ```bash
50
+ uv pip install mmgpy
51
+ ```
52
+
53
+ To install directly from the repository:
54
+
55
+ ```bash
56
+ pip install git+https://github.com/kmarchais/mmgpy.git
57
+ ```
58
+
59
+ ## Build dependencies
60
+
61
+ - pybind11: Used for Python bindings
62
+ - BSD 3-Clause License
63
+ - Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
64
+
65
+ - CMake (>= 3.0): Build system
66
+ - BSD 3-Clause License
67
+ - Copyright 2000-2024 Kitware, Inc. and Contributors
68
+
69
+ - scikit-build: Python build system integration
70
+ - MIT License
71
+ - Copyright (c) 2014 Mike Sarahan
72
+
73
+ - pytest: Testing framework
74
+ - MIT License
75
+ - Copyright (c) 2004 Holger Krekel and others
@@ -0,0 +1,129 @@
1
+ bin/concrt140.dll,sha256=JAU1XwpYBnslj43zPDJ-Oj1xbqrFo6Wuu3V4Qthb03Y,324208
2
+ bin/mmg.dll,sha256=lXYHMp3Fs7xwdKPof-By4BWI59Op7h6yyQU83LPoooQ,1226752
3
+ bin/mmg2d.dll,sha256=qZ-W09NidUib_0A9a2usHk-1lA-K6YepNjyi7WIz4Y4,372224
4
+ bin/mmg2d_O3.exe,sha256=aeZYNvu0PwutRZ8EqoC-TfFkU-Vy1dWTCgyF3-MW0y4,22016
5
+ bin/mmg3d.dll,sha256=y1ttlu3he9LvhlI_9jlb-w-9eO1r1nQ2UCwaZtSgHxE,784384
6
+ bin/mmg3d_O3.exe,sha256=9zw4Q8GlfCZyE6VbSMB6HTVez_4_MiKz91Rc55H_siM,22016
7
+ bin/mmgs.dll,sha256=xqAVAKmEcpExYoWNzMWDViKXuyqP2ElfbSPELXM33fs,432640
8
+ bin/mmgs_O3.exe,sha256=W4bbuMMQ4M5RBGBBclDqxll3fAEQliWasMVd65czSE0,23040
9
+ bin/msvcp140.dll,sha256=D4hbUJpoXSu_plL-0mtfsx2I-9qwqXjGQdHHuKpGCqk,557728
10
+ bin/msvcp140_1.dll,sha256=v61a70xjpmnjwUBlXN_fOVtsl5tACkR71dy2XtiCbD0,35952
11
+ bin/msvcp140_2.dll,sha256=PqBvDuCYtII8t5WZ3zeA5_I8zlLBmqwx0qDUfv4zpek,280200
12
+ bin/msvcp140_atomic_wait.dll,sha256=ZAsq787UhNA2jupb3Qat3QZYo6cKSSVuVg1pI7QEpHk,50304
13
+ bin/msvcp140_codecvt_ids.dll,sha256=8gaaUogOyIXufwURGGEA63-toEEaK0lI-v6nc1uHihg,31872
14
+ bin/vcruntime140.dll,sha256=1eTZo-g1-meUUBRdan2U42VzpQkxcRGQTZs3EsMNkGY,124544
15
+ bin/vcruntime140_1.dll,sha256=Hy1BxKpdsLwz6_e2bXKUOoF9fObL6IBQKpQDgjYzCT8,49792
16
+ bin/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
17
+ include/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
18
+ include/mmg/libmmg.h,sha256=SuiwjHkK5L0z_TIl0YXlpOCjyKKYIlxZys881jhfRI8,2450
19
+ include/mmg/libmmgf.h,sha256=dw9j7Urlcdk4WqUKUhxAk6Lxul1anP2UVPia6fhS9yY,1753
20
+ include/mmg/common/libmmgtypes.h,sha256=Z1cyLqcjsQgDLjWrdEv6nZyIIuEY_7v2Jc9HRfbNNKk,24469
21
+ include/mmg/common/libmmgtypesf.h,sha256=JQOvz2vK_5Ua74mPGZ5Tzgiiarw7dUWlcroniJzbv3M,27094
22
+ include/mmg/common/mmgcmakedefines.h,sha256=hVPltFUorABr3aLl6j35GiG0Yl9fZW2zyDDTg6yCWHk,1771
23
+ include/mmg/common/mmgcmakedefinesf.h,sha256=Eu5uNxkfHxPgB6nHjM1DJUO7pNXk6AKS7KwJFYLWfdY,1316
24
+ include/mmg/common/mmgversion.h,sha256=3nHvWm9WDJiy2_lylllxwzsI9xtUuw7QDJPzW0VvQh0,2150
25
+ include/mmg/common/mmg_export.h,sha256=fJWppzen-Io2DRvOZJ0DrEeYEPaTIYU1ZNmXY-q6ecc,1954
26
+ include/mmg/mmg2d/libmmg2d.h,sha256=OviS5ZpXp3x8hhgwm8DOQRijUpio0mEG_AU-tJsVXXI,109436
27
+ include/mmg/mmg2d/libmmg2df.h,sha256=bA1SQZZazVpDPpITAMHpp3tevPbCU4oD5Z-AFjxZn2Q,113898
28
+ include/mmg/mmg2d/mmg2d_export.h,sha256=b0iLUfupFR-TleFMcEb8SReHkpnXWtILiQI0UkeMn70,1442
29
+ include/mmg/mmg3d/libmmg3d.h,sha256=aS8D5DJBF7hzNsissTJ2Xizo3wZWMLkOFuMGh9XBkBg,138260
30
+ include/mmg/mmg3d/libmmg3df.h,sha256=0kVVKKj8lS_Nkpta9v93H8Ubf8dgtweNAwRa9D98LsM,143632
31
+ include/mmg/mmg3d/mmg3d_export.h,sha256=wSo0kEQyo9chYY6D_LYvCRACJXG8TLELthoAT50IbO8,1442
32
+ include/mmg/mmgs/libmmgs.h,sha256=Hm380P3iNoAoB3vyn-LhZ7zF7YQ8Tj6c_1PgC1VhWCE,100741
33
+ include/mmg/mmgs/libmmgsf.h,sha256=4kwQyw6DwVrMkCKrIny_18H05hYo-CWV9gqDn2knoTo,104955
34
+ include/mmg/mmgs/mmgs_export.h,sha256=f0y6JKDSguWIv4JfoGm6Sif2izR0BvcZQ1izDdvZVZw,1437
35
+ lib/mmg.lib,sha256=kXXxBcrDhThNzymDetSh-b6NC6Q4j0gwRJ7zFTc8Dmc,88692
36
+ lib/mmg2d.lib,sha256=3nrShJnVROEXIUIO3gxiU0TlLDdOtn6wLvrOKIuAhCE,34192
37
+ lib/mmg3d.lib,sha256=lAeWhOEhTsqwKbN8vtneD8RHtMXIgoNMo96y_3XLllk,39728
38
+ lib/mmgs.lib,sha256=UtN7XqaAPts2YzVfCQ0uevHXXc2OljO-lXxUKuMLDt0,31666
39
+ lib/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
40
+ lib/cmake/mmg/FindElas.cmake,sha256=LvQ66sIOO5tRw8GU0sH_lEJgeJhUrkhUAXSOxxfrSZY,2137
41
+ lib/cmake/mmg/FindSCOTCH.cmake,sha256=JnH6usBQmGdfTxwcaj8dspRuOKtx0BqnkVwbDorcxOg,12480
42
+ lib/cmake/mmg/mmgConfig.cmake,sha256=Mhaz7qvtvVI9Y9G7DOj7vtoFBZEodNbKCGUOHMB3SOo,1350
43
+ lib/cmake/mmg/MmgTargets-release.cmake,sha256=D6s0LsBMQwyeX3ztSzVbHhc9N3LB662Xj8FiDBef7V4,3036
44
+ lib/cmake/mmg/MmgTargets.cmake,sha256=CnlWeDFywPi3WSX4CMNi6d6c6UoVilI-MjgXDRWCwwU,4997
45
+ mmgpy/lagrangian.py,sha256=i9_QPlWkw1S6grVeHwcWtfrvKUH1AAbVvkSsLZju9Dw,13261
46
+ mmgpy/metrics.py,sha256=ESqQ10ZjBqYLBb-FjIF7cSxo06qrRwkUBGiyvnYK1Ys,18683
47
+ mmgpy/mmg2d.dll,sha256=qZ-W09NidUib_0A9a2usHk-1lA-K6YepNjyi7WIz4Y4,372224
48
+ mmgpy/mmg2d.lib,sha256=3nrShJnVROEXIUIO3gxiU0TlLDdOtn6wLvrOKIuAhCE,34192
49
+ mmgpy/mmg3d.dll,sha256=y1ttlu3he9LvhlI_9jlb-w-9eO1r1nQ2UCwaZtSgHxE,784384
50
+ mmgpy/mmg3d.lib,sha256=lAeWhOEhTsqwKbN8vtneD8RHtMXIgoNMo96y_3XLllk,39728
51
+ mmgpy/mmgs.dll,sha256=xqAVAKmEcpExYoWNzMWDViKXuyqP2ElfbSPELXM33fs,432640
52
+ mmgpy/mmgs.lib,sha256=UtN7XqaAPts2YzVfCQ0uevHXXc2OljO-lXxUKuMLDt0,31666
53
+ mmgpy/progress.py,sha256=9SI3gcsp9pjvBR8kVnuKnswgVVBfrDqDNgOrw6m_OY0,1393
54
+ mmgpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ mmgpy/sizing.py,sha256=cHbB_2WEmN4eUwRXDnkefnclxNZVsH9r-VpYqPJvToI,11171
56
+ mmgpy/_logging.py,sha256=O9EYFBEve-A61cln-tUlazaLy9fD1MFOxRAhg4iWTRk,2241
57
+ mmgpy/_mmgpy.cp310-win_amd64.pyd,sha256=nrjQ2SBPW3Q3sidFImYgJFkIiZHQkjz8Nrvd4L_pCY0,405504
58
+ mmgpy/_mmgpy.pyi,sha256=VUZBVV7j-7fDPatDflNjYAxFDJsfFfY0FYV7uhsJukY,21071
59
+ mmgpy/_options.py,sha256=uJdvIv2IyFrf77YNpeVH8jK_rCiDRVIuCnnbILzjb20,8821
60
+ mmgpy/_progress.py,sha256=h6iEmAuwZGIH6ScprJyWjzccPsflEkfjy4McfQZpK3o,15801
61
+ mmgpy/_pyvista.py,sha256=X7YTPBmvD1p9vgAEERHCKMncgQ7ruGy1dUOPvnJ_v-4,13082
62
+ mmgpy/_version.py,sha256=fvKbL3vcne3BRc0tG5gpJph8qb-tl8TdwFt9KGybyCM,53
63
+ mmgpy/_version.py.in,sha256=zSyxqlGSpsKY4ONjnNGRwP3vZgho9RwAM5JHjcdU5MI,63
64
+ mmgpy/__init__.py,sha256=Ng5xono-7vwydawAT15nb1O-1AvoYRqxKVQw7npR1yc,29991
65
+ mmgpy-0.2.0.dist-info/DELVEWHEEL,sha256=FwqnSX2zlvocP5v9a2g7dQe_TJ_oCa-ehWEID2IMVdg,413
66
+ mmgpy-0.2.0.dist-info/entry_points.txt,sha256=FTs8BO44K4ytneBcUgWDQKtJPKkO-WSPr-ckNkI-f3g,134
67
+ mmgpy-0.2.0.dist-info/METADATA,sha256=zPwSqt3hXZSTqtu2U4UblJKnt89qvPoR4TUISQmLrQE,2956
68
+ mmgpy-0.2.0.dist-info/RECORD,,
69
+ mmgpy-0.2.0.dist-info/WHEEL,sha256=hrGeChGtn46HBGmzasO9QQDSLelRN-tUarBSv4gFcsI,106
70
+ mmgpy-0.2.0.dist-info/licenses/LICENSE,sha256=cDeMFhk0f8fEM2w_x3c-PU_vdKi32xumcKeyEsqMEzE,1684
71
+ mmgpy.libs/vtkCommonColor-9.4-799ae0f43eb3a04510b0ed500c05e895.dll,sha256=eZrg9D6zoEUQsO1QDAXolbi-0Fn2zVAEuDXNQ6FYs1U,100864
72
+ mmgpy.libs/vtkCommonComputationalGeometry-9.4-e1ee47e9ca84c220e3fda21c864610e9.dll,sha256=4e5H6cqEwiDj_aIchkYQ6eZe7qexncUt0pIZsW3anDI,171008
73
+ mmgpy.libs/vtkCommonCore-9.4.dll,sha256=ANGZhJ8744iDMocgUlGLJIHJzOMxyZcYj3VYpQ8NoFs,13240320
74
+ mmgpy.libs/vtkCommonDataModel-9.4.dll,sha256=-wUTm12ATjkgJ9B5j7BA45WJBaX-yafZb42nh3tR4Vk,4531200
75
+ mmgpy.libs/vtkCommonExecutionModel-9.4-5fea279cddbd0dd8e39907cbfb423d2c.dll,sha256=MpQT9S-J61O7xw7eDbSIl_geUAY1pqK_DQw5YY2WoPo,850432
76
+ mmgpy.libs/vtkCommonMath-9.4-70aba6f1b0ad06008b5990b6843ff4e9.dll,sha256=VGpKVLGJFLvjCOOJnaqkn8DZUXvgkg9l7bNzqt3bYTA,153600
77
+ mmgpy.libs/vtkCommonMisc-9.4-96697cc413673520510a54c05fa0ef99.dll,sha256=lml8xBNnNSBRClTAX6DvmRmi7kY91Bhp6X7nYs0u388,2779136
78
+ mmgpy.libs/vtkCommonSystem-9.4-a748ca3c31712678e4e0f2ff3b09785b.dll,sha256=p0jKPDFxJnjk4PL_Owl4W5b7EFGc-hPEdWE3x1F6ank,128000
79
+ mmgpy.libs/vtkCommonTransforms-9.4-11e72e99aca2003a38a3ff9bcfb90d92.dll,sha256=-p57J_0Jfd2DmI1deRk0xQqDMdb9UZFtt2oR7UTtjqU,214528
80
+ mmgpy.libs/vtkDICOMParser-9.4-6f27d14c12768aac52622cbd28ca0b3a.dll,sha256=byfRTBJ2iqxSYiy9KMoLOvI-2Ki_26TTO443EoKaszY,100352
81
+ mmgpy.libs/vtkdoubleconversion-9.4-676429e05704a1fd81323494aba16669.dll,sha256=Z2Qp4FcEof2BMjSUq6FmaQB9jlWokbGnf5jnnTKcKdU,65024
82
+ mmgpy.libs/vtkexpat-9.4-58e3b6d3064cf0e02659e3a57f60f779.dll,sha256=WOO20wZM8OAmWeOlf2D3eX_dRdrIKFoCswG6ygMV-Ho,157696
83
+ mmgpy.libs/vtkFiltersCellGrid-9.4-5675f4c4a8440bd5f5981149f99315e8.dll,sha256=6hdLOAJ2_QE1CWe7VsoePinpa_LpjuQ96O0bpK4zPcA,1012736
84
+ mmgpy.libs/vtkFiltersCore-9.4-ef29a82b399f8ffeec5dfa8c7e010901.dll,sha256=xUyVfXMCxKsLP1h04P3h_3PJPDBy5o_Fmbj6oXGzmbo,5960704
85
+ mmgpy.libs/vtkFiltersExtraction-9.4-6a452db7095d68b3af501d1b39a05670.dll,sha256=MomG8-qcQzgBNZkwT3z2Zwg3lzT15lX-Uu_8tep2PJc,807936
86
+ mmgpy.libs/vtkFiltersGeneral-9.4-b9b071ef41cba7c6468dd7e0a9f5d4bf.dll,sha256=Q0plYPnhfGvQpL1FnMiKbKcprK5zPb8DXXuqfp51z54,3833344
87
+ mmgpy.libs/vtkFiltersGeometry-9.4-757f3c8b9a1fd9774cce83aec0c94c55.dll,sha256=dBSiBje3Q6bSd3iZWTUNtg92aissb_tZ0Gehw11l8cw,958976
88
+ mmgpy.libs/vtkFiltersHybrid-9.4-6b343077b9da30bb95fc4492762b9bed.dll,sha256=23MRHCr0A3NHL_1mXLDTo1kZDLufPEPnF7Lj1BiM8wo,779776
89
+ mmgpy.libs/vtkFiltersHyperTree-9.4-831d7e88dd11a3faec876929089d21e8.dll,sha256=cGXQDf-IUam-fb4tTbOxQXDr-gp0ZutxculR4UNiWLE,409088
90
+ mmgpy.libs/vtkFiltersModeling-9.4-a3fc680a4836e8913376390217ceae1e.dll,sha256=RyWmbxooZ7Z6ayVg_hZQtiKJNjUECA-q2eEDn37Z1Vs,698880
91
+ mmgpy.libs/vtkFiltersParallel-9.4-5307d8b619459bb2aeb13c2872cebc2b.dll,sha256=0nw2AGiyo-5DxLjXTxiI5hdc1OD8N7ldIwUhAKhJpyQ,854528
92
+ mmgpy.libs/vtkFiltersReduction-9.4-f7abe86bfcde726b6e7daec4773a089f.dll,sha256=YGGq6vdDdXT4n2JBlYHkWFvJZuL8kr-k46HRuASjubg,1093120
93
+ mmgpy.libs/vtkFiltersSources-9.4-d38546a5e2bfd83ea0a70f5be4fa7fdc.dll,sha256=NHl0C_yCNVVAGW_EoBlcGXlnCPZpdHRDiOuV1l0XX4I,671744
94
+ mmgpy.libs/vtkFiltersStatistics-9.4-d2abec2372ab98574cdbd0461c73d459.dll,sha256=XoarjNtEoNXy_wTlglR_gMFteoNwk3QFmeImXLlSZ30,759808
95
+ mmgpy.libs/vtkFiltersTexture-9.4-a374b3cfe75e10483976a6a6780ca1ca.dll,sha256=-dNRsGJv0Kj9LBqvloaVZWk2fZoJpsW-tBZZjreb3NI,97280
96
+ mmgpy.libs/vtkFiltersVerdict-9.4-a6a276b6e0d3ac6d042f192842c9382a.dll,sha256=X9qoGXbi7-FXGVrTJCl7b2q6skwwNBCli4q9aZJ_Hvc,195584
97
+ mmgpy.libs/vtkfmt-9.4-fd2ae0aaa19f2f735b93d4feb613d558.dll,sha256=_SrgqqGfL3Nbk9T-thPVWDfb2w8qw8V85qkVK4KTmYw,139776
98
+ mmgpy.libs/vtkImagingCore-9.4-ecc92d2d09d8ac4e8f3b199a917f96fd.dll,sha256=1b1lcvt3EGsL7IUI3-5A-fQWBVcI-r4wl9jxgKRVIUM,1715200
99
+ mmgpy.libs/vtkImagingSources-9.4-944fcaf71940d51ed5dc1b5c8eba2571.dll,sha256=jatOW54pIU-eRJLvfrxl_IQamL3MPF3BRfafe0DfsHk,183296
100
+ mmgpy.libs/vtkIOCellGrid-9.4-0df3bee5d56b2062dad430b53f81f06a.dll,sha256=hQpSIuAixgYcy2xnIFofX33Mic1hIxrtTvNX3vFzBfY,433664
101
+ mmgpy.libs/vtkIOCore-9.4.dll,sha256=iZ38mhcjQIFWB3msxzCWL9dwcCBqKvD0vj5IzujMG_s,435712
102
+ mmgpy.libs/vtkIOGeometry-9.4-13e2301d83eea31e8df955a8dd196eb1.dll,sha256=0z5SPTbCt6cCZbttYgI49-vesy9K-2zqtGJGGVydFKA,1644032
103
+ mmgpy.libs/vtkIOImage-9.4-666beab0c43da6c4b2c59fba464bb6b1.dll,sha256=7eOIL1pF0ryjOFF8NRw6M6iQw452XecV3xMODpxOsRs,1059840
104
+ mmgpy.libs/vtkIOLegacy-9.4.dll,sha256=zeFSf2sQMm8Rgg92nCjyIrgNlB91dQU3yEgN8McYx6I,682496
105
+ mmgpy.libs/vtkIOParallel-9.4.dll,sha256=9lfgOAYWlGTRWO4_Q0EXx_0SjG1WEbbmVMd0VpTzZaM,405504
106
+ mmgpy.libs/vtkIOParallelXML-9.4.dll,sha256=2KkUwTP261aNOEk1pNiyUUeg5si0nzMO8H-KWIZ7iPk,209408
107
+ mmgpy.libs/vtkIOXML-9.4.dll,sha256=tQPc90h0vrGoxPiKBQW8tr0L5S04j6w1y5NUXOmEqwE,902144
108
+ mmgpy.libs/vtkIOXMLParser-9.4-f4144aed6a73ee50eefeae75a78fd71b.dll,sha256=8S8v8LW6Jcxlu1RFQIIY9652n23WDGFwossX9-C2ntk,110592
109
+ mmgpy.libs/vtkjpeg-9.4-2fd58669e746a0d571706ff3f4c1896f.dll,sha256=L9WGaedGoNVxcG_z9MGJb65ly0q0Vhpou_UliFhO1RY,428032
110
+ mmgpy.libs/vtkjsoncpp-9.4-c2076501decec6ce45be5280d480c02d.dll,sha256=wgdlAd7Oxs5FvlKA1IDALdt_HjE_0OogCJ843QNkdho,212992
111
+ mmgpy.libs/vtkkissfft-9.4-874ed77ec96808d2e395a6caeb69abbe.dll,sha256=h07XfsloCNLjlabK62mrvhi4XGKmAnYiFyTGlXPIZTg,22528
112
+ mmgpy.libs/vtkloguru-9.4-1038f41dd2d3acc7d894c1d57b428cc6.dll,sha256=EDj0HdLTrMfYlMHVe0KMxoqQURhVIuDW8PG_GGAd5ms,67072
113
+ mmgpy.libs/vtklz4-9.4-9982d6f8f47ac19965668cd3c2926473.dll,sha256=mYLW-PR6wZllZozTwpJkc6O2z4s9-7BWBCAKp3YBoqk,115200
114
+ mmgpy.libs/vtklzma-9.4-a473d065be12f766957c699a0aefac38.dll,sha256=pHPQZb4S92aVfGmaCu-sOKkO-ZE_O0x_eBz5hS76LL4,154624
115
+ mmgpy.libs/vtkmetaio-9.4-aa48920e94a28f23d08054f5e82867f4.dll,sha256=gb1sG7SXbTAB9v-AcLaFj-lIwBpIwHqDu46LTz5aoRE,531968
116
+ mmgpy.libs/vtkParallelCore-9.4-114ce4e5a12302a9f3c3485ab88d5a39.dll,sha256=n5VEjoXhTWvOz3Wdk47jyF38pjPHdq7BNseiSLFd6Ng,362496
117
+ mmgpy.libs/vtkParallelDIY-9.4-7add130df7f5139505a17ee72afefa41.dll,sha256=GY4IGyw92XOqa72aMXVP6TWqRYq3R5pVgaOZvwUD4hY,746496
118
+ mmgpy.libs/vtkpng-9.4-cbefdfbef5c0d4dd7ae43b9d526e881a.dll,sha256=l5FJNcAnUI9hzuLOYQKviZyE9NvD8352PhZLQSHipo4,201216
119
+ mmgpy.libs/vtkpugixml-9.4-9c7652d9a42fd99e62753e7d3fd87ee9.dll,sha256=nHZS2aQv2Z5idT59P9h-6ZN2cpgdGANSOO9Y7wgYojQ,206848
120
+ mmgpy.libs/vtkRenderingCore-9.4-ec5612bc182f43047add4c6a55050be4.dll,sha256=PFrd5r7RIOvERzzL2sAyZAPI3duXSAWbfluK9BnqxBc,1971712
121
+ mmgpy.libs/vtksys-9.4.dll,sha256=EgNbTQw38oLlHuIrzbG8ZcO7MUQ2Ce2orj3ML8nJc0o,313856
122
+ mmgpy.libs/vtktiff-9.4-9822dcf52447c045cf9a70960d45a9bd.dll,sha256=Lm_kEsHYGGMe65V-PFfzRpdx7CktZOxFK6BWlNZR9vY,408576
123
+ mmgpy.libs/vtktoken-9.4-471c14923651cbbd86067852f347807b.dll,sha256=RxwUkjZRy72GBnhS80eAe1ugd9fID0GkGuPHtec4dbo,100864
124
+ mmgpy.libs/vtkverdict-9.4-c549882a3b8671666be1366008f27f7e.dll,sha256=xUmIKjuGcWZr4TZgCPJ_ftrJ8GBeSgLoM7BkN0SpiPI,178688
125
+ mmgpy.libs/vtkzlib-9.4-3b9ffa51c80ccd91bb22a4c3ca11a8d7.dll,sha256=O5_6UcgMzZG7IqTDyhGo1xS88sw5-dmuy1BZTJePxwE,84992
126
+ share/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
127
+ share/man/man1/mmg2d.1.gz,sha256=YY68CM5Yb39NnO97kGV26FFdfOIyYmvypUVdD5DQyaE,2435
128
+ share/man/man1/mmg3d.1.gz,sha256=dVSyfIoVtimcm841HZocNehWcLaGrcgBIEPmABulMXk,2569
129
+ share/man/man1/mmgs.1.gz,sha256=yJfsZqeuw7ehxLkSm2wNm1hB9TQUjm1tS-L3susx_84,2298
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: scikit-build-core 0.11.6
3
+ Root-Is-Purelib: false
4
+ Tag: cp310-cp310-win_amd64
5
+
@@ -0,0 +1,6 @@
1
+ [console_scripts]
2
+ mmg2d_O3 = mmgpy:_run_mmg2d
3
+ mmg3d_O3 = mmgpy:_run_mmg3d
4
+ mmgs_O3 = mmgpy:_run_mmgs
5
+ fix-mmg-rpath = mmgpy:_fix_rpath
6
+
@@ -0,0 +1,38 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2025 Kevin Marchais
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ --------------------------------------------------------------------------------
24
+
25
+ THIRD-PARTY LICENSES
26
+
27
+ This project uses the following third-party libraries:
28
+
29
+ MMG (https://www.mmgtools.org/)
30
+ License: GNU Lesser General Public License v3.0 or later (LGPL-3.0+)
31
+ Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004-
32
+
33
+ MMG is dynamically linked. The LGPL allows use in software under any license
34
+ provided users can replace the MMG libraries with their own builds.
35
+
36
+ pybind11 (https://github.com/pybind/pybind11)
37
+ License: BSD-3-Clause
38
+ Copyright (c) 2016 Wenzel Jakob
Binary file
Binary file