emerge 1.1.0__py3-none-any.whl → 1.2.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.
- emerge/__init__.py +2 -1
- 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 +34 -16
- emerge/_emerge/geo/shapes.py +1 -0
- emerge/_emerge/geo/step.py +177 -41
- emerge/_emerge/geometry.py +166 -19
- emerge/_emerge/material.py +2 -0
- emerge/_emerge/mesh3d.py +1 -3
- emerge/_emerge/mesher.py +33 -9
- emerge/_emerge/mth/common_functions.py +1 -1
- emerge/_emerge/mth/optimized.py +2 -2
- emerge/_emerge/physics/microwave/adaptive_mesh.py +451 -100
- emerge/_emerge/physics/microwave/assembly/assembler.py +9 -1
- emerge/_emerge/physics/microwave/microwave_3d.py +2 -2
- emerge/_emerge/physics/microwave/microwave_bc.py +1 -0
- emerge/_emerge/physics/microwave/microwave_data.py +95 -5
- emerge/_emerge/plot/pyvista/display.py +42 -15
- emerge/_emerge/plot/simple_plots.py +116 -4
- emerge/_emerge/selection.py +17 -2
- emerge/_emerge/simmodel.py +111 -49
- emerge/_emerge/solve_interfaces/cudss_interface.py +1 -1
- emerge/_emerge/solver.py +3 -3
- emerge/plot.py +1 -1
- {emerge-1.1.0.dist-info → emerge-1.2.0.dist-info}/METADATA +1 -1
- {emerge-1.1.0.dist-info → emerge-1.2.0.dist-info}/RECORD +31 -31
- {emerge-1.1.0.dist-info → emerge-1.2.0.dist-info}/WHEEL +0 -0
- {emerge-1.1.0.dist-info → emerge-1.2.0.dist-info}/entry_points.txt +0 -0
- {emerge-1.1.0.dist-info → emerge-1.2.0.dist-info}/licenses/LICENSE +0 -0
emerge/_emerge/simmodel.py
CHANGED
|
@@ -317,12 +317,14 @@ class Simulation:
|
|
|
317
317
|
|
|
318
318
|
def check_version(self, target_version: str, *, log: bool = False) -> None:
|
|
319
319
|
"""
|
|
320
|
-
Ensure the script targets an EMerge
|
|
320
|
+
Ensure the script targets an EMerge major.minor compatible with the current runtime.
|
|
321
|
+
|
|
322
|
+
Only major.minor is enforced. Patch differences are ignored.
|
|
321
323
|
|
|
322
324
|
Parameters
|
|
323
325
|
----------
|
|
324
326
|
target_version : str
|
|
325
|
-
The EMerge version this script was written for (e.g. "1.4.0").
|
|
327
|
+
The EMerge version this script was written for (e.g. "1.4.0" or "1.4").
|
|
326
328
|
log : bool, optional
|
|
327
329
|
If True and a `logger` is available, emit a single WARNING with the same
|
|
328
330
|
message as the exception. Defaults to False.
|
|
@@ -330,40 +332,50 @@ class Simulation:
|
|
|
330
332
|
Raises
|
|
331
333
|
------
|
|
332
334
|
VersionError
|
|
333
|
-
If the script's target
|
|
335
|
+
If the script's target major.minor differs from the running EMerge major.minor.
|
|
334
336
|
"""
|
|
335
337
|
try:
|
|
336
338
|
from packaging.version import Version as _V
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
339
|
+
def _mm(v: str):
|
|
340
|
+
pv = _V(v)
|
|
341
|
+
return (pv.major, pv.minor)
|
|
342
|
+
script_mm = _mm(target_version)
|
|
343
|
+
runtime_mm = _mm(__version__)
|
|
344
|
+
newer = script_mm > runtime_mm
|
|
345
|
+
older = script_mm < runtime_mm
|
|
341
346
|
except Exception:
|
|
342
|
-
def
|
|
347
|
+
def _parse_mm(v: str):
|
|
348
|
+
parts = v.split(".")
|
|
343
349
|
try:
|
|
344
|
-
|
|
350
|
+
major = int(parts[0])
|
|
351
|
+
minor = int(parts[1]) if len(parts) > 1 else 0
|
|
352
|
+
return (major, minor)
|
|
345
353
|
except Exception:
|
|
346
|
-
#
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
354
|
+
# Fallback: compare as strings to avoid crashing the check itself
|
|
355
|
+
major = parts[0] if parts else "0"
|
|
356
|
+
minor = parts[1] if len(parts) > 1 else "0"
|
|
357
|
+
return (str(major), str(minor))
|
|
358
|
+
script_mm = _parse_mm(target_version)
|
|
359
|
+
runtime_mm = _parse_mm(__version__)
|
|
360
|
+
newer = script_mm > runtime_mm
|
|
361
|
+
older = script_mm < runtime_mm
|
|
352
362
|
|
|
353
363
|
if not newer and not older:
|
|
354
|
-
return #
|
|
364
|
+
return # major.minor match
|
|
355
365
|
|
|
356
366
|
if newer:
|
|
357
367
|
msg = (
|
|
358
|
-
f"Script targets EMerge {target_version}
|
|
359
|
-
"
|
|
368
|
+
f"Script targets EMerge {target_version} (major.minor {script_mm[0]}.{script_mm[1]}), "
|
|
369
|
+
f"but runtime is {__version__} (major.minor {runtime_mm[0]}.{runtime_mm[1]}). "
|
|
370
|
+
"The script may rely on features added after your installed major.minor. "
|
|
360
371
|
"Recommended: upgrade EMerge (`pip install --upgrade emerge`). "
|
|
361
372
|
"If you know the script is compatible, you may remove this check."
|
|
362
373
|
)
|
|
363
374
|
else: # older
|
|
364
375
|
msg = (
|
|
365
|
-
f"Script targets EMerge {target_version}
|
|
366
|
-
"
|
|
376
|
+
f"Script targets EMerge {target_version} (major.minor {script_mm[0]}.{script_mm[1]}), "
|
|
377
|
+
f"but runtime is {__version__} (major.minor {runtime_mm[0]}.{runtime_mm[1]}). "
|
|
378
|
+
"APIs may have changed since the targeted major.minor. "
|
|
367
379
|
"Recommended: update the script for the current EMerge, or run a matching older release. "
|
|
368
380
|
"If you know the script is compatible, you may remove this check."
|
|
369
381
|
)
|
|
@@ -458,7 +470,8 @@ class Simulation:
|
|
|
458
470
|
plot_mesh: bool = False,
|
|
459
471
|
volume_mesh: bool = True,
|
|
460
472
|
opacity: float | None = None,
|
|
461
|
-
labels: bool = False
|
|
473
|
+
labels: bool = False,
|
|
474
|
+
face_labels: bool = False) -> None:
|
|
462
475
|
"""View the current geometry in either the BaseDisplay object (PVDisplay only) or
|
|
463
476
|
the GMSH viewer.
|
|
464
477
|
|
|
@@ -476,8 +489,13 @@ class Simulation:
|
|
|
476
489
|
return
|
|
477
490
|
for geo in self.state.current_geo_state:
|
|
478
491
|
self.display.add_object(geo, mesh=plot_mesh, opacity=opacity, volume_mesh=volume_mesh, label=labels)
|
|
492
|
+
|
|
493
|
+
if face_labels and geo.dim==3:
|
|
494
|
+
for face_name in geo._face_pointers.keys():
|
|
495
|
+
self.display.add_object(geo.face(face_name), color='yellow', opacity=0.1, label=face_name)
|
|
479
496
|
if selections:
|
|
480
|
-
[self.display.add_object(sel, color='red', opacity=0.6, label=
|
|
497
|
+
[self.display.add_object(sel, color='red', opacity=0.6, label=sel.name) for sel in selections]
|
|
498
|
+
|
|
481
499
|
self.display.show()
|
|
482
500
|
|
|
483
501
|
return None
|
|
@@ -688,15 +706,13 @@ class SimulationBeta(Simulation):
|
|
|
688
706
|
|
|
689
707
|
|
|
690
708
|
def __post_init__(self):
|
|
691
|
-
|
|
692
|
-
self.mesher.set_algorithm(Algorithm3D.HXT)
|
|
693
|
-
logger.debug('Setting mesh algorithm to HXT')
|
|
709
|
+
pass
|
|
710
|
+
#self.mesher.set_algorithm(Algorithm3D.HXT)
|
|
711
|
+
#logger.debug('Setting mesh algorithm to HXT')
|
|
694
712
|
|
|
695
713
|
|
|
696
714
|
def _reset_mesh(self):
|
|
697
|
-
#gmsh.clear()
|
|
698
715
|
gmsh.model.mesh.clear()
|
|
699
|
-
|
|
700
716
|
self.mw.reset(_reset_bc = False)
|
|
701
717
|
self.state.reset_mesh()
|
|
702
718
|
|
|
@@ -706,10 +722,11 @@ class SimulationBeta(Simulation):
|
|
|
706
722
|
convergence: float = 0.02,
|
|
707
723
|
magnitude_convergence: float = 2.0,
|
|
708
724
|
phase_convergence: float = 180,
|
|
709
|
-
refinement_ratio: float = 0.
|
|
710
|
-
growth_rate: float =
|
|
725
|
+
refinement_ratio: float = 0.6,
|
|
726
|
+
growth_rate: float = 2,
|
|
711
727
|
minimum_refinement_percentage: float = 20.0,
|
|
712
|
-
error_field_inclusion_percentage: float =
|
|
728
|
+
error_field_inclusion_percentage: float = 60.0,
|
|
729
|
+
minimum_steps: int = 1,
|
|
713
730
|
frequency: float = None,
|
|
714
731
|
show_mesh: bool = False) -> SimulationDataset:
|
|
715
732
|
""" A beta-version of adaptive mesh refinement.
|
|
@@ -729,6 +746,7 @@ class SimulationBeta(Simulation):
|
|
|
729
746
|
growth_rate (float, optional): The mesh size growth rate. Defaults to 3.0.
|
|
730
747
|
minimum_refinement_percentage (float, optional): The minimum mesh size increase . Defaults to 15.0.
|
|
731
748
|
error_field_inclusion_percentage (float, optional): A percentage of tet elements to be included for refinement. Defaults to 5.0.
|
|
749
|
+
minimum_steps (int, optional): The minimum number of adaptive steps to execute. Defaults to 1.
|
|
732
750
|
frequency (float, optional): The refinement frequency. Defaults to None.
|
|
733
751
|
show_mesh (bool, optional): If the intermediate meshes should be shown (freezes simulation). Defaults to False
|
|
734
752
|
|
|
@@ -737,7 +755,6 @@ class SimulationBeta(Simulation):
|
|
|
737
755
|
"""
|
|
738
756
|
from .physics.microwave.adaptive_mesh import select_refinement_indices, reduce_point_set, compute_convergence
|
|
739
757
|
|
|
740
|
-
|
|
741
758
|
max_freq = np.max(self.mw.frequencies)
|
|
742
759
|
|
|
743
760
|
if frequency is not None:
|
|
@@ -752,18 +769,27 @@ class SimulationBeta(Simulation):
|
|
|
752
769
|
|
|
753
770
|
self.state.stash()
|
|
754
771
|
|
|
772
|
+
# Coefficients for the refinement ratio calculation.
|
|
773
|
+
a0 = 0.26
|
|
774
|
+
c0 = 0.75
|
|
775
|
+
x0 = 12
|
|
776
|
+
q0 = (1-a0)*2/np.pi
|
|
777
|
+
b0 = np.tan((c0-a0)/q0)/x0
|
|
778
|
+
q0 = (0.8-a0)*2/np.pi
|
|
779
|
+
|
|
780
|
+
|
|
755
781
|
for step in range(1,max_steps+1):
|
|
756
782
|
|
|
757
783
|
self.data.sim.new(iter_step=step)
|
|
758
784
|
|
|
759
|
-
data = self.mw._run_adaptive_mesh(step, max_freq)
|
|
785
|
+
data, solve_ids = self.mw._run_adaptive_mesh(step, max_freq)
|
|
760
786
|
|
|
761
787
|
field = data.field[-1]
|
|
762
788
|
|
|
763
789
|
Smat_new = data.scalar[-1].Sp
|
|
764
790
|
S_matrices.append(Smat_new)
|
|
765
791
|
|
|
766
|
-
if step >
|
|
792
|
+
if step > minimum_steps:
|
|
767
793
|
S0 = S_matrices[-2]
|
|
768
794
|
S1 = S_matrices[-1]
|
|
769
795
|
conv_complex, conv_mag, conv_phase = compute_convergence(S0, S1)
|
|
@@ -774,52 +800,88 @@ class SimulationBeta(Simulation):
|
|
|
774
800
|
else:
|
|
775
801
|
passed = 0
|
|
776
802
|
|
|
777
|
-
if passed >= min_refined_passes:
|
|
778
|
-
logger.info('Adaptive mesh refinement successfull')
|
|
803
|
+
if passed >= min_refined_passes and step > minimum_steps:
|
|
804
|
+
logger.info(f'Adaptive mesh refinement successfull with {self.mesh.n_tets} tetrahedra.')
|
|
779
805
|
break
|
|
780
806
|
|
|
781
|
-
error, lengths = field._solution_quality()
|
|
807
|
+
error, lengths = field._solution_quality(solve_ids)
|
|
782
808
|
|
|
783
809
|
idx = select_refinement_indices(error, error_field_inclusion_percentage/100)
|
|
784
810
|
idx = idx[::-1]
|
|
785
811
|
|
|
786
|
-
|
|
812
|
+
npts = idx.shape[0]
|
|
813
|
+
np_percentage = npts/self.mesh.n_tets * 100
|
|
814
|
+
|
|
815
|
+
refinement_ratio = (a0 + np.arctan(b0*np_percentage)*q0)
|
|
816
|
+
|
|
817
|
+
logger.info(f'Adding {npts} refinement points with a ratio: {refinement_ratio}')
|
|
818
|
+
|
|
819
|
+
# tet_nodes = defaultdict(lambda: 1000.)
|
|
820
|
+
# for itet in idx:
|
|
821
|
+
# for inode in self.mesh.tets[:,itet]:
|
|
822
|
+
# tet_nodes[inode] = min(tet_nodes[inode], lengths[itet])
|
|
823
|
+
|
|
824
|
+
# N = len(tet_nodes)
|
|
825
|
+
# coords = np.zeros((3,N), dtype=np.float64)
|
|
826
|
+
# sizes = np.zeros((N,), dtype=np.float64)
|
|
827
|
+
# for i, (index, size) in enumerate(tet_nodes.items()):
|
|
828
|
+
# coords[:,i] = self.mesh.nodes[:,index]
|
|
829
|
+
# sizes[i] = size
|
|
830
|
+
|
|
831
|
+
# self.mesher.add_refinement_points(coords, sizes, refinement_ratio*np.ones((N,)))
|
|
832
|
+
|
|
833
|
+
self.mesher.add_refinement_points(self.mw.mesh.centers[:,idx], lengths[idx], refinement_ratio*np.ones_like(lengths[idx]))
|
|
787
834
|
|
|
788
835
|
logger.debug(f'Pass {step}: Adding {len(idx)} new refinement points.')
|
|
789
836
|
|
|
790
837
|
new_ids = reduce_point_set(self.mesher._amr_coords, growth_rate, self.mesher._amr_sizes, refinement_ratio, 0.20)
|
|
791
838
|
|
|
792
|
-
|
|
839
|
+
nremoved = self.mesher._amr_coords.shape[1] - len(new_ids)
|
|
840
|
+
if nremoved > 0:
|
|
841
|
+
logger.info(f'Cleanup of step {step}: Removing {nremoved} points.')
|
|
793
842
|
|
|
794
843
|
self.mesher._amr_coords = self.mesher._amr_coords[:,new_ids]
|
|
795
844
|
self.mesher._amr_sizes = self.mesher._amr_sizes[new_ids]
|
|
845
|
+
self.mesher._amr_ratios = self.mesher._amr_ratios[new_ids]
|
|
846
|
+
self.mesher._amr_new = self.mesher._amr_new[new_ids]
|
|
796
847
|
|
|
848
|
+
logger.debug(f'Initial refinement ratio: {refinement_ratio}')
|
|
797
849
|
|
|
850
|
+
over = False
|
|
851
|
+
under = False
|
|
852
|
+
throttle = 1.0
|
|
853
|
+
|
|
854
|
+
# Mesh refinement loop. Only escapes if the mesh refined a certain set percentage.
|
|
798
855
|
while True:
|
|
799
856
|
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
logger.debug(f'Pass {step}: Adding {len(idx)} refinement points.')
|
|
803
|
-
|
|
804
|
-
self.mesher.set_refinement_function(refinement_ratio, growth_rate, 1.0)
|
|
857
|
+
if over and under:
|
|
858
|
+
throttle *= 2
|
|
805
859
|
|
|
860
|
+
self._reset_mesh()
|
|
861
|
+
logger.debug(f'Pass {step}')
|
|
862
|
+
self.mesher.set_refinement_function(growth_rate, 2.0)
|
|
806
863
|
self.generate_mesh(True)
|
|
807
|
-
|
|
808
864
|
percentage = (self.mesh.n_tets/last_n_tets - 1) * 100
|
|
809
865
|
logger.info(f'Pass {step}: New mesh has {self.mesh.n_tets} (+{percentage:.1f}%) tetrahedra.')
|
|
810
866
|
|
|
811
867
|
if percentage < minimum_refinement_percentage:
|
|
868
|
+
F = (2*minimum_refinement_percentage-percentage)/(throttle*minimum_refinement_percentage)
|
|
812
869
|
logger.debug('Not enough mesh refinement, decreasing mesh size constraint.')
|
|
813
|
-
refinement_ratio =
|
|
870
|
+
refinement_ratio = self.mesher.refine_finer(F)
|
|
814
871
|
logger.debug(f'New refinement ratio: {refinement_ratio}')
|
|
872
|
+
under=True
|
|
815
873
|
continue
|
|
816
|
-
|
|
817
|
-
|
|
874
|
+
if percentage > (minimum_refinement_percentage*2):
|
|
875
|
+
F = (percentage - minimum_refinement_percentage)/(throttle*minimum_refinement_percentage)
|
|
818
876
|
logger.debug('Too much mesh refinement, decreasing mesh size constraint.')
|
|
819
|
-
refinement_ratio =
|
|
877
|
+
refinement_ratio = self.mesher.refine_coarser(F)
|
|
820
878
|
logger.debug(f'New refinement ratio: {refinement_ratio}')
|
|
879
|
+
over=True
|
|
880
|
+
continue
|
|
821
881
|
|
|
822
|
-
|
|
882
|
+
over = False
|
|
883
|
+
under = False
|
|
884
|
+
throttle = 1.0
|
|
823
885
|
last_n_tets = self.mesh.n_tets
|
|
824
886
|
break
|
|
825
887
|
|
|
@@ -91,7 +91,7 @@ class CuDSSInterface:
|
|
|
91
91
|
self._config = cudss.config_create()
|
|
92
92
|
self._data = cudss.data_create(self._handle)
|
|
93
93
|
|
|
94
|
-
self.MTYPE = cudss.MatrixType.
|
|
94
|
+
self.MTYPE = cudss.MatrixType.GENERAL
|
|
95
95
|
self.MVIEW = cudss.MatrixViewType.FULL
|
|
96
96
|
self.RALG = cudss.AlgType.ALG_DEFAULT
|
|
97
97
|
self.VTYPE = CudaDataType.CUDA_R_64F
|
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
|
|
@@ -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)]
|
emerge/plot.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
from ._emerge.plot.simple_plots import smith, plot_sp, plot, plot_ff, plot_ff_polar
|
|
1
|
+
from ._emerge.plot.simple_plots import smith, plot_sp, plot, plot_ff, plot_ff_polar, plot_vswr
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
emerge/__init__.py,sha256=
|
|
1
|
+
emerge/__init__.py,sha256=rKWaHi7SzRqoL7Jdp-vdGWY3OeXc-0drfgAUfJPaS8A,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
|
|
5
5
|
emerge/lib.py,sha256=VtlMP9yd1OSU_c3IQD75pZgO25Hf8fG6JyHf6IqRvcY,28642
|
|
6
|
-
emerge/plot.py,sha256=
|
|
6
|
+
emerge/plot.py,sha256=8yQpAgEZoaTR-2_aU2fF2jDM5YOJbRZ2stn9nP-Pcn8,94
|
|
7
7
|
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
19
|
emerge/_emerge/logsettings.py,sha256=S4aUkO2vhcssmYQIGOq0VkazMEX4TYJlCt0FZ74Mc8Y,5574
|
|
20
|
-
emerge/_emerge/material.py,sha256=
|
|
21
|
-
emerge/_emerge/mesh3d.py,sha256=
|
|
22
|
-
emerge/_emerge/mesher.py,sha256=
|
|
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=
|
|
25
|
+
emerge/_emerge/selection.py,sha256=bE7qHk08RryqHwsdqw2ABQviIsDjL0RmwpxT1NF9pr8,21899
|
|
26
26
|
emerge/_emerge/settings.py,sha256=4Mlo3T6UVGzhTB838833_dwvXYLGKNIEHQ4fr9hxHd8,5335
|
|
27
|
-
emerge/_emerge/simmodel.py,sha256=
|
|
27
|
+
emerge/_emerge/simmodel.py,sha256=QqAFHRolidk2PZhkJn3NLFvlU3opDNs5UVgnv68A0ZE,36086
|
|
28
28
|
emerge/_emerge/simstate.py,sha256=n_iOz3L9lZ0oD4CBb8cdHXOoaoyx96kcsFKwSQWVxlk,3630
|
|
29
29
|
emerge/_emerge/simulation_data.py,sha256=W8wTSTqGNZIwnpBuk08I7e4GEXXAbnfoYEWHnhzHvyM,14723
|
|
30
|
-
emerge/_emerge/solver.py,sha256=
|
|
30
|
+
emerge/_emerge/solver.py,sha256=ID387uKRYYZaEHOAwMCwt0esmdhmOn7VhH-2KD8tjtc,52993
|
|
31
31
|
emerge/_emerge/system.py,sha256=p4HNz7d_LMRNE9Gk75vVdFecDH2iN_groAM9u-yQTpk,1618
|
|
32
32
|
emerge/_emerge/elements/__init__.py,sha256=I3n9aic6lJW-oGeqTEZ-Fpxvyl2i-WqsHdnrM3v1oB8,799
|
|
33
33
|
emerge/_emerge/elements/femdata.py,sha256=ZSB7dICyU3GOWbxpuowBc-Khh2mpXa02ZfMkHwdDol4,8377
|
|
34
34
|
emerge/_emerge/elements/index_interp.py,sha256=X7WcXKC9Qg7UABvLbAktda7InRkOhm7qOU-Wnefflp4,3381
|
|
35
|
-
emerge/_emerge/elements/ned2_interp.py,sha256=
|
|
35
|
+
emerge/_emerge/elements/ned2_interp.py,sha256=vb311CDFl9QIYorwXzxaAWLM9nCKQHI7LKalH3ggbMk,30649
|
|
36
36
|
emerge/_emerge/elements/nedelec2.py,sha256=OssFCnPp7wkMBcUISGvTgT94jayfGOmX0x-RctIYSuI,6645
|
|
37
37
|
emerge/_emerge/elements/nedleg2.py,sha256=1SA6AvnbChhU2iodS1PVMUdbSn9wF2XKam12WTBDtsw,9049
|
|
38
|
-
emerge/_emerge/geo/__init__.py,sha256
|
|
38
|
+
emerge/_emerge/geo/__init__.py,sha256=-VkOxYgJT2dwudq5DMD-fZTxXVoh94Vd-CtroP8q3uY,1170
|
|
39
39
|
emerge/_emerge/geo/horn.py,sha256=tI-w-O0Fm_siMaVhKpZ_k5URLfZkqcbEpURX94fhKDs,4645
|
|
40
40
|
emerge/_emerge/geo/modeler.py,sha256=_PMz3lFSa7FmJHWdY-4U1Sqbed-Egy85S_AdjlCldC4,15572
|
|
41
|
-
emerge/_emerge/geo/operations.py,sha256=
|
|
42
|
-
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
|
|
43
43
|
emerge/_emerge/geo/pmlbox.py,sha256=gaIG_AoZNQnIyJ8C7x64U-Hw5dsmllWMiZDAH4iRoM0,8784
|
|
44
44
|
emerge/_emerge/geo/polybased.py,sha256=D_Ef4anrwV2RArEFrvWppZ_c7oN_Hm5h7ltMi2U3v2o,32891
|
|
45
|
-
emerge/_emerge/geo/shapes.py,sha256=
|
|
46
|
-
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
|
|
47
47
|
emerge/_emerge/geo/pcb_tools/calculator.py,sha256=VbMP2xC9i7OFwtqnnwfYgyJSEcJIjr2VIy_Ez1hYqlU,859
|
|
48
48
|
emerge/_emerge/geo/pcb_tools/dxf.py,sha256=Xv7iP_bB0f2Y46sxZloa5KYGyj5dtApXoR-kgL7KHZA,11744
|
|
49
49
|
emerge/_emerge/geo/pcb_tools/macro.py,sha256=0g-0anOFyxrEkFobiSu0cwWFRQ32xB8Az24mmwo0z6M,2992
|
|
50
50
|
emerge/_emerge/mth/_cache_check.py,sha256=mD65yXXRoSaiTa8nky27Ne8p_s5aTC_RqmLre0x1mio,1563
|
|
51
|
-
emerge/_emerge/mth/common_functions.py,sha256=
|
|
51
|
+
emerge/_emerge/mth/common_functions.py,sha256=Ux8JWJXMyNiY1wCXyClf-seWg1PyERe9HjFXx2bsIzY,2060
|
|
52
52
|
emerge/_emerge/mth/integrals.py,sha256=lL7KrHdyFGpboQyvf6W_4bZRZCrMbjd2e8GDHctL-B8,3572
|
|
53
|
-
emerge/_emerge/mth/optimized.py,sha256=
|
|
53
|
+
emerge/_emerge/mth/optimized.py,sha256=cm1AM9hKO4ReD3EySC5KAs6lO_o9iaTR4-ZXvUrVr8A,19082
|
|
54
54
|
emerge/_emerge/mth/pairing.py,sha256=i8bBvTeMmzgF0JdiDNJiTXxx913x4f10777pzD6FJo0,3535
|
|
55
55
|
emerge/_emerge/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
56
|
emerge/_emerge/physics/microwave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
57
|
emerge/_emerge/physics/microwave/adaptive_freq.py,sha256=aWhijhCVAbnuwkru-I1AaRdY20uyozf6OWRIh9r2ijg,9786
|
|
58
|
-
emerge/_emerge/physics/microwave/adaptive_mesh.py,sha256=
|
|
59
|
-
emerge/_emerge/physics/microwave/microwave_3d.py,sha256=
|
|
60
|
-
emerge/_emerge/physics/microwave/microwave_bc.py,sha256=
|
|
61
|
-
emerge/_emerge/physics/microwave/microwave_data.py,sha256=
|
|
58
|
+
emerge/_emerge/physics/microwave/adaptive_mesh.py,sha256=kBPLGaTl0ARGoDtEPmmC9oh3dAuoGmIaPNzCcqDGsJo,38312
|
|
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=zG-iAH_Kk_z58Oe-lpSh-GTNv6IYmFEv52qkPMNMN9Y,53923
|
|
62
62
|
emerge/_emerge/physics/microwave/periodic.py,sha256=wYSUgLFVtCLqSG3EDKoCDRU93iPUzBdXzVRdHTRmbpI,3000
|
|
63
63
|
emerge/_emerge/physics/microwave/port_functions.py,sha256=d-W1D-7P05MfXdOs7WlhPi_RqlSpC0HkYU6yl3GrxgE,2173
|
|
64
64
|
emerge/_emerge/physics/microwave/sc.py,sha256=WZvoPhmHkfEv619RhmN09sXDBV0ryTqybwErA8Rc7lU,4735
|
|
65
65
|
emerge/_emerge/physics/microwave/simjob.py,sha256=aCWCs7IXBfVBWWYhwyHvXSRHY3FOd3CK5ABcaFEsNnM,4927
|
|
66
66
|
emerge/_emerge/physics/microwave/sparam.py,sha256=1SXGyr1UsrPnCIi4ffwobM4pzgkj50y4LrWCr_J5IRY,4946
|
|
67
67
|
emerge/_emerge/physics/microwave/touchstone.py,sha256=pMcCOLWVqIKctcShcJxyaV-0rhRWXMSS1Jz14dVQEyY,5799
|
|
68
|
-
emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=
|
|
68
|
+
emerge/_emerge/physics/microwave/assembly/assembler.py,sha256=FQhPhdyR7xPyvwR_Gn42KCY2tV1eouqJolJJ9Z6z7C4,24234
|
|
69
69
|
emerge/_emerge/physics/microwave/assembly/curlcurl.py,sha256=4CwMSUua8pvbp39gq2e3AxwVHOIVuPdr53qQM2BigQo,19688
|
|
70
70
|
emerge/_emerge/physics/microwave/assembly/generalized_eigen.py,sha256=7jNU_hWd7q-ni53wmlhB5kmyJxp2xsx_WyBXZ6hPwo0,16907
|
|
71
71
|
emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py,sha256=tGf9EOzmp-dqtTodwYzcswuT_eLeZRtgdAZvgPz9QJo,17340
|
|
@@ -74,24 +74,24 @@ emerge/_emerge/physics/microwave/assembly/robin_abc_order2.py,sha256=HRGe6ezRVfc
|
|
|
74
74
|
emerge/_emerge/physics/microwave/assembly/robinbc.py,sha256=uaaxlw7Vh-6ni5Gaz07WzpUsRvZ0hAru9E2wnNPp_fY,17614
|
|
75
75
|
emerge/_emerge/plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
76
|
emerge/_emerge/plot/display.py,sha256=TQLlKb-LkaG5ZOSLfxp9KXPlZPRFTxNj1LhVQ-Lp1-s,18476
|
|
77
|
-
emerge/_emerge/plot/simple_plots.py,sha256=
|
|
77
|
+
emerge/_emerge/plot/simple_plots.py,sha256=OkZMESJdj9a9L9nmnI4AtnJc-si39422INcerHKXt9k,29784
|
|
78
78
|
emerge/_emerge/plot/matplotlib/mpldisplay.py,sha256=e8V6EhGdCW7nRkSFvjHCcRO5uR-FcD0yHQ1nxPQCbp4,8674
|
|
79
79
|
emerge/_emerge/plot/pyvista/__init__.py,sha256=CPclatEu6mFnJZzCQk09g6T6Fh20WTbiLAJGSwAnPXU,30
|
|
80
80
|
emerge/_emerge/plot/pyvista/cmap_maker.py,sha256=_GVXYdtXpJwAO9O-Iekjzn6YcR0MVT8LNh12nqvF2IA,2498
|
|
81
|
-
emerge/_emerge/plot/pyvista/display.py,sha256=
|
|
81
|
+
emerge/_emerge/plot/pyvista/display.py,sha256=Iz5JnZtcmH4voImUCNRVW6Y3LWKdQ96uIgwLFHun3vo,46411
|
|
82
82
|
emerge/_emerge/plot/pyvista/display_settings.py,sha256=gV5hjRGEAl3oQeBPobas6b6JzYfMFrXIGtVSaeml4N0,1074
|
|
83
83
|
emerge/_emerge/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
84
|
emerge/_emerge/projects/_gen_base.txt,sha256=DqQz36PZg6v1ovQjHvPjd0t4AIbmikZdb9dmrNYsK3w,598
|
|
85
85
|
emerge/_emerge/projects/_load_base.txt,sha256=bHsZ4okxa9uu8qP4UOxSAeIQzuwpRtN0i71rg8wuqMA,473
|
|
86
86
|
emerge/_emerge/projects/generate_project.py,sha256=TNw-0SpLc82MBq0bd9hB_yqvBZCgmuPonCBsHTp91uk,1450
|
|
87
|
-
emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=
|
|
87
|
+
emerge/_emerge/solve_interfaces/cudss_interface.py,sha256=ETvbaFydZ-yMWJAFl7wzQM02fh0BL1qGY9YxQaRpdhc,10597
|
|
88
88
|
emerge/_emerge/solve_interfaces/pardiso_interface.py,sha256=iVFxToMmIzhj3hcAP-O_MDHKz82ePFIHY1us11kzUBU,15305
|
|
89
89
|
emerge/beta/dxf.py,sha256=Bw4lVk0TquOgCxTZV23BZN7PrgqxBrMZxbHV1waC5U0,50
|
|
90
90
|
emerge/materials/__init__.py,sha256=Z9tu3m_nqj6F9I-FwoVoN0vCTYUlFesH3KxJ38wkZck,19
|
|
91
91
|
emerge/materials/isola.py,sha256=kSDxHJZVn2CcanoUjlwRVKIPvadRbBybURTdIHWx728,18660
|
|
92
92
|
emerge/materials/rogers.py,sha256=4u6ma_XQdXGKWE3WsFkaMTamCQNo9kTYSTU8S1gCAYU,3388
|
|
93
|
-
emerge-1.
|
|
94
|
-
emerge-1.
|
|
95
|
-
emerge-1.
|
|
96
|
-
emerge-1.
|
|
97
|
-
emerge-1.
|
|
93
|
+
emerge-1.2.0.dist-info/METADATA,sha256=Er2aZJ0A9j8xxNyKnWwhouNSjSUjMJ_Te08kPIxXWaQ,3614
|
|
94
|
+
emerge-1.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
95
|
+
emerge-1.2.0.dist-info/entry_points.txt,sha256=8rFvAXticpKg4OTC8JEvAksnduW72KIEskCGG9XnFf8,43
|
|
96
|
+
emerge-1.2.0.dist-info/licenses/LICENSE,sha256=VOCXWddrjMN5j7TvnSAOh1Dx7jkugdwq9Lqhycf5inc,17852
|
|
97
|
+
emerge-1.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|