Bowtie antenna synthesis#
This example demonstrates how to synthesize a bowtie antenna using the BowTieRounded
class. It initiates AEDT through PyAEDT, sets up an empty HFSS design, and proceeds to create the antenna.
Perform required imports#
Import the antenna toolkit class and PyAEDT.
[1]:
import tempfile
[2]:
import ansys.aedt.core
[3]:
from ansys.aedt.toolkits.antenna.backend.antenna_models.bowtie import BowTieRounded
Set AEDT version#
Set AEDT version.
[4]:
aedt_version = "2025.1"
Set non-graphical mode#
Set non-graphical mode.
[5]:
non_graphical = True
Create temporary directory#
[6]:
temp_dir = tempfile.TemporaryDirectory(suffix="_ansys")
project_name = ansys.aedt.core.generate_unique_project_name(root_name=temp_dir.name, project_name="bowtie_example")
Create antenna object only for synthesis#
Create antenna object.
[7]:
oantenna1 = BowTieRounded(None)
print(
"Arm length: {}{} at {}{}".format(
str(oantenna1.synthesis_parameters.arm_length.value),
oantenna1.length_unit,
oantenna1.frequency,
oantenna1.frequency_unit,
)
)
Arm length: 3.7mm at 10.0GHz
Change synthesis frequency#
Modify resonance frequency and modify parameters.
[8]:
oantenna1.frequency = 12.0
print(
"Arm length: {}{} at {}{}".format(
str(oantenna1.synthesis_parameters.arm_length.value),
oantenna1.length_unit,
oantenna1.frequency,
oantenna1.frequency_unit,
)
)
Arm length: 3.03mm at 12.0GHz
Create an empty HFSS design#
Create an empty HFSS design.
[9]:
app = ansys.aedt.core.Hfss(project=project_name, version=aedt_version, non_graphical=non_graphical)
PyAEDT INFO: Python version 3.12.10 (tags/v3.12.10:0cc8128, Apr 8 2025, 12:21:36) [MSC v.1943 64 bit (AMD64)].
PyAEDT INFO: PyAEDT version 0.16.1.
PyAEDT INFO: Initializing new Desktop session.
PyAEDT INFO: Log on console is enabled.
PyAEDT INFO: Log on file C:\Users\ansys\AppData\Local\Temp\pyaedt_ansys_c87f5c30-5080-4b4c-8379-fdaf94c4e0aa.log is enabled.
PyAEDT INFO: Log on AEDT is disabled.
PyAEDT INFO: Debug logger is disabled. PyAEDT methods will not be logged.
PyAEDT INFO: Launching PyAEDT with gRPC plugin.
PyAEDT INFO: New AEDT session is starting on gRPC port 53622.
PyAEDT INFO: Electronics Desktop started on gRPC port: 53622 after 6.1437201499938965 seconds.
PyAEDT INFO: AEDT installation Path C:\Program Files\ANSYS Inc\v251\AnsysEM
PyAEDT INFO: Ansoft.ElectronicsDesktop.2025.1 version started with process ID 12404.
PyAEDT INFO: Project bowtie_example has been created.
PyAEDT INFO: No design is present. Inserting a new design.
PyAEDT INFO: Added design 'HFSS_5WF' of type HFSS.
PyAEDT INFO: Aedt Objects correctly read
Create antenna in HFSS#
Create antenna object, change frequency synthesis, create antenna, and set up in HFSS.
[10]:
oantenna1 = BowTieRounded(app)
PyAEDT INFO: Modeler class has been initialized! Elapsed time: 0m 0sec
PyAEDT INFO: Materials class has been initialized! Elapsed time: 0m 0sec
C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\advanced\misc.py:43: UserWarning: The PyVista module is required to run functionalities of ansys.aedt.core.visualization.advanced.misc.
Install with
pip install pyvista
warnings.warn(
[11]:
# Create antenna in HFSS.
oantenna1.model_hfss()
PyAEDT WARNING: Property Command is read-only.
PyAEDT INFO: Parsing design objects. This operation can take time
PyAEDT INFO: Refreshing bodies from Object Info
PyAEDT INFO: Bodies Info Refreshed Elapsed time: 0m 0sec
PyAEDT INFO: 3D Modeler objects parsed. Elapsed time: 0m 0sec
PyAEDT INFO: Union of 2 objects has been executed.
PyAEDT WARNING: Property Command is read-only.
PyAEDT WARNING: Property Command is read-only.
Create antenna setup.
[12]:
oantenna1.setup_hfss()
PyAEDT INFO: Boundary Perfect E PerfE_3YZ2X5 has been created.
PyAEDT INFO: Boundary Perfect E PerfE_DQ5C92 has been created.
PyAEDT INFO: Boundary AutoIdentify port_Patch_L1MKBJ_1 has been created.
[12]:
True
Change default name.
[13]:
oantenna1.name = "MyAmazingAntenna"
Create antenna in HFSS#
Create antenna object, change origin parameter in the antenna definition, create antenna, and set up in HFSS.
[14]:
oantenna2 = BowTieRounded(app, origin=[2, 5, 0], name="MyAntenna")
oantenna2.model_hfss()
oantenna2.setup_hfss()
PyAEDT WARNING: Property Command is read-only.
PyAEDT INFO: Parsing design objects. This operation can take time
PyAEDT INFO: Refreshing bodies from Object Info
PyAEDT INFO: Bodies Info Refreshed Elapsed time: 0m 0sec
PyAEDT INFO: 3D Modeler objects parsed. Elapsed time: 0m 0sec
PyAEDT INFO: Union of 2 objects has been executed.
PyAEDT WARNING: Property Command is read-only.
PyAEDT WARNING: Property Command is read-only.
PyAEDT INFO: Boundary Perfect E PerfE_X5D56H has been created.
PyAEDT INFO: Boundary Perfect E PerfE_EC9CEV has been created.
PyAEDT INFO: Boundary AutoIdentify port_MyAntenna_1 has been created.
[14]:
True
Plot HFSS model#
Plot geometry with PyVista.
[15]:
app.plot()
C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\plot\pyvista.py:53: UserWarning: The PyVista module is required to run some functionalities of PostProcess.
Install with
pip install pyvista
warnings.warn(
PyAEDT INFO: Parsing C:/Users/ansys/AppData/Local/Temp/tmpko4j9e7__ansys/pyaedt_prj_OGW/bowtie_example.aedt.
PyAEDT INFO: File C:/Users/ansys/AppData/Local/Temp/tmpko4j9e7__ansys/pyaedt_prj_OGW/bowtie_example.aedt correctly loaded. Elapsed time: 0m 0sec
PyAEDT INFO: aedt file load time 0.015562295913696289
PyAEDT INFO: PostProcessor class has been initialized! Elapsed time: 0m 0sec
PyAEDT INFO: PostProcessor class has been initialized! Elapsed time: 0m 0sec
PyAEDT INFO: Post class has been initialized! Elapsed time: 0m 0sec
PyAEDT ERROR: **************************************************************
PyAEDT ERROR: File "<frozen runpy>", line 198, in _run_module_as_main
PyAEDT ERROR: File "<frozen runpy>", line 88, in _run_code
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel_launcher.py", line 18, in <module>
PyAEDT ERROR: app.launch_new_instance()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\traitlets\config\application.py", line 1075, in launch_instance
PyAEDT ERROR: app.start()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelapp.py", line 739, in start
PyAEDT ERROR: self.io_loop.start()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\tornado\platform\asyncio.py", line 205, in start
PyAEDT ERROR: self.asyncio_loop.run_forever()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\base_events.py", line 645, in run_forever
PyAEDT ERROR: self._run_once()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\base_events.py", line 1999, in _run_once
PyAEDT ERROR: handle._run()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\events.py", line 88, in _run
PyAEDT ERROR: self._context.run(self._callback, *self._args)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 545, in dispatch_queue
PyAEDT ERROR: await self.process_one()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 534, in process_one
PyAEDT ERROR: await dispatch(*args)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 437, in dispatch_shell
PyAEDT ERROR: await result
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\ipkernel.py", line 362, in execute_request
PyAEDT ERROR: await super().execute_request(stream, ident, parent)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 778, in execute_request
PyAEDT ERROR: reply_content = await reply_content
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\ipkernel.py", line 449, in do_execute
PyAEDT ERROR: res = shell.run_cell(
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\zmqshell.py", line 549, in run_cell
PyAEDT ERROR: return super().run_cell(*args, **kwargs)
PyAEDT ERROR: File "C:\Users\ansys\AppData\Local\Temp\ipykernel_1464\123557834.py", line 1, in <module>
PyAEDT ERROR: app.plot()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\internal\checks.py", line 85, in wrapper
PyAEDT ERROR: return method(self, *args, **kwargs)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\application\analysis_3d.py", line 285, in plot
PyAEDT ERROR: return self.post.plot_model_obj(
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\post\post_common_3d.py", line 2009, in plot_model_obj
PyAEDT ERROR: model.plot()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\plot\pyvista.py", line 1379, in plot
PyAEDT ERROR: self.populate_pyvista_object()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\plot\pyvista.py", line 1257, in populate_pyvista_object
PyAEDT ERROR: self.pv = pv.Plotter(notebook=self.is_notebook, off_screen=self.off_screen, window_size=self.windows_size)
PyAEDT ERROR: ^^
PyAEDT ERROR: Name 'pv' is not defined on populate_pyvista_object
PyAEDT ERROR: Last Electronics Desktop Message - [error] script macro error: command is read only. (04:04:50 pm may 14, 2025)
PyAEDT ERROR: **************************************************************
PyAEDT ERROR: **************************************************************
PyAEDT ERROR: File "<frozen runpy>", line 198, in _run_module_as_main
PyAEDT ERROR: File "<frozen runpy>", line 88, in _run_code
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel_launcher.py", line 18, in <module>
PyAEDT ERROR: app.launch_new_instance()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\traitlets\config\application.py", line 1075, in launch_instance
PyAEDT ERROR: app.start()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelapp.py", line 739, in start
PyAEDT ERROR: self.io_loop.start()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\tornado\platform\asyncio.py", line 205, in start
PyAEDT ERROR: self.asyncio_loop.run_forever()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\base_events.py", line 645, in run_forever
PyAEDT ERROR: self._run_once()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\base_events.py", line 1999, in _run_once
PyAEDT ERROR: handle._run()
PyAEDT ERROR: File "C:\actions-runner\_work\_tool\Python\3.12.10\x64\Lib\asyncio\events.py", line 88, in _run
PyAEDT ERROR: self._context.run(self._callback, *self._args)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 545, in dispatch_queue
PyAEDT ERROR: await self.process_one()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 534, in process_one
PyAEDT ERROR: await dispatch(*args)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 437, in dispatch_shell
PyAEDT ERROR: await result
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\ipkernel.py", line 362, in execute_request
PyAEDT ERROR: await super().execute_request(stream, ident, parent)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\kernelbase.py", line 778, in execute_request
PyAEDT ERROR: reply_content = await reply_content
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\ipkernel.py", line 449, in do_execute
PyAEDT ERROR: res = shell.run_cell(
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ipykernel\zmqshell.py", line 549, in run_cell
PyAEDT ERROR: return super().run_cell(*args, **kwargs)
PyAEDT ERROR: File "C:\Users\ansys\AppData\Local\Temp\ipykernel_1464\123557834.py", line 1, in <module>
PyAEDT ERROR: app.plot()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\internal\checks.py", line 85, in wrapper
PyAEDT ERROR: return method(self, *args, **kwargs)
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\application\analysis_3d.py", line 285, in plot
PyAEDT ERROR: return self.post.plot_model_obj(
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\post\post_common_3d.py", line 2009, in plot_model_obj
PyAEDT ERROR: model.plot()
PyAEDT ERROR: File "C:\actions-runner\_work\pyaedt-toolkits-antenna\pyaedt-toolkits-antenna\.venv\Lib\site-packages\ansys\aedt\core\visualization\plot\pyvista.py", line 1394, in plot
PyAEDT ERROR: self.pv.add_key_event("s", s_callback)
PyAEDT ERROR: ^^^^^^^^^^^^^^^^^^^^^
PyAEDT ERROR: 'nonetype' object has no attribute 'add_key_event' on plot
PyAEDT ERROR: Last Electronics Desktop Message - [error] script macro error: command is read only. (04:04:50 pm may 14, 2025)
PyAEDT ERROR: **************************************************************
[15]:
<ansys.aedt.core.visualization.plot.pyvista.ModelPlotter at 0x21eeb8a0170>
Release AEDT#
Release AEDT.
[16]:
app.release_desktop(True, True)
PyAEDT INFO: Desktop has been released and closed.
[16]:
True
Clean temporary directory#
[17]:
temp_dir.cleanup()