diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index d012b865..7b760418 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -41,21 +41,24 @@ jobs: winget settings --enable LocalManifestFiles winget install -m .\manifests\n\NGSpice\NGSpice\42 Add-Content $env:GITHUB_PATH "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\NGSpice.NGSpice__DefaultSource\Spice64\bin" + winget install -m .\manifests\o\OpenEMS\OpenEMS\0.0.36 + Add-Content $env:GITHUB_PATH "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\OpenEMS.OpenEMS__DefaultSource\OpenEMS" - name: Config Ubuntu - Setup External Tools if: ${{runner.os != 'Windows' }} run: | sudo apt-get update - sudo apt-get install -y klayout ngspice + sudo apt-get install -y klayout ngspice python3-openems - name: Install poetry run: pipx install poetry - - name: Set up Python 3.10 + - name: Set up Python 3.11 uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" cache: 'poetry' - name: Install Dependencies run: | python -m pip install --upgrade pip + poetry config virtualenvs.options.system-site-packages true poetry install --with dev,doc poetry run pwd - name: check and format diff --git a/hades/main.py b/hades/main.py index 0800d2d9..bc622601 100644 --- a/hades/main.py +++ b/hades/main.py @@ -1,3 +1,4 @@ +import logging from typer import Typer from pathlib import Path from hades.devices.mos import Mos @@ -51,3 +52,15 @@ def template(project_name: Path = "./working_dir"): makedirs(project_name) with open(join(project_name, "design.yml"), "w") as f: yaml.dump(yaml.load(template_file, yaml.Loader), f) + + +@app.command("init") +def post_install(): + """ + Post-installation script. + :return: + """ + from hades.wrappers.openems import init + + logging.basicConfig(filename="hades.log", level=logging.INFO, filemode="w") + init() diff --git a/hades/wrappers/openems.py b/hades/wrappers/openems.py new file mode 100644 index 00000000..b8c271d3 --- /dev/null +++ b/hades/wrappers/openems.py @@ -0,0 +1,116 @@ +import logging +import shutil +from pylab import * +from openEMS.physical_constants import * + + +def init(): + open_ems_path = shutil.which("OpenEMS") + logging.info(f"OpenEMS_Path: {open_ems_path}") + import os, tempfile + + from CSXCAD import ContinuousStructure + from openEMS import openEMS + + ### Setup the simulation + Sim_Path = os.path.join(tempfile.gettempdir(), "Rect_WG") + + post_proc_only = False + unit = 1e-6 # drawing unit in um + + # waveguide dimensions + # WR42 + a = 10700 # waveguide width + b = 4300 # waveguide height + length = 50000 + # frequency range of interest + f_start = 20e9 + f_0 = 24e9 + f_stop = 26e9 + lambda0 = C0 / f_0 / unit + # waveguide TE-mode definition + TE_mode = "TE10" + # targeted mesh resolution + mesh_res = lambda0 / 30 + + ### Setup FDTD parameter & excitation function + FDTD = openEMS(NrTS=1e4) + FDTD.SetGaussExcite(0.5 * (f_start + f_stop), 0.5 * (f_stop - f_start)) + # boundary conditions + FDTD.SetBoundaryCond([0, 0, 0, 0, 3, 3]) + ### Setup geometry & mesh + CSX = ContinuousStructure() + FDTD.SetCSX(CSX) + mesh = CSX.GetGrid() + mesh.SetDeltaUnit(unit) + + mesh.AddLine("x", [0, a]) + mesh.AddLine("y", [0, b]) + mesh.AddLine("z", [0, length]) + + ## Apply the waveguide port + ports = [] + start = [0, 0, 10 * mesh_res] + stop = [a, b, 15 * mesh_res] + mesh.AddLine("z", [start[2], stop[2]]) + ports.append( + FDTD.AddRectWaveGuidePort(0, start, stop, "z", a * unit, b * unit, TE_mode, 1) + ) + + start = [0, 0, length - 10 * mesh_res] + stop = [a, b, length - 15 * mesh_res] + mesh.AddLine("z", [start[2], stop[2]]) + ports.append( + FDTD.AddRectWaveGuidePort(1, start, stop, "z", a * unit, b * unit, TE_mode) + ) + + mesh.SmoothMeshLines("all", mesh_res, ratio=1.4) + + ### Define dump box... + Et = CSX.AddDump("Et", file_type=0, sub_sampling=[2, 2, 2]) + start = [0, 0, 0] + stop = [a, b, length] + Et.AddBox(start, stop) + ### Run the simulation + if True: # debugging only + CSX_file = os.path.join(Sim_Path, "rect_wg.xml") + if not os.path.exists(Sim_Path): + os.mkdir(Sim_Path) + CSX.Write2XML(CSX_file) + from CSXCAD import AppCSXCAD_BIN + + os.system(AppCSXCAD_BIN + ' "{}"'.format(CSX_file)) + + if not post_proc_only: + FDTD.Run(Sim_Path, cleanup=True) + + ### Postprocessing & plotting + freq = linspace(f_start, f_stop, 201) + for port in ports: + port.CalcPort(Sim_Path, freq) + + s11 = ports[0].uf_ref / ports[0].uf_inc + s21 = ports[1].uf_ref / ports[0].uf_inc + ZL = ports[0].uf_tot / ports[0].if_tot + ZL_a = ports[0].ZL # analytic waveguide impedance + + ## Plot s-parameter + figure() + plot(freq * 1e-6, 20 * log10(abs(s11)), "k-", linewidth=2, label="$S_{11}$") + grid() + plot(freq * 1e-6, 20 * log10(abs(s21)), "r--", linewidth=2, label="$S_{21}$") + legend() + ylabel("S-Parameter (dB)") + xlabel(r"frequency (MHz) $\rightarrow$") + + ## Compare analytic and numerical wave-impedance + figure() + plot(freq * 1e-6, real(ZL), linewidth=2, label="$\Re\{Z_L\}$") + grid() + plot(freq * 1e-6, imag(ZL), "r--", linewidth=2, label="$\Im\{Z_L\}$") + plot(freq * 1e-6, ZL_a, "g-.", linewidth=2, label="$Z_{L, analytic}$") + ylabel("ZL $(\Omega)$") + xlabel(r"frequency (MHz) $\rightarrow$") + legend() + + show() diff --git a/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.installer.yaml b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.installer.yaml new file mode 100644 index 00000000..a5661660 --- /dev/null +++ b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.installer.yaml @@ -0,0 +1,20 @@ +# Created using wingetcreate 1.6.1.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.6.0.schema.json + +PackageIdentifier: OpenEMS.OpenEMS +PackageVersion: 0.0.36 +InstallerType: zip +NestedInstallerType: portable +NestedInstallerFiles: +- RelativeFilePath: openEMS\AppCSXCAD.exe + PortableCommandAlias: AppCSXCAD +- RelativeFilePath: openEMS\nf2ff.exe + PortableCommandAlias: nf2ff +- RelativeFilePath: openEMS\openEMS.exe + PortableCommandAlias: OpenEMS +Installers: +- InstallerUrl: https://github.com/thliebig/openEMS-Project/releases/download/v0.0.36/openEMS_v0.0.36.zip + Architecture: x64 + InstallerSha256: E0D62B1176C0897AD18876B45667DE877D7D3B58B37C0BE95545F9B988896059 +ManifestType: installer +ManifestVersion: 1.6.0 diff --git a/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.locale.en-US.yaml b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.locale.en-US.yaml new file mode 100644 index 00000000..25b51bd3 --- /dev/null +++ b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.locale.en-US.yaml @@ -0,0 +1,12 @@ +# Created using wingetcreate 1.6.1.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.6.0.schema.json + +PackageIdentifier: OpenEMS.OpenEMS +PackageVersion: 0.0.36 +PackageLocale: en-US +Publisher: OpenEMS +PackageName: OpenEMS +License: GPL v3.0 +ShortDescription: a free and open electromagnetic field solver +ManifestType: defaultLocale +ManifestVersion: 1.6.0 diff --git a/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.yaml b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.yaml new file mode 100644 index 00000000..60baa14f --- /dev/null +++ b/manifests/o/OpenEMS/OpenEMS/0.0.36/OpenEMS.OpenEMS.yaml @@ -0,0 +1,8 @@ +# Created using wingetcreate 1.6.1.0 +# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.6.0.schema.json + +PackageIdentifier: OpenEMS.OpenEMS +PackageVersion: 0.0.36 +DefaultLocale: en-US +ManifestType: version +ManifestVersion: 1.6.0 diff --git a/poetry.lock b/poetry.lock index 7452c391..34949234 100644 --- a/poetry.lock +++ b/poetry.lock @@ -298,6 +298,34 @@ mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pill test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] +[[package]] +name = "CSXCAD" +version = "0.6.3" +description = "Python interface for the CSXCAD library" +optional = false +python-versions = "*" +files = [ + {file = "CSXCAD-0.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:f7bc620a47b80da37a796e48296f296c3ced92a1dc83c1e6c775bd4233e67ee1"}, +] + +[package.source] +type = "file" +url = "wheels/CSXCAD-0.6.3-cp310-cp310-win_amd64.whl" + +[[package]] +name = "CSXCAD" +version = "0.6.3" +description = "Python interface for the CSXCAD library" +optional = false +python-versions = "*" +files = [ + {file = "CSXCAD-0.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:fad34f17fd09a7e6c0568cd8470cda8f113956aadc255fd6cabc1e347e297c41"}, +] + +[package.source] +type = "file" +url = "wheels/CSXCAD-0.6.3-cp311-cp311-win_amd64.whl" + [[package]] name = "cycler" version = "0.12.1" @@ -401,27 +429,43 @@ python-versions = ">=3.9" files = [ {file = "gdstk-0.9.53-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e9e43d9e7996e3f6144f999ed241cfd1e7d7b741f0759b009efbd999a862fe59"}, {file = "gdstk-0.9.53-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d97aa3052d35c529749860fb4b212ed9c7ab6f57d86a0342aa18ba6028d3ceed"}, + {file = "gdstk-0.9.53-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e09b009563b6a6f634363f3ac17fa4f3f4a485f391674598dd6a2b9e57c05bdd"}, + {file = "gdstk-0.9.53-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbf4b10f8a5804f8f3bf411ddb7819d3d928246a731d49cc1c7e9826d3234744"}, {file = "gdstk-0.9.53-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:663cddda20e0a0439b40168c9f7d405d917cc608221c952c2d18f803b34cfdea"}, {file = "gdstk-0.9.53-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b314c405236f891f0934e286e38b12f3330c1d15610bfaf439c7a19197bfc78b"}, {file = "gdstk-0.9.53-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56bea85f4cb8532afa03142d531dc90f7d7013504352ddff7c808b86c455d0ed"}, + {file = "gdstk-0.9.53-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:40e363b73f90146391975848a6f2974f74d32291d8f7f6f932b107cab2b76bf7"}, + {file = "gdstk-0.9.53-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:835eed8913bf4118a34be076c55282ba57ae875d51b0963fa3d53714fdaf37e9"}, {file = "gdstk-0.9.53-cp310-cp310-win_amd64.whl", hash = "sha256:015d32cf9907fb2326fc2bfa66d401d1306e099b22157d413dc5169d2c1d5808"}, {file = "gdstk-0.9.53-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9de4c27c2a056c729a11e038b44186095e5e489a4e60fa527abcdd3d9dbc69ad"}, {file = "gdstk-0.9.53-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dcd2934218cb373aa44e4c2aca90ceb6125e987429d8eca9dcc737938bccc63f"}, + {file = "gdstk-0.9.53-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64d0e9f8388ba68fa02f935b90bf35b97712cfe3b995cb5c97b21f5528c01d29"}, + {file = "gdstk-0.9.53-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e191f6df1c0e0da7d2fe838d22588b6c9005b7850d367536a53b175c2d26903f"}, {file = "gdstk-0.9.53-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:347048a89dc454b2a045f96205a021f0b74c7a7a2a1caf4a10bae3a440d50430"}, {file = "gdstk-0.9.53-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f5147451c3f36b34a704c4a7d9812dd476f9c047224382cf9338389ae87f2db1"}, {file = "gdstk-0.9.53-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:838750e7d2899d00bc61d7d750a411b1348374c1edc4308ef5b8804e9928d090"}, + {file = "gdstk-0.9.53-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:672607a21c3de34a07ed004c073814f0fa425eec65a4e7523c75ca94383c163d"}, + {file = "gdstk-0.9.53-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7aee49edbb7a8263da6c2d31a81bddb04ef3b8f6998e79342aab865ec057ca26"}, {file = "gdstk-0.9.53-cp311-cp311-win_amd64.whl", hash = "sha256:7fedeb92d967812e6391408e9b23457ceb606985fc99574cdd3537042df42f52"}, {file = "gdstk-0.9.53-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:93f6332b2523f6400dcaef5d500d273025a09c90bb47208528472307b0a0018c"}, {file = "gdstk-0.9.53-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:27bb13a1800c99efe924b2584d1a922343b292a13e441db21665f3d918f126be"}, + {file = "gdstk-0.9.53-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d956be35f6caaaee2d9aff58dd6de8b6a9bba8ff4edcb944ee7dc5913b36cea6"}, + {file = "gdstk-0.9.53-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e64370d17036ac0429ff2e00c25680674fe299088cb4b4c3674cc8cf34ea5d21"}, {file = "gdstk-0.9.53-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f15f5cb331447b1aaa6ae85fb1d23ec405e44c9d9b72e40a931580206f4b499a"}, {file = "gdstk-0.9.53-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e41a85cf3669486ec9cd67546858db8b09ff7cf7dc26dc44e1227e8942c32949"}, {file = "gdstk-0.9.53-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:78345ef0dc20dac28f1e2399aaa510310dc34c578722bd2e779b17413db9b8a7"}, + {file = "gdstk-0.9.53-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f6dbcafb5a571e864123f612317136036368fd45044eac3684f9a1ce326dbeab"}, + {file = "gdstk-0.9.53-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:95615515d801fe5d1a3a2bc54318f0816f20683c173f5f68548413dfe52e445b"}, {file = "gdstk-0.9.53-cp312-cp312-win_amd64.whl", hash = "sha256:f88b894659c3f955f917965f6f6855a562b1cde4374d5f43802f104e3885b9d7"}, {file = "gdstk-0.9.53-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2dc5b3e101253e0e85dab4d644880fc6d0136f0452ac203ef9b7511cc33b47a8"}, {file = "gdstk-0.9.53-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c9f5d43a3ad469cd7252c08da7232cf0d8c1dd8a578a55552e494077a7e0ed56"}, + {file = "gdstk-0.9.53-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31ba67c03881e1f519b7af7c6de709c64d9c1571ddc10c35e5b1a35c9ff5e74f"}, + {file = "gdstk-0.9.53-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c507b0b07c89b541518fd01699976a24ac7bb6f16e1240f2879888f8ebf38de5"}, {file = "gdstk-0.9.53-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:352b2f8a7047ed8654503f4bca97e50e3d42c2051912eb163b20536ac9fa3c20"}, {file = "gdstk-0.9.53-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2004814681a5ddbd86a1770deed087799ea48c2c6806f1739765788fee238ea7"}, {file = "gdstk-0.9.53-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0a0ae658bee311b791359bc0c440bd44db8247ca045b4d8338e7f8ef7528b2"}, + {file = "gdstk-0.9.53-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fd7f558242c6cffe06b491790bed05a7f65d94051caf52986649f86218e35c92"}, + {file = "gdstk-0.9.53-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d603e47f9785af1069681c10ec952fb2407e7c0fea65f794673b42d1c4d64bd7"}, {file = "gdstk-0.9.53-cp39-cp39-win_amd64.whl", hash = "sha256:c6dde9af28a97d166102d7dc0d4779747d34e5540586c21df7f03394d31502dd"}, {file = "gdstk-0.9.53.tar.gz", hash = "sha256:73c87e2e3d43911b09f2a10c90359426bd15dcdeb799606bbc1e93e49acacd90"}, ] @@ -1072,6 +1116,96 @@ files = [ griffe = ">=0.47" mkdocstrings = ">=0.25" +[[package]] +name = "numpy" +version = "1.26.2" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, + {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, + {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, + {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, + {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, + {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, + {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, + {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, + {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, + {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, +] + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +] + [[package]] name = "numpy" version = "2.0.0" @@ -1207,6 +1341,37 @@ files = [ {file = "oldest_supported_numpy-2023.12.21-py3-none-any.whl", hash = "sha256:42002178aef017afd0e34cc9dd27b56005aa619276392a4460a01359969476c2"}, ] +[package.dependencies] +numpy = {version = "1.26.2", markers = "python_version == \"3.12\""} + +[[package]] +name = "openEMS" +version = "0.0.36" +description = "Python interface for the openEMS FDTD library" +optional = false +python-versions = "*" +files = [ + {file = "openEMS-0.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:87d3de3559e51ccabd18ac1275d3db8ec6dcb5cd40d5f2647e8c966beea793e0"}, +] + +[package.source] +type = "file" +url = "wheels/openEMS-0.0.36-cp310-cp310-win_amd64.whl" + +[[package]] +name = "openEMS" +version = "0.0.36" +description = "Python interface for the openEMS FDTD library" +optional = false +python-versions = "*" +files = [ + {file = "openEMS-0.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:730cf5e02889832599ee14b7747bd10e8e3ceaf1cad175e0f3ce1ade12e4b029"}, +] + +[package.source] +type = "file" +url = "wheels/openEMS-0.0.36-cp311-cp311-win_amd64.whl" + [[package]] name = "packaging" version = "24.1" @@ -1913,13 +2078,13 @@ test = ["Cython", "array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "me [[package]] name = "setuptools" -version = "70.2.0" +version = "70.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.2.0-py3-none-any.whl", hash = "sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05"}, - {file = "setuptools-70.2.0.tar.gz", hash = "sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1"}, + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, ] [package.extras] @@ -2180,4 +2345,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" python-versions = "^3.10,<3.13" -content-hash = "9544a58de8677134b85e2a15ed1bb38b8c831da53d5e748a33199fa5896f027a" +content-hash = "cfd0442a8d66319aaf4ac4fddcd704eb097e7b382e6f7a40b9fc480507fba9da" diff --git a/pyproject.toml b/pyproject.toml index 134ccd33..78bc820f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,8 +37,19 @@ scikit-rf = "^1.0.0" matplotlib = "^3.8.2" lark = "^1.1.9" typer = "^0.12.0" -numpy = "^2.0.0" +numpy = [ + {version="^2.0.0", platform="win32" }, + {version = "^1.21.0", platform = "linux" } +] wget = "^3.2" +openems = [ + {path = "wheels/openEMS-0.0.36-cp310-cp310-win_amd64.whl", python = "<=3.10"}, + {path = "wheels/openEMS-0.0.36-cp311-cp311-win_amd64.whl", python = ">=3.11"} + ] +CSXCAD = [ + {path = "wheels/CSXCAD-0.6.3-cp310-cp310-win_amd64.whl", python = "<=3.10"}, + {path = "wheels/CSXCAD-0.6.3-cp311-cp311-win_amd64.whl", python = ">=3.11"} + ] [tool.poetry.group.dev] optional = true diff --git a/tests/test_wrappers/test_openems.py b/tests/test_wrappers/test_openems.py new file mode 100644 index 00000000..69fe3e84 --- /dev/null +++ b/tests/test_wrappers/test_openems.py @@ -0,0 +1,5 @@ +from hades.wrappers.openems import init + + +def test_openems(): + init() diff --git a/wheels/CSXCAD-0.6.3-cp310-cp310-win_amd64.whl b/wheels/CSXCAD-0.6.3-cp310-cp310-win_amd64.whl new file mode 100644 index 00000000..3f4358f8 Binary files /dev/null and b/wheels/CSXCAD-0.6.3-cp310-cp310-win_amd64.whl differ diff --git a/wheels/CSXCAD-0.6.3-cp311-cp311-win_amd64.whl b/wheels/CSXCAD-0.6.3-cp311-cp311-win_amd64.whl new file mode 100644 index 00000000..02216370 Binary files /dev/null and b/wheels/CSXCAD-0.6.3-cp311-cp311-win_amd64.whl differ diff --git a/wheels/openEMS-0.0.36-cp310-cp310-win_amd64.whl b/wheels/openEMS-0.0.36-cp310-cp310-win_amd64.whl new file mode 100644 index 00000000..8f24994a Binary files /dev/null and b/wheels/openEMS-0.0.36-cp310-cp310-win_amd64.whl differ diff --git a/wheels/openEMS-0.0.36-cp311-cp311-win_amd64.whl b/wheels/openEMS-0.0.36-cp311-cp311-win_amd64.whl new file mode 100644 index 00000000..721e4129 Binary files /dev/null and b/wheels/openEMS-0.0.36-cp311-cp311-win_amd64.whl differ