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.

Files changed (116) hide show
  1. {emerge-1.0.2 → emerge-1.0.3}/.bumpversion.toml +1 -1
  2. {emerge-1.0.2 → emerge-1.0.3}/PKG-INFO +1 -1
  3. {emerge-1.0.2 → emerge-1.0.3}/emerge/__init__.py +1 -1
  4. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_bc.py +9 -0
  5. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/display.py +10 -3
  6. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solver.py +15 -19
  7. {emerge-1.0.2 → emerge-1.0.3}/examples/demo10_sgh.py +1 -1
  8. {emerge-1.0.2 → emerge-1.0.3}/examples/demo11_lumped_element_filter.py +1 -1
  9. {emerge-1.0.2 → emerge-1.0.3}/examples/demo12_mode_alignment.py +1 -1
  10. {emerge-1.0.2 → emerge-1.0.3}/examples/demo13_helix_antenna.py +1 -1
  11. {emerge-1.0.2 → emerge-1.0.3}/examples/demo14_boundary_selection.py +1 -1
  12. {emerge-1.0.2 → emerge-1.0.3}/examples/demo1_stepped_imp_filter.py +1 -1
  13. {emerge-1.0.2 → emerge-1.0.3}/examples/demo2_combline_filter.py +1 -1
  14. {emerge-1.0.2 → emerge-1.0.3}/examples/demo3_coupled_line_filter.py +1 -1
  15. {emerge-1.0.2 → emerge-1.0.3}/examples/demo4_patch_antenna.py +3 -2
  16. {emerge-1.0.2 → emerge-1.0.3}/examples/demo5_revolve.py +1 -1
  17. {emerge-1.0.2 → emerge-1.0.3}/examples/demo6_striplines_with_vias.py +1 -1
  18. {emerge-1.0.2 → emerge-1.0.3}/examples/demo7_periodic_cells.py +1 -1
  19. {emerge-1.0.2 → emerge-1.0.3}/examples/demo8_waveguide_bpf_synthesis.py +1 -1
  20. {emerge-1.0.2 → emerge-1.0.3}/examples/demo9_dielectric_resonator.py +1 -1
  21. {emerge-1.0.2 → emerge-1.0.3}/pyproject.toml +1 -1
  22. {emerge-1.0.2 → emerge-1.0.3}/uv.lock +1 -1
  23. {emerge-1.0.2 → emerge-1.0.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  24. {emerge-1.0.2 → emerge-1.0.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  25. {emerge-1.0.2 → emerge-1.0.3}/.gitignore +0 -0
  26. {emerge-1.0.2 → emerge-1.0.3}/.python-version +0 -0
  27. {emerge-1.0.2 → emerge-1.0.3}/LICENSE +0 -0
  28. {emerge-1.0.2 → emerge-1.0.3}/README.md +0 -0
  29. {emerge-1.0.2 → emerge-1.0.3}/THIRD_PARTY_LICENSES.md +0 -0
  30. {emerge-1.0.2 → emerge-1.0.3}/UMFPACK_Install_windows.md +0 -0
  31. {emerge-1.0.2 → emerge-1.0.3}/UMFPACK_installer_windows.py +0 -0
  32. {emerge-1.0.2 → emerge-1.0.3}/emerge/__main__.py +0 -0
  33. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/__init__.py +0 -0
  34. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/bc.py +0 -0
  35. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/cacherun.py +0 -0
  36. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/const.py +0 -0
  37. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/coord.py +0 -0
  38. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/cs.py +0 -0
  39. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/dataset.py +0 -0
  40. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/__init__.py +0 -0
  41. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/femdata.py +0 -0
  42. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/index_interp.py +0 -0
  43. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/ned2_interp.py +0 -0
  44. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/nedelec2.py +0 -0
  45. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/elements/nedleg2.py +0 -0
  46. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/__init__.py +0 -0
  47. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/horn.py +0 -0
  48. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/modeler.py +0 -0
  49. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/operations.py +0 -0
  50. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb.py +0 -0
  51. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/calculator.py +0 -0
  52. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/dxf.py +0 -0
  53. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pcb_tools/macro.py +0 -0
  54. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/pmlbox.py +0 -0
  55. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/polybased.py +0 -0
  56. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/shapes.py +0 -0
  57. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo/step.py +0 -0
  58. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geo2d.py +0 -0
  59. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/geometry.py +0 -0
  60. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/howto.py +0 -0
  61. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/logsettings.py +0 -0
  62. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/material.py +0 -0
  63. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mesh3d.py +0 -0
  64. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mesher.py +0 -0
  65. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/_cache_check.py +0 -0
  66. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/common_functions.py +0 -0
  67. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/integrals.py +0 -0
  68. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/optimized.py +0 -0
  69. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/mth/pairing.py +0 -0
  70. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/periodic.py +0 -0
  71. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/__init__.py +0 -0
  72. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/__init__.py +0 -0
  73. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/adaptive_freq.py +0 -0
  74. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/assembler.py +0 -0
  75. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/curlcurl.py +0 -0
  76. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +0 -0
  77. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +0 -0
  78. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/periodicbc.py +0 -0
  79. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/robin_abc_order2.py +0 -0
  80. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/assembly/robinbc.py +0 -0
  81. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_3d.py +0 -0
  82. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/microwave_data.py +0 -0
  83. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/periodic.py +0 -0
  84. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/port_functions.py +0 -0
  85. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/sc.py +0 -0
  86. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/simjob.py +0 -0
  87. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/sparam.py +0 -0
  88. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/physics/microwave/touchstone.py +0 -0
  89. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/__init__.py +0 -0
  90. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/display.py +0 -0
  91. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/matplotlib/mpldisplay.py +0 -0
  92. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/__init__.py +0 -0
  93. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/pyvista/display_settings.py +0 -0
  94. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot/simple_plots.py +0 -0
  95. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/plot.py +0 -0
  96. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/__init__.py +0 -0
  97. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/_gen_base.txt +0 -0
  98. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/_load_base.txt +0 -0
  99. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/projects/generate_project.py +0 -0
  100. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/selection.py +0 -0
  101. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/settings.py +0 -0
  102. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/simmodel.py +0 -0
  103. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/simulation_data.py +0 -0
  104. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solve_interfaces/cudss_interface.py +0 -0
  105. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/solve_interfaces/pardiso_interface.py +0 -0
  106. {emerge-1.0.2 → emerge-1.0.3}/emerge/_emerge/system.py +0 -0
  107. {emerge-1.0.2 → emerge-1.0.3}/emerge/beta/dxf.py +0 -0
  108. {emerge-1.0.2 → emerge-1.0.3}/emerge/cli.py +0 -0
  109. {emerge-1.0.2 → emerge-1.0.3}/emerge/ext.py +0 -0
  110. {emerge-1.0.2 → emerge-1.0.3}/emerge/lib.py +0 -0
  111. {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/__init__.py +0 -0
  112. {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/isola.py +0 -0
  113. {emerge-1.0.2 → emerge-1.0.3}/emerge/materials/rogers.py +0 -0
  114. {emerge-1.0.2 → emerge-1.0.3}/emerge/plot.py +0 -0
  115. {emerge-1.0.2 → emerge-1.0.3}/emerge/pyvista.py +0 -0
  116. {emerge-1.0.2 → emerge-1.0.3}/src/__init__.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "1.0.2"
2
+ current_version = "1.0.3"
3
3
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
4
4
  serialize = ["{major}.{minor}.{patch}"]
5
5
  search = "{current_version}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emerge
3
- Version: 1.0.2
3
+ Version: 1.0.3
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,7 +18,7 @@ along with this program; if not, see
18
18
  """
19
19
  import os
20
20
 
21
- __version__ = "1.0.2"
21
+ __version__ = "1.0.3"
22
22
 
23
23
  ############################################################
24
24
  # HANDLE ENVIRONMENT VARIABLES #
@@ -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
- self._objs.append(_AnimObject(field_flat, T, grid_no_nan, actor, on_update))
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
- if module_exists('scikits.umfpack'):
60
- try:
61
- import scikits.umfpack as um # type: ignore
62
- _UMFPACK_AVAILABLE = True
63
- except ModuleNotFoundError:
64
- logger.debug('UMFPACK not found, defaulting to SuperLU')
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
- if module_exists('cupy'):
71
- try:
72
- from .solve_interfaces.cudss_interface import CuDSSInterface
73
- _CUDSS_AVAILABLE = True
74
- except ModuleNotFoundError:
75
- pass
76
- except ImportError as e:
77
- logger.error('Error while importing CuDSS dependencies:')
78
- logger.exception(e)
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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, 11)
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.2") # Checks version compatibility
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
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.2") # Checks version compatibility.
36
+ model.check_version("1.0.3") # Checks version compatibility.
37
37
 
38
38
  # --- Build geometry ------------------------------------------------------
39
39
  # Metal enclosure box (PEC by default)
@@ -3,7 +3,7 @@ allow-direct-references = true
3
3
 
4
4
  [project]
5
5
  name = "emerge"
6
- version = "1.0.2"
6
+ version = "1.0.3"
7
7
  description = "An open source EM FEM simulator in Python"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.10, <4.0"
@@ -245,7 +245,7 @@ wheels = [
245
245
 
246
246
  [[package]]
247
247
  name = "emerge"
248
- version = "1.0.2"
248
+ version = "1.0.3"
249
249
  source = { editable = "." }
250
250
  dependencies = [
251
251
  { name = "cloudpickle" },
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