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

.. only:: html

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

        :ref:`Go to the end <sphx_glr_download_examples_01-Modeling-Setup_Optimetrics.py>`
        to download the full example code.

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

.. _sphx_glr_examples_01-Modeling-Setup_Optimetrics.py:


General: optimetrics setup
--------------------------
This example shows how you can use PyAEDT to create a project in HFSS and create all optimetrics setups.

.. GENERATED FROM PYTHON SOURCE LINES 8-11

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

.. GENERATED FROM PYTHON SOURCE LINES 11-16

.. code-block:: Python


    import pyaedt

    import os








.. 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-36

Initialize object and create variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Initialize the ``Hfss`` object and create two needed design variables,
``w1`` and ``w2``.

.. GENERATED FROM PYTHON SOURCE LINES 36-41

.. code-block:: Python


    hfss = pyaedt.Hfss(specified_version=aedt_version, new_desktop_session=True, non_graphical=non_graphical)
    hfss["w1"] = "1mm"
    hfss["w2"] = "100mm"








.. GENERATED FROM PYTHON SOURCE LINES 42-46

Create waveguide with sheets on it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create one of the standard waveguide structures and parametrize it.
You can also create rectangles of waveguide openings and assign ports later.

.. GENERATED FROM PYTHON SOURCE LINES 46-61

.. code-block:: Python


    wg1, p1, p2 = hfss.modeler.create_waveguide(
        [0, 0, 0],
        hfss.AXIS.Y,
        "WG17",
        wg_thickness="w1",
        wg_length="w2",
        create_sheets_on_openings=True,
    )

    model = hfss.plot(show=False)

    model.show_grid = False
    model.plot(os.path.join(hfss.working_directory, "Image.jpg"))




.. image-sg:: /examples/01-Modeling-Setup/images/sphx_glr_Optimetrics_001.png
   :alt: Optimetrics
   :srcset: /examples/01-Modeling-Setup/images/sphx_glr_Optimetrics_001.png
   :class: sphx-glr-single-img


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

 .. code-block:: none


    True



.. GENERATED FROM PYTHON SOURCE LINES 62-65

Create wave ports on sheets
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create two wave ports on the sheets.

.. GENERATED FROM PYTHON SOURCE LINES 65-69

.. code-block:: Python


    hfss.wave_port(p1, integration_line=hfss.AxisDir.ZPos, name="1")
    hfss.wave_port(p2, integration_line=hfss.AxisDir.ZPos, name="2")





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

 .. code-block:: none


    False



.. GENERATED FROM PYTHON SOURCE LINES 70-74

Create setup and frequency sweep
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create a setup and a frequency sweep to use as the base for optimetrics
setups.

.. GENERATED FROM PYTHON SOURCE LINES 74-86

.. code-block:: Python


    setup = hfss.create_setup()
    hfss.create_linear_step_sweep(
        setup_name=setup.name,
        unit="GHz",
        start_frequency=1,
        stop_frequency=5,
        step_size=0.1,
        sweep_name="Sweep1",
        save_fields=True
    )








.. GENERATED FROM PYTHON SOURCE LINES 87-92

Optimetrics analysis
----------------------
Create parametrics analysis
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create a simple optimetrics parametrics analysis with output calculations.

.. GENERATED FROM PYTHON SOURCE LINES 92-98

.. code-block:: Python


    sweep = hfss.parametrics.add("w2", 90, 200, 5)
    sweep.add_variation("w1", 0.1, 2, 10)
    sweep.add_calculation(calculation="dB(S(1,1))", ranges={"Freq": "2.5GHz"})
    sweep.add_calculation(calculation="dB(S(1,1))", ranges={"Freq": "2.6GHz"})








.. GENERATED FROM PYTHON SOURCE LINES 99-102

Create sensitivity analysis
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create an optimetrics sensitivity analysis with output calculations.

.. GENERATED FROM PYTHON SOURCE LINES 102-107

.. code-block:: Python


    sweep2 = hfss.optimizations.add(calculation="dB(S(1,1))", ranges={"Freq": "2.5GHz"}, optim_type="Sensitivity")
    sweep2.add_variation("w1", 0.1, 3, 0.5)
    sweep2.add_calculation(calculation="dB(S(1,1))", ranges={"Freq": "2.6GHz"})








.. GENERATED FROM PYTHON SOURCE LINES 108-111

Create optimization based on goals and calculations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create an optimization analysis based on goals and calculations.

.. GENERATED FROM PYTHON SOURCE LINES 111-122

.. code-block:: Python


    sweep3 = hfss.optimizations.add(calculation="dB(S(1,1))", ranges={"Freq": "2.5GHz"})
    sweep3.add_variation("w1", 0.1, 3, 0.5)
    sweep3.add_goal(calculation="dB(S(1,1))", ranges={"Freq": "2.6GHz"})
    sweep3.add_goal(calculation="dB(S(1,1))", ranges={"Freq": ("2.6GHz", "5GHz")})
    sweep3.add_goal(
        calculation="dB(S(1,1))",
        ranges={"Freq": ("2.6GHz", "5GHz")},
        condition="Maximize",
    )








.. GENERATED FROM PYTHON SOURCE LINES 123-126

Create DX optimization based on a goal and calculation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create a DX (DesignXplorer) optimization based on a goal and a calculation.

.. GENERATED FROM PYTHON SOURCE LINES 126-130

.. code-block:: Python


    sweep4 = hfss.optimizations.add(calculation="dB(S(1,1))", ranges={"Freq": "2.5GHz"}, optim_type="DesignExplorer")
    sweep4.add_goal(calculation="dB(S(1,1))", ranges={"Freq": "2.6GHz"})








.. GENERATED FROM PYTHON SOURCE LINES 131-134

Create DOE based on a goal and calculation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create a DOE (Design of Experiments) based on a goal and a calculation.

.. GENERATED FROM PYTHON SOURCE LINES 134-137

.. code-block:: Python


    sweep5 = hfss.optimizations.add(calculation="dB(S(1,1))", ranges={"Freq": "2.5GHz"}, optim_type="DXDOE")








.. GENERATED FROM PYTHON SOURCE LINES 138-141

Create DOE based on a goal and calculation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create a DOE based on a goal and a calculation.

.. GENERATED FROM PYTHON SOURCE LINES 141-152

.. code-block:: Python


    region = hfss.modeler.create_region()
    hfss.assign_radiation_boundary_to_objects(region)
    hfss.insert_infinite_sphere(name="Infinite_1")
    sweep6 = hfss.optimizations.add(
        calculation="RealizedGainTotal",
        solution=hfss.nominal_adaptive,
        ranges={"Freq": "5GHz", "Theta": ["0deg", "10deg", "20deg"], "Phi": "0deg"},
        context="Infinite_1",
    )








.. GENERATED FROM PYTHON SOURCE LINES 153-158

Close AEDT
----------
After the simulaton completes, you can close AEDT or release it using the
:func:`pyaedt.Desktop.release_desktop` method.
All methods provide for saving the project before closing.

.. GENERATED FROM PYTHON SOURCE LINES 158-160

.. code-block:: Python


    hfss.release_desktop()




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

 .. code-block:: none


    True




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

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


.. _sphx_glr_download_examples_01-Modeling-Setup_Optimetrics.py:

.. only:: html

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

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

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

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

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


.. only:: html

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

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