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

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

.. _sphx_glr_examples_07-TwinBuilder_02-Wiring_A_Rectifier.py:


Twin Builder: wiring a rectifier with a capacitor filter
---------------------------------------------------------
This example shows how you can use PyAEDT to create a Twin Builder design
and run a Twin Builder time-domain simulation.

.. GENERATED FROM PYTHON SOURCE LINES 9-12

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

.. GENERATED FROM PYTHON SOURCE LINES 12-17

.. code-block:: Python


    import math
    import matplotlib.pyplot as plt
    import pyaedt








.. GENERATED FROM PYTHON SOURCE LINES 18-21

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

.. GENERATED FROM PYTHON SOURCE LINES 21-24

.. code-block:: Python


    aedt_version = "2024.1"








.. GENERATED FROM PYTHON SOURCE LINES 25-34

Select version and set launch options
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Select the Twin Builder version and set the launch options. The following code
launches Twin Builder in graphical mode.

You can change the Boolean parameter ``non_graphical`` to ``True`` to launch
Twin Builder in non-graphical mode. You can also change the Boolean parameter
``new_thread`` to ``False`` to launch Twin Builder in an existing AEDT session
if one is running.

.. GENERATED FROM PYTHON SOURCE LINES 34-38

.. code-block:: Python


    non_graphical = False
    new_thread = True








.. GENERATED FROM PYTHON SOURCE LINES 39-43

Launch Twin Builder
~~~~~~~~~~~~~~~~~~~
Launch Twin Builder using an implicit declaration and add a new design with
a default setup.

.. GENERATED FROM PYTHON SOURCE LINES 43-50

.. code-block:: Python


    tb = pyaedt.TwinBuilder(projectname=pyaedt.generate_unique_project_name(),
                            specified_version=aedt_version,
                            non_graphical=non_graphical,
                            new_desktop_session=new_thread
                            )





.. 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 5396 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 51-54

Create components for bridge rectifier
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create components for a bridge rectifier with a capacitor filter.

.. GENERATED FROM PYTHON SOURCE LINES 54-82

.. code-block:: Python

 
    # Define the grid distance for ease in calculations.

    G = 0.00254

    # Create an AC sinosoidal source component.

    source = tb.modeler.schematic.create_voltage_source("V_AC", "ESINE", 100, 50, [-1 * G, 0])

    # Create the four diodes of the bridge rectifier.

    diode1 = tb.modeler.schematic.create_diode(location=[10 * G, 6 * G], angle=270)
    diode2 = tb.modeler.schematic.create_diode(location=[20 * G, 6 * G], angle=270)
    diode3 = tb.modeler.schematic.create_diode(location=[10 * G, -4 * G], angle=270)
    diode4 = tb.modeler.schematic.create_diode(location=[20 * G, -4 * G], angle=270)

    # Create a capacitor filter.

    capacitor = tb.modeler.schematic.create_capacitor(value=1e-6, location=[29 * G, -10 * G])

    # Create a load resistor.

    resistor = tb.modeler.schematic.create_resistor(value=100000, location=[39 * G, -10 * G])

    # Create a ground.

    gnd = tb.modeler.components.create_gnd(location=[5 * G, -16 * G])








.. GENERATED FROM PYTHON SOURCE LINES 83-86

Connect components
~~~~~~~~~~~~~~~~~~
Connect components with wires.

.. GENERATED FROM PYTHON SOURCE LINES 86-113

.. code-block:: Python


    # Wire the diode bridge.

    tb.modeler.schematic.create_wire(points=[diode1.pins[0].location, diode3.pins[0].location])
    tb.modeler.schematic.create_wire(points=[diode2.pins[1].location, diode4.pins[1].location])
    tb.modeler.schematic.create_wire(points=[diode1.pins[1].location, diode2.pins[0].location])
    tb.modeler.schematic.create_wire(points=[diode3.pins[1].location, diode4.pins[0].location])

    # Wire the AC source.

    tb.modeler.schematic.create_wire(points=[source.pins[1].location, [0, 10 * G], [15 * G, 10 * G], [15 * G, 5 * G]])
    tb.modeler.schematic.create_wire(points=[source.pins[0].location, [0, -10 * G], [15 * G, -10 * G], [15 * G, -5 * G]])

    # Wire the filter capacitor and load resistor.

    tb.modeler.schematic.create_wire(points=[resistor.pins[0].location, [40 * G, 0], [22 * G, 0]])
    tb.modeler.schematic.create_wire(points=[capacitor.pins[0].location, [30 * G, 0]])

    # Wire the ground.

    tb.modeler.schematic.create_wire(points=[resistor.pins[1].location, [40 * G, -15 * G], gnd.pins[0].location])
    tb.modeler.schematic.create_wire(points=[capacitor.pins[1].location, [30 * G, -15 * G]])
    tb.modeler.schematic.create_wire(points=[gnd.pins[0].location, [5 * G, 0], [8 * G, 0]])

    # Zoom to fit the schematic
    tb.modeler.zoom_to_fit()








.. GENERATED FROM PYTHON SOURCE LINES 114-117

Parametrize transient setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Parametrize the default transient setup by setting the end time.

.. GENERATED FROM PYTHON SOURCE LINES 117-120

.. code-block:: Python


    tb.set_end_time("100ms")





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

 .. code-block:: none


    True



.. GENERATED FROM PYTHON SOURCE LINES 121-124

Solve transient setup
~~~~~~~~~~~~~~~~~~~~~
Solve the transient setup.

.. GENERATED FROM PYTHON SOURCE LINES 124-127

.. code-block:: Python


    tb.analyze_setup("TR")





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

 .. code-block:: none


    True



.. GENERATED FROM PYTHON SOURCE LINES 128-133

Get report data and plot using Matplotlib
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Get report data and plot it using Matplotlib. The following code gets and plots
the values for the voltage on the pulse voltage source and the values for the
voltage on the capacitor in the RC circuit.

.. GENERATED FROM PYTHON SOURCE LINES 133-147

.. code-block:: Python


    E_Value = "V_AC.V"
    x = tb.post.get_solution_data(E_Value, "TR", "Time")
    plt.plot(x.intrinsics["Time"], x.data_real(E_Value))

    R_Value = "R1.V"
    x = tb.post.get_solution_data(R_Value, "TR", "Time")
    plt.plot(x.intrinsics["Time"], x.data_real(R_Value))

    plt.grid()
    plt.xlabel("Time")
    plt.ylabel("AC to DC Conversion using Rectifier")
    plt.show()




.. image-sg:: /examples/07-TwinBuilder/images/sphx_glr_02-Wiring_A_Rectifier_001.png
   :alt: 02 Wiring A Rectifier
   :srcset: /examples/07-TwinBuilder/images/sphx_glr_02-Wiring_A_Rectifier_001.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 148-152

Close Twin Builder
~~~~~~~~~~~~~~~~~~
After the simulation is completed, you can close Twin Builder or release it.
All methods provide for saving the project before closing.

.. GENERATED FROM PYTHON SOURCE LINES 152-154

.. code-block:: Python


    tb.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 53.633 seconds)


.. _sphx_glr_download_examples_07-TwinBuilder_02-Wiring_A_Rectifier.py:

.. only:: html

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

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

      :download:`Download Jupyter notebook: 02-Wiring_A_Rectifier.ipynb <02-Wiring_A_Rectifier.ipynb>`

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

      :download:`Download Python source code: 02-Wiring_A_Rectifier.py <02-Wiring_A_Rectifier.py>`


.. only:: html

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

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