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.
- bin/__init__.py +10 -0
- bin/concrt140.dll +0 -0
- bin/mmg.dll +0 -0
- bin/mmg2d.dll +0 -0
- bin/mmg2d_O3.exe +0 -0
- bin/mmg3d.dll +0 -0
- bin/mmg3d_O3.exe +0 -0
- bin/mmgs.dll +0 -0
- bin/mmgs_O3.exe +0 -0
- bin/msvcp140.dll +0 -0
- bin/msvcp140_1.dll +0 -0
- bin/msvcp140_2.dll +0 -0
- bin/msvcp140_atomic_wait.dll +0 -0
- bin/msvcp140_codecvt_ids.dll +0 -0
- bin/vcruntime140.dll +0 -0
- bin/vcruntime140_1.dll +0 -0
- include/__init__.py +10 -0
- include/mmg/common/libmmgtypes.h +687 -0
- include/mmg/common/libmmgtypesf.h +762 -0
- include/mmg/common/mmg_export.h +47 -0
- include/mmg/common/mmgcmakedefines.h +46 -0
- include/mmg/common/mmgcmakedefinesf.h +29 -0
- include/mmg/common/mmgversion.h +54 -0
- include/mmg/libmmg.h +67 -0
- include/mmg/libmmgf.h +42 -0
- include/mmg/mmg2d/libmmg2d.h +2761 -0
- include/mmg/mmg2d/libmmg2df.h +3263 -0
- include/mmg/mmg2d/mmg2d_export.h +34 -0
- include/mmg/mmg3d/libmmg3d.h +3444 -0
- include/mmg/mmg3d/libmmg3df.h +4041 -0
- include/mmg/mmg3d/mmg3d_export.h +34 -0
- include/mmg/mmgs/libmmgs.h +2560 -0
- include/mmg/mmgs/libmmgsf.h +3028 -0
- include/mmg/mmgs/mmgs_export.h +34 -0
- lib/__init__.py +10 -0
- lib/cmake/mmg/FindElas.cmake +57 -0
- lib/cmake/mmg/FindSCOTCH.cmake +373 -0
- lib/cmake/mmg/MmgTargets-release.cmake +53 -0
- lib/cmake/mmg/MmgTargets.cmake +127 -0
- lib/cmake/mmg/mmgConfig.cmake +43 -0
- lib/mmg.lib +0 -0
- lib/mmg2d.lib +0 -0
- lib/mmg3d.lib +0 -0
- lib/mmgs.lib +0 -0
- mmgpy/__init__.py +888 -0
- mmgpy/_logging.py +86 -0
- mmgpy/_mmgpy.cp310-win_amd64.pyd +0 -0
- mmgpy/_mmgpy.pyi +650 -0
- mmgpy/_options.py +304 -0
- mmgpy/_progress.py +539 -0
- mmgpy/_pyvista.py +423 -0
- mmgpy/_version.py +3 -0
- mmgpy/_version.py.in +3 -0
- mmgpy/lagrangian.py +394 -0
- mmgpy/metrics.py +595 -0
- mmgpy/mmg2d.dll +0 -0
- mmgpy/mmg2d.lib +0 -0
- mmgpy/mmg3d.dll +0 -0
- mmgpy/mmg3d.lib +0 -0
- mmgpy/mmgs.dll +0 -0
- mmgpy/mmgs.lib +0 -0
- mmgpy/progress.py +57 -0
- mmgpy/py.typed +0 -0
- mmgpy/sizing.py +370 -0
- mmgpy-0.2.0.dist-info/DELVEWHEEL +2 -0
- mmgpy-0.2.0.dist-info/METADATA +75 -0
- mmgpy-0.2.0.dist-info/RECORD +129 -0
- mmgpy-0.2.0.dist-info/WHEEL +5 -0
- mmgpy-0.2.0.dist-info/entry_points.txt +6 -0
- mmgpy-0.2.0.dist-info/licenses/LICENSE +38 -0
- mmgpy.libs/vtkCommonColor-9.4-799ae0f43eb3a04510b0ed500c05e895.dll +0 -0
- mmgpy.libs/vtkCommonComputationalGeometry-9.4-e1ee47e9ca84c220e3fda21c864610e9.dll +0 -0
- mmgpy.libs/vtkCommonCore-9.4.dll +0 -0
- mmgpy.libs/vtkCommonDataModel-9.4.dll +0 -0
- mmgpy.libs/vtkCommonExecutionModel-9.4-5fea279cddbd0dd8e39907cbfb423d2c.dll +0 -0
- mmgpy.libs/vtkCommonMath-9.4-70aba6f1b0ad06008b5990b6843ff4e9.dll +0 -0
- mmgpy.libs/vtkCommonMisc-9.4-96697cc413673520510a54c05fa0ef99.dll +0 -0
- mmgpy.libs/vtkCommonSystem-9.4-a748ca3c31712678e4e0f2ff3b09785b.dll +0 -0
- mmgpy.libs/vtkCommonTransforms-9.4-11e72e99aca2003a38a3ff9bcfb90d92.dll +0 -0
- mmgpy.libs/vtkDICOMParser-9.4-6f27d14c12768aac52622cbd28ca0b3a.dll +0 -0
- mmgpy.libs/vtkFiltersCellGrid-9.4-5675f4c4a8440bd5f5981149f99315e8.dll +0 -0
- mmgpy.libs/vtkFiltersCore-9.4-ef29a82b399f8ffeec5dfa8c7e010901.dll +0 -0
- mmgpy.libs/vtkFiltersExtraction-9.4-6a452db7095d68b3af501d1b39a05670.dll +0 -0
- mmgpy.libs/vtkFiltersGeneral-9.4-b9b071ef41cba7c6468dd7e0a9f5d4bf.dll +0 -0
- mmgpy.libs/vtkFiltersGeometry-9.4-757f3c8b9a1fd9774cce83aec0c94c55.dll +0 -0
- mmgpy.libs/vtkFiltersHybrid-9.4-6b343077b9da30bb95fc4492762b9bed.dll +0 -0
- mmgpy.libs/vtkFiltersHyperTree-9.4-831d7e88dd11a3faec876929089d21e8.dll +0 -0
- mmgpy.libs/vtkFiltersModeling-9.4-a3fc680a4836e8913376390217ceae1e.dll +0 -0
- mmgpy.libs/vtkFiltersParallel-9.4-5307d8b619459bb2aeb13c2872cebc2b.dll +0 -0
- mmgpy.libs/vtkFiltersReduction-9.4-f7abe86bfcde726b6e7daec4773a089f.dll +0 -0
- mmgpy.libs/vtkFiltersSources-9.4-d38546a5e2bfd83ea0a70f5be4fa7fdc.dll +0 -0
- mmgpy.libs/vtkFiltersStatistics-9.4-d2abec2372ab98574cdbd0461c73d459.dll +0 -0
- mmgpy.libs/vtkFiltersTexture-9.4-a374b3cfe75e10483976a6a6780ca1ca.dll +0 -0
- mmgpy.libs/vtkFiltersVerdict-9.4-a6a276b6e0d3ac6d042f192842c9382a.dll +0 -0
- mmgpy.libs/vtkIOCellGrid-9.4-0df3bee5d56b2062dad430b53f81f06a.dll +0 -0
- mmgpy.libs/vtkIOCore-9.4.dll +0 -0
- mmgpy.libs/vtkIOGeometry-9.4-13e2301d83eea31e8df955a8dd196eb1.dll +0 -0
- mmgpy.libs/vtkIOImage-9.4-666beab0c43da6c4b2c59fba464bb6b1.dll +0 -0
- mmgpy.libs/vtkIOLegacy-9.4.dll +0 -0
- mmgpy.libs/vtkIOParallel-9.4.dll +0 -0
- mmgpy.libs/vtkIOParallelXML-9.4.dll +0 -0
- mmgpy.libs/vtkIOXML-9.4.dll +0 -0
- mmgpy.libs/vtkIOXMLParser-9.4-f4144aed6a73ee50eefeae75a78fd71b.dll +0 -0
- mmgpy.libs/vtkImagingCore-9.4-ecc92d2d09d8ac4e8f3b199a917f96fd.dll +0 -0
- mmgpy.libs/vtkImagingSources-9.4-944fcaf71940d51ed5dc1b5c8eba2571.dll +0 -0
- mmgpy.libs/vtkParallelCore-9.4-114ce4e5a12302a9f3c3485ab88d5a39.dll +0 -0
- mmgpy.libs/vtkParallelDIY-9.4-7add130df7f5139505a17ee72afefa41.dll +0 -0
- mmgpy.libs/vtkRenderingCore-9.4-ec5612bc182f43047add4c6a55050be4.dll +0 -0
- mmgpy.libs/vtkdoubleconversion-9.4-676429e05704a1fd81323494aba16669.dll +0 -0
- mmgpy.libs/vtkexpat-9.4-58e3b6d3064cf0e02659e3a57f60f779.dll +0 -0
- mmgpy.libs/vtkfmt-9.4-fd2ae0aaa19f2f735b93d4feb613d558.dll +0 -0
- mmgpy.libs/vtkjpeg-9.4-2fd58669e746a0d571706ff3f4c1896f.dll +0 -0
- mmgpy.libs/vtkjsoncpp-9.4-c2076501decec6ce45be5280d480c02d.dll +0 -0
- mmgpy.libs/vtkkissfft-9.4-874ed77ec96808d2e395a6caeb69abbe.dll +0 -0
- mmgpy.libs/vtkloguru-9.4-1038f41dd2d3acc7d894c1d57b428cc6.dll +0 -0
- mmgpy.libs/vtklz4-9.4-9982d6f8f47ac19965668cd3c2926473.dll +0 -0
- mmgpy.libs/vtklzma-9.4-a473d065be12f766957c699a0aefac38.dll +0 -0
- mmgpy.libs/vtkmetaio-9.4-aa48920e94a28f23d08054f5e82867f4.dll +0 -0
- mmgpy.libs/vtkpng-9.4-cbefdfbef5c0d4dd7ae43b9d526e881a.dll +0 -0
- mmgpy.libs/vtkpugixml-9.4-9c7652d9a42fd99e62753e7d3fd87ee9.dll +0 -0
- mmgpy.libs/vtksys-9.4.dll +0 -0
- mmgpy.libs/vtktiff-9.4-9822dcf52447c045cf9a70960d45a9bd.dll +0 -0
- mmgpy.libs/vtktoken-9.4-471c14923651cbbd86067852f347807b.dll +0 -0
- mmgpy.libs/vtkverdict-9.4-c549882a3b8671666be1366008f27f7e.dll +0 -0
- mmgpy.libs/vtkzlib-9.4-3b9ffa51c80ccd91bb22a4c3ca11a8d7.dll +0 -0
- share/__init__.py +10 -0
- share/man/man1/mmg2d.1.gz +0 -0
- share/man/man1/mmg3d.1.gz +0 -0
- share/man/man1/mmgs.1.gz +0 -0
mmgpy/_mmgpy.pyi
ADDED
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import overload
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
import pyvista as pv
|
|
7
|
+
from numpy.typing import NDArray
|
|
8
|
+
|
|
9
|
+
from ._options import Mmg2DOptions, Mmg3DOptions, MmgSOptions
|
|
10
|
+
|
|
11
|
+
class mmg3d: # noqa: N801
|
|
12
|
+
@staticmethod
|
|
13
|
+
def remesh(
|
|
14
|
+
input_mesh: str | Path,
|
|
15
|
+
input_sol: str | Path | None = None,
|
|
16
|
+
output_mesh: str | Path | None = None,
|
|
17
|
+
output_sol: str | Path | None = None,
|
|
18
|
+
options: dict[str, float | int] = ...,
|
|
19
|
+
) -> bool: ...
|
|
20
|
+
|
|
21
|
+
class mmg2d: # noqa: N801
|
|
22
|
+
@staticmethod
|
|
23
|
+
def remesh(
|
|
24
|
+
input_mesh: str | Path,
|
|
25
|
+
input_sol: str | Path | None = None,
|
|
26
|
+
output_mesh: str | Path | None = None,
|
|
27
|
+
output_sol: str | Path | None = None,
|
|
28
|
+
options: dict[str, float | int] = ...,
|
|
29
|
+
) -> bool: ...
|
|
30
|
+
|
|
31
|
+
class mmgs: # noqa: N801
|
|
32
|
+
@staticmethod
|
|
33
|
+
def remesh(
|
|
34
|
+
input_mesh: str | Path,
|
|
35
|
+
input_sol: str | Path | None = None,
|
|
36
|
+
output_mesh: str | Path | None = None,
|
|
37
|
+
output_sol: str | Path | None = None,
|
|
38
|
+
options: dict[str, float | int] = ...,
|
|
39
|
+
) -> bool: ...
|
|
40
|
+
|
|
41
|
+
class MmgMesh3D:
|
|
42
|
+
@overload
|
|
43
|
+
def __init__(self) -> None: ...
|
|
44
|
+
@overload
|
|
45
|
+
def __init__(
|
|
46
|
+
self,
|
|
47
|
+
vertices: NDArray[np.float64],
|
|
48
|
+
elements: NDArray[np.int32],
|
|
49
|
+
) -> None: ...
|
|
50
|
+
@overload
|
|
51
|
+
def __init__(
|
|
52
|
+
self,
|
|
53
|
+
filename: str | Path,
|
|
54
|
+
) -> None: ...
|
|
55
|
+
def set_vertices_and_elements(
|
|
56
|
+
self,
|
|
57
|
+
vertices: NDArray[np.float64],
|
|
58
|
+
elements: NDArray[np.int32],
|
|
59
|
+
) -> None: ...
|
|
60
|
+
def get_vertices(self) -> NDArray[np.float64]: ...
|
|
61
|
+
def get_elements(self) -> NDArray[np.int32]: ...
|
|
62
|
+
|
|
63
|
+
# Low-level mesh construction API (Phase 1 of Issue #50)
|
|
64
|
+
def set_mesh_size(
|
|
65
|
+
self,
|
|
66
|
+
vertices: int = 0,
|
|
67
|
+
tetrahedra: int = 0,
|
|
68
|
+
prisms: int = 0,
|
|
69
|
+
triangles: int = 0,
|
|
70
|
+
quadrilaterals: int = 0,
|
|
71
|
+
edges: int = 0,
|
|
72
|
+
) -> None: ...
|
|
73
|
+
def get_mesh_size(
|
|
74
|
+
self,
|
|
75
|
+
) -> tuple[int, int, int, int, int, int]: ...
|
|
76
|
+
def set_vertices(
|
|
77
|
+
self,
|
|
78
|
+
vertices: NDArray[np.float64],
|
|
79
|
+
refs: NDArray[np.int64] | None = None,
|
|
80
|
+
) -> None: ...
|
|
81
|
+
def set_tetrahedra(
|
|
82
|
+
self,
|
|
83
|
+
tetrahedra: NDArray[np.int32],
|
|
84
|
+
refs: NDArray[np.int64] | None = None,
|
|
85
|
+
) -> None: ...
|
|
86
|
+
def set_triangles(
|
|
87
|
+
self,
|
|
88
|
+
triangles: NDArray[np.int32],
|
|
89
|
+
refs: NDArray[np.int64] | None = None,
|
|
90
|
+
) -> None: ...
|
|
91
|
+
def set_edges(
|
|
92
|
+
self,
|
|
93
|
+
edges: NDArray[np.int32],
|
|
94
|
+
refs: NDArray[np.int64] | None = None,
|
|
95
|
+
) -> None: ...
|
|
96
|
+
def get_vertices_with_refs(
|
|
97
|
+
self,
|
|
98
|
+
) -> tuple[NDArray[np.float64], NDArray[np.int64]]: ...
|
|
99
|
+
def get_triangles(self) -> NDArray[np.int32]: ...
|
|
100
|
+
def get_triangles_with_refs(
|
|
101
|
+
self,
|
|
102
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
103
|
+
def get_elements_with_refs(
|
|
104
|
+
self,
|
|
105
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
106
|
+
def get_edges(self) -> NDArray[np.int32]: ...
|
|
107
|
+
def get_edges_with_refs(
|
|
108
|
+
self,
|
|
109
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
110
|
+
|
|
111
|
+
# Phase 2: Single element operations
|
|
112
|
+
def set_vertex(
|
|
113
|
+
self,
|
|
114
|
+
x: float,
|
|
115
|
+
y: float,
|
|
116
|
+
z: float,
|
|
117
|
+
ref: int,
|
|
118
|
+
idx: int,
|
|
119
|
+
) -> None: ...
|
|
120
|
+
def set_tetrahedron(
|
|
121
|
+
self,
|
|
122
|
+
v0: int,
|
|
123
|
+
v1: int,
|
|
124
|
+
v2: int,
|
|
125
|
+
v3: int,
|
|
126
|
+
ref: int,
|
|
127
|
+
idx: int,
|
|
128
|
+
) -> None: ...
|
|
129
|
+
def set_triangle(
|
|
130
|
+
self,
|
|
131
|
+
v0: int,
|
|
132
|
+
v1: int,
|
|
133
|
+
v2: int,
|
|
134
|
+
ref: int,
|
|
135
|
+
idx: int,
|
|
136
|
+
) -> None: ...
|
|
137
|
+
def set_edge(self, v0: int, v1: int, ref: int, idx: int) -> None: ...
|
|
138
|
+
def get_vertex(self, idx: int) -> tuple[float, float, float, int]: ...
|
|
139
|
+
def get_tetrahedron(
|
|
140
|
+
self,
|
|
141
|
+
idx: int,
|
|
142
|
+
) -> tuple[int, int, int, int, int]: ...
|
|
143
|
+
def get_triangle(self, idx: int) -> tuple[int, int, int, int]: ...
|
|
144
|
+
def get_edge(self, idx: int) -> tuple[int, int, int]: ...
|
|
145
|
+
|
|
146
|
+
# Element attributes
|
|
147
|
+
def set_corners(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
148
|
+
def set_required_vertices(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
149
|
+
def set_ridge_edges(self, edge_indices: NDArray[np.int32]) -> None: ...
|
|
150
|
+
|
|
151
|
+
# Topology queries
|
|
152
|
+
def get_adjacent_elements(self, idx: int) -> NDArray[np.int32]: ...
|
|
153
|
+
def get_vertex_neighbors(self, idx: int) -> NDArray[np.int32]: ...
|
|
154
|
+
def get_element_quality(self, idx: int) -> float: ...
|
|
155
|
+
def get_element_qualities(self) -> NDArray[np.float64]: ...
|
|
156
|
+
|
|
157
|
+
# Phase 3: Advanced element types (prisms and quadrilaterals)
|
|
158
|
+
def set_prism(
|
|
159
|
+
self,
|
|
160
|
+
v0: int,
|
|
161
|
+
v1: int,
|
|
162
|
+
v2: int,
|
|
163
|
+
v3: int,
|
|
164
|
+
v4: int,
|
|
165
|
+
v5: int,
|
|
166
|
+
ref: int,
|
|
167
|
+
idx: int,
|
|
168
|
+
) -> None: ...
|
|
169
|
+
def set_quadrilateral(
|
|
170
|
+
self,
|
|
171
|
+
v0: int,
|
|
172
|
+
v1: int,
|
|
173
|
+
v2: int,
|
|
174
|
+
v3: int,
|
|
175
|
+
ref: int,
|
|
176
|
+
idx: int,
|
|
177
|
+
) -> None: ...
|
|
178
|
+
def set_prisms(
|
|
179
|
+
self,
|
|
180
|
+
prisms: NDArray[np.int32],
|
|
181
|
+
refs: NDArray[np.int64] | None = None,
|
|
182
|
+
) -> None: ...
|
|
183
|
+
def set_quadrilaterals(
|
|
184
|
+
self,
|
|
185
|
+
quads: NDArray[np.int32],
|
|
186
|
+
refs: NDArray[np.int64] | None = None,
|
|
187
|
+
) -> None: ...
|
|
188
|
+
def get_prism(self, idx: int) -> tuple[int, int, int, int, int, int, int]: ...
|
|
189
|
+
def get_quadrilateral(self, idx: int) -> tuple[int, int, int, int, int]: ...
|
|
190
|
+
def get_prisms(self) -> NDArray[np.int32]: ...
|
|
191
|
+
def get_prisms_with_refs(
|
|
192
|
+
self,
|
|
193
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
194
|
+
def get_quadrilaterals(self) -> NDArray[np.int32]: ...
|
|
195
|
+
def get_quadrilaterals_with_refs(
|
|
196
|
+
self,
|
|
197
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
198
|
+
def get_tetrahedra(self) -> NDArray[np.int32]: ...
|
|
199
|
+
def get_tetrahedra_with_refs(
|
|
200
|
+
self,
|
|
201
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
202
|
+
def set_field(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
203
|
+
def get_field(self, key: str) -> NDArray[np.float64]: ...
|
|
204
|
+
def __setitem__(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
205
|
+
def __getitem__(self, key: str) -> NDArray[np.float64]: ...
|
|
206
|
+
def save(self, filename: str | Path) -> None: ...
|
|
207
|
+
def remesh(
|
|
208
|
+
self,
|
|
209
|
+
options: Mmg3DOptions | None = None,
|
|
210
|
+
*,
|
|
211
|
+
hmin: float | None = None,
|
|
212
|
+
hmax: float | None = None,
|
|
213
|
+
hsiz: float | None = None,
|
|
214
|
+
hausd: float | None = None,
|
|
215
|
+
hgrad: float | None = None,
|
|
216
|
+
verbose: bool | int | None = None,
|
|
217
|
+
optim: int | None = None,
|
|
218
|
+
noinsert: int | None = None,
|
|
219
|
+
noswap: int | None = None,
|
|
220
|
+
nomove: int | None = None,
|
|
221
|
+
nosurf: int | None = None,
|
|
222
|
+
**kwargs: float,
|
|
223
|
+
) -> None: ...
|
|
224
|
+
def remesh_lagrangian(
|
|
225
|
+
self,
|
|
226
|
+
displacement: NDArray[np.float64],
|
|
227
|
+
*,
|
|
228
|
+
hmin: float | None = None,
|
|
229
|
+
hmax: float | None = None,
|
|
230
|
+
hsiz: float | None = None,
|
|
231
|
+
hausd: float | None = None,
|
|
232
|
+
hgrad: float | None = None,
|
|
233
|
+
verbose: bool | int | None = None,
|
|
234
|
+
lag: int | None = None,
|
|
235
|
+
**kwargs: float,
|
|
236
|
+
) -> None: ...
|
|
237
|
+
def remesh_levelset(
|
|
238
|
+
self,
|
|
239
|
+
levelset: NDArray[np.float64],
|
|
240
|
+
*,
|
|
241
|
+
ls: float | None = None,
|
|
242
|
+
hmin: float | None = None,
|
|
243
|
+
hmax: float | None = None,
|
|
244
|
+
hsiz: float | None = None,
|
|
245
|
+
hausd: float | None = None,
|
|
246
|
+
hgrad: float | None = None,
|
|
247
|
+
verbose: bool | int | None = None,
|
|
248
|
+
iso: int | None = None,
|
|
249
|
+
**kwargs: float,
|
|
250
|
+
) -> None: ...
|
|
251
|
+
# PyVista integration (added by mmgpy._pyvista.add_pyvista_methods)
|
|
252
|
+
@classmethod
|
|
253
|
+
def from_pyvista(
|
|
254
|
+
cls,
|
|
255
|
+
mesh: pv.UnstructuredGrid | pv.PolyData,
|
|
256
|
+
) -> MmgMesh3D: ...
|
|
257
|
+
def to_pyvista(
|
|
258
|
+
self,
|
|
259
|
+
*,
|
|
260
|
+
include_refs: bool = True,
|
|
261
|
+
) -> pv.UnstructuredGrid: ...
|
|
262
|
+
# Convenience methods (added by mmgpy._add_convenience_methods)
|
|
263
|
+
def remesh_optimize(self, *, verbose: int | None = None) -> None: ...
|
|
264
|
+
def remesh_uniform(self, size: float, *, verbose: int | None = None) -> None: ...
|
|
265
|
+
# Local sizing methods (added by mmgpy._add_sizing_methods)
|
|
266
|
+
def set_size_sphere(
|
|
267
|
+
self,
|
|
268
|
+
center: Sequence[float] | NDArray[np.float64],
|
|
269
|
+
radius: float,
|
|
270
|
+
size: float,
|
|
271
|
+
) -> None: ...
|
|
272
|
+
def set_size_box(
|
|
273
|
+
self,
|
|
274
|
+
bounds: Sequence[Sequence[float]] | NDArray[np.float64],
|
|
275
|
+
size: float,
|
|
276
|
+
) -> None: ...
|
|
277
|
+
def set_size_cylinder(
|
|
278
|
+
self,
|
|
279
|
+
point1: Sequence[float] | NDArray[np.float64],
|
|
280
|
+
point2: Sequence[float] | NDArray[np.float64],
|
|
281
|
+
radius: float,
|
|
282
|
+
size: float,
|
|
283
|
+
) -> None: ...
|
|
284
|
+
def set_size_from_point(
|
|
285
|
+
self,
|
|
286
|
+
point: Sequence[float] | NDArray[np.float64],
|
|
287
|
+
near_size: float,
|
|
288
|
+
far_size: float,
|
|
289
|
+
influence_radius: float,
|
|
290
|
+
) -> None: ...
|
|
291
|
+
def clear_local_sizing(self) -> None: ...
|
|
292
|
+
def get_local_sizing_count(self) -> int: ...
|
|
293
|
+
def apply_local_sizing(self) -> None: ...
|
|
294
|
+
|
|
295
|
+
# Phase 4: 2D planar mesh class (MMG2D)
|
|
296
|
+
class MmgMesh2D:
|
|
297
|
+
@overload
|
|
298
|
+
def __init__(self) -> None: ...
|
|
299
|
+
@overload
|
|
300
|
+
def __init__(
|
|
301
|
+
self,
|
|
302
|
+
vertices: NDArray[np.float64],
|
|
303
|
+
triangles: NDArray[np.int32],
|
|
304
|
+
) -> None: ...
|
|
305
|
+
@overload
|
|
306
|
+
def __init__(
|
|
307
|
+
self,
|
|
308
|
+
filename: str | Path,
|
|
309
|
+
) -> None: ...
|
|
310
|
+
|
|
311
|
+
# Mesh sizing
|
|
312
|
+
def set_mesh_size(
|
|
313
|
+
self,
|
|
314
|
+
vertices: int = 0,
|
|
315
|
+
triangles: int = 0,
|
|
316
|
+
quadrilaterals: int = 0,
|
|
317
|
+
edges: int = 0,
|
|
318
|
+
) -> None: ...
|
|
319
|
+
def get_mesh_size(self) -> tuple[int, int, int, int]: ...
|
|
320
|
+
|
|
321
|
+
# Bulk setters
|
|
322
|
+
def set_vertices(
|
|
323
|
+
self,
|
|
324
|
+
vertices: NDArray[np.float64],
|
|
325
|
+
refs: NDArray[np.int64] | None = None,
|
|
326
|
+
) -> None: ...
|
|
327
|
+
def set_triangles(
|
|
328
|
+
self,
|
|
329
|
+
triangles: NDArray[np.int32],
|
|
330
|
+
refs: NDArray[np.int64] | None = None,
|
|
331
|
+
) -> None: ...
|
|
332
|
+
def set_quadrilaterals(
|
|
333
|
+
self,
|
|
334
|
+
quads: NDArray[np.int32],
|
|
335
|
+
refs: NDArray[np.int64] | None = None,
|
|
336
|
+
) -> None: ...
|
|
337
|
+
def set_edges(
|
|
338
|
+
self,
|
|
339
|
+
edges: NDArray[np.int32],
|
|
340
|
+
refs: NDArray[np.int64] | None = None,
|
|
341
|
+
) -> None: ...
|
|
342
|
+
|
|
343
|
+
# Bulk getters
|
|
344
|
+
def get_vertices(self) -> NDArray[np.float64]: ...
|
|
345
|
+
def get_vertices_with_refs(
|
|
346
|
+
self,
|
|
347
|
+
) -> tuple[NDArray[np.float64], NDArray[np.int64]]: ...
|
|
348
|
+
def get_triangles(self) -> NDArray[np.int32]: ...
|
|
349
|
+
def get_triangles_with_refs(
|
|
350
|
+
self,
|
|
351
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
352
|
+
def get_quadrilaterals(self) -> NDArray[np.int32]: ...
|
|
353
|
+
def get_quadrilaterals_with_refs(
|
|
354
|
+
self,
|
|
355
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
356
|
+
def get_edges(self) -> NDArray[np.int32]: ...
|
|
357
|
+
def get_edges_with_refs(
|
|
358
|
+
self,
|
|
359
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
360
|
+
|
|
361
|
+
# Single element setters
|
|
362
|
+
def set_vertex(self, x: float, y: float, ref: int, idx: int) -> None: ...
|
|
363
|
+
def set_triangle(
|
|
364
|
+
self,
|
|
365
|
+
v0: int,
|
|
366
|
+
v1: int,
|
|
367
|
+
v2: int,
|
|
368
|
+
ref: int,
|
|
369
|
+
idx: int,
|
|
370
|
+
) -> None: ...
|
|
371
|
+
def set_quadrilateral(
|
|
372
|
+
self,
|
|
373
|
+
v0: int,
|
|
374
|
+
v1: int,
|
|
375
|
+
v2: int,
|
|
376
|
+
v3: int,
|
|
377
|
+
ref: int,
|
|
378
|
+
idx: int,
|
|
379
|
+
) -> None: ...
|
|
380
|
+
def set_edge(self, v0: int, v1: int, ref: int, idx: int) -> None: ...
|
|
381
|
+
|
|
382
|
+
# Single element getters
|
|
383
|
+
def get_vertex(self, idx: int) -> tuple[float, float, int]: ...
|
|
384
|
+
def get_triangle(self, idx: int) -> tuple[int, int, int, int]: ...
|
|
385
|
+
def get_quadrilateral(self, idx: int) -> tuple[int, int, int, int, int]: ...
|
|
386
|
+
def get_edge(self, idx: int) -> tuple[int, int, int]: ...
|
|
387
|
+
|
|
388
|
+
# Element attributes
|
|
389
|
+
def set_corners(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
390
|
+
def set_required_vertices(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
391
|
+
def set_required_edges(self, edge_indices: NDArray[np.int32]) -> None: ...
|
|
392
|
+
|
|
393
|
+
# Topology queries
|
|
394
|
+
def get_adjacent_elements(self, idx: int) -> NDArray[np.int32]: ...
|
|
395
|
+
def get_vertex_neighbors(self, idx: int) -> NDArray[np.int32]: ...
|
|
396
|
+
def get_element_quality(self, idx: int) -> float: ...
|
|
397
|
+
def get_element_qualities(self) -> NDArray[np.float64]: ...
|
|
398
|
+
|
|
399
|
+
# Solution fields
|
|
400
|
+
def set_field(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
401
|
+
def get_field(self, key: str) -> NDArray[np.float64]: ...
|
|
402
|
+
def __setitem__(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
403
|
+
def __getitem__(self, key: str) -> NDArray[np.float64]: ...
|
|
404
|
+
|
|
405
|
+
# File I/O
|
|
406
|
+
def save(self, filename: str | Path) -> None: ...
|
|
407
|
+
def remesh(
|
|
408
|
+
self,
|
|
409
|
+
options: Mmg2DOptions | None = None,
|
|
410
|
+
*,
|
|
411
|
+
hmin: float | None = None,
|
|
412
|
+
hmax: float | None = None,
|
|
413
|
+
hsiz: float | None = None,
|
|
414
|
+
hausd: float | None = None,
|
|
415
|
+
hgrad: float | None = None,
|
|
416
|
+
verbose: bool | int | None = None,
|
|
417
|
+
optim: int | None = None,
|
|
418
|
+
noinsert: int | None = None,
|
|
419
|
+
noswap: int | None = None,
|
|
420
|
+
nomove: int | None = None,
|
|
421
|
+
**kwargs: float,
|
|
422
|
+
) -> None: ...
|
|
423
|
+
def remesh_lagrangian(
|
|
424
|
+
self,
|
|
425
|
+
displacement: NDArray[np.float64],
|
|
426
|
+
*,
|
|
427
|
+
hmin: float | None = None,
|
|
428
|
+
hmax: float | None = None,
|
|
429
|
+
hsiz: float | None = None,
|
|
430
|
+
hausd: float | None = None,
|
|
431
|
+
hgrad: float | None = None,
|
|
432
|
+
verbose: bool | int | None = None,
|
|
433
|
+
lag: int | None = None,
|
|
434
|
+
**kwargs: float,
|
|
435
|
+
) -> None: ...
|
|
436
|
+
def remesh_levelset(
|
|
437
|
+
self,
|
|
438
|
+
levelset: NDArray[np.float64],
|
|
439
|
+
*,
|
|
440
|
+
ls: float | None = None,
|
|
441
|
+
hmin: float | None = None,
|
|
442
|
+
hmax: float | None = None,
|
|
443
|
+
hsiz: float | None = None,
|
|
444
|
+
hausd: float | None = None,
|
|
445
|
+
hgrad: float | None = None,
|
|
446
|
+
verbose: bool | int | None = None,
|
|
447
|
+
iso: int | None = None,
|
|
448
|
+
**kwargs: float,
|
|
449
|
+
) -> None: ...
|
|
450
|
+
# PyVista integration (added by mmgpy._pyvista.add_pyvista_methods)
|
|
451
|
+
@classmethod
|
|
452
|
+
def from_pyvista(
|
|
453
|
+
cls,
|
|
454
|
+
mesh: pv.UnstructuredGrid | pv.PolyData,
|
|
455
|
+
) -> MmgMesh2D: ...
|
|
456
|
+
def to_pyvista(self, *, include_refs: bool = True) -> pv.PolyData: ...
|
|
457
|
+
# Convenience methods (added by mmgpy._add_convenience_methods)
|
|
458
|
+
def remesh_optimize(self, *, verbose: int | None = None) -> None: ...
|
|
459
|
+
def remesh_uniform(self, size: float, *, verbose: int | None = None) -> None: ...
|
|
460
|
+
# Local sizing methods (added by mmgpy._add_sizing_methods)
|
|
461
|
+
def set_size_sphere(
|
|
462
|
+
self,
|
|
463
|
+
center: Sequence[float] | NDArray[np.float64],
|
|
464
|
+
radius: float,
|
|
465
|
+
size: float,
|
|
466
|
+
) -> None: ...
|
|
467
|
+
def set_size_box(
|
|
468
|
+
self,
|
|
469
|
+
bounds: Sequence[Sequence[float]] | NDArray[np.float64],
|
|
470
|
+
size: float,
|
|
471
|
+
) -> None: ...
|
|
472
|
+
def set_size_from_point(
|
|
473
|
+
self,
|
|
474
|
+
point: Sequence[float] | NDArray[np.float64],
|
|
475
|
+
near_size: float,
|
|
476
|
+
far_size: float,
|
|
477
|
+
influence_radius: float,
|
|
478
|
+
) -> None: ...
|
|
479
|
+
def clear_local_sizing(self) -> None: ...
|
|
480
|
+
def get_local_sizing_count(self) -> int: ...
|
|
481
|
+
def apply_local_sizing(self) -> None: ...
|
|
482
|
+
|
|
483
|
+
# Phase 4: Surface mesh class (MMGS)
|
|
484
|
+
class MmgMeshS:
|
|
485
|
+
@overload
|
|
486
|
+
def __init__(self) -> None: ...
|
|
487
|
+
@overload
|
|
488
|
+
def __init__(
|
|
489
|
+
self,
|
|
490
|
+
vertices: NDArray[np.float64],
|
|
491
|
+
triangles: NDArray[np.int32],
|
|
492
|
+
) -> None: ...
|
|
493
|
+
@overload
|
|
494
|
+
def __init__(
|
|
495
|
+
self,
|
|
496
|
+
filename: str | Path,
|
|
497
|
+
) -> None: ...
|
|
498
|
+
|
|
499
|
+
# Mesh sizing
|
|
500
|
+
def set_mesh_size(
|
|
501
|
+
self,
|
|
502
|
+
vertices: int = 0,
|
|
503
|
+
triangles: int = 0,
|
|
504
|
+
edges: int = 0,
|
|
505
|
+
) -> None: ...
|
|
506
|
+
def get_mesh_size(self) -> tuple[int, int, int]: ...
|
|
507
|
+
|
|
508
|
+
# Bulk setters
|
|
509
|
+
def set_vertices(
|
|
510
|
+
self,
|
|
511
|
+
vertices: NDArray[np.float64],
|
|
512
|
+
refs: NDArray[np.int64] | None = None,
|
|
513
|
+
) -> None: ...
|
|
514
|
+
def set_triangles(
|
|
515
|
+
self,
|
|
516
|
+
triangles: NDArray[np.int32],
|
|
517
|
+
refs: NDArray[np.int64] | None = None,
|
|
518
|
+
) -> None: ...
|
|
519
|
+
def set_edges(
|
|
520
|
+
self,
|
|
521
|
+
edges: NDArray[np.int32],
|
|
522
|
+
refs: NDArray[np.int64] | None = None,
|
|
523
|
+
) -> None: ...
|
|
524
|
+
|
|
525
|
+
# Bulk getters
|
|
526
|
+
def get_vertices(self) -> NDArray[np.float64]: ...
|
|
527
|
+
def get_vertices_with_refs(
|
|
528
|
+
self,
|
|
529
|
+
) -> tuple[NDArray[np.float64], NDArray[np.int64]]: ...
|
|
530
|
+
def get_triangles(self) -> NDArray[np.int32]: ...
|
|
531
|
+
def get_triangles_with_refs(
|
|
532
|
+
self,
|
|
533
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
534
|
+
def get_edges(self) -> NDArray[np.int32]: ...
|
|
535
|
+
def get_edges_with_refs(
|
|
536
|
+
self,
|
|
537
|
+
) -> tuple[NDArray[np.int32], NDArray[np.int64]]: ...
|
|
538
|
+
|
|
539
|
+
# Single element setters
|
|
540
|
+
def set_vertex(
|
|
541
|
+
self,
|
|
542
|
+
x: float,
|
|
543
|
+
y: float,
|
|
544
|
+
z: float,
|
|
545
|
+
ref: int,
|
|
546
|
+
idx: int,
|
|
547
|
+
) -> None: ...
|
|
548
|
+
def set_triangle(
|
|
549
|
+
self,
|
|
550
|
+
v0: int,
|
|
551
|
+
v1: int,
|
|
552
|
+
v2: int,
|
|
553
|
+
ref: int,
|
|
554
|
+
idx: int,
|
|
555
|
+
) -> None: ...
|
|
556
|
+
def set_edge(self, v0: int, v1: int, ref: int, idx: int) -> None: ...
|
|
557
|
+
|
|
558
|
+
# Single element getters
|
|
559
|
+
def get_vertex(self, idx: int) -> tuple[float, float, float, int]: ...
|
|
560
|
+
def get_triangle(self, idx: int) -> tuple[int, int, int, int]: ...
|
|
561
|
+
def get_edge(self, idx: int) -> tuple[int, int, int]: ...
|
|
562
|
+
|
|
563
|
+
# Element attributes
|
|
564
|
+
def set_corners(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
565
|
+
def set_required_vertices(self, vertex_indices: NDArray[np.int32]) -> None: ...
|
|
566
|
+
def set_ridge_edges(self, edge_indices: NDArray[np.int32]) -> None: ...
|
|
567
|
+
|
|
568
|
+
# Topology queries
|
|
569
|
+
def get_adjacent_elements(self, idx: int) -> NDArray[np.int32]: ...
|
|
570
|
+
def get_vertex_neighbors(self, idx: int) -> NDArray[np.int32]: ...
|
|
571
|
+
def get_element_quality(self, idx: int) -> float: ...
|
|
572
|
+
def get_element_qualities(self) -> NDArray[np.float64]: ...
|
|
573
|
+
|
|
574
|
+
# Solution fields
|
|
575
|
+
def set_field(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
576
|
+
def get_field(self, key: str) -> NDArray[np.float64]: ...
|
|
577
|
+
def __setitem__(self, key: str, value: NDArray[np.float64]) -> None: ...
|
|
578
|
+
def __getitem__(self, key: str) -> NDArray[np.float64]: ...
|
|
579
|
+
|
|
580
|
+
# File I/O
|
|
581
|
+
def save(self, filename: str | Path) -> None: ...
|
|
582
|
+
def remesh(
|
|
583
|
+
self,
|
|
584
|
+
options: MmgSOptions | None = None,
|
|
585
|
+
*,
|
|
586
|
+
hmin: float | None = None,
|
|
587
|
+
hmax: float | None = None,
|
|
588
|
+
hsiz: float | None = None,
|
|
589
|
+
hausd: float | None = None,
|
|
590
|
+
hgrad: float | None = None,
|
|
591
|
+
verbose: bool | int | None = None,
|
|
592
|
+
optim: int | None = None,
|
|
593
|
+
noinsert: int | None = None,
|
|
594
|
+
noswap: int | None = None,
|
|
595
|
+
nomove: int | None = None,
|
|
596
|
+
**kwargs: float,
|
|
597
|
+
) -> None: ...
|
|
598
|
+
def remesh_levelset(
|
|
599
|
+
self,
|
|
600
|
+
levelset: NDArray[np.float64],
|
|
601
|
+
*,
|
|
602
|
+
ls: float | None = None,
|
|
603
|
+
hmin: float | None = None,
|
|
604
|
+
hmax: float | None = None,
|
|
605
|
+
hsiz: float | None = None,
|
|
606
|
+
hausd: float | None = None,
|
|
607
|
+
hgrad: float | None = None,
|
|
608
|
+
verbose: bool | int | None = None,
|
|
609
|
+
iso: int | None = None,
|
|
610
|
+
**kwargs: float,
|
|
611
|
+
) -> None: ...
|
|
612
|
+
# PyVista integration (added by mmgpy._pyvista.add_pyvista_methods)
|
|
613
|
+
@classmethod
|
|
614
|
+
def from_pyvista(
|
|
615
|
+
cls,
|
|
616
|
+
mesh: pv.UnstructuredGrid | pv.PolyData,
|
|
617
|
+
) -> MmgMeshS: ...
|
|
618
|
+
def to_pyvista(self, *, include_refs: bool = True) -> pv.PolyData: ...
|
|
619
|
+
# Convenience methods (added by mmgpy._add_convenience_methods)
|
|
620
|
+
def remesh_optimize(self, *, verbose: int | None = None) -> None: ...
|
|
621
|
+
def remesh_uniform(self, size: float, *, verbose: int | None = None) -> None: ...
|
|
622
|
+
# Local sizing methods (added by mmgpy._add_sizing_methods)
|
|
623
|
+
def set_size_sphere(
|
|
624
|
+
self,
|
|
625
|
+
center: Sequence[float] | NDArray[np.float64],
|
|
626
|
+
radius: float,
|
|
627
|
+
size: float,
|
|
628
|
+
) -> None: ...
|
|
629
|
+
def set_size_box(
|
|
630
|
+
self,
|
|
631
|
+
bounds: Sequence[Sequence[float]] | NDArray[np.float64],
|
|
632
|
+
size: float,
|
|
633
|
+
) -> None: ...
|
|
634
|
+
def set_size_cylinder(
|
|
635
|
+
self,
|
|
636
|
+
point1: Sequence[float] | NDArray[np.float64],
|
|
637
|
+
point2: Sequence[float] | NDArray[np.float64],
|
|
638
|
+
radius: float,
|
|
639
|
+
size: float,
|
|
640
|
+
) -> None: ...
|
|
641
|
+
def set_size_from_point(
|
|
642
|
+
self,
|
|
643
|
+
point: Sequence[float] | NDArray[np.float64],
|
|
644
|
+
near_size: float,
|
|
645
|
+
far_size: float,
|
|
646
|
+
influence_radius: float,
|
|
647
|
+
) -> None: ...
|
|
648
|
+
def clear_local_sizing(self) -> None: ...
|
|
649
|
+
def get_local_sizing_count(self) -> int: ...
|
|
650
|
+
def apply_local_sizing(self) -> None: ...
|