.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\03-Maxwell\Maxwell3D_Team3_bath_plate.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_03-Maxwell_Maxwell3D_Team3_bath_plate.py: Maxwell 3D: bath plate analysis ------------------------------- This example uses PyAEDT to set up the TEAM 3 bath plate problem and solve it using the Maxwell 3D Eddy Current solver. .. GENERATED FROM PYTHON SOURCE LINES 8-11 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports. .. GENERATED FROM PYTHON SOURCE LINES 11-15 .. code-block:: default import os import pyaedt .. GENERATED FROM PYTHON SOURCE LINES 16-20 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. You can set ``non_graphical`` either to ``True`` or ``False``. .. GENERATED FROM PYTHON SOURCE LINES 20-23 .. code-block:: default non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 24-29 Launch AEDT and Maxwell 3D ~~~~~~~~~~~~~~~~~~~~~~~~~~ Launch AEDT and Maxwell 3D after first setting up the project and design names, the solver, and the version. The following code also creates an instance of the ``Maxwell3d`` class named ``M3D``. .. GENERATED FROM PYTHON SOURCE LINES 29-46 .. code-block:: default project_name = "COMPUMAG" design_name = "TEAM 3 Bath Plate" Solver = "EddyCurrent" desktop_version = "2023.2" m3d = pyaedt.Maxwell3d( projectname=pyaedt.generate_unique_project_name(), designname=design_name, solution_type=Solver, specified_version=desktop_version, non_graphical=non_graphical, new_desktop_session=True, ) uom = m3d.modeler.model_units = "mm" modeler = m3d.modeler .. rst-class:: sphx-glr-script-out .. code-block:: none Initializing new desktop! .. GENERATED FROM PYTHON SOURCE LINES 47-51 Add variable ~~~~~~~~~~~~ Add a design variable named ``Coil_Position`` that you use later to adjust the position of the coil. .. GENERATED FROM PYTHON SOURCE LINES 51-55 .. code-block:: default Coil_Position = -20 m3d["Coil_Position"] = str(Coil_Position) + uom # Creates a design variable in Maxwell .. GENERATED FROM PYTHON SOURCE LINES 56-59 Add material ~~~~~~~~~~~~ Add a material named ``team3_aluminium`` for the ladder plate. .. GENERATED FROM PYTHON SOURCE LINES 59-63 .. code-block:: default mat = m3d.materials.add_material("team3_aluminium") mat.conductivity = 32780000 .. GENERATED FROM PYTHON SOURCE LINES 64-67 Draw background region ~~~~~~~~~~~~~~~~~~~~~~ Draw a background region that uses the default properties for an air region. .. GENERATED FROM PYTHON SOURCE LINES 67-70 .. code-block:: default m3d.modeler.create_air_region(x_pos=100, y_pos=100, z_pos=100, x_neg=100, y_neg=100, z_neg=100) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 71-74 Draw ladder plate and assign material ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Draw a ladder plate and assign it the newly created material ``team3_aluminium``. .. GENERATED FROM PYTHON SOURCE LINES 74-81 .. code-block:: default m3d.modeler.create_box(position=[-30, -55, 0], dimensions_list=[60, 110, -6.35], name="LadderPlate", matname="team3_aluminium") m3d.modeler.create_box(position=[-20, -35, 0], dimensions_list=[40, 30, -6.35], name="CutoutTool1") m3d.modeler.create_box(position=[-20, 5, 0], dimensions_list=[40, 30, -6.35], name="CutoutTool2") m3d.modeler.subtract("LadderPlate", ["CutoutTool1", "CutoutTool2"], keep_originals=False) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 82-85 Add mesh refinement to ladder plate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Add a mesh refinement to the ladder plate. .. GENERATED FROM PYTHON SOURCE LINES 85-88 .. code-block:: default m3d.mesh.assign_length_mesh("LadderPlate", maxlength=3, maxel=None, meshop_name="Ladder_Mesh") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 89-93 Draw search coil and assign excitation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Draw a search coil and assign it a ``stranded`` current excitation. The stranded type forces the current density to be constant in the coil. .. GENERATED FROM PYTHON SOURCE LINES 93-106 .. code-block:: default m3d.modeler.create_cylinder( cs_axis="Z", position=[0, "Coil_Position", 15], radius=40, height=20, name="SearchCoil", matname="copper" ) m3d.modeler.create_cylinder( cs_axis="Z", position=[0, "Coil_Position", 15], radius=20, height=20, name="Bore", matname="copper" ) m3d.modeler.subtract("SearchCoil", "Bore", keep_originals=False) m3d.modeler.section("SearchCoil", "YZ") m3d.modeler.separate_bodies("SearchCoil_Section1") m3d.modeler.delete("SearchCoil_Section1_Separate1") m3d.assign_current(object_list=["SearchCoil_Section1"], amplitude=1260, solid=False, name="SearchCoil_Excitation") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 107-112 Draw a line for plotting Bz ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Draw a line for plotting Bz later. Bz is the Z component of the flux density. The following code also adds a small diameter cylinder to refine the mesh locally around the line. .. GENERATED FROM PYTHON SOURCE LINES 112-118 .. code-block:: default Line_Points = [["0mm", "-55mm", "0.5mm"], ["0mm", "55mm", "0.5mm"]] P1 = modeler.create_polyline(position_list=Line_Points, name="Line_AB") P2 = modeler.create_polyline(position_list=Line_Points, name="Line_AB_MeshRefinement") P2.set_crosssection_properties(type="Circle", width="0.5mm") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 119-122 Plot model ~~~~~~~~~~ Plot the model. .. GENERATED FROM PYTHON SOURCE LINES 122-125 .. code-block:: default m3d.plot(show=False, export_path=os.path.join(m3d.working_directory, "Image.jpg"), plot_air_objects=False) .. image-sg:: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_001.png :alt: Maxwell3D Team3 bath plate :srcset: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 126-129 Add Maxwell 3D setup ~~~~~~~~~~~~~~~~~~~~ Add a Maxwell 3D setup with frequency points at 50 Hz and 200 Hz. .. GENERATED FROM PYTHON SOURCE LINES 129-135 .. code-block:: default Setup = m3d.create_setup(setupname="Setup1") Setup.props["Frequency"] = "200Hz" Setup.props["HasSweepSetup"] = True Setup.add_eddy_current_sweep(range_type="LinearStep", start=50, end=200, count=150, clear=True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 136-140 Adjust eddy effects ~~~~~~~~~~~~~~~~~~~ Adjust eddy effects for the ladder plate and the search coil. The setting for eddy effect is ignored for the stranded conductor type used in the search coil. .. GENERATED FROM PYTHON SOURCE LINES 140-144 .. code-block:: default m3d.eddy_effects_on(["LadderPlate"], activate_eddy_effects=True, activate_displacement_current=True) m3d.eddy_effects_on(["SearchCoil"], activate_eddy_effects=False, activate_displacement_current=True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 145-148 Add linear parametric sweep ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Add a linear parametric sweep for the two coil positions. .. GENERATED FROM PYTHON SOURCE LINES 148-161 .. code-block:: default sweepname = "CoilSweep" param = m3d.parametrics.add("Coil_Position", -20, 0, 20, "LinearStep", parametricname=sweepname) param["SaveFields"] = True param["CopyMesh"] = False param["SolveWithCopiedMeshOnly"] = True # Solve parametric sweep # ~~~~~~~~~~~~~~~~~~~~~~ # Solve the parametric sweep directly so that results of all variations are available. m3d.analyze_setup(sweepname) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 162-165 Create expression for Bz ~~~~~~~~~~~~~~~~~~~~~~~~ Create an expression for Bz using the fields calculator. .. GENERATED FROM PYTHON SOURCE LINES 165-174 .. code-block:: default Fields = m3d.odesign.GetModule("FieldsReporter") Fields.EnterQty("B") Fields.CalcOp("ScalarZ") Fields.EnterScalar(1000) Fields.CalcOp("*") Fields.CalcOp("Smooth") Fields.AddNamedExpression("Bz", "Fields") .. GENERATED FROM PYTHON SOURCE LINES 175-178 Plot mag(Bz) as a function of frequency ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plot mag(Bz) as a function of frequency for both coil positions. .. GENERATED FROM PYTHON SOURCE LINES 178-199 .. code-block:: default variations = {"Distance": ["All"], "Freq": ["All"], "Phase": ["0deg"], "Coil_Position": ["-20mm"]} m3d.post.create_report( expressions="mag(Bz)", report_category="Fields", context="Line_AB", variations=variations, primary_sweep_variable="Distance", plotname="mag(Bz) Along 'Line_AB' Offset Coil", ) variations = {"Distance": ["All"], "Freq": ["All"], "Phase": ["0deg"], "Coil_Position": ["0mm"]} m3d.post.create_report( expressions="mag(Bz)", report_category="Fields", context="Line_AB", variations=variations, primary_sweep_variable="Distance", plotname="mag(Bz) Along 'Line_AB' Coil", ) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 200-203 Generate plot outside of AEDT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Generate the same plot outside AEDT. .. GENERATED FROM PYTHON SOURCE LINES 203-214 .. code-block:: default variations = {"Distance": ["All"], "Freq": ["All"], "Phase": ["0deg"], "Coil_Position": ["All"]} solutions = m3d.post.get_solution_data( expressions="mag(Bz)", report_category="Fields", context="Line_AB", variations=variations, primary_sweep_variable="Distance", ) .. GENERATED FROM PYTHON SOURCE LINES 215-218 Set up sweep value and plot solution ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set up a sweep value and plot the solution. .. GENERATED FROM PYTHON SOURCE LINES 218-222 .. code-block:: default solutions.active_variation["Coil_Position"] = -0.02 solutions.plot() .. image-sg:: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_002.png :alt: Simulation Results Plot :srcset: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 223-226 Change sweep value and plot solution ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Change the sweep value and plot the solution again. .. GENERATED FROM PYTHON SOURCE LINES 226-230 .. code-block:: default solutions.active_variation["Coil_Position"] = 0 solutions.plot() .. image-sg:: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_003.png :alt: Simulation Results Plot :srcset: /examples/03-Maxwell/images/sphx_glr_Maxwell3D_Team3_bath_plate_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 231-234 Plot induced current density on surface of ladder plate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plot the induced current density, ``"Mag_J"``, on the surface of the ladder plate. .. GENERATED FROM PYTHON SOURCE LINES 234-239 .. code-block:: default surflist = modeler.get_object_faces("LadderPlate") intrinsic_dict = {"Freq": "50Hz", "Phase": "0deg"} m3d.post.create_fieldplot_surface(surflist, "Mag_J", intrinsincDict=intrinsic_dict, plot_name="Mag_J") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 240-243 Release AEDT ~~~~~~~~~~~~ Release AEDT from the script engine, leaving both AEDT and the project open. .. GENERATED FROM PYTHON SOURCE LINES 243-245 .. code-block:: default m3d.release_desktop(True, True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (12 minutes 18.799 seconds) .. _sphx_glr_download_examples_03-Maxwell_Maxwell3D_Team3_bath_plate.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: Maxwell3D_Team3_bath_plate.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Maxwell3D_Team3_bath_plate.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_