.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\02-HFSS\HFSS_Spiral.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end <sphx_glr_download_examples_02-HFSS_HFSS_Spiral.py>` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_02-HFSS_HFSS_Spiral.py: HFSS: spiral inductor --------------------- This example shows how you can use PyAEDT to create a spiral inductor, solve it, and plot results. .. GENERATED FROM PYTHON SOURCE LINES 8-11 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports. .. GENERATED FROM PYTHON SOURCE LINES 11-17 .. code-block:: Python import os import pyaedt project_name = pyaedt.generate_unique_project_name(project_name="spiral") .. GENERATED FROM PYTHON SOURCE LINES 18-21 Set AEDT version ~~~~~~~~~~~~~~~~ Set AEDT version. .. GENERATED FROM PYTHON SOURCE LINES 21-24 .. code-block:: Python aedt_version = "2024.1" .. GENERATED FROM PYTHON SOURCE LINES 25-29 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. You can set ``non_graphical`` either to ``True`` or ``False``. .. GENERATED FROM PYTHON SOURCE LINES 29-32 .. code-block:: Python non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 33-37 Launch HFSS ~~~~~~~~~~~ Launch HFSS 2023 R2 in non-graphical mode and change the units to microns. .. GENERATED FROM PYTHON SOURCE LINES 37-44 .. code-block:: Python hfss = pyaedt.Hfss(specified_version=aedt_version, non_graphical=non_graphical, designname="A1", new_desktop_session=True) hfss.solution_type = "Modal" hfss.modeler.model_units = "um" p = hfss.modeler .. GENERATED FROM PYTHON SOURCE LINES 45-49 Define variables ~~~~~~~~~~~~~~~~ Define input variables. You can use the values that follow or edit them. .. GENERATED FROM PYTHON SOURCE LINES 49-60 .. code-block:: Python rin = 10 width = 2 spacing = 1 thickness = 1 Np = 8 Nr = 10 gap = 3 hfss["Tsub"] = "6" + hfss.modeler.model_units .. GENERATED FROM PYTHON SOURCE LINES 61-65 Standardize polyline ~~~~~~~~~~~~~~~~~~~~ Standardize the polyline using the ``create_line`` method to fix the width, thickness, and material. .. GENERATED FROM PYTHON SOURCE LINES 65-71 .. code-block:: Python def create_line(pts): p.create_polyline(pts, material="copper", xsection_type="Rectangle", xsection_width=width, xsection_height=thickness) .. GENERATED FROM PYTHON SOURCE LINES 72-76 Create spiral inductor ~~~~~~~~~~~~~~~~~~~~~~ Create the spiral inductor. This spiral inductor is not parametric, but you could parametrize it later. .. GENERATED FROM PYTHON SOURCE LINES 76-88 .. code-block:: Python ind = hfss.modeler.create_spiral( internal_radius=rin, width=width, spacing=spacing, turns=Nr, faces=Np, thickness=thickness, material="copper", name="Inductor1", ) .. GENERATED FROM PYTHON SOURCE LINES 89-92 Center return path ~~~~~~~~~~~~~~~~~~ Center the return path. .. GENERATED FROM PYTHON SOURCE LINES 92-98 .. code-block:: Python x0, y0, z0 = ind.points[0] x1, y1, z1 = ind.points[-1] create_line([(x0 - width / 2, y0, -gap), (abs(x1) + 5, y0, -gap)]) p.create_box([x0 - width / 2, y0 - width / 2, -gap - thickness / 2], [width, width, gap + thickness], material="copper") .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.modeler.cad.object3d.Object3d object at 0x000002264CBD25C0> .. GENERATED FROM PYTHON SOURCE LINES 99-102 Create port 1 ~~~~~~~~~~~~~ Create port 1. .. GENERATED FROM PYTHON SOURCE LINES 102-110 .. code-block:: Python p.create_rectangle(orientation=pyaedt.constants.PLANE.YZ, origin=[abs(x1) + 5, y0 - width / 2, -gap - thickness / 2], sizes=[width, "-Tsub+{}{}".format(gap, hfss.modeler.model_units)], name="port1" ) hfss.lumped_port(assignment="port1", integration_line=pyaedt.constants.AXIS.Z) .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.modules.Boundary.BoundaryObject object at 0x000002264CBD0E50> .. GENERATED FROM PYTHON SOURCE LINES 111-114 Create port 2 ~~~~~~~~~~~~~ Create port 2. .. GENERATED FROM PYTHON SOURCE LINES 114-121 .. code-block:: Python create_line([(x1 + width / 2, y1, 0), (x1 - 5, y1, 0)]) p.create_rectangle(pyaedt.constants.PLANE.YZ, [x1 - 5, y1 - width / 2, -thickness / 2], [width, "-Tsub"], name="port2") hfss.lumped_port(assignment="port2", integration_line=pyaedt.constants.AXIS.Z) .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.modules.Boundary.BoundaryObject object at 0x000002264CBD2590> .. GENERATED FROM PYTHON SOURCE LINES 122-125 Create silicon substrate and ground plane ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create the silicon substrate and the ground plane. .. GENERATED FROM PYTHON SOURCE LINES 125-132 .. code-block:: Python p.create_box([x1 - 20, x1 - 20, "-Tsub-{}{}/2".format(thickness, hfss.modeler.model_units)], [-2 * x1 + 40, -2 * x1 + 40, "Tsub"], material="silicon") p.create_box([x1 - 20, x1 - 20, "-Tsub-{}{}/2".format(thickness, hfss.modeler.model_units)], [-2 * x1 + 40, -2 * x1 + 40, -0.1], material="PEC") .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.modeler.cad.object3d.Object3d object at 0x000002264CBD3AF0> .. GENERATED FROM PYTHON SOURCE LINES 133-136 Assign airbox and radiation ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Assign the airbox and the radiation. .. GENERATED FROM PYTHON SOURCE LINES 136-143 .. code-block:: Python box = p.create_box( [x1 - 20, x1 - 20, "-Tsub-{}{}/2 - 0.1{}".format(thickness, hfss.modeler.model_units, hfss.modeler.model_units)], [-2 * x1 + 40, -2 * x1 + 40, 100], name="airbox", material="air") hfss.assign_radiation_boundary_to_objects("airbox") .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.modules.Boundary.BoundaryObject object at 0x000002264CBD1B10> .. GENERATED FROM PYTHON SOURCE LINES 144-148 Assign material override ~~~~~~~~~~~~~~~~~~~~~~~~ Assign a material override so that the validation check does not fail. .. GENERATED FROM PYTHON SOURCE LINES 148-151 .. code-block:: Python hfss.change_material_override() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 152-155 Plot model ~~~~~~~~~~ Plot the model. .. GENERATED FROM PYTHON SOURCE LINES 155-158 .. code-block:: Python hfss.plot(show=False, export_path=os.path.join(hfss.working_directory, "Image.jpg"), plot_air_objects=False) .. image-sg:: /examples/02-HFSS/images/sphx_glr_HFSS_Spiral_001.png :alt: HFSS Spiral :srcset: /examples/02-HFSS/images/sphx_glr_HFSS_Spiral_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none <pyaedt.generic.plot.ModelPlotter object at 0x000002265046A350> .. GENERATED FROM PYTHON SOURCE LINES 159-162 Create setup ~~~~~~~~~~~~ Create the setup and define a frequency sweep to solve the project. .. GENERATED FROM PYTHON SOURCE LINES 162-170 .. code-block:: Python setup1 = hfss.create_setup(name="setup1") setup1.props["Frequency"] = "10GHz" hfss.create_linear_count_sweep(setup="setup1", units="GHz", start_frequency=1e-3, stop_frequency=50, num_of_freq_points=451, sweep_type="Interpolating") hfss.save_project() hfss.analyze() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 171-175 Get report data ~~~~~~~~~~~~~~~ Get report data and use the following formulas to calculate the inductance and quality factor. .. GENERATED FROM PYTHON SOURCE LINES 175-179 .. code-block:: Python L_formula = "1e9*im(1/Y(1,1))/(2*pi*freq)" Q_formula = "im(Y(1,1))/re(Y(1,1))" .. GENERATED FROM PYTHON SOURCE LINES 180-183 Create output variable ~~~~~~~~~~~~~~~~~~~~~~ Create output variable .. GENERATED FROM PYTHON SOURCE LINES 183-185 .. code-block:: Python hfss.create_output_variable("L", L_formula, solution="setup1 : LastAdaptive") .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 186-189 Plot calculated values in Matplotlib ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plot the calculated values in Matplotlib. .. GENERATED FROM PYTHON SOURCE LINES 189-193 .. code-block:: Python data = hfss.post.get_solution_data([L_formula, Q_formula]) data.plot(curves=[L_formula, Q_formula], formula="re", x_label="Freq", y_label="L and Q") .. image-sg:: /examples/02-HFSS/images/sphx_glr_HFSS_Spiral_002.png :alt: Simulation Results Plot :srcset: /examples/02-HFSS/images/sphx_glr_HFSS_Spiral_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument. <Figure size 2000x1000 with 1 Axes> .. GENERATED FROM PYTHON SOURCE LINES 194-197 Export results to csv file ~~~~~~~~~~~~~~~~~~~~~~~~~~ Export results to csv file .. GENERATED FROM PYTHON SOURCE LINES 197-199 .. code-block:: Python data.export_data_to_csv(os.path.join(hfss.toolkit_directory, "output.csv")) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 200-203 Save project and close AEDT ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Save the project and close AEDT. .. GENERATED FROM PYTHON SOURCE LINES 203-206 .. code-block:: Python hfss.save_project(project_name) hfss.release_desktop() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (1 minutes 48.453 seconds) .. _sphx_glr_download_examples_02-HFSS_HFSS_Spiral.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: HFSS_Spiral.ipynb <HFSS_Spiral.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: HFSS_Spiral.py <HFSS_Spiral.py>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_