emerge 1.0.7__py3-none-any.whl → 1.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of emerge might be problematic. Click here for more details.
- emerge/__init__.py +15 -3
- emerge/_emerge/const.py +2 -1
- emerge/_emerge/elements/ned2_interp.py +122 -42
- emerge/_emerge/geo/__init__.py +1 -1
- emerge/_emerge/geo/operations.py +20 -0
- emerge/_emerge/geo/pcb.py +162 -71
- emerge/_emerge/geo/shapes.py +12 -7
- emerge/_emerge/geo/step.py +177 -41
- emerge/_emerge/geometry.py +189 -27
- emerge/_emerge/logsettings.py +26 -2
- emerge/_emerge/material.py +2 -0
- emerge/_emerge/mesh3d.py +6 -8
- emerge/_emerge/mesher.py +67 -11
- emerge/_emerge/mth/common_functions.py +1 -1
- emerge/_emerge/mth/optimized.py +2 -2
- emerge/_emerge/physics/microwave/adaptive_mesh.py +549 -116
- emerge/_emerge/physics/microwave/assembly/assembler.py +9 -1
- emerge/_emerge/physics/microwave/microwave_3d.py +133 -83
- emerge/_emerge/physics/microwave/microwave_bc.py +158 -8
- emerge/_emerge/physics/microwave/microwave_data.py +94 -5
- emerge/_emerge/plot/pyvista/display.py +36 -23
- emerge/_emerge/selection.py +17 -2
- emerge/_emerge/settings.py +124 -6
- emerge/_emerge/simmodel.py +273 -150
- emerge/_emerge/simstate.py +106 -0
- emerge/_emerge/simulation_data.py +11 -23
- emerge/_emerge/solve_interfaces/cudss_interface.py +20 -1
- emerge/_emerge/solver.py +4 -4
- {emerge-1.0.7.dist-info → emerge-1.1.1.dist-info}/METADATA +7 -3
- {emerge-1.0.7.dist-info → emerge-1.1.1.dist-info}/RECORD +33 -32
- {emerge-1.0.7.dist-info → emerge-1.1.1.dist-info}/WHEEL +0 -0
- {emerge-1.0.7.dist-info → emerge-1.1.1.dist-info}/entry_points.txt +0 -0
- {emerge-1.0.7.dist-info → emerge-1.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# EMerge is an open source Python based FEM EM simulation module.
|
|
2
|
+
# Copyright (C) 2025 Robert Fennis.
|
|
3
|
+
|
|
4
|
+
# This program is free software; you can redistribute it and/or
|
|
5
|
+
# modify it under the terms of the GNU General Public License
|
|
6
|
+
# as published by the Free Software Foundation; either version 2
|
|
7
|
+
# of the License, or (at your option) any later version.
|
|
8
|
+
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program; if not, see
|
|
16
|
+
# <https://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
from .mesh3d import Mesh3D
|
|
20
|
+
from .geometry import GeoObject, _GeometryManager, _GEOMANAGER
|
|
21
|
+
from .dataset import SimulationDataset
|
|
22
|
+
from loguru import logger
|
|
23
|
+
|
|
24
|
+
from typing import Any
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class SimState:
|
|
28
|
+
|
|
29
|
+
def __init__(self):
|
|
30
|
+
self.mesh: Mesh3D = Mesh3D()
|
|
31
|
+
self.geos: list[GeoObject] = []
|
|
32
|
+
self.data: SimulationDataset = SimulationDataset()
|
|
33
|
+
self.params: dict[str, float] = dict()
|
|
34
|
+
self._stashed: SimulationDataset | None = None
|
|
35
|
+
self.manager: _GeometryManager = _GEOMANAGER
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def current_geo_state(self) -> list[GeoObject]:
|
|
39
|
+
return self.manager.all_geometries()
|
|
40
|
+
|
|
41
|
+
def reset_geostate(self, modelname: str) -> None:
|
|
42
|
+
_GEOMANAGER.reset(modelname)
|
|
43
|
+
self.clear_mesh()
|
|
44
|
+
|
|
45
|
+
def init(self, modelname: str) -> None:
|
|
46
|
+
self.mesh = Mesh3D()
|
|
47
|
+
self.geos = []
|
|
48
|
+
self.reset_geostate(modelname)
|
|
49
|
+
self.init_data()
|
|
50
|
+
|
|
51
|
+
def stash(self) -> None:
|
|
52
|
+
self._stashed = self.data
|
|
53
|
+
self.data = SimulationDataset()
|
|
54
|
+
|
|
55
|
+
def set_parameters(self, parameters: dict[str, float]) -> None:
|
|
56
|
+
self.params = parameters
|
|
57
|
+
|
|
58
|
+
def init_data(self) -> None:
|
|
59
|
+
self.data.sim.new(**self.params)
|
|
60
|
+
|
|
61
|
+
def reload(self) -> SimulationDataset:
|
|
62
|
+
old = self._stashed
|
|
63
|
+
self.data = self._stashed
|
|
64
|
+
self._stashed = None
|
|
65
|
+
return old
|
|
66
|
+
|
|
67
|
+
def reset_mesh(self) -> None:
|
|
68
|
+
self.mesh = Mesh3D()
|
|
69
|
+
|
|
70
|
+
def set_mesh(self, mesh: Mesh3D) -> None:
|
|
71
|
+
self.mesh = mesh
|
|
72
|
+
|
|
73
|
+
def set_geos(self, geos: list[GeoObject]) -> None:
|
|
74
|
+
self.geos = geos
|
|
75
|
+
_GEOMANAGER.set_geometries(geos)
|
|
76
|
+
|
|
77
|
+
def clear_mesh(self) -> None:
|
|
78
|
+
self.mesh = Mesh3D()
|
|
79
|
+
|
|
80
|
+
def store_geometry_data(self) -> None:
|
|
81
|
+
"""Saves the current geometry state to the simulatin dataset
|
|
82
|
+
"""
|
|
83
|
+
logger.trace('Storing geometries in data.sim')
|
|
84
|
+
self.geos = self.current_geo_state
|
|
85
|
+
self.data.sim['geos'] = self.geos
|
|
86
|
+
self.data.sim['mesh'] = self.mesh
|
|
87
|
+
|
|
88
|
+
def get_dataset(self) -> dict[str, Any]:
|
|
89
|
+
return dict(simdata=self.data, mesh=self.mesh)
|
|
90
|
+
|
|
91
|
+
def load_dataset(self, dataset: dict[str, Any]):
|
|
92
|
+
self.data = dataset['simdata']
|
|
93
|
+
self.mesh = dataset['mesh']
|
|
94
|
+
|
|
95
|
+
def activate(self, _indx: int | None = None, **variables):
|
|
96
|
+
"""Searches for the permutaions of parameter sweep variables and sets the current geometry to the provided set."""
|
|
97
|
+
if _indx is not None:
|
|
98
|
+
dataset = self.data.sim.index(_indx)
|
|
99
|
+
else:
|
|
100
|
+
dataset = self.data.sim.find(**variables)
|
|
101
|
+
|
|
102
|
+
variables = ', '.join([f'{key}={value}' for key,value in dataset.vars.items()])
|
|
103
|
+
logger.info(f'Activated entry with variables: {variables}')
|
|
104
|
+
self.set_mesh(dataset['mesh'])
|
|
105
|
+
self.set_geos(dataset['geos'])
|
|
106
|
+
return self
|
|
@@ -131,8 +131,8 @@ def generate_ndim(
|
|
|
131
131
|
|
|
132
132
|
class DataEntry:
|
|
133
133
|
|
|
134
|
-
def __init__(self,
|
|
135
|
-
self.vars: dict[str, float] =
|
|
134
|
+
def __init__(self, variables: dict[str, float]):
|
|
135
|
+
self.vars: dict[str, float] = variables
|
|
136
136
|
self.data: dict[str, Any] = dict()
|
|
137
137
|
|
|
138
138
|
def print(self) -> None:
|
|
@@ -172,25 +172,23 @@ class DataContainer:
|
|
|
172
172
|
"""The DataContainer class is a generalized class to store data for a set of parameter sweeps"""
|
|
173
173
|
def __init__(self):
|
|
174
174
|
self.entries: list[DataEntry] = []
|
|
175
|
-
self.stock: DataEntry = DataEntry({})
|
|
176
175
|
|
|
177
176
|
|
|
178
177
|
def print(self) -> None:
|
|
179
178
|
""" Print an overview of all data in the DataContainer"""
|
|
180
|
-
self.stock.print()
|
|
181
179
|
for entry in self.entries:
|
|
182
180
|
entry.print()
|
|
183
181
|
|
|
184
|
-
def new(self, **
|
|
182
|
+
def new(self, **variables: float) -> DataEntry:
|
|
185
183
|
"""Create a new entry in the DataContainer for the given value setting"""
|
|
186
|
-
entry = DataEntry(
|
|
184
|
+
entry = DataEntry(variables)
|
|
187
185
|
self.entries.append(entry)
|
|
188
186
|
return entry
|
|
189
187
|
|
|
190
188
|
def iterate(self) -> Generator[tuple[dict[str, float], dict[str, Any]], None, None]:
|
|
191
189
|
for entry in self.entries:
|
|
192
190
|
yield entry.vars, entry.data
|
|
193
|
-
|
|
191
|
+
|
|
194
192
|
@property
|
|
195
193
|
def first(self) -> DataEntry:
|
|
196
194
|
"""Returns the first added entry"""
|
|
@@ -201,14 +199,6 @@ class DataContainer:
|
|
|
201
199
|
"""Returns the last added entry"""
|
|
202
200
|
return self.entries[-1]
|
|
203
201
|
|
|
204
|
-
@property
|
|
205
|
-
def default(self) -> DataEntry:
|
|
206
|
-
"""Returns the default DataEntry which is either the last from the parameter sweep or the general one in case of no parameter sweep."""
|
|
207
|
-
if not self.entries:
|
|
208
|
-
return self.stock
|
|
209
|
-
else:
|
|
210
|
-
return self.last
|
|
211
|
-
|
|
212
202
|
def index(self, index: int) -> DataEntry:
|
|
213
203
|
"""Returns the last added entry"""
|
|
214
204
|
return self.entries[index]
|
|
@@ -226,11 +216,11 @@ class DataContainer:
|
|
|
226
216
|
|
|
227
217
|
def __getitem__(self, key: str) -> DataEntry:
|
|
228
218
|
"""Returns the requested item from the default DataEntry"""
|
|
229
|
-
return self.
|
|
219
|
+
return self.last[key]
|
|
230
220
|
|
|
231
221
|
def __setitem__(self, key: str, value: Any) -> None:
|
|
232
222
|
"""Writes a value to the requested default DataEntry"""
|
|
233
|
-
self.
|
|
223
|
+
self.last[key] = value
|
|
234
224
|
|
|
235
225
|
|
|
236
226
|
class BaseDataset(Generic[T,M]):
|
|
@@ -298,12 +288,10 @@ class BaseDataset(Generic[T,M]):
|
|
|
298
288
|
Returns:
|
|
299
289
|
T: The physics dataset
|
|
300
290
|
"""
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
)
|
|
306
|
-
return self.get_entry(index)
|
|
291
|
+
for i, var_map in enumerate(self._variables):
|
|
292
|
+
if all(var_map.get(k) == v for k,v in variables.items()):
|
|
293
|
+
return self.get_entry(i)
|
|
294
|
+
|
|
307
295
|
|
|
308
296
|
def filter(self, **variables: float) -> list[T]:
|
|
309
297
|
"""Returns a list of all physics datasets that are valid for the given variable assignment
|
|
@@ -53,6 +53,21 @@ INDEX_BASE = cudss.IndexBase.ZERO
|
|
|
53
53
|
def _c_pointer(arry) -> int:
|
|
54
54
|
return int(arry.data.ptr)
|
|
55
55
|
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
############################################################
|
|
59
|
+
# FUNCTIONS #
|
|
60
|
+
############################################################
|
|
61
|
+
|
|
62
|
+
def is_complex_symmetric(A, rtol=1e-12, atol=0.0):
|
|
63
|
+
D = A-A.T
|
|
64
|
+
D.sum_duplicates()
|
|
65
|
+
if D.nnz == 0:
|
|
66
|
+
return True
|
|
67
|
+
max_diff = float(np.abs(D.data).max())
|
|
68
|
+
max_A = float(np.abs(A.data).max()) if A.nnz else 0.0
|
|
69
|
+
return (max_diff <= atol) if max_A == 0.0 else (max_diff <= atol + rtol * max_A)
|
|
70
|
+
|
|
56
71
|
############################################################
|
|
57
72
|
# INTERFACE #
|
|
58
73
|
############################################################
|
|
@@ -152,6 +167,11 @@ class CuDSSInterface:
|
|
|
152
167
|
"""
|
|
153
168
|
self.N = A.shape[0]
|
|
154
169
|
|
|
170
|
+
if is_complex_symmetric(A, rtol=1e-12, atol=1e-15):
|
|
171
|
+
self.MTYPE = cudss.MatrixType.SYMMETRIC
|
|
172
|
+
else:
|
|
173
|
+
self.MTYPE = cudss.MatrixType.GENERAL
|
|
174
|
+
|
|
155
175
|
if np.iscomplexobj(A):
|
|
156
176
|
self._COMP = True
|
|
157
177
|
else:
|
|
@@ -186,7 +206,6 @@ class CuDSSInterface:
|
|
|
186
206
|
"""Updates the currently defined matrix data into the existing memory.ALG_AMD
|
|
187
207
|
"""
|
|
188
208
|
cudss.matrix_set_values(self.A_cobj, _c_pointer(self._VAL))
|
|
189
|
-
|
|
190
209
|
|
|
191
210
|
self.b_cobj = cudss.matrix_create_dn(self.N, 1, self.N, _c_pointer(self.b_cu),
|
|
192
211
|
int(self.VTYPE), int(cudss.Layout.COL_MAJOR))
|
emerge/_emerge/solver.py
CHANGED
|
@@ -209,7 +209,7 @@ def filter_real_modes(eigvals: np.ndarray, eigvecs: np.ndarray,
|
|
|
209
209
|
filtered_vals = eigvals[mask]
|
|
210
210
|
filtered_vecs = eigvecs[:, mask]
|
|
211
211
|
k0vals = np.sqrt(sign*filtered_vals)
|
|
212
|
-
order = np.argsort(np.abs(k0vals))# ascending distance
|
|
212
|
+
order = np.argsort(np.abs(k0vals)) # ascending distance
|
|
213
213
|
filtered_vals = filtered_vals[order] # reorder eigenvalues
|
|
214
214
|
filtered_vecs = filtered_vecs[:, order]
|
|
215
215
|
return filtered_vals, filtered_vecs
|
|
@@ -805,7 +805,7 @@ class SmartARPACK_BMA(EigSolver):
|
|
|
805
805
|
energies.append(energy)
|
|
806
806
|
|
|
807
807
|
#Sort solutions on mode energy
|
|
808
|
-
val, mode, energy = zip(*sorted(zip(tot_eigen_values,tot_eigen_modes,energies), key=lambda x: x[2], reverse=True))
|
|
808
|
+
val, mode, energy = zip(*sorted(zip(tot_eigen_values, tot_eigen_modes, energies), key=lambda x: x[2], reverse=True))
|
|
809
809
|
eigen_values = np.array(val[:nmodes])
|
|
810
810
|
eigen_modes = np.array(mode[:nmodes]).T
|
|
811
811
|
|
|
@@ -1282,7 +1282,7 @@ class SolveRoutine:
|
|
|
1282
1282
|
NF = A.shape[0]
|
|
1283
1283
|
NS = solve_ids.shape[0]
|
|
1284
1284
|
|
|
1285
|
-
logger.debug(self.pre + f'Removing {NF-NS} prescribed DOFs ({NS} left)')
|
|
1285
|
+
logger.debug(self.pre + f' Removing {NF-NS} prescribed DOFs ({NS} left)')
|
|
1286
1286
|
|
|
1287
1287
|
Asel = A[np.ix_(solve_ids, solve_ids)]
|
|
1288
1288
|
Bsel = B[np.ix_(solve_ids, solve_ids)]
|
|
@@ -1325,7 +1325,7 @@ class SolveRoutine:
|
|
|
1325
1325
|
NF = A.shape[0]
|
|
1326
1326
|
NS = solve_ids.shape[0]
|
|
1327
1327
|
|
|
1328
|
-
logger.debug(self.pre + f'Removing {NF-NS} prescribed DOFs ({NS} left)')
|
|
1328
|
+
logger.debug(self.pre + f' Removing {NF-NS} prescribed DOFs ({NS} left)')
|
|
1329
1329
|
|
|
1330
1330
|
Asel = A[np.ix_(solve_ids, solve_ids)]
|
|
1331
1331
|
Bsel = B[np.ix_(solve_ids, solve_ids)]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: emerge
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: An open source EM FEM simulator in Python
|
|
5
5
|
Project-URL: Homepage, https://github.com/FennisRobert/EMerge
|
|
6
6
|
Project-URL: Issues, https://github.com/FennisRobert/EMerge/issues
|
|
@@ -18,8 +18,12 @@ Requires-Dist: pyvista>=0.45.2
|
|
|
18
18
|
Requires-Dist: scipy>=1.14.0
|
|
19
19
|
Provides-Extra: cudss
|
|
20
20
|
Requires-Dist: cupy-cuda12x; extra == 'cudss'
|
|
21
|
-
Requires-Dist: nvidia-cudss-cu12; extra == 'cudss'
|
|
22
|
-
Requires-Dist: nvmath-python[cu12]; extra == 'cudss'
|
|
21
|
+
Requires-Dist: nvidia-cudss-cu12==0.5.0.16; extra == 'cudss'
|
|
22
|
+
Requires-Dist: nvmath-python[cu12]==0.5.0; extra == 'cudss'
|
|
23
|
+
Provides-Extra: cudss12
|
|
24
|
+
Requires-Dist: cupy-cuda12x; extra == 'cudss12'
|
|
25
|
+
Requires-Dist: nvidia-cudss-cu12==0.5.0.16; extra == 'cudss12'
|
|
26
|
+
Requires-Dist: nvmath-python[cu12]==0.5.0; extra == 'cudss12'
|
|
23
27
|
Provides-Extra: dxf
|
|
24
28
|
Requires-Dist: ezdxf; extra == 'dxf'
|
|
25
29
|
Provides-Extra: umfpack
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
emerge/__init__.py,sha256=
|
|
1
|
+
emerge/__init__.py,sha256=3Z4-1rWSfV3s94VD3u2rtEq2N0OY7F9UWr4Rxjtv9dY,3495
|
|
2
2
|
emerge/__main__.py,sha256=WVf16sfrOI910QWohrQDaChZdRifMNoS6VKzCT6f3ZA,92
|
|
3
3
|
emerge/cli.py,sha256=NU1uhwuZ6i50680v3_I4kDZPTHqz74gOYK71UBhb8oE,666
|
|
4
4
|
emerge/ext.py,sha256=IBoHH5PQFj5pYMfp6r-uMpNNgbSe8c0g9x8qjBzzVmU,223
|
|
@@ -8,63 +8,64 @@ emerge/pyvista.py,sha256=-Ht2YcZYsh8-dici5ZPNAWwsis6uz5wNj8n8mxv5fog,42
|
|
|
8
8
|
emerge/_emerge/__init__.py,sha256=aidfiILy33dt3VyiZ2mgtA87mq-WQ5pXItZUE5wR5ws,703
|
|
9
9
|
emerge/_emerge/bc.py,sha256=ngKXwIPDfeghpctS6XLeNNtSJ6m1giHP6J25SVQ_w8g,8380
|
|
10
10
|
emerge/_emerge/cacherun.py,sha256=owo-Dz2QGqPKZjBY8s-a5yJuUo0pUQKjX4mscz8KDE0,2717
|
|
11
|
-
emerge/_emerge/const.py,sha256=
|
|
11
|
+
emerge/_emerge/const.py,sha256=cuN2OmXS-OdsgEf4kRVeaAJ7VWcYLhVRX7uzy6n4owk,140
|
|
12
12
|
emerge/_emerge/coord.py,sha256=BKvyrcnHY-_bgHqysnByy5k9_DK4VVfr9KKkRaawG2E,4371
|
|
13
13
|
emerge/_emerge/cs.py,sha256=gULfov6s0jODOdQkH6NmGBbG5wvny1-bJU8fdAlpCHo,19730
|
|
14
14
|
emerge/_emerge/dataset.py,sha256=UcSAJ_siLrOjNBBWRWsS3GUZUpayp63EM6pP6ClwKDI,1534
|
|
15
15
|
emerge/_emerge/emerge_update.py,sha256=0G91xr7k7Me5gOlk3pXbKWe-6ALXtoCJ5syTa1Y5Bhw,2042
|
|
16
16
|
emerge/_emerge/geo2d.py,sha256=e_HkX1GQ2iYrdO0zeEgzVOzfGyU1WGJyjeGBAobOttE,3323
|
|
17
|
-
emerge/_emerge/geometry.py,sha256=
|
|
17
|
+
emerge/_emerge/geometry.py,sha256=3iiHotkQ-Uj34vp0jsV_I0-vNikkXdNuLsnHiKekP8M,31463
|
|
18
18
|
emerge/_emerge/howto.py,sha256=c4UxUNpA1tygr3OoR-LH-h0UZv-Tf9K8tpCiAU18BKE,8173
|
|
19
|
-
emerge/_emerge/logsettings.py,sha256=
|
|
20
|
-
emerge/_emerge/material.py,sha256=
|
|
21
|
-
emerge/_emerge/mesh3d.py,sha256=
|
|
22
|
-
emerge/_emerge/mesher.py,sha256=
|
|
19
|
+
emerge/_emerge/logsettings.py,sha256=S4aUkO2vhcssmYQIGOq0VkazMEX4TYJlCt0FZ74Mc8Y,5574
|
|
20
|
+
emerge/_emerge/material.py,sha256=0Z4ZqNDw4QwFu1GBgAbj2Rn6Wiq0a8NJ9t8CKr-BGZ4,17477
|
|
21
|
+
emerge/_emerge/mesh3d.py,sha256=hHxb_TTRBZQKs8XMYuHf_wNo7UWjZZypjs2LxmuTgWM,37198
|
|
22
|
+
emerge/_emerge/mesher.py,sha256=Z5uftutzC_Cun3_JqDLc3kPAjTxOMG6d5cgRJaDE_C8,19012
|
|
23
23
|
emerge/_emerge/periodic.py,sha256=dUuWqjlDR8mHtQR3ecINP2FFjJJ0cKg0blOVZ0PCcAo,12087
|
|
24
24
|
emerge/_emerge/plot.py,sha256=cf1I9mj7EIUJcq8vmANlUkqoV6QqVaJaP-zlC-T9E18,8041
|
|
25
|
-
emerge/_emerge/selection.py,sha256=
|
|
26
|
-
emerge/_emerge/settings.py,sha256=
|
|
27
|
-
emerge/_emerge/simmodel.py,sha256=
|
|
28
|
-
emerge/_emerge/
|
|
29
|
-
emerge/_emerge/
|
|
25
|
+
emerge/_emerge/selection.py,sha256=bE7qHk08RryqHwsdqw2ABQviIsDjL0RmwpxT1NF9pr8,21899
|
|
26
|
+
emerge/_emerge/settings.py,sha256=4Mlo3T6UVGzhTB838833_dwvXYLGKNIEHQ4fr9hxHd8,5335
|
|
27
|
+
emerge/_emerge/simmodel.py,sha256=bKAiL0q6hdiHYqmxlPTS9AiJiTg0RopbnJx1Of3Y8FM,35250
|
|
28
|
+
emerge/_emerge/simstate.py,sha256=n_iOz3L9lZ0oD4CBb8cdHXOoaoyx96kcsFKwSQWVxlk,3630
|
|
29
|
+
emerge/_emerge/simulation_data.py,sha256=W8wTSTqGNZIwnpBuk08I7e4GEXXAbnfoYEWHnhzHvyM,14723
|
|
30
|
+
emerge/_emerge/solver.py,sha256=ID387uKRYYZaEHOAwMCwt0esmdhmOn7VhH-2KD8tjtc,52993
|
|
30
31
|
emerge/_emerge/system.py,sha256=p4HNz7d_LMRNE9Gk75vVdFecDH2iN_groAM9u-yQTpk,1618
|
|
31
32
|
emerge/_emerge/elements/__init__.py,sha256=I3n9aic6lJW-oGeqTEZ-Fpxvyl2i-WqsHdnrM3v1oB8,799
|
|
32
33
|
emerge/_emerge/elements/femdata.py,sha256=ZSB7dICyU3GOWbxpuowBc-Khh2mpXa02ZfMkHwdDol4,8377
|
|
33
34
|
emerge/_emerge/elements/index_interp.py,sha256=X7WcXKC9Qg7UABvLbAktda7InRkOhm7qOU-Wnefflp4,3381
|
|
34
|
-
emerge/_emerge/elements/ned2_interp.py,sha256=
|
|
35
|
+
emerge/_emerge/elements/ned2_interp.py,sha256=vb311CDFl9QIYorwXzxaAWLM9nCKQHI7LKalH3ggbMk,30649
|
|
35
36
|
emerge/_emerge/elements/nedelec2.py,sha256=OssFCnPp7wkMBcUISGvTgT94jayfGOmX0x-RctIYSuI,6645
|
|
36
37
|
emerge/_emerge/elements/nedleg2.py,sha256=1SA6AvnbChhU2iodS1PVMUdbSn9wF2XKam12WTBDtsw,9049
|
|
37
|
-
emerge/_emerge/geo/__init__.py,sha256
|
|
38
|
+
emerge/_emerge/geo/__init__.py,sha256=-VkOxYgJT2dwudq5DMD-fZTxXVoh94Vd-CtroP8q3uY,1170
|
|
38
39
|
emerge/_emerge/geo/horn.py,sha256=tI-w-O0Fm_siMaVhKpZ_k5URLfZkqcbEpURX94fhKDs,4645
|
|
39
40
|
emerge/_emerge/geo/modeler.py,sha256=_PMz3lFSa7FmJHWdY-4U1Sqbed-Egy85S_AdjlCldC4,15572
|
|
40
|
-
emerge/_emerge/geo/operations.py,sha256=
|
|
41
|
-
emerge/_emerge/geo/pcb.py,sha256=
|
|
41
|
+
emerge/_emerge/geo/operations.py,sha256=7ZBM8uKGZmg_FvP766bf5q3xTZP1n3nCf3yDQjJV7uo,13137
|
|
42
|
+
emerge/_emerge/geo/pcb.py,sha256=TE60mJvfpYTm17E9WrzNeAZlsSAIUYJlfb80NGRSFEk,61913
|
|
42
43
|
emerge/_emerge/geo/pmlbox.py,sha256=gaIG_AoZNQnIyJ8C7x64U-Hw5dsmllWMiZDAH4iRoM0,8784
|
|
43
44
|
emerge/_emerge/geo/polybased.py,sha256=D_Ef4anrwV2RArEFrvWppZ_c7oN_Hm5h7ltMi2U3v2o,32891
|
|
44
|
-
emerge/_emerge/geo/shapes.py,sha256=
|
|
45
|
-
emerge/_emerge/geo/step.py,sha256=
|
|
45
|
+
emerge/_emerge/geo/shapes.py,sha256=YAigmKqgBF7oiHkLaGvLjA9RwUk1mOJf-RIrqRXtpY8,27089
|
|
46
|
+
emerge/_emerge/geo/step.py,sha256=q-TGT_VxouPuuPWSoxwEqpuCjVlEHQcBcIc290kjwI0,7185
|
|
46
47
|
emerge/_emerge/geo/pcb_tools/calculator.py,sha256=VbMP2xC9i7OFwtqnnwfYgyJSEcJIjr2VIy_Ez1hYqlU,859
|
|
47
48
|
emerge/_emerge/geo/pcb_tools/dxf.py,sha256=Xv7iP_bB0f2Y46sxZloa5KYGyj5dtApXoR-kgL7KHZA,11744
|
|
48
49
|
emerge/_emerge/geo/pcb_tools/macro.py,sha256=0g-0anOFyxrEkFobiSu0cwWFRQ32xB8Az24mmwo0z6M,2992
|
|
49
50
|
emerge/_emerge/mth/_cache_check.py,sha256=mD65yXXRoSaiTa8nky27Ne8p_s5aTC_RqmLre0x1mio,1563
|
|
50
|
-
emerge/_emerge/mth/common_functions.py,sha256=
|
|
51
|
+
emerge/_emerge/mth/common_functions.py,sha256=Ux8JWJXMyNiY1wCXyClf-seWg1PyERe9HjFXx2bsIzY,2060
|
|
51
52
|
emerge/_emerge/mth/integrals.py,sha256=lL7KrHdyFGpboQyvf6W_4bZRZCrMbjd2e8GDHctL-B8,3572
|
|
52
|
-
emerge/_emerge/mth/optimized.py,sha256=
|
|
53
|
+
emerge/_emerge/mth/optimized.py,sha256=cm1AM9hKO4ReD3EySC5KAs6lO_o9iaTR4-ZXvUrVr8A,19082
|
|
53
54
|
emerge/_emerge/mth/pairing.py,sha256=i8bBvTeMmzgF0JdiDNJiTXxx913x4f10777pzD6FJo0,3535
|
|
54
55
|
emerge/_emerge/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
56
|
emerge/_emerge/physics/microwave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
57
|
emerge/_emerge/physics/microwave/adaptive_freq.py,sha256=aWhijhCVAbnuwkru-I1AaRdY20uyozf6OWRIh9r2ijg,9786
|
|
57
|
-
emerge/_emerge/physics/microwave/adaptive_mesh.py,sha256=
|
|
58
|
-
emerge/_emerge/physics/microwave/microwave_3d.py,sha256=
|
|
59
|
-
emerge/_emerge/physics/microwave/microwave_bc.py,sha256=
|
|
60
|
-
emerge/_emerge/physics/microwave/microwave_data.py,sha256=
|
|
58
|
+
emerge/_emerge/physics/microwave/adaptive_mesh.py,sha256=_fgXf5h8T3x97fNK5BGWM1vCl0RkKVtE5W_b8s1LRu8,37733
|
|
59
|
+
emerge/_emerge/physics/microwave/microwave_3d.py,sha256=Wpf8SSCmlDAxJq_1Xb2u-vm1sugam8qNqFtEW5Z5JKM,51871
|
|
60
|
+
emerge/_emerge/physics/microwave/microwave_bc.py,sha256=nJvoBHXoZLfrG5YEpku2_rEnW33VD40H54FYrZwcufQ,50701
|
|
61
|
+
emerge/_emerge/physics/microwave/microwave_data.py,sha256=ZynDIQH8plfMQCFLxqUKETOLJXV9nfgDo-paRMVR2Jk,53846
|
|
61
62
|
emerge/_emerge/physics/microwave/periodic.py,sha256=wYSUgLFVtCLqSG3EDKoCDRU93iPUzBdXzVRdHTRmbpI,3000
|
|
62
63
|
emerge/_emerge/physics/microwave/port_functions.py,sha256=d-W1D-7P05MfXdOs7WlhPi_RqlSpC0HkYU6yl3GrxgE,2173
|
|
63
64
|
emerge/_emerge/physics/microwave/sc.py,sha256=WZvoPhmHkfEv619RhmN09sXDBV0ryTqybwErA8Rc7lU,4735
|
|
64
65
|
emerge/_emerge/physics/microwave/simjob.py,sha256=aCWCs7IXBfVBWWYhwyHvXSRHY3FOd3CK5ABcaFEsNnM,4927
|
|
65
66
|
emerge/_emerge/physics/microwave/sparam.py,sha256=1SXGyr1UsrPnCIi4ffwobM4pzgkj50y4LrWCr_J5IRY,4946
|
|
66
67
|
emerge/_emerge/physics/microwave/touchstone.py,sha256=pMcCOLWVqIKctcShcJxyaV-0rhRWXMSS1Jz14dVQEyY,5799
|
|
67
|
-
emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=
|
|
68
|
+
emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=FQhPhdyR7xPyvwR_Gn42KCY2tV1eouqJolJJ9Z6z7C4,24234
|
|
68
69
|
emerge/_emerge/physics/microwave/assembly/curlcurl.py,sha256=4CwMSUua8pvbp39gq2e3AxwVHOIVuPdr53qQM2BigQo,19688
|
|
69
70
|
emerge/_emerge/physics/microwave/assembly/generalized_eigen.py,sha256=7jNU_hWd7q-ni53wmlhB5kmyJxp2xsx_WyBXZ6hPwo0,16907
|
|
70
71
|
emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py,sha256=tGf9EOzmp-dqtTodwYzcswuT_eLeZRtgdAZvgPz9QJo,17340
|
|
@@ -77,20 +78,20 @@ emerge/_emerge/plot/simple_plots.py,sha256=szIpmQmO8o6ubzB_E3zTJfEx16mJ3-OXrMYdD
|
|
|
77
78
|
emerge/_emerge/plot/matplotlib/mpldisplay.py,sha256=e8V6EhGdCW7nRkSFvjHCcRO5uR-FcD0yHQ1nxPQCbp4,8674
|
|
78
79
|
emerge/_emerge/plot/pyvista/__init__.py,sha256=CPclatEu6mFnJZzCQk09g6T6Fh20WTbiLAJGSwAnPXU,30
|
|
79
80
|
emerge/_emerge/plot/pyvista/cmap_maker.py,sha256=_GVXYdtXpJwAO9O-Iekjzn6YcR0MVT8LNh12nqvF2IA,2498
|
|
80
|
-
emerge/_emerge/plot/pyvista/display.py,sha256=
|
|
81
|
+
emerge/_emerge/plot/pyvista/display.py,sha256=e-vqbaEEgf2UnUOWOpxqEjz4V3i1-cIyMOSiBpE0-WI,45911
|
|
81
82
|
emerge/_emerge/plot/pyvista/display_settings.py,sha256=gV5hjRGEAl3oQeBPobas6b6JzYfMFrXIGtVSaeml4N0,1074
|
|
82
83
|
emerge/_emerge/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
84
|
emerge/_emerge/projects/_gen_base.txt,sha256=DqQz36PZg6v1ovQjHvPjd0t4AIbmikZdb9dmrNYsK3w,598
|
|
84
85
|
emerge/_emerge/projects/_load_base.txt,sha256=bHsZ4okxa9uu8qP4UOxSAeIQzuwpRtN0i71rg8wuqMA,473
|
|
85
86
|
emerge/_emerge/projects/generate_project.py,sha256=TNw-0SpLc82MBq0bd9hB_yqvBZCgmuPonCBsHTp91uk,1450
|
|
86
|
-
emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=
|
|
87
|
+
emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=D6GVQLgTzRw4ec2MkgNhsSWrkLYMhvqljCyE6qtNQ3o,10599
|
|
87
88
|
emerge/_emerge/solve_interfaces/pardiso_interface.py,sha256=iVFxToMmIzhj3hcAP-O_MDHKz82ePFIHY1us11kzUBU,15305
|
|
88
89
|
emerge/beta/dxf.py,sha256=Bw4lVk0TquOgCxTZV23BZN7PrgqxBrMZxbHV1waC5U0,50
|
|
89
90
|
emerge/materials/__init__.py,sha256=Z9tu3m_nqj6F9I-FwoVoN0vCTYUlFesH3KxJ38wkZck,19
|
|
90
91
|
emerge/materials/isola.py,sha256=kSDxHJZVn2CcanoUjlwRVKIPvadRbBybURTdIHWx728,18660
|
|
91
92
|
emerge/materials/rogers.py,sha256=4u6ma_XQdXGKWE3WsFkaMTamCQNo9kTYSTU8S1gCAYU,3388
|
|
92
|
-
emerge-1.
|
|
93
|
-
emerge-1.
|
|
94
|
-
emerge-1.
|
|
95
|
-
emerge-1.
|
|
96
|
-
emerge-1.
|
|
93
|
+
emerge-1.1.1.dist-info/METADATA,sha256=UazYGroEef4uawRCEKbPa3ZYKj0V81TzYdKf253VLfs,3614
|
|
94
|
+
emerge-1.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
95
|
+
emerge-1.1.1.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
|
|
96
|
+
emerge-1.1.1.dist-info/licenses/LICENSE,sha256=VOCXWddrjMN5j7TvnSAOh1Dx7jkugdwq9Lqhycf5inc,17852
|
|
97
|
+
emerge-1.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|