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

.. only:: html

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

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

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

.. _sphx_glr_examples_03-Maxwell_Maxwell_Magnet.py:


Maxwell 3D: magnet DC analysis
------------------------------
This example shows how you can use PyAEDT to create a Maxwell DC analysis,
compute mass center, and move coordinate systems.

.. GENERATED FROM PYTHON SOURCE LINES 8-11

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

.. GENERATED FROM PYTHON SOURCE LINES 11-17

.. code-block:: Python


    from pyaedt import Maxwell3d
    from pyaedt import generate_unique_project_name
    import os
    import tempfile








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

Create temporary directory
~~~~~~~~~~~~~~~~~~~~~~~~~~
Create temporary directory.

.. GENERATED FROM PYTHON SOURCE LINES 28-31

.. code-block:: Python


    temp_dir = tempfile.TemporaryDirectory(suffix=".ansys")








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

Launch AEDT
~~~~~~~~~~~
Launch AEDT in graphical mode.

.. GENERATED FROM PYTHON SOURCE LINES 43-49

.. code-block:: Python


    m3d = Maxwell3d(projectname=generate_unique_project_name(),
                    specified_version=aedt_version,
                    new_desktop_session=True,
                    non_graphical=non_graphical)





.. 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 5632 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 50-53

Set up Maxwell solution
~~~~~~~~~~~~~~~~~~~~~~~
Set up the Maxwell solution to DC.

.. GENERATED FROM PYTHON SOURCE LINES 53-56

.. code-block:: Python


    m3d.solution_type = m3d.SOLUTIONS.Maxwell3d.ElectroDCConduction








.. GENERATED FROM PYTHON SOURCE LINES 57-60

Create magnet
~~~~~~~~~~~~~
Create a magnet.

.. GENERATED FROM PYTHON SOURCE LINES 60-63

.. code-block:: Python


    magnet = m3d.modeler.create_box(origin=[7, 4, 22], sizes=[10, 5, 30], name="Magnet", material="copper")








.. GENERATED FROM PYTHON SOURCE LINES 64-67

Create setup and assign voltage
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create the setup and assign a voltage.

.. GENERATED FROM PYTHON SOURCE LINES 67-71

.. code-block:: Python


    m3d.assign_voltage(magnet.faces, 0)
    m3d.create_setup()





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

 .. code-block:: none


    SetupName MySetupAuto with 0 Sweeps



.. GENERATED FROM PYTHON SOURCE LINES 72-75

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

.. GENERATED FROM PYTHON SOURCE LINES 75-78

.. code-block:: Python


    m3d.plot(show=False, export_path=os.path.join(temp_dir.name, "Image.jpg"), plot_air_objects=True)




.. image-sg:: /examples/03-Maxwell/images/sphx_glr_Maxwell_Magnet_001.png
   :alt: Maxwell Magnet
   :srcset: /examples/03-Maxwell/images/sphx_glr_Maxwell_Magnet_001.png
   :class: sphx-glr-single-img


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

 .. code-block:: none


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



.. GENERATED FROM PYTHON SOURCE LINES 79-82

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

.. GENERATED FROM PYTHON SOURCE LINES 82-85

.. code-block:: Python


    m3d.analyze()





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

 .. code-block:: none


    True



.. GENERATED FROM PYTHON SOURCE LINES 86-89

Compute mass center
~~~~~~~~~~~~~~~~~~~
Compute mass center using the fields calculator.

.. GENERATED FROM PYTHON SOURCE LINES 89-104

.. code-block:: Python


    m3d.post.ofieldsreporter.EnterScalarFunc("X")
    m3d.post.ofieldsreporter.EnterVol(magnet.name)
    m3d.post.ofieldsreporter.CalcOp("Mean")
    m3d.post.ofieldsreporter.AddNamedExpression("CM_X", "Fields")
    m3d.post.ofieldsreporter.EnterScalarFunc("Y")
    m3d.post.ofieldsreporter.EnterVol(magnet.name)
    m3d.post.ofieldsreporter.CalcOp("Mean")
    m3d.post.ofieldsreporter.AddNamedExpression("CM_Y", "Fields")
    m3d.post.ofieldsreporter.EnterScalarFunc("Z")
    m3d.post.ofieldsreporter.EnterVol(magnet.name)
    m3d.post.ofieldsreporter.CalcOp("Mean")
    m3d.post.ofieldsreporter.AddNamedExpression("CM_Z", "Fields")
    m3d.post.ofieldsreporter.CalcStack("clear")








.. GENERATED FROM PYTHON SOURCE LINES 105-108

Get mass center
~~~~~~~~~~~~~~~
Get mass center using the fields calculator.

.. GENERATED FROM PYTHON SOURCE LINES 108-113

.. code-block:: Python


    xval = m3d.post.get_scalar_field_value("CM_X")
    yval = m3d.post.get_scalar_field_value("CM_Y")
    zval = m3d.post.get_scalar_field_value("CM_Z")








.. GENERATED FROM PYTHON SOURCE LINES 114-117

Create variables
~~~~~~~~~~~~~~~~
Create variables with mass center values.

.. GENERATED FROM PYTHON SOURCE LINES 117-122

.. code-block:: Python


    m3d[magnet.name + "x"] = str(xval * 1e3) + "mm"
    m3d[magnet.name + "y"] = str(yval * 1e3) + "mm"
    m3d[magnet.name + "z"] = str(zval * 1e3) + "mm"








.. GENERATED FROM PYTHON SOURCE LINES 123-126

Create coordinate system
~~~~~~~~~~~~~~~~~~~~~~~~
Create a parametric coordinate system.

.. GENERATED FROM PYTHON SOURCE LINES 126-131

.. code-block:: Python


    cs1 = m3d.modeler.create_coordinate_system(
        [magnet.name + "x", magnet.name + "y", magnet.name + "z"], reference_cs="Global", name=magnet.name + "CS"
    )








.. GENERATED FROM PYTHON SOURCE LINES 132-135

Save and close
~~~~~~~~~~~~~~
Save the project and close AEDT.

.. GENERATED FROM PYTHON SOURCE LINES 135-139

.. code-block:: Python


    m3d.save_project()
    m3d.release_desktop(close_projects=True, close_desktop=True)
    temp_dir.cleanup()








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

   **Total running time of the script:** (1 minutes 16.125 seconds)


.. _sphx_glr_download_examples_03-Maxwell_Maxwell_Magnet.py:

.. only:: html

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

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

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

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

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


.. only:: html

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

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