emerge 1.0.2__tar.gz → 1.0.3__tar.gz
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-1.0.2 → emerge-1.0.3}/.bumpversion.toml +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/PKG-INFO +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/emerge/__init__.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_bc.py +9 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/display.py +10 -3
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solver.py +15 -19
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo10_sgh.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo11_lumped_element_filter.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo12_mode_alignment.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo13_helix_antenna.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo14_boundary_selection.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo1_stepped_imp_filter.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo2_combline_filter.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo3_coupled_line_filter.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo4_patch_antenna.py +3 -2
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo5_revolve.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo6_striplines_with_vias.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo7_periodic_cells.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo8_waveguide_bpf_synthesis.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/examples/demo9_dielectric_resonator.py +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/pyproject.toml +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/uv.lock +1 -1
- {emerge-1.0.2 → emerge-1.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/.gitignore +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/.python-version +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/LICENSE +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/README.md +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/THIRD_PARTY_LICENSES.md +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/UMFPACK_Install_windows.md +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/UMFPACK_installer_windows.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/__main__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/bc.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/cacherun.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/const.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/coord.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/cs.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/dataset.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/femdata.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/index_interp.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/ned2_interp.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/nedelec2.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/nedleg2.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/horn.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/modeler.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/operations.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/calculator.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/dxf.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/macro.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pmlbox.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/polybased.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/shapes.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/step.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo2d.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geometry.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/howto.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/logsettings.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/material.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mesh3d.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mesher.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/_cache_check.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/common_functions.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/integrals.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/optimized.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/pairing.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/periodic.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/adaptive_freq.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/assembler.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/curlcurl.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/periodicbc.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/robin_abc_order2.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/robinbc.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_3d.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_data.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/periodic.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/port_functions.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/sc.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/simjob.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/sparam.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/touchstone.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/display.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/matplotlib/mpldisplay.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/display_settings.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/simple_plots.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/_gen_base.txt +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/_load_base.txt +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/generate_project.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/selection.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/settings.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/simmodel.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/simulation_data.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solve_interfaces/cudss_interface.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solve_interfaces/pardiso_interface.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/system.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/beta/dxf.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/cli.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/ext.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/lib.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/__init__.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/isola.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/rogers.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/plot.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/emerge/pyvista.py +0 -0
- {emerge-1.0.2 → emerge-1.0.3}/src/__init__.py +0 -0
|
@@ -96,6 +96,15 @@ class MWBoundaryConditionSet(BoundaryConditionSet):
|
|
|
96
96
|
self._cell._ports.append(port)
|
|
97
97
|
return port
|
|
98
98
|
|
|
99
|
+
# Checks
|
|
100
|
+
def _is_excited(self) -> bool:
|
|
101
|
+
for bc in self.boundary_conditions:
|
|
102
|
+
if not isinstance(bc, RobinBC):
|
|
103
|
+
continue
|
|
104
|
+
if bc._include_force:
|
|
105
|
+
return True
|
|
106
|
+
|
|
107
|
+
return False
|
|
99
108
|
|
|
100
109
|
############################################################
|
|
101
110
|
# BOUNDARY CONDITIONS #
|
|
@@ -213,11 +213,13 @@ class _AnimObject:
|
|
|
213
213
|
field: np.ndarray,
|
|
214
214
|
T: Callable,
|
|
215
215
|
grid: pv.Grid,
|
|
216
|
+
filtered_grid: pv.Grid,
|
|
216
217
|
actor: pv.Actor,
|
|
217
218
|
on_update: Callable):
|
|
218
219
|
self.field: np.ndarray = field
|
|
219
220
|
self.T: Callable = T
|
|
220
221
|
self.grid: pv.Grid = grid
|
|
222
|
+
self.fgrid: pv.Grid = filtered_grid
|
|
221
223
|
self.actor: pv.Actor = actor
|
|
222
224
|
self.on_update: Callable = on_update
|
|
223
225
|
|
|
@@ -611,7 +613,8 @@ class PVDisplay(BaseDisplay):
|
|
|
611
613
|
|
|
612
614
|
grid = pv.StructuredGrid(x,y,z)
|
|
613
615
|
field_flat = field.flatten(order='F')
|
|
614
|
-
|
|
616
|
+
|
|
617
|
+
|
|
615
618
|
|
|
616
619
|
if scale=='log':
|
|
617
620
|
T = lambda x: np.log10(np.abs(x+1e-12))
|
|
@@ -626,10 +629,12 @@ class PVDisplay(BaseDisplay):
|
|
|
626
629
|
else:
|
|
627
630
|
name = _fieldname
|
|
628
631
|
self._ctr += 1
|
|
632
|
+
|
|
629
633
|
grid[name] = static_field
|
|
630
634
|
|
|
631
635
|
grid_no_nan = grid.threshold(scalars=name)
|
|
632
|
-
|
|
636
|
+
|
|
637
|
+
|
|
633
638
|
# Determine color limits
|
|
634
639
|
if clim is None:
|
|
635
640
|
fmin = np.nanmin(static_field)
|
|
@@ -647,7 +652,9 @@ class PVDisplay(BaseDisplay):
|
|
|
647
652
|
def on_update(obj: _AnimObject, phi: complex):
|
|
648
653
|
field_anim = obj.T(np.real(obj.field * phi))
|
|
649
654
|
obj.grid[name] = field_anim
|
|
650
|
-
|
|
655
|
+
obj.fgrid[name] = obj.grid.threshold(scalars=name)[name]
|
|
656
|
+
#obj.fgrid replace with thresholded scalar data.
|
|
657
|
+
self._objs.append(_AnimObject(field_flat, T, grid, grid_no_nan, actor, on_update))
|
|
651
658
|
|
|
652
659
|
|
|
653
660
|
def add_title(self, title: str) -> None:
|
|
@@ -29,10 +29,6 @@ import platform
|
|
|
29
29
|
import time
|
|
30
30
|
from typing import Literal, Callable
|
|
31
31
|
from enum import Enum
|
|
32
|
-
import importlib.util
|
|
33
|
-
|
|
34
|
-
def module_exists(name: str) -> bool:
|
|
35
|
-
return importlib.util.find_spec(name) is not None
|
|
36
32
|
|
|
37
33
|
_PARDISO_AVAILABLE = False
|
|
38
34
|
_UMFPACK_AVAILABLE = False
|
|
@@ -56,26 +52,26 @@ if 'arm' not in platform.processor():
|
|
|
56
52
|
# UMFPACK #
|
|
57
53
|
############################################################
|
|
58
54
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
|
|
56
|
+
try:
|
|
57
|
+
import scikits.umfpack as um # type: ignore
|
|
58
|
+
_UMFPACK_AVAILABLE = True
|
|
59
|
+
except ModuleNotFoundError:
|
|
60
|
+
logger.debug('UMFPACK not found, defaulting to SuperLU')
|
|
65
61
|
|
|
66
62
|
############################################################
|
|
67
63
|
# CUDSS #
|
|
68
64
|
############################################################
|
|
69
65
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
66
|
+
|
|
67
|
+
try:
|
|
68
|
+
from .solve_interfaces.cudss_interface import CuDSSInterface
|
|
69
|
+
_CUDSS_AVAILABLE = True
|
|
70
|
+
except ModuleNotFoundError:
|
|
71
|
+
pass
|
|
72
|
+
except ImportError as e:
|
|
73
|
+
logger.error('Error while importing CuDSS dependencies:')
|
|
74
|
+
logger.exception(e)
|
|
79
75
|
|
|
80
76
|
############################################################
|
|
81
77
|
# SOLVE REPORT #
|
|
@@ -33,7 +33,7 @@ dx = 2 * mm # distance from horn exit to PML start
|
|
|
33
33
|
|
|
34
34
|
# Create simulation object
|
|
35
35
|
m = em.Simulation('HornAntenna')
|
|
36
|
-
m.check_version("1.0.
|
|
36
|
+
m.check_version("1.0.3") # Checks version compatibility.
|
|
37
37
|
# --- Coordinate system for horn geometry -------------------------------
|
|
38
38
|
hornCS = em.CS(em.YAX, em.ZAX, em.XAX)
|
|
39
39
|
|
|
@@ -29,7 +29,7 @@ def Cf(C):
|
|
|
29
29
|
pack = '0603' # package footprint for lumped components
|
|
30
30
|
# Create simulation and PCB layouter with substrate thickness and material
|
|
31
31
|
m = em.Simulation('LumpedFilter')
|
|
32
|
-
m.check_version("1.0.
|
|
32
|
+
m.check_version("1.0.3") # Checks version compatibility.
|
|
33
33
|
|
|
34
34
|
th = 0.5 # substrate thickness (meters)
|
|
35
35
|
Hair = 2.0
|
|
@@ -12,7 +12,7 @@ direction (+Z vs -Z). In EMerge we can alignm modes using the .align_mode() meth
|
|
|
12
12
|
|
|
13
13
|
# First we define our simulation
|
|
14
14
|
m = em.Simulation('aligntest')
|
|
15
|
-
m.check_version("1.0.
|
|
15
|
+
m.check_version("1.0.3") # Checks version compatibility.
|
|
16
16
|
|
|
17
17
|
# We create a cyllindrical waveguide in the Y-axis.
|
|
18
18
|
cyl = em.geo.Cylinder(0.012, 0.05, em.YAX.construct_cs())
|
|
@@ -25,7 +25,7 @@ porth = 2*mm # vertical height of the feed extrusion
|
|
|
25
25
|
|
|
26
26
|
# --- Simulation object -------------------------------------------------------
|
|
27
27
|
model = em.Simulation('helix')
|
|
28
|
-
model.check_version("1.0.
|
|
28
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
29
29
|
|
|
30
30
|
dfeed = 3*mm # straight feed length before the helix starts
|
|
31
31
|
|
|
@@ -37,7 +37,7 @@ wgb = 10.16*mm
|
|
|
37
37
|
L = 50*mm
|
|
38
38
|
|
|
39
39
|
model = em.Simulation('Test Mode')
|
|
40
|
-
model.check_version("1.0.
|
|
40
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
41
41
|
|
|
42
42
|
# first lets define a WR90 waveguide
|
|
43
43
|
wg_box = em.geo.Box(L, wga, wgb, position=(-L, -wga/2, -wgb/2))
|
|
@@ -28,7 +28,7 @@ pcbmat = em.Material(er=er, color="#217627", opacity=0.2)
|
|
|
28
28
|
# We start by creating our simulation object.
|
|
29
29
|
|
|
30
30
|
m = em.Simulation('Demo1_SIF')
|
|
31
|
-
m.check_version("1.0.
|
|
31
|
+
m.check_version("1.0.3") # Checks version compatibility.
|
|
32
32
|
# To accomodate PCB routing we make use of the PCBLayouter class. To use it we need to
|
|
33
33
|
# supply it with a thickness, the desired air-box height, the units at which we supply
|
|
34
34
|
# the dimensions and the PCB material.
|
|
@@ -43,7 +43,7 @@ lfeed = 100*mil
|
|
|
43
43
|
|
|
44
44
|
# A usual we start our simulation file
|
|
45
45
|
model = em.Simulation('Combline_DEMO')
|
|
46
|
-
model.check_version("1.0.
|
|
46
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
47
47
|
|
|
48
48
|
# The filter consists of quarter lamba cylindrical pins inside an airbox.
|
|
49
49
|
# First we create the airbox
|
|
@@ -38,7 +38,7 @@ extra = 100 # extra margin (mil)
|
|
|
38
38
|
|
|
39
39
|
# --- Simulation setup ----------------------------------------------------
|
|
40
40
|
model = em.Simulation('Demo3')
|
|
41
|
-
model.check_version("1.0.
|
|
41
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
42
42
|
# --- Material and layouter -----------------------------------------------
|
|
43
43
|
mat = em.Material(er=3.55, color="#488343", opacity=0.4)
|
|
44
44
|
|
|
@@ -34,7 +34,7 @@ f2 = 1.60e9 # stop frequency
|
|
|
34
34
|
# --- Create simulation object -------------------------------------------
|
|
35
35
|
model = em.Simulation('MyPatchAntenna')
|
|
36
36
|
|
|
37
|
-
model.check_version("1.0.
|
|
37
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
38
38
|
|
|
39
39
|
# --- Define geometry primitives -----------------------------------------
|
|
40
40
|
# Substrate block centered at origin in XY, thickness in Z (negative down)
|
|
@@ -81,7 +81,7 @@ dielectric.material = em.Material(3.38, color="#207020", opacity=0.9)
|
|
|
81
81
|
model.mw.resolution = 0.15
|
|
82
82
|
|
|
83
83
|
# Frequency sweep across the resonance
|
|
84
|
-
model.mw.set_frequency_range(f1, f2,
|
|
84
|
+
model.mw.set_frequency_range(f1, f2, 3)
|
|
85
85
|
|
|
86
86
|
# --- Combine geometry into simulation -----------------------------------
|
|
87
87
|
model.commit_geometry()
|
|
@@ -142,4 +142,5 @@ ff3d = data.field.find(freq=1.575e9).farfield_3d(boundary_selection)
|
|
|
142
142
|
surf = ff3d.surfplot('normE', rmax=60 * mm,
|
|
143
143
|
offset=(0, 0, 20 * mm))
|
|
144
144
|
model.display.add_surf(*surf, cmap='viridis', symmetrize=False)
|
|
145
|
+
model.display.animate().add_surf(*data.field.find(freq=1.575e9).cutplane(2*mm, x=0).scalar('Ey','real'), scale='symlog', cmap='coolwarm')
|
|
145
146
|
model.display.show()
|
|
@@ -29,7 +29,7 @@ airbox_width = 15*cm # airbox width
|
|
|
29
29
|
|
|
30
30
|
# --- Create simulation object -------------------------------------------
|
|
31
31
|
model = em.Simulation('ConicalHornAntenna')
|
|
32
|
-
model.check_version("1.0.
|
|
32
|
+
model.check_version("1.0.3") # Checks version compatibility
|
|
33
33
|
|
|
34
34
|
# --- Feed geometry -------------------------------------------------------
|
|
35
35
|
feed = em.geo.Cylinder(
|
|
@@ -14,7 +14,7 @@ mm = 0.001 # Define a millimeter
|
|
|
14
14
|
th = 1.0 # mm
|
|
15
15
|
|
|
16
16
|
model = em.Simulation('Stripline_test')
|
|
17
|
-
model.check_version("1.0.
|
|
17
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
18
18
|
|
|
19
19
|
# As usual we start by creating our layouter
|
|
20
20
|
ly = em.geo.PCB(th, mm, em.GCS, em.lib.DIEL_RO4350B, trace_material=em.lib.MET_COPPER)
|
|
@@ -32,7 +32,7 @@ fl = 25*mm # Feed length
|
|
|
32
32
|
|
|
33
33
|
# We start again by defining our simulation model
|
|
34
34
|
model = em.Simulation('Periodic')
|
|
35
|
-
model.check_version("1.0.
|
|
35
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
36
36
|
|
|
37
37
|
# Next we will create a PeriodicCell class (in our case a hexagonal cell). This class
|
|
38
38
|
# is simply meant to simplify our lives and improve the simulation setup flow.
|
|
@@ -80,7 +80,7 @@ wgaps = np.linspace(1*mm, 20*mm, 21)
|
|
|
80
80
|
Ks = []
|
|
81
81
|
hphis = []
|
|
82
82
|
with em.Simulation('IrisSim') as sim:
|
|
83
|
-
sim.check_version("1.0.
|
|
83
|
+
sim.check_version("1.0.3") # Checks version compatibility.
|
|
84
84
|
for wgap in sim.parameter_sweep(True, wgap=wgaps):
|
|
85
85
|
# Define two short waveguide sections separated by iris plate
|
|
86
86
|
wg1 = em.geo.Box(wga, Lfeed, wgb, (-wga/2, -Lfeed - t_thickness/2, 0))
|
|
@@ -33,7 +33,7 @@ Nmodes = 5
|
|
|
33
33
|
|
|
34
34
|
# --- Create simulation ---------------------------------------------------
|
|
35
35
|
model = em.Simulation('DielectricResonatorFilter')
|
|
36
|
-
model.check_version("1.0.
|
|
36
|
+
model.check_version("1.0.3") # Checks version compatibility.
|
|
37
37
|
|
|
38
38
|
# --- Build geometry ------------------------------------------------------
|
|
39
39
|
# Metal enclosure box (PEC by default)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py
RENAMED
|
File without changes
|
{emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|