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.

Files changed (119) hide show
  1. {emerge-1.0.4 → emerge-1.0.5}/.bumpversion.toml +1 -1
  2. emerge-1.0.5/.nova/Configuration.json +3 -0
  3. {emerge-1.0.4 → emerge-1.0.5}/PKG-INFO +2 -2
  4. {emerge-1.0.4 → emerge-1.0.5}/README.md +1 -1
  5. {emerge-1.0.4 → emerge-1.0.5}/emerge/__init__.py +1 -1
  6. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/operations.py +4 -2
  7. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/polybased.py +11 -0
  8. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/simmodel.py +2 -0
  9. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solver.py +4 -0
  10. {emerge-1.0.4 → emerge-1.0.5}/examples/demo10_sgh.py +1 -3
  11. {emerge-1.0.4 → emerge-1.0.5}/examples/demo11_lumped_element_filter.py +1 -1
  12. {emerge-1.0.4 → emerge-1.0.5}/examples/demo12_mode_alignment.py +1 -1
  13. {emerge-1.0.4 → emerge-1.0.5}/examples/demo13_helix_antenna.py +1 -1
  14. {emerge-1.0.4 → emerge-1.0.5}/examples/demo14_boundary_selection.py +1 -1
  15. {emerge-1.0.4 → emerge-1.0.5}/examples/demo1_stepped_imp_filter.py +1 -1
  16. {emerge-1.0.4 → emerge-1.0.5}/examples/demo2_combline_filter.py +1 -1
  17. {emerge-1.0.4 → emerge-1.0.5}/examples/demo3_coupled_line_filter.py +1 -1
  18. {emerge-1.0.4 → emerge-1.0.5}/examples/demo4_patch_antenna.py +1 -1
  19. {emerge-1.0.4 → emerge-1.0.5}/examples/demo5_revolve.py +1 -1
  20. {emerge-1.0.4 → emerge-1.0.5}/examples/demo6_striplines_with_vias.py +1 -1
  21. {emerge-1.0.4 → emerge-1.0.5}/examples/demo7_periodic_cells.py +1 -1
  22. {emerge-1.0.4 → emerge-1.0.5}/examples/demo8_waveguide_bpf_synthesis.py +1 -1
  23. {emerge-1.0.4 → emerge-1.0.5}/examples/demo9_dielectric_resonator.py +1 -1
  24. {emerge-1.0.4 → emerge-1.0.5}/pyproject.toml +1 -1
  25. {emerge-1.0.4 → emerge-1.0.5}/uv.lock +1 -1
  26. {emerge-1.0.4 → emerge-1.0.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  27. {emerge-1.0.4 → emerge-1.0.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  28. {emerge-1.0.4 → emerge-1.0.5}/.gitignore +0 -0
  29. {emerge-1.0.4 → emerge-1.0.5}/.python-version +0 -0
  30. {emerge-1.0.4 → emerge-1.0.5}/LICENSE +0 -0
  31. {emerge-1.0.4 → emerge-1.0.5}/THIRD_PARTY_LICENSES.md +0 -0
  32. {emerge-1.0.4 → emerge-1.0.5}/UMFPACK_Install_windows.md +0 -0
  33. {emerge-1.0.4 → emerge-1.0.5}/UMFPACK_installer_windows.py +0 -0
  34. {emerge-1.0.4 → emerge-1.0.5}/emerge/__main__.py +0 -0
  35. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/__init__.py +0 -0
  36. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/bc.py +0 -0
  37. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/cacherun.py +0 -0
  38. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/const.py +0 -0
  39. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/coord.py +0 -0
  40. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/cs.py +0 -0
  41. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/dataset.py +0 -0
  42. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/__init__.py +0 -0
  43. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/femdata.py +0 -0
  44. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/index_interp.py +0 -0
  45. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/ned2_interp.py +0 -0
  46. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/nedelec2.py +0 -0
  47. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/elements/nedleg2.py +0 -0
  48. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/emerge_update.py +0 -0
  49. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/__init__.py +0 -0
  50. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/horn.py +0 -0
  51. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/modeler.py +0 -0
  52. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb.py +0 -0
  53. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/calculator.py +0 -0
  54. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/dxf.py +0 -0
  55. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pcb_tools/macro.py +0 -0
  56. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/pmlbox.py +0 -0
  57. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/shapes.py +0 -0
  58. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo/step.py +0 -0
  59. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geo2d.py +0 -0
  60. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/geometry.py +0 -0
  61. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/howto.py +0 -0
  62. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/logsettings.py +0 -0
  63. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/material.py +0 -0
  64. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mesh3d.py +0 -0
  65. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mesher.py +0 -0
  66. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/_cache_check.py +0 -0
  67. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/common_functions.py +0 -0
  68. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/integrals.py +0 -0
  69. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/optimized.py +0 -0
  70. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/mth/pairing.py +0 -0
  71. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/periodic.py +0 -0
  72. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/__init__.py +0 -0
  73. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/__init__.py +0 -0
  74. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/adaptive_freq.py +0 -0
  75. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/assembler.py +0 -0
  76. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/curlcurl.py +0 -0
  77. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/generalized_eigen.py +0 -0
  78. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/generalized_eigen_hb.py +0 -0
  79. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/periodicbc.py +0 -0
  80. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/robin_abc_order2.py +0 -0
  81. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/assembly/robinbc.py +0 -0
  82. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_3d.py +0 -0
  83. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_bc.py +0 -0
  84. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/microwave_data.py +0 -0
  85. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/periodic.py +0 -0
  86. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/port_functions.py +0 -0
  87. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/sc.py +0 -0
  88. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/simjob.py +0 -0
  89. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/sparam.py +0 -0
  90. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/physics/microwave/touchstone.py +0 -0
  91. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/__init__.py +0 -0
  92. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/display.py +0 -0
  93. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/matplotlib/mpldisplay.py +0 -0
  94. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/__init__.py +0 -0
  95. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/cmap_maker.py +0 -0
  96. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/display.py +0 -0
  97. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/pyvista/display_settings.py +0 -0
  98. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot/simple_plots.py +0 -0
  99. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/plot.py +0 -0
  100. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/__init__.py +0 -0
  101. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/_gen_base.txt +0 -0
  102. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/_load_base.txt +0 -0
  103. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/projects/generate_project.py +0 -0
  104. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/selection.py +0 -0
  105. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/settings.py +0 -0
  106. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/simulation_data.py +0 -0
  107. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solve_interfaces/cudss_interface.py +0 -0
  108. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/solve_interfaces/pardiso_interface.py +0 -0
  109. {emerge-1.0.4 → emerge-1.0.5}/emerge/_emerge/system.py +0 -0
  110. {emerge-1.0.4 → emerge-1.0.5}/emerge/beta/dxf.py +0 -0
  111. {emerge-1.0.4 → emerge-1.0.5}/emerge/cli.py +0 -0
  112. {emerge-1.0.4 → emerge-1.0.5}/emerge/ext.py +0 -0
  113. {emerge-1.0.4 → emerge-1.0.5}/emerge/lib.py +0 -0
  114. {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/__init__.py +0 -0
  115. {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/isola.py +0 -0
  116. {emerge-1.0.4 → emerge-1.0.5}/emerge/materials/rogers.py +0 -0
  117. {emerge-1.0.4 → emerge-1.0.5}/emerge/plot.py +0 -0
  118. {emerge-1.0.4 → emerge-1.0.5}/emerge/pyvista.py +0 -0
  119. {emerge-1.0.4 → emerge-1.0.5}/src/__init__.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [tool.bumpversion]
2
- current_version = "1.0.4"
2
+ current_version = "1.0.5"
3
3
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
4
4
  serialize = ["{major}.{minor}.{patch}"]
5
5
  search = "{current_version}"
@@ -0,0 +1,3 @@
1
+ {
2
+ "python.pythonPath" : "\/Users\/robertfennis\/Documents\/EMerge\/.venv\/bin\/python"
3
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: emerge
3
- Version: 1.0.4
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/uArxywnz**
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/uArxywnz**
8
+ **[Discord Invitation](https://discord.gg/VMftDCZcNz)**
9
9
 
10
10
  ## How to install
11
11
 
@@ -18,7 +18,7 @@ along with this program; if not, see
18
18
  """
19
19
  import os
20
20
 
21
- __version__ = "1.0.4"
21
+ __version__ = "1.0.5"
22
22
 
23
23
  ############################################################
24
24
  # HANDLE ENVIRONMENT VARIABLES #
@@ -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 rest:
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, dts)
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
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.4") # Checks version compatibility.
36
+ model.check_version("1.0.5") # 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.4"
6
+ version = "1.0.5"
7
7
  description = "An open source EM FEM simulator in Python"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.10, <4.0"
@@ -236,7 +236,7 @@ wheels = [
236
236
 
237
237
  [[package]]
238
238
  name = "emerge"
239
- version = "1.0.4"
239
+ version = "1.0.5"
240
240
  source = { editable = "." }
241
241
  dependencies = [
242
242
  { name = "gmsh" },
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