setupEM 0.12.0__tar.gz → 0.13.1__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.
Files changed (36) hide show
  1. setupem-0.13.1/PKG-INFO +85 -0
  2. {setupem-0.12.0 → setupem-0.13.1}/README.md +1 -1
  3. setupem-0.13.1/README_pypi.md +58 -0
  4. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/__init__.py +1 -1
  5. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/field_viewer.py +607 -32
  6. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setupEM.py +268 -159
  7. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setupThermal.py +3 -2
  8. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/setup_common.py +101 -3
  9. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/stackupEditor.py +85 -9
  10. setupem-0.13.1/src/setupEM.egg-info/PKG-INFO +85 -0
  11. setupem-0.12.0/PKG-INFO +0 -79
  12. setupem-0.12.0/README_pypi.md +0 -52
  13. setupem-0.12.0/src/setupEM.egg-info/PKG-INFO +0 -79
  14. {setupem-0.12.0 → setupem-0.13.1}/LICENSE +0 -0
  15. {setupem-0.12.0 → setupem-0.13.1}/pyproject.toml +0 -0
  16. {setupem-0.12.0 → setupem-0.13.1}/setup.cfg +0 -0
  17. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/__main__.py +0 -0
  18. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13CMOS5L_200um.xml +0 -0
  19. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_100um.xml +0 -0
  20. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_200um.xml +0 -0
  21. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_FEM_200um.xml +0 -0
  22. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_FEM_200um_passi3D.xml +0 -0
  23. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/data/SG13G2_nosub.xml +0 -0
  24. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/gds_hierarchy_scan.py +0 -0
  25. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/layout_preview.py +0 -0
  26. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/momentum_import.py +0 -0
  27. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/palace_results.py +0 -0
  28. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/result_viewer.py +0 -0
  29. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/simplify_gds.py +0 -0
  30. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/stackup_writer.py +0 -0
  31. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM/thermal_results.py +0 -0
  32. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/SOURCES.txt +0 -0
  33. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/dependency_links.txt +0 -0
  34. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/entry_points.txt +0 -0
  35. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/requires.txt +0 -0
  36. {setupem-0.12.0 → setupem-0.13.1}/src/setupEM.egg-info/top_level.txt +0 -0
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.4
2
+ Name: setupEM
3
+ Version: 0.13.1
4
+ Summary: Python tool for configuration of gds2palace workflow with GUI.
5
+ Author-email: Volker Muehlhaus <volker@muehlhaus.com>
6
+ License-Expression: GPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/VolkerMuehlhaus/setupEM
8
+ Project-URL: Repository, https://github.com/VolkerMuehlhaus/setupEM
9
+ Project-URL: Changelog, https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md
10
+ Requires-Python: >=3.9
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: gds2palace>=0.8.0
14
+ Requires-Dist: gds_prepare_for_EM>=1.3.0
15
+ Requires-Dist: PySide6
16
+ Requires-Dist: shiboken6
17
+ Requires-Dist: scipy
18
+ Requires-Dist: requests
19
+ Requires-Dist: scikit-rf
20
+ Requires-Dist: matplotlib
21
+ Requires-Dist: numpy
22
+ Requires-Dist: gdspy
23
+ Requires-Dist: meshio
24
+ Requires-Dist: pyvista
25
+ Requires-Dist: pyvistaqt
26
+ Dynamic: license-file
27
+
28
+ # Python GUI for gds2palace
29
+
30
+ ![Intro](https://raw.githubusercontent.com/VolkerMuehlhaus/setupEM/main/doc/png/setupEM_banner.png)
31
+
32
+ ## Install
33
+
34
+ pip install setupEM
35
+
36
+ **Full documentation, installation guide, and usage walkthrough:**
37
+ https://github.com/VolkerMuehlhaus/setupEM
38
+
39
+ ## Recent changes
40
+
41
+ # What's New - October 16, 2026
42
+
43
+ **Boundary conditions per side:** **Advanced...** next to **Boundary conditions** on the Mesh and Boundaries tab opens a table with the six sides of the simulation box. Each side can have its own boundary condition (**Absorbing**, **PEC** or **PMC**) and air layer thickness; a blank entry uses the value from the tab. For example, **PEC** at zmin with 0 µm air models a backside ground plane at the box boundary. This replaces the "same on all sides / different per side" choice for the air layer, which now lives in the same table.
44
+
45
+ Loading a model with different boundary conditions per side no longer changes it to one condition for all sides: before, a single **PEC** side turned all six sides into PEC.
46
+
47
+ **Stackup Editor:** while the stackup has errors, the cross-section preview can't be redrawn and keeps the last valid drawing. It is now marked as not up to date: dimmed, crossed by a thin red line, with a banner above it. **Show errors** in the banner opens the editor's XML Preview tab, which lists the errors. The status line now points there too, instead of to Save.
48
+
49
+ # What's New - October 12, 2026
50
+
51
+ **3D Field Viewer: value markers.** Check **Probe** in the View box (or press **P**), then click the model to place a numbered marker with the field value at that exact point. Clicking works from any angle, on the full model, the clipped solid, its cut face or the **2D plane only** section; dragging still rotates. Markers are drawn on top of the model, so a marker on a buried body stays visible. A **Markers** list opens beside the view with the marker number, value and x / y / z in µm, plus **Remove**, **Clear** and **Copy** (tab-separated, for spreadsheets). For Elmer thermal temperatures, a dropdown switches the list and labels between **K**, **°C** and **ΔT** (rise above the lowest temperature in the model, in K). Right-click the model for **Jump to Maximum in Cut Plane** (with the clip plane on), **Jump to Maximum on Surface of Body N** (the outer surface of the body you clicked, e.g. the chip; results without body IDs use the whole shown surface), **Add Marker Here**, **Remove Marker N** and **Clear Markers**. Markers are updated when you change the field, result file or cycle; markers outside the new model are removed. Ported from EMStudio's field viewer.
52
+
53
+ **3D Field Viewer: keys.** With the 3D view focused: **R / F / Home** reset camera, **I** isometric, **X / Y / Z** axis views (**Shift**: negative side), **+ / −** zoom, arrow keys pan, **O** parallel projection, **M** find max., **A** arrows on/off, **P** probe, **PgUp / PgDn** move the clip plane. VTK's own letter keys (e.g. **w** wireframe, **3** stereo, **q** / **e** which stopped the interactor) no longer do anything. The right-click menu now opens only on a click: a right-drag zooms without the menu popping up afterwards.
54
+
55
+ **3D Field Viewer:** the **Cycle** picker of a Palace field dump showed Palace's extra AMR error-indicator cycle as a frequency, e.g. "999 GHz (cycle 2)". It is now listed as "error indicator (cycle 2)". This happened when that cycle stores its Indicator/Rank values as point data. Dumps that store them as cell data were already listed as "geometry".
56
+
57
+ **3D Field Viewer:** running `field_viewer.py` / `fieldViewer` standalone with a window failed in Python environments that also have PyQt5 installed. Fixed.
58
+
59
+ **Port de-embedding in `scripts/combine_extend_snp.py` fixed** (the `_deembedded.sNp` and `_dc_deembedded.sNp` files): the negative inductance of all ports was put in series at port 1, and the other ports were not de-embedded. For a 3-port, port 1 got the sum of all three values. Now each port gets the value for its own port number; a port without geometry data in `port_information.json` is not de-embedded. The raw `.sNp` and the `_dc.sNp` files were not affected. Please run `combine_snp` again to create the de-embedded files again. The same bug was fixed in gds2palace, where Gianluca Simone and David Lurz (FAU) found it.
60
+
61
+ # What's New - October 8, 2026
62
+
63
+ **Loading the wrong kind of model:** setupEM and setupThermal now tell you when a file belongs to the other app. A `*.simcfg` file opened in setupThermal or a `*.tsimcfg` file opened in setupEM shows a message naming the app to use instead. An imported `*.py` model script that is a thermal model (`create_elmer_thermal`, heat sources) in setupEM, or an EM model (`create_palace`/`create_elmer`, ports) in setupThermal, asks for confirmation first; the default is not to import.
64
+
65
+ Full history: [CHANGES.md](https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md)
66
+
67
+ ---
68
+
69
+ **Note:** the `setupEM` PyPI package itself requires:
70
+
71
+ - gds2palace>=0.8.0
72
+ - gds_prepare_for_EM>=1.3.0
73
+ - PySide6
74
+ - shiboken6
75
+ - scipy
76
+ - requests
77
+ - scikit-rf
78
+ - matplotlib
79
+ - numpy
80
+ - gdspy
81
+ - meshio
82
+ - pyvista
83
+ - pyvistaqt
84
+
85
+ (Other Python modules mentioned above are only needed to run standalone helper scripts in this repository, not to use the installed package.)
@@ -174,7 +174,7 @@ Parameter "Mesh basis function" is an expert setting that controls the order of
174
174
 
175
175
  Parameter "Adaptive mesh iterations" does what the name says: Palace offers adaptive mesh refinement (AMR) but if we use mesh basis function order 2 ("recommended") with mesh refinement of 2 micron or so, the initial mesh is usually fine enough and we don't need AMR. Starting from a coarse mesh plus AMR usually takes more simulation time than going for a finer initial mesh without AMR. If you experience something different, your feedback and example is much appreciated! When AMR iterations is non-zero, "AMR goal" (relative error tolerance) and "AMR maximum DOF" control when Palace stops refining, whichever limit is hit first - the defaults rarely need changing.
176
176
 
177
- For the boundary conditions, absorbing boundary and pefect electric conductor are supported at the present time. You can specify the oversize of the dielectric layers from the metal drawing, and the additional layer of air that srrounds everything. **Both these distances must NOT be zero, otherwise you will get mesh errors!**
177
+ For the boundary conditions, absorbing boundary, perfect electric conductor (PEC) and perfect magnetic conductor (PMC) are supported, the same on all sides or per side of the simulation box with the "Advanced..." button. You can specify the oversize of the dielectric layers from the metal drawing, and the additional layer of air that srrounds everything. **Both these distances must NOT be zero, otherwise you will get mesh errors!**
178
178
 
179
179
  # Create model
180
180
 
@@ -0,0 +1,58 @@
1
+ # Python GUI for gds2palace
2
+
3
+ ![Intro](https://raw.githubusercontent.com/VolkerMuehlhaus/setupEM/main/doc/png/setupEM_banner.png)
4
+
5
+ ## Install
6
+
7
+ pip install setupEM
8
+
9
+ **Full documentation, installation guide, and usage walkthrough:**
10
+ https://github.com/VolkerMuehlhaus/setupEM
11
+
12
+ ## Recent changes
13
+
14
+ # What's New - October 16, 2026
15
+
16
+ **Boundary conditions per side:** **Advanced...** next to **Boundary conditions** on the Mesh and Boundaries tab opens a table with the six sides of the simulation box. Each side can have its own boundary condition (**Absorbing**, **PEC** or **PMC**) and air layer thickness; a blank entry uses the value from the tab. For example, **PEC** at zmin with 0 µm air models a backside ground plane at the box boundary. This replaces the "same on all sides / different per side" choice for the air layer, which now lives in the same table.
17
+
18
+ Loading a model with different boundary conditions per side no longer changes it to one condition for all sides: before, a single **PEC** side turned all six sides into PEC.
19
+
20
+ **Stackup Editor:** while the stackup has errors, the cross-section preview can't be redrawn and keeps the last valid drawing. It is now marked as not up to date: dimmed, crossed by a thin red line, with a banner above it. **Show errors** in the banner opens the editor's XML Preview tab, which lists the errors. The status line now points there too, instead of to Save.
21
+
22
+ # What's New - October 12, 2026
23
+
24
+ **3D Field Viewer: value markers.** Check **Probe** in the View box (or press **P**), then click the model to place a numbered marker with the field value at that exact point. Clicking works from any angle, on the full model, the clipped solid, its cut face or the **2D plane only** section; dragging still rotates. Markers are drawn on top of the model, so a marker on a buried body stays visible. A **Markers** list opens beside the view with the marker number, value and x / y / z in µm, plus **Remove**, **Clear** and **Copy** (tab-separated, for spreadsheets). For Elmer thermal temperatures, a dropdown switches the list and labels between **K**, **°C** and **ΔT** (rise above the lowest temperature in the model, in K). Right-click the model for **Jump to Maximum in Cut Plane** (with the clip plane on), **Jump to Maximum on Surface of Body N** (the outer surface of the body you clicked, e.g. the chip; results without body IDs use the whole shown surface), **Add Marker Here**, **Remove Marker N** and **Clear Markers**. Markers are updated when you change the field, result file or cycle; markers outside the new model are removed. Ported from EMStudio's field viewer.
25
+
26
+ **3D Field Viewer: keys.** With the 3D view focused: **R / F / Home** reset camera, **I** isometric, **X / Y / Z** axis views (**Shift**: negative side), **+ / −** zoom, arrow keys pan, **O** parallel projection, **M** find max., **A** arrows on/off, **P** probe, **PgUp / PgDn** move the clip plane. VTK's own letter keys (e.g. **w** wireframe, **3** stereo, **q** / **e** which stopped the interactor) no longer do anything. The right-click menu now opens only on a click: a right-drag zooms without the menu popping up afterwards.
27
+
28
+ **3D Field Viewer:** the **Cycle** picker of a Palace field dump showed Palace's extra AMR error-indicator cycle as a frequency, e.g. "999 GHz (cycle 2)". It is now listed as "error indicator (cycle 2)". This happened when that cycle stores its Indicator/Rank values as point data. Dumps that store them as cell data were already listed as "geometry".
29
+
30
+ **3D Field Viewer:** running `field_viewer.py` / `fieldViewer` standalone with a window failed in Python environments that also have PyQt5 installed. Fixed.
31
+
32
+ **Port de-embedding in `scripts/combine_extend_snp.py` fixed** (the `_deembedded.sNp` and `_dc_deembedded.sNp` files): the negative inductance of all ports was put in series at port 1, and the other ports were not de-embedded. For a 3-port, port 1 got the sum of all three values. Now each port gets the value for its own port number; a port without geometry data in `port_information.json` is not de-embedded. The raw `.sNp` and the `_dc.sNp` files were not affected. Please run `combine_snp` again to create the de-embedded files again. The same bug was fixed in gds2palace, where Gianluca Simone and David Lurz (FAU) found it.
33
+
34
+ # What's New - October 8, 2026
35
+
36
+ **Loading the wrong kind of model:** setupEM and setupThermal now tell you when a file belongs to the other app. A `*.simcfg` file opened in setupThermal or a `*.tsimcfg` file opened in setupEM shows a message naming the app to use instead. An imported `*.py` model script that is a thermal model (`create_elmer_thermal`, heat sources) in setupEM, or an EM model (`create_palace`/`create_elmer`, ports) in setupThermal, asks for confirmation first; the default is not to import.
37
+
38
+ Full history: [CHANGES.md](https://github.com/VolkerMuehlhaus/setupEM/blob/main/doc/CHANGES.md)
39
+
40
+ ---
41
+
42
+ **Note:** the `setupEM` PyPI package itself requires:
43
+
44
+ - gds2palace>=0.8.0
45
+ - gds_prepare_for_EM>=1.3.0
46
+ - PySide6
47
+ - shiboken6
48
+ - scipy
49
+ - requests
50
+ - scikit-rf
51
+ - matplotlib
52
+ - numpy
53
+ - gdspy
54
+ - meshio
55
+ - pyvista
56
+ - pyvistaqt
57
+
58
+ (Other Python modules mentioned above are only needed to run standalone helper scripts in this repository, not to use the installed package.)
@@ -24,4 +24,4 @@ A Python tool for EM setup using gds2palace.
24
24
  from .setupEM import main
25
25
 
26
26
  __all__ = ["main"]
27
- __version__ = "0.12.0"
27
+ __version__ = "0.13.1"