mmgpy 0.3.0__cp312-cp312-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 (132) hide show
  1. bin/Release/mmg2d_O3.exe +0 -0
  2. bin/Release/mmg3d_O3.exe +0 -0
  3. bin/Release/mmgs_O3.exe +0 -0
  4. bin/__init__.py +10 -0
  5. bin/concrt140.dll +0 -0
  6. bin/mmg.dll +0 -0
  7. bin/mmg2d.dll +0 -0
  8. bin/mmg2d_O3.exe +0 -0
  9. bin/mmg3d.dll +0 -0
  10. bin/mmg3d_O3.exe +0 -0
  11. bin/mmgs.dll +0 -0
  12. bin/mmgs_O3.exe +0 -0
  13. bin/msvcp140.dll +0 -0
  14. bin/msvcp140_1.dll +0 -0
  15. bin/msvcp140_2.dll +0 -0
  16. bin/msvcp140_atomic_wait.dll +0 -0
  17. bin/msvcp140_codecvt_ids.dll +0 -0
  18. bin/vcruntime140.dll +0 -0
  19. bin/vcruntime140_1.dll +0 -0
  20. include/__init__.py +10 -0
  21. include/mmg/common/libmmgtypes.h +687 -0
  22. include/mmg/common/libmmgtypesf.h +762 -0
  23. include/mmg/common/mmg_export.h +47 -0
  24. include/mmg/common/mmgcmakedefines.h +46 -0
  25. include/mmg/common/mmgcmakedefinesf.h +29 -0
  26. include/mmg/common/mmgversion.h +54 -0
  27. include/mmg/libmmg.h +67 -0
  28. include/mmg/libmmgf.h +42 -0
  29. include/mmg/mmg2d/libmmg2d.h +2761 -0
  30. include/mmg/mmg2d/libmmg2df.h +3263 -0
  31. include/mmg/mmg2d/mmg2d_export.h +34 -0
  32. include/mmg/mmg3d/libmmg3d.h +3444 -0
  33. include/mmg/mmg3d/libmmg3df.h +4041 -0
  34. include/mmg/mmg3d/mmg3d_export.h +34 -0
  35. include/mmg/mmgs/libmmgs.h +2560 -0
  36. include/mmg/mmgs/libmmgsf.h +3028 -0
  37. include/mmg/mmgs/mmgs_export.h +34 -0
  38. lib/__init__.py +10 -0
  39. lib/cmake/mmg/FindElas.cmake +57 -0
  40. lib/cmake/mmg/FindSCOTCH.cmake +373 -0
  41. lib/cmake/mmg/MmgTargets-release.cmake +53 -0
  42. lib/cmake/mmg/MmgTargets.cmake +127 -0
  43. lib/cmake/mmg/mmgConfig.cmake +43 -0
  44. lib/mmg.lib +0 -0
  45. lib/mmg2d.lib +0 -0
  46. lib/mmg3d.lib +0 -0
  47. lib/mmgs.lib +0 -0
  48. mmgpy/__init__.py +888 -0
  49. mmgpy/_logging.py +86 -0
  50. mmgpy/_mmgpy.cp312-win_amd64.pyd +0 -0
  51. mmgpy/_mmgpy.pyi +650 -0
  52. mmgpy/_options.py +304 -0
  53. mmgpy/_progress.py +539 -0
  54. mmgpy/_pyvista.py +423 -0
  55. mmgpy/_version.py +3 -0
  56. mmgpy/_version.py.in +3 -0
  57. mmgpy/lagrangian.py +394 -0
  58. mmgpy/metrics.py +595 -0
  59. mmgpy/mmg2d.dll +0 -0
  60. mmgpy/mmg2d.lib +0 -0
  61. mmgpy/mmg3d.dll +0 -0
  62. mmgpy/mmg3d.lib +0 -0
  63. mmgpy/mmgs.dll +0 -0
  64. mmgpy/mmgs.lib +0 -0
  65. mmgpy/progress.py +57 -0
  66. mmgpy/py.typed +0 -0
  67. mmgpy/sizing.py +370 -0
  68. mmgpy-0.3.0.dist-info/DELVEWHEEL +2 -0
  69. mmgpy-0.3.0.dist-info/METADATA +75 -0
  70. mmgpy-0.3.0.dist-info/RECORD +132 -0
  71. mmgpy-0.3.0.dist-info/WHEEL +5 -0
  72. mmgpy-0.3.0.dist-info/entry_points.txt +6 -0
  73. mmgpy-0.3.0.dist-info/licenses/LICENSE +38 -0
  74. mmgpy.libs/vtkCommonColor-9.5-07cd19e9d77559cb8be83e8ac8833cd4.dll +0 -0
  75. mmgpy.libs/vtkCommonComputationalGeometry-9.5-4aaf997b087c330e171c14a4ba6be7b2.dll +0 -0
  76. mmgpy.libs/vtkCommonCore-9.5.dll +0 -0
  77. mmgpy.libs/vtkCommonDataModel-9.5.dll +0 -0
  78. mmgpy.libs/vtkCommonExecutionModel-9.5-2f7a1bae0a1d4d0e205eea43596a659c.dll +0 -0
  79. mmgpy.libs/vtkCommonMath-9.5-609b01246386fe29df2677fa5c7ca793.dll +0 -0
  80. mmgpy.libs/vtkCommonMisc-9.5-4173df33811eddea1529a40bf93266c8.dll +0 -0
  81. mmgpy.libs/vtkCommonSystem-9.5-e5b15bd84934b99e3b2bbe5d3e064c97.dll +0 -0
  82. mmgpy.libs/vtkCommonTransforms-9.5-9b76a61640718d893271cc0b5db50d1d.dll +0 -0
  83. mmgpy.libs/vtkDICOMParser-9.5-203c95a77d21799a8049a576e1b28f2e.dll +0 -0
  84. mmgpy.libs/vtkFiltersCellGrid-9.5-fa6bda61d2d528369d8b2f3a66d2d6b4.dll +0 -0
  85. mmgpy.libs/vtkFiltersCore-9.5-935a5f5225a975e99626296b2f3ded70.dll +0 -0
  86. mmgpy.libs/vtkFiltersExtraction-9.5-dc0a7543ba584f7e8ce9f9184485a228.dll +0 -0
  87. mmgpy.libs/vtkFiltersGeneral-9.5-709f69dbcca8aba1750582106a97c605.dll +0 -0
  88. mmgpy.libs/vtkFiltersGeometry-9.5-7abfb655763a62f56d63b45038d6e811.dll +0 -0
  89. mmgpy.libs/vtkFiltersHybrid-9.5-0721ec98d8a8b7442d900747e1ec59fb.dll +0 -0
  90. mmgpy.libs/vtkFiltersHyperTree-9.5-f9ee6a4761fdad8956c08a51dae77636.dll +0 -0
  91. mmgpy.libs/vtkFiltersModeling-9.5-458d9d2c544bb3c37de28c26c05c07bc.dll +0 -0
  92. mmgpy.libs/vtkFiltersParallel-9.5-1f243ffe308277c3970d8be4172d856f.dll +0 -0
  93. mmgpy.libs/vtkFiltersReduction-9.5-bf8c4a248bd84fbd6bb1a2ab5f646e56.dll +0 -0
  94. mmgpy.libs/vtkFiltersSources-9.5-492fa5b1b8562f4b141a347a38ae1ce5.dll +0 -0
  95. mmgpy.libs/vtkFiltersStatistics-9.5-6e99ef76387303ec5ff8c0fe6101d446.dll +0 -0
  96. mmgpy.libs/vtkFiltersTexture-9.5-15c23120b41b9a1c4acb01f790aad01f.dll +0 -0
  97. mmgpy.libs/vtkFiltersVerdict-9.5-332c0402a58129ec5b6af7b7f56cbb62.dll +0 -0
  98. mmgpy.libs/vtkIOCellGrid-9.5-88e1ec9c5a3554a82aedc0027fe84c6b.dll +0 -0
  99. mmgpy.libs/vtkIOCore-9.5.dll +0 -0
  100. mmgpy.libs/vtkIOGeometry-9.5-47c69db15c63c5773efa6851b59ae0a7.dll +0 -0
  101. mmgpy.libs/vtkIOImage-9.5-74bb92e688da5595ff9ff7645f9a0a13.dll +0 -0
  102. mmgpy.libs/vtkIOLegacy-9.5.dll +0 -0
  103. mmgpy.libs/vtkIOParallel-9.5.dll +0 -0
  104. mmgpy.libs/vtkIOParallelXML-9.5.dll +0 -0
  105. mmgpy.libs/vtkIOXML-9.5.dll +0 -0
  106. mmgpy.libs/vtkIOXMLParser-9.5-1893156c41fd4cf7165904675cb5d15d.dll +0 -0
  107. mmgpy.libs/vtkImagingCore-9.5-145fc0249cffbd27c610d10812e1cbfc.dll +0 -0
  108. mmgpy.libs/vtkImagingSources-9.5-f0c087a4669caa045584ed61f52502b7.dll +0 -0
  109. mmgpy.libs/vtkParallelCore-9.5-e91757b6dbd2a5369ab2bd05ff95d79d.dll +0 -0
  110. mmgpy.libs/vtkParallelDIY-9.5-04dd6b6b5dd8a5eacd43d270999cf09a.dll +0 -0
  111. mmgpy.libs/vtkRenderingCore-9.5-24a9802d77a083def26449fa681b1af7.dll +0 -0
  112. mmgpy.libs/vtkdoubleconversion-9.5-5e39712b9f4e44ea8a26e9119e53a7d4.dll +0 -0
  113. mmgpy.libs/vtkexpat-9.5-3b1dd25e09a2cccbbac723de448cb894.dll +0 -0
  114. mmgpy.libs/vtkfmt-9.5-50239b66bf315d100ecd306114139e9b.dll +0 -0
  115. mmgpy.libs/vtkjpeg-9.5-9412ee79f685a9196398b988a59666cd.dll +0 -0
  116. mmgpy.libs/vtkjsoncpp-9.5-abfad956527e3a4885dbb39f99f9e4d4.dll +0 -0
  117. mmgpy.libs/vtkkissfft-9.5-464db9175ce63de19addc69be524c4b7.dll +0 -0
  118. mmgpy.libs/vtkloguru-9.5-ec016ed005b4a79062e329ad8f1c382d.dll +0 -0
  119. mmgpy.libs/vtklz4-9.5-798b58f4518733b0eee8027eeba022fb.dll +0 -0
  120. mmgpy.libs/vtklzma-9.5-8f489b5430eb47d578de52c769a4dd5c.dll +0 -0
  121. mmgpy.libs/vtkmetaio-9.5-8f0a559399d53e4c7fc06272620b2167.dll +0 -0
  122. mmgpy.libs/vtkpng-9.5-1dbed3116ba7e31f56512a93b942cdf5.dll +0 -0
  123. mmgpy.libs/vtkpugixml-9.5-23ef37d65494ab52babc6d45b24764b7.dll +0 -0
  124. mmgpy.libs/vtksys-9.5.dll +0 -0
  125. mmgpy.libs/vtktiff-9.5-767fd93c8402517d5b2d1befab98c41e.dll +0 -0
  126. mmgpy.libs/vtktoken-9.5-f4ff567202eeb9a613c0b242aa05dbc9.dll +0 -0
  127. mmgpy.libs/vtkverdict-9.5-6bb84649d1b0ca1cc5454307fd35083b.dll +0 -0
  128. mmgpy.libs/vtkzlib-9.5-779937c44671e188e9f96125eb5afb12.dll +0 -0
  129. share/__init__.py +10 -0
  130. share/man/man1/mmg2d.1.gz +0 -0
  131. share/man/man1/mmg3d.1.gz +0 -0
  132. 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\\Zyd5P78WnNh3Fa7XxkoSi\\Scripts\\delvewheel', 'repair', '-w', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-8u5zzq2y\\cp312-win_amd64\\repaired_wheel', 'C:\\Users\\runneradmin\\AppData\\Local\\Temp\\cibw-run-8u5zzq2y\\cp312-win_amd64\\built_wheel\\mmgpy-0.3.0-cp312-cp312-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.3.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,132 @@
1
+ bin/concrt140.dll,sha256=JAU1XwpYBnslj43zPDJ-Oj1xbqrFo6Wuu3V4Qthb03Y,324208
2
+ bin/mmg.dll,sha256=HU-q6n3S7yNtq-zP_zqSoArcv-ehx4ZlAkfNG7Y0y2o,1226752
3
+ bin/mmg2d.dll,sha256=6-NHaYCSZL0X9ITeeumowZEgccXEBWvjC5Jw043Ilfo,372224
4
+ bin/mmg2d_O3.exe,sha256=MG6T0URrVglS2ogGpzeBPfGE8A2oGG1HcnwdGwUuV60,22016
5
+ bin/mmg3d.dll,sha256=8lVyyoqmTCYEycTaAKch6I-GBhtMdOjsh7pPw-7IRkM,784384
6
+ bin/mmg3d_O3.exe,sha256=C9T28YHRVPKtvPmez5am4zrfV2V8RPsgLXbyfhaoLsA,22016
7
+ bin/mmgs.dll,sha256=AAb3b1wtP1xMMWbA4ajK-5j9ryy3_FUXy6PLh2CIuPg,432640
8
+ bin/mmgs_O3.exe,sha256=s7HiizIQjcyW_RxmdRbMdjVPFt-gob4ca4sCtOMuo90,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
+ bin/Release/mmg2d_O3.exe,sha256=MG6T0URrVglS2ogGpzeBPfGE8A2oGG1HcnwdGwUuV60,22016
18
+ bin/Release/mmg3d_O3.exe,sha256=C9T28YHRVPKtvPmez5am4zrfV2V8RPsgLXbyfhaoLsA,22016
19
+ bin/Release/mmgs_O3.exe,sha256=s7HiizIQjcyW_RxmdRbMdjVPFt-gob4ca4sCtOMuo90,23040
20
+ include/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
21
+ include/mmg/libmmg.h,sha256=SuiwjHkK5L0z_TIl0YXlpOCjyKKYIlxZys881jhfRI8,2450
22
+ include/mmg/libmmgf.h,sha256=dw9j7Urlcdk4WqUKUhxAk6Lxul1anP2UVPia6fhS9yY,1753
23
+ include/mmg/common/libmmgtypes.h,sha256=Z1cyLqcjsQgDLjWrdEv6nZyIIuEY_7v2Jc9HRfbNNKk,24469
24
+ include/mmg/common/libmmgtypesf.h,sha256=JQOvz2vK_5Ua74mPGZ5Tzgiiarw7dUWlcroniJzbv3M,27094
25
+ include/mmg/common/mmgcmakedefines.h,sha256=hVPltFUorABr3aLl6j35GiG0Yl9fZW2zyDDTg6yCWHk,1771
26
+ include/mmg/common/mmgcmakedefinesf.h,sha256=Eu5uNxkfHxPgB6nHjM1DJUO7pNXk6AKS7KwJFYLWfdY,1316
27
+ include/mmg/common/mmgversion.h,sha256=3nHvWm9WDJiy2_lylllxwzsI9xtUuw7QDJPzW0VvQh0,2150
28
+ include/mmg/common/mmg_export.h,sha256=fJWppzen-Io2DRvOZJ0DrEeYEPaTIYU1ZNmXY-q6ecc,1954
29
+ include/mmg/mmg2d/libmmg2d.h,sha256=OviS5ZpXp3x8hhgwm8DOQRijUpio0mEG_AU-tJsVXXI,109436
30
+ include/mmg/mmg2d/libmmg2df.h,sha256=bA1SQZZazVpDPpITAMHpp3tevPbCU4oD5Z-AFjxZn2Q,113898
31
+ include/mmg/mmg2d/mmg2d_export.h,sha256=b0iLUfupFR-TleFMcEb8SReHkpnXWtILiQI0UkeMn70,1442
32
+ include/mmg/mmg3d/libmmg3d.h,sha256=aS8D5DJBF7hzNsissTJ2Xizo3wZWMLkOFuMGh9XBkBg,138260
33
+ include/mmg/mmg3d/libmmg3df.h,sha256=0kVVKKj8lS_Nkpta9v93H8Ubf8dgtweNAwRa9D98LsM,143632
34
+ include/mmg/mmg3d/mmg3d_export.h,sha256=wSo0kEQyo9chYY6D_LYvCRACJXG8TLELthoAT50IbO8,1442
35
+ include/mmg/mmgs/libmmgs.h,sha256=Hm380P3iNoAoB3vyn-LhZ7zF7YQ8Tj6c_1PgC1VhWCE,100741
36
+ include/mmg/mmgs/libmmgsf.h,sha256=4kwQyw6DwVrMkCKrIny_18H05hYo-CWV9gqDn2knoTo,104955
37
+ include/mmg/mmgs/mmgs_export.h,sha256=f0y6JKDSguWIv4JfoGm6Sif2izR0BvcZQ1izDdvZVZw,1437
38
+ lib/mmg.lib,sha256=kXXxBcrDhThNzymDetSh-b6NC6Q4j0gwRJ7zFTc8Dmc,88692
39
+ lib/mmg2d.lib,sha256=3nrShJnVROEXIUIO3gxiU0TlLDdOtn6wLvrOKIuAhCE,34192
40
+ lib/mmg3d.lib,sha256=lAeWhOEhTsqwKbN8vtneD8RHtMXIgoNMo96y_3XLllk,39728
41
+ lib/mmgs.lib,sha256=UtN7XqaAPts2YzVfCQ0uevHXXc2OljO-lXxUKuMLDt0,31666
42
+ lib/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
43
+ lib/cmake/mmg/FindElas.cmake,sha256=LvQ66sIOO5tRw8GU0sH_lEJgeJhUrkhUAXSOxxfrSZY,2137
44
+ lib/cmake/mmg/FindSCOTCH.cmake,sha256=JnH6usBQmGdfTxwcaj8dspRuOKtx0BqnkVwbDorcxOg,12480
45
+ lib/cmake/mmg/mmgConfig.cmake,sha256=Mhaz7qvtvVI9Y9G7DOj7vtoFBZEodNbKCGUOHMB3SOo,1350
46
+ lib/cmake/mmg/MmgTargets-release.cmake,sha256=D6s0LsBMQwyeX3ztSzVbHhc9N3LB662Xj8FiDBef7V4,3036
47
+ lib/cmake/mmg/MmgTargets.cmake,sha256=CnlWeDFywPi3WSX4CMNi6d6c6UoVilI-MjgXDRWCwwU,4997
48
+ mmgpy/lagrangian.py,sha256=i9_QPlWkw1S6grVeHwcWtfrvKUH1AAbVvkSsLZju9Dw,13261
49
+ mmgpy/metrics.py,sha256=ESqQ10ZjBqYLBb-FjIF7cSxo06qrRwkUBGiyvnYK1Ys,18683
50
+ mmgpy/mmg2d.dll,sha256=6-NHaYCSZL0X9ITeeumowZEgccXEBWvjC5Jw043Ilfo,372224
51
+ mmgpy/mmg2d.lib,sha256=3nrShJnVROEXIUIO3gxiU0TlLDdOtn6wLvrOKIuAhCE,34192
52
+ mmgpy/mmg3d.dll,sha256=8lVyyoqmTCYEycTaAKch6I-GBhtMdOjsh7pPw-7IRkM,784384
53
+ mmgpy/mmg3d.lib,sha256=lAeWhOEhTsqwKbN8vtneD8RHtMXIgoNMo96y_3XLllk,39728
54
+ mmgpy/mmgs.dll,sha256=AAb3b1wtP1xMMWbA4ajK-5j9ryy3_FUXy6PLh2CIuPg,432640
55
+ mmgpy/mmgs.lib,sha256=UtN7XqaAPts2YzVfCQ0uevHXXc2OljO-lXxUKuMLDt0,31666
56
+ mmgpy/progress.py,sha256=9SI3gcsp9pjvBR8kVnuKnswgVVBfrDqDNgOrw6m_OY0,1393
57
+ mmgpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ mmgpy/sizing.py,sha256=cHbB_2WEmN4eUwRXDnkefnclxNZVsH9r-VpYqPJvToI,11171
59
+ mmgpy/_logging.py,sha256=O9EYFBEve-A61cln-tUlazaLy9fD1MFOxRAhg4iWTRk,2241
60
+ mmgpy/_mmgpy.cp312-win_amd64.pyd,sha256=vWrrPWzfje2i2Sb02v2u7H-Nrk9N36NYap_2NV1wMNE,416768
61
+ mmgpy/_mmgpy.pyi,sha256=VUZBVV7j-7fDPatDflNjYAxFDJsfFfY0FYV7uhsJukY,21071
62
+ mmgpy/_options.py,sha256=uJdvIv2IyFrf77YNpeVH8jK_rCiDRVIuCnnbILzjb20,8821
63
+ mmgpy/_progress.py,sha256=h6iEmAuwZGIH6ScprJyWjzccPsflEkfjy4McfQZpK3o,15801
64
+ mmgpy/_pyvista.py,sha256=X7YTPBmvD1p9vgAEERHCKMncgQ7ruGy1dUOPvnJ_v-4,13082
65
+ mmgpy/_version.py,sha256=bB09HpF3mbwpAiNM2svmLcqMGBMH42TZJkj1OAJynsM,53
66
+ mmgpy/_version.py.in,sha256=zSyxqlGSpsKY4ONjnNGRwP3vZgho9RwAM5JHjcdU5MI,63
67
+ mmgpy/__init__.py,sha256=Ng5xono-7vwydawAT15nb1O-1AvoYRqxKVQw7npR1yc,29991
68
+ mmgpy-0.3.0.dist-info/DELVEWHEEL,sha256=dxkPLMLTUVbhFAbQXA4WR3jvaixaWN-zAuYtboutU1Q,413
69
+ mmgpy-0.3.0.dist-info/entry_points.txt,sha256=FTs8BO44K4ytneBcUgWDQKtJPKkO-WSPr-ckNkI-f3g,134
70
+ mmgpy-0.3.0.dist-info/METADATA,sha256=L2ZdJ662V3AqkSvmOvWLrhl8h8g8BID0plv4nVwD9nI,2956
71
+ mmgpy-0.3.0.dist-info/RECORD,,
72
+ mmgpy-0.3.0.dist-info/WHEEL,sha256=chqeLhPBtPdrOoreR34YMcofSk3yWDQhkrsDJ2n48LU,106
73
+ mmgpy-0.3.0.dist-info/licenses/LICENSE,sha256=cDeMFhk0f8fEM2w_x3c-PU_vdKi32xumcKeyEsqMEzE,1684
74
+ mmgpy.libs/vtkCommonColor-9.5-07cd19e9d77559cb8be83e8ac8833cd4.dll,sha256=B80Z6dd1WcuL6D6KyIM81IDlv6CwS0HCEbEBOUPRPeE,109568
75
+ mmgpy.libs/vtkCommonComputationalGeometry-9.5-4aaf997b087c330e171c14a4ba6be7b2.dll,sha256=Sq-Zewh8Mw4XHBSkumvnsrVos9lsLfFpcRG-6jUNXzU,169472
76
+ mmgpy.libs/vtkCommonCore-9.5.dll,sha256=cPijWu5PX_irMKSFQd334hF7DJSxf2F4Urlzxuo-E4I,13392384
77
+ mmgpy.libs/vtkCommonDataModel-9.5.dll,sha256=zG6JZwFm6JejgaQDr6ebrmZWv1v_upNA3K8wGwt0RGg,4577280
78
+ mmgpy.libs/vtkCommonExecutionModel-9.5-2f7a1bae0a1d4d0e205eea43596a659c.dll,sha256=DLTmEaoRr46jUO6XS8Jru8X09_3O8-4TgP7jbMH0Vq4,857088
79
+ mmgpy.libs/vtkCommonMath-9.5-609b01246386fe29df2677fa5c7ca793.dll,sha256=DKU9bcLlbJIkRDNGCjKWDb5v4WmLsIUanrZXn7OKz3k,153600
80
+ mmgpy.libs/vtkCommonMisc-9.5-4173df33811eddea1529a40bf93266c8.dll,sha256=QXPfM4Ee3eoVKaQL-TJmyOWuBkI1MnsZpVvCJa4-hE4,3025408
81
+ mmgpy.libs/vtkCommonSystem-9.5-e5b15bd84934b99e3b2bbe5d3e064c97.dll,sha256=5bFb2Ek0uZ47K75dPgZMl1sAhbjJB_HYgBzqOPe7HF8,137728
82
+ mmgpy.libs/vtkCommonTransforms-9.5-9b76a61640718d893271cc0b5db50d1d.dll,sha256=hp8r4TbgA3-5CIxLQC6C-pTJPlEBjAtB2pKtbcpRfh8,214016
83
+ mmgpy.libs/vtkDICOMParser-9.5-203c95a77d21799a8049a576e1b28f2e.dll,sha256=IDyVp30heZqASaV24bKPLshO3TlTmfcaSuNiXzskneE,101376
84
+ mmgpy.libs/vtkdoubleconversion-9.5-5e39712b9f4e44ea8a26e9119e53a7d4.dll,sha256=XjlxK59OROqKJukRnlOn1DRWG-ldfeL3Yp3_DqMgBmg,64512
85
+ mmgpy.libs/vtkexpat-9.5-3b1dd25e09a2cccbbac723de448cb894.dll,sha256=Ox3SXgmizMu6xyPeRIy4lHbkHS3QfkLjL6OTQrw7MF4,158720
86
+ mmgpy.libs/vtkFiltersCellGrid-9.5-fa6bda61d2d528369d8b2f3a66d2d6b4.dll,sha256=zTq5jZ_8rXLpFzIinB9pIYPt7LYctOazaELQ68Rf-hI,1035776
87
+ mmgpy.libs/vtkFiltersCore-9.5-935a5f5225a975e99626296b2f3ded70.dll,sha256=S3P2KOnUwXhjxZDSmVJUaCCcKnvRXNoT7dDGNw5IYtY,6074368
88
+ mmgpy.libs/vtkFiltersExtraction-9.5-dc0a7543ba584f7e8ce9f9184485a228.dll,sha256=msgi3kxrSisXfSsDhm64o__0_bcw4XWWTCghWgpo3qM,779264
89
+ mmgpy.libs/vtkFiltersGeneral-9.5-709f69dbcca8aba1750582106a97c605.dll,sha256=34z446sPZ-Cr2lHokGPRG8Bin-fRc1mu3OfjPUjM_uE,3988480
90
+ mmgpy.libs/vtkFiltersGeometry-9.5-7abfb655763a62f56d63b45038d6e811.dll,sha256=d83OsXVT2iGYmcLlvGwptXqeEuDTWf2C5aLSIUwqMQw,995328
91
+ mmgpy.libs/vtkFiltersHybrid-9.5-0721ec98d8a8b7442d900747e1ec59fb.dll,sha256=Mr77N50IdFPBfYDzg5AouoWsI9VrhTpHnxfG_DylhpE,809984
92
+ mmgpy.libs/vtkFiltersHyperTree-9.5-f9ee6a4761fdad8956c08a51dae77636.dll,sha256=ZaeX8jqfk7knGSCHbDRnzwlhy30X5YxHti5RtNhL2eY,417280
93
+ mmgpy.libs/vtkFiltersModeling-9.5-458d9d2c544bb3c37de28c26c05c07bc.dll,sha256=BpjRnNiTvPK-4-9RLnydLpq3GVhwELTgei1h_PdPfYg,707584
94
+ mmgpy.libs/vtkFiltersParallel-9.5-1f243ffe308277c3970d8be4172d856f.dll,sha256=S3Pj6IDVQH_WLU5PS5RzAYFHTgohuxPuP_4VmglQcKU,913920
95
+ mmgpy.libs/vtkFiltersReduction-9.5-bf8c4a248bd84fbd6bb1a2ab5f646e56.dll,sha256=IFPuJwD1HvcFXmbvAG18qNQWGBDOLAd-CfGxZ1XCGsI,1123840
96
+ mmgpy.libs/vtkFiltersSources-9.5-492fa5b1b8562f4b141a347a38ae1ce5.dll,sha256=0Jzaq0y9y82SLxnNCmcdbwzrbn4sevQsl8jBMY9pCss,674304
97
+ mmgpy.libs/vtkFiltersStatistics-9.5-6e99ef76387303ec5ff8c0fe6101d446.dll,sha256=iPIVa_-NMElJd9FRoRbS-FWUj7a63hGvv4O02by0uKI,785408
98
+ mmgpy.libs/vtkFiltersTexture-9.5-15c23120b41b9a1c4acb01f790aad01f.dll,sha256=g8qfVn2aBN6rtwCSL6WrXKgpIxzQuDaLD6SW_Xz1Sn8,98304
99
+ mmgpy.libs/vtkFiltersVerdict-9.5-332c0402a58129ec5b6af7b7f56cbb62.dll,sha256=BcenG10gfK0VahKq46zhqtNU9yxLNVPeZkjPVZCsc_0,191488
100
+ mmgpy.libs/vtkfmt-9.5-50239b66bf315d100ecd306114139e9b.dll,sha256=UCObZr8xXRAOzTBhFBOem4V9ib7hbnJ-jiFcKy6kvsk,118272
101
+ mmgpy.libs/vtkImagingCore-9.5-145fc0249cffbd27c610d10812e1cbfc.dll,sha256=a_VXRpShHuFbkpvTa8sHF4yz1bRhf4B9bkEl-ShJN_A,1729024
102
+ mmgpy.libs/vtkImagingSources-9.5-f0c087a4669caa045584ed61f52502b7.dll,sha256=NB0akMkhSueS-Pk3SWFyX4LQX1dW0dG6ZfyEPgH13-k,191488
103
+ mmgpy.libs/vtkIOCellGrid-9.5-88e1ec9c5a3554a82aedc0027fe84c6b.dll,sha256=ge0OuCmDLwcagDi-lc5mLmGov5qpLvsJ0hCu1KlwGHc,466432
104
+ mmgpy.libs/vtkIOCore-9.5.dll,sha256=dgPsfWyaocsJEhlVbCy-svYIxatBj04iNXv83_DZSuk,452096
105
+ mmgpy.libs/vtkIOGeometry-9.5-47c69db15c63c5773efa6851b59ae0a7.dll,sha256=So1xVZrJ-4oMZ5rg7JodsofyHPCK0QsVyTQKxM3dNLs,1720832
106
+ mmgpy.libs/vtkIOImage-9.5-74bb92e688da5595ff9ff7645f9a0a13.dll,sha256=jGFpn69qxSoTSqbKNExt7p0gauNRFygXUimXWE8Q6ms,1088512
107
+ mmgpy.libs/vtkIOLegacy-9.5.dll,sha256=Ahils3fbUJXVRvrB-U8yoDurPqfDoXkuSW0CGBaJUE0,708096
108
+ mmgpy.libs/vtkIOParallel-9.5.dll,sha256=roDlywDigCucNnVGC70QD-05xE4f35kwQjaGAzYiMQE,429056
109
+ mmgpy.libs/vtkIOParallelXML-9.5.dll,sha256=4u4sDp31hbheiRtBQejQlB29z8xZdpqIbVZRqq9p748,209408
110
+ mmgpy.libs/vtkIOXML-9.5.dll,sha256=FfeBOeOQUdk2siD5adv2g3GfQ9rGCRUfpZhOjCJ9uvo,921600
111
+ mmgpy.libs/vtkIOXMLParser-9.5-1893156c41fd4cf7165904675cb5d15d.dll,sha256=hn4xGlm69FC5xuHlQ3539AzRVMFHgsMrD1GQDtWoi7A,112128
112
+ mmgpy.libs/vtkjpeg-9.5-9412ee79f685a9196398b988a59666cd.dll,sha256=lBLuefaFqRljmLmIpZZmzWyW5vZ2SKgK_7dLLjndII0,432128
113
+ mmgpy.libs/vtkjsoncpp-9.5-abfad956527e3a4885dbb39f99f9e4d4.dll,sha256=q_rZVlJ-OkiF27Ofmfnk1KxeQOr6XZhj86BxsrWMbaA,222720
114
+ mmgpy.libs/vtkkissfft-9.5-464db9175ce63de19addc69be524c4b7.dll,sha256=Rk25F1zmPeGa3cab5STEt02qYvw7b3GIkl-qTEzdpMw,22016
115
+ mmgpy.libs/vtkloguru-9.5-ec016ed005b4a79062e329ad8f1c382d.dll,sha256=7AFu0AW0p5Bi4ymtjxw4LcG6-FZngI2Av46QuMh17Ko,76288
116
+ mmgpy.libs/vtklz4-9.5-798b58f4518733b0eee8027eeba022fb.dll,sha256=eYtY9FGHM7Du6AJ-66Ai-_bZEHpN9Y8xHurW59Laluk,127488
117
+ mmgpy.libs/vtklzma-9.5-8f489b5430eb47d578de52c769a4dd5c.dll,sha256=j0ibVDDrR9V43lLHaaTdXOWlZ1TooAK7KszI-Hjb-KY,156672
118
+ mmgpy.libs/vtkmetaio-9.5-8f0a559399d53e4c7fc06272620b2167.dll,sha256=qygshTfnLh1ZFjU0fBGkMY_HznoEXrEW6XwT8BEKvZ8,548864
119
+ mmgpy.libs/vtkParallelCore-9.5-e91757b6dbd2a5369ab2bd05ff95d79d.dll,sha256=lwAw0T1G02jysD-Tf0kXFE2MPMjNYEHztFyP8AJEvWc,361984
120
+ mmgpy.libs/vtkParallelDIY-9.5-04dd6b6b5dd8a5eacd43d270999cf09a.dll,sha256=wPNt-C3ZvQV6ymSDEMe_ZnlqfcfBZjuleSr64eZ5y5M,726016
121
+ mmgpy.libs/vtkpng-9.5-1dbed3116ba7e31f56512a93b942cdf5.dll,sha256=vfNiqPogrSf3unCBSD3H-l6Q_WHJWv64U1zvdPHmx9I,199680
122
+ mmgpy.libs/vtkpugixml-9.5-23ef37d65494ab52babc6d45b24764b7.dll,sha256=I-831lSUq1K6vG1Fskdkt0vTqaZoOY4IyXLpJG94k4Q,194560
123
+ mmgpy.libs/vtkRenderingCore-9.5-24a9802d77a083def26449fa681b1af7.dll,sha256=kmiHSZpSWYBDHEXN2qg8B7bbx3Ti0CPufVgj4n6uCno,1933312
124
+ mmgpy.libs/vtksys-9.5.dll,sha256=7Zxhe1CQIwSGn13TIOXVaoioaYSsquIAc3p_2Eg2Jyc,323072
125
+ mmgpy.libs/vtktiff-9.5-767fd93c8402517d5b2d1befab98c41e.dll,sha256=IdxFRdYQfWXLfU_axCAbsTxzsUnx5xgeaSIhmfCqBz8,416768
126
+ mmgpy.libs/vtktoken-9.5-f4ff567202eeb9a613c0b242aa05dbc9.dll,sha256=9P9WcgLuuaYTwLJCqgXbyXxOIIdZu-lz9Iz-GDaCC4M,101376
127
+ mmgpy.libs/vtkverdict-9.5-6bb84649d1b0ca1cc5454307fd35083b.dll,sha256=a7hGSdGwyhzFRUMH_TUIO64q7YnDeLBjhXz3KBVNfaQ,225792
128
+ mmgpy.libs/vtkzlib-9.5-779937c44671e188e9f96125eb5afb12.dll,sha256=d5k3xEZx4Yjp-WEl61r7EtNoQ5r6DE43KNQEpE2SHAg,84480
129
+ share/__init__.py,sha256=es9KsDl5hd8r6F1CiYPwtEJbfgrGeY6bOzcS932ykN0,325
130
+ share/man/man1/mmg2d.1.gz,sha256=YY68CM5Yb39NnO97kGV26FFdfOIyYmvypUVdD5DQyaE,2435
131
+ share/man/man1/mmg3d.1.gz,sha256=dVSyfIoVtimcm841HZocNehWcLaGrcgBIEPmABulMXk,2569
132
+ 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: cp312-cp312-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