emerge 1.0.4__tar.gz → 1.0.5__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.4 → emerge-1.0.5}/.bumpversion.toml +1 -1
- emerge-1.0.5/.nova/Configuration.json +3 -0
- {emerge-1.0.4 → emerge-1.0.5}/PKG-INFO +2 -2
- {emerge-1.0.4 → emerge-1.0.5}/README.md +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/emerge/__init__.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/operations.py +4 -2
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/polybased.py +11 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/simmodel.py +2 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solver.py +4 -0
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo10_sgh.py +1 -3
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo11_lumped_element_filter.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo12_mode_alignment.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo13_helix_antenna.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo14_boundary_selection.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo1_stepped_imp_filter.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo2_combline_filter.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo3_coupled_line_filter.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo4_patch_antenna.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo5_revolve.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo6_striplines_with_vias.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo7_periodic_cells.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo8_waveguide_bpf_synthesis.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/examples/demo9_dielectric_resonator.py +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/pyproject.toml +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/uv.lock +1 -1
- {emerge-1.0.4 → emerge-1.0.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/.gitignore +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/.python-version +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/LICENSE +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/THIRD_PARTY_LICENSES.md +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/UMFPACK_Install_windows.md +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/UMFPACK_installer_windows.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/__main__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/bc.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/cacherun.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/const.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/coord.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/cs.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/dataset.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/femdata.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/index_interp.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/ned2_interp.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/nedelec2.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/nedleg2.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/emerge_update.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/horn.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/modeler.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/calculator.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/dxf.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/macro.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pmlbox.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/shapes.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/step.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo2d.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geometry.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/howto.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/logsettings.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/material.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mesh3d.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mesher.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/_cache_check.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/common_functions.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/integrals.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/optimized.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/pairing.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/periodic.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/adaptive_freq.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/assembler.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/curlcurl.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/periodicbc.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/robin_abc_order2.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/robinbc.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_3d.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_bc.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_data.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/periodic.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/port_functions.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/sc.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/simjob.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/sparam.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/touchstone.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/display.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/matplotlib/mpldisplay.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/cmap_maker.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/display.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/display_settings.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/simple_plots.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/_gen_base.txt +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/_load_base.txt +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/generate_project.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/selection.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/settings.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/simulation_data.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solve_interfaces/cudss_interface.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solve_interfaces/pardiso_interface.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/system.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/beta/dxf.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/cli.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/ext.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/lib.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/__init__.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/isola.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/rogers.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/plot.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/emerge/pyvista.py +0 -0
- {emerge-1.0.4 → emerge-1.0.5}/src/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: emerge
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.5
|
|
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
|
|
@@ -32,7 +32,7 @@ Hello everybody. Thanks for showing interest in this repository.
|
|
|
32
32
|
Feel free to download your version of EMerge and start playing around with it!
|
|
33
33
|
If you have suggestions/changes/questions either use the Github issue system or join the Discord using the following link:
|
|
34
34
|
|
|
35
|
-
**https://discord.gg/
|
|
35
|
+
**[Discord Invitation](https://discord.gg/VMftDCZcNz)**
|
|
36
36
|
|
|
37
37
|
## How to install
|
|
38
38
|
|
|
@@ -5,7 +5,7 @@ Hello everybody. Thanks for showing interest in this repository.
|
|
|
5
5
|
Feel free to download your version of EMerge and start playing around with it!
|
|
6
6
|
If you have suggestions/changes/questions either use the Github issue system or join the Discord using the following link:
|
|
7
7
|
|
|
8
|
-
**https://discord.gg/
|
|
8
|
+
**[Discord Invitation](https://discord.gg/VMftDCZcNz)**
|
|
9
9
|
|
|
10
10
|
## How to install
|
|
11
11
|
|
|
@@ -51,11 +51,13 @@ def add(main: T, tool: T,
|
|
|
51
51
|
GeoSurface | GeoVolume
|
|
52
52
|
A new object that is the union of the main and tool objects.
|
|
53
53
|
'''
|
|
54
|
+
|
|
54
55
|
out_dim_tags, out_dim_tags_map = gmsh.model.occ.fuse(main.dimtags, tool.dimtags, removeObject=remove_object, removeTool=remove_tool)
|
|
55
56
|
if out_dim_tags[0][0] == 3:
|
|
56
57
|
output = GeoVolume([dt[1] for dt in out_dim_tags])._take_tools(tool,main)
|
|
57
58
|
elif out_dim_tags[0][0] == 2:
|
|
58
59
|
output = GeoSurface([dt[1] for dt in out_dim_tags])._take_tools(tool,main)
|
|
60
|
+
|
|
59
61
|
if remove_object:
|
|
60
62
|
main._exists = False
|
|
61
63
|
if remove_tool:
|
|
@@ -306,10 +308,10 @@ def unite(*objects: GeoObject) -> GeoObject:
|
|
|
306
308
|
|
|
307
309
|
main._exists = False
|
|
308
310
|
dts = []
|
|
309
|
-
for other in
|
|
311
|
+
for other in objects:
|
|
310
312
|
dts.extend(other.dimtags)
|
|
311
313
|
other._exists = False
|
|
312
|
-
new_dimtags, mapping = gmsh.model.occ.fuse(main.dimtags
|
|
314
|
+
new_dimtags, mapping = gmsh.model.occ.fuse(dts, main.dimtags)
|
|
313
315
|
|
|
314
316
|
new_obj = GeoObject.from_dimtags(new_dimtags)._take_tools(*objects)
|
|
315
317
|
new_obj.set_material(main.material)
|
|
@@ -24,6 +24,7 @@ from typing import Generator, Callable
|
|
|
24
24
|
from ..selection import FaceSelection
|
|
25
25
|
from typing import Literal
|
|
26
26
|
from functools import reduce
|
|
27
|
+
from loguru import logger
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
def _discretize_curve(xfunc: Callable, yfunc: Callable,
|
|
@@ -362,10 +363,20 @@ class XYPolygon:
|
|
|
362
363
|
self._check()
|
|
363
364
|
|
|
364
365
|
ptags = []
|
|
366
|
+
|
|
365
367
|
xg, yg, zg = cs.in_global_cs(self.x, self.y, 0*self.x)
|
|
366
368
|
|
|
367
369
|
points = dict()
|
|
368
370
|
for x,y,z in zip(xg, yg, zg):
|
|
371
|
+
reuse = False
|
|
372
|
+
for key, (px, py, pz) in points.items():
|
|
373
|
+
if ((x-px)**2 + (y-py)**2 + (z-pz)**2)**0.5 < 1e-12:
|
|
374
|
+
ptags.append(key)
|
|
375
|
+
reuse = True
|
|
376
|
+
break
|
|
377
|
+
if reuse:
|
|
378
|
+
logger.warning(f'Reusing {ptags[-1]}')
|
|
379
|
+
continue
|
|
369
380
|
ptag = gmsh.model.occ.add_point(x,y,z)
|
|
370
381
|
points[ptag] = (x,y,z)
|
|
371
382
|
ptags.append(ptag)
|
|
@@ -241,6 +241,7 @@ class Simulation:
|
|
|
241
241
|
logger.trace('Storing geometries in data.sim')
|
|
242
242
|
self.data.sim['geos'] = {geo.name: geo for geo in _GEOMANAGER.all_geometries()}
|
|
243
243
|
self.data.sim['mesh'] = self.mesh
|
|
244
|
+
self.data.sim.entries.append(self.data.sim.stock)
|
|
244
245
|
############################################################
|
|
245
246
|
# PUBLIC FUNCTIONS #
|
|
246
247
|
############################################################
|
|
@@ -518,6 +519,7 @@ class Simulation:
|
|
|
518
519
|
else:
|
|
519
520
|
geometries_parsed = unpack_lists(geometries + tuple([item for item in self.data.sim.default.values() if isinstance(item, GeoObject)]))
|
|
520
521
|
logger.trace(f'Parsed geometries = {geometries_parsed}')
|
|
522
|
+
|
|
521
523
|
self._save_geometries()
|
|
522
524
|
|
|
523
525
|
self.mesher.submit_objects(geometries_parsed)
|
|
@@ -95,6 +95,10 @@ class SolveReport:
|
|
|
95
95
|
for key, value in kwargs.items():
|
|
96
96
|
self.aux[key] = str(value)
|
|
97
97
|
|
|
98
|
+
@property
|
|
99
|
+
def mdof(self) -> float:
|
|
100
|
+
return (self.ndof**2)/((self.simtime+1e-6)*1e6)
|
|
101
|
+
|
|
98
102
|
def logprint(self, print_cal: Callable | None = None):
|
|
99
103
|
if print_cal is None:
|
|
100
104
|
print_cal = print
|
|
@@ -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('StandardGainHornAntenna')
|
|
36
|
-
m.check_version("1.0.
|
|
36
|
+
m.check_version("1.0.5") # Checks version compatibility.
|
|
37
37
|
# --- Coordinate system for horn geometry -------------------------------
|
|
38
38
|
hornCS = em.CS(em.YAX, em.ZAX, em.XAX)
|
|
39
39
|
|
|
@@ -44,7 +44,6 @@ feed = em.geo.Box(
|
|
|
44
44
|
wgb/2, # half-height along Z
|
|
45
45
|
position=(-Lfeed, 0, 0)
|
|
46
46
|
)
|
|
47
|
-
|
|
48
47
|
# --- Horn geometry ------------------------------------------------------
|
|
49
48
|
# Inner horn taper from (D,E) at throat to (B,C) at mouth over length F
|
|
50
49
|
horn_in = em.geo.Horn(
|
|
@@ -115,4 +114,3 @@ m.display.add_surf(*data.field[0].farfield_3d(radiation_boundary, syms=['Ez','Hy
|
|
|
115
114
|
.surfplot('normE', 'abs', True, True, -30, 5*mm, (Lhorn,0,0)))
|
|
116
115
|
m.display.add_surf(*data.field[0].cutplane(0.25*mm, z=0).scalar('Ez','real'), symmetrize=True)
|
|
117
116
|
m.display.show()
|
|
118
|
-
|
|
@@ -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.5") # 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('AlignmentDemo')
|
|
15
|
-
m.check_version("1.0.
|
|
15
|
+
m.check_version("1.0.5") # 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('HelixAntennas')
|
|
28
|
-
model.check_version("1.0.
|
|
28
|
+
model.check_version("1.0.5") # 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('BoundarySelectionDemo')
|
|
40
|
-
model.check_version("1.0.
|
|
40
|
+
model.check_version("1.0.5") # 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('SteppedImpedanceFilter')
|
|
31
|
-
m.check_version("1.0.
|
|
31
|
+
m.check_version("1.0.5") # 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('ComblineFilter')
|
|
46
|
-
model.check_version("1.0.
|
|
46
|
+
model.check_version("1.0.5") # 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('CoupledLineFilter')
|
|
41
|
-
model.check_version("1.0.
|
|
41
|
+
model.check_version("1.0.5") # 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('PatchAntenna')
|
|
36
36
|
|
|
37
|
-
model.check_version("1.0.
|
|
37
|
+
model.check_version("1.0.5") # Checks version compatibility.
|
|
38
38
|
|
|
39
39
|
# --- Define geometry primitives -----------------------------------------
|
|
40
40
|
# Substrate block centered at origin in XY, thickness in Z (negative down)
|
|
@@ -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.5") # 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('StriplineWithVias')
|
|
17
|
-
model.check_version("1.0.
|
|
17
|
+
model.check_version("1.0.5") # 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.5") # 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.5") # 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.5") # 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
|
{emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py
RENAMED
|
File without changes
|
{emerge-1.0.4 → emerge-1.0.5}/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
|
|
File without changes
|
|
File without changes
|