.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "examples\02-SBR+\SBR_Doppler_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_02-SBR+_SBR_Doppler_Example.py>`
        to download the full example code.

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

.. _sphx_glr_examples_02-SBR+_SBR_Doppler_Example.py:


SBR+: doppler setup
-------------------
This example shows how you can use PyAEDT to create a multipart scenario in HFSS SBR+
and set up a doppler analysis.

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

.. code-block:: Python


    aedt_version = "2024.1"

    # Launch AEDT
    # ~~~~~~~~~~~
    # Launch AEDT.

    projectname = "MicroDoppler_with_ADP"
    designname = "doppler"
    library_path = pyaedt.downloads.download_multiparts()








.. GENERATED FROM PYTHON SOURCE LINES 32-36

Set non-graphical mode
~~~~~~~~~~~~~~~~~~~~~~
Set non-graphical mode. 
You can set ``non_graphical`` either to ``True`` or ``False``.

.. GENERATED FROM PYTHON SOURCE LINES 36-39

.. code-block:: Python


    non_graphical = False








.. GENERATED FROM PYTHON SOURCE LINES 40-43

Download and open project
~~~~~~~~~~~~~~~~~~~~~~~~~
Download and open the project.

.. GENERATED FROM PYTHON SOURCE LINES 43-58

.. code-block:: Python


    project_name = pyaedt.generate_unique_project_name(project_name="doppler")

    # Instantiate the application.
    app = pyaedt.Hfss(
        specified_version=aedt_version,
        solution_type="SBR+",
        new_desktop_session=True,
        projectname=project_name,
        close_on_exit=True,
        non_graphical=non_graphical
    )

    app.autosave_disable()





.. 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 7380 is still running
      _warn("subprocess %s is still running" % self.pid,

    True



.. GENERATED FROM PYTHON SOURCE LINES 59-62

Save project and rename design
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Save the project to the temporary folder and rename the design.

.. GENERATED FROM PYTHON SOURCE LINES 62-66

.. code-block:: Python


    app.save_project()
    app.rename_design(designname)





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

 .. code-block:: none


    True



.. GENERATED FROM PYTHON SOURCE LINES 67-70

Set up library paths
~~~~~~~~~~~~~~~~~~~~
Set up library paths to 3D components.

.. GENERATED FROM PYTHON SOURCE LINES 70-80

.. code-block:: Python


    actor_lib = os.path.join(library_path, "actor_library")
    env_lib = os.path.join(library_path, "environment_library")
    radar_lib = os.path.join(library_path, "radar_modules")
    env_folder = os.path.join(env_lib, "road1")
    person_folder = os.path.join(actor_lib, "person3")
    car_folder = os.path.join(actor_lib, "vehicle1")
    bike_folder = os.path.join(actor_lib, "bike1")
    bird_folder = os.path.join(actor_lib, "bird1")








.. GENERATED FROM PYTHON SOURCE LINES 81-84

Define environment
~~~~~~~~~~~~~~~~~~
Define the background environment.

.. GENERATED FROM PYTHON SOURCE LINES 84-88

.. code-block:: Python


    road1 = app.modeler.add_environment(input_dir=env_folder, name="Bari")
    prim = app.modeler








.. GENERATED FROM PYTHON SOURCE LINES 89-93

Place actors
~~~~~~~~~~~~
Place actors in the environment. This code places persons, birds, bikes, and cars
in the environment.

.. GENERATED FROM PYTHON SOURCE LINES 93-104

.. code-block:: Python


    person1 = app.modeler.add_person(input_dir=person_folder, speed=1.0, global_offset=[25, 1.5, 0], yaw=180,
                                     name="Massimo")
    person2 = app.modeler.add_person(input_dir=person_folder, speed=1.0, global_offset=[25, 2.5, 0], yaw=180, name="Devin")
    car1 = app.modeler.add_vehicle(input_dir=car_folder, speed=8.7, global_offset=[3, -2.5, 0], name="LuxuryCar")
    bike1 = app.modeler.add_vehicle(input_dir=bike_folder, speed=2.1, global_offset=[24, 3.6, 0], yaw=180,
                                    name="Alberto_in_bike")
    bird1 = app.modeler.add_bird(input_dir=bird_folder, speed=1.0, global_offset=[19, 4, 3], yaw=120, pitch=-5,
                                 flapping_rate=30, name="Pigeon")
    bird2 = app.modeler.add_bird(input_dir=bird_folder, speed=1.0, global_offset=[6, 2, 3], yaw=-60, pitch=10, name="Eagle")








.. GENERATED FROM PYTHON SOURCE LINES 105-109

Place radar
~~~~~~~~~~~
Place radar on the car. The radar is created relative to the car's coordinate
system.

.. GENERATED FROM PYTHON SOURCE LINES 109-113

.. code-block:: Python


    radar1 = app.create_sbr_radar_from_json(radar_file=radar_lib, name="Example_1Tx_1Rx", offset=[2.57, 0, 0.54],
                                            use_relative_cs=True, relative_cs_name=car1.cs_name)








.. GENERATED FROM PYTHON SOURCE LINES 114-119

Create setup
~~~~~~~~~~~~
Create setup and validate it. The ``create_sbr_pulse_doppler_setup`` method
creates a setup and a parametric sweep on the time variable with a
duration of two seconds. The step is computed automatically from CPI.

.. GENERATED FROM PYTHON SOURCE LINES 119-124

.. code-block:: Python


    setup, sweep = app.create_sbr_pulse_doppler_setup(sweep_time_duration=2)
    app.set_sbr_current_sources_options()
    app.validate_simple()





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

 .. code-block:: none


    1



.. GENERATED FROM PYTHON SOURCE LINES 125-128

Plot model
~~~~~~~~~~
Plot the model.

.. GENERATED FROM PYTHON SOURCE LINES 128-131

.. code-block:: Python


    app.plot(show=False, export_path=os.path.join(app.working_directory, "Image.jpg"), plot_air_objects=True)




.. image-sg:: /examples/02-SBR+/images/sphx_glr_SBR_Doppler_Example_001.png
   :alt: SBR Doppler Example
   :srcset: /examples/02-SBR+/images/sphx_glr_SBR_Doppler_Example_001.png
   :class: sphx-glr-single-img


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

 .. code-block:: none


    <pyaedt.generic.plot.ModelPlotter object at 0x000002264A6DCA00>



.. GENERATED FROM PYTHON SOURCE LINES 132-136

Solve and release AEDT
~~~~~~~~~~~~~~~~~~~~~~
Solve and release AEDT. To solve, uncomment the ``app.analyze_setup`` command
to activate the simulation. 

.. GENERATED FROM PYTHON SOURCE LINES 136-140

.. code-block:: Python


    # app.analyze_setup(sweep.name)
    app.save_project()
    app.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:** (1 minutes 9.312 seconds)


.. _sphx_glr_download_examples_02-SBR+_SBR_Doppler_Example.py:

.. only:: html

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

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

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

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

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


.. only:: html

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

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