.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "examples\07-EMIT\EMIT_Example.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_examples_07-EMIT_EMIT_Example.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_examples_07-EMIT_EMIT_Example.py:


EMIT: antenna
---------------------
This example shows how you can use PyAEDT to create a project in EMIT for
the simulation of an antenna.

.. GENERATED FROM PYTHON SOURCE LINES 8-13

Perform required inputs
~~~~~~~~~~~~~~~~~~~~~~~
Perform required imports.

sphinx_gallery_thumbnail_path = "Resources/emit_simple_cosite.png"

.. GENERATED FROM PYTHON SOURCE LINES 13-18

.. code-block:: Python


    import os
    import pyaedt
    from pyaedt.emit_core.emit_constants import TxRxMode, ResultType








.. GENERATED FROM PYTHON SOURCE LINES 19-22

Set AEDT version
~~~~~~~~~~~~~~~~
Set AEDT version.

.. GENERATED FROM PYTHON SOURCE LINES 22-25

.. code-block:: Python


    aedt_version = "2024.1"








.. GENERATED FROM PYTHON SOURCE LINES 26-32

Set non-graphical mode
~~~~~~~~~~~~~~~~~~~~~~
Set non-graphical mode. 
You can set ``non_graphical`` either to ``True`` or ``False``.
The ``NewThread`` Boolean variable defines whether to create a new instance
of AEDT or try to connect to existing instance of it if one is available.

.. GENERATED FROM PYTHON SOURCE LINES 32-36

.. code-block:: Python


    non_graphical = False
    NewThread = True








.. GENERATED FROM PYTHON SOURCE LINES 37-41

Launch AEDT with EMIT
~~~~~~~~~~~~~~~~~~~~~
Launch AEDT with EMIT. The ``Desktop`` class initializes AEDT and starts it
on the specified version and in the specified graphical mode.

.. GENERATED FROM PYTHON SOURCE LINES 41-46

.. code-block:: Python


    d = pyaedt.launch_desktop(aedt_version, non_graphical, NewThread)
    aedtapp = pyaedt.Emit(pyaedt.generate_unique_project_name())






.. 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 5484 is still running
      _warn("subprocess %s is still running" % self.pid,
    C:\actions-runner\_work\pyaedt\pyaedt\.venv\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




.. GENERATED FROM PYTHON SOURCE LINES 47-50

Create and connect EMIT components
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create three radios and connect an antenna to each one.

.. GENERATED FROM PYTHON SOURCE LINES 50-60

.. code-block:: Python


    rad1 = aedtapp.modeler.components.create_component("New Radio")
    ant1 = aedtapp.modeler.components.create_component("Antenna")
    if rad1 and ant1:
        ant1.move_and_connect_to(rad1)

    # Convenience method to create a radio and antenna connected together
    rad2, ant2 = aedtapp.modeler.components.create_radio_antenna("GPS Receiver")
    rad3, ant3 = aedtapp.modeler.components.create_radio_antenna("Bluetooth Low Energy (LE)", "Bluetooth")








.. GENERATED FROM PYTHON SOURCE LINES 61-65

Define coupling among RF systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Define the coupling among the RF systems. This portion of the EMIT API is not
yet implemented.

.. GENERATED FROM PYTHON SOURCE LINES 68-73

Run EMIT simulation
~~~~~~~~~~~~~~~~~~~
Run the EMIT simulation. 

This part of the example requires Ansys AEDT 2023 R2. 

.. GENERATED FROM PYTHON SOURCE LINES 73-87

.. code-block:: Python


    if aedt_version > "2023.1" and os.getenv("PYAEDT_DOC_GENERATION", "False") != "1":
        rev = aedtapp.results.analyze()
        rx_bands = rev.get_band_names(rad2.name, TxRxMode.RX) 
        tx_bands = rev.get_band_names(rad3.name, TxRxMode.TX) 
        domain = aedtapp.results.interaction_domain()
        domain.set_receiver(rad2.name, rx_bands[0], -1)
        domain.set_interferer(rad3.name,tx_bands[0])
        interaction = rev.run(domain)
        worst = interaction.get_worst_instance(ResultType.EMI)
        if worst.has_valid_values():
            emi = worst.get_value(ResultType.EMI)
            print("Worst case interference is: {} dB".format(emi))








.. GENERATED FROM PYTHON SOURCE LINES 88-93

Save project and close AEDT
~~~~~~~~~~~~~~~~~~~~~~~~~~~
After the simulation completes, you can close AEDT or release it using the
:func:`pyaedt.Desktop.force_close_desktop` method.
All methods provide for saving the project before closing.

.. GENERATED FROM PYTHON SOURCE LINES 93-96

.. code-block:: Python


    aedtapp.save_project()
    aedtapp.release_desktop(close_projects=True, close_desktop=True)




.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    True




.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 38.010 seconds)


.. _sphx_glr_download_examples_07-EMIT_EMIT_Example.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: EMIT_Example.ipynb <EMIT_Example.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: EMIT_Example.py <EMIT_Example.py>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_