.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\06-Multiphysics\Hfss_Mechanical.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_06-Multiphysics_Hfss_Mechanical.py: Multiphysics: HFSS-Mechanical multiphysics analysis --------------------------------------------------- This example shows how you can use PyAEDT to create a multiphysics workflow that includes Circuit, HFSS, and Mechanical. .. GENERATED FROM PYTHON SOURCE LINES 9-12 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports. .. GENERATED FROM PYTHON SOURCE LINES 12-16 .. code-block:: Python import os import pyaedt .. GENERATED FROM PYTHON SOURCE LINES 17-20 Set AEDT version ~~~~~~~~~~~~~~~~ Set AEDT version. .. GENERATED FROM PYTHON SOURCE LINES 20-23 .. code-block:: Python aedt_version = "2024.1" .. GENERATED FROM PYTHON SOURCE LINES 24-28 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. You can set ``non_graphical`` either to ``True`` or ``False``. .. GENERATED FROM PYTHON SOURCE LINES 28-31 .. code-block:: Python non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 32-35 Download and open project ~~~~~~~~~~~~~~~~~~~~~~~~~ Download and open the project. Save it to the temporary folder. .. GENERATED FROM PYTHON SOURCE LINES 35-38 .. code-block:: Python project_temp_name = pyaedt.downloads.download_via_wizard(pyaedt.generate_unique_folder_name()) .. GENERATED FROM PYTHON SOURCE LINES 39-42 Start HFSS ~~~~~~~~~~ Start HFSS and initialize the PyAEDT object. .. GENERATED FROM PYTHON SOURCE LINES 42-48 .. code-block:: Python hfss = pyaedt.Hfss(projectname=project_temp_name, specified_version=aedt_version, non_graphical=non_graphical, new_desktop_session=True) pin_names = hfss.excitations hfss.change_material_override(True) .. rst-class:: sphx-glr-script-out .. code-block:: none C:\actions-runner\_work\_tool\Python\3.10.9\x64\lib\subprocess.py:1072: ResourceWarning: subprocess 8952 is still running _warn("subprocess %s is still running" % self.pid, C:\actions-runner\_work\pyaedt\pyaedt\testenv\lib\site-packages\pyaedt\generic\settings.py:383: ResourceWarning: unclosed file <_io.TextIOWrapper name='D:\\Temp\\pyaedt_ansys.log' mode='a' encoding='cp1252'> self._logger = val True .. GENERATED FROM PYTHON SOURCE LINES 49-52 Start Circuit ~~~~~~~~~~~~~ Start Circuit and add the HFSS dynamic link component to it. .. GENERATED FROM PYTHON SOURCE LINES 52-56 .. code-block:: Python circuit = pyaedt.Circuit() hfss_comp = circuit.modeler.schematic.add_subcircuit_dynamic_link(hfss) .. GENERATED FROM PYTHON SOURCE LINES 57-61 Set up dynamic link options ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set up dynamic link options. The argument for the ``set_sim_option_on_hfss_subcircuit`` method can be the component name, component ID, or component object. .. GENERATED FROM PYTHON SOURCE LINES 61-67 .. code-block:: Python circuit.modeler.schematic.refresh_dynamic_link(hfss_comp.composed_name) circuit.modeler.schematic.set_sim_option_on_hfss_subcircuit(hfss_comp) hfss_setup_name = hfss.setups[0].name + " : " + hfss.setups[0].sweeps[0].name circuit.modeler.schematic.set_sim_solution_on_hfss_subcircuit(hfss_comp.composed_name, hfss_setup_name) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 68-72 Create ports and excitations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create ports and excitations. Find component pin locations and create interface ports on them. Define the voltage source on the input port. .. GENERATED FROM PYTHON SOURCE LINES 72-93 .. code-block:: Python circuit.modeler.schematic.create_interface_port( name="Excitation_1", location=[hfss_comp.pins[0].location[0], hfss_comp.pins[0].location[1]] ) circuit.modeler.schematic.create_interface_port( name="Excitation_2", location=[hfss_comp.pins[1].location[0], hfss_comp.pins[1].location[1]] ) circuit.modeler.schematic.create_interface_port( name="Port_1", location=[hfss_comp.pins[2].location[0], hfss_comp.pins[2].location[1]] ) circuit.modeler.schematic.create_interface_port( name="Port_2", location=[hfss_comp.pins[3].location[0], hfss_comp.pins[3].location[1]] ) voltage = 1 phase = 0 ports_list = ["Excitation_1", "Excitation_2"] source = circuit.assign_voltage_sinusoidal_excitation_to_ports(ports_list) source.ac_magnitude = voltage source.phase = phase .. GENERATED FROM PYTHON SOURCE LINES 94-97 Create setup ~~~~~~~~~~~~ Create a setup. .. GENERATED FROM PYTHON SOURCE LINES 97-107 .. code-block:: Python setup_name = "MySetup" LNA_setup = circuit.create_setup(name=setup_name) bw_start = 4.3 bw_stop = 4.4 n_points = 1001 unit = "GHz" sweep_list = ["LINC", str(bw_start) + unit, str(bw_stop) + unit, str(n_points)] LNA_setup.props["SweepDefinition"]["Data"] = " ".join(sweep_list) .. GENERATED FROM PYTHON SOURCE LINES 108-112 Solve and push excitations ~~~~~~~~~~~~~~~~~~~~~~~~~~ Solve the circuit and push excitations to the HFSS model to calculate the correct value of losses. .. GENERATED FROM PYTHON SOURCE LINES 112-117 .. code-block:: Python circuit.analyze() circuit.push_excitations(instance="S1", setup=setup_name) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 118-121 Start Mechanical ~~~~~~~~~~~~~~~~ Start Mechanical and copy bodies from the HFSS project. .. GENERATED FROM PYTHON SOURCE LINES 121-126 .. code-block:: Python mech = pyaedt.Mechanical() mech.copy_solid_bodies_from(hfss) mech.change_material_override(True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 127-130 Get losses from HFSS and assign convection to Mechanical ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get losses from HFSS and assign the convection to Mechanical. .. GENERATED FROM PYTHON SOURCE LINES 130-138 .. code-block:: Python mech.assign_em_losses(design=hfss.design_name, setup=hfss.setups[0].name, sweep="LastAdaptive", map_frequency=hfss.setups[0].props["Frequency"], surface_objects=hfss.get_all_conductors_names()) diels = ["1_pd", "2_pd", "3_pd", "4_pd", "5_pd"] for el in diels: mech.assign_uniform_convection(assignment=[mech.modeler[el].top_face_y, mech.modeler[el].bottom_face_y], convection_value=3) .. GENERATED FROM PYTHON SOURCE LINES 139-142 Plot model ~~~~~~~~~~ Plot the model. .. GENERATED FROM PYTHON SOURCE LINES 142-145 .. code-block:: Python mech.plot(show=False, export_path=os.path.join(mech.working_directory, "Mech.jpg"), plot_air_objects=False) .. image-sg:: /examples/06-Multiphysics/images/sphx_glr_Hfss_Mechanical_001.png :alt: Hfss Mechanical :srcset: /examples/06-Multiphysics/images/sphx_glr_Hfss_Mechanical_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 146-149 Solve and plot thermal results ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Solve and plot the thermal results. .. GENERATED FROM PYTHON SOURCE LINES 149-158 .. code-block:: Python mech.create_setup() mech.save_project() mech.analyze() surfaces = [] for name in mech.get_all_conductors_names(): surfaces.extend(mech.modeler.get_object_faces(name)) mech.post.create_fieldplot_surface(assignment=surfaces, quantity="Temperature") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 159-162 Release AEDT ~~~~~~~~~~~~ Release AEDT. .. GENERATED FROM PYTHON SOURCE LINES 162-164 .. code-block:: Python mech.release_desktop(True, True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (5 minutes 14.088 seconds) .. _sphx_glr_download_examples_06-Multiphysics_Hfss_Mechanical.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Hfss_Mechanical.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: Hfss_Mechanical.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_