emerge 1.0.7__py3-none-any.whl → 1.1.0__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.

@@ -131,8 +131,8 @@ def generate_ndim(
131
131
 
132
132
  class DataEntry:
133
133
 
134
- def __init__(self, vars: dict[str, float]):
135
- self.vars: dict[str, float] = vars
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, **vars: float) -> DataEntry:
182
+ def new(self, **variables: float) -> DataEntry:
185
183
  """Create a new entry in the DataContainer for the given value setting"""
186
- entry = DataEntry(vars)
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.default[key]
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.default[key] = value
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
- index = next(
302
- i
303
- for i, var_map in enumerate(self._variables)
304
- if all(var_map.get(k) == v for k, v in variables.items())
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
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emerge
3
- Version: 1.0.7
3
+ Version: 1.1.0
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=xexiF7GihNOUHqPZ2KViJFFaNNfRyc6l3Qz1PzWO_5w,3162
1
+ emerge/__init__.py,sha256=Ctg9aiE6r8aoihr0uSluSZPwxJLRUuoaBOCAFDf2bMU,3494
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
@@ -14,19 +14,20 @@ 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=9WnZt2xtF4HEJfdPyT41i_q8gRMZRrG0C9PILaz1PvA,25523
17
+ emerge/_emerge/geometry.py,sha256=1b3CWhUoEVwQCtosLQmXU0aBBC9Cqsn_5kRcZIidzJY,25747
18
18
  emerge/_emerge/howto.py,sha256=c4UxUNpA1tygr3OoR-LH-h0UZv-Tf9K8tpCiAU18BKE,8173
19
- emerge/_emerge/logsettings.py,sha256=OpsH_1dQAdZry_as8y0OQt4yKP_AMFfQG2d5Nz5yywg,4789
19
+ emerge/_emerge/logsettings.py,sha256=S4aUkO2vhcssmYQIGOq0VkazMEX4TYJlCt0FZ74Mc8Y,5574
20
20
  emerge/_emerge/material.py,sha256=furDHD4rwkYCOjnh0GLz-Utjl5Z_NxDv0zWrk23Pygc,17459
21
- emerge/_emerge/mesh3d.py,sha256=zPKOo1whf6yBpJxfEt89p3LXO4k1j7LSSMAGCDSK318,36946
22
- emerge/_emerge/mesher.py,sha256=Ozks6t0LbdWEfDuh_06Hmm9nZz8vQLJl2FsYA7wzMMo,16854
21
+ emerge/_emerge/mesh3d.py,sha256=YWd9xF-zrsxb3OSzmAY9TpewmY_kpoNi212Dhao_HPQ,37212
22
+ emerge/_emerge/mesher.py,sha256=Lxtiy2Y4ZBFtpiWFjCzs0XIhPCJsutAskmITCsnovCE,18146
23
23
  emerge/_emerge/periodic.py,sha256=dUuWqjlDR8mHtQR3ecINP2FFjJJ0cKg0blOVZ0PCcAo,12087
24
24
  emerge/_emerge/plot.py,sha256=cf1I9mj7EIUJcq8vmANlUkqoV6QqVaJaP-zlC-T9E18,8041
25
25
  emerge/_emerge/selection.py,sha256=ltT8ubMFG3-sFrAh7K7iAgSoBt3r25B02ShzMlOGSXQ,21527
26
- emerge/_emerge/settings.py,sha256=wZFMzQSnMEEJptatu--67El1L0I_YEv9S8QjqI69bfs,265
27
- emerge/_emerge/simmodel.py,sha256=Iu971xxJ5ggeB-KkrtxmGyV_-zHQN76z8_w1nSwpWJY,29371
28
- emerge/_emerge/simulation_data.py,sha256=23o-xbm6Q6s9sYisyK9u1GTmuaXRl0WDGQwzPO7lkr0,15115
29
- emerge/_emerge/solver.py,sha256=3P-pcDWEpCEVnT2iFRRzC1hdYGUaz-xRzE68G3xvF1Q,52988
26
+ emerge/_emerge/settings.py,sha256=4Mlo3T6UVGzhTB838833_dwvXYLGKNIEHQ4fr9hxHd8,5335
27
+ emerge/_emerge/simmodel.py,sha256=3VTNpveoZw2PFQjgs3oMG2kOhAPSuY87sy7AQXAqXH0,32984
28
+ emerge/_emerge/simstate.py,sha256=n_iOz3L9lZ0oD4CBb8cdHXOoaoyx96kcsFKwSQWVxlk,3630
29
+ emerge/_emerge/simulation_data.py,sha256=W8wTSTqGNZIwnpBuk08I7e4GEXXAbnfoYEWHnhzHvyM,14723
30
+ emerge/_emerge/solver.py,sha256=uzKWM9UhmpFhgxsKrfVlpHHBO_HoxoHjtkJp9-CFoZg,52990
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
@@ -38,10 +39,10 @@ emerge/_emerge/geo/__init__.py,sha256=yTeuT4Oexrsdkr7MxRLeTHEY5iP4IHsWeCvit57fK5
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
41
  emerge/_emerge/geo/operations.py,sha256=WYWfOXWrT0voeKW9U26g-PhQfqJl3ovRQ8uDQXUr7Nc,12459
41
- emerge/_emerge/geo/pcb.py,sha256=oRx9CnFFzhnDNtwxnw2rcm_CtN1h2y3-0jXOaBqGZ_E,57544
42
+ emerge/_emerge/geo/pcb.py,sha256=kZQFx-LdFusnHtegWTs7b4YVnhGBdFlDCd90IP7kwD8,60392
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=bLZM8ey05yvpKGgZS_DXFDaTQRP5kpsc7Xgp6Xaxc_Q,26903
45
+ emerge/_emerge/geo/shapes.py,sha256=k3WZeXZBkLzHaOShUsfyqWITHBNQfDEgqyemhLLgRRg,27080
45
46
  emerge/_emerge/geo/step.py,sha256=XcAiEN8W4umNmZdYmrGHX_aJUuiMgc6vgT-UIk8Gbqc,2689
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
@@ -54,9 +55,9 @@ emerge/_emerge/mth/pairing.py,sha256=i8bBvTeMmzgF0JdiDNJiTXxx913x4f10777pzD6FJo0
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=bcPPbWoTaMsLK1QCIL6an5WaIIeKddCPPs2u7vKfAEs,22089
58
- emerge/_emerge/physics/microwave/microwave_3d.py,sha256=OxZ3uJI1hhyGuUPV6ofWXCQfCu23URkyK2UJnpa9CLI,49141
59
- emerge/_emerge/physics/microwave/microwave_bc.py,sha256=70zrxTZG_i9n2vBQAU1FOtK2Ia_KMi3qQeC9MU5aDHo,44872
58
+ emerge/_emerge/physics/microwave/adaptive_mesh.py,sha256=LrlDMaYIps0uPkTh5KUu1jHqxdqOfxxNLVw8UeqggUc,25190
59
+ emerge/_emerge/physics/microwave/microwave_3d.py,sha256=N06nZQ0XMhSU1z5lKrR6irJmkAlurG9Gg7J_DFzWLsI,51838
60
+ emerge/_emerge/physics/microwave/microwave_bc.py,sha256=hsz9LkO2UgiBGld79ovxgtnZ2vKQHcVfO6fU8rp3WDs,50696
60
61
  emerge/_emerge/physics/microwave/microwave_data.py,sha256=eSWBrFmdYnOmCchf31jORwCriq2Ix1piGoGYHsvcF38,50551
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
@@ -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=nsiElERHYZPWX0uHwNoaocvfGtVTMsBdaO3hjTVDPvk,45429
81
+ emerge/_emerge/plot/pyvista/display.py,sha256=PASOzQd_L0_uEbWcdN42draaXK_LpveW0cS6-1obtGk,45740
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=Iszyy7RuuCa_FgfROEyTSSWbmR2LzMUkEcR8klzIKOQ,9915
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.0.7.dist-info/METADATA,sha256=tv3bFqll_HiWD6MDGr2K5tUC4Vy97vCO84EKQ2iGkQU,3400
93
- emerge-1.0.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
94
- emerge-1.0.7.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
95
- emerge-1.0.7.dist-info/licenses/LICENSE,sha256=VOCXWddrjMN5j7TvnSAOh1Dx7jkugdwq9Lqhycf5inc,17852
96
- emerge-1.0.7.dist-info/RECORD,,
93
+ emerge-1.1.0.dist-info/METADATA,sha256=o2joAvpVrU6n6s2UXT27dEata6nv95RlAiKsShieUh4,3614
94
+ emerge-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
95
+ emerge-1.1.0.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
96
+ emerge-1.1.0.dist-info/licenses/LICENSE,sha256=VOCXWddrjMN5j7TvnSAOh1Dx7jkugdwq9Lqhycf5inc,17852
97
+ emerge-1.1.0.dist-info/RECORD,,
File without changes